import { Row, Table as TableInstance } from '@tanstack/react-table'; import { AutomationTestingProps } from '@/types'; import { Table } from './Table'; import { DefaultType } from './types'; interface Props<D extends DefaultType> extends AutomationTestingProps { tableInstance: TableInstance<D>; renderRow(row: Row<D>): React.ReactNode; onSortChange?(colId: string, desc: boolean): void; isLoading?: boolean; emptyContentLabel?: string; 'aria-label'?: string; } export function DatatableContent<D extends DefaultType>({ tableInstance, renderRow, onSortChange, isLoading, emptyContentLabel, 'data-cy': dataCy, 'aria-label': ariaLabel, }: Props<D>) { const headerGroups = tableInstance.getHeaderGroups(); const pageRowModel = tableInstance.getPaginationRowModel(); return ( <Table data-cy={dataCy} className="nowrap-cells" aria-label={ariaLabel}> <thead> {headerGroups.map((headerGroup) => ( <Table.HeaderRow<D> key={headerGroup.id} headers={headerGroup.headers} onSortChange={onSortChange} /> ))} </thead> <tbody> <Table.Content<D> rows={pageRowModel.rows} isLoading={isLoading} emptyContent={emptyContentLabel} renderRow={renderRow} /> </tbody> </Table> ); }