From fd9113109c1cb5be222b98953b55ca8dc433f016 Mon Sep 17 00:00:00 2001 From: Hafid Nur Date: Fri, 28 Mar 2025 17:29:06 +0700 Subject: [PATCH] feat: Working TanStack pagination - Menerapkan TanStack Table dan Pagination --- apps/backoffice/src/app/accounts/page.tsx | 189 +++++++--------------- 1 file changed, 55 insertions(+), 134 deletions(-) diff --git a/apps/backoffice/src/app/accounts/page.tsx b/apps/backoffice/src/app/accounts/page.tsx index aedbce5..db00456 100644 --- a/apps/backoffice/src/app/accounts/page.tsx +++ b/apps/backoffice/src/app/accounts/page.tsx @@ -80,46 +80,7 @@ const columns: ColumnDef[] = [ }, ]; -// const columnHelper = createColumnHelper(); -// const columns = [ -// columnHelper.accessor('id', { -// cell: (info) => info.column.id, -// }), -// columnHelper.accessor('name', { -// header: 'Nama Lengkap', -// cell: (info) => info.getValue(), -// }), -// columnHelper.accessor('name', { -// header: 'Nama Lengkap', -// cell: (info) => info.getValue(), -// }), -// columnHelper.accessor('name', { -// header: 'Nama Lengkap', -// cell: (info) => info.getValue(), -// }), -// ]; - export const Components: FC = (): ReactElement => { - const [searchQuery, setSearchQuery] = useState(''); - - // Filter data based on search query - const filteredData = mockData.filter( - (item) => - item.name.toLowerCase().includes(searchQuery.toLowerCase()) || - item.email.toLowerCase().includes(searchQuery.toLowerCase()) - ); - - // const handleEdit = (id: number) => { - // console.log(`Edit item with id: ${id}`); - // // Implement edit functionality - // }; - - const handleSearch = (e: React.ChangeEvent) => { - setSearchQuery(e.target.value); - // setCurrentPage(1); // Reset to first page when searching - }; - - // const [data, _setData] = React.useState(() => [...mockData]); const [pagination, setPagination] = React.useState({ pageIndex: 0, pageSize: 9, @@ -150,8 +111,6 @@ export const Components: FC = (): ReactElement => {
@@ -257,44 +216,69 @@ export const Components: FC = (): ReactElement => { - - {/* {table.getPageCount().map((page, index) => ( - - ))} */} - {/*
- {getPageNumbers().map((page, index) => - typeof page === 'number' ? ( +
+ {table.getPageCount() <= 8 ? ( + Array.from({ length: table.getPageCount() }, (_, index) => ( + )) + ) : ( + // Render ellipsis jika total halaman lebih dari 8 + <> + - ) : ( - - {page} - - ) + {table.getState().pagination.pageIndex > 3 && ...} + {Array.from( + { length: 5 }, + (_, index) => + table.getState().pagination.pageIndex - 2 + index + ) + .filter((page) => page > 0 && page < table.getPageCount() - 1) + .map((page) => ( + + ))} + {table.getState().pagination.pageIndex < + table.getPageCount() - 4 && ...} + + )} -
*/} +
-
- {/* - - - */} - -
Page
- - {table.getState().pagination.pageIndex + 1} of{' '} - {table.getPageCount().toLocaleString()} - -
- - | Go to page: - { - const page = e.target.value ? Number(e.target.value) - 1 : 0; - table.setPageIndex(page); - }} - className="border p-1 rounded w-16" - /> - - -
);