@bsol-oss/react-datatable5 1.0.37 → 1.0.39
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 +50 -12
- package/dist/index.js +47 -35
- package/dist/index.mjs +49 -37
- package/dist/types/components/DataTableContext.d.ts +1 -0
- package/dist/types/components/DataTableServer.d.ts +1 -1
- package/dist/types/components/DensityToggleButton.d.ts +6 -1
- package/dist/types/components/EditFilterButton.d.ts +9 -1
- package/dist/types/components/EditOrderButton.d.ts +7 -1
- package/dist/types/components/EditSortingButton.d.ts +7 -1
- package/dist/types/components/EditViewButton.d.ts +7 -1
- package/dist/types/components/ResetFilteringButton.d.ts +4 -1
- package/dist/types/components/ResetSelectionButton.d.ts +4 -1
- package/dist/types/components/ResetSortingButton.d.ts +4 -1
- package/dist/types/components/SelectAllRowsToggle.d.ts +8 -1
- package/dist/types/components/Table.d.ts +3 -1
- package/dist/types/components/useDataTable.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
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
|
-
import { ReactNode } from 'react';
|
|
5
|
+
import React$1, { ReactNode } from 'react';
|
|
6
6
|
import { TextProps, TooltipProps } from '@chakra-ui/react';
|
|
7
7
|
import * as _tanstack_table_core from '@tanstack/table-core';
|
|
8
8
|
|
|
@@ -90,17 +90,43 @@ declare module "@tanstack/react-table" {
|
|
|
90
90
|
displayName: string;
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection,
|
|
93
|
+
declare const DataTableServer: <TData>({ columns, url, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, onRowSelect, columnOrder: defaultColumnOrder, columnFilters: defaultColumnFilter, density, globalFilter: defaultGlobalFilter, pagination: defaultPagination, sorting: defaultSorting, rowSelection: defaultRowSelection, children, }: DataTableServerProps<TData>) => react_jsx_runtime.JSX.Element;
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
interface DensityToggleButtonProps {
|
|
96
|
+
icon?: React$1.ReactElement;
|
|
97
|
+
text?: string;
|
|
98
|
+
}
|
|
99
|
+
declare const DensityToggleButton: ({ text, icon, }: DensityToggleButtonProps) => react_jsx_runtime.JSX.Element;
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
interface EditFilterButtonProps {
|
|
102
|
+
text?: string;
|
|
103
|
+
title?: string;
|
|
104
|
+
closeText?: string;
|
|
105
|
+
resetText?: string;
|
|
106
|
+
icon?: React.ReactElement;
|
|
107
|
+
}
|
|
108
|
+
declare const EditFilterButton: ({ text, title, closeText, resetText, icon, }: EditFilterButtonProps) => react_jsx_runtime.JSX.Element;
|
|
98
109
|
|
|
99
|
-
|
|
110
|
+
interface EditOrderButtonProps {
|
|
111
|
+
title?: string;
|
|
112
|
+
icon?: React$1.ReactElement;
|
|
113
|
+
text?: string;
|
|
114
|
+
}
|
|
115
|
+
declare const EditOrderButton: ({ text, icon, title, }: EditOrderButtonProps) => react_jsx_runtime.JSX.Element;
|
|
100
116
|
|
|
101
|
-
|
|
117
|
+
interface EditSortingButtonProps {
|
|
118
|
+
title?: string;
|
|
119
|
+
icon?: React.ReactElement;
|
|
120
|
+
text?: string;
|
|
121
|
+
}
|
|
122
|
+
declare const EditSortingButton: ({ text, icon, title, }: EditSortingButtonProps) => react_jsx_runtime.JSX.Element;
|
|
102
123
|
|
|
103
|
-
|
|
124
|
+
interface EditViewButtonProps {
|
|
125
|
+
text?: string;
|
|
126
|
+
icon?: React$1.ReactElement;
|
|
127
|
+
title?: string;
|
|
128
|
+
}
|
|
129
|
+
declare const EditViewButton: ({ text, icon, title, }: EditViewButtonProps) => react_jsx_runtime.JSX.Element;
|
|
104
130
|
|
|
105
131
|
declare const GlobalFilter: () => react_jsx_runtime.JSX.Element;
|
|
106
132
|
|
|
@@ -109,16 +135,27 @@ interface PageSizeControlProps {
|
|
|
109
135
|
}
|
|
110
136
|
declare const PageSizeControl: ({ pageSizes, }: PageSizeControlProps) => react_jsx_runtime.JSX.Element;
|
|
111
137
|
|
|
112
|
-
|
|
138
|
+
interface ResetFilteringButtonProps {
|
|
139
|
+
text?: string;
|
|
140
|
+
}
|
|
141
|
+
declare const ResetFilteringButton: ({ text, }: ResetFilteringButtonProps) => react_jsx_runtime.JSX.Element;
|
|
113
142
|
|
|
114
|
-
|
|
143
|
+
interface ResetSelectionButtonProps {
|
|
144
|
+
text?: string;
|
|
145
|
+
}
|
|
146
|
+
declare const ResetSelectionButton: ({ text, }: ResetSelectionButtonProps) => react_jsx_runtime.JSX.Element;
|
|
115
147
|
|
|
116
|
-
|
|
148
|
+
interface ResetSortingButtonProps {
|
|
149
|
+
text?: string;
|
|
150
|
+
}
|
|
151
|
+
declare const ResetSortingButton: ({ text, }: ResetSortingButtonProps) => react_jsx_runtime.JSX.Element;
|
|
117
152
|
|
|
118
153
|
interface TableProps {
|
|
154
|
+
showLoading?: boolean;
|
|
155
|
+
loadingComponent?: JSX.Element;
|
|
119
156
|
children: ReactNode;
|
|
120
157
|
}
|
|
121
|
-
declare const Table: ({ children, ...props }: TableProps) => react_jsx_runtime.JSX.Element;
|
|
158
|
+
declare const Table: ({ children, showLoading, loadingComponent, ...props }: TableProps) => react_jsx_runtime.JSX.Element;
|
|
122
159
|
|
|
123
160
|
interface TableBodyProps {
|
|
124
161
|
pinnedBgColor?: {
|
|
@@ -204,6 +241,7 @@ declare const useDataTable: () => {
|
|
|
204
241
|
refreshData: () => void;
|
|
205
242
|
globalFilter: string;
|
|
206
243
|
setGlobalFilter: (filter: string) => void;
|
|
244
|
+
loading: boolean;
|
|
207
245
|
};
|
|
208
246
|
|
|
209
|
-
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, type Result, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableFilter, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
|
247
|
+
export { type DataResponse, DataTable, type DataTableProps, DataTableServer, type DataTableServerProps, DensityToggleButton, type DensityToggleButtonProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type PaginationProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableFilter, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableOrderer, TablePagination, type TableProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, useDataFromUrl, type useDataFromUrlProps, type useDataFromUrlReturn, useDataTable };
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,7 @@ const TableContext = react.createContext({
|
|
|
17
17
|
refreshData: () => { },
|
|
18
18
|
globalFilter: "",
|
|
19
19
|
setGlobalFilter: () => { },
|
|
20
|
+
loading: false,
|
|
20
21
|
});
|
|
21
22
|
|
|
22
23
|
// Reference: https://tanstack.com/table/latest/docs/framework/react/examples/custom-features
|
|
@@ -128,7 +129,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
128
129
|
columnOrder,
|
|
129
130
|
globalFilter,
|
|
130
131
|
density: densityState,
|
|
131
|
-
rowSelection
|
|
132
|
+
rowSelection,
|
|
132
133
|
},
|
|
133
134
|
onColumnOrderChange: (state) => {
|
|
134
135
|
setColumnOrder(state);
|
|
@@ -165,6 +166,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
165
166
|
},
|
|
166
167
|
globalFilter: globalFilter,
|
|
167
168
|
setGlobalFilter: setGlobalFilter,
|
|
169
|
+
loading: false,
|
|
168
170
|
}, children: children }));
|
|
169
171
|
};
|
|
170
172
|
|
|
@@ -200,7 +202,7 @@ const useDataFromUrl = ({ url, params = {}, defaultData, }) => {
|
|
|
200
202
|
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
|
|
201
203
|
pageIndex: 0, //initial page index
|
|
202
204
|
pageSize: 10, //default page size
|
|
203
|
-
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {},
|
|
205
|
+
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
|
|
204
206
|
const [sorting, setSorting] = react.useState(defaultSorting);
|
|
205
207
|
const [columnFilters, setColumnFilters] = react.useState(defaultColumnFilter); // can set initial column filter state here
|
|
206
208
|
const [pagination, setPagination] = react.useState(defaultPagination);
|
|
@@ -286,31 +288,34 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
286
288
|
react.useEffect(() => {
|
|
287
289
|
onRowSelect(table.getState().rowSelection);
|
|
288
290
|
}, [table.getState().rowSelection]);
|
|
289
|
-
return (jsxRuntime.
|
|
291
|
+
return (jsxRuntime.jsx(TableContext.Provider, { value: {
|
|
290
292
|
table: { ...table },
|
|
291
293
|
refreshData: refreshData,
|
|
292
294
|
globalFilter,
|
|
293
295
|
setGlobalFilter,
|
|
294
|
-
|
|
296
|
+
loading: loading,
|
|
297
|
+
}, children: children }));
|
|
295
298
|
};
|
|
296
299
|
|
|
297
|
-
const DensityToggleButton = () => {
|
|
300
|
+
const DensityToggleButton = ({ text, icon = jsxRuntime.jsx(ai.AiOutlineColumnWidth, {}), }) => {
|
|
298
301
|
const { table } = react.useContext(TableContext);
|
|
299
|
-
return (jsxRuntime.
|
|
300
|
-
|
|
301
|
-
|
|
302
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!text === false && (jsxRuntime.jsx(react$1.IconButton, { variant: "ghost", "aria-label": "Toggle Density", icon: icon, onClick: () => {
|
|
303
|
+
table.toggleDensity();
|
|
304
|
+
} })), !!text !== false && (jsxRuntime.jsx(react$1.Button, { leftIcon: icon, variant: "ghost", "aria-label": "Toggle Density", onClick: () => {
|
|
305
|
+
table.toggleDensity();
|
|
306
|
+
}, children: text }))] }));
|
|
302
307
|
};
|
|
303
308
|
|
|
304
|
-
const ResetFilteringButton = () => {
|
|
309
|
+
const ResetFilteringButton = ({ text = "Reset Filtering", }) => {
|
|
305
310
|
const { table } = react.useContext(TableContext);
|
|
306
311
|
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
307
312
|
table.resetColumnFilters();
|
|
308
|
-
}, children:
|
|
313
|
+
}, children: text }));
|
|
309
314
|
};
|
|
310
315
|
|
|
311
316
|
const useDataTable = () => {
|
|
312
|
-
const { table, refreshData, globalFilter, setGlobalFilter } = react.useContext(TableContext);
|
|
313
|
-
return { table, refreshData, globalFilter, setGlobalFilter };
|
|
317
|
+
const { table, refreshData, globalFilter, setGlobalFilter, loading } = react.useContext(TableContext);
|
|
318
|
+
return { table, refreshData, globalFilter, setGlobalFilter, loading };
|
|
314
319
|
};
|
|
315
320
|
|
|
316
321
|
const TableFilter = () => {
|
|
@@ -327,8 +332,9 @@ const TableFilter = () => {
|
|
|
327
332
|
}) }));
|
|
328
333
|
};
|
|
329
334
|
|
|
330
|
-
const EditFilterButton = () => {
|
|
331
|
-
|
|
335
|
+
const EditFilterButton = ({ text, title = "Edit Filter", closeText = "Close", resetText = "Reset", icon = jsxRuntime.jsx(md.MdFilterAlt, {}), }) => {
|
|
336
|
+
const filterModal = react$1.useDisclosure();
|
|
337
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!text === false && (jsxRuntime.jsx(react$1.IconButton, { icon: icon, variant: "ghost", onClick: filterModal.onOpen, "aria-label": "filter" })), !!text !== false && (jsxRuntime.jsx(react$1.Button, { leftIcon: icon, variant: "ghost", onClick: filterModal.onOpen, children: text })), jsxRuntime.jsxs(react$1.Modal, { isOpen: filterModal.isOpen, onClose: filterModal.onClose, size: ["full", "full", "md", "md"], children: [jsxRuntime.jsx(react$1.ModalOverlay, {}), jsxRuntime.jsxs(react$1.ModalContent, { children: [jsxRuntime.jsx(react$1.ModalHeader, { children: title }), jsxRuntime.jsx(react$1.ModalCloseButton, {}), jsxRuntime.jsx(react$1.ModalBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "1rem", children: [jsxRuntime.jsx(TableFilter, {}), jsxRuntime.jsx(ResetFilteringButton, { text: resetText })] }) }), jsxRuntime.jsx(react$1.ModalFooter, { children: jsxRuntime.jsx(react$1.Button, { onClick: filterModal.onClose, children: closeText }) })] })] })] }));
|
|
332
338
|
};
|
|
333
339
|
|
|
334
340
|
const ColumnOrderChanger = ({ columns }) => {
|
|
@@ -384,15 +390,16 @@ const TableOrderer = () => {
|
|
|
384
390
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(ColumnOrderChanger, { columns: table.getState().columnOrder }) }));
|
|
385
391
|
};
|
|
386
392
|
|
|
387
|
-
const EditOrderButton = () => {
|
|
388
|
-
|
|
393
|
+
const EditOrderButton = ({ text, icon = jsxRuntime.jsx(md.MdOutlineMoveDown, {}), title = "Change Order", }) => {
|
|
394
|
+
const orderModal = react$1.useDisclosure();
|
|
395
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!text === false && (jsxRuntime.jsx(react$1.IconButton, { icon: icon, variant: "ghost", onClick: orderModal.onOpen, "aria-label": "change order" })), !!text !== false && (jsxRuntime.jsx(react$1.Button, { leftIcon: icon, variant: "ghost", onClick: orderModal.onOpen, children: text })), jsxRuntime.jsxs(react$1.Modal, { isOpen: orderModal.isOpen, onClose: orderModal.onClose, size: ["full", "full", "md", "md"], children: [jsxRuntime.jsx(react$1.ModalOverlay, {}), jsxRuntime.jsxs(react$1.ModalContent, { padding: "0 0 1rem 0", children: [jsxRuntime.jsx(react$1.ModalHeader, { children: title }), jsxRuntime.jsx(react$1.ModalCloseButton, {}), jsxRuntime.jsx(react$1.ModalBody, { children: jsxRuntime.jsx(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: jsxRuntime.jsx(TableOrderer, {}) }) })] })] })] }));
|
|
389
396
|
};
|
|
390
397
|
|
|
391
|
-
const ResetSortingButton = () => {
|
|
398
|
+
const ResetSortingButton = ({ text = "Reset Sorting", }) => {
|
|
392
399
|
const { table } = react.useContext(TableContext);
|
|
393
400
|
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
394
401
|
table.resetSorting();
|
|
395
|
-
}, children:
|
|
402
|
+
}, children: text }));
|
|
396
403
|
};
|
|
397
404
|
|
|
398
405
|
const TableSorter = () => {
|
|
@@ -415,8 +422,9 @@ const TableSorter = () => {
|
|
|
415
422
|
}) }))) }));
|
|
416
423
|
};
|
|
417
424
|
|
|
418
|
-
const EditSortingButton = () => {
|
|
419
|
-
|
|
425
|
+
const EditSortingButton = ({ text, icon = jsxRuntime.jsx(md.MdOutlineSort, {}), title = "Edit Sorting", }) => {
|
|
426
|
+
const sortingModal = react$1.useDisclosure();
|
|
427
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!text === false && (jsxRuntime.jsx(react$1.IconButton, { icon: icon, variant: "ghost", onClick: sortingModal.onOpen, "aria-label": "change sorting" })), !!text !== false && (jsxRuntime.jsx(react$1.Button, { leftIcon: icon, variant: "ghost", onClick: sortingModal.onOpen, children: text })), jsxRuntime.jsxs(react$1.Modal, { isOpen: sortingModal.isOpen, onClose: sortingModal.onClose, size: ["full", "full", "md", "md"], children: [jsxRuntime.jsx(react$1.ModalOverlay, {}), jsxRuntime.jsxs(react$1.ModalContent, { padding: "0 0 1rem 0", children: [jsxRuntime.jsx(react$1.ModalHeader, { children: title }), jsxRuntime.jsx(react$1.ModalCloseButton, {}), jsxRuntime.jsx(react$1.ModalBody, { children: jsxRuntime.jsxs(react$1.Flex, { flexFlow: "column", gap: "0.25rem", children: [jsxRuntime.jsx(TableSorter, {}), jsxRuntime.jsx(ResetSortingButton, {})] }) })] })] })] }));
|
|
420
428
|
};
|
|
421
429
|
|
|
422
430
|
const TableViewer = () => {
|
|
@@ -429,8 +437,9 @@ const TableViewer = () => {
|
|
|
429
437
|
}) }));
|
|
430
438
|
};
|
|
431
439
|
|
|
432
|
-
const EditViewButton = () => {
|
|
433
|
-
|
|
440
|
+
const EditViewButton = ({ text, icon = jsxRuntime.jsx(io.IoMdEye, {}), title = "Edit View", }) => {
|
|
441
|
+
const viewModel = react$1.useDisclosure();
|
|
442
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!text === false && (jsxRuntime.jsx(react$1.IconButton, { icon: icon, variant: "ghost", onClick: viewModel.onOpen, "aria-label": "change sorting" })), !!text !== false && (jsxRuntime.jsx(react$1.Button, { leftIcon: icon, variant: "ghost", onClick: viewModel.onOpen, children: text })), jsxRuntime.jsxs(react$1.Modal, { isOpen: viewModel.isOpen, onClose: viewModel.onClose, size: ["full", "full", "md", "md"], children: [jsxRuntime.jsx(react$1.ModalOverlay, {}), jsxRuntime.jsxs(react$1.ModalContent, { padding: "0 0 1rem 0", children: [jsxRuntime.jsx(react$1.ModalHeader, { children: title }), jsxRuntime.jsx(react$1.ModalCloseButton, {}), jsxRuntime.jsx(react$1.ModalBody, { children: jsxRuntime.jsx(TableViewer, {}) })] })] })] }));
|
|
434
443
|
};
|
|
435
444
|
|
|
436
445
|
const GlobalFilter = () => {
|
|
@@ -447,16 +456,19 @@ const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
|
447
456
|
}, children: pageSize }))) })] }) }));
|
|
448
457
|
};
|
|
449
458
|
|
|
450
|
-
const ResetSelectionButton = () => {
|
|
459
|
+
const ResetSelectionButton = ({ text = "Reset Selection", }) => {
|
|
451
460
|
const { table } = react.useContext(TableContext);
|
|
452
461
|
return (jsxRuntime.jsx(react$1.Button, { onClick: () => {
|
|
453
462
|
table.resetRowSelection();
|
|
454
|
-
}, children:
|
|
463
|
+
}, children: text }));
|
|
455
464
|
};
|
|
456
465
|
|
|
457
|
-
const Table = ({ children, ...props }) => {
|
|
458
|
-
const { table } = useDataTable();
|
|
459
|
-
|
|
466
|
+
const Table = ({ children, showLoading = false, loadingComponent = jsxRuntime.jsx(jsxRuntime.Fragment, { children: "Loading..." }), ...props }) => {
|
|
467
|
+
const { table, loading } = useDataTable();
|
|
468
|
+
if (showLoading) {
|
|
469
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [loading && loadingComponent, !loading && (jsxRuntime.jsx(react$1.Table, { width: table.getCenterTotalSize(), overflowX: "auto", ...props, children: children }))] }));
|
|
470
|
+
}
|
|
471
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(react$1.Table, { width: table.getCenterTotalSize(), overflowX: "auto", ...props, children: children }) }));
|
|
460
472
|
};
|
|
461
473
|
|
|
462
474
|
const TableBody = ({ pinnedBgColor = { light: "gray.50", dark: "gray.700" }, }) => {
|
|
@@ -622,9 +634,7 @@ const TableHeader = ({ canResize, pinnedBgColor = { light: "gray.50", dark: "gra
|
|
|
622
634
|
// styling resize and pinning end
|
|
623
635
|
display: "grid", children: [jsxRuntime.jsxs(react$1.Menu, { children: [jsxRuntime.jsx(react$1.MenuButton, { as: react$1.Box, padding: `${table.getDensityValue()}px`, display: "flex", alignItems: "center", justifyContent: "start", borderRadius: "0rem", _hover: { backgroundColor: "gray.100" }, children: jsxRuntime.jsxs(react$1.Flex, { gap: "0.5rem", alignItems: "center", children: [header.isPlaceholder
|
|
624
636
|
? null
|
|
625
|
-
: reactTable.flexRender(header.column.columnDef.header, header.getContext()), jsxRuntime.jsx(react$1.Box, { children: header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [header.column.getIsSorted() === false && (
|
|
626
|
-
// <UpDownIcon />
|
|
627
|
-
jsxRuntime.jsx(jsxRuntime.Fragment, {})), header.column.getIsSorted() === "asc" && (jsxRuntime.jsx(icons.ChevronUpIcon, {})), header.column.getIsSorted() === "desc" && (jsxRuntime.jsx(icons.ChevronDownIcon, {}))] })) })] }) }), jsxRuntime.jsx(react$1.Portal, { children: jsxRuntime.jsxs(react$1.MenuList, { children: [!header.column.getIsPinned() && (jsxRuntime.jsx(react$1.MenuItem, { icon: jsxRuntime.jsx(md.MdPushPin, {}), onClick: () => {
|
|
637
|
+
: reactTable.flexRender(header.column.columnDef.header, header.getContext()), jsxRuntime.jsx(react$1.Box, { children: header.column.getCanSort() && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [header.column.getIsSorted() === false && (jsxRuntime.jsx(jsxRuntime.Fragment, {})), header.column.getIsSorted() === "asc" && (jsxRuntime.jsx(icons.ChevronUpIcon, {})), header.column.getIsSorted() === "desc" && (jsxRuntime.jsx(icons.ChevronDownIcon, {}))] })) }), jsxRuntime.jsx(react$1.Box, { children: header.column.getIsFiltered() && jsxRuntime.jsx(md.MdFilterListAlt, {}) })] }) }), jsxRuntime.jsx(react$1.Portal, { children: jsxRuntime.jsxs(react$1.MenuList, { children: [!header.column.getIsPinned() && (jsxRuntime.jsx(react$1.MenuItem, { icon: jsxRuntime.jsx(md.MdPushPin, {}), onClick: () => {
|
|
628
638
|
header.column.pin("left");
|
|
629
639
|
}, children: "Pin Column" })), header.column.getIsPinned() && (jsxRuntime.jsx(react$1.MenuItem, { icon: jsxRuntime.jsx(md.MdCancel, {}), onClick: () => {
|
|
630
640
|
header.column.pin(false);
|
|
@@ -632,7 +642,7 @@ const TableHeader = ({ canResize, pinnedBgColor = { light: "gray.50", dark: "gra
|
|
|
632
642
|
header.column.toggleSorting();
|
|
633
643
|
}, children: "Toggle Sorting" }), header.column.getIsSorted() && (jsxRuntime.jsx(react$1.MenuItem, { icon: jsxRuntime.jsx(io.IoMdClose, {}), onClick: () => {
|
|
634
644
|
header.column.clearSorting();
|
|
635
|
-
}, children: "Clear Sorting" }))] }))] }) })] }),
|
|
645
|
+
}, children: "Clear Sorting" }))] }))] }) })] }), canResize && (jsxRuntime.jsx(react$1.Box, { borderRight: "0.2rem solid", borderRightColor: header.column.getIsResizing() ? "gray.700" : "transparent", position: "absolute", right: "0", top: "0", height: "100%", width: "5px", userSelect: "none", style: { touchAction: "none" }, _hover: {
|
|
636
646
|
borderRightColor: header.column.getIsResizing()
|
|
637
647
|
? "gray.700"
|
|
638
648
|
: "gray.400",
|
|
@@ -645,11 +655,13 @@ const TablePagination = ({}) => {
|
|
|
645
655
|
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, {}) })] }));
|
|
646
656
|
};
|
|
647
657
|
|
|
648
|
-
const SelectAllRowsToggle = () => {
|
|
658
|
+
const SelectAllRowsToggle = ({ selectAllIcon = jsxRuntime.jsx(md.MdOutlineChecklist, {}), clearAllIcon = jsxRuntime.jsx(md.MdClear, {}), selectAllText, clearAllText, }) => {
|
|
649
659
|
const { table } = react.useContext(TableContext);
|
|
650
|
-
return (jsxRuntime.
|
|
651
|
-
|
|
652
|
-
|
|
660
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!!selectAllText === false && (jsxRuntime.jsx(react$1.IconButton, { icon: table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, variant: "ghost", "aria-label": table.getIsAllRowsSelected() ? clearAllText : selectAllText, onClick: (event) => {
|
|
661
|
+
table.getToggleAllRowsSelectedHandler()(event);
|
|
662
|
+
} })), !!selectAllText !== false && (jsxRuntime.jsx(react$1.Button, { leftIcon: table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, variant: "ghost", onClick: (event) => {
|
|
663
|
+
table.getToggleAllRowsSelectedHandler()(event);
|
|
664
|
+
}, children: table.getIsAllRowsSelected() ? clearAllText : selectAllText }))] }));
|
|
653
665
|
};
|
|
654
666
|
|
|
655
667
|
const TableSelector = () => {
|
package/dist/index.mjs
CHANGED
|
@@ -3,9 +3,9 @@ import { makeStateUpdater, functionalUpdate, useReactTable, getCoreRowModel, get
|
|
|
3
3
|
import { createContext, useState, useEffect, useContext } from 'react';
|
|
4
4
|
import { rankItem } from '@tanstack/match-sorter-utils';
|
|
5
5
|
import axios from 'axios';
|
|
6
|
-
import {
|
|
6
|
+
import { IconButton, Button, Box, Text, Input, useDisclosure, Modal, ModalOverlay, ModalContent, ModalHeader, ModalCloseButton, ModalBody, Flex, ModalFooter, Switch, Menu, MenuButton, MenuList, MenuItem, Table as Table$1, FormLabel, Checkbox, Grid, Card, CardBody, Tfoot, Tr as Tr$1, Th, Thead, Portal, ButtonGroup, Icon, Tooltip } from '@chakra-ui/react';
|
|
7
7
|
import { AiOutlineColumnWidth } from 'react-icons/ai';
|
|
8
|
-
import { MdFilterAlt, MdArrowUpward, MdArrowDownward, MdOutlineMoveDown, MdOutlineSort, MdPushPin, MdCancel, MdSort,
|
|
8
|
+
import { MdFilterAlt, MdArrowUpward, MdArrowDownward, MdOutlineMoveDown, MdOutlineSort, MdFilterListAlt, MdPushPin, MdCancel, MdSort, MdFirstPage, MdArrowBack, MdArrowForward, MdLastPage, MdOutlineChecklist, MdClear } from 'react-icons/md';
|
|
9
9
|
import { UpDownIcon, ChevronDownIcon, ChevronUpIcon, CloseIcon } from '@chakra-ui/icons';
|
|
10
10
|
import { IoMdEye, IoMdClose, IoMdCheckbox } from 'react-icons/io';
|
|
11
11
|
import { Tbody, Tr, Td } from '@chakra-ui/table';
|
|
@@ -15,6 +15,7 @@ const TableContext = createContext({
|
|
|
15
15
|
refreshData: () => { },
|
|
16
16
|
globalFilter: "",
|
|
17
17
|
setGlobalFilter: () => { },
|
|
18
|
+
loading: false,
|
|
18
19
|
});
|
|
19
20
|
|
|
20
21
|
// Reference: https://tanstack.com/table/latest/docs/framework/react/examples/custom-features
|
|
@@ -126,7 +127,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
126
127
|
columnOrder,
|
|
127
128
|
globalFilter,
|
|
128
129
|
density: densityState,
|
|
129
|
-
rowSelection
|
|
130
|
+
rowSelection,
|
|
130
131
|
},
|
|
131
132
|
onColumnOrderChange: (state) => {
|
|
132
133
|
setColumnOrder(state);
|
|
@@ -163,6 +164,7 @@ const DataTable = ({ columns, data, enableRowSelection = true, enableMultiRowSel
|
|
|
163
164
|
},
|
|
164
165
|
globalFilter: globalFilter,
|
|
165
166
|
setGlobalFilter: setGlobalFilter,
|
|
167
|
+
loading: false,
|
|
166
168
|
}, children: children }));
|
|
167
169
|
};
|
|
168
170
|
|
|
@@ -198,7 +200,7 @@ const useDataFromUrl = ({ url, params = {}, defaultData, }) => {
|
|
|
198
200
|
const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiRowSelection = true, enableSubRowSelection = true, onRowSelect = () => { }, columnOrder: defaultColumnOrder = [], columnFilters: defaultColumnFilter = [], density = "sm", globalFilter: defaultGlobalFilter = "", pagination: defaultPagination = {
|
|
199
201
|
pageIndex: 0, //initial page index
|
|
200
202
|
pageSize: 10, //default page size
|
|
201
|
-
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {},
|
|
203
|
+
}, sorting: defaultSorting = [], rowSelection: defaultRowSelection = {}, children, }) => {
|
|
202
204
|
const [sorting, setSorting] = useState(defaultSorting);
|
|
203
205
|
const [columnFilters, setColumnFilters] = useState(defaultColumnFilter); // can set initial column filter state here
|
|
204
206
|
const [pagination, setPagination] = useState(defaultPagination);
|
|
@@ -284,31 +286,34 @@ const DataTableServer = ({ columns, url, enableRowSelection = true, enableMultiR
|
|
|
284
286
|
useEffect(() => {
|
|
285
287
|
onRowSelect(table.getState().rowSelection);
|
|
286
288
|
}, [table.getState().rowSelection]);
|
|
287
|
-
return (
|
|
289
|
+
return (jsx(TableContext.Provider, { value: {
|
|
288
290
|
table: { ...table },
|
|
289
291
|
refreshData: refreshData,
|
|
290
292
|
globalFilter,
|
|
291
293
|
setGlobalFilter,
|
|
292
|
-
|
|
294
|
+
loading: loading,
|
|
295
|
+
}, children: children }));
|
|
293
296
|
};
|
|
294
297
|
|
|
295
|
-
const DensityToggleButton = () => {
|
|
298
|
+
const DensityToggleButton = ({ text, icon = jsx(AiOutlineColumnWidth, {}), }) => {
|
|
296
299
|
const { table } = useContext(TableContext);
|
|
297
|
-
return (
|
|
298
|
-
|
|
299
|
-
|
|
300
|
+
return (jsxs(Fragment, { children: [!!text === false && (jsx(IconButton, { variant: "ghost", "aria-label": "Toggle Density", icon: icon, onClick: () => {
|
|
301
|
+
table.toggleDensity();
|
|
302
|
+
} })), !!text !== false && (jsx(Button, { leftIcon: icon, variant: "ghost", "aria-label": "Toggle Density", onClick: () => {
|
|
303
|
+
table.toggleDensity();
|
|
304
|
+
}, children: text }))] }));
|
|
300
305
|
};
|
|
301
306
|
|
|
302
|
-
const ResetFilteringButton = () => {
|
|
307
|
+
const ResetFilteringButton = ({ text = "Reset Filtering", }) => {
|
|
303
308
|
const { table } = useContext(TableContext);
|
|
304
309
|
return (jsx(Button, { onClick: () => {
|
|
305
310
|
table.resetColumnFilters();
|
|
306
|
-
}, children:
|
|
311
|
+
}, children: text }));
|
|
307
312
|
};
|
|
308
313
|
|
|
309
314
|
const useDataTable = () => {
|
|
310
|
-
const { table, refreshData, globalFilter, setGlobalFilter } = useContext(TableContext);
|
|
311
|
-
return { table, refreshData, globalFilter, setGlobalFilter };
|
|
315
|
+
const { table, refreshData, globalFilter, setGlobalFilter, loading } = useContext(TableContext);
|
|
316
|
+
return { table, refreshData, globalFilter, setGlobalFilter, loading };
|
|
312
317
|
};
|
|
313
318
|
|
|
314
319
|
const TableFilter = () => {
|
|
@@ -325,8 +330,9 @@ const TableFilter = () => {
|
|
|
325
330
|
}) }));
|
|
326
331
|
};
|
|
327
332
|
|
|
328
|
-
const EditFilterButton = () => {
|
|
329
|
-
|
|
333
|
+
const EditFilterButton = ({ text, title = "Edit Filter", closeText = "Close", resetText = "Reset", icon = jsx(MdFilterAlt, {}), }) => {
|
|
334
|
+
const filterModal = useDisclosure();
|
|
335
|
+
return (jsxs(Fragment, { children: [!!text === false && (jsx(IconButton, { icon: icon, variant: "ghost", onClick: filterModal.onOpen, "aria-label": "filter" })), !!text !== false && (jsx(Button, { leftIcon: icon, variant: "ghost", onClick: filterModal.onOpen, children: text })), jsxs(Modal, { isOpen: filterModal.isOpen, onClose: filterModal.onClose, size: ["full", "full", "md", "md"], children: [jsx(ModalOverlay, {}), jsxs(ModalContent, { children: [jsx(ModalHeader, { children: title }), jsx(ModalCloseButton, {}), jsx(ModalBody, { children: jsxs(Flex, { flexFlow: "column", gap: "1rem", children: [jsx(TableFilter, {}), jsx(ResetFilteringButton, { text: resetText })] }) }), jsx(ModalFooter, { children: jsx(Button, { onClick: filterModal.onClose, children: closeText }) })] })] })] }));
|
|
330
336
|
};
|
|
331
337
|
|
|
332
338
|
const ColumnOrderChanger = ({ columns }) => {
|
|
@@ -382,15 +388,16 @@ const TableOrderer = () => {
|
|
|
382
388
|
return (jsx(Fragment, { children: jsx(ColumnOrderChanger, { columns: table.getState().columnOrder }) }));
|
|
383
389
|
};
|
|
384
390
|
|
|
385
|
-
const EditOrderButton = () => {
|
|
386
|
-
|
|
391
|
+
const EditOrderButton = ({ text, icon = jsx(MdOutlineMoveDown, {}), title = "Change Order", }) => {
|
|
392
|
+
const orderModal = useDisclosure();
|
|
393
|
+
return (jsxs(Fragment, { children: [!!text === false && (jsx(IconButton, { icon: icon, variant: "ghost", onClick: orderModal.onOpen, "aria-label": "change order" })), !!text !== false && (jsx(Button, { leftIcon: icon, variant: "ghost", onClick: orderModal.onOpen, children: text })), jsxs(Modal, { isOpen: orderModal.isOpen, onClose: orderModal.onClose, size: ["full", "full", "md", "md"], children: [jsx(ModalOverlay, {}), jsxs(ModalContent, { padding: "0 0 1rem 0", children: [jsx(ModalHeader, { children: title }), jsx(ModalCloseButton, {}), jsx(ModalBody, { children: jsx(Flex, { flexFlow: "column", gap: "0.25rem", children: jsx(TableOrderer, {}) }) })] })] })] }));
|
|
387
394
|
};
|
|
388
395
|
|
|
389
|
-
const ResetSortingButton = () => {
|
|
396
|
+
const ResetSortingButton = ({ text = "Reset Sorting", }) => {
|
|
390
397
|
const { table } = useContext(TableContext);
|
|
391
398
|
return (jsx(Button, { onClick: () => {
|
|
392
399
|
table.resetSorting();
|
|
393
|
-
}, children:
|
|
400
|
+
}, children: text }));
|
|
394
401
|
};
|
|
395
402
|
|
|
396
403
|
const TableSorter = () => {
|
|
@@ -413,8 +420,9 @@ const TableSorter = () => {
|
|
|
413
420
|
}) }))) }));
|
|
414
421
|
};
|
|
415
422
|
|
|
416
|
-
const EditSortingButton = () => {
|
|
417
|
-
|
|
423
|
+
const EditSortingButton = ({ text, icon = jsx(MdOutlineSort, {}), title = "Edit Sorting", }) => {
|
|
424
|
+
const sortingModal = useDisclosure();
|
|
425
|
+
return (jsxs(Fragment, { children: [!!text === false && (jsx(IconButton, { icon: icon, variant: "ghost", onClick: sortingModal.onOpen, "aria-label": "change sorting" })), !!text !== false && (jsx(Button, { leftIcon: icon, variant: "ghost", onClick: sortingModal.onOpen, children: text })), jsxs(Modal, { isOpen: sortingModal.isOpen, onClose: sortingModal.onClose, size: ["full", "full", "md", "md"], children: [jsx(ModalOverlay, {}), jsxs(ModalContent, { padding: "0 0 1rem 0", children: [jsx(ModalHeader, { children: title }), jsx(ModalCloseButton, {}), jsx(ModalBody, { children: jsxs(Flex, { flexFlow: "column", gap: "0.25rem", children: [jsx(TableSorter, {}), jsx(ResetSortingButton, {})] }) })] })] })] }));
|
|
418
426
|
};
|
|
419
427
|
|
|
420
428
|
const TableViewer = () => {
|
|
@@ -427,8 +435,9 @@ const TableViewer = () => {
|
|
|
427
435
|
}) }));
|
|
428
436
|
};
|
|
429
437
|
|
|
430
|
-
const EditViewButton = () => {
|
|
431
|
-
|
|
438
|
+
const EditViewButton = ({ text, icon = jsx(IoMdEye, {}), title = "Edit View", }) => {
|
|
439
|
+
const viewModel = useDisclosure();
|
|
440
|
+
return (jsxs(Fragment, { children: [!!text === false && (jsx(IconButton, { icon: icon, variant: "ghost", onClick: viewModel.onOpen, "aria-label": "change sorting" })), !!text !== false && (jsx(Button, { leftIcon: icon, variant: "ghost", onClick: viewModel.onOpen, children: text })), jsxs(Modal, { isOpen: viewModel.isOpen, onClose: viewModel.onClose, size: ["full", "full", "md", "md"], children: [jsx(ModalOverlay, {}), jsxs(ModalContent, { padding: "0 0 1rem 0", children: [jsx(ModalHeader, { children: title }), jsx(ModalCloseButton, {}), jsx(ModalBody, { children: jsx(TableViewer, {}) })] })] })] }));
|
|
432
441
|
};
|
|
433
442
|
|
|
434
443
|
const GlobalFilter = () => {
|
|
@@ -445,16 +454,19 @@ const PageSizeControl = ({ pageSizes = [10, 20, 30, 40, 50], }) => {
|
|
|
445
454
|
}, children: pageSize }))) })] }) }));
|
|
446
455
|
};
|
|
447
456
|
|
|
448
|
-
const ResetSelectionButton = () => {
|
|
457
|
+
const ResetSelectionButton = ({ text = "Reset Selection", }) => {
|
|
449
458
|
const { table } = useContext(TableContext);
|
|
450
459
|
return (jsx(Button, { onClick: () => {
|
|
451
460
|
table.resetRowSelection();
|
|
452
|
-
}, children:
|
|
461
|
+
}, children: text }));
|
|
453
462
|
};
|
|
454
463
|
|
|
455
|
-
const Table = ({ children, ...props }) => {
|
|
456
|
-
const { table } = useDataTable();
|
|
457
|
-
|
|
464
|
+
const Table = ({ children, showLoading = false, loadingComponent = jsx(Fragment, { children: "Loading..." }), ...props }) => {
|
|
465
|
+
const { table, loading } = useDataTable();
|
|
466
|
+
if (showLoading) {
|
|
467
|
+
return (jsxs(Fragment, { children: [loading && loadingComponent, !loading && (jsx(Table$1, { width: table.getCenterTotalSize(), overflowX: "auto", ...props, children: children }))] }));
|
|
468
|
+
}
|
|
469
|
+
return (jsx(Fragment, { children: jsx(Table$1, { width: table.getCenterTotalSize(), overflowX: "auto", ...props, children: children }) }));
|
|
458
470
|
};
|
|
459
471
|
|
|
460
472
|
const TableBody = ({ pinnedBgColor = { light: "gray.50", dark: "gray.700" }, }) => {
|
|
@@ -620,9 +632,7 @@ const TableHeader = ({ canResize, pinnedBgColor = { light: "gray.50", dark: "gra
|
|
|
620
632
|
// styling resize and pinning end
|
|
621
633
|
display: "grid", children: [jsxs(Menu, { children: [jsx(MenuButton, { as: Box, padding: `${table.getDensityValue()}px`, display: "flex", alignItems: "center", justifyContent: "start", borderRadius: "0rem", _hover: { backgroundColor: "gray.100" }, children: jsxs(Flex, { gap: "0.5rem", alignItems: "center", children: [header.isPlaceholder
|
|
622
634
|
? null
|
|
623
|
-
: flexRender(header.column.columnDef.header, header.getContext()), jsx(Box, { children: header.column.getCanSort() && (jsxs(Fragment, { children: [header.column.getIsSorted() === false && (
|
|
624
|
-
// <UpDownIcon />
|
|
625
|
-
jsx(Fragment, {})), header.column.getIsSorted() === "asc" && (jsx(ChevronUpIcon, {})), header.column.getIsSorted() === "desc" && (jsx(ChevronDownIcon, {}))] })) })] }) }), jsx(Portal, { children: jsxs(MenuList, { children: [!header.column.getIsPinned() && (jsx(MenuItem, { icon: jsx(MdPushPin, {}), onClick: () => {
|
|
635
|
+
: flexRender(header.column.columnDef.header, header.getContext()), jsx(Box, { children: header.column.getCanSort() && (jsxs(Fragment, { children: [header.column.getIsSorted() === false && (jsx(Fragment, {})), header.column.getIsSorted() === "asc" && (jsx(ChevronUpIcon, {})), header.column.getIsSorted() === "desc" && (jsx(ChevronDownIcon, {}))] })) }), jsx(Box, { children: header.column.getIsFiltered() && jsx(MdFilterListAlt, {}) })] }) }), jsx(Portal, { children: jsxs(MenuList, { children: [!header.column.getIsPinned() && (jsx(MenuItem, { icon: jsx(MdPushPin, {}), onClick: () => {
|
|
626
636
|
header.column.pin("left");
|
|
627
637
|
}, children: "Pin Column" })), header.column.getIsPinned() && (jsx(MenuItem, { icon: jsx(MdCancel, {}), onClick: () => {
|
|
628
638
|
header.column.pin(false);
|
|
@@ -630,7 +640,7 @@ const TableHeader = ({ canResize, pinnedBgColor = { light: "gray.50", dark: "gra
|
|
|
630
640
|
header.column.toggleSorting();
|
|
631
641
|
}, children: "Toggle Sorting" }), header.column.getIsSorted() && (jsx(MenuItem, { icon: jsx(IoMdClose, {}), onClick: () => {
|
|
632
642
|
header.column.clearSorting();
|
|
633
|
-
}, children: "Clear Sorting" }))] }))] }) })] }),
|
|
643
|
+
}, children: "Clear Sorting" }))] }))] }) })] }), canResize && (jsx(Box, { borderRight: "0.2rem solid", borderRightColor: header.column.getIsResizing() ? "gray.700" : "transparent", position: "absolute", right: "0", top: "0", height: "100%", width: "5px", userSelect: "none", style: { touchAction: "none" }, _hover: {
|
|
634
644
|
borderRightColor: header.column.getIsResizing()
|
|
635
645
|
? "gray.700"
|
|
636
646
|
: "gray.400",
|
|
@@ -643,11 +653,13 @@ const TablePagination = ({}) => {
|
|
|
643
653
|
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, {}) })] }));
|
|
644
654
|
};
|
|
645
655
|
|
|
646
|
-
const SelectAllRowsToggle = () => {
|
|
656
|
+
const SelectAllRowsToggle = ({ selectAllIcon = jsx(MdOutlineChecklist, {}), clearAllIcon = jsx(MdClear, {}), selectAllText, clearAllText, }) => {
|
|
647
657
|
const { table } = useContext(TableContext);
|
|
648
|
-
return (
|
|
649
|
-
|
|
650
|
-
|
|
658
|
+
return (jsxs(Fragment, { children: [!!selectAllText === false && (jsx(IconButton, { icon: table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, variant: "ghost", "aria-label": table.getIsAllRowsSelected() ? clearAllText : selectAllText, onClick: (event) => {
|
|
659
|
+
table.getToggleAllRowsSelectedHandler()(event);
|
|
660
|
+
} })), !!selectAllText !== false && (jsx(Button, { leftIcon: table.getIsAllRowsSelected() ? clearAllIcon : selectAllIcon, variant: "ghost", onClick: (event) => {
|
|
661
|
+
table.getToggleAllRowsSelectedHandler()(event);
|
|
662
|
+
}, children: table.getIsAllRowsSelected() ? clearAllText : selectAllText }))] }));
|
|
651
663
|
};
|
|
652
664
|
|
|
653
665
|
const TableSelector = () => {
|
|
@@ -34,4 +34,4 @@ declare module "@tanstack/react-table" {
|
|
|
34
34
|
displayName: string;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
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,
|
|
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, children, }: DataTableServerProps<TData>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface DensityToggleButtonProps {
|
|
3
|
+
icon?: React.ReactElement;
|
|
4
|
+
text?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const DensityToggleButton: ({ text, icon, }: DensityToggleButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface EditFilterButtonProps {
|
|
3
|
+
text?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
closeText?: string;
|
|
6
|
+
resetText?: string;
|
|
7
|
+
icon?: React.ReactElement;
|
|
8
|
+
}
|
|
9
|
+
export declare const EditFilterButton: ({ text, title, closeText, resetText, icon, }: EditFilterButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface EditOrderButtonProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
icon?: React.ReactElement;
|
|
5
|
+
text?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const EditOrderButton: ({ text, icon, title, }: EditOrderButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface EditSortingButtonProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
icon?: React.ReactElement;
|
|
5
|
+
text?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const EditSortingButton: ({ text, icon, title, }: EditSortingButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface EditViewButtonProps {
|
|
3
|
+
text?: string;
|
|
4
|
+
icon?: React.ReactElement;
|
|
5
|
+
title?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const EditViewButton: ({ text, icon, title, }: EditViewButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface ResetFilteringButtonProps {
|
|
2
|
+
text?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare const ResetFilteringButton: ({ text, }: ResetFilteringButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface ResetSelectionButtonProps {
|
|
2
|
+
text?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare const ResetSelectionButton: ({ text, }: ResetSelectionButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface ResetSortingButtonProps {
|
|
2
|
+
text?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare const ResetSortingButton: ({ text, }: ResetSortingButtonProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface SelectAllRowsToggleProps {
|
|
3
|
+
selectAllIcon: React.ReactElement;
|
|
4
|
+
clearAllIcon: React.ReactElement;
|
|
5
|
+
selectAllText: string;
|
|
6
|
+
clearAllText: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const SelectAllRowsToggle: ({ selectAllIcon, clearAllIcon, selectAllText, clearAllText, }: SelectAllRowsToggleProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
2
|
export interface TableProps {
|
|
3
|
+
showLoading?: boolean;
|
|
4
|
+
loadingComponent?: JSX.Element;
|
|
3
5
|
children: ReactNode;
|
|
4
6
|
}
|
|
5
|
-
export declare const Table: ({ children, ...props }: TableProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const Table: ({ children, showLoading, loadingComponent, ...props }: TableProps) => import("react/jsx-runtime").JSX.Element;
|