import React, { ReactNode, ReactElement, forwardRef } from 'react'; import Button from '../Button'; import { Breakpoint } from '../../utils/responsiveBreakpoints'; import { StyledTH, StyledInnerTH, StyledSortingArrows } from './StyledTable'; import TableFilter from './TableFilter'; interface SortingProps { sortable?: boolean; sorted?: boolean; sortedDesc?: boolean; toggleSortBy?: (descending?: boolean, multi?: boolean) => void; } interface TableTHProps { align?: 'left' | 'right'; children: ReactNode; 'data-test-id'?: string; displayAtBreakpoint?: Breakpoint; filterable: boolean; hasFilterInput: boolean; renderFilter: (props: { onClose: () => void }) => ReactNode; sortingProps: SortingProps; sticky: boolean; themeHorizontallySticky: boolean; themeLeft?: number; themeShowDivider: boolean; themeWidth?: string; } const TableTH = forwardRef( ( { sortingProps, sticky, displayAtBreakpoint, filterable, renderFilter, hasFilterInput, align = 'left', children, 'data-test-id': dataTestId, themeWidth, themeHorizontallySticky, themeLeft, themeShowDivider, ...otherTHProps }: TableTHProps, forwardedRef ): ReactElement => { return ( {children} {sortingProps.sortable === true && ( { e.stopPropagation(); sortingProps.toggleSortBy?.(false); }} /> { e.stopPropagation(); sortingProps.toggleSortBy?.(true); }} /> )} {filterable === true && ( )} ); } ); TableTH.displayName = 'TableTH'; export default TableTH;