mui-universal-table 2.1.17 → 2.1.19
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.cjs +470 -643
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +470 -643
- package/dist/index.esm.js.map +1 -1
- package/package.json +4 -5
package/dist/index.cjs
CHANGED
|
@@ -6,138 +6,38 @@ var React = require('react');
|
|
|
6
6
|
var PropTypes = require('prop-types');
|
|
7
7
|
var Paper = require('@mui/material/Paper');
|
|
8
8
|
var material = require('@mui/material');
|
|
9
|
-
var
|
|
9
|
+
var jsxDevRuntime = require('react/jsx-dev-runtime');
|
|
10
10
|
var styles = require('@mui/material/styles');
|
|
11
11
|
var iconsMaterial = require('@mui/icons-material');
|
|
12
12
|
var RefreshIcon = require('@mui/icons-material/Refresh');
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
function _arrayWithoutHoles(r) {
|
|
23
|
-
if (Array.isArray(r)) return _arrayLikeToArray(r);
|
|
24
|
-
}
|
|
25
|
-
function _defineProperty(e, r, t) {
|
|
26
|
-
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
27
|
-
value: t,
|
|
28
|
-
enumerable: true,
|
|
29
|
-
configurable: true,
|
|
30
|
-
writable: true
|
|
31
|
-
}) : e[r] = t, e;
|
|
32
|
-
}
|
|
33
|
-
function _iterableToArray(r) {
|
|
34
|
-
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
|
|
35
|
-
}
|
|
36
|
-
function _iterableToArrayLimit(r, l) {
|
|
37
|
-
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
38
|
-
if (null != t) {
|
|
39
|
-
var e,
|
|
40
|
-
n,
|
|
41
|
-
i,
|
|
42
|
-
u,
|
|
43
|
-
a = [],
|
|
44
|
-
f = true,
|
|
45
|
-
o = false;
|
|
46
|
-
try {
|
|
47
|
-
if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
48
|
-
} catch (r) {
|
|
49
|
-
o = true, n = r;
|
|
50
|
-
} finally {
|
|
51
|
-
try {
|
|
52
|
-
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
|
|
53
|
-
} finally {
|
|
54
|
-
if (o) throw n;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return a;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
function _nonIterableRest() {
|
|
61
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
62
|
-
}
|
|
63
|
-
function _nonIterableSpread() {
|
|
64
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
65
|
-
}
|
|
66
|
-
function ownKeys(e, r) {
|
|
67
|
-
var t = Object.keys(e);
|
|
68
|
-
if (Object.getOwnPropertySymbols) {
|
|
69
|
-
var o = Object.getOwnPropertySymbols(e);
|
|
70
|
-
r && (o = o.filter(function (r) {
|
|
71
|
-
return Object.getOwnPropertyDescriptor(e, r).enumerable;
|
|
72
|
-
})), t.push.apply(t, o);
|
|
73
|
-
}
|
|
74
|
-
return t;
|
|
75
|
-
}
|
|
76
|
-
function _objectSpread2(e) {
|
|
77
|
-
for (var r = 1; r < arguments.length; r++) {
|
|
78
|
-
var t = null != arguments[r] ? arguments[r] : {};
|
|
79
|
-
r % 2 ? ownKeys(Object(t), true).forEach(function (r) {
|
|
80
|
-
_defineProperty(e, r, t[r]);
|
|
81
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
|
|
82
|
-
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
return e;
|
|
86
|
-
}
|
|
87
|
-
function _slicedToArray(r, e) {
|
|
88
|
-
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
|
|
89
|
-
}
|
|
90
|
-
function _toConsumableArray(r) {
|
|
91
|
-
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
|
|
92
|
-
}
|
|
93
|
-
function _toPrimitive(t, r) {
|
|
94
|
-
if ("object" != typeof t || !t) return t;
|
|
95
|
-
var e = t[Symbol.toPrimitive];
|
|
96
|
-
if (void 0 !== e) {
|
|
97
|
-
var i = e.call(t, r);
|
|
98
|
-
if ("object" != typeof i) return i;
|
|
99
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
100
|
-
}
|
|
101
|
-
return ("string" === r ? String : Number)(t);
|
|
102
|
-
}
|
|
103
|
-
function _toPropertyKey(t) {
|
|
104
|
-
var i = _toPrimitive(t, "string");
|
|
105
|
-
return "symbol" == typeof i ? i : i + "";
|
|
106
|
-
}
|
|
107
|
-
function _unsupportedIterableToArray(r, a) {
|
|
108
|
-
if (r) {
|
|
109
|
-
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
110
|
-
var t = {}.toString.call(r).slice(8, -1);
|
|
111
|
-
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
var LazyLoadingIndicator = function LazyLoadingIndicator(_ref) {
|
|
116
|
-
var show = _ref.show,
|
|
117
|
-
currentPage = _ref.currentPage,
|
|
118
|
-
totalPages = _ref.totalPages;
|
|
119
|
-
return /*#__PURE__*/jsxRuntime.jsx(material.Collapse, {
|
|
120
|
-
"in": show,
|
|
14
|
+
const LazyLoadingIndicator = ({
|
|
15
|
+
show,
|
|
16
|
+
currentPage,
|
|
17
|
+
totalPages
|
|
18
|
+
}) => {
|
|
19
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Collapse, {
|
|
20
|
+
in: show,
|
|
121
21
|
timeout: "auto",
|
|
122
22
|
unmountOnExit: true,
|
|
123
|
-
children: /*#__PURE__*/
|
|
23
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Box, {
|
|
124
24
|
sx: {
|
|
125
25
|
width: "100%",
|
|
126
26
|
p: 2
|
|
127
27
|
},
|
|
128
|
-
children: [/*#__PURE__*/
|
|
28
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.Typography, {
|
|
129
29
|
variant: "body2",
|
|
130
30
|
color: "text.secondary",
|
|
131
31
|
sx: {
|
|
132
32
|
mb: 1
|
|
133
33
|
},
|
|
134
34
|
children: ["Loading page ", currentPage, " of ", totalPages, "..."]
|
|
135
|
-
}), /*#__PURE__*/
|
|
35
|
+
}, void 0, true), /*#__PURE__*/jsxDevRuntime.jsxDEV(material.LinearProgress, {
|
|
136
36
|
variant: "determinate",
|
|
137
37
|
value: currentPage / totalPages * 100
|
|
138
|
-
})]
|
|
139
|
-
})
|
|
140
|
-
});
|
|
38
|
+
}, void 0, false)]
|
|
39
|
+
}, void 0, true)
|
|
40
|
+
}, void 0, false);
|
|
141
41
|
};
|
|
142
42
|
LazyLoadingIndicator.propTypes = {
|
|
143
43
|
show: PropTypes.bool.isRequired,
|
|
@@ -150,7 +50,7 @@ LazyLoadingIndicator.propTypes = {
|
|
|
150
50
|
* but invisible on screen. Defined locally to avoid importing from
|
|
151
51
|
* @mui/utils which is not a declared peer dependency.
|
|
152
52
|
*/
|
|
153
|
-
|
|
53
|
+
const visuallyHidden = {
|
|
154
54
|
border: 0,
|
|
155
55
|
clip: "rect(0 0 0 0)",
|
|
156
56
|
height: "1px",
|
|
@@ -165,22 +65,14 @@ function getSelectableRowId(row, index, selectID) {
|
|
|
165
65
|
return selectID ? row[selectID] : index;
|
|
166
66
|
}
|
|
167
67
|
function getSearchableColumnIds(headers) {
|
|
168
|
-
return headers.filter(
|
|
169
|
-
return column.searchable;
|
|
170
|
-
}).map(function (column) {
|
|
171
|
-
return column.id;
|
|
172
|
-
});
|
|
68
|
+
return headers.filter(column => column.searchable).map(column => column.id);
|
|
173
69
|
}
|
|
174
70
|
function filterRows(data, searchTerm, filterOptions) {
|
|
175
71
|
if (!searchTerm) {
|
|
176
72
|
return data;
|
|
177
73
|
}
|
|
178
|
-
|
|
179
|
-
return data.filter(
|
|
180
|
-
return filterOptions.some(function (filterOption) {
|
|
181
|
-
return String(row[filterOption]).toLocaleLowerCase().includes(term);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
74
|
+
const term = searchTerm.toLocaleLowerCase();
|
|
75
|
+
return data.filter(row => filterOptions.some(filterOption => String(row[filterOption]).toLocaleLowerCase().includes(term)));
|
|
184
76
|
}
|
|
185
77
|
function getPageOptions(rowCount) {
|
|
186
78
|
if (rowCount <= 5) return [5];
|
|
@@ -191,7 +83,7 @@ function getPageOptions(rowCount) {
|
|
|
191
83
|
return [5, 10, 25, 50, 100, rowCount];
|
|
192
84
|
}
|
|
193
85
|
function splitHeaders(headers) {
|
|
194
|
-
return headers.reduce(
|
|
86
|
+
return headers.reduce((groups, header) => {
|
|
195
87
|
if (header.subRow) {
|
|
196
88
|
groups.subTables.push(header);
|
|
197
89
|
} else {
|
|
@@ -213,13 +105,9 @@ function descendingComparator(a, b, orderBy) {
|
|
|
213
105
|
return 0;
|
|
214
106
|
}
|
|
215
107
|
function getComparator(order, orderBy) {
|
|
216
|
-
return order === "desc" ?
|
|
217
|
-
return descendingComparator(a, b, orderBy);
|
|
218
|
-
} : function (a, b) {
|
|
219
|
-
return -descendingComparator(a, b, orderBy);
|
|
220
|
-
};
|
|
108
|
+
return order === "desc" ? (a, b) => descendingComparator(a, b, orderBy) : (a, b) => -descendingComparator(a, b, orderBy);
|
|
221
109
|
}
|
|
222
|
-
|
|
110
|
+
const browserDateTimeFormatter = new Intl.DateTimeFormat(undefined, {
|
|
223
111
|
year: "numeric",
|
|
224
112
|
month: "short",
|
|
225
113
|
day: "numeric",
|
|
@@ -238,7 +126,7 @@ var browserDateTimeFormatter = new Intl.DateTimeFormat(undefined, {
|
|
|
238
126
|
* formats that Date.parse may reject.
|
|
239
127
|
*/
|
|
240
128
|
function formatCellValue(header, rowValues) {
|
|
241
|
-
|
|
129
|
+
const raw = rowValues[header.id];
|
|
242
130
|
if (!header.date) {
|
|
243
131
|
return raw;
|
|
244
132
|
}
|
|
@@ -247,32 +135,28 @@ function formatCellValue(header, rowValues) {
|
|
|
247
135
|
if (raw === null || raw === undefined) {
|
|
248
136
|
return raw;
|
|
249
137
|
}
|
|
250
|
-
|
|
138
|
+
const d = new Date(raw);
|
|
251
139
|
if (Number.isNaN(d.getTime())) {
|
|
252
140
|
return raw;
|
|
253
141
|
}
|
|
254
142
|
return browserDateTimeFormatter.format(d);
|
|
255
143
|
}
|
|
256
144
|
function stableSort(array, comparator, headers, orderBy) {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
}).map(function (value) {
|
|
260
|
-
return value.id;
|
|
261
|
-
}));
|
|
262
|
-
var findHeader = headers.find(function (header) {
|
|
263
|
-
return header.id === orderBy;
|
|
264
|
-
});
|
|
145
|
+
const dateColumns = new Set(headers.filter(object => object.date).map(value => value.id));
|
|
146
|
+
const findHeader = headers.find(header => header.id === orderBy);
|
|
265
147
|
|
|
266
148
|
// Build stable entries — compare pre-computed sort keys so we never
|
|
267
149
|
// mutate the original data or its shallow copies.
|
|
268
150
|
// Each entry is [originalRow, sortKey, index] so that the comparator
|
|
269
151
|
// works on numeric-converted date values while the original rows are
|
|
270
152
|
// returned unchanged (preserving the data seen by header.component).
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
153
|
+
const stabilizedThis = array.map((el, index) => {
|
|
154
|
+
const sortKey = {
|
|
155
|
+
...el
|
|
156
|
+
};
|
|
157
|
+
for (const property in sortKey) {
|
|
274
158
|
if (dateColumns.has(property)) {
|
|
275
|
-
|
|
159
|
+
const parsed = Number(new Date(sortKey[property]));
|
|
276
160
|
// Preserve the original value for invalid dates so formatCellValue
|
|
277
161
|
// can display the fallback instead of passing NaN to React children.
|
|
278
162
|
if (!Number.isNaN(parsed)) {
|
|
@@ -282,107 +166,87 @@ function stableSort(array, comparator, headers, orderBy) {
|
|
|
282
166
|
}
|
|
283
167
|
return [el, sortKey, index];
|
|
284
168
|
});
|
|
285
|
-
if (
|
|
286
|
-
stabilizedThis.sort(
|
|
287
|
-
|
|
169
|
+
if (findHeader?.sortable === undefined || findHeader?.sortable === false) {
|
|
170
|
+
stabilizedThis.sort((a, b) => {
|
|
171
|
+
const order = comparator(a[1], b[1]);
|
|
288
172
|
if (order !== 0) return order;
|
|
289
173
|
return a[2] - b[2];
|
|
290
174
|
});
|
|
291
175
|
}
|
|
292
|
-
return stabilizedThis.map(
|
|
293
|
-
return el[0];
|
|
294
|
-
});
|
|
176
|
+
return stabilizedThis.map(el => el[0]);
|
|
295
177
|
}
|
|
296
178
|
|
|
297
179
|
function useSearchableRows(data, headers, async) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
setSearchTerm = _React$useState2[1];
|
|
302
|
-
var filterOptions = React.useMemo(function () {
|
|
303
|
-
return getSearchableColumnIds(headers);
|
|
304
|
-
}, [headers]);
|
|
305
|
-
var rows = React.useMemo(function () {
|
|
306
|
-
return async ? data : filterRows(data, searchTerm, filterOptions);
|
|
307
|
-
}, [async, data, filterOptions, searchTerm]);
|
|
180
|
+
const [searchTerm, setSearchTerm] = React.useState("");
|
|
181
|
+
const filterOptions = React.useMemo(() => getSearchableColumnIds(headers), [headers]);
|
|
182
|
+
const rows = React.useMemo(() => async ? data : filterRows(data, searchTerm, filterOptions), [async, data, filterOptions, searchTerm]);
|
|
308
183
|
return {
|
|
309
|
-
rows
|
|
310
|
-
searchTerm
|
|
311
|
-
setSearchTerm
|
|
184
|
+
rows,
|
|
185
|
+
searchTerm,
|
|
186
|
+
setSearchTerm
|
|
312
187
|
};
|
|
313
188
|
}
|
|
314
189
|
|
|
315
|
-
function useSelectableRows(
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
setSelected = _React$useState2[1];
|
|
323
|
-
var clearSelection = React.useCallback(function () {
|
|
190
|
+
function useSelectableRows({
|
|
191
|
+
rows,
|
|
192
|
+
selectRows,
|
|
193
|
+
selectID
|
|
194
|
+
}) {
|
|
195
|
+
const [selected, setSelected] = React.useState([]);
|
|
196
|
+
const clearSelection = React.useCallback(() => {
|
|
324
197
|
setSelected([]);
|
|
325
198
|
}, []);
|
|
326
|
-
|
|
199
|
+
const handleSelectAllClick = React.useCallback(event => {
|
|
327
200
|
if (!event.target.checked) {
|
|
328
201
|
setSelected([]);
|
|
329
202
|
return;
|
|
330
203
|
}
|
|
331
|
-
|
|
332
|
-
return getSelectableRowId(row, index, selectID);
|
|
333
|
-
});
|
|
204
|
+
const newSelected = rows.map((row, index) => getSelectableRowId(row, index, selectID));
|
|
334
205
|
setSelected(newSelected);
|
|
335
206
|
}, [rows, selectID]);
|
|
336
|
-
|
|
207
|
+
const handleClick = React.useCallback((event, id) => {
|
|
337
208
|
if (!selectRows) {
|
|
338
209
|
return;
|
|
339
210
|
}
|
|
340
|
-
setSelected(
|
|
341
|
-
return previous.includes(id) ? previous.filter(function (selectedId) {
|
|
342
|
-
return selectedId !== id;
|
|
343
|
-
}) : [].concat(_toConsumableArray(previous), [id]);
|
|
344
|
-
});
|
|
211
|
+
setSelected(previous => previous.includes(id) ? previous.filter(selectedId => selectedId !== id) : [...previous, id]);
|
|
345
212
|
}, [selectRows]);
|
|
346
213
|
return {
|
|
347
|
-
selected
|
|
348
|
-
clearSelection
|
|
349
|
-
handleSelectAllClick
|
|
350
|
-
handleClick
|
|
214
|
+
selected,
|
|
215
|
+
clearSelection,
|
|
216
|
+
handleSelectAllClick,
|
|
217
|
+
handleClick
|
|
351
218
|
};
|
|
352
219
|
}
|
|
353
220
|
|
|
354
|
-
function TableSelectionBanner(
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
221
|
+
function TableSelectionBanner({
|
|
222
|
+
selected,
|
|
223
|
+
onSelection,
|
|
224
|
+
selectIcon
|
|
225
|
+
}) {
|
|
226
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Collapse, {
|
|
227
|
+
in: selected.length > 0,
|
|
360
228
|
unmountOnExit: true,
|
|
361
|
-
children: /*#__PURE__*/
|
|
229
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Box, {
|
|
362
230
|
sx: {
|
|
363
231
|
p: 2,
|
|
364
232
|
display: "flex",
|
|
365
233
|
justifyContent: "space-between",
|
|
366
|
-
bgcolor:
|
|
367
|
-
return styles.alpha(theme.palette.primary.main, theme.palette.action.activatedOpacity);
|
|
368
|
-
},
|
|
234
|
+
bgcolor: theme => styles.alpha(theme.palette.primary.main, theme.palette.action.activatedOpacity),
|
|
369
235
|
borderRadius: 1,
|
|
370
236
|
borderBottomLeftRadius: 0,
|
|
371
237
|
borderBottomRightRadius: 0
|
|
372
238
|
},
|
|
373
|
-
children: [/*#__PURE__*/
|
|
239
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.Typography, {
|
|
374
240
|
variant: "h6",
|
|
375
241
|
id: "tableTitle",
|
|
376
242
|
component: "div",
|
|
377
243
|
children: [selected.length, " selected"]
|
|
378
|
-
}), /*#__PURE__*/
|
|
379
|
-
onClick:
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
})
|
|
385
|
-
});
|
|
244
|
+
}, void 0, true), /*#__PURE__*/jsxDevRuntime.jsxDEV(material.IconButton, {
|
|
245
|
+
onClick: () => onSelection(selected),
|
|
246
|
+
children: selectIcon || /*#__PURE__*/jsxDevRuntime.jsxDEV(iconsMaterial.Task, {}, void 0, false)
|
|
247
|
+
}, void 0, false)]
|
|
248
|
+
}, void 0, true)
|
|
249
|
+
}, void 0, false);
|
|
386
250
|
}
|
|
387
251
|
TableSelectionBanner.propTypes = {
|
|
388
252
|
selected: PropTypes.array.isRequired,
|
|
@@ -390,45 +254,47 @@ TableSelectionBanner.propTypes = {
|
|
|
390
254
|
selectIcon: PropTypes.element
|
|
391
255
|
};
|
|
392
256
|
|
|
393
|
-
function TableTitle(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
257
|
+
function TableTitle({
|
|
258
|
+
name,
|
|
259
|
+
subTable
|
|
260
|
+
}) {
|
|
261
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Typography, {
|
|
397
262
|
variant: subTable ? "h6" : "h5",
|
|
398
263
|
color: subTable ? "secondary" : "primary",
|
|
399
264
|
sx: {
|
|
400
265
|
p: 2
|
|
401
266
|
},
|
|
402
267
|
children: name
|
|
403
|
-
});
|
|
268
|
+
}, void 0, false);
|
|
404
269
|
}
|
|
405
270
|
TableTitle.propTypes = {
|
|
406
271
|
name: PropTypes.string,
|
|
407
272
|
subTable: PropTypes.bool
|
|
408
273
|
};
|
|
409
274
|
|
|
410
|
-
function ReloadBtn(
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
275
|
+
function ReloadBtn({
|
|
276
|
+
loading,
|
|
277
|
+
onReload
|
|
278
|
+
}) {
|
|
279
|
+
const canReload = typeof onReload === "function";
|
|
414
280
|
if (!canReload) {
|
|
415
281
|
return null;
|
|
416
282
|
}
|
|
417
|
-
|
|
283
|
+
const handleClick = () => {
|
|
418
284
|
if (typeof onReload === "function") {
|
|
419
285
|
onReload();
|
|
420
286
|
}
|
|
421
287
|
};
|
|
422
|
-
return /*#__PURE__*/
|
|
288
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Tooltip, {
|
|
423
289
|
title: "Reload",
|
|
424
|
-
children: /*#__PURE__*/
|
|
290
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Button, {
|
|
425
291
|
variant: "contained",
|
|
426
292
|
color: "primary",
|
|
427
293
|
onClick: handleClick,
|
|
428
294
|
disabled: loading,
|
|
429
|
-
children: /*#__PURE__*/
|
|
430
|
-
})
|
|
431
|
-
});
|
|
295
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(RefreshIcon, {}, void 0, false)
|
|
296
|
+
}, void 0, false)
|
|
297
|
+
}, void 0, false);
|
|
432
298
|
}
|
|
433
299
|
ReloadBtn.propTypes = {
|
|
434
300
|
loading: PropTypes.bool,
|
|
@@ -436,29 +302,27 @@ ReloadBtn.propTypes = {
|
|
|
436
302
|
onReload: PropTypes.func
|
|
437
303
|
};
|
|
438
304
|
|
|
439
|
-
function FancySearch(
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
var expanded = hover || Boolean(value);
|
|
447
|
-
var handleSubmit = function handleSubmit(e) {
|
|
305
|
+
function FancySearch({
|
|
306
|
+
value,
|
|
307
|
+
onSubmit
|
|
308
|
+
}) {
|
|
309
|
+
const [hover, setHover] = React.useState(Boolean(value));
|
|
310
|
+
const expanded = hover || Boolean(value);
|
|
311
|
+
const handleSubmit = e => {
|
|
448
312
|
e.preventDefault();
|
|
449
313
|
onSubmit(value);
|
|
450
314
|
};
|
|
451
|
-
|
|
315
|
+
const handleEndHover = () => {
|
|
452
316
|
setHover(false);
|
|
453
317
|
};
|
|
454
318
|
|
|
455
319
|
// Sync internal state when the parent clears/changes the search term.
|
|
456
320
|
// A ref tracks whether this sync came from the user typing or from a parent
|
|
457
321
|
// update, so the debounce only fires for genuine user input.
|
|
458
|
-
|
|
459
|
-
return /*#__PURE__*/
|
|
322
|
+
const isUserTypingRef = React.useRef(false);
|
|
323
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV("form", {
|
|
460
324
|
onSubmit: handleSubmit,
|
|
461
|
-
children: /*#__PURE__*/
|
|
325
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Paper, {
|
|
462
326
|
elevation: 0,
|
|
463
327
|
sx: {
|
|
464
328
|
borderRadius: expanded ? "24px" : "50px",
|
|
@@ -467,63 +331,58 @@ function FancySearch(_ref) {
|
|
|
467
331
|
transition: "all 0.5s ease-in-out",
|
|
468
332
|
p: expanded ? 1 : 0.5,
|
|
469
333
|
width: "fit-content",
|
|
470
|
-
border:
|
|
471
|
-
return "1px solid ".concat(theme.palette.divider);
|
|
472
|
-
},
|
|
334
|
+
border: theme => `1px solid ${theme.palette.divider}`,
|
|
473
335
|
mb: 1
|
|
474
336
|
},
|
|
475
|
-
onMouseEnter:
|
|
476
|
-
return setHover(true);
|
|
477
|
-
},
|
|
337
|
+
onMouseEnter: () => setHover(true),
|
|
478
338
|
onMouseLeave: handleEndHover,
|
|
479
|
-
onKeyDown:
|
|
480
|
-
|
|
481
|
-
},
|
|
482
|
-
children: [/*#__PURE__*/jsxRuntime.jsx(material.InputBase, {
|
|
339
|
+
onKeyDown: e => e.key === "Enter" && handleSubmit(e),
|
|
340
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.InputBase, {
|
|
483
341
|
placeholder: "Search",
|
|
484
342
|
value: value,
|
|
485
|
-
onChange:
|
|
343
|
+
onChange: e => {
|
|
486
344
|
isUserTypingRef.current = true;
|
|
487
345
|
onSubmit(e.target.value);
|
|
488
346
|
},
|
|
489
|
-
sx:
|
|
347
|
+
sx: {
|
|
490
348
|
ml: 1,
|
|
491
349
|
width: expanded ? "100%" : 0,
|
|
492
|
-
transition: "width 0.5s ease-in-out"
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
350
|
+
transition: "width 0.5s ease-in-out",
|
|
351
|
+
...(expanded ? {} : {
|
|
352
|
+
margin: 0
|
|
353
|
+
})
|
|
354
|
+
},
|
|
496
355
|
onBlur: handleEndHover
|
|
497
|
-
}), /*#__PURE__*/
|
|
498
|
-
|
|
356
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Collapse, {
|
|
357
|
+
in: Boolean(value),
|
|
499
358
|
orientation: "horizontal",
|
|
500
359
|
unmountOnExit: true,
|
|
501
|
-
children: /*#__PURE__*/
|
|
360
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Stack, {
|
|
502
361
|
direction: "row",
|
|
503
362
|
spacing: 0,
|
|
504
363
|
sx: {
|
|
505
364
|
mr: 3,
|
|
506
365
|
alignItems: "center"
|
|
507
366
|
},
|
|
508
|
-
children: [/*#__PURE__*/
|
|
509
|
-
onClick:
|
|
367
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.IconButton, {
|
|
368
|
+
onClick: () => {
|
|
510
369
|
isUserTypingRef.current = false;
|
|
511
370
|
// Immediately clear instead of waiting for the debounce
|
|
512
371
|
onSubmit("");
|
|
513
372
|
},
|
|
514
|
-
children: /*#__PURE__*/
|
|
515
|
-
}), /*#__PURE__*/
|
|
373
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(iconsMaterial.Clear, {}, void 0, false)
|
|
374
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Divider, {
|
|
516
375
|
orientation: "vertical",
|
|
517
376
|
flexItem: true
|
|
518
|
-
})]
|
|
519
|
-
})
|
|
520
|
-
}), /*#__PURE__*/
|
|
377
|
+
}, void 0, false)]
|
|
378
|
+
}, void 0, true)
|
|
379
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(material.IconButton, {
|
|
521
380
|
onClick: handleSubmit,
|
|
522
381
|
type: "submit",
|
|
523
|
-
children: /*#__PURE__*/
|
|
524
|
-
})]
|
|
525
|
-
})
|
|
526
|
-
});
|
|
382
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(iconsMaterial.Search, {}, void 0, false)
|
|
383
|
+
}, void 0, false)]
|
|
384
|
+
}, void 0, true)
|
|
385
|
+
}, void 0, false);
|
|
527
386
|
}
|
|
528
387
|
FancySearch.propTypes = {
|
|
529
388
|
value: PropTypes.string,
|
|
@@ -531,24 +390,25 @@ FancySearch.propTypes = {
|
|
|
531
390
|
};
|
|
532
391
|
|
|
533
392
|
function SearchArea(props) {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
393
|
+
const {
|
|
394
|
+
current,
|
|
395
|
+
setFinalVal,
|
|
396
|
+
searchName,
|
|
397
|
+
persistSearch
|
|
398
|
+
} = props;
|
|
399
|
+
const searchVal = React.useMemo(() => {
|
|
539
400
|
if (current !== undefined && current !== null) return current;
|
|
540
401
|
if (persistSearch && searchName) {
|
|
541
|
-
|
|
542
|
-
return (_sessionStorage$getIt = sessionStorage.getItem("searchVal:".concat(searchName))) !== null && _sessionStorage$getIt !== void 0 ? _sessionStorage$getIt : "";
|
|
402
|
+
return sessionStorage.getItem(`searchVal:${searchName}`) ?? "";
|
|
543
403
|
}
|
|
544
404
|
return "";
|
|
545
405
|
}, [current, persistSearch, searchName]);
|
|
546
|
-
return /*#__PURE__*/
|
|
547
|
-
children: /*#__PURE__*/
|
|
406
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV("div", {
|
|
407
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(FancySearch, {
|
|
548
408
|
value: searchVal,
|
|
549
409
|
onSubmit: setFinalVal
|
|
550
|
-
})
|
|
551
|
-
}, "SearchArea");
|
|
410
|
+
}, void 0, false)
|
|
411
|
+
}, "SearchArea", false);
|
|
552
412
|
}
|
|
553
413
|
SearchArea.propTypes = {
|
|
554
414
|
current: PropTypes.string,
|
|
@@ -558,14 +418,15 @@ SearchArea.propTypes = {
|
|
|
558
418
|
persistSearch: PropTypes.bool
|
|
559
419
|
};
|
|
560
420
|
|
|
561
|
-
function TableToolbarContent(
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
421
|
+
function TableToolbarContent({
|
|
422
|
+
onReload,
|
|
423
|
+
reloadBtnLoading,
|
|
424
|
+
searchTerm,
|
|
425
|
+
onSearchChange,
|
|
426
|
+
name,
|
|
427
|
+
persistSearch
|
|
428
|
+
}) {
|
|
429
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Toolbar, {
|
|
569
430
|
sx: {
|
|
570
431
|
pl: {
|
|
571
432
|
sm: 2
|
|
@@ -576,7 +437,7 @@ function TableToolbarContent(_ref) {
|
|
|
576
437
|
},
|
|
577
438
|
pt: 2
|
|
578
439
|
},
|
|
579
|
-
children: /*#__PURE__*/
|
|
440
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Stack, {
|
|
580
441
|
spacing: 2,
|
|
581
442
|
direction: {
|
|
582
443
|
xs: "column",
|
|
@@ -589,23 +450,23 @@ function TableToolbarContent(_ref) {
|
|
|
589
450
|
md: "center"
|
|
590
451
|
}
|
|
591
452
|
},
|
|
592
|
-
children: [/*#__PURE__*/
|
|
453
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.Box, {
|
|
593
454
|
sx: {
|
|
594
455
|
flex: "1 1 100%"
|
|
595
456
|
},
|
|
596
457
|
id: "tableTitle",
|
|
597
|
-
children: /*#__PURE__*/
|
|
458
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(ReloadBtn, {
|
|
598
459
|
onReload: onReload,
|
|
599
460
|
loading: reloadBtnLoading
|
|
600
|
-
})
|
|
601
|
-
}), /*#__PURE__*/
|
|
461
|
+
}, void 0, false)
|
|
462
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(SearchArea, {
|
|
602
463
|
current: searchTerm,
|
|
603
464
|
setFinalVal: onSearchChange,
|
|
604
465
|
searchName: name,
|
|
605
466
|
persistSearch: persistSearch
|
|
606
|
-
})]
|
|
607
|
-
})
|
|
608
|
-
});
|
|
467
|
+
}, void 0, false)]
|
|
468
|
+
}, void 0, true)
|
|
469
|
+
}, void 0, false);
|
|
609
470
|
}
|
|
610
471
|
TableToolbarContent.propTypes = {
|
|
611
472
|
onReload: PropTypes.func,
|
|
@@ -616,86 +477,82 @@ TableToolbarContent.propTypes = {
|
|
|
616
477
|
persistSearch: PropTypes.bool
|
|
617
478
|
};
|
|
618
479
|
|
|
619
|
-
function getInitialRowsPerPage(
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
480
|
+
function getInitialRowsPerPage({
|
|
481
|
+
rows,
|
|
482
|
+
subTable,
|
|
483
|
+
pageSizeOptions
|
|
484
|
+
}) {
|
|
623
485
|
if (subTable) return rows.length;
|
|
624
486
|
if (Array.isArray(pageSizeOptions) && pageSizeOptions.length > 0) {
|
|
625
487
|
return pageSizeOptions[0];
|
|
626
488
|
}
|
|
627
489
|
return 5;
|
|
628
490
|
}
|
|
629
|
-
function useEnhancedTableState(
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
}),
|
|
649
|
-
resetFlag: resetFlag
|
|
650
|
-
};
|
|
491
|
+
function useEnhancedTableState({
|
|
492
|
+
rows,
|
|
493
|
+
subTable,
|
|
494
|
+
pageSizeOptions,
|
|
495
|
+
resetFlag,
|
|
496
|
+
apiCall,
|
|
497
|
+
searchTerm,
|
|
498
|
+
setOrder,
|
|
499
|
+
setOrderBy,
|
|
500
|
+
order,
|
|
501
|
+
orderBy,
|
|
502
|
+
asyncPages
|
|
503
|
+
}) {
|
|
504
|
+
const [pagination, setPagination] = React.useState(() => ({
|
|
505
|
+
page: 0,
|
|
506
|
+
rowsPerPage: getInitialRowsPerPage({
|
|
507
|
+
rows,
|
|
508
|
+
subTable,
|
|
509
|
+
pageSizeOptions
|
|
651
510
|
}),
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
React.useEffect(function () {
|
|
511
|
+
resetFlag
|
|
512
|
+
}));
|
|
513
|
+
React.useEffect(() => {
|
|
656
514
|
// Resetting derived pagination state here intentionally preserves the
|
|
657
515
|
// current rows-per-page choice while jumping back to the first page.
|
|
658
516
|
// eslint-disable-next-line @eslint-react/set-state-in-effect
|
|
659
|
-
setPagination(
|
|
517
|
+
setPagination(previous => {
|
|
660
518
|
if (previous.resetFlag === resetFlag) {
|
|
661
519
|
return previous;
|
|
662
520
|
}
|
|
663
|
-
return
|
|
521
|
+
return {
|
|
522
|
+
...previous,
|
|
664
523
|
page: 0,
|
|
665
|
-
resetFlag
|
|
666
|
-
}
|
|
524
|
+
resetFlag
|
|
525
|
+
};
|
|
667
526
|
});
|
|
668
527
|
}, [resetFlag]);
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
528
|
+
const page = pagination.page;
|
|
529
|
+
const rowsPerPage = subTable ? rows.length : pagination.rowsPerPage;
|
|
530
|
+
const handleRequestSort = React.useCallback(property => {
|
|
531
|
+
const isAsc = orderBy === property && order === "asc";
|
|
673
532
|
setOrder(isAsc ? "desc" : "asc");
|
|
674
533
|
setOrderBy(property);
|
|
675
534
|
}, [order, orderBy, setOrder, setOrderBy]);
|
|
676
|
-
|
|
677
|
-
setPagination(
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
});
|
|
535
|
+
const handleChangePage = React.useCallback((event, newPage) => {
|
|
536
|
+
setPagination(previous => ({
|
|
537
|
+
...previous,
|
|
538
|
+
page: newPage
|
|
539
|
+
}));
|
|
682
540
|
}, []);
|
|
683
|
-
|
|
684
|
-
setPagination(
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
});
|
|
541
|
+
const handleChangeRowsPerPage = React.useCallback(event => {
|
|
542
|
+
setPagination(previous => ({
|
|
543
|
+
...previous,
|
|
544
|
+
page: 0,
|
|
545
|
+
rowsPerPage: Number.parseInt(event.target.value, 10)
|
|
546
|
+
}));
|
|
690
547
|
}, []);
|
|
691
|
-
|
|
548
|
+
const handleSort = (column, apiSortable) => {
|
|
692
549
|
if (apiSortable) {
|
|
693
|
-
|
|
550
|
+
const direction = order === "asc" ? "desc" : "asc";
|
|
694
551
|
apiCall({
|
|
695
|
-
searchTerm
|
|
696
|
-
column
|
|
697
|
-
direction
|
|
698
|
-
pages: asyncPages
|
|
552
|
+
searchTerm,
|
|
553
|
+
column,
|
|
554
|
+
direction,
|
|
555
|
+
pages: asyncPages ?? 1
|
|
699
556
|
});
|
|
700
557
|
setOrder(direction);
|
|
701
558
|
setOrderBy(column);
|
|
@@ -704,57 +561,55 @@ function useEnhancedTableState(_ref2) {
|
|
|
704
561
|
handleRequestSort(column);
|
|
705
562
|
};
|
|
706
563
|
return {
|
|
707
|
-
order
|
|
708
|
-
orderBy
|
|
709
|
-
page
|
|
710
|
-
rowsPerPage
|
|
711
|
-
handleChangePage
|
|
712
|
-
handleChangeRowsPerPage
|
|
713
|
-
handleSort
|
|
564
|
+
order,
|
|
565
|
+
orderBy,
|
|
566
|
+
page,
|
|
567
|
+
rowsPerPage,
|
|
568
|
+
handleChangePage,
|
|
569
|
+
handleChangeRowsPerPage,
|
|
570
|
+
handleSort
|
|
714
571
|
};
|
|
715
572
|
}
|
|
716
573
|
|
|
717
574
|
function EnhancedTableHead(props) {
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
575
|
+
const {
|
|
576
|
+
order,
|
|
577
|
+
orderBy,
|
|
578
|
+
onRequestSort,
|
|
579
|
+
selectRows,
|
|
580
|
+
numSelected,
|
|
581
|
+
rowCount,
|
|
582
|
+
onSelectAllClick,
|
|
583
|
+
async
|
|
584
|
+
} = props;
|
|
585
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableHead, {
|
|
586
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableRow, {
|
|
587
|
+
children: [selectRows && /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
729
588
|
padding: "checkbox",
|
|
730
|
-
children: /*#__PURE__*/
|
|
589
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Checkbox, {
|
|
731
590
|
color: "primary",
|
|
732
591
|
indeterminate: numSelected > 0 && numSelected < rowCount,
|
|
733
592
|
checked: rowCount > 0 && numSelected === rowCount,
|
|
734
593
|
onChange: onSelectAllClick
|
|
735
|
-
})
|
|
736
|
-
}), props.headings.map(
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
children:
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
}, headCell.id);
|
|
755
|
-
})]
|
|
756
|
-
})
|
|
757
|
-
});
|
|
594
|
+
}, void 0, false)
|
|
595
|
+
}, void 0, false), props.headings.map(headCell => /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
596
|
+
align: headCell.numeric ? "right" : "left",
|
|
597
|
+
padding: "normal",
|
|
598
|
+
sortDirection: orderBy === headCell.id ? order : false,
|
|
599
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableSortLabel, {
|
|
600
|
+
active: orderBy === headCell.id,
|
|
601
|
+
direction: orderBy === headCell.id ? order : "asc",
|
|
602
|
+
onClick: () => onRequestSort(headCell.id, headCell.sortable && async),
|
|
603
|
+
disabled: headCell.subRow,
|
|
604
|
+
children: [headCell.label, orderBy === headCell.id ? /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Box, {
|
|
605
|
+
component: "span",
|
|
606
|
+
sx: visuallyHidden,
|
|
607
|
+
children: order === "desc" ? "sorted descending" : "sorted ascending"
|
|
608
|
+
}, void 0, false) : undefined]
|
|
609
|
+
}, void 0, true)
|
|
610
|
+
}, headCell.id, false))]
|
|
611
|
+
}, void 0, true)
|
|
612
|
+
}, void 0, false);
|
|
758
613
|
}
|
|
759
614
|
EnhancedTableHead.propTypes = {
|
|
760
615
|
onRequestSort: PropTypes.func.isRequired,
|
|
@@ -768,32 +623,31 @@ EnhancedTableHead.propTypes = {
|
|
|
768
623
|
async: PropTypes.bool
|
|
769
624
|
};
|
|
770
625
|
|
|
771
|
-
|
|
772
|
-
return Promise.resolve().then(function () { return UniversalTable$1; });
|
|
773
|
-
});
|
|
626
|
+
const UniversalTable$2 = /*#__PURE__*/React.lazy(() => Promise.resolve().then(function () { return UniversalTable$1; }));
|
|
774
627
|
|
|
775
628
|
// ---------------------------------------------------------------------------
|
|
776
629
|
// SubRowToggleCell
|
|
777
630
|
// ---------------------------------------------------------------------------
|
|
778
631
|
|
|
779
|
-
function SubRowToggleCell(
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
632
|
+
function SubRowToggleCell({
|
|
633
|
+
header,
|
|
634
|
+
isOpen,
|
|
635
|
+
onToggle,
|
|
636
|
+
rowValues,
|
|
637
|
+
hideBadge
|
|
638
|
+
}) {
|
|
639
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
640
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Tooltip, {
|
|
641
|
+
title: isOpen ? `Hide ${header.id}` : `Show ${header.id}`,
|
|
642
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Box, {
|
|
643
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.IconButton, {
|
|
644
|
+
onClick: event => {
|
|
791
645
|
event.stopPropagation();
|
|
792
646
|
onToggle();
|
|
793
647
|
},
|
|
794
648
|
disabled: rowValues[header.id].length === 0,
|
|
795
649
|
color: header.iconColor || "secondary",
|
|
796
|
-
children: /*#__PURE__*/
|
|
650
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Badge, {
|
|
797
651
|
badgeContent: rowValues[header.id].length,
|
|
798
652
|
invisible: hideBadge,
|
|
799
653
|
anchorOrigin: {
|
|
@@ -802,17 +656,15 @@ function SubRowToggleCell(_ref) {
|
|
|
802
656
|
},
|
|
803
657
|
sx: {
|
|
804
658
|
"& .MuiBadge-badge": {
|
|
805
|
-
color:
|
|
806
|
-
return theme.palette.text.primary;
|
|
807
|
-
}
|
|
659
|
+
color: theme => theme.palette.text.primary
|
|
808
660
|
}
|
|
809
661
|
},
|
|
810
|
-
children: isOpen ?
|
|
811
|
-
})
|
|
812
|
-
})
|
|
813
|
-
})
|
|
814
|
-
})
|
|
815
|
-
});
|
|
662
|
+
children: isOpen ? header?.closeIcon || /*#__PURE__*/jsxDevRuntime.jsxDEV(iconsMaterial.RemoveCircle, {}, void 0, false) : header?.openIcon || /*#__PURE__*/jsxDevRuntime.jsxDEV(iconsMaterial.AddCircle, {}, void 0, false)
|
|
663
|
+
}, void 0, false)
|
|
664
|
+
}, void 0, false)
|
|
665
|
+
}, void 0, false)
|
|
666
|
+
}, void 0, false)
|
|
667
|
+
}, void 0, false);
|
|
816
668
|
}
|
|
817
669
|
SubRowToggleCell.propTypes = {
|
|
818
670
|
header: PropTypes.object.isRequired,
|
|
@@ -826,25 +678,26 @@ SubRowToggleCell.propTypes = {
|
|
|
826
678
|
// SubTableRow
|
|
827
679
|
// ---------------------------------------------------------------------------
|
|
828
680
|
|
|
829
|
-
function SubTableRow(
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
681
|
+
function SubTableRow({
|
|
682
|
+
table,
|
|
683
|
+
isOpen,
|
|
684
|
+
rowValues,
|
|
685
|
+
colSpan
|
|
686
|
+
}) {
|
|
687
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableRow, {
|
|
688
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
836
689
|
colSpan: colSpan,
|
|
837
690
|
style: {
|
|
838
691
|
paddingBottom: 0,
|
|
839
692
|
paddingTop: 0
|
|
840
693
|
},
|
|
841
|
-
children: /*#__PURE__*/
|
|
842
|
-
|
|
694
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Collapse, {
|
|
695
|
+
in: isOpen,
|
|
843
696
|
timeout: "auto",
|
|
844
697
|
unmountOnExit: true,
|
|
845
|
-
children: /*#__PURE__*/
|
|
698
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(React.Suspense, {
|
|
846
699
|
fallback: null,
|
|
847
|
-
children: /*#__PURE__*/
|
|
700
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(UniversalTable$2, {
|
|
848
701
|
loading: table.loading,
|
|
849
702
|
setLoading: table.setLoading,
|
|
850
703
|
onReload: table.onReload,
|
|
@@ -852,11 +705,11 @@ function SubTableRow(_ref2) {
|
|
|
852
705
|
headers: table.headers,
|
|
853
706
|
name: table.subTitle,
|
|
854
707
|
subTable: true
|
|
855
|
-
})
|
|
856
|
-
})
|
|
857
|
-
})
|
|
858
|
-
})
|
|
859
|
-
});
|
|
708
|
+
}, void 0, false)
|
|
709
|
+
}, void 0, false)
|
|
710
|
+
}, void 0, false)
|
|
711
|
+
}, void 0, false)
|
|
712
|
+
}, void 0, false);
|
|
860
713
|
}
|
|
861
714
|
SubTableRow.propTypes = {
|
|
862
715
|
table: PropTypes.object.isRequired,
|
|
@@ -866,84 +719,70 @@ SubTableRow.propTypes = {
|
|
|
866
719
|
};
|
|
867
720
|
|
|
868
721
|
function renderDataCells(headers, rowValues) {
|
|
869
|
-
return headers.map(
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
}), (_header$id = header.id) !== null && _header$id !== void 0 ? _header$id : header.label);
|
|
874
|
-
});
|
|
722
|
+
return headers.map(header => /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
723
|
+
...header.cellProps,
|
|
724
|
+
children: header.component ? header.component(rowValues) : formatCellValue(header, rowValues)
|
|
725
|
+
}, header.id ?? header.label, false));
|
|
875
726
|
}
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
subTables
|
|
886
|
-
columns
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
setReveal
|
|
895
|
-
|
|
896
|
-
setReveal(function (previous) {
|
|
897
|
-
var next = _toConsumableArray(previous);
|
|
727
|
+
const DataRow = /*#__PURE__*/React.memo(function DataRow(props) {
|
|
728
|
+
const {
|
|
729
|
+
rowValues,
|
|
730
|
+
headers,
|
|
731
|
+
selectRows,
|
|
732
|
+
isSelected,
|
|
733
|
+
handleClick
|
|
734
|
+
} = props;
|
|
735
|
+
const {
|
|
736
|
+
subTables,
|
|
737
|
+
columns
|
|
738
|
+
} = React.useMemo(() => splitHeaders(headers), [headers]);
|
|
739
|
+
const hideBadge = props.hideBadge || false;
|
|
740
|
+
const isItemSelected = isSelected(props.rowID);
|
|
741
|
+
const [reveal, setReveal] = React.useState(Array.from({
|
|
742
|
+
length: subTables.length
|
|
743
|
+
}).fill(false));
|
|
744
|
+
const toggleSubRow = React.useCallback(index => {
|
|
745
|
+
setReveal(previous => {
|
|
746
|
+
const next = [...previous];
|
|
898
747
|
next[index] = !next[index];
|
|
899
748
|
return next;
|
|
900
749
|
});
|
|
901
750
|
}, []);
|
|
902
|
-
|
|
751
|
+
const handleRowKeyDown = React.useCallback(event => {
|
|
903
752
|
if (selectRows && (event.key === " " || event.key === "Enter")) {
|
|
904
753
|
event.preventDefault();
|
|
905
754
|
handleClick(event, props.rowID);
|
|
906
755
|
}
|
|
907
756
|
}, [selectRows, handleClick, props.rowID]);
|
|
908
|
-
return /*#__PURE__*/
|
|
909
|
-
children: [/*#__PURE__*/
|
|
757
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, {
|
|
758
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableRow, {
|
|
910
759
|
tabIndex: selectRows ? 0 : -1,
|
|
911
760
|
hover: selectRows,
|
|
912
761
|
role: selectRows ? "checkbox" : "row",
|
|
913
762
|
selected: isItemSelected,
|
|
914
763
|
"aria-checked": isItemSelected,
|
|
915
764
|
onKeyDown: handleRowKeyDown,
|
|
916
|
-
children: [selectRows && /*#__PURE__*/
|
|
765
|
+
children: [selectRows && /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
917
766
|
padding: "checkbox",
|
|
918
|
-
children: /*#__PURE__*/
|
|
767
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Checkbox, {
|
|
919
768
|
color: "primary",
|
|
920
769
|
checked: isItemSelected,
|
|
921
|
-
onClick:
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
}), subTables.map(function (header, index) {
|
|
926
|
-
var _header$id2;
|
|
927
|
-
return /*#__PURE__*/jsxRuntime.jsx(SubRowToggleCell, {
|
|
928
|
-
header: header,
|
|
929
|
-
isOpen: reveal[index],
|
|
930
|
-
onToggle: function onToggle() {
|
|
931
|
-
return toggleSubRow(index);
|
|
932
|
-
},
|
|
933
|
-
rowValues: rowValues,
|
|
934
|
-
hideBadge: hideBadge
|
|
935
|
-
}, (_header$id2 = header.id) !== null && _header$id2 !== void 0 ? _header$id2 : header.label);
|
|
936
|
-
}), renderDataCells(columns, rowValues)]
|
|
937
|
-
}), subTables.map(function (table, index) {
|
|
938
|
-
var _table$id;
|
|
939
|
-
return /*#__PURE__*/jsxRuntime.jsx(SubTableRow, {
|
|
940
|
-
table: table,
|
|
770
|
+
onClick: event => handleClick(event, props.rowID)
|
|
771
|
+
}, void 0, false)
|
|
772
|
+
}, void 0, false), subTables.map((header, index) => /*#__PURE__*/jsxDevRuntime.jsxDEV(SubRowToggleCell, {
|
|
773
|
+
header: header,
|
|
941
774
|
isOpen: reveal[index],
|
|
775
|
+
onToggle: () => toggleSubRow(index),
|
|
942
776
|
rowValues: rowValues,
|
|
943
|
-
|
|
944
|
-
},
|
|
945
|
-
})
|
|
946
|
-
|
|
777
|
+
hideBadge: hideBadge
|
|
778
|
+
}, header.id ?? header.label, false)), renderDataCells(columns, rowValues)]
|
|
779
|
+
}, void 0, true), subTables.map((table, index) => /*#__PURE__*/jsxDevRuntime.jsxDEV(SubTableRow, {
|
|
780
|
+
table: table,
|
|
781
|
+
isOpen: reveal[index],
|
|
782
|
+
rowValues: rowValues,
|
|
783
|
+
colSpan: props.headers.length + 1
|
|
784
|
+
}, table.id ?? table.label, false))]
|
|
785
|
+
}, void 0, true);
|
|
947
786
|
});
|
|
948
787
|
DataRow.propTypes = {
|
|
949
788
|
rowValues: PropTypes.object.isRequired,
|
|
@@ -955,75 +794,72 @@ DataRow.propTypes = {
|
|
|
955
794
|
rowID: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired
|
|
956
795
|
};
|
|
957
796
|
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
return /*#__PURE__*/
|
|
962
|
-
children: [/*#__PURE__*/
|
|
963
|
-
children: skeletonRows.map(
|
|
964
|
-
|
|
965
|
-
children:
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
}, rowKey);
|
|
973
|
-
})
|
|
974
|
-
})]
|
|
975
|
-
});
|
|
797
|
+
const skeletonRows = ["row-1", "row-2", "row-3", "row-4", "row-5"];
|
|
798
|
+
const skeletonCells = ["cell-1", "cell-2", "cell-3", "cell-4"];
|
|
799
|
+
const TableLoader = () => {
|
|
800
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, {
|
|
801
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableHead, {}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableBody, {
|
|
802
|
+
children: skeletonRows.map(rowKey => /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableRow, {
|
|
803
|
+
children: skeletonCells.map(cellKey => /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
804
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Skeleton, {
|
|
805
|
+
height: 30
|
|
806
|
+
}, void 0, false)
|
|
807
|
+
}, cellKey, false))
|
|
808
|
+
}, rowKey, false))
|
|
809
|
+
}, void 0, false)]
|
|
810
|
+
}, void 0, true);
|
|
976
811
|
};
|
|
977
812
|
|
|
978
813
|
function EnhancedTable(props) {
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
814
|
+
const {
|
|
815
|
+
headers,
|
|
816
|
+
rows,
|
|
817
|
+
subTable,
|
|
818
|
+
selected,
|
|
819
|
+
selectID,
|
|
820
|
+
setLoading,
|
|
821
|
+
searchTerm,
|
|
822
|
+
setOrder,
|
|
823
|
+
setOrderBy,
|
|
824
|
+
order,
|
|
825
|
+
orderBy,
|
|
826
|
+
async,
|
|
827
|
+
asyncPages
|
|
828
|
+
} = props;
|
|
829
|
+
const {
|
|
830
|
+
page,
|
|
831
|
+
rowsPerPage,
|
|
832
|
+
handleSort,
|
|
833
|
+
handleChangePage,
|
|
834
|
+
handleChangeRowsPerPage
|
|
835
|
+
} = useEnhancedTableState({
|
|
836
|
+
rows,
|
|
837
|
+
subTable,
|
|
838
|
+
pageSizeOptions: props.pageSizeOptions,
|
|
839
|
+
resetFlag: props.resetFlag,
|
|
840
|
+
apiCall: setLoading,
|
|
841
|
+
searchTerm,
|
|
842
|
+
setOrder,
|
|
843
|
+
setOrderBy,
|
|
844
|
+
order,
|
|
845
|
+
orderBy,
|
|
846
|
+
asyncPages
|
|
847
|
+
});
|
|
848
|
+
const effectiveRowsPerPage = rowsPerPage === -1 ? rows.length : rowsPerPage;
|
|
849
|
+
const emptyRows = Math.max(0, effectiveRowsPerPage - Math.min(effectiveRowsPerPage, rows.length - page * effectiveRowsPerPage));
|
|
850
|
+
const isSelected = React.useCallback(id => selected.includes(id), [selected]);
|
|
851
|
+
const visibleRows = React.useMemo(() => {
|
|
1016
852
|
return stableSort(rows, getComparator(order, orderBy), headers, orderBy).slice(page * effectiveRowsPerPage, page * effectiveRowsPerPage + effectiveRowsPerPage);
|
|
1017
853
|
}, [effectiveRowsPerPage, headers, order, orderBy, page, rows]);
|
|
1018
|
-
return /*#__PURE__*/
|
|
1019
|
-
children: [/*#__PURE__*/
|
|
854
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableContainer, {
|
|
855
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(material.Table, {
|
|
1020
856
|
sx: {
|
|
1021
857
|
minWidth: 750
|
|
1022
858
|
},
|
|
1023
859
|
size: "small" ,
|
|
1024
860
|
"aria-label": props.name || "data table",
|
|
1025
|
-
children: props.loading ? /*#__PURE__*/
|
|
1026
|
-
children: [/*#__PURE__*/
|
|
861
|
+
children: props.loading ? /*#__PURE__*/jsxDevRuntime.jsxDEV(TableLoader, {}, void 0, false) : /*#__PURE__*/jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, {
|
|
862
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(EnhancedTableHead, {
|
|
1027
863
|
order: order,
|
|
1028
864
|
orderBy: orderBy,
|
|
1029
865
|
onRequestSort: handleSort,
|
|
@@ -1033,11 +869,11 @@ function EnhancedTable(props) {
|
|
|
1033
869
|
rowCount: rows.length,
|
|
1034
870
|
onSelectAllClick: props.handleSelectAllClick,
|
|
1035
871
|
async: async
|
|
1036
|
-
}), /*#__PURE__*/
|
|
1037
|
-
children: [visibleRows.map(
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
return /*#__PURE__*/
|
|
872
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableBody, {
|
|
873
|
+
children: [visibleRows.map((row, index) => {
|
|
874
|
+
const rowKey = selectID ? row[selectID] : `row-${page * effectiveRowsPerPage + index}`;
|
|
875
|
+
const rowID = getSelectableRowId(row, index, selectID);
|
|
876
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(DataRow, {
|
|
1041
877
|
rowID: rowID,
|
|
1042
878
|
headers: headers,
|
|
1043
879
|
rowValues: row,
|
|
@@ -1045,22 +881,22 @@ function EnhancedTable(props) {
|
|
|
1045
881
|
selectRows: props.selectRows,
|
|
1046
882
|
handleClick: props.handleClick,
|
|
1047
883
|
isSelected: isSelected
|
|
1048
|
-
}, rowKey);
|
|
1049
|
-
}), !subTable && emptyRows > 0 && /*#__PURE__*/
|
|
884
|
+
}, rowKey, false);
|
|
885
|
+
}), !subTable && emptyRows > 0 && /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableRow, {
|
|
1050
886
|
style: {
|
|
1051
887
|
height: (33 ) * emptyRows
|
|
1052
888
|
},
|
|
1053
|
-
children: /*#__PURE__*/
|
|
889
|
+
children: /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TableCell, {
|
|
1054
890
|
colSpan: headers.length
|
|
1055
|
-
})
|
|
1056
|
-
})]
|
|
1057
|
-
})]
|
|
1058
|
-
})
|
|
1059
|
-
}), subTable ? /*#__PURE__*/
|
|
891
|
+
}, void 0, false)
|
|
892
|
+
}, void 0, false)]
|
|
893
|
+
}, void 0, true)]
|
|
894
|
+
}, void 0, true)
|
|
895
|
+
}, void 0, false), subTable ? /*#__PURE__*/jsxDevRuntime.jsxDEV(material.Box, {
|
|
1060
896
|
sx: {
|
|
1061
897
|
mb: 3
|
|
1062
898
|
}
|
|
1063
|
-
}) : /*#__PURE__*/
|
|
899
|
+
}, void 0, false) : /*#__PURE__*/jsxDevRuntime.jsxDEV(material.TablePagination, {
|
|
1064
900
|
rowsPerPageOptions: props.pageSizeOptions || getPageOptions(rows.length),
|
|
1065
901
|
component: "div",
|
|
1066
902
|
count: rows.length,
|
|
@@ -1073,8 +909,8 @@ function EnhancedTable(props) {
|
|
|
1073
909
|
},
|
|
1074
910
|
showFirstButton: true,
|
|
1075
911
|
showLastButton: true
|
|
1076
|
-
})]
|
|
1077
|
-
});
|
|
912
|
+
}, void 0, false)]
|
|
913
|
+
}, void 0, true);
|
|
1078
914
|
}
|
|
1079
915
|
EnhancedTable.propTypes = {
|
|
1080
916
|
headers: PropTypes.array.isRequired,
|
|
@@ -1100,77 +936,68 @@ EnhancedTable.propTypes = {
|
|
|
1100
936
|
asyncPages: PropTypes.number
|
|
1101
937
|
};
|
|
1102
938
|
|
|
1103
|
-
function UniversalTable(
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
selectID: selectID
|
|
1147
|
-
}),
|
|
1148
|
-
selected = _useSelectableRows.selected,
|
|
1149
|
-
clearSelection = _useSelectableRows.clearSelection,
|
|
1150
|
-
handleSelectAllClick = _useSelectableRows.handleSelectAllClick,
|
|
1151
|
-
handleClick = _useSelectableRows.handleClick;
|
|
1152
|
-
var handleSearchChange = React.useCallback(function (value) {
|
|
939
|
+
function UniversalTable({
|
|
940
|
+
loading,
|
|
941
|
+
setLoading,
|
|
942
|
+
onReload,
|
|
943
|
+
lazyloading = false,
|
|
944
|
+
currentPage,
|
|
945
|
+
totalPages,
|
|
946
|
+
data,
|
|
947
|
+
headers,
|
|
948
|
+
name,
|
|
949
|
+
reloadBtnLoading,
|
|
950
|
+
subTable = false,
|
|
951
|
+
hideBadge = false,
|
|
952
|
+
selectRows = false,
|
|
953
|
+
selectID,
|
|
954
|
+
selectIcon,
|
|
955
|
+
onSelection,
|
|
956
|
+
pageSizeOptions,
|
|
957
|
+
persistSearch,
|
|
958
|
+
asyncPages
|
|
959
|
+
}) {
|
|
960
|
+
const debounceRef = React.useRef(null);
|
|
961
|
+
const hasLoadedInitialAsyncPageRef = React.useRef(false);
|
|
962
|
+
const async = typeof asyncPages === "number" && asyncPages > 0;
|
|
963
|
+
const head = headers || [];
|
|
964
|
+
const {
|
|
965
|
+
rows,
|
|
966
|
+
searchTerm,
|
|
967
|
+
setSearchTerm
|
|
968
|
+
} = useSearchableRows(data, head, async);
|
|
969
|
+
const [order, setOrder] = React.useState("asc");
|
|
970
|
+
const [orderBy, setOrderBy] = React.useState("");
|
|
971
|
+
const {
|
|
972
|
+
selected,
|
|
973
|
+
clearSelection,
|
|
974
|
+
handleSelectAllClick,
|
|
975
|
+
handleClick
|
|
976
|
+
} = useSelectableRows({
|
|
977
|
+
rows,
|
|
978
|
+
selectRows,
|
|
979
|
+
selectID
|
|
980
|
+
});
|
|
981
|
+
const handleSearchChange = React.useCallback(value => {
|
|
1153
982
|
clearSelection();
|
|
1154
983
|
setSearchTerm(value);
|
|
1155
984
|
}, [clearSelection, setSearchTerm]);
|
|
1156
|
-
|
|
985
|
+
const handleSelection = React.useCallback(selectedIds => {
|
|
1157
986
|
if (typeof onSelection !== "function") {
|
|
1158
987
|
return;
|
|
1159
988
|
}
|
|
1160
|
-
|
|
989
|
+
const result = onSelection(selectedIds);
|
|
1161
990
|
if (result instanceof Promise) {
|
|
1162
|
-
result.then(
|
|
1163
|
-
return clearSelection();
|
|
1164
|
-
});
|
|
991
|
+
result.then(() => clearSelection());
|
|
1165
992
|
return;
|
|
1166
993
|
}
|
|
1167
994
|
clearSelection();
|
|
1168
995
|
}, [onSelection, clearSelection]);
|
|
1169
|
-
|
|
996
|
+
const handleSearch = searchValue => {
|
|
1170
997
|
if (async) {
|
|
1171
998
|
setSearchTerm(searchValue);
|
|
1172
999
|
clearTimeout(debounceRef.current);
|
|
1173
|
-
debounceRef.current = setTimeout(
|
|
1000
|
+
debounceRef.current = setTimeout(() => {
|
|
1174
1001
|
setLoading({
|
|
1175
1002
|
searchTerm: searchValue,
|
|
1176
1003
|
direction: order,
|
|
@@ -1182,61 +1009,61 @@ function UniversalTable(_ref) {
|
|
|
1182
1009
|
handleSearchChange(searchValue);
|
|
1183
1010
|
}
|
|
1184
1011
|
};
|
|
1185
|
-
React.useEffect(
|
|
1186
|
-
return
|
|
1187
|
-
return clearTimeout(debounceRef.current);
|
|
1188
|
-
};
|
|
1012
|
+
React.useEffect(() => {
|
|
1013
|
+
return () => clearTimeout(debounceRef.current);
|
|
1189
1014
|
}, []);
|
|
1190
|
-
React.useEffect(
|
|
1015
|
+
React.useEffect(() => {
|
|
1191
1016
|
if (!async || hasLoadedInitialAsyncPageRef.current) {
|
|
1192
1017
|
return;
|
|
1193
1018
|
}
|
|
1194
1019
|
hasLoadedInitialAsyncPageRef.current = true;
|
|
1195
1020
|
setLoading({
|
|
1196
|
-
searchTerm
|
|
1021
|
+
searchTerm,
|
|
1197
1022
|
direction: order,
|
|
1198
1023
|
column: orderBy,
|
|
1199
1024
|
pages: asyncPages
|
|
1200
1025
|
});
|
|
1201
1026
|
}, [async, asyncPages, order, orderBy, searchTerm, setLoading]);
|
|
1202
|
-
|
|
1027
|
+
const handleReload = React.useCallback(() => {
|
|
1203
1028
|
if (typeof onReload === "function") {
|
|
1204
1029
|
onReload();
|
|
1205
1030
|
return;
|
|
1206
1031
|
}
|
|
1207
1032
|
if (typeof setLoading === "function") {
|
|
1208
1033
|
setLoading(async ? {
|
|
1209
|
-
searchTerm
|
|
1034
|
+
searchTerm,
|
|
1210
1035
|
direction: order,
|
|
1211
1036
|
column: orderBy,
|
|
1212
1037
|
pages: asyncPages
|
|
1213
1038
|
} : true);
|
|
1214
1039
|
}
|
|
1215
1040
|
}, [async, onReload, setLoading, searchTerm, order, orderBy, asyncPages]);
|
|
1216
|
-
return /*#__PURE__*/
|
|
1217
|
-
children: [/*#__PURE__*/
|
|
1041
|
+
return /*#__PURE__*/jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, {
|
|
1042
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(LazyLoadingIndicator, {
|
|
1218
1043
|
show: lazyloading,
|
|
1219
1044
|
currentPage: currentPage,
|
|
1220
1045
|
totalPages: totalPages
|
|
1221
|
-
}), /*#__PURE__*/
|
|
1222
|
-
sx:
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1046
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(Paper, {
|
|
1047
|
+
sx: {
|
|
1048
|
+
...(subTable && {
|
|
1049
|
+
boxShadow: "none"
|
|
1050
|
+
})
|
|
1051
|
+
},
|
|
1052
|
+
children: [/*#__PURE__*/jsxDevRuntime.jsxDEV(TableSelectionBanner, {
|
|
1226
1053
|
selected: selected,
|
|
1227
1054
|
onSelection: handleSelection,
|
|
1228
1055
|
selectIcon: selectIcon
|
|
1229
|
-
}), /*#__PURE__*/
|
|
1056
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(TableTitle, {
|
|
1230
1057
|
name: name,
|
|
1231
1058
|
subTable: subTable
|
|
1232
|
-
}), !subTable && /*#__PURE__*/
|
|
1059
|
+
}, void 0, false), !subTable && /*#__PURE__*/jsxDevRuntime.jsxDEV(TableToolbarContent, {
|
|
1233
1060
|
onReload: typeof onReload === "function" || typeof setLoading === "function" ? handleReload : undefined,
|
|
1234
1061
|
reloadBtnLoading: reloadBtnLoading,
|
|
1235
1062
|
searchTerm: searchTerm,
|
|
1236
1063
|
onSearchChange: handleSearch,
|
|
1237
1064
|
name: name,
|
|
1238
1065
|
persistSearch: persistSearch
|
|
1239
|
-
}), /*#__PURE__*/
|
|
1066
|
+
}, void 0, false), /*#__PURE__*/jsxDevRuntime.jsxDEV(EnhancedTable, {
|
|
1240
1067
|
headers: head,
|
|
1241
1068
|
rows: rows,
|
|
1242
1069
|
resetFlag: searchTerm,
|
|
@@ -1258,9 +1085,9 @@ function UniversalTable(_ref) {
|
|
|
1258
1085
|
setOrderBy: setOrderBy,
|
|
1259
1086
|
asyncPages: asyncPages,
|
|
1260
1087
|
async: async
|
|
1261
|
-
})]
|
|
1262
|
-
})]
|
|
1263
|
-
});
|
|
1088
|
+
}, void 0, false)]
|
|
1089
|
+
}, void 0, true)]
|
|
1090
|
+
}, void 0, true);
|
|
1264
1091
|
}
|
|
1265
1092
|
UniversalTable.propTypes = {
|
|
1266
1093
|
loading: PropTypes.bool,
|