From e2f45cae4939c7241fcdfa972217d0e2a3f7d063 Mon Sep 17 00:00:00 2001 From: Giancarlo Buomprisco Date: Thu, 6 Feb 2025 10:09:08 +0700 Subject: [PATCH] Enhance DataTable component pagination and sorting UI (#152) - Adjust pagination layout and styling for better readability - Add support for optional sorting change event handler - Improve sorting state management with flexible updater function - Update text color and spacing in pagination component --- packages/ui/src/makerkit/data-table.tsx | 26 +++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/ui/src/makerkit/data-table.tsx b/packages/ui/src/makerkit/data-table.tsx index 31b9571c9..320db0c95 100644 --- a/packages/ui/src/makerkit/data-table.tsx +++ b/packages/ui/src/makerkit/data-table.tsx @@ -46,6 +46,7 @@ interface ReactTableProps { pageSize?: number; pageCount?: number; onPaginationChange?: (pagination: PaginationState) => void; + onSortingChange?: (sorting: SortingState) => void; manualPagination?: boolean; manualSorting?: boolean; sorting?: SortingState; @@ -60,6 +61,7 @@ export function DataTable({ pageSize, pageCount, onPaginationChange, + onSortingChange, tableProps, manualPagination = true, manualSorting = false, @@ -84,7 +86,6 @@ export function DataTable({ getSortedRowModel: getSortedRowModel(), manualPagination, manualSorting, - onSortingChange: setSorting, onColumnFiltersChange: setColumnFilters, onColumnVisibilityChange: setColumnVisibility, onRowSelectionChange: setRowSelection, @@ -96,6 +97,23 @@ export function DataTable({ columnVisibility, rowSelection, }, + onSortingChange: (updater) => { + if (typeof updater === 'function') { + const nextState = updater(sorting); + + setSorting(nextState); + + if (onSortingChange) { + onSortingChange(nextState); + } + } else { + setSorting(updater); + + if (onSortingChange) { + onSortingChange(updater); + } + } + }, onPaginationChange: (updater) => { const navigate = (page: number) => setTimeout(() => navigateToPage(page)); @@ -190,8 +208,8 @@ function Pagination({ table: ReactTable; }>) { return ( -
- +
+ ({ /> -
+