@bsol-oss/react-datatable5 1.0.34 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +25 -6
- package/dist/index.js +26 -15
- package/dist/index.mjs +27 -16
- package/dist/types/components/DataTable.d.ts +13 -4
- package/dist/types/components/DataTableServer.d.ts +13 -3
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
-
import { RowData, OnChangeFn, Updater, FilterFn, ColumnDef, RowSelectionState, Row } from '@tanstack/react-table';
|
|
3
|
+
import { RowData, OnChangeFn, Updater, FilterFn, ColumnDef, RowSelectionState, ColumnFiltersState, SortingState, Row } from '@tanstack/react-table';
|
|
4
4
|
import { RankingInfo } from '@tanstack/match-sorter-utils';
|
|
5
5
|
import { ReactNode } from 'react';
|
|
6
6
|
import { TextProps, TooltipProps } from '@chakra-ui/react';
|
|
@@ -37,16 +37,25 @@ declare module "@tanstack/react-table" {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
interface DataTableProps<TData> {
|
|
40
|
-
children
|
|
40
|
+
children?: JSX.Element | JSX.Element[];
|
|
41
41
|
data: TData[];
|
|
42
42
|
columns: ColumnDef<TData, any>[];
|
|
43
|
-
density?: DensityState;
|
|
44
43
|
enableRowSelection?: boolean;
|
|
45
44
|
enableMultiRowSelection?: boolean;
|
|
46
45
|
enableSubRowSelection?: boolean;
|
|
47
46
|
onRowSelect?: (rowSelection: RowSelectionState) => void;
|
|
47
|
+
columnOrder?: string[];
|
|
48
|
+
columnFilters?: ColumnFiltersState;
|
|
49
|
+
globalFilter?: string;
|
|
50
|
+
density?: DensityState;
|
|
51
|
+
pagination?: {
|
|
52
|
+
pageIndex: number;
|
|
53
|
+
pageSize: number;
|
|
54
|
+
};
|
|
55
|
+
sorting?: SortingState;
|
|
56
|
+
rowSelection?: RowSelectionState;
|
|
48
57
|
}
|
|
49
|
-
declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density,
|
|
58
|
+
declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, children, }: DataTableProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
50
59
|
|
|
51
60
|
interface DataTableServerProps<TData> {
|
|
52
61
|
children: JSX.Element | JSX.Element[];
|
|
@@ -55,8 +64,18 @@ interface DataTableServerProps<TData> {
|
|
|
55
64
|
enableRowSelection?: boolean;
|
|
56
65
|
enableMultiRowSelection?: boolean;
|
|
57
66
|
enableSubRowSelection?: boolean;
|
|
58
|
-
density?: DensityState;
|
|
59
67
|
onRowSelect?: (row: RowSelectionState) => void;
|
|
68
|
+
columnOrder?: string[];
|
|
69
|
+
columnFilters?: ColumnFiltersState;
|
|
70
|
+
globalFilter?: string;
|
|
71
|
+
density?: DensityState;
|
|
72
|
+
pagination?: {
|
|
73
|
+
pageIndex: number;
|
|
74
|
+
pageSize: number;
|
|
75
|
+
};
|
|
76
|
+
sorting?: SortingState;
|
|
77
|
+
rowSelection?: RowSelectionState;
|
|
78
|
+
loadingComponent?: JSX.Element;
|
|
60
79
|
}
|
|
61
80
|
interface Result<T> {
|
|
62
81
|
results: T[];
|
|
@@ -71,7 +90,7 @@ declare module "@tanstack/react-table" {
|
|
|
71
90
|
displayName: string;
|
|
72
91
|
}
|
|
73
92
|
}
|
|
74
|
-
declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density,
|
|
93
|
+
declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, loadingComponent, children, }: DataTableServerProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
75
94
|
|
|
76
95
|
declare const DensityToggleButton: () => react_jsx_runtime.JSX.Element;
|
|
77
96
|
|
package/dist/index.js
CHANGED
|
@@ -103,10 +103,14 @@ const fuzzyFilter = (row, columnId, value, addMeta) => {
|
|
|
103
103
|
// Return if the item should be filtered in/out
|
|
104
104
|
return itemRank.passed;
|
|
105
105
|
};
|
|
106
|
-
const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true,
|
|
107
|
-
|
|
108
|
-
|
|
106
|
+
const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
|
|
107
|
+
pageIndex: 0, //initial page index
|
|
108
|
+
pageSize: 10, //default page size
|
|
109
|
+
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
|
|
110
|
+
const [columnOrder, setColumnOrder] = react.useState(defaultColumnOrder);
|
|
111
|
+
const [globalFilter, setGlobalFilter] = react.useState(defaultGlobalFilter);
|
|
109
112
|
const [densityState, setDensity] = react.useState(density);
|
|
113
|
+
const [rowSelection, setRowSelection] = react.useState(defaultRowSelection);
|
|
110
114
|
const table = reactTable.useReactTable({
|
|
111
115
|
_features: [DensityFeature],
|
|
112
116
|
data: data,
|
|
@@ -124,6 +128,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
124
128
|
columnOrder,
|
|
125
129
|
globalFilter,
|
|
126
130
|
density: densityState,
|
|
131
|
+
rowSelection
|
|
127
132
|
},
|
|
128
133
|
onColumnOrderChange: (state) => {
|
|
129
134
|
setColumnOrder(state);
|
|
@@ -140,6 +145,12 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
140
145
|
globalFilterFn: "fuzzy",
|
|
141
146
|
// global filter end
|
|
142
147
|
onDensityChange: setDensity,
|
|
148
|
+
onRowSelectionChange: setRowSelection,
|
|
149
|
+
initialState: {
|
|
150
|
+
columnFilters: defaultColumnFilter,
|
|
151
|
+
sorting: defaultSorting,
|
|
152
|
+
pagination: defaultPagination,
|
|
153
|
+
},
|
|
143
154
|
});
|
|
144
155
|
react.useEffect(() => {
|
|
145
156
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
@@ -186,16 +197,16 @@ const useDataFromUrl = ({ url, params = {}, defaultData, }) => {
|
|
|
186
197
|
return { data, loading, hasError, refreshData };
|
|
187
198
|
};
|
|
188
199
|
|
|
189
|
-
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true,
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const [rowSelection, setRowSelection] = react.useState(
|
|
197
|
-
const [columnOrder, setColumnOrder] = react.useState(
|
|
198
|
-
const [globalFilter, setGlobalFilter] = react.useState(
|
|
200
|
+
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
|
|
201
|
+
pageIndex: 0, //initial page index
|
|
202
|
+
pageSize: 10, //default page size
|
|
203
|
+
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, loadingComponent = jsxRuntime.jsx(jsxRuntime.Fragment, { children: "Loading..." }), children, }) => {
|
|
204
|
+
const [sorting, setSorting] = react.useState(defaultSorting);
|
|
205
|
+
const [columnFilters, setColumnFilters] = react.useState(defaultColumnFilter); // can set initial column filter state here
|
|
206
|
+
const [pagination, setPagination] = react.useState(defaultPagination);
|
|
207
|
+
const [rowSelection, setRowSelection] = react.useState(defaultRowSelection);
|
|
208
|
+
const [columnOrder, setColumnOrder] = react.useState(defaultColumnOrder);
|
|
209
|
+
const [globalFilter, setGlobalFilter] = react.useState(defaultGlobalFilter);
|
|
199
210
|
const [densityState, setDensity] = react.useState(density);
|
|
200
211
|
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
201
212
|
url: url,
|
|
@@ -275,12 +286,12 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
275
286
|
react.useEffect(() => {
|
|
276
287
|
onRowSelect(table.getState().rowSelection);
|
|
277
288
|
}, [table.getState().rowSelection]);
|
|
278
|
-
return (jsxRuntime.
|
|
289
|
+
return (jsxRuntime.jsxs(TableContext.Provider, { value: {
|
|
279
290
|
table: { ...table },
|
|
280
291
|
refreshData: refreshData,
|
|
281
292
|
globalFilter,
|
|
282
293
|
setGlobalFilter,
|
|
283
|
-
}, children: children }));
|
|
294
|
+
}, children: [loading && loadingComponent, !loading && children] }));
|
|
284
295
|
};
|
|
285
296
|
|
|
286
297
|
const DensityToggleButton = () => {
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx,
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { makeStateUpdater, functionalUpdate, useReactTable, getCoreRowModel, getFilteredRowModel, getSortedRowModel, getPaginationRowModel, flexRender } from '@tanstack/react-table';
|
|
3
3
|
import { createContext, useState, useEffect, useContext } from 'react';
|
|
4
4
|
import { rankItem } from '@tanstack/match-sorter-utils';
|
|
@@ -101,10 +101,14 @@ const fuzzyFilter = (row, columnId, value, addMeta) => {
|
|
|
101
101
|
// Return if the item should be filtered in/out
|
|
102
102
|
return itemRank.passed;
|
|
103
103
|
};
|
|
104
|
-
const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true,
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
|
|
105
|
+
pageIndex: 0, //initial page index
|
|
106
|
+
pageSize: 10, //default page size
|
|
107
|
+
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
|
|
108
|
+
const [columnOrder, setColumnOrder] = useState(defaultColumnOrder);
|
|
109
|
+
const [globalFilter, setGlobalFilter] = useState(defaultGlobalFilter);
|
|
107
110
|
const [densityState, setDensity] = useState(density);
|
|
111
|
+
const [rowSelection, setRowSelection] = useState(defaultRowSelection);
|
|
108
112
|
const table = useReactTable({
|
|
109
113
|
_features: [DensityFeature],
|
|
110
114
|
data: data,
|
|
@@ -122,6 +126,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
122
126
|
columnOrder,
|
|
123
127
|
globalFilter,
|
|
124
128
|
density: densityState,
|
|
129
|
+
rowSelection
|
|
125
130
|
},
|
|
126
131
|
onColumnOrderChange: (state) => {
|
|
127
132
|
setColumnOrder(state);
|
|
@@ -138,6 +143,12 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
138
143
|
globalFilterFn: "fuzzy",
|
|
139
144
|
// global filter end
|
|
140
145
|
onDensityChange: setDensity,
|
|
146
|
+
onRowSelectionChange: setRowSelection,
|
|
147
|
+
initialState: {
|
|
148
|
+
columnFilters: defaultColumnFilter,
|
|
149
|
+
sorting: defaultSorting,
|
|
150
|
+
pagination: defaultPagination,
|
|
151
|
+
},
|
|
141
152
|
});
|
|
142
153
|
useEffect(() => {
|
|
143
154
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
@@ -184,16 +195,16 @@ const useDataFromUrl = ({ url, params = {}, defaultData, }) => {
|
|
|
184
195
|
return { data, loading, hasError, refreshData };
|
|
185
196
|
};
|
|
186
197
|
|
|
187
|
-
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const [rowSelection, setRowSelection] = useState(
|
|
195
|
-
const [columnOrder, setColumnOrder] = useState(
|
|
196
|
-
const [globalFilter, setGlobalFilter] = useState(
|
|
198
|
+
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
|
|
199
|
+
pageIndex: 0, //initial page index
|
|
200
|
+
pageSize: 10, //default page size
|
|
201
|
+
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, loadingComponent = jsx(Fragment, { children: "Loading..." }), children, }) => {
|
|
202
|
+
const [sorting, setSorting] = useState(defaultSorting);
|
|
203
|
+
const [columnFilters, setColumnFilters] = useState(defaultColumnFilter); // can set initial column filter state here
|
|
204
|
+
const [pagination, setPagination] = useState(defaultPagination);
|
|
205
|
+
const [rowSelection, setRowSelection] = useState(defaultRowSelection);
|
|
206
|
+
const [columnOrder, setColumnOrder] = useState(defaultColumnOrder);
|
|
207
|
+
const [globalFilter, setGlobalFilter] = useState(defaultGlobalFilter);
|
|
197
208
|
const [densityState, setDensity] = useState(density);
|
|
198
209
|
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
199
210
|
url: url,
|
|
@@ -273,12 +284,12 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
273
284
|
useEffect(() => {
|
|
274
285
|
onRowSelect(table.getState().rowSelection);
|
|
275
286
|
}, [table.getState().rowSelection]);
|
|
276
|
-
return (
|
|
287
|
+
return (jsxs(TableContext.Provider, { value: {
|
|
277
288
|
table: { ...table },
|
|
278
289
|
refreshData: refreshData,
|
|
279
290
|
globalFilter,
|
|
280
291
|
setGlobalFilter,
|
|
281
|
-
}, children: children }));
|
|
292
|
+
}, children: [loading && loadingComponent, !loading && children] }));
|
|
282
293
|
};
|
|
283
294
|
|
|
284
295
|
const DensityToggleButton = () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { ColumnDef, FilterFn, RowSelectionState } from "@tanstack/react-table";
|
|
2
|
+
import { ColumnDef, ColumnFiltersState, FilterFn, RowSelectionState, SortingState } from "@tanstack/react-table";
|
|
3
3
|
import { RankingInfo } from "@tanstack/match-sorter-utils";
|
|
4
4
|
import { DensityState } from "./DensityFeature";
|
|
5
5
|
declare module "@tanstack/react-table" {
|
|
@@ -11,13 +11,22 @@ declare module "@tanstack/react-table" {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export interface DataTableProps<TData> {
|
|
14
|
-
children
|
|
14
|
+
children?: JSX.Element | JSX.Element[];
|
|
15
15
|
data: TData[];
|
|
16
16
|
columns: ColumnDef<TData, any>[];
|
|
17
|
-
density?: DensityState;
|
|
18
17
|
enableRowSelection?: boolean;
|
|
19
18
|
enableMultiRowSelection?: boolean;
|
|
20
19
|
enableSubRowSelection?: boolean;
|
|
21
20
|
onRowSelect?: (rowSelection: RowSelectionState) => void;
|
|
21
|
+
columnOrder?: string[];
|
|
22
|
+
columnFilters?: ColumnFiltersState;
|
|
23
|
+
globalFilter?: string;
|
|
24
|
+
density?: DensityState;
|
|
25
|
+
pagination?: {
|
|
26
|
+
pageIndex: number;
|
|
27
|
+
pageSize: number;
|
|
28
|
+
};
|
|
29
|
+
sorting?: SortingState;
|
|
30
|
+
rowSelection?: RowSelectionState;
|
|
22
31
|
}
|
|
23
|
-
export declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density,
|
|
32
|
+
export declare const DataTable: <TData>({ columns, data, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, children, }: DataTableProps<TData>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { ColumnDef, RowData, RowSelectionState } from "@tanstack/react-table";
|
|
2
|
+
import { ColumnDef, ColumnFiltersState, RowData, RowSelectionState, SortingState } from "@tanstack/react-table";
|
|
3
3
|
import { DensityState } from "./DensityFeature";
|
|
4
4
|
export interface DataTableServerProps<TData> {
|
|
5
5
|
children: JSX.Element | JSX.Element[];
|
|
@@ -8,8 +8,18 @@ export interface DataTableServerProps<TData> {
|
|
|
8
8
|
enableRowSelection?: boolean;
|
|
9
9
|
enableMultiRowSelection?: boolean;
|
|
10
10
|
enableSubRowSelection?: boolean;
|
|
11
|
-
density?: DensityState;
|
|
12
11
|
onRowSelect?: (row: RowSelectionState) => void;
|
|
12
|
+
columnOrder?: string[];
|
|
13
|
+
columnFilters?: ColumnFiltersState;
|
|
14
|
+
globalFilter?: string;
|
|
15
|
+
density?: DensityState;
|
|
16
|
+
pagination?: {
|
|
17
|
+
pageIndex: number;
|
|
18
|
+
pageSize: number;
|
|
19
|
+
};
|
|
20
|
+
sorting?: SortingState;
|
|
21
|
+
rowSelection?: RowSelectionState;
|
|
22
|
+
loadingComponent?: JSX.Element;
|
|
13
23
|
}
|
|
14
24
|
export interface Result<T> {
|
|
15
25
|
results: T[];
|
|
@@ -24,4 +34,4 @@ declare module "@tanstack/react-table" {
|
|
|
24
34
|
displayName: string;
|
|
25
35
|
}
|
|
26
36
|
}
|
|
27
|
-
export declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, density,
|
|
37
|
+
export declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, loadingComponent, children, }: DataTableServerProps<TData>) => import("react/jsx-runtime").JSX.Element;
|