gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/entity-table/hooks/use-entity-table.ts · v0.3.1
Source
1 6b38fe9 Mrdn 2y ago import {
2 7ee229e Mrdn 2y ago getCoreRowModel,
3 7ee229e Mrdn 2y ago getPaginationRowModel,
4 7ee229e Mrdn 2y ago getSortedRowModel,
5 aec4bc7 Mrdn 2y ago useReactTable,
6 aa96380 Mrdn 2y ago } from "@tanstack/react-table";
7 aec4bc7 Mrdn 2y ago import type {
8 aec4bc7 Mrdn 2y ago ColumnDef,
9 aec4bc7 Mrdn 2y ago OnChangeFn,
10 aec4bc7 Mrdn 2y ago PaginationState,
11 aec4bc7 Mrdn 2y ago } from "@tanstack/react-table";
12 aec4bc7 Mrdn 2y ago import type {
13 6b38fe9 Mrdn 2y ago UseRowSelectionReturn,
14 6b38fe9 Mrdn 2y ago UseSortingReturn,
15 cfe497c Mrdn 2y ago UseVisibilityReturn,
16 6b38fe9 Mrdn 2y ago } from ".";
17 d21d2e2 Mrdn 2y ago
18 d21d2e2 Mrdn 2y ago interface UseEntityTableProps<TData, TValue> {
19 aec4bc7 Mrdn 2y ago columns: ColumnDef<TData, TValue>[];
20 d21d2e2 Mrdn 2y ago data: {
21 aec4bc7 Mrdn 2y ago entity: TData[];
22 aec4bc7 Mrdn 2y ago pageCount: number;
23 aec4bc7 Mrdn 2y ago };
24 aec4bc7 Mrdn 2y ago sorting: UseSortingReturn;
25 aec4bc7 Mrdn 2y ago visibility: UseVisibilityReturn;
26 aec4bc7 Mrdn 2y ago rowSelection?: UseRowSelectionReturn;
27 aec4bc7 Mrdn 2y ago manualSorting?: boolean;
28 aec4bc7 Mrdn 2y ago pageIndex: number;
29 aec4bc7 Mrdn 2y ago pageSize: number;
30 aec4bc7 Mrdn 2y ago onPaginationChange: OnChangeFn<PaginationState>;
31 d21d2e2 Mrdn 2y ago }
32 d21d2e2 Mrdn 2y ago
33 aec4bc7 Mrdn 2y ago export const useEntityTable = <TData, TValue>({
34 d21d2e2 Mrdn 2y ago columns,
35 aec4bc7 Mrdn 2y ago data,
36 aec4bc7 Mrdn 2y ago sorting,
37 aec4bc7 Mrdn 2y ago manualSorting = false,
38 aec4bc7 Mrdn 2y ago visibility,
39 aec4bc7 Mrdn 2y ago rowSelection,
40 aec4bc7 Mrdn 2y ago pageIndex,
41 aec4bc7 Mrdn 2y ago pageSize,
42 d21d2e2 Mrdn 2y ago onPaginationChange,
43 aec4bc7 Mrdn 2y ago }: UseEntityTableProps<TData, TValue>) =>
44 aec4bc7 Mrdn 2y ago useReactTable({
45 aec4bc7 Mrdn 2y ago data: data.entity,
46 aec4bc7 Mrdn 2y ago columns,
47 aec4bc7 Mrdn 2y ago manualPagination: true,
48 aec4bc7 Mrdn 2y ago manualSorting,
49 aec4bc7 Mrdn 2y ago pageCount: data.pageCount + 1,
50 aec4bc7 Mrdn 2y ago autoResetPageIndex: false,
51 aec4bc7 Mrdn 2y ago onPaginationChange,
52 aec4bc7 Mrdn 2y ago onSortingChange: sorting.setSorting,
53 aec4bc7 Mrdn 2y ago getCoreRowModel: getCoreRowModel(),
54 aec4bc7 Mrdn 2y ago getPaginationRowModel: getPaginationRowModel(),
55 aec4bc7 Mrdn 2y ago getSortedRowModel: getSortedRowModel(),
56 aec4bc7 Mrdn 2y ago onColumnVisibilityChange: visibility.setColumnVisibility,
57 aec4bc7 Mrdn 2y ago onRowSelectionChange: rowSelection?.setSelectedRow,
58 aec4bc7 Mrdn 2y ago state: {
59 aec4bc7 Mrdn 2y ago sorting: sorting.sorting,
60 aec4bc7 Mrdn 2y ago columnVisibility: visibility.columnVisibility,
61 aec4bc7 Mrdn 2y ago pagination: { pageIndex: pageIndex - 1, pageSize: pageSize },
62 aec4bc7 Mrdn 2y ago rowSelection: rowSelection ? rowSelection.selectedRow : {},
63 aec4bc7 Mrdn 2y ago },
64 aec4bc7 Mrdn 2y ago });