import { HeaderGroup, TableHeaderProps } from 'react-table'; import { useTableContext } from './TableContainer'; import { TableHeaderCell } from './TableHeaderCell'; interface Props<D extends Record<string, unknown> = Record<string, unknown>> { headers: HeaderGroup<D>[]; onSortChange?(colId: string, desc: boolean): void; } export function TableHeaderRow< D extends Record<string, unknown> = Record<string, unknown> >({ headers, onSortChange, className, role, style, }: Props<D> & TableHeaderProps) { useTableContext(); return ( <tr className={className} role={role} style={style}> {headers.map((column) => ( <TableHeaderCell headerProps={{ ...column.getHeaderProps({ className: column.className, style: { width: column.disableResizing ? column.width : '', }, }), }} key={column.id} canSort={column.canSort} onSortClick={(desc) => { column.toggleSortBy(desc); if (onSortChange) { onSortChange(column.id, desc); } }} isSorted={column.isSorted} isSortedDesc={column.isSortedDesc} render={() => column.render('Header')} canFilter={!column.disableFilters} renderFilter={() => column.render('Filter')} /> ))} </tr> ); }