import { type FunctionComponent, useCallback } from 'react'; import { useDispatch } from 'react-redux'; import { Header as TableHeader, HeaderButton } from '@/components/Table'; import { useColumns } from '@/hooks/useColumns'; import GeoAlt from '@/icons/GeoAlt.svg'; import OneTwoThree from '@/icons/OneTwoThree.svg'; import Square from '@/icons/Square.svg'; import SquareA from '@/icons/SquareA.svg'; import SquareB from '@/icons/SquareB.svg'; import Squares from '@/icons/Squares.svg'; import Words from '@/icons/Words.svg'; import { resultsSlice, selectResultsSort, useTypedSelector } from '@/state'; import { ResultColumnId } from '@/types'; import styles from './Results.module.scss'; export const Header: FunctionComponent = () => { const dispatch = useDispatch(); const columns = useColumns(); const sort = useTypedSelector(selectResultsSort); const handleSort = useCallback( (columnId: ResultColumnId) => { dispatch(resultsSlice.actions.sort(columnId)); }, [dispatch], ); return ( {columns[ResultColumnId.Coordinates] && ( )} {columns[ResultColumnId.Word] && ( )} {columns[ResultColumnId.TilesCount] && ( )} {columns[ResultColumnId.VowelsCount] && ( )} {columns[ResultColumnId.ConsonantsCount] && ( )} {columns[ResultColumnId.BlanksCount] && ( )} {columns[ResultColumnId.WordsCount] && ( )} {columns[ResultColumnId.Points] && ( )} ); };