import classNames from 'classnames'; import React, { useCallback } from 'react'; import { useDispatch } from 'react-redux'; import { useSelect } from 'App/SelectContext'; import ArtistIndexTableOptions from 'Artist/Index/Table/ArtistIndexTableOptions'; import IconButton from 'Components/Link/IconButton'; import Column from 'Components/Table/Column'; import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper'; import VirtualTableHeader from 'Components/Table/VirtualTableHeader'; import VirtualTableHeaderCell from 'Components/Table/VirtualTableHeaderCell'; import VirtualTableSelectAllHeaderCell from 'Components/Table/VirtualTableSelectAllHeaderCell'; import { icons } from 'Helpers/Props'; import SortDirection from 'Helpers/Props/SortDirection'; import { setArtistSort, setArtistTableOption, } from 'Store/Actions/artistIndexActions'; import { CheckInputChanged } from 'typings/inputs'; import hasGrowableColumns from './hasGrowableColumns'; import styles from './ArtistIndexTableHeader.css'; interface ArtistIndexTableHeaderProps { showBanners: boolean; columns: Column[]; sortKey?: string; sortDirection?: SortDirection; isSelectMode: boolean; } function ArtistIndexTableHeader(props: ArtistIndexTableHeaderProps) { const { showBanners, columns, sortKey, sortDirection, isSelectMode } = props; const dispatch = useDispatch(); const [selectState, selectDispatch] = useSelect(); const onSortPress = useCallback( (value: string) => { dispatch(setArtistSort({ sortKey: value })); }, [dispatch] ); const onTableOptionChange = useCallback( (payload: unknown) => { dispatch(setArtistTableOption(payload)); }, [dispatch] ); const onSelectAllChange = useCallback( ({ value }: CheckInputChanged) => { selectDispatch({ type: value ? 'selectAll' : 'unselectAll', }); }, [selectDispatch] ); return ( {isSelectMode ? ( ) : null} {columns.map((column) => { const { name, label, isSortable, isVisible } = column; if (!isVisible) { return null; } if (name === 'actions') { return ( ); } return ( {typeof label === 'function' ? label() : label} ); })} ); } export default ArtistIndexTableHeader;