feat: add pagination and sorting

This commit is contained in:
Wikzyy
2025-02-21 17:50:32 +07:00
parent d1b95189dc
commit ca6217b4cc

View File

@ -6,6 +6,9 @@ import {
flexRender, flexRender,
getCoreRowModel, getCoreRowModel,
getFilteredRowModel, getFilteredRowModel,
getPaginationRowModel,
getSortedRowModel,
SortingState,
useReactTable useReactTable
} from '@tanstack/react-table'; } from '@tanstack/react-table';
@ -40,13 +43,19 @@ export function DataTable<TData, TValue>({
createGroup createGroup
}: DataTableProps<TData, TValue> & { createGroup?: () => void }) { }: DataTableProps<TData, TValue> & { createGroup?: () => void }) {
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]); const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
const [sorting, setSorting] = useState<SortingState>([]);
const table = useReactTable({ const table = useReactTable({
data, data,
columns, columns,
getCoreRowModel: getCoreRowModel(), getCoreRowModel: getCoreRowModel(),
onColumnFiltersChange: setColumnFilters, onColumnFiltersChange: setColumnFilters,
getPaginationRowModel: getPaginationRowModel(),
onSortingChange: setSorting,
getSortedRowModel: getSortedRowModel(),
getFilteredRowModel: getFilteredRowModel(), getFilteredRowModel: getFilteredRowModel(),
state: { state: {
sorting,
columnFilters columnFilters
} }
}); });
@ -105,6 +114,24 @@ export function DataTable<TData, TValue>({
</TableBody> </TableBody>
</Table> </Table>
</div> </div>
<div className="flex items-center justify-end space-x-2 py-4">
<Button
variant="outline"
size="sm"
onClick={() => table.previousPage()}
disabled={!table.getCanPreviousPage()}
>
Previous
</Button>
<Button
variant="outline"
size="sm"
onClick={() => table.nextPage()}
disabled={!table.getCanNextPage()}
>
Next
</Button>
</div>
</div> </div>
); );
} }