import React from 'react'; import { classNames } from '../../utils'; import type { TableColumn, TableSortDirection } from './types'; import { SortIcon } from './SortIcon'; import { useTableHeaderCellContext } from './TableProvider'; import styles from './Table.module.css'; import commonStyles from '../../theme/common.module.css'; import tableStyles from '../../theme/table.module.css'; type Props = { column: TableColumn; }; export function TableHeaderCell({ column }: Props) { const { sortState, setSortState, nextSortDirection } = useTableHeaderCellContext(); const onColumnHeaderClick = (column: TableColumn) => { if (!column.id || !column.getSortValue) { return; } const columnSortDirection: TableSortDirection = column.id === sortState.columnId ? sortState.direction : 'none'; setSortState({ columnId: column.id, direction: nextSortDirection[columnSortDirection], }); }; return ( onColumnHeaderClick(column)} aria-sort={ column.id === sortState.columnId ? sortState.direction : 'none' } > {column.header} {column.getSortValue && (
)}
); }