@bsol-oss/react-datatable5 1.0.22 → 1.0.23
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 +5 -1
- package/dist/index.js +26 -5
- package/dist/index.mjs +26 -6
- package/dist/types/components/DataTableContext.d.ts +2 -0
- package/dist/types/components/GlobalFilter.d.ts +1 -0
- package/dist/types/components/useDataTable.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ declare const EditSortingButton: () => react_jsx_runtime.JSX.Element;
|
|
|
40
40
|
|
|
41
41
|
declare const EditViewButton: () => react_jsx_runtime.JSX.Element;
|
|
42
42
|
|
|
43
|
+
declare const GlobalFilter: () => react_jsx_runtime.JSX.Element;
|
|
44
|
+
|
|
43
45
|
interface PageSizeControlProps {
|
|
44
46
|
pageSizes?: number[];
|
|
45
47
|
}
|
|
@@ -108,6 +110,8 @@ declare const useDataFromUrl: <T>({ url, params, defaultData, }: useDataFromUrlP
|
|
|
108
110
|
declare const useDataTable: () => {
|
|
109
111
|
table: _tanstack_table_core.Table<any>;
|
|
110
112
|
refreshData: () => void;
|
|
113
|
+
globalFilter: string;
|
|
114
|
+
setGlobalFilter: (filter: string) => void;
|
|
111
115
|
};
|
|
112
116
|
|
|
113
|
-
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, type Result, Table, TableBody, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableFilter, TableFooter, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, TableSelector, TableSorter, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
|
117
|
+
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, type Result, Table, TableBody, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableFilter, TableFooter, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, TableSelector, TableSorter, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,8 @@ var table = require('@chakra-ui/table');
|
|
|
13
13
|
const TableContext = react.createContext({
|
|
14
14
|
table: {},
|
|
15
15
|
refreshData: () => { },
|
|
16
|
+
globalFilter: "",
|
|
17
|
+
setGlobalFilter: () => { },
|
|
16
18
|
});
|
|
17
19
|
|
|
18
20
|
const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, children, }) => {
|
|
@@ -89,6 +91,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
89
91
|
});
|
|
90
92
|
const [rowSelection, setRowSelection] = react.useState({});
|
|
91
93
|
const [columnOrder, setColumnOrder] = react.useState([]);
|
|
94
|
+
const [globalFilter, setGlobalFilter] = react.useState("");
|
|
92
95
|
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
93
96
|
url: url,
|
|
94
97
|
defaultData: {
|
|
@@ -110,6 +113,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
110
113
|
obj[filter.id] = filter.value;
|
|
111
114
|
return { ...accumulator, ...obj };
|
|
112
115
|
}, {})),
|
|
116
|
+
searching: globalFilter,
|
|
113
117
|
},
|
|
114
118
|
});
|
|
115
119
|
const table = reactTable.useReactTable({
|
|
@@ -129,6 +133,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
129
133
|
columnFilters,
|
|
130
134
|
rowSelection,
|
|
131
135
|
columnOrder,
|
|
136
|
+
globalFilter,
|
|
132
137
|
},
|
|
133
138
|
defaultColumn: {
|
|
134
139
|
size: 150, //starting column size
|
|
@@ -141,15 +146,23 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
141
146
|
onColumnOrderChange: (state) => {
|
|
142
147
|
setColumnOrder(state);
|
|
143
148
|
},
|
|
149
|
+
onGlobalFilterChange: (state) => {
|
|
150
|
+
setGlobalFilter(state);
|
|
151
|
+
},
|
|
144
152
|
rowCount: data.filterCount,
|
|
145
153
|
});
|
|
146
154
|
react.useEffect(() => {
|
|
147
155
|
refreshData();
|
|
148
|
-
}, [pagination, sorting, columnFilters]);
|
|
156
|
+
}, [pagination, sorting, columnFilters, globalFilter]);
|
|
149
157
|
react.useEffect(() => {
|
|
150
158
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
151
159
|
}, []);
|
|
152
|
-
return (jsxRuntime.jsx(TableContext.Provider, { value: {
|
|
160
|
+
return (jsxRuntime.jsx(TableContext.Provider, { value: {
|
|
161
|
+
table: { ...table },
|
|
162
|
+
refreshData: refreshData,
|
|
163
|
+
globalFilter,
|
|
164
|
+
setGlobalFilter,
|
|
165
|
+
}, children: children }));
|
|
153
166
|
};
|
|
154
167
|
|
|
155
168
|
const ResetFilteringButton = () => {
|
|
@@ -160,8 +173,8 @@ const ResetFilteringButton = () => {
|
|
|
160
173
|
};
|
|
161
174
|
|
|
162
175
|
const useDataTable = () => {
|
|
163
|
-
const { table, refreshData } = react.useContext(TableContext);
|
|
164
|
-
return { table, refreshData };
|
|
176
|
+
const { table, refreshData, globalFilter, setGlobalFilter } = react.useContext(TableContext);
|
|
177
|
+
return { table, refreshData, globalFilter, setGlobalFilter };
|
|
165
178
|
};
|
|
166
179
|
|
|
167
180
|
const TableFilter = () => {
|
|
@@ -261,9 +274,16 @@ const EditViewButton = () => {
|
|
|
261
274
|
}) }) })] })] }));
|
|
262
275
|
};
|
|
263
276
|
|
|
277
|
+
const GlobalFilter = () => {
|
|
278
|
+
const { globalFilter, setGlobalFilter } = useDataTable();
|
|
279
|
+
return (jsxRuntime.jsx(react$1.Input, { value: globalFilter, onChange: (e) => {
|
|
280
|
+
setGlobalFilter(e.target.value);
|
|
281
|
+
} }));
|
|
282
|
+
};
|
|
283
|
+
|
|
264
284
|
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
265
285
|
const { table } = react.useContext(TableContext);
|
|
266
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(react$1.Menu, { children: [jsxRuntime.jsx(react$1.MenuButton, { as: react$1.Button, variant: "ghost", rightIcon: jsxRuntime.jsx(icons.ChevronDownIcon, {}), children: table.getState().pagination.pageSize }), jsxRuntime.jsx(react$1.MenuList, { children: pageSizes.map((pageSize) => (jsxRuntime.jsx(react$1.MenuItem, { onClick: () => {
|
|
286
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(react$1.Menu, { children: [jsxRuntime.jsx(react$1.MenuButton, { as: react$1.Button, variant: "ghost", rightIcon: jsxRuntime.jsx(icons.ChevronDownIcon, {}), gap: "0.5rem", children: table.getState().pagination.pageSize }), jsxRuntime.jsx(react$1.MenuList, { children: pageSizes.map((pageSize) => (jsxRuntime.jsx(react$1.MenuItem, { onClick: () => {
|
|
267
287
|
table.setPageSize(Number(pageSize));
|
|
268
288
|
}, children: pageSize }))) })] }) }));
|
|
269
289
|
};
|
|
@@ -444,6 +464,7 @@ exports.EditFilterButton = EditFilterButton;
|
|
|
444
464
|
exports.EditOrderButton = EditOrderButton;
|
|
445
465
|
exports.EditSortingButton = EditSortingButton;
|
|
446
466
|
exports.EditViewButton = EditViewButton;
|
|
467
|
+
exports.GlobalFilter = GlobalFilter;
|
|
447
468
|
exports.PageSizeControl = PageSizeControl;
|
|
448
469
|
exports.ResetFilteringButton = ResetFilteringButton;
|
|
449
470
|
exports.ResetSelectionButton = ResetSelectionButton;
|
package/dist/index.mjs
CHANGED
|
@@ -11,6 +11,8 @@ import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
|
11
11
|
const TableContext = createContext({
|
|
12
12
|
table: {},
|
|
13
13
|
refreshData: () => { },
|
|
14
|
+
globalFilter: "",
|
|
15
|
+
setGlobalFilter: () => { },
|
|
14
16
|
});
|
|
15
17
|
|
|
16
18
|
const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, children, }) => {
|
|
@@ -87,6 +89,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
87
89
|
});
|
|
88
90
|
const [rowSelection, setRowSelection] = useState({});
|
|
89
91
|
const [columnOrder, setColumnOrder] = useState([]);
|
|
92
|
+
const [globalFilter, setGlobalFilter] = useState("");
|
|
90
93
|
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
91
94
|
url: url,
|
|
92
95
|
defaultData: {
|
|
@@ -108,6 +111,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
108
111
|
obj[filter.id] = filter.value;
|
|
109
112
|
return { ...accumulator, ...obj };
|
|
110
113
|
}, {})),
|
|
114
|
+
searching: globalFilter,
|
|
111
115
|
},
|
|
112
116
|
});
|
|
113
117
|
const table = useReactTable({
|
|
@@ -127,6 +131,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
127
131
|
columnFilters,
|
|
128
132
|
rowSelection,
|
|
129
133
|
columnOrder,
|
|
134
|
+
globalFilter,
|
|
130
135
|
},
|
|
131
136
|
defaultColumn: {
|
|
132
137
|
size: 150, //starting column size
|
|
@@ -139,15 +144,23 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
139
144
|
onColumnOrderChange: (state) => {
|
|
140
145
|
setColumnOrder(state);
|
|
141
146
|
},
|
|
147
|
+
onGlobalFilterChange: (state) => {
|
|
148
|
+
setGlobalFilter(state);
|
|
149
|
+
},
|
|
142
150
|
rowCount: data.filterCount,
|
|
143
151
|
});
|
|
144
152
|
useEffect(() => {
|
|
145
153
|
refreshData();
|
|
146
|
-
}, [pagination, sorting, columnFilters]);
|
|
154
|
+
}, [pagination, sorting, columnFilters, globalFilter]);
|
|
147
155
|
useEffect(() => {
|
|
148
156
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
149
157
|
}, []);
|
|
150
|
-
return (jsx(TableContext.Provider, { value: {
|
|
158
|
+
return (jsx(TableContext.Provider, { value: {
|
|
159
|
+
table: { ...table },
|
|
160
|
+
refreshData: refreshData,
|
|
161
|
+
globalFilter,
|
|
162
|
+
setGlobalFilter,
|
|
163
|
+
}, children: children }));
|
|
151
164
|
};
|
|
152
165
|
|
|
153
166
|
const ResetFilteringButton = () => {
|
|
@@ -158,8 +171,8 @@ const ResetFilteringButton = () => {
|
|
|
158
171
|
};
|
|
159
172
|
|
|
160
173
|
const useDataTable = () => {
|
|
161
|
-
const { table, refreshData } = useContext(TableContext);
|
|
162
|
-
return { table, refreshData };
|
|
174
|
+
const { table, refreshData, globalFilter, setGlobalFilter } = useContext(TableContext);
|
|
175
|
+
return { table, refreshData, globalFilter, setGlobalFilter };
|
|
163
176
|
};
|
|
164
177
|
|
|
165
178
|
const TableFilter = () => {
|
|
@@ -259,9 +272,16 @@ const EditViewButton = () => {
|
|
|
259
272
|
}) }) })] })] }));
|
|
260
273
|
};
|
|
261
274
|
|
|
275
|
+
const GlobalFilter = () => {
|
|
276
|
+
const { globalFilter, setGlobalFilter } = useDataTable();
|
|
277
|
+
return (jsx(Input, { value: globalFilter, onChange: (e) => {
|
|
278
|
+
setGlobalFilter(e.target.value);
|
|
279
|
+
} }));
|
|
280
|
+
};
|
|
281
|
+
|
|
262
282
|
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
263
283
|
const { table } = useContext(TableContext);
|
|
264
|
-
return (jsx(Fragment, { children: jsxs(Menu, { children: [jsx(MenuButton, { as: Button, variant: "ghost", rightIcon: jsx(ChevronDownIcon, {}), children: table.getState().pagination.pageSize }), jsx(MenuList, { children: pageSizes.map((pageSize) => (jsx(MenuItem, { onClick: () => {
|
|
284
|
+
return (jsx(Fragment, { children: jsxs(Menu, { children: [jsx(MenuButton, { as: Button, variant: "ghost", rightIcon: jsx(ChevronDownIcon, {}), gap: "0.5rem", children: table.getState().pagination.pageSize }), jsx(MenuList, { children: pageSizes.map((pageSize) => (jsx(MenuItem, { onClick: () => {
|
|
265
285
|
table.setPageSize(Number(pageSize));
|
|
266
286
|
}, children: pageSize }))) })] }) }));
|
|
267
287
|
};
|
|
@@ -436,4 +456,4 @@ const TextCell = ({ label, children }) => {
|
|
|
436
456
|
return (jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }));
|
|
437
457
|
};
|
|
438
458
|
|
|
439
|
-
export { DataTable, DataTableServer, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, PageSizeControl, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, Table, TableBody, TableCardContainer, TableCards, TableFilter, TableFooter, TableHeader, TableOrderer, TablePagination, TableSelector, TableSorter, TextCell, useDataFromUrl, useDataTable };
|
|
459
|
+
export { DataTable, DataTableServer, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, GlobalFilter, PageSizeControl, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, Table, TableBody, TableCardContainer, TableCards, TableFilter, TableFooter, TableHeader, TableOrderer, TablePagination, TableSelector, TableSorter, TextCell, useDataFromUrl, useDataTable };
|
|
@@ -3,5 +3,7 @@ import { Table } from "@tanstack/react-table";
|
|
|
3
3
|
export interface DataTableContext<T> {
|
|
4
4
|
table: Table<T>;
|
|
5
5
|
refreshData: () => void;
|
|
6
|
+
globalFilter: string;
|
|
7
|
+
setGlobalFilter: (filter: string) => void;
|
|
6
8
|
}
|
|
7
9
|
export declare const TableContext: import("react").Context<DataTableContext<any>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const GlobalFilter: () => import("react/jsx-runtime").JSX.Element;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./components/EditFilterButton";
|
|
|
4
4
|
export * from "./components/EditOrderButton";
|
|
5
5
|
export * from "./components/EditSortingButton";
|
|
6
6
|
export * from "./components/EditViewButton";
|
|
7
|
+
export * from "./components/GlobalFilter";
|
|
7
8
|
export * from "./components/PageSizeControl";
|
|
8
9
|
export * from "./components/ResetFilteringButton";
|
|
9
10
|
export * from "./components/ResetSelectionButton";
|