@okta/odyssey-react-mui 1.6.20 → 1.6.21

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.
Files changed (75) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/Button.js +2 -2
  3. package/dist/Button.js.map +1 -1
  4. package/dist/MenuButton.js +16 -2
  5. package/dist/MenuButton.js.map +1 -1
  6. package/dist/MenuContext.js +2 -1
  7. package/dist/MenuContext.js.map +1 -1
  8. package/dist/MenuItem.js +6 -3
  9. package/dist/MenuItem.js.map +1 -1
  10. package/dist/SearchField.js.map +1 -1
  11. package/dist/icons.generated/ArrowBottom.js +33 -0
  12. package/dist/icons.generated/ArrowBottom.js.map +1 -0
  13. package/dist/icons.generated/ArrowTop.js +33 -0
  14. package/dist/icons.generated/ArrowTop.js.map +1 -0
  15. package/dist/icons.generated/index.js +2 -0
  16. package/dist/icons.generated/index.js.map +1 -1
  17. package/dist/labs/DataFilters.js +366 -0
  18. package/dist/labs/DataFilters.js.map +1 -0
  19. package/dist/labs/DataTable.js +366 -0
  20. package/dist/labs/DataTable.js.map +1 -0
  21. package/dist/labs/DataTablePagination.js +74 -0
  22. package/dist/labs/DataTablePagination.js.map +1 -0
  23. package/dist/labs/PaginatedTable.js +9 -6
  24. package/dist/labs/PaginatedTable.js.map +1 -1
  25. package/dist/labs/StaticTable.js +8 -5
  26. package/dist/labs/StaticTable.js.map +1 -1
  27. package/dist/labs/index.js +4 -1
  28. package/dist/labs/index.js.map +1 -1
  29. package/dist/labs/materialReactTableTypes.js.map +1 -1
  30. package/dist/src/MenuButton.d.ts +12 -2
  31. package/dist/src/MenuButton.d.ts.map +1 -1
  32. package/dist/src/MenuContext.d.ts +1 -0
  33. package/dist/src/MenuContext.d.ts.map +1 -1
  34. package/dist/src/MenuItem.d.ts.map +1 -1
  35. package/dist/src/SearchField.d.ts +16 -0
  36. package/dist/src/SearchField.d.ts.map +1 -1
  37. package/dist/src/icons.generated/ArrowBottom.d.ts +16 -0
  38. package/dist/src/icons.generated/ArrowBottom.d.ts.map +1 -0
  39. package/dist/src/icons.generated/ArrowTop.d.ts +16 -0
  40. package/dist/src/icons.generated/ArrowTop.d.ts.map +1 -0
  41. package/dist/src/icons.generated/index.d.ts +2 -0
  42. package/dist/src/icons.generated/index.d.ts.map +1 -1
  43. package/dist/src/labs/DataFilters.d.ts +85 -0
  44. package/dist/src/labs/DataFilters.d.ts.map +1 -0
  45. package/dist/src/labs/DataTable.d.ts +193 -0
  46. package/dist/src/labs/DataTable.d.ts.map +1 -0
  47. package/dist/src/labs/DataTablePagination.d.ts +25 -0
  48. package/dist/src/labs/DataTablePagination.d.ts.map +1 -0
  49. package/dist/src/labs/PaginatedTable.d.ts.map +1 -1
  50. package/dist/src/labs/StaticTable.d.ts.map +1 -1
  51. package/dist/src/labs/index.d.ts +4 -2
  52. package/dist/src/labs/index.d.ts.map +1 -1
  53. package/dist/src/labs/materialReactTableTypes.d.ts +1 -1
  54. package/dist/src/labs/materialReactTableTypes.d.ts.map +1 -1
  55. package/dist/src/theme/components.d.ts.map +1 -1
  56. package/dist/theme/components.js +137 -64
  57. package/dist/theme/components.js.map +1 -1
  58. package/dist/tsconfig.production.tsbuildinfo +1 -1
  59. package/package.json +4 -4
  60. package/src/Button.tsx +2 -2
  61. package/src/MenuButton.tsx +50 -8
  62. package/src/MenuContext.ts +2 -0
  63. package/src/MenuItem.tsx +5 -3
  64. package/src/SearchField.tsx +8 -0
  65. package/src/icons.generated/ArrowBottom.tsx +43 -0
  66. package/src/icons.generated/ArrowTop.tsx +43 -0
  67. package/src/icons.generated/index.ts +2 -0
  68. package/src/labs/DataFilters.tsx +601 -0
  69. package/src/labs/DataTable.tsx +681 -0
  70. package/src/labs/DataTablePagination.tsx +88 -0
  71. package/src/labs/PaginatedTable.tsx +35 -33
  72. package/src/labs/StaticTable.tsx +26 -29
  73. package/src/labs/index.ts +6 -3
  74. package/src/labs/{materialReactTableTypes.ts → materialReactTableTypes.tsx} +1 -1
  75. package/src/theme/components.tsx +154 -62
@@ -0,0 +1,366 @@
1
+ import _Checkbox from "@mui/material/Checkbox";
2
+ /*!
3
+ * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
4
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
5
+ *
6
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
7
+ * Unless required by applicable law or agreed to in writing, software
8
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ *
11
+ * See the License for the specific language governing permissions and limitations under the License.
12
+ */
13
+
14
+ import { useMaterialReactTable, MRT_TableContainer } from "material-react-table";
15
+ import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
16
+ import { ArrowTopIcon, ArrowBottomIcon, ArrowDownIcon, ArrowUpIcon, DragIndicatorIcon, ListIcon, ShowIcon, MoreIcon } from "../icons.generated/index.js";
17
+ import { DataTablePagination } from "./DataTablePagination.js";
18
+ import { DataFilters } from "./DataFilters.js";
19
+ import { Box } from "../Box.js";
20
+ import { MenuButton, MenuItem } from "../index.js";
21
+ import { ArrowUnsortedIcon } from "../icons.generated/index.js";
22
+ import { jsx as _jsx } from "react/jsx-runtime";
23
+ import { Fragment as _Fragment } from "react/jsx-runtime";
24
+ import { jsxs as _jsxs } from "react/jsx-runtime";
25
+ export const densityValues = ["comfortable", "spacious", "compact"];
26
+ const DataTable = _ref => {
27
+ let {
28
+ columns,
29
+ data: dataProp,
30
+ getRowId,
31
+ page: pageProp = 1,
32
+ initialDensity = densityValues[0],
33
+ resultsPerPage: resultsPerPageProp = 20,
34
+ fetchDataFn,
35
+ reorderDataFn,
36
+ totalRows,
37
+ hasSearchSubmitButton,
38
+ paginationType = "paged",
39
+ onRowSelectionChange,
40
+ rowActionButtons,
41
+ rowActionMenuItems,
42
+ hasChangeableDensity,
43
+ hasColumnResizing,
44
+ hasColumnVisibility,
45
+ hasFilters,
46
+ hasPagination,
47
+ hasRowReordering,
48
+ hasRowSelection,
49
+ hasSearch,
50
+ hasSorting
51
+ } = _ref;
52
+ const [draggingRow, setDraggingRow] = useState();
53
+ const [showSkeletons, setShowSkeletons] = useState(true);
54
+ const [data, setData] = useState(dataProp);
55
+ const [page, setPage] = useState(pageProp);
56
+ const [resultsPerPage, setResultsPerPage] = useState(resultsPerPageProp);
57
+ const [rowSelection, setRowSelection] = useState({});
58
+ const [sorting, setSorting] = useState([]);
59
+ const [density, setDensity] = useState(initialDensity);
60
+ const initialColumnVisibility = useMemo(() => {
61
+ return columns.reduce((acc, column) => {
62
+ acc[column.accessorKey] = true;
63
+ return acc;
64
+ }, {});
65
+ }, [columns]);
66
+ const [columnVisibility, setColumnVisibility] = useState(initialColumnVisibility);
67
+ const [globalFilter, setGlobalFilter] = useState("");
68
+ const [filters, setFilters] = useState();
69
+ const refreshData = useCallback(async () => {
70
+ setShowSkeletons(true);
71
+ try {
72
+ const newData = await fetchDataFn({
73
+ page: page,
74
+ resultsPerPage: resultsPerPage,
75
+ sort: sorting,
76
+ search: globalFilter,
77
+ filters: filters
78
+ });
79
+ setData(newData);
80
+ setShowSkeletons(false);
81
+ } catch (error) {
82
+ console.log(error);
83
+ setShowSkeletons(false);
84
+ }
85
+ }, [page, resultsPerPage, sorting, globalFilter, filters, fetchDataFn]);
86
+ const handleSortingChange = useCallback(updater => {
87
+ setSorting(prevSorting => updater instanceof Function ? updater(prevSorting) : sorting);
88
+ }, [sorting]);
89
+ const handleColumnVisibility = useCallback(columnId => {
90
+ setColumnVisibility(prevVisibility => ({
91
+ ...prevVisibility,
92
+ [columnId]: !columnVisibility[columnId]
93
+ }));
94
+ }, [columnVisibility]);
95
+ const handleSearch = useCallback(value => {
96
+ setGlobalFilter(value);
97
+ }, []);
98
+ const handleFilters = useCallback(updatedFilters => {
99
+ setFilters(updatedFilters);
100
+ }, []);
101
+ const handleRowSelectionChange = useCallback(updater => {
102
+ setRowSelection(prevRowSelection => updater instanceof Function ? updater(prevRowSelection) : rowSelection);
103
+ }, [rowSelection]);
104
+ const handleReordering = useCallback(_ref2 => {
105
+ let {
106
+ rowId,
107
+ newIndex
108
+ } = _ref2;
109
+ if (newIndex < 0) {
110
+ return;
111
+ }
112
+ if (totalRows && newIndex > totalRows) {
113
+ return;
114
+ }
115
+ reorderDataFn?.({
116
+ rowId,
117
+ newIndex
118
+ });
119
+ refreshData();
120
+ }, [totalRows, reorderDataFn, refreshData]);
121
+ useEffect(() => {
122
+ setShowSkeletons(false);
123
+ }, [data]);
124
+ useEffect(() => {
125
+ refreshData();
126
+ }, [refreshData, page, resultsPerPage, sorting, globalFilter, filters]);
127
+ useEffect(() => {
128
+ onRowSelectionChange?.(rowSelection);
129
+ }, [rowSelection, onRowSelectionChange]);
130
+ const rowVirtualizerInstanceRef = useRef(null);
131
+ const table = useMaterialReactTable({
132
+ columns: columns,
133
+ data: data,
134
+ state: {
135
+ density,
136
+ sorting,
137
+ globalFilter,
138
+ columnVisibility,
139
+ rowSelection,
140
+ showSkeletons
141
+ },
142
+ rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,
143
+ rowVirtualizerOptions: {
144
+ overscan: 4
145
+ },
146
+ enableRowVirtualization: paginationType === "loadMore" || resultsPerPage > 50,
147
+ enableColumnResizing: hasColumnResizing,
148
+ enableDensityToggle: false,
149
+ enableFullScreenToggle: false,
150
+ enablePagination: false,
151
+ enableRowSelection: hasRowSelection,
152
+ enableFilters: false,
153
+ enableHiding: false,
154
+ enableRowOrdering: hasRowReordering,
155
+ enableRowDragging: hasRowReordering,
156
+ enableSorting: hasSorting,
157
+ selectAllMode: "all",
158
+ enableColumnActions: false,
159
+ layoutMode: "grid-no-grow",
160
+ displayColumnDefOptions: {
161
+ "mrt-row-actions": {
162
+ muiTableBodyCellProps: {
163
+ align: "right",
164
+ sx: {
165
+ overflow: "visible",
166
+ width: "unset"
167
+ }
168
+ },
169
+ muiTableHeadCellProps: {
170
+ align: "right",
171
+ sx: {
172
+ width: "unset"
173
+ }
174
+ }
175
+ },
176
+ "mrt-row-drag": {
177
+ header: "",
178
+ muiTableBodyCellProps: {
179
+ sx: {
180
+ minWidth: 0,
181
+ width: 32
182
+ }
183
+ },
184
+ muiTableHeadCellProps: {
185
+ sx: {
186
+ minWidth: 0,
187
+ width: 32
188
+ }
189
+ }
190
+ }
191
+ },
192
+ enableGlobalFilter: false,
193
+ manualFiltering: true,
194
+ manualSorting: true,
195
+ getRowId: getRowId,
196
+ icons: {
197
+ ArrowDownwardIcon: ArrowDownIcon,
198
+ DragHandleIcon: DragIndicatorIcon,
199
+ SyncAltIcon: ArrowUnsortedIcon
200
+ },
201
+ onSortingChange: handleSortingChange,
202
+ onRowSelectionChange: handleRowSelectionChange,
203
+ enableRowActions: hasRowReordering || rowActionButtons || rowActionMenuItems ? true : false,
204
+ positionActionsColumn: "last",
205
+ muiTableHeadCellProps: _ref3 => {
206
+ let {
207
+ column
208
+ } = _ref3;
209
+ return {
210
+ className: sorting.find(item => item.id === column.id) ? "isSorted" : "isUnsorted"
211
+ };
212
+ },
213
+ muiTableBodyRowProps: _ref4 => {
214
+ let {
215
+ table,
216
+ row
217
+ } = _ref4;
218
+ return {
219
+ className: draggingRow?.id === row.id && table.getState().hoveredRow?.id !== row.id ? "isDragging" : table.getState().hoveredRow?.id === row.id && draggingRow?.id !== row.id ? "isDragTarget" : draggingRow?.id === row.id && table.getState().hoveredRow?.id === row.id ? "isDragging isDragTarget" : undefined
220
+ };
221
+ },
222
+ muiRowDragHandleProps: {
223
+ tabIndex: -1,
224
+ onDragEnd: () => {
225
+ const cols = table.getAllColumns();
226
+ cols[0].toggleVisibility();
227
+ const {
228
+ draggingRow,
229
+ hoveredRow
230
+ } = table.getState();
231
+ if (draggingRow) {
232
+ handleReordering({
233
+ rowId: draggingRow.id,
234
+ newIndex: hoveredRow.index
235
+ });
236
+ }
237
+ setDraggingRow(null);
238
+ },
239
+ onDragCapture: () => {
240
+ if (!draggingRow && table.getState().draggingRow?.id) {
241
+ setDraggingRow(table.getState().draggingRow);
242
+ }
243
+ }
244
+ },
245
+ renderRowActions: _ref5 => {
246
+ let {
247
+ row
248
+ } = _ref5;
249
+ const currentIndex = row.index + (page - 1) * resultsPerPage;
250
+ return _jsxs(Box, {
251
+ sx: {
252
+ display: "flex"
253
+ },
254
+ children: [rowActionButtons?.(row), (rowActionMenuItems || hasRowReordering) && _jsxs(MenuButton, {
255
+ endIcon: _jsx(MoreIcon, {}),
256
+ size: "small",
257
+ buttonVariant: "floating",
258
+ ariaLabel: "More actions",
259
+ menuAlignment: "right",
260
+ children: [rowActionMenuItems && _jsxs(_Fragment, {
261
+ children: [rowActionMenuItems(row), _jsx("hr", {})]
262
+ }), _jsxs(MenuItem, {
263
+ isDisabled: currentIndex <= 0,
264
+ onClick: () => handleReordering({
265
+ rowId: row.id,
266
+ newIndex: 0
267
+ }),
268
+ children: [_jsx(ArrowTopIcon, {}), " Bring to front"]
269
+ }), _jsxs(MenuItem, {
270
+ isDisabled: currentIndex <= 0,
271
+ onClick: () => handleReordering({
272
+ rowId: row.id,
273
+ newIndex: currentIndex <= 0 ? 0 : currentIndex - 1
274
+ }),
275
+ children: [_jsx(ArrowUpIcon, {}), " Bring forward"]
276
+ }), _jsxs(MenuItem, {
277
+ isDisabled: totalRows ? currentIndex >= totalRows - 1 : false,
278
+ onClick: () => handleReordering({
279
+ rowId: row.id,
280
+ newIndex: currentIndex + 1
281
+ }),
282
+ children: [_jsx(ArrowDownIcon, {}), " Send backward"]
283
+ }), _jsx(_Fragment, {
284
+ children: totalRows && _jsxs(MenuItem, {
285
+ isDisabled: currentIndex >= totalRows - 1,
286
+ onClick: () => handleReordering({
287
+ rowId: row.id,
288
+ newIndex: totalRows
289
+ }),
290
+ children: [_jsx(ArrowBottomIcon, {}), " Send to back"]
291
+ })
292
+ })]
293
+ })]
294
+ });
295
+ }
296
+ });
297
+ const tableSettings = useMemo(() => _jsxs(_Fragment, {
298
+ children: [hasChangeableDensity && _jsx(MenuButton, {
299
+ endIcon: _jsx(ListIcon, {}),
300
+ ariaLabel: "Table density",
301
+ menuAlignment: "right",
302
+ shouldCloseOnSelect: false,
303
+ children: _jsx(_Fragment, {
304
+ children: densityValues.map(value => _jsx(MenuItem, {
305
+ isSelected: density === value,
306
+ onClick: () => setDensity(value),
307
+ children: `${value.charAt(0).toUpperCase()}${value.slice(1)}`
308
+ }, value))
309
+ })
310
+ }), hasColumnVisibility && _jsx(MenuButton, {
311
+ endIcon: _jsx(ShowIcon, {}),
312
+ ariaLabel: "Show/hide columns",
313
+ menuAlignment: "right",
314
+ shouldCloseOnSelect: false,
315
+ children: _jsx(_Fragment, {
316
+ children: columns.filter(column => column.enableHiding !== false).map(column => _jsxs(MenuItem, {
317
+ onClick: () => handleColumnVisibility(column.accessorKey),
318
+ children: [_jsx(_Checkbox, {
319
+ checked: columnVisibility[column.accessorKey] !== false
320
+ }), column.header]
321
+ }, column.accessorKey))
322
+ })
323
+ })]
324
+ }), [density, columnVisibility, columns, hasChangeableDensity]);
325
+ return _jsxs(Box, {
326
+ sx: {
327
+ display: "flex",
328
+ flexDirection: "column",
329
+ gap: 4
330
+ },
331
+ children: [_jsx(DataFilters, {
332
+ onChangeSearch: hasSearch ? handleSearch : undefined,
333
+ onChangeFilters: handleFilters,
334
+ hasSearchSubmitButton: hasSearchSubmitButton,
335
+ additionalActions: tableSettings,
336
+ filters: hasFilters ? columns.filter(column => column.enableColumnFilter !== false).map(column => {
337
+ return {
338
+ id: column.accessorKey,
339
+ label: column.header,
340
+ variant: column.filterVariant ?? "text",
341
+ options: column.filterSelectOptions
342
+ };
343
+ }) : undefined
344
+ }), _jsx(MRT_TableContainer, {
345
+ table: table
346
+ }), hasPagination && _jsx(DataTablePagination, {
347
+ paginationType: paginationType,
348
+ currentNumberOfResults: data.length,
349
+ currentPage: page,
350
+ isPreviousButtonDisabled: page <= 1,
351
+ isNextButtonDisabled: false,
352
+ onClickPrevious: () => setPage(page - 1),
353
+ onClickNext: () => {
354
+ if (paginationType === "loadMore") {
355
+ setResultsPerPage(resultsPerPage + resultsPerPageProp);
356
+ } else {
357
+ setPage(page + 1);
358
+ }
359
+ }
360
+ })]
361
+ });
362
+ };
363
+ const MemoizedDataTable = memo(DataTable);
364
+ MemoizedDataTable.displayName = "DataTable";
365
+ export { MemoizedDataTable as DataTable };
366
+ //# sourceMappingURL=DataTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.js","names":["useMaterialReactTable","MRT_TableContainer","memo","useCallback","useEffect","useMemo","useRef","useState","ArrowTopIcon","ArrowBottomIcon","ArrowDownIcon","ArrowUpIcon","DragIndicatorIcon","ListIcon","ShowIcon","MoreIcon","DataTablePagination","DataFilters","Box","MenuButton","MenuItem","ArrowUnsortedIcon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","densityValues","DataTable","_ref","columns","data","dataProp","getRowId","page","pageProp","initialDensity","resultsPerPage","resultsPerPageProp","fetchDataFn","reorderDataFn","totalRows","hasSearchSubmitButton","paginationType","onRowSelectionChange","rowActionButtons","rowActionMenuItems","hasChangeableDensity","hasColumnResizing","hasColumnVisibility","hasFilters","hasPagination","hasRowReordering","hasRowSelection","hasSearch","hasSorting","draggingRow","setDraggingRow","showSkeletons","setShowSkeletons","setData","setPage","setResultsPerPage","rowSelection","setRowSelection","sorting","setSorting","density","setDensity","initialColumnVisibility","reduce","acc","column","accessorKey","columnVisibility","setColumnVisibility","globalFilter","setGlobalFilter","filters","setFilters","refreshData","newData","sort","search","error","console","log","handleSortingChange","updater","prevSorting","Function","handleColumnVisibility","columnId","prevVisibility","handleSearch","value","handleFilters","updatedFilters","handleRowSelectionChange","prevRowSelection","handleReordering","_ref2","rowId","newIndex","rowVirtualizerInstanceRef","table","state","rowVirtualizerOptions","overscan","enableRowVirtualization","enableColumnResizing","enableDensityToggle","enableFullScreenToggle","enablePagination","enableRowSelection","enableFilters","enableHiding","enableRowOrdering","enableRowDragging","enableSorting","selectAllMode","enableColumnActions","layoutMode","displayColumnDefOptions","muiTableBodyCellProps","align","sx","overflow","width","muiTableHeadCellProps","header","minWidth","enableGlobalFilter","manualFiltering","manualSorting","icons","ArrowDownwardIcon","DragHandleIcon","SyncAltIcon","onSortingChange","enableRowActions","positionActionsColumn","_ref3","className","find","item","id","muiTableBodyRowProps","_ref4","row","getState","hoveredRow","undefined","muiRowDragHandleProps","tabIndex","onDragEnd","cols","getAllColumns","toggleVisibility","index","onDragCapture","renderRowActions","_ref5","currentIndex","display","children","endIcon","size","buttonVariant","ariaLabel","menuAlignment","isDisabled","onClick","tableSettings","shouldCloseOnSelect","map","isSelected","charAt","toUpperCase","slice","filter","_Checkbox","checked","flexDirection","gap","onChangeSearch","onChangeFilters","additionalActions","enableColumnFilter","label","variant","filterVariant","options","filterSelectOptions","currentNumberOfResults","length","currentPage","isPreviousButtonDisabled","isNextButtonDisabled","onClickPrevious","onClickNext","MemoizedDataTable","displayName"],"sources":["../../src/labs/DataTable.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport {\n MRT_Updater,\n MRT_Virtualizer,\n MRT_RowData,\n MRT_TableOptions,\n useMaterialReactTable,\n MRT_SortingState,\n MRT_DensityState,\n MRT_VisibilityState,\n MRT_TableContainer,\n MRT_RowSelectionState,\n MRT_Row,\n MRT_ColumnDef,\n} from \"material-react-table\";\nimport {\n Fragment,\n ReactElement,\n memo,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ArrowTopIcon,\n ArrowBottomIcon,\n ArrowDownIcon,\n ArrowUpIcon,\n DragIndicatorIcon,\n ListIcon,\n ShowIcon,\n MoreIcon,\n} from \"../icons.generated\";\nimport { Checkbox as MuiCheckbox } from \"@mui/material\";\nimport {\n DataTablePagination,\n paginationTypeValues,\n} from \"./DataTablePagination\";\nimport { DataFilter, DataFilters } from \"./DataFilters\";\nimport { Button } from \"../Button\";\nimport { Box } from \"../Box\";\nimport { MenuButton, MenuItem } from \"..\";\nimport { ArrowUnsortedIcon } from \"../icons.generated\";\n\nexport const densityValues = [\"comfortable\", \"spacious\", \"compact\"] as const;\n\nexport type {\n MRT_ColumnFiltersState,\n MRT_SortingState,\n MRT_ColumnDef as TableColumn,\n} from \"material-react-table\";\n\n// The shape of the table columns,\n// with props named to match their MRT_ColumnDef counterparts\nexport type DataColumn = {\n /**\n * The unique ID of the column\n */\n accessorKey: string;\n /**\n * The human-friendly title of the column\n */\n header: string;\n /**\n * Customize the way each cell in the column is\n * displayed via a custom React component.\n */\n Cell?: MRT_ColumnDef<MRT_RowData>[\"Cell\"];\n /**\n * The UI control that will be used to filter the column.\n * Defaults to a standard text input.\n */\n filterVariant?: MRT_ColumnDef<MRT_RowData>[\"filterVariant\"];\n /**\n * If the filter control has preset options (such as a select or multi-select),\n * these are the options provided.\n */\n filterSelectOptions?: Array<{ label: string; value: string }>;\n /**\n * The optional column width, in pixels\n */\n size?: number;\n /**\n * The minimum column width, in pixels\n */\n minSize?: number;\n /**\n * The maximum column width, in pixels\n */\n maxSize?: number;\n /**\n * If set to false, the column won't be filterable\n */\n enableColumnFilter?: boolean;\n /**\n * If set to false, the column won't be searchable\n */\n enableGlobalFilter?: boolean;\n /**\n * If set to false, the column won't be sortable\n */\n enableSorting?: boolean;\n /**\n * If set to false, the column won't be resizable\n */\n enableResizing?: boolean;\n /**\n * If set to false, the column won't be hideable\n */\n enableHiding?: boolean;\n};\n\nexport type DataTableProps = {\n /**\n * The columns that make up the table\n */\n columns: DataColumn[];\n /**\n * The data that goes into the table, which will be displayed\n * as the table rows\n */\n data: MRT_TableOptions<MRT_RowData>[\"data\"];\n /**\n * The total number of rows in the table. Optional, because it's sometimes impossible\n * to calculate. Used in table pagination to know when to disable the \"next\"/\"more\" button.\n */\n totalRows?: number;\n /**\n * The function to get the ID of a row\n */\n getRowId?: MRT_TableOptions<MRT_RowData>[\"getRowId\"];\n /**\n * The initial density of the table. This is available even if the table density\n * isn't changeable.\n */\n initialDensity?: (typeof densityValues)[number];\n /**\n * If true, the end user will be able to change the table density.\n */\n hasChangeableDensity?: boolean;\n /**\n * If true, the end user can resize individual columns.\n */\n hasColumnResizing?: boolean;\n /**\n * If true, the end user will be able to show/hide columns.\n */\n hasColumnVisibility?: boolean;\n /**\n * If true, the end user will be able to filter columns.\n */\n hasFilters?: boolean;\n /**\n * If true, the table will include pagination controls.\n */\n hasPagination?: boolean;\n /**\n * If true, the table will include checkboxes on each row, enabling\n * the user to select some or all rows.\n */\n hasRowSelection?: boolean;\n /**\n * If true, the global table search controls will be shown.\n */\n hasSearch?: boolean;\n /**\n * If true, the end user can sort columns (ascending, descending, or neither)\n */\n hasSorting?: boolean;\n /**\n * If true, the end user can reorder rows via a drag-and-drop interface\n */\n hasRowReordering?: boolean;\n /**\n * If true, the search field will include a Search button, rather than\n * firing on input change.\n */\n hasSearchSubmitButton?: boolean;\n /**\n * Callback that fires when a row (or rows) is selected or unselected.\n */\n onRowSelectionChange?: (rowSelection: MRT_RowSelectionState) => void;\n /**\n * Callback that fires whenever the table needs to fetch new data, due to changes in\n * page, results per page, search input, filters, or sorting\n */\n fetchDataFn: ({\n page,\n resultsPerPage,\n search,\n filters,\n sort,\n }: {\n page?: number;\n resultsPerPage?: number;\n search?: string;\n filters?: DataFilter[];\n sort?: MRT_SortingState;\n }) => MRT_TableOptions<MRT_RowData>[\"data\"];\n /**\n * Callback that fires when the user reorders rows within the table. Can be used\n * to propogate order change to the backend.\n */\n reorderDataFn?: ({\n rowId,\n newIndex,\n }: {\n rowId: string;\n newIndex: number;\n }) => void;\n /**\n * The current page number.\n */\n page?: number;\n /**\n * The number of results per page.\n */\n resultsPerPage?: number;\n /**\n * The type of pagination controls shown. Defaults to next/prev buttons, but can be\n * set to a simple \"Load more\" button by setting to \"loadMore\".\n */\n paginationType?: (typeof paginationTypeValues)[number];\n /**\n * Action buttons to display in each row\n */\n rowActionButtons?: (\n row: MRT_RowData\n ) => ReactElement<typeof Button | typeof Fragment>;\n /**\n * Menu items to include in the optional actions menu on each row.\n */\n rowActionMenuItems?: (\n row: MRT_RowData\n ) => ReactElement<typeof MenuItem | typeof Fragment>;\n};\n\nconst DataTable = ({\n columns,\n data: dataProp,\n getRowId,\n page: pageProp = 1,\n initialDensity = densityValues[0],\n resultsPerPage: resultsPerPageProp = 20,\n fetchDataFn,\n reorderDataFn,\n totalRows,\n hasSearchSubmitButton,\n paginationType = \"paged\",\n onRowSelectionChange,\n rowActionButtons,\n rowActionMenuItems,\n hasChangeableDensity,\n hasColumnResizing,\n hasColumnVisibility,\n hasFilters,\n hasPagination,\n hasRowReordering,\n hasRowSelection,\n hasSearch,\n hasSorting,\n}: DataTableProps) => {\n const [draggingRow, setDraggingRow] = useState<MRT_Row<MRT_RowData> | null>();\n const [showSkeletons, setShowSkeletons] = useState<boolean>(true);\n const [data, setData] =\n useState<MRT_TableOptions<MRT_RowData>[\"data\"]>(dataProp);\n const [page, setPage] = useState<number>(pageProp);\n const [resultsPerPage, setResultsPerPage] =\n useState<number>(resultsPerPageProp);\n const [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n const [density, setDensity] = useState<MRT_DensityState>(initialDensity);\n\n const initialColumnVisibility = useMemo(() => {\n return columns.reduce((acc, column) => {\n acc[column.accessorKey as string] = true;\n return acc;\n }, {} as MRT_VisibilityState);\n }, [columns]);\n\n const [columnVisibility, setColumnVisibility] = useState<MRT_VisibilityState>(\n initialColumnVisibility\n );\n\n const [globalFilter, setGlobalFilter] = useState<string>(\"\");\n const [filters, setFilters] = useState<Array<DataFilter>>();\n\n const refreshData = useCallback(async () => {\n setShowSkeletons(true);\n try {\n const newData = await fetchDataFn({\n page: page,\n resultsPerPage: resultsPerPage,\n sort: sorting,\n search: globalFilter,\n filters: filters,\n });\n setData(newData);\n setShowSkeletons(false);\n } catch (error) {\n console.log(error);\n setShowSkeletons(false);\n }\n }, [page, resultsPerPage, sorting, globalFilter, filters, fetchDataFn]);\n\n const handleSortingChange = useCallback(\n (updater: MRT_Updater<MRT_SortingState>) => {\n setSorting((prevSorting) =>\n updater instanceof Function ? updater(prevSorting) : sorting\n );\n },\n [sorting]\n );\n\n const handleColumnVisibility = useCallback(\n (columnId: string) => {\n setColumnVisibility((prevVisibility) => ({\n ...prevVisibility,\n [columnId]: !columnVisibility[columnId],\n }));\n },\n [columnVisibility]\n );\n\n const handleSearch = useCallback((value: string) => {\n setGlobalFilter(value);\n }, []);\n\n const handleFilters = useCallback((updatedFilters: Array<DataFilter>) => {\n setFilters(updatedFilters);\n }, []);\n\n const handleRowSelectionChange = useCallback(\n (updater: MRT_Updater<MRT_RowSelectionState>) => {\n setRowSelection((prevRowSelection) =>\n updater instanceof Function ? updater(prevRowSelection) : rowSelection\n );\n },\n [rowSelection]\n );\n\n const handleReordering = useCallback(\n ({ rowId, newIndex }: { rowId: string; newIndex: number }) => {\n if (newIndex < 0) {\n return;\n }\n\n if (totalRows && newIndex > totalRows) {\n return;\n }\n\n reorderDataFn?.({ rowId, newIndex });\n refreshData();\n },\n [totalRows, reorderDataFn, refreshData]\n );\n\n useEffect(() => {\n setShowSkeletons(false);\n }, [data]);\n\n useEffect(() => {\n refreshData();\n }, [refreshData, page, resultsPerPage, sorting, globalFilter, filters]);\n\n useEffect(() => {\n onRowSelectionChange?.(rowSelection);\n }, [rowSelection, onRowSelectionChange]);\n\n const rowVirtualizerInstanceRef =\n useRef<MRT_Virtualizer<HTMLDivElement, HTMLTableRowElement>>(null);\n\n const table = useMaterialReactTable({\n columns: columns,\n data: data,\n state: {\n density,\n sorting,\n globalFilter,\n columnVisibility,\n rowSelection,\n showSkeletons,\n },\n rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,\n rowVirtualizerOptions: { overscan: 4 },\n enableRowVirtualization:\n paginationType === \"loadMore\" || resultsPerPage > 50,\n enableColumnResizing: hasColumnResizing,\n enableDensityToggle: false,\n enableFullScreenToggle: false,\n enablePagination: false,\n enableRowSelection: hasRowSelection,\n enableFilters: false,\n enableHiding: false,\n enableRowOrdering: hasRowReordering,\n enableRowDragging: hasRowReordering,\n enableSorting: hasSorting,\n selectAllMode: \"all\",\n enableColumnActions: false,\n layoutMode: \"grid-no-grow\",\n displayColumnDefOptions: {\n \"mrt-row-actions\": {\n muiTableBodyCellProps: {\n align: \"right\",\n sx: {\n overflow: \"visible\",\n width: \"unset\",\n },\n },\n muiTableHeadCellProps: {\n align: \"right\",\n sx: {\n width: \"unset\",\n // TODO: Make the right padding here 16px (and possibly adapt it to the density padding)\n },\n },\n },\n \"mrt-row-drag\": {\n header: \"\",\n muiTableBodyCellProps: {\n sx: {\n minWidth: 0,\n width: 32,\n },\n },\n muiTableHeadCellProps: {\n sx: {\n minWidth: 0,\n width: 32,\n },\n },\n },\n },\n enableGlobalFilter: false,\n manualFiltering: true,\n manualSorting: true,\n getRowId: getRowId,\n icons: {\n ArrowDownwardIcon: ArrowDownIcon,\n DragHandleIcon: DragIndicatorIcon,\n SyncAltIcon: ArrowUnsortedIcon,\n },\n onSortingChange: handleSortingChange,\n onRowSelectionChange: handleRowSelectionChange,\n enableRowActions:\n hasRowReordering || rowActionButtons || rowActionMenuItems ? true : false,\n positionActionsColumn: \"last\",\n\n muiTableHeadCellProps: ({ column }) => ({\n className: sorting.find((item) => item.id === column.id)\n ? \"isSorted\"\n : \"isUnsorted\",\n }),\n\n muiTableBodyRowProps: ({ table, row }) => ({\n className:\n draggingRow?.id === row.id && table.getState().hoveredRow?.id !== row.id\n ? \"isDragging\"\n : table.getState().hoveredRow?.id === row.id &&\n draggingRow?.id !== row.id\n ? \"isDragTarget\"\n : draggingRow?.id === row.id &&\n table.getState().hoveredRow?.id === row.id\n ? \"isDragging isDragTarget\"\n : undefined,\n }),\n\n muiRowDragHandleProps: {\n tabIndex: -1,\n onDragEnd: () => {\n const cols = table.getAllColumns();\n cols[0].toggleVisibility();\n\n const { draggingRow, hoveredRow } = table.getState();\n if (draggingRow) {\n handleReordering({\n rowId: draggingRow.id,\n newIndex: (hoveredRow as MRT_RowData).index,\n });\n }\n\n setDraggingRow(null);\n },\n\n onDragCapture: () => {\n if (!draggingRow && table.getState().draggingRow?.id) {\n setDraggingRow(table.getState().draggingRow);\n }\n },\n },\n\n renderRowActions: ({ row }) => {\n const currentIndex = row.index + (page - 1) * resultsPerPage;\n\n return (\n <Box sx={{ display: \"flex\" }}>\n {rowActionButtons?.(row)}\n {(rowActionMenuItems || hasRowReordering) && (\n <MenuButton\n endIcon={<MoreIcon />}\n size=\"small\"\n buttonVariant=\"floating\"\n ariaLabel=\"More actions\"\n menuAlignment=\"right\"\n >\n {rowActionMenuItems && (\n <>\n {rowActionMenuItems(row)}\n <hr />\n </>\n )}\n <MenuItem\n isDisabled={currentIndex <= 0}\n onClick={() => handleReordering({ rowId: row.id, newIndex: 0 })}\n >\n <ArrowTopIcon /> Bring to front\n </MenuItem>\n <MenuItem\n isDisabled={currentIndex <= 0}\n onClick={() =>\n handleReordering({\n rowId: row.id,\n newIndex: currentIndex <= 0 ? 0 : currentIndex - 1,\n })\n }\n >\n <ArrowUpIcon /> Bring forward\n </MenuItem>\n <MenuItem\n isDisabled={totalRows ? currentIndex >= totalRows - 1 : false}\n onClick={() =>\n handleReordering({\n rowId: row.id,\n newIndex: currentIndex + 1,\n })\n }\n >\n <ArrowDownIcon /> Send backward\n </MenuItem>\n <>\n {totalRows && (\n <MenuItem\n isDisabled={currentIndex >= totalRows - 1}\n onClick={() =>\n handleReordering({\n rowId: row.id,\n newIndex: totalRows,\n })\n }\n >\n <ArrowBottomIcon /> Send to back\n </MenuItem>\n )}\n </>\n </MenuButton>\n )}\n </Box>\n );\n },\n });\n\n const tableSettings = useMemo(\n () => (\n <>\n {hasChangeableDensity && (\n <MenuButton\n endIcon={<ListIcon />}\n ariaLabel=\"Table density\"\n menuAlignment=\"right\"\n shouldCloseOnSelect={false}\n >\n <>\n {densityValues.map((value: MRT_DensityState) => (\n <MenuItem\n key={value}\n isSelected={density === value}\n onClick={() => setDensity(value)}\n >\n {`${value.charAt(0).toUpperCase()}${value.slice(1)}`}\n </MenuItem>\n ))}\n </>\n </MenuButton>\n )}\n\n {hasColumnVisibility && (\n <MenuButton\n endIcon={<ShowIcon />}\n ariaLabel=\"Show/hide columns\"\n menuAlignment=\"right\"\n shouldCloseOnSelect={false}\n >\n <>\n {columns\n .filter((column) => column.enableHiding !== false)\n .map((column) => (\n <MenuItem\n key={column.accessorKey}\n onClick={() =>\n handleColumnVisibility(column.accessorKey as string)\n }\n >\n <MuiCheckbox\n checked={\n columnVisibility[column.accessorKey as string] !== false\n }\n />\n {column.header}\n </MenuItem>\n ))}\n </>\n </MenuButton>\n )}\n </>\n ),\n [density, columnVisibility, columns, hasChangeableDensity]\n );\n\n return (\n <Box sx={{ display: \"flex\", flexDirection: \"column\", gap: 4 }}>\n <DataFilters\n onChangeSearch={hasSearch ? handleSearch : undefined}\n onChangeFilters={handleFilters}\n hasSearchSubmitButton={hasSearchSubmitButton}\n additionalActions={tableSettings}\n filters={\n hasFilters\n ? columns\n .filter((column) => column.enableColumnFilter !== false)\n .map((column) => {\n return {\n id: column.accessorKey as string,\n label: column.header,\n variant: column.filterVariant ?? \"text\",\n options: column.filterSelectOptions,\n };\n })\n : undefined\n }\n />\n\n <MRT_TableContainer table={table} />\n\n {hasPagination && (\n <DataTablePagination\n paginationType={paginationType}\n currentNumberOfResults={data.length}\n currentPage={page}\n isPreviousButtonDisabled={page <= 1}\n isNextButtonDisabled={false} // TODO: Add logic for disabling next/load more button\n onClickPrevious={() => setPage(page - 1)}\n onClickNext={() => {\n if (paginationType === \"loadMore\") {\n setResultsPerPage(resultsPerPage + resultsPerPageProp);\n } else {\n setPage(page + 1);\n }\n }}\n />\n )}\n </Box>\n );\n};\n\nconst MemoizedDataTable = memo(DataTable);\nMemoizedDataTable.displayName = \"DataTable\";\n\nexport { MemoizedDataTable as DataTable };\n"],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /*!
2
+ * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.
3
+ * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
4
+ *
5
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
6
+ * Unless required by applicable law or agreed to in writing, software
7
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
8
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9
+ *
10
+ * See the License for the specific language governing permissions and limitations under the License.
11
+ */
12
+
13
+ import { memo } from "react";
14
+ import { Box } from "../Box.js";
15
+ import { Button } from "../Button.js";
16
+ import { Support } from "../Typography.js";
17
+ import { ArrowLeftIcon, ArrowRightIcon } from "../icons.generated/index.js";
18
+ import { jsx as _jsx } from "react/jsx-runtime";
19
+ import { jsxs as _jsxs } from "react/jsx-runtime";
20
+ import { Fragment as _Fragment } from "react/jsx-runtime";
21
+ export const paginationTypeValues = ["paged", "loadMore"];
22
+ const DataTablePagination = _ref => {
23
+ let {
24
+ currentPage,
25
+ currentNumberOfResults,
26
+ isNextButtonDisabled,
27
+ isPreviousButtonDisabled,
28
+ onClickNext,
29
+ onClickPrevious,
30
+ paginationType
31
+ } = _ref;
32
+ return _jsx(Box, {
33
+ sx: {
34
+ display: "flex",
35
+ gap: 4,
36
+ alignItems: "center"
37
+ },
38
+ children: paginationType === "loadMore" ? _jsxs(_Fragment, {
39
+ children: [_jsx(Button, {
40
+ label: "Show more",
41
+ variant: "secondary",
42
+ onClick: onClickNext,
43
+ isDisabled: isNextButtonDisabled
44
+ }), currentNumberOfResults && _jsxs(Support, {
45
+ color: "textSecondary",
46
+ children: [currentNumberOfResults, " results"]
47
+ })]
48
+ }) : _jsxs(_Fragment, {
49
+ children: [_jsx(Button, {
50
+ label: "Previous",
51
+ startIcon: _jsx(ArrowLeftIcon, {}),
52
+ variant: "secondary",
53
+ onClick: onClickPrevious,
54
+ isDisabled: isPreviousButtonDisabled
55
+ }), currentPage && _jsx(Box, {
56
+ children: _jsxs(Support, {
57
+ color: "textSecondary",
58
+ component: "span",
59
+ children: ["Page ", currentPage]
60
+ })
61
+ }), _jsx(Button, {
62
+ label: "Next",
63
+ endIcon: _jsx(ArrowRightIcon, {}),
64
+ variant: "secondary",
65
+ onClick: onClickNext,
66
+ isDisabled: isNextButtonDisabled
67
+ })]
68
+ })
69
+ });
70
+ };
71
+ const MemoizedDataTablePagination = memo(DataTablePagination);
72
+ MemoizedDataTablePagination.displayName = "DataTablePagination";
73
+ export { MemoizedDataTablePagination as DataTablePagination };
74
+ //# sourceMappingURL=DataTablePagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTablePagination.js","names":["memo","Box","Button","Support","ArrowLeftIcon","ArrowRightIcon","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","paginationTypeValues","DataTablePagination","_ref","currentPage","currentNumberOfResults","isNextButtonDisabled","isPreviousButtonDisabled","onClickNext","onClickPrevious","paginationType","sx","display","gap","alignItems","children","label","variant","onClick","isDisabled","color","startIcon","component","endIcon","MemoizedDataTablePagination","displayName"],"sources":["../../src/labs/DataTablePagination.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { memo } from \"react\";\nimport { Box } from \"../Box\";\nimport { Button } from \"../Button\";\nimport { Support } from \"../Typography\";\nimport { ArrowLeftIcon, ArrowRightIcon } from \"../icons.generated\";\n\nexport const paginationTypeValues = [\"paged\", \"loadMore\"] as const;\n\nexport type DataTablePaginationProps = {\n currentPage?: number;\n currentNumberOfResults?: number;\n isNextButtonDisabled?: boolean;\n isPreviousButtonDisabled?: boolean;\n onClickNext: () => void;\n onClickPrevious?: () => void;\n paginationType?: (typeof paginationTypeValues)[number];\n};\n\nconst DataTablePagination = ({\n currentPage,\n currentNumberOfResults,\n isNextButtonDisabled,\n isPreviousButtonDisabled,\n onClickNext,\n onClickPrevious,\n paginationType,\n}: DataTablePaginationProps) => {\n return (\n <Box sx={{ display: \"flex\", gap: 4, alignItems: \"center\" }}>\n {paginationType === \"loadMore\" ? (\n <>\n <Button\n label=\"Show more\"\n variant=\"secondary\"\n onClick={onClickNext}\n isDisabled={isNextButtonDisabled}\n />\n {currentNumberOfResults && (\n <Support color=\"textSecondary\">\n {currentNumberOfResults} results\n </Support>\n )}\n </>\n ) : (\n <>\n <Button\n label=\"Previous\"\n startIcon={<ArrowLeftIcon />}\n variant=\"secondary\"\n onClick={onClickPrevious}\n isDisabled={isPreviousButtonDisabled}\n />\n {currentPage && (\n <Box>\n <Support color=\"textSecondary\" component=\"span\">\n Page {currentPage}\n </Support>\n </Box>\n )}\n <Button\n label=\"Next\"\n endIcon={<ArrowRightIcon />}\n variant=\"secondary\"\n onClick={onClickNext}\n isDisabled={isNextButtonDisabled}\n />\n </>\n )}\n </Box>\n );\n};\n\nconst MemoizedDataTablePagination = memo(DataTablePagination);\nMemoizedDataTablePagination.displayName = \"DataTablePagination\";\n\nexport { MemoizedDataTablePagination as DataTablePagination };\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,OAAO;AAAC,SACpBC,GAAG;AAAA,SACHC,MAAM;AAAA,SACNC,OAAO;AAAA,SACPC,aAAa,EAAEC,cAAc;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAEtC,OAAO,MAAMC,oBAAoB,GAAG,CAAC,OAAO,EAAE,UAAU,CAAU;AAYlE,MAAMC,mBAAmB,GAAGC,IAAA,IAQI;EAAA,IARH;IAC3BC,WAAW;IACXC,sBAAsB;IACtBC,oBAAoB;IACpBC,wBAAwB;IACxBC,WAAW;IACXC,eAAe;IACfC;EACwB,CAAC,GAAAP,IAAA;EACzB,OACEP,IAAA,CAACN,GAAG;IAACqB,EAAE,EAAE;MAAEC,OAAO,EAAE,MAAM;MAAEC,GAAG,EAAE,CAAC;MAAEC,UAAU,EAAE;IAAS,CAAE;IAAAC,QAAA,EACxDL,cAAc,KAAK,UAAU,GAC5BZ,KAAA,CAAAE,SAAA;MAAAe,QAAA,GACEnB,IAAA,CAACL,MAAM;QACLyB,KAAK,EAAC,WAAW;QACjBC,OAAO,EAAC,WAAW;QACnBC,OAAO,EAAEV,WAAY;QACrBW,UAAU,EAAEb;MAAqB,CAClC,CAAC,EACDD,sBAAsB,IACrBP,KAAA,CAACN,OAAO;QAAC4B,KAAK,EAAC,eAAe;QAAAL,QAAA,GAC3BV,sBAAsB,EAAC,UAC1B;MAAA,CAAS,CACV;IAAA,CACD,CAAC,GAEHP,KAAA,CAAAE,SAAA;MAAAe,QAAA,GACEnB,IAAA,CAACL,MAAM;QACLyB,KAAK,EAAC,UAAU;QAChBK,SAAS,EAAEzB,IAAA,CAACH,aAAa,IAAE,CAAE;QAC7BwB,OAAO,EAAC,WAAW;QACnBC,OAAO,EAAET,eAAgB;QACzBU,UAAU,EAAEZ;MAAyB,CACtC,CAAC,EACDH,WAAW,IACVR,IAAA,CAACN,GAAG;QAAAyB,QAAA,EACFjB,KAAA,CAACN,OAAO;UAAC4B,KAAK,EAAC,eAAe;UAACE,SAAS,EAAC,MAAM;UAAAP,QAAA,GAAC,OACzC,EAACX,WAAW;QAAA,CACV;MAAC,CACP,CACN,EACDR,IAAA,CAACL,MAAM;QACLyB,KAAK,EAAC,MAAM;QACZO,OAAO,EAAE3B,IAAA,CAACF,cAAc,IAAE,CAAE;QAC5BuB,OAAO,EAAC,WAAW;QACnBC,OAAO,EAAEV,WAAY;QACrBW,UAAU,EAAEb;MAAqB,CAClC,CAAC;IAAA,CACF;EACH,CACE,CAAC;AAEV,CAAC;AAED,MAAMkB,2BAA2B,GAAGnC,IAAI,CAACa,mBAAmB,CAAC;AAC7DsB,2BAA2B,CAACC,WAAW,GAAG,qBAAqB;AAE/D,SAASD,2BAA2B,IAAItB,mBAAmB"}
@@ -10,15 +10,15 @@
10
10
  * See the License for the specific language governing permissions and limitations under the License.
11
11
  */
12
12
  import { Typography } from "../Typography.js";
13
- import MaterialReactTable from "material-react-table";
13
+ import { useMaterialReactTable, MaterialReactTable } from "material-react-table";
14
14
  import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
15
15
  import { Trans, useTranslation } from "react-i18next";
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { Fragment as _Fragment } from "react/jsx-runtime";
18
18
  const PaginatedTable = _ref => {
19
19
  let {
20
- columns,
21
- data,
20
+ columns = [],
21
+ data = [],
22
22
  fetchMoreData,
23
23
  getRowId,
24
24
  hasError,
@@ -136,7 +136,7 @@ const PaginatedTable = _ref => {
136
136
  ownerState: {},
137
137
  theme
138
138
  }) : "", []);
139
- return _jsx(MaterialReactTable, {
139
+ const table = useMaterialReactTable({
140
140
  columns: columns,
141
141
  data: data,
142
142
  enableMultiRowSelection: hasRowSelection,
@@ -151,7 +151,7 @@ const PaginatedTable = _ref => {
151
151
  muiSelectCheckboxProps: {
152
152
  sx: muiCheckboxStyles
153
153
  },
154
- muiTablePaginationProps: muiTablePaginationProps,
154
+ muiPaginationProps: muiTablePaginationProps,
155
155
  muiToolbarAlertBannerProps: muiToolbarAlertBannerProps,
156
156
  onColumnFiltersChange: setColumnFilters,
157
157
  onGlobalFilterChange: setGlobalFilter,
@@ -160,11 +160,14 @@ const PaginatedTable = _ref => {
160
160
  renderBottomToolbarCustomActions: renderBottomToolbarCustomActions,
161
161
  renderTopToolbarCustomActions: renderTopToolbarCustomActions,
162
162
  rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,
163
- rowVirtualizerProps: {
163
+ rowVirtualizerOptions: {
164
164
  overscan: 4
165
165
  },
166
166
  state: modifiedState
167
167
  });
168
+ return _jsx(MaterialReactTable, {
169
+ table: table
170
+ });
168
171
  };
169
172
  const MemoizedPaginatedTable = memo(PaginatedTable);
170
173
  MemoizedPaginatedTable.displayName = "PaginatedTable";