import { useFilters, usePagination, useSortBy, useTable } from 'react-table'; import { useState } from 'react'; import { Task } from '@/react/nomad/types'; import { Table, TableContainer, TableHeaderRow, TableRow } from '@@/datatables'; import { InnerDatatable } from '@@/datatables/InnerDatatable'; import { useColumns } from './columns'; export interface TasksTableProps { data: Task[]; } export function TasksDatatable({ data }: TasksTableProps) { const columns = useColumns(); const [sortBy, setSortBy] = useState({ id: 'taskName', desc: false }); const { getTableProps, getTableBodyProps, headerGroups, page, prepareRow } = useTable( { columns, data, initialState: { sortBy: [sortBy], }, }, useFilters, useSortBy, usePagination ); const tableProps = getTableProps(); const tbodyProps = getTableBodyProps(); return ( {headerGroups.map((headerGroup) => { const { key, className, role, style } = headerGroup.getHeaderGroupProps(); return ( key={key} className={className} role={role} style={style} headers={headerGroup.headers} onSortChange={handleSortChange} /> ); })} {data.length > 0 ? ( page.map((row) => { prepareRow(row); const { key, className, role, style } = row.getRowProps(); return ( key={key} cells={row.cells} className={className} role={role} style={style} /> ); }) ) : ( )}
no tasks
); function handleSortChange(id: string, desc: boolean) { setSortBy({ id, desc }); } }