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