@bsol-oss/react-datatable5 1.0.21 → 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 +51 -18
- package/dist/index.mjs +52 -20
- 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,9 +13,12 @@ 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, }) => {
|
|
21
|
+
const [columnOrder, setColumnOrder] = react.useState([]);
|
|
19
22
|
const table = reactTable.useReactTable({
|
|
20
23
|
data: data,
|
|
21
24
|
columns: columns,
|
|
@@ -28,11 +31,20 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
28
31
|
minSize: 10, //enforced during column resizing
|
|
29
32
|
maxSize: 10000, //enforced during column resizing
|
|
30
33
|
},
|
|
34
|
+
state: {
|
|
35
|
+
columnOrder,
|
|
36
|
+
},
|
|
37
|
+
onColumnOrderChange: (state) => {
|
|
38
|
+
setColumnOrder(state);
|
|
39
|
+
},
|
|
31
40
|
enableRowSelection: enableRowSelection,
|
|
32
41
|
enableMultiRowSelection: enableMultiRowSelection,
|
|
33
42
|
enableSubRowSelection: enableSubRowSelection,
|
|
34
43
|
columnResizeMode: "onChange",
|
|
35
44
|
});
|
|
45
|
+
react.useEffect(() => {
|
|
46
|
+
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
47
|
+
}, []);
|
|
36
48
|
return (jsxRuntime.jsx(TableContext.Provider, { value: {
|
|
37
49
|
table: { ...table },
|
|
38
50
|
refreshData: () => {
|
|
@@ -79,6 +91,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
79
91
|
});
|
|
80
92
|
const [rowSelection, setRowSelection] = react.useState({});
|
|
81
93
|
const [columnOrder, setColumnOrder] = react.useState([]);
|
|
94
|
+
const [globalFilter, setGlobalFilter] = react.useState("");
|
|
82
95
|
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
83
96
|
url: url,
|
|
84
97
|
defaultData: {
|
|
@@ -100,6 +113,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
100
113
|
obj[filter.id] = filter.value;
|
|
101
114
|
return { ...accumulator, ...obj };
|
|
102
115
|
}, {})),
|
|
116
|
+
searching: globalFilter,
|
|
103
117
|
},
|
|
104
118
|
});
|
|
105
119
|
const table = reactTable.useReactTable({
|
|
@@ -119,6 +133,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
119
133
|
columnFilters,
|
|
120
134
|
rowSelection,
|
|
121
135
|
columnOrder,
|
|
136
|
+
globalFilter,
|
|
122
137
|
},
|
|
123
138
|
defaultColumn: {
|
|
124
139
|
size: 150, //starting column size
|
|
@@ -131,15 +146,23 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
131
146
|
onColumnOrderChange: (state) => {
|
|
132
147
|
setColumnOrder(state);
|
|
133
148
|
},
|
|
149
|
+
onGlobalFilterChange: (state) => {
|
|
150
|
+
setGlobalFilter(state);
|
|
151
|
+
},
|
|
134
152
|
rowCount: data.filterCount,
|
|
135
153
|
});
|
|
136
154
|
react.useEffect(() => {
|
|
137
155
|
refreshData();
|
|
138
|
-
}, [pagination, sorting, columnFilters]);
|
|
156
|
+
}, [pagination, sorting, columnFilters, globalFilter]);
|
|
139
157
|
react.useEffect(() => {
|
|
140
158
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
141
159
|
}, []);
|
|
142
|
-
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 }));
|
|
143
166
|
};
|
|
144
167
|
|
|
145
168
|
const ResetFilteringButton = () => {
|
|
@@ -150,8 +173,8 @@ const ResetFilteringButton = () => {
|
|
|
150
173
|
};
|
|
151
174
|
|
|
152
175
|
const useDataTable = () => {
|
|
153
|
-
const { table, refreshData } = react.useContext(TableContext);
|
|
154
|
-
return { table, refreshData };
|
|
176
|
+
const { table, refreshData, globalFilter, setGlobalFilter } = react.useContext(TableContext);
|
|
177
|
+
return { table, refreshData, globalFilter, setGlobalFilter };
|
|
155
178
|
};
|
|
156
179
|
|
|
157
180
|
const TableFilter = () => {
|
|
@@ -166,7 +189,7 @@ const TableFilter = () => {
|
|
|
166
189
|
};
|
|
167
190
|
|
|
168
191
|
const EditFilterButton = () => {
|
|
169
|
-
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Filter", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", icon: jsxRuntime.jsx(md.MdFilterAlt, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "1rem", children: [jsxRuntime.jsx(TableFilter, {}), jsxRuntime.jsx(ResetFilteringButton, {})] }) })] })] }));
|
|
192
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Filter", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", variant: "ghost", icon: jsxRuntime.jsx(md.MdFilterAlt, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "1rem", children: [jsxRuntime.jsx(TableFilter, {}), jsxRuntime.jsx(ResetFilteringButton, {})] }) })] })] }));
|
|
170
193
|
};
|
|
171
194
|
|
|
172
195
|
const ColumnOrderChanger = ({ columns }) => {
|
|
@@ -213,7 +236,7 @@ const TableOrderer = () => {
|
|
|
213
236
|
};
|
|
214
237
|
|
|
215
238
|
const EditOrderButton = () => {
|
|
216
|
-
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Change Order", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", icon: jsxRuntime.jsx(md.MdOutlineMoveDown, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: jsxRuntime.jsx(TableOrderer, {}) }) })] })] }));
|
|
239
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Change Order", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", variant: "ghost", icon: jsxRuntime.jsx(md.MdOutlineMoveDown, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: jsxRuntime.jsx(TableOrderer, {}) }) })] })] }));
|
|
217
240
|
};
|
|
218
241
|
|
|
219
242
|
const ResetSortingButton = () => {
|
|
@@ -226,34 +249,43 @@ const ResetSortingButton = () => {
|
|
|
226
249
|
const TableSorter = () => {
|
|
227
250
|
const { table } = useDataTable();
|
|
228
251
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: table.getHeaderGroups().map((headerGroup) => (jsxRuntime.jsx(jsxRuntime.Fragment, { children: headerGroup.headers.map((header) => {
|
|
229
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: header.column.getCanSort() && (jsxRuntime.jsxs(react$1.Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsxRuntime.jsx(react$1.Text, { children: header.column.id }), jsxRuntime.jsxs(react$1.Button, { onClick: (e) => {
|
|
252
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: header.column.getCanSort() && (jsxRuntime.jsxs(react$1.Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsxRuntime.jsx(react$1.Text, { children: header.column.id }), jsxRuntime.jsxs(react$1.Button, { variant: "ghost", onClick: (e) => {
|
|
230
253
|
header.column.toggleSorting();
|
|
231
|
-
}, children: [header.column.
|
|
254
|
+
}, children: [header.column.getIsSorted() === false && (
|
|
232
255
|
// <Text>To No sort</Text>
|
|
233
|
-
jsxRuntime.jsx(icons.
|
|
256
|
+
jsxRuntime.jsx(icons.UpDownIcon, {})), header.column.getIsSorted() === "asc" && (
|
|
234
257
|
// <Text>To asc</Text>
|
|
235
|
-
jsxRuntime.jsx(icons.
|
|
258
|
+
jsxRuntime.jsx(icons.ChevronDownIcon, {})), header.column.getIsSorted() === "desc" && (
|
|
236
259
|
// <Text>To desc</Text>
|
|
237
|
-
jsxRuntime.jsx(icons.
|
|
260
|
+
jsxRuntime.jsx(icons.ChevronUpIcon, {}))] }), header.column.getIsSorted() && (jsxRuntime.jsx(react$1.Button, { onClick: (e) => {
|
|
238
261
|
header.column.clearSorting();
|
|
239
262
|
}, children: jsxRuntime.jsx(icons.CloseIcon, {}) }))] })) }));
|
|
240
263
|
}) }))) }));
|
|
241
264
|
};
|
|
242
265
|
|
|
243
266
|
const EditSortingButton = () => {
|
|
244
|
-
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Filter", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", icon: jsxRuntime.jsx(md.MdOutlineSort, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: [jsxRuntime.jsx(TableSorter, {}), jsxRuntime.jsx(ResetSortingButton, {})] }) })] })] }));
|
|
267
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.Tooltip, { label: "Filter", children: jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "filter", variant: "ghost", icon: jsxRuntime.jsx(md.MdOutlineSort, {}) }) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: [jsxRuntime.jsx(TableSorter, {}), jsxRuntime.jsx(ResetSortingButton, {})] }) })] })] }));
|
|
245
268
|
};
|
|
246
269
|
|
|
247
270
|
const EditViewButton = () => {
|
|
248
271
|
const { table } = react.useContext(TableContext);
|
|
249
|
-
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "view", icon: jsxRuntime.jsx(io.IoMdEye, {}) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
272
|
+
return (jsxRuntime.jsxs(react$1.Popover, { placement: "auto", children: [jsxRuntime.jsx(react$1.PopoverTrigger, { children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": "view", variant: "ghost", icon: jsxRuntime.jsx(io.IoMdEye, {}) }) }), jsxRuntime.jsxs(react$1.PopoverContent, { width: "auto", children: [jsxRuntime.jsx(react$1.PopoverArrow, {}), jsxRuntime.jsx(react$1.PopoverBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
250
273
|
return (jsxRuntime.jsx(react$1.FormControl, { width: "auto", children: jsxRuntime.jsx(react$1.Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
251
274
|
}) }) })] })] }));
|
|
252
275
|
};
|
|
253
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
|
+
|
|
254
284
|
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
255
285
|
const { table } = react.useContext(TableContext);
|
|
256
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(react$1.Menu, { children: [jsxRuntime.jsx(react$1.MenuButton, { as: react$1.Button, 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: () => {
|
|
287
|
+
table.setPageSize(Number(pageSize));
|
|
288
|
+
}, children: pageSize }))) })] }) }));
|
|
257
289
|
};
|
|
258
290
|
|
|
259
291
|
const ResetSelectionButton = () => {
|
|
@@ -265,7 +297,7 @@ const ResetSelectionButton = () => {
|
|
|
265
297
|
|
|
266
298
|
const Table = ({ children }) => {
|
|
267
299
|
const { table } = useDataTable();
|
|
268
|
-
return (jsxRuntime.jsx(react$1.Container, { padding: '0rem', maxW: "100%", overflowX: "scroll", children: jsxRuntime.jsx(react$1.Table, { width: table.getCenterTotalSize(), variant: "
|
|
300
|
+
return (jsxRuntime.jsx(react$1.Container, { padding: '0rem', maxW: "100%", overflowX: "scroll", children: jsxRuntime.jsx(react$1.Table, { width: table.getCenterTotalSize(), variant: "unstyled", children: children }) }));
|
|
269
301
|
};
|
|
270
302
|
|
|
271
303
|
const TableBody = () => {
|
|
@@ -402,19 +434,19 @@ const TableHeader = ({ canResize }) => {
|
|
|
402
434
|
|
|
403
435
|
const TablePagination = ({}) => {
|
|
404
436
|
const { firstPage, getCanPreviousPage, previousPage, getState, nextPage, getCanNextPage, lastPage, } = useDataTable().table;
|
|
405
|
-
return (jsxRuntime.jsxs(react$1.ButtonGroup, { isAttached: true, children: [jsxRuntime.jsx(react$1.IconButton, { icon: jsxRuntime.jsx(md.MdFirstPage, {}), onClick: () => firstPage(), isDisabled: !getCanPreviousPage(), "aria-label": "first-page" }), jsxRuntime.jsx(react$1.IconButton, { icon: jsxRuntime.jsx(md.MdArrowBack, {}), onClick: () => previousPage(), isDisabled: !getCanPreviousPage(), "aria-label": "previous-page" }), jsxRuntime.jsx(react$1.Button, { onClick: () => { }, disabled: !getCanPreviousPage(), children: getState().pagination.pageIndex + 1 }), jsxRuntime.jsx(react$1.IconButton, { onClick: () => nextPage(), isDisabled: !getCanNextPage(), "aria-label": "next-page", children: jsxRuntime.jsx(md.MdArrowForward, {}) }), jsxRuntime.jsx(react$1.IconButton, { onClick: () => lastPage(), isDisabled: !getCanNextPage(), "aria-label": "last-page", children: jsxRuntime.jsx(md.MdLastPage, {}) })] }));
|
|
437
|
+
return (jsxRuntime.jsxs(react$1.ButtonGroup, { isAttached: true, children: [jsxRuntime.jsx(react$1.IconButton, { icon: jsxRuntime.jsx(md.MdFirstPage, {}), onClick: () => firstPage(), isDisabled: !getCanPreviousPage(), "aria-label": "first-page", variant: "ghost" }), jsxRuntime.jsx(react$1.IconButton, { icon: jsxRuntime.jsx(md.MdArrowBack, {}), onClick: () => previousPage(), isDisabled: !getCanPreviousPage(), "aria-label": "previous-page", variant: "ghost" }), jsxRuntime.jsx(react$1.Button, { variant: "ghost", onClick: () => { }, disabled: !getCanPreviousPage(), children: getState().pagination.pageIndex + 1 }), jsxRuntime.jsx(react$1.IconButton, { onClick: () => nextPage(), isDisabled: !getCanNextPage(), "aria-label": "next-page", variant: "ghost", children: jsxRuntime.jsx(md.MdArrowForward, {}) }), jsxRuntime.jsx(react$1.IconButton, { onClick: () => lastPage(), isDisabled: !getCanNextPage(), "aria-label": "last-page", variant: "ghost", children: jsxRuntime.jsx(md.MdLastPage, {}) })] }));
|
|
406
438
|
};
|
|
407
439
|
|
|
408
440
|
const SelectAllRowsToggle = () => {
|
|
409
441
|
const { table } = react.useContext(TableContext);
|
|
410
|
-
return (jsxRuntime.jsx(react$1.Tooltip, { label: table.getIsAllRowsSelected() ? "Clear All" : "Select All", children: jsxRuntime.jsx(react$1.IconButton, { "aria-label": table.getIsAllRowsSelected() ? "Clear All" : "Select All", icon: table.getIsAllRowsSelected() ? jsxRuntime.jsx(md.MdClear, {}) : jsxRuntime.jsx(md.MdOutlineChecklist, {}), onClick: (event) => {
|
|
442
|
+
return (jsxRuntime.jsx(react$1.Tooltip, { label: table.getIsAllRowsSelected() ? "Clear All" : "Select All", children: jsxRuntime.jsx(react$1.IconButton, { variant: "ghost", "aria-label": table.getIsAllRowsSelected() ? "Clear All" : "Select All", icon: table.getIsAllRowsSelected() ? jsxRuntime.jsx(md.MdClear, {}) : jsxRuntime.jsx(md.MdOutlineChecklist, {}), onClick: (event) => {
|
|
411
443
|
table.getToggleAllRowsSelectedHandler()(event);
|
|
412
444
|
} }) }));
|
|
413
445
|
};
|
|
414
446
|
|
|
415
447
|
const TableSelector = () => {
|
|
416
448
|
const { table } = react.useContext(TableContext);
|
|
417
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [table.getSelectedRowModel().rows.length > 0 && (jsxRuntime.jsxs(react$1.Button, { onClick: () => { }, display: "flex", gap: "0.25rem", children: [jsxRuntime.jsx(react$1.Box, { fontSize: "sm", children: `${table.getSelectedRowModel().rows.length}` }), jsxRuntime.jsx(react$1.Icon, { as: io.IoMdCheckbox })] })), !table.getIsAllPageRowsSelected() && jsxRuntime.jsx(SelectAllRowsToggle, {}), table.getSelectedRowModel().rows.length > 0 && (jsxRuntime.jsx(react$1.IconButton, { icon: jsxRuntime.jsx(react$1.Icon, { as: md.MdClear }), onClick: () => {
|
|
449
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [table.getSelectedRowModel().rows.length > 0 && (jsxRuntime.jsxs(react$1.Button, { onClick: () => { }, variant: "ghost", display: "flex", gap: "0.25rem", children: [jsxRuntime.jsx(react$1.Box, { fontSize: "sm", children: `${table.getSelectedRowModel().rows.length}` }), jsxRuntime.jsx(react$1.Icon, { as: io.IoMdCheckbox })] })), !table.getIsAllPageRowsSelected() && jsxRuntime.jsx(SelectAllRowsToggle, {}), table.getSelectedRowModel().rows.length > 0 && (jsxRuntime.jsx(react$1.IconButton, { variant: "ghost", icon: jsxRuntime.jsx(react$1.Icon, { as: md.MdClear }), onClick: () => {
|
|
418
450
|
table.resetRowSelection();
|
|
419
451
|
}, "aria-label": "reset selection" }))] }));
|
|
420
452
|
};
|
|
@@ -432,6 +464,7 @@ exports.EditFilterButton = EditFilterButton;
|
|
|
432
464
|
exports.EditOrderButton = EditOrderButton;
|
|
433
465
|
exports.EditSortingButton = EditSortingButton;
|
|
434
466
|
exports.EditViewButton = EditViewButton;
|
|
467
|
+
exports.GlobalFilter = GlobalFilter;
|
|
435
468
|
exports.PageSizeControl = PageSizeControl;
|
|
436
469
|
exports.ResetFilteringButton = ResetFilteringButton;
|
|
437
470
|
exports.ResetSelectionButton = ResetSelectionButton;
|
package/dist/index.mjs
CHANGED
|
@@ -4,16 +4,19 @@ import { createContext, useState, useEffect, useContext } from 'react';
|
|
|
4
4
|
import axios from 'axios';
|
|
5
5
|
import { Button, Box, Text, Input, Popover, Tooltip, PopoverTrigger, IconButton, PopoverContent, PopoverArrow, PopoverBody, Flex, FormControl, Checkbox, Menu, MenuButton, MenuList, MenuItem, Container, Table as Table$1, Grid, Card, CardBody, Tfoot, Tr as Tr$1, Th, Thead, Portal, ButtonGroup, Icon } from '@chakra-ui/react';
|
|
6
6
|
import { MdFilterAlt, MdArrowUpward, MdArrowDownward, MdOutlineMoveDown, MdOutlineSort, MdPushPin, MdCancel, MdSort, MdFilterListAlt, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage, MdClear, MdOutlineChecklist } from 'react-icons/md';
|
|
7
|
-
import {
|
|
7
|
+
import { UpDownIcon, ChevronDownIcon, ChevronUpIcon, CloseIcon } from '@chakra-ui/icons';
|
|
8
8
|
import { IoMdEye, IoMdClose, IoMdCheckbox } from 'react-icons/io';
|
|
9
9
|
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
10
10
|
|
|
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, }) => {
|
|
19
|
+
const [columnOrder, setColumnOrder] = useState([]);
|
|
17
20
|
const table = useReactTable({
|
|
18
21
|
data: data,
|
|
19
22
|
columns: columns,
|
|
@@ -26,11 +29,20 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
26
29
|
minSize: 10, //enforced during column resizing
|
|
27
30
|
maxSize: 10000, //enforced during column resizing
|
|
28
31
|
},
|
|
32
|
+
state: {
|
|
33
|
+
columnOrder,
|
|
34
|
+
},
|
|
35
|
+
onColumnOrderChange: (state) => {
|
|
36
|
+
setColumnOrder(state);
|
|
37
|
+
},
|
|
29
38
|
enableRowSelection: enableRowSelection,
|
|
30
39
|
enableMultiRowSelection: enableMultiRowSelection,
|
|
31
40
|
enableSubRowSelection: enableSubRowSelection,
|
|
32
41
|
columnResizeMode: "onChange",
|
|
33
42
|
});
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
45
|
+
}, []);
|
|
34
46
|
return (jsx(TableContext.Provider, { value: {
|
|
35
47
|
table: { ...table },
|
|
36
48
|
refreshData: () => {
|
|
@@ -77,6 +89,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
77
89
|
});
|
|
78
90
|
const [rowSelection, setRowSelection] = useState({});
|
|
79
91
|
const [columnOrder, setColumnOrder] = useState([]);
|
|
92
|
+
const [globalFilter, setGlobalFilter] = useState("");
|
|
80
93
|
const { data, loading, hasError, refreshData } = useDataFromUrl({
|
|
81
94
|
url: url,
|
|
82
95
|
defaultData: {
|
|
@@ -98,6 +111,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
98
111
|
obj[filter.id] = filter.value;
|
|
99
112
|
return { ...accumulator, ...obj };
|
|
100
113
|
}, {})),
|
|
114
|
+
searching: globalFilter,
|
|
101
115
|
},
|
|
102
116
|
});
|
|
103
117
|
const table = useReactTable({
|
|
@@ -117,6 +131,7 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
117
131
|
columnFilters,
|
|
118
132
|
rowSelection,
|
|
119
133
|
columnOrder,
|
|
134
|
+
globalFilter,
|
|
120
135
|
},
|
|
121
136
|
defaultColumn: {
|
|
122
137
|
size: 150, //starting column size
|
|
@@ -129,15 +144,23 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
129
144
|
onColumnOrderChange: (state) => {
|
|
130
145
|
setColumnOrder(state);
|
|
131
146
|
},
|
|
147
|
+
onGlobalFilterChange: (state) => {
|
|
148
|
+
setGlobalFilter(state);
|
|
149
|
+
},
|
|
132
150
|
rowCount: data.filterCount,
|
|
133
151
|
});
|
|
134
152
|
useEffect(() => {
|
|
135
153
|
refreshData();
|
|
136
|
-
}, [pagination, sorting, columnFilters]);
|
|
154
|
+
}, [pagination, sorting, columnFilters, globalFilter]);
|
|
137
155
|
useEffect(() => {
|
|
138
156
|
setColumnOrder(table.getAllLeafColumns().map((column) => column.id));
|
|
139
157
|
}, []);
|
|
140
|
-
return (jsx(TableContext.Provider, { value: {
|
|
158
|
+
return (jsx(TableContext.Provider, { value: {
|
|
159
|
+
table: { ...table },
|
|
160
|
+
refreshData: refreshData,
|
|
161
|
+
globalFilter,
|
|
162
|
+
setGlobalFilter,
|
|
163
|
+
}, children: children }));
|
|
141
164
|
};
|
|
142
165
|
|
|
143
166
|
const ResetFilteringButton = () => {
|
|
@@ -148,8 +171,8 @@ const ResetFilteringButton = () => {
|
|
|
148
171
|
};
|
|
149
172
|
|
|
150
173
|
const useDataTable = () => {
|
|
151
|
-
const { table, refreshData } = useContext(TableContext);
|
|
152
|
-
return { table, refreshData };
|
|
174
|
+
const { table, refreshData, globalFilter, setGlobalFilter } = useContext(TableContext);
|
|
175
|
+
return { table, refreshData, globalFilter, setGlobalFilter };
|
|
153
176
|
};
|
|
154
177
|
|
|
155
178
|
const TableFilter = () => {
|
|
@@ -164,7 +187,7 @@ const TableFilter = () => {
|
|
|
164
187
|
};
|
|
165
188
|
|
|
166
189
|
const EditFilterButton = () => {
|
|
167
|
-
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Filter", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", icon: jsx(MdFilterAlt, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsxs(Flex, { flexFlow: "column", gap: "1rem", children: [jsx(TableFilter, {}), jsx(ResetFilteringButton, {})] }) })] })] }));
|
|
190
|
+
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Filter", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", variant: "ghost", icon: jsx(MdFilterAlt, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsxs(Flex, { flexFlow: "column", gap: "1rem", children: [jsx(TableFilter, {}), jsx(ResetFilteringButton, {})] }) })] })] }));
|
|
168
191
|
};
|
|
169
192
|
|
|
170
193
|
const ColumnOrderChanger = ({ columns }) => {
|
|
@@ -211,7 +234,7 @@ const TableOrderer = () => {
|
|
|
211
234
|
};
|
|
212
235
|
|
|
213
236
|
const EditOrderButton = () => {
|
|
214
|
-
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Change Order", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", icon: jsx(MdOutlineMoveDown, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsx(Flex, { flexFlow: "column", gap: "0.25rem", children: jsx(TableOrderer, {}) }) })] })] }));
|
|
237
|
+
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Change Order", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", variant: "ghost", icon: jsx(MdOutlineMoveDown, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsx(Flex, { flexFlow: "column", gap: "0.25rem", children: jsx(TableOrderer, {}) }) })] })] }));
|
|
215
238
|
};
|
|
216
239
|
|
|
217
240
|
const ResetSortingButton = () => {
|
|
@@ -224,34 +247,43 @@ const ResetSortingButton = () => {
|
|
|
224
247
|
const TableSorter = () => {
|
|
225
248
|
const { table } = useDataTable();
|
|
226
249
|
return (jsx(Fragment, { children: table.getHeaderGroups().map((headerGroup) => (jsx(Fragment, { children: headerGroup.headers.map((header) => {
|
|
227
|
-
return (jsx(Fragment, { children: header.column.getCanSort() && (jsxs(Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsx(Text, { children: header.column.id }), jsxs(Button, { onClick: (e) => {
|
|
250
|
+
return (jsx(Fragment, { children: header.column.getCanSort() && (jsxs(Flex, { alignItems: "center", gap: "0.5rem", padding: "0.5rem", children: [jsx(Text, { children: header.column.id }), jsxs(Button, { variant: "ghost", onClick: (e) => {
|
|
228
251
|
header.column.toggleSorting();
|
|
229
|
-
}, children: [header.column.
|
|
252
|
+
}, children: [header.column.getIsSorted() === false && (
|
|
230
253
|
// <Text>To No sort</Text>
|
|
231
|
-
jsx(
|
|
254
|
+
jsx(UpDownIcon, {})), header.column.getIsSorted() === "asc" && (
|
|
232
255
|
// <Text>To asc</Text>
|
|
233
|
-
jsx(
|
|
256
|
+
jsx(ChevronDownIcon, {})), header.column.getIsSorted() === "desc" && (
|
|
234
257
|
// <Text>To desc</Text>
|
|
235
|
-
jsx(
|
|
258
|
+
jsx(ChevronUpIcon, {}))] }), header.column.getIsSorted() && (jsx(Button, { onClick: (e) => {
|
|
236
259
|
header.column.clearSorting();
|
|
237
260
|
}, children: jsx(CloseIcon, {}) }))] })) }));
|
|
238
261
|
}) }))) }));
|
|
239
262
|
};
|
|
240
263
|
|
|
241
264
|
const EditSortingButton = () => {
|
|
242
|
-
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Filter", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", icon: jsx(MdOutlineSort, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsxs(Flex, { flexFlow: "column", gap: "0.25rem", children: [jsx(TableSorter, {}), jsx(ResetSortingButton, {})] }) })] })] }));
|
|
265
|
+
return (jsxs(Popover, { placement: "auto", children: [jsx(Tooltip, { label: "Filter", children: jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "filter", variant: "ghost", icon: jsx(MdOutlineSort, {}) }) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsxs(Flex, { flexFlow: "column", gap: "0.25rem", children: [jsx(TableSorter, {}), jsx(ResetSortingButton, {})] }) })] })] }));
|
|
243
266
|
};
|
|
244
267
|
|
|
245
268
|
const EditViewButton = () => {
|
|
246
269
|
const { table } = useContext(TableContext);
|
|
247
|
-
return (jsxs(Popover, { placement: "auto", children: [jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "view", icon: jsx(IoMdEye, {}) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsx(Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
270
|
+
return (jsxs(Popover, { placement: "auto", children: [jsx(PopoverTrigger, { children: jsx(IconButton, { "aria-label": "view", variant: "ghost", icon: jsx(IoMdEye, {}) }) }), jsxs(PopoverContent, { width: "auto", children: [jsx(PopoverArrow, {}), jsx(PopoverBody, { children: jsx(Flex, { flexFlow: "column", gap: "1rem", children: table.getAllLeafColumns().map((column) => {
|
|
248
271
|
return (jsx(FormControl, { width: "auto", children: jsx(Checkbox, { isChecked: column.getIsVisible(), onChange: column.getToggleVisibilityHandler(), children: column.id }) }, crypto.randomUUID()));
|
|
249
272
|
}) }) })] })] }));
|
|
250
273
|
};
|
|
251
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
|
+
|
|
252
282
|
const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
253
283
|
const { table } = useContext(TableContext);
|
|
254
|
-
return (jsx(Fragment, { children: jsxs(Menu, { children: [jsx(MenuButton, { as: Button, 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: () => {
|
|
285
|
+
table.setPageSize(Number(pageSize));
|
|
286
|
+
}, children: pageSize }))) })] }) }));
|
|
255
287
|
};
|
|
256
288
|
|
|
257
289
|
const ResetSelectionButton = () => {
|
|
@@ -263,7 +295,7 @@ const ResetSelectionButton = () => {
|
|
|
263
295
|
|
|
264
296
|
const Table = ({ children }) => {
|
|
265
297
|
const { table } = useDataTable();
|
|
266
|
-
return (jsx(Container, { padding: '0rem', maxW: "100%", overflowX: "scroll", children: jsx(Table$1, { width: table.getCenterTotalSize(), variant: "
|
|
298
|
+
return (jsx(Container, { padding: '0rem', maxW: "100%", overflowX: "scroll", children: jsx(Table$1, { width: table.getCenterTotalSize(), variant: "unstyled", children: children }) }));
|
|
267
299
|
};
|
|
268
300
|
|
|
269
301
|
const TableBody = () => {
|
|
@@ -400,19 +432,19 @@ const TableHeader = ({ canResize }) => {
|
|
|
400
432
|
|
|
401
433
|
const TablePagination = ({}) => {
|
|
402
434
|
const { firstPage, getCanPreviousPage, previousPage, getState, nextPage, getCanNextPage, lastPage, } = useDataTable().table;
|
|
403
|
-
return (jsxs(ButtonGroup, { isAttached: true, children: [jsx(IconButton, { icon: jsx(MdFirstPage, {}), onClick: () => firstPage(), isDisabled: !getCanPreviousPage(), "aria-label": "first-page" }), jsx(IconButton, { icon: jsx(MdArrowBack, {}), onClick: () => previousPage(), isDisabled: !getCanPreviousPage(), "aria-label": "previous-page" }), jsx(Button, { onClick: () => { }, disabled: !getCanPreviousPage(), children: getState().pagination.pageIndex + 1 }), jsx(IconButton, { onClick: () => nextPage(), isDisabled: !getCanNextPage(), "aria-label": "next-page", children: jsx(MdArrowForward, {}) }), jsx(IconButton, { onClick: () => lastPage(), isDisabled: !getCanNextPage(), "aria-label": "last-page", children: jsx(MdLastPage, {}) })] }));
|
|
435
|
+
return (jsxs(ButtonGroup, { isAttached: true, children: [jsx(IconButton, { icon: jsx(MdFirstPage, {}), onClick: () => firstPage(), isDisabled: !getCanPreviousPage(), "aria-label": "first-page", variant: "ghost" }), jsx(IconButton, { icon: jsx(MdArrowBack, {}), onClick: () => previousPage(), isDisabled: !getCanPreviousPage(), "aria-label": "previous-page", variant: "ghost" }), jsx(Button, { variant: "ghost", onClick: () => { }, disabled: !getCanPreviousPage(), children: getState().pagination.pageIndex + 1 }), jsx(IconButton, { onClick: () => nextPage(), isDisabled: !getCanNextPage(), "aria-label": "next-page", variant: "ghost", children: jsx(MdArrowForward, {}) }), jsx(IconButton, { onClick: () => lastPage(), isDisabled: !getCanNextPage(), "aria-label": "last-page", variant: "ghost", children: jsx(MdLastPage, {}) })] }));
|
|
404
436
|
};
|
|
405
437
|
|
|
406
438
|
const SelectAllRowsToggle = () => {
|
|
407
439
|
const { table } = useContext(TableContext);
|
|
408
|
-
return (jsx(Tooltip, { label: table.getIsAllRowsSelected() ? "Clear All" : "Select All", children: jsx(IconButton, { "aria-label": table.getIsAllRowsSelected() ? "Clear All" : "Select All", icon: table.getIsAllRowsSelected() ? jsx(MdClear, {}) : jsx(MdOutlineChecklist, {}), onClick: (event) => {
|
|
440
|
+
return (jsx(Tooltip, { label: table.getIsAllRowsSelected() ? "Clear All" : "Select All", children: jsx(IconButton, { variant: "ghost", "aria-label": table.getIsAllRowsSelected() ? "Clear All" : "Select All", icon: table.getIsAllRowsSelected() ? jsx(MdClear, {}) : jsx(MdOutlineChecklist, {}), onClick: (event) => {
|
|
409
441
|
table.getToggleAllRowsSelectedHandler()(event);
|
|
410
442
|
} }) }));
|
|
411
443
|
};
|
|
412
444
|
|
|
413
445
|
const TableSelector = () => {
|
|
414
446
|
const { table } = useContext(TableContext);
|
|
415
|
-
return (jsxs(Fragment, { children: [table.getSelectedRowModel().rows.length > 0 && (jsxs(Button, { onClick: () => { }, display: "flex", gap: "0.25rem", children: [jsx(Box, { fontSize: "sm", children: `${table.getSelectedRowModel().rows.length}` }), jsx(Icon, { as: IoMdCheckbox })] })), !table.getIsAllPageRowsSelected() && jsx(SelectAllRowsToggle, {}), table.getSelectedRowModel().rows.length > 0 && (jsx(IconButton, { icon: jsx(Icon, { as: MdClear }), onClick: () => {
|
|
447
|
+
return (jsxs(Fragment, { children: [table.getSelectedRowModel().rows.length > 0 && (jsxs(Button, { onClick: () => { }, variant: "ghost", display: "flex", gap: "0.25rem", children: [jsx(Box, { fontSize: "sm", children: `${table.getSelectedRowModel().rows.length}` }), jsx(Icon, { as: IoMdCheckbox })] })), !table.getIsAllPageRowsSelected() && jsx(SelectAllRowsToggle, {}), table.getSelectedRowModel().rows.length > 0 && (jsx(IconButton, { variant: "ghost", icon: jsx(Icon, { as: MdClear }), onClick: () => {
|
|
416
448
|
table.resetRowSelection();
|
|
417
449
|
}, "aria-label": "reset selection" }))] }));
|
|
418
450
|
};
|
|
@@ -424,4 +456,4 @@ const TextCell = ({ label, children }) => {
|
|
|
424
456
|
return (jsx(Text, { as: "span", overflow: "hidden", textOverflow: "ellipsis", noOfLines: [1, 2, 3], children: children }));
|
|
425
457
|
};
|
|
426
458
|
|
|
427
|
-
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";
|