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,
getCoreRowModel,
getFilteredRowModel,
getPaginationRowModel,
getSortedRowModel,
SortingState,
useReactTable
} from '@tanstack/react-table';
@ -40,13 +43,19 @@ export function DataTable<TData, TValue>({
createGroup
}: DataTableProps<TData, TValue> & { createGroup?: () => void }) {
const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);
const [sorting, setSorting] = useState<SortingState>([]);
const table = useReactTable({
data,
columns,
getCoreRowModel: getCoreRowModel(),
onColumnFiltersChange: setColumnFilters,
getPaginationRowModel: getPaginationRowModel(),
onSortingChange: setSorting,
getSortedRowModel: getSortedRowModel(),
getFilteredRowModel: getFilteredRowModel(),
state: {
sorting,
columnFilters
}
});
@ -105,6 +114,24 @@ export function DataTable<TData, TValue>({
</TableBody>
</Table>
</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>
);
}