({
'aria-labelledby': labelledby,
'aria-describedby': describedby,
cellPadding,
columns,
data,
initialSortColumn,
initialSortDirection,
}: DataTableProps<Data>)
| 53 | } |
| 54 | |
| 55 | function DataTable<Data extends UniqueRow>({ |
| 56 | 'aria-labelledby': labelledby, |
| 57 | 'aria-describedby': describedby, |
| 58 | cellPadding, |
| 59 | columns, |
| 60 | data, |
| 61 | initialSortColumn, |
| 62 | initialSortDirection, |
| 63 | }: DataTableProps<Data>) { |
| 64 | const {headers, rows, actions, gridTemplateColumns} = useTable({ |
| 65 | data, |
| 66 | columns, |
| 67 | initialSortColumn, |
| 68 | initialSortDirection, |
| 69 | }) |
| 70 | |
| 71 | return ( |
| 72 | <Table |
| 73 | aria-labelledby={labelledby} |
| 74 | aria-describedby={describedby} |
| 75 | cellPadding={cellPadding} |
| 76 | gridTemplateColumns={gridTemplateColumns} |
| 77 | > |
| 78 | <TableHead> |
| 79 | <TableRow> |
| 80 | {headers.map(header => { |
| 81 | if (header.isSortable()) { |
| 82 | return ( |
| 83 | <TableSortHeader |
| 84 | key={header.id} |
| 85 | align={header.column.align} |
| 86 | direction={header.getSortDirection()} |
| 87 | onToggleSort={() => { |
| 88 | actions.sortBy(header) |
| 89 | }} |
| 90 | > |
| 91 | {typeof header.column.header === 'string' ? header.column.header : header.column.header()} |
| 92 | </TableSortHeader> |
| 93 | ) |
| 94 | } |
| 95 | return ( |
| 96 | <TableHeader key={header.id} align={header.column.align}> |
| 97 | {typeof header.column.header === 'string' ? header.column.header : header.column.header()} |
| 98 | </TableHeader> |
| 99 | ) |
| 100 | })} |
| 101 | </TableRow> |
| 102 | </TableHead> |
| 103 | <TableBody> |
| 104 | {rows.map(row => { |
| 105 | return ( |
| 106 | <TableRow key={row.id}> |
| 107 | {row.getCells().map(cell => { |
| 108 | return ( |
| 109 | <TableCell key={cell.id} scope={cell.rowHeader ? 'row' : undefined} align={cell.column.align}> |
| 110 | {cell.column.renderCell |
| 111 | ? cell.column.renderCell(row.getValue()) |
| 112 | : (cell.getValue() as React.ReactNode)} |
nothing calls this directly
no test coverage detected