@insticc/react-datagrid-2 1.1.12 → 1.1.13

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.
@@ -1,864 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
- var _materialReactTable = require("material-react-table");
11
- var _xDatePickers = require("@mui/x-date-pickers");
12
- var _AdapterDateFns = require("@mui/x-date-pickers/AdapterDateFns");
13
- var _semanticUiReact = require("semantic-ui-react");
14
- var _material = require("@mui/material");
15
- var _ColumnFilter = _interopRequireDefault(require("./ColumnFilter"));
16
- var _ExportActions = _interopRequireDefault(require("./ExportActions"));
17
- var _ActionButton = _interopRequireDefault(require("./ActionButton"));
18
- var _GridHelper = _interopRequireDefault(require("./utils/GridHelper"));
19
- var _gridFixedHeader = _interopRequireDefault(require("./utils/gridFixedHeader"));
20
- var _filters = require("./utils/filters");
21
- require("bootstrap/dist/css/bootstrap.min.css");
22
- require("semantic-ui-css/semantic.min.css");
23
- require("./styles/styles.css");
24
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
25
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
26
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
27
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
28
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
29
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
30
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
31
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
32
- function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
33
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
34
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); 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; } }
35
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
36
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
37
- function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
38
- var DataGrid = function DataGrid(_ref) {
39
- var columns = _ref.columns,
40
- columnVisibilityState = _ref.columnVisibilityState,
41
- columnOrder = _ref.columnOrder,
42
- createRows = _ref.createRows,
43
- _ref$actions = _ref.actions,
44
- actions = _ref$actions === void 0 ? null : _ref$actions,
45
- _ref$hasExcelExport = _ref.hasExcelExport,
46
- hasExcelExport = _ref$hasExcelExport === void 0 ? false : _ref$hasExcelExport,
47
- _ref$excelOption = _ref.excelOption,
48
- excelOption = _ref$excelOption === void 0 ? 'selectedRows' : _ref$excelOption,
49
- _ref$hasPdfExport = _ref.hasPdfExport,
50
- hasPdfExport = _ref$hasPdfExport === void 0 ? false : _ref$hasPdfExport,
51
- _ref$pdfOption = _ref.pdfOption,
52
- pdfOption = _ref$pdfOption === void 0 ? 'selectedRows' : _ref$pdfOption,
53
- _ref$rowHeight = _ref.rowHeight,
54
- rowHeight = _ref$rowHeight === void 0 ? 75 : _ref$rowHeight,
55
- _ref$fontSize = _ref.fontSize,
56
- fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,
57
- _ref$globalFilterFn = _ref.globalFilterFn,
58
- globalFilterFn = _ref$globalFilterFn === void 0 ? 'contains' : _ref$globalFilterFn,
59
- _ref$disableSelect = _ref.disableSelect,
60
- disableSelect = _ref$disableSelect === void 0 ? false : _ref$disableSelect,
61
- _ref$enableColumnFilt = _ref.enableColumnFilterModes,
62
- enableColumnFilterModes = _ref$enableColumnFilt === void 0 ? true : _ref$enableColumnFilt,
63
- _ref$pagination = _ref.pagination,
64
- pagination = _ref$pagination === void 0 ? 'both' : _ref$pagination,
65
- _ref$itemsPerPage = _ref.itemsPerPage,
66
- itemsPerPage = _ref$itemsPerPage === void 0 ? [50, 100, 150] : _ref$itemsPerPage,
67
- _ref$selectedIds = _ref.selectedIds,
68
- selectedIds = _ref$selectedIds === void 0 ? [] : _ref$selectedIds,
69
- selectData = _ref.selectData,
70
- rowKey = _ref.rowKey,
71
- _ref$pageSize = _ref.pageSize,
72
- pageSize = _ref$pageSize === void 0 ? 150 : _ref$pageSize,
73
- _ref$enableMultiRowSe = _ref.enableMultiRowSelection,
74
- enableMultiRowSelection = _ref$enableMultiRowSe === void 0 ? true : _ref$enableMultiRowSe,
75
- _ref$enableFullScreen = _ref.enableFullScreenToggle,
76
- enableFullScreenToggle = _ref$enableFullScreen === void 0 ? false : _ref$enableFullScreen,
77
- _ref$enableDensityTog = _ref.enableDensityToggle,
78
- enableDensityToggle = _ref$enableDensityTog === void 0 ? false : _ref$enableDensityTog,
79
- _ref$enableGlobalFilt = _ref.enableGlobalFilter,
80
- enableGlobalFilter = _ref$enableGlobalFilt === void 0 ? false : _ref$enableGlobalFilt,
81
- _ref$hasSubRows = _ref.hasSubRows,
82
- hasSubRows = _ref$hasSubRows === void 0 ? false : _ref$hasSubRows,
83
- _ref$enableExpanding = _ref.enableExpanding,
84
- enableExpanding = _ref$enableExpanding === void 0 ? false : _ref$enableExpanding,
85
- _ref$enablePagination = _ref.enablePagination,
86
- enablePagination = _ref$enablePagination === void 0 ? true : _ref$enablePagination,
87
- _ref$enableTopToolbar = _ref.enableTopToolbar,
88
- enableTopToolbar = _ref$enableTopToolbar === void 0 ? true : _ref$enableTopToolbar,
89
- _ref$enableBottomTool = _ref.enableBottomToolbar,
90
- enableBottomToolbar = _ref$enableBottomTool === void 0 ? false : _ref$enableBottomTool,
91
- _ref$enableVirtualiza = _ref.enableVirtualization,
92
- enableVirtualization = _ref$enableVirtualiza === void 0 ? false : _ref$enableVirtualiza,
93
- _ref$enableFixedHeade = _ref.enableFixedHeader,
94
- enableFixedHeader = _ref$enableFixedHeade === void 0 ? false : _ref$enableFixedHeade,
95
- _ref$gridHeight = _ref.gridHeight,
96
- gridHeight = _ref$gridHeight === void 0 ? 600 : _ref$gridHeight,
97
- onVisibleRowsChange = _ref.onVisibleRowsChange,
98
- updateCache = _ref.updateCache,
99
- cacheUpdateText = _ref.cacheUpdateText,
100
- cacheUpdating = _ref.cacheUpdating,
101
- getRowStyle = _ref.getRowStyle,
102
- _ref$gridHelper = _ref.gridHelper,
103
- gridHelper = _ref$gridHelper === void 0 ? null : _ref$gridHelper,
104
- _ref$disableRows = _ref.disableRows,
105
- disableRows = _ref$disableRows === void 0 ? [] : _ref$disableRows,
106
- _ref$selectAllMode = _ref.selectAllMode,
107
- selectAllMode = _ref$selectAllMode === void 0 ? 'page' : _ref$selectAllMode,
108
- _ref$hasClearFiltersB = _ref.hasClearFiltersBtn,
109
- hasClearFiltersBtn = _ref$hasClearFiltersB === void 0 ? true : _ref$hasClearFiltersB,
110
- _ref$enableCompactSty = _ref.enableCompactStyleMode,
111
- enableCompactStyleMode = _ref$enableCompactSty === void 0 ? false : _ref$enableCompactSty;
112
- var _useState = (0, _react.useState)(selectedIds.reduce(function (a, v) {
113
- return _objectSpread(_objectSpread({}, a), {}, _defineProperty({}, v, true));
114
- }, {})),
115
- _useState2 = _slicedToArray(_useState, 2),
116
- rowSelection = _useState2[0],
117
- setRowSelection = _useState2[1];
118
- var _useState3 = (0, _react.useState)(true),
119
- _useState4 = _slicedToArray(_useState3, 2),
120
- isLoading = _useState4[0],
121
- setIsLoading = _useState4[1];
122
- var _useState5 = (0, _react.useState)([]),
123
- _useState6 = _slicedToArray(_useState5, 2),
124
- sorting = _useState6[0],
125
- setSorting = _useState6[1];
126
- var _useState7 = (0, _react.useState)(false),
127
- _useState8 = _slicedToArray(_useState7, 2),
128
- open = _useState8[0],
129
- setOpen = _useState8[1];
130
- //optionally access the underlying virtualizer instance
131
- var rowVirtualizerInstanceRef = (0, _react.useRef)(null);
132
- if (gridHelper && (!gridHelper.content || !gridHelper.title)) {
133
- throw new Error("The 'gridHelper' prop object is expected to contain both 'title' and 'content' properties. Ensure that both are provided if 'gridHelper' is defined.");
134
- }
135
-
136
- // get the selected rows (if is a int that means that the row is selected if is a double that means that is a subrow)
137
- // so if is a subrow we need to go to the parent row and get the id that is on the position after the .
138
- // 308.1 this is a subrow so we need to get the 308 row and get the id of the subrow that is in the position 1 of the array
139
- var getSelectedRows = function getSelectedRows(rows) {
140
- var data = createRows;
141
- return Object.keys(rows).filter(function (key) {
142
- return rows[key];
143
- }).map(function (key) {
144
- if (key.toString().includes('.')) {
145
- // This is a subrow
146
- var _key$split = key.split('.'),
147
- _key$split2 = _slicedToArray(_key$split, 2),
148
- parentId = _key$split2[0],
149
- subRowIndex = _key$split2[1];
150
- var parentRow = data[parseInt(parentId, 10)];
151
- if (parentRow && parentRow.subRows) {
152
- return parentRow.subRows[parseInt(subRowIndex, 10)];
153
- }
154
- } else {
155
- // This is a parent row
156
- return data[parseInt(key, 10)];
157
- }
158
- return null;
159
- }).filter(function (row) {
160
- return row;
161
- });
162
- };
163
-
164
- // implemented to update selectedIds when props change
165
- (0, _react.useEffect)(function () {
166
- var currentSelectionIds = Object.keys(rowSelection);
167
- // Check if the lengths are different or if any `selectedIds` are not in `rowSelection`
168
- var isSelectionOutOfSync = selectedIds.length !== currentSelectionIds.length || selectedIds.some(function (id) {
169
- return !rowSelection[id];
170
- });
171
- if (isSelectionOutOfSync) {
172
- var newSelection = selectedIds.reduce(function (acc, id) {
173
- acc[id] = true; // Set true for each id in selectedIds
174
- return acc;
175
- }, {});
176
- setRowSelection(newSelection);
177
- }
178
- }, [selectedIds]);
179
- (0, _react.useEffect)(function () {
180
- if (hasSubRows) {
181
- if (Object.keys(rowSelection).length > 0) {
182
- selectData(getSelectedRows(rowSelection));
183
- }
184
- } else {
185
- // DEPRECATED:
186
- // selectData(table.getSelectedRowModel().rows.map(row => row.original));
187
-
188
- var selectedRowIds = Object.keys(table.getState().rowSelection);
189
- var selectedRows = selectedRowIds.map(function (rowId) {
190
- var matchingRow = table.getSelectedRowModel().rows.find(function (row) {
191
- return "".concat(row.id) === rowId;
192
- });
193
- return matchingRow ? matchingRow.original : null; // Return original if found
194
- }).filter(function (row) {
195
- return row !== null;
196
- }); // Filter out any null values
197
- selectData(selectedRows);
198
- }
199
- }, [rowSelection]);
200
- (0, _react.useEffect)(function () {
201
- if (typeof window !== 'undefined') {
202
- setIsLoading(false);
203
- }
204
- }, []);
205
- (0, _react.useEffect)(function () {
206
- //scroll to the top of the table when the sorting changes
207
- try {
208
- var _rowVirtualizerInstan, _rowVirtualizerInstan2;
209
- (_rowVirtualizerInstan = rowVirtualizerInstanceRef.current) === null || _rowVirtualizerInstan === void 0 || (_rowVirtualizerInstan2 = _rowVirtualizerInstan.scrollToIndex) === null || _rowVirtualizerInstan2 === void 0 || _rowVirtualizerInstan2.call(_rowVirtualizerInstan, 0);
210
- } catch (error) {
211
- console.error(error);
212
- }
213
- }, [sorting]);
214
-
215
- /**
216
- * Creates the columns for the DataGrid and generates it's default properties.
217
- * @param {Array} columns
218
- * @returns the DataGrid columns.
219
- */
220
- var createColumns = function createColumns(columns) {
221
- return columns.map(function (column) {
222
- var _column$enableSorting, _column$enableColumnF, _column$enableColumnF2, _column$filterFn, _column$enableResizin, _column$grow, _column$enableClickTo, _column$enableColumnA;
223
- return _objectSpread(_objectSpread({}, column), {}, {
224
- enableSorting: (_column$enableSorting = column.enableSorting) !== null && _column$enableSorting !== void 0 ? _column$enableSorting : true,
225
- enableColumnFilter: (_column$enableColumnF = column.enableColumnFilter) !== null && _column$enableColumnF !== void 0 ? _column$enableColumnF : true,
226
- enableColumnFilterModes: (_column$enableColumnF2 = column.enableColumnFilterModes) !== null && _column$enableColumnF2 !== void 0 ? _column$enableColumnF2 : true,
227
- filterFn: column.isDateColumn ? undefined : (_column$filterFn = column.filterFn) !== null && _column$filterFn !== void 0 ? _column$filterFn : 'contains',
228
- enableResizing: (_column$enableResizin = column.enableResizing) !== null && _column$enableResizin !== void 0 ? _column$enableResizin : true,
229
- grow: (_column$grow = column.grow) !== null && _column$grow !== void 0 ? _column$grow : true,
230
- enableClickToCopy: (_column$enableClickTo = column.enableClickToCopy) !== null && _column$enableClickTo !== void 0 ? _column$enableClickTo : false,
231
- enableColumnActions: (_column$enableColumnA = column.enableColumnActions) !== null && _column$enableColumnA !== void 0 ? _column$enableColumnA : false,
232
- // sortingFn: --> basic default, datetime for date
233
- sortingFn: column.sortingFn ? column.sortingFn : column.isDateColumn // Use custom sorting for date columns
234
- ? function (rowA, rowB, columnId) {
235
- var valueA = rowA.getValue(columnId);
236
- var valueB = rowB.getValue(columnId);
237
- // Parse values as timestamps or handle invalid dates
238
- var dateA = valueA && !isNaN(new Date(valueA).getTime()) ? new Date(valueA).getTime() : null;
239
- var dateB = valueB && !isNaN(new Date(valueB).getTime()) ? new Date(valueB).getTime() : null;
240
- if (dateA === null && dateB === null) return 0; // Both null, equal
241
- if (dateA === null) return 1; // Null values go last
242
- if (dateB === null) return -1; // Null values go last
243
- return dateA - dateB; // Compare by timestamp
244
- } : 'basic',
245
- // Use default sorting for non-date columns
246
- Cell: function Cell(props) {
247
- return column.cellClass ? /*#__PURE__*/_react["default"].createElement("div", {
248
- className: column.cellClass
249
- }, column.Cell ? /*#__PURE__*/_react["default"].createElement(column.Cell, props) : props.cell.getValue()) : column.Cell ? /*#__PURE__*/_react["default"].createElement(column.Cell, props) : props.cell.getValue();
250
- }
251
- });
252
- });
253
- };
254
- var renderTopToolbarCustomActions = function renderTopToolbarCustomActions(_ref2) {
255
- var table = _ref2.table;
256
- var selectedRows = table.getSelectedRowModel().flatRows;
257
- return /*#__PURE__*/_react["default"].createElement("div", {
258
- style: {
259
- display: 'flex',
260
- flexDirection: 'column',
261
- gap: '.5em',
262
- width: '100%'
263
- }
264
- }, /*#__PURE__*/_react["default"].createElement("div", {
265
- style: {
266
- display: 'flex',
267
- justifyContent: 'space-between'
268
- }
269
- }, /*#__PURE__*/_react["default"].createElement("div", {
270
- style: {
271
- display: 'flex',
272
- flexDirection: 'row',
273
- gap: '.5em',
274
- flexWrap: 'wrap'
275
- }
276
- }, (actions === null || actions === void 0 ? void 0 : actions.length) > 0 && actions.map(function (e) {
277
- var isVisible = e.visible !== undefined ? e.visible : true;
278
- if (isVisible) {
279
- return /*#__PURE__*/_react["default"].createElement(_ActionButton["default"], {
280
- table: table,
281
- key: e.key || e.name,
282
- toggle: e.toggle,
283
- active: e.active,
284
- name: e.name,
285
- tooltip: e.tooltip,
286
- onClick: e["function"],
287
- icon: e.icon,
288
- color: e.color,
289
- selectionMode: e.selectionMode,
290
- confirmMessage: e.confirmMessage,
291
- hasConfirmMessage: e.hasConfirmMessage,
292
- disabled: e.disabled
293
- });
294
- }
295
- }), /*#__PURE__*/_react["default"].createElement(_ExportActions["default"], {
296
- table: table,
297
- data: createRows,
298
- columns: columns,
299
- hasExcelExport: hasExcelExport,
300
- hasPdfExport: hasPdfExport,
301
- pdfOption: pdfOption,
302
- excelOption: excelOption
303
- })), /*#__PURE__*/_react["default"].createElement("div", {
304
- style: {
305
- display: 'flex',
306
- alignSelf: 'flex-end',
307
- justifyContent: 'end',
308
- flexDirection: 'row',
309
- flexWrap: 'wrap'
310
- }
311
- }, updateCache && /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
312
- title: cacheUpdateText,
313
- arrow: true
314
- }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
315
- circular: true,
316
- disabled: cacheUpdating,
317
- onClick: function onClick() {
318
- return updateCache();
319
- },
320
- content: /*#__PURE__*/_react["default"].createElement("img", {
321
- src: cacheUpdating ? require('./images/cacheloading.png') : require('./images/cache.png'),
322
- alt: "cache",
323
- style: {
324
- width: "60px"
325
- }
326
- }),
327
- primary: true,
328
- inverted: true,
329
- style: {
330
- display: 'flex',
331
- height: '36px',
332
- alignItems: 'center',
333
- justifyContent: 'center'
334
- }
335
- }))), (!disableSelect || disableRows.length > 0) && /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
336
- title: "Clear all rows selected",
337
- arrow: true
338
- }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
339
- circular: true,
340
- disabled: selectedRows.length < 1,
341
- onClick: function onClick() {
342
- return table.resetRowSelection();
343
- },
344
- content: /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
345
- style: {
346
- margin: 0,
347
- color: 'inherit'
348
- },
349
- name: "square outline"
350
- }), /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
351
- style: {
352
- margin: 0,
353
- color: 'inherit'
354
- },
355
- name: "close"
356
- })),
357
- primary: true,
358
- basic: true
359
- // style={{ display: 'flex', height: '40px', alignItems: 'center', justifyContent: 'center' }}
360
- }))), hasClearFiltersBtn && /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
361
- title: "Clear Filters",
362
- arrow: true
363
- }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
364
- circular: true,
365
- onClick: function onClick() {
366
- return table.resetColumnFilters();
367
- },
368
- content: /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
369
- style: {
370
- margin: 0,
371
- color: 'inherit'
372
- },
373
- name: "filter"
374
- }), /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
375
- style: {
376
- margin: 0,
377
- color: 'inherit'
378
- },
379
- name: "close"
380
- })),
381
- inverted: true,
382
- color: "orange"
383
- // style={{ display: 'flex', height: '40px', alignItems: 'center', justifyContent: 'center' }}
384
- }))), gridHelper && /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
385
- title: "Grid Help",
386
- arrow: true
387
- }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
388
- circular: true,
389
- onClick: function onClick() {
390
- return setOpen(true);
391
- },
392
- icon: "help",
393
- color: "blue"
394
- // style={{ display: 'flex', height: '40px', alignItems: 'center', justifyContent: 'center' }}
395
- }))))));
396
- };
397
-
398
- /**
399
- * Generates all the table's properties.
400
- */
401
- var table = (0, _materialReactTable.useMaterialReactTable)({
402
- data: createRows,
403
- columns: createColumns(columns),
404
- enableRowSelection: disableRows.length > 0 ? function (row) {
405
- return !disableRows.includes(row.original[rowKey]);
406
- } : !disableSelect,
407
- enableSubRowSelection: hasSubRows,
408
- enableMultiRowSelection: enableMultiRowSelection,
409
- enableFullScreenToggle: enableFullScreenToggle,
410
- enableDensityToggle: enableDensityToggle,
411
- enableGlobalFilter: enableGlobalFilter,
412
- enableGlobalFilterModes: false,
413
- enableToolbarInternalActions: false,
414
- positionToolbarAlertBanner: "none",
415
- enableColumnPinning: true,
416
- enableColumnResizing: true,
417
- selectAllMode: selectAllMode,
418
- autoResetPageIndex: false,
419
- enableColumnVirtualization: enableVirtualization,
420
- enableRowVirtualization: enableVirtualization,
421
- rowVirtualizerInstanceRef: rowVirtualizerInstanceRef,
422
- //optional
423
- rowVirtualizerOptions: {
424
- overscan: 5
425
- },
426
- //optionally customize the row virtualizer
427
- columnVirtualizerOptions: {
428
- overscan: columns.length
429
- },
430
- //optionally customize the column virtualizer
431
- state: {
432
- isLoading: isLoading,
433
- sorting: sorting,
434
- showColumnFilters: true,
435
- showGlobalFilter: enableGlobalFilter,
436
- rowSelection: rowSelection,
437
- columnVisibility: columnVisibilityState || {} // Add column visibility state
438
- },
439
- initialState: {
440
- // showColumnFilters: true,
441
- pagination: {
442
- pageSize: pageSize,
443
- pageIndex: 0
444
- },
445
- columnOrder: columnOrder || [] // Add column order to initial state
446
- },
447
- columnResizeMode: 'onEnd',
448
- enableColumnFilterModes: enableColumnFilterModes,
449
- globalFilterFn: globalFilterFn,
450
- positionPagination: pagination,
451
- paginationDisplayMode: 'pages',
452
- muiPaginationProps: {
453
- rowsPerPageOptions: itemsPerPage
454
- },
455
- layoutMode: 'grid',
456
- enableStickyHeader: true,
457
- filterFns: {
458
- regex: function regex(row, id, filterValue) {
459
- var regex = null;
460
- try {
461
- regex = new RegExp(filterValue, 'gi');
462
- } catch (e) {
463
- return regex;
464
- }
465
- return regex.test(row.getValue(id));
466
- },
467
- logical: function logical(row, id, filterValue) {
468
- var result = (0, _filters.logicalFilter)(row, id, filterValue);
469
- return result;
470
- }
471
- },
472
- localization: {
473
- filterRegex: 'Regex',
474
- filterLogical: 'Logical'
475
- },
476
- renderColumnFilterModeMenuItems: function renderColumnFilterModeMenuItems(_ref3) {
477
- var internalFilterOptions = _ref3.internalFilterOptions,
478
- onSelectFilterMode = _ref3.onSelectFilterMode;
479
- return [/*#__PURE__*/_react["default"].createElement(_ColumnFilter["default"], {
480
- key: "filters",
481
- filterOptions: internalFilterOptions,
482
- onSelectFilterMode: onSelectFilterMode
483
- })];
484
- },
485
- renderTopToolbar: function renderTopToolbar(_ref4) {
486
- var table = _ref4.table;
487
- var selectedRows = table.getSelectedRowModel().flatRows;
488
- var _table$getState$pagin = table.getState().pagination,
489
- pageIndex = _table$getState$pagin.pageIndex,
490
- pageSize = _table$getState$pagin.pageSize;
491
- var filteredRowCount = table.getFilteredRowModel().rows.length;
492
- return /*#__PURE__*/_react["default"].createElement("div", {
493
- style: {
494
- display: 'flex',
495
- flexDirection: 'column',
496
- padding: '8px',
497
- gap: '8px'
498
- },
499
- className: "grid-sticky-actions"
500
- }, renderTopToolbarCustomActions && /*#__PURE__*/_react["default"].createElement("div", {
501
- style: {
502
- width: '100%'
503
- }
504
- }, renderTopToolbarCustomActions({
505
- table: table
506
- })), /*#__PURE__*/_react["default"].createElement("div", {
507
- style: {
508
- display: 'flex',
509
- alignItems: 'center',
510
- gap: '8px',
511
- alignSelf: 'flex-end'
512
- }
513
- }, /*#__PURE__*/_react["default"].createElement(_material.Stack, {
514
- direction: "row",
515
- alignItems: "center",
516
- justifyContent: "space-between"
517
- }, /*#__PURE__*/_react["default"].createElement(_material.TablePagination, {
518
- component: "div",
519
- count: filteredRowCount,
520
- page: 0,
521
- onPageChange: function onPageChange() {},
522
- rowsPerPage: pageSize,
523
- onRowsPerPageChange: function onRowsPerPageChange(e) {
524
- return table.setPageSize(Number(e.target.value));
525
- },
526
- rowsPerPageOptions: itemsPerPage,
527
- labelDisplayedRows: function labelDisplayedRows() {
528
- return "";
529
- },
530
- showFirstButton: false,
531
- showLastButton: false,
532
- sx: {
533
- '& .MuiTablePagination-toolbar': {
534
- padding: 0,
535
- margin: 0,
536
- gap: '4px'
537
- },
538
- '& *': {
539
- margin: 0,
540
- fontSize: '14px'
541
- },
542
- "& .MuiTablePagination-actions": {
543
- display: "none"
544
- }
545
- }
546
- }), /*#__PURE__*/_react["default"].createElement(_material.Pagination, {
547
- count: Math.ceil(filteredRowCount / pageSize),
548
- page: pageIndex + 1,
549
- onChange: function onChange(_, value) {
550
- return table.setPageIndex(value - 1);
551
- },
552
- showFirstButton: true,
553
- showLastButton: true
554
- })), /*#__PURE__*/_react["default"].createElement("div", {
555
- style: {
556
- marginRight: '5px',
557
- fontSize: '14px'
558
- }
559
- }, /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
560
- title: "Selected/Filtered/Total",
561
- arrow: true
562
- }, /*#__PURE__*/_react["default"].createElement("span", null, !disableSelect && "".concat(selectedRows.length, "/"), filteredRowCount, "/", createRows.length)))));
563
- },
564
- muiTableHeadProps: {
565
- className: 'grid-sticky-header'
566
- },
567
- muiTableHeadCellProps: {
568
- sx: _objectSpread({}, enableCompactStyleMode ? {
569
- fontWeight: 'bold',
570
- fontSize: "clamp(".concat(fontSize - 3, "px, 1.2vw, ").concat(fontSize + 1, "px)"),
571
- borderRight: '1px solid #D7D7D7',
572
- borderTop: '1px solid #D7D7D7',
573
- padding: '7px',
574
- margin: 0,
575
- '& .Mui-TableHeadCell-ResizeHandle-Wrapper': {
576
- padding: '0 !important',
577
- width: '2px !important'
578
- },
579
- '& .MuiBox-root.css-17xkj1h': {
580
- padding: '0 !important',
581
- margin: '0 !important'
582
- },
583
- '& .MuiInputBase-root': {
584
- fontSize: "clamp(".concat(fontSize - 4, "px, 1vw, ").concat(fontSize - 1, "px)"),
585
- height: '17px',
586
- padding: '0 2px',
587
- width: '100%',
588
- margin: 0
589
- },
590
- '& .MuiFormHelperText-root': {
591
- fontSize: "clamp(".concat(fontSize - 4, "px, 0.9vw, ").concat(fontSize - 2, "px)")
592
- },
593
- '& .MuiCollapse-root': {
594
- maxHeight: enableColumnFilterModes ? '37px' : '17px'
595
- }
596
- } : {
597
- fontWeight: 'bold',
598
- // fontSize: '11px',
599
- fontSize: '14px',
600
- borderRight: '1px solid #D7D7D7',
601
- borderTop: '1px solid #D7D7D7',
602
- padding: 'auto'
603
- })
604
- },
605
- muiTableBodyCellProps: function muiTableBodyCellProps(_ref5) {
606
- var row = _ref5.row;
607
- var isDisabled = disableRows.length > 0 ? disableRows.includes(row.original[rowKey]) : false;
608
- return {
609
- sx: _objectSpread(_objectSpread({
610
- fontWeight: row.getIsSelected() ? "bold" : "normal",
611
- backgroundColor: isDisabled ? "#e3e3e3" : row.depth === 1 ? "lightgrey" : row.depth === 2 ? "grey" : "white",
612
- borderRight: "1px solid #D7D7D7",
613
- minHeight: rowHeight
614
- }, enableCompactStyleMode ? {
615
- padding: '2px',
616
- paddingLeft: row.depth ? "".concat(row.depth * 7, " px") : '7px',
617
- boxSizing: 'border-box',
618
- fontSize: "clamp(".concat(fontSize - 3, "px, 1.1vw, ").concat(fontSize, "px)"),
619
- whiteSpace: 'nowrap'
620
- } : {
621
- padding: "auto",
622
- paddingLeft: row.depth ? "".concat(row.depth * 15, "px") : "12px",
623
- boxSizing: "border-box"
624
- }), getRowStyle && getRowStyle({
625
- row: row
626
- }))
627
- };
628
- },
629
- muiTableBodyRowProps: function muiTableBodyRowProps(_ref6) {
630
- var row = _ref6.row;
631
- return {
632
- style: {
633
- backgroundColor: row.depth > 0 ? '#f0f0f0' : 'white'
634
- }
635
- };
636
- },
637
- muiTableContainerProps: {
638
- sx: {
639
- maxHeight: gridHeight
640
- }
641
- },
642
- defaultDisplayColumn: {
643
- enableResizing: true
644
- },
645
- defaultColumn: {
646
- maxSize: 800,
647
- // minSize: 50,
648
- minSize: 15,
649
- muiFilterCheckboxProps: {
650
- sx: {
651
- minWidth: 50
652
- }
653
- }
654
- },
655
- displayColumnDefOptions: {
656
- 'mrt-row-select': {
657
- size: 60,
658
- minSize: 10,
659
- header: '',
660
- muiTableBodyCellProps: {
661
- sx: {
662
- justifyContent: 'center',
663
- borderRight: '1px solid #D7D7D7'
664
- }
665
- },
666
- muiTableHeadCellProps: {
667
- sx: _objectSpread(_objectSpread({}, enableCompactStyleMode ? {
668
- fontSize: "".concat(fontSize, " px"),
669
- justifyContent: 'center'
670
- } : {
671
- fontSize: '14px',
672
- padding: enableMultiRowSelection && '0 18px'
673
- }), {}, {
674
- fontWeight: 'bold',
675
- borderRight: '1px solid #D7D7D7',
676
- borderTop: '1px solid #D7D7D7'
677
- })
678
- }
679
- },
680
- 'mrt-row-expand': {
681
- size: 25,
682
- minSize: 10,
683
- muiTableBodyCellProps: {
684
- sx: {
685
- justifyContent: 'center',
686
- borderRight: '1px solid #D7D7D7'
687
- }
688
- },
689
- muiTableHeadCellProps: {
690
- sx: {
691
- borderRight: '1px solid #D7D7D7',
692
- borderTop: '1px solid #D7D7D7'
693
- }
694
- }
695
- }
696
- },
697
- getRowId: function getRowId(originalRow) {
698
- return originalRow[rowKey];
699
- },
700
- getRowProps: function getRowProps(row) {
701
- var _row$original;
702
- return {
703
- style: {
704
- backgroundColor: (_row$original = row.original) !== null && _row$original !== void 0 && _row$original.isSubRow ? '#f0f0f0' : 'white'
705
- }
706
- };
707
- },
708
- onRowSelectionChange: setRowSelection,
709
- onSortingChange: setSorting,
710
- enablePagination: enablePagination,
711
- enableTopToolbar: enableTopToolbar,
712
- enableBottomToolbar: enableBottomToolbar,
713
- enableExpanding: enableExpanding,
714
- // the subrow only affect the subrow checkbox and the parent row checkbox is not affected, the parent row checkbox is only affected by the parent row checkbox
715
- muiSelectCheckboxProps: function muiSelectCheckboxProps(_ref7) {
716
- var row = _ref7.row;
717
- return hasSubRows && {
718
- checked: rowSelection[row.id] || false,
719
- indeterminate: false,
720
- onChange: function onChange() {
721
- var rowId = row.id.toString();
722
- setRowSelection(function (prev) {
723
- var newSelection = _objectSpread({}, prev);
724
- if (newSelection[rowId]) {
725
- // If the row is already selected, deselect it
726
- delete newSelection[rowId];
727
- } else {
728
- // If the row is not selected, select it
729
- newSelection[rowId] = true;
730
- }
731
- return newSelection;
732
- });
733
- }
734
- };
735
- }
736
- // renderToolbarAlertBannerContent: (e) => {
737
- // console.log(e);
738
- // return (
739
- // <div>
740
- // Hello
741
- // </div>
742
- // )}
743
- });
744
- (0, _react.useEffect)(function () {
745
- var rows = table.getRowModel().rows.map(function (r) {
746
- return r.original;
747
- });
748
- onVisibleRowsChange === null || onVisibleRowsChange === void 0 || onVisibleRowsChange(rows);
749
- }, [table.getRowModel().rows]);
750
- (0, _react.useEffect)(function () {
751
- return (0, _gridFixedHeader["default"])('fixed-header', enableFixedHeader);
752
- }, []);
753
- return /*#__PURE__*/_react["default"].createElement(_xDatePickers.LocalizationProvider, {
754
- dateAdapter: _AdapterDateFns.AdapterDateFns
755
- }, open && /*#__PURE__*/_react["default"].createElement(_GridHelper["default"], {
756
- onClose: function onClose() {
757
- return setOpen(false);
758
- },
759
- open: open,
760
- title: gridHelper.title,
761
- content: gridHelper.content
762
- }), /*#__PURE__*/_react["default"].createElement("span", {
763
- id: "fixed-header"
764
- }, /*#__PURE__*/_react["default"].createElement(_materialReactTable.MaterialReactTable, {
765
- table: table
766
- })));
767
- };
768
- DataGrid.propTypes = {
769
- columns: _propTypes["default"].array.isRequired,
770
- // array of the data grid columns
771
- columnVisibilityState: _propTypes["default"].object,
772
- // object for column visibility state
773
- columnOrder: _propTypes["default"].array,
774
- // array for column order
775
- createRows: _propTypes["default"].array.isRequired,
776
- // array of the data grid data
777
- actions: _propTypes["default"].arrayOf(_propTypes["default"].shape({
778
- name: _propTypes["default"].string,
779
- "function": _propTypes["default"].func.isRequired,
780
- tooltip: _propTypes["default"].string,
781
- color: _propTypes["default"].oneOf(['blue', 'red', 'green', 'yellow', 'orange', 'black', 'grey', 'teal', 'brown', 'violet', 'purple', 'olive', 'pink']),
782
- icon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].string]),
783
- selectionMode: _propTypes["default"].oneOf(['single', 'multi', 'always']),
784
- confirmMessage: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].string]),
785
- hasConfirmMessage: _propTypes["default"].bool
786
- })),
787
- // array of objects -> each object represents a single data grid action button
788
- hasExcelExport: _propTypes["default"].bool,
789
- // defines whether there is an export button for excel
790
- excelOption: _propTypes["default"].oneOf(['all', 'allRows', 'pageRows', 'selectedRows']),
791
- // defines the export excel option
792
- hasPdfExport: _propTypes["default"].bool,
793
- // defines whether there is an export button for pdf
794
- pdfOption: _propTypes["default"].oneOf(['all', 'allRows', 'pageRows', 'selectedRows']),
795
- // defines the export pdf option
796
- rowHeight: _propTypes["default"].number,
797
- // defines the row height
798
- fontSize: _propTypes["default"].number,
799
- // defines the font size
800
- globalFilterFn: _propTypes["default"].oneOf(['contains', 'fuzzy', 'between', 'equals', 'greaterThan', 'lessThan', 'notEquals', 'lessThanOrEqualTo', 'greaterThanOrEqualTo', 'empty', 'notEmpty', 'startsWith', 'endsWith', 'endsWith', 'betweenInclusive']),
801
- // defines the global filter option
802
- disableSelect: _propTypes["default"].bool,
803
- // defines whether the data grid has row selection (checkboxes)
804
- enableColumnFilterModes: _propTypes["default"].bool,
805
- // enables/disables column filtering modes
806
- hasClearFiltersBtn: _propTypes["default"].bool,
807
- // Defines whether there is an clear filters button
808
- pagination: _propTypes["default"].oneOf(['top', 'bottom', 'both']),
809
- // defines the pagination position
810
- itemsPerPage: _propTypes["default"].arrayOf(_propTypes["default"].number),
811
- // defines the number of rows per page
812
- selectData: _propTypes["default"].func,
813
- //
814
- rowKey: _propTypes["default"].string,
815
- //
816
- pageSize: _propTypes["default"].number,
817
- //
818
- enableMultiRowSelection: _propTypes["default"].bool,
819
- enableFullScreenToggle: _propTypes["default"].bool,
820
- enableDensityToggle: _propTypes["default"].bool,
821
- enableGlobalFilter: _propTypes["default"].bool,
822
- enableTopToolbar: _propTypes["default"].bool,
823
- // Defines whether there is top toolbar
824
- enableBottomToolbar: _propTypes["default"].bool,
825
- // Defines whether there is bottom toolbar
826
- enablePagination: _propTypes["default"].bool,
827
- // Defines whether there is an pagination
828
- enableVirtualization: _propTypes["default"].bool,
829
- gridHeight: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
830
- // defines the height of the grid content, can be a number like 600, or a string like '600px' or 'fit-content'
831
- gridHelper: _propTypes["default"].oneOfType([_propTypes["default"].shape({
832
- title: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element]).isRequired,
833
- // title is required if gridHelper exists
834
- content: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].element]).isRequired // content is required if gridHelper exists
835
- }), _propTypes["default"].oneOf([null]) // Allow null as a valid value
836
- ]),
837
- disableRows: _propTypes["default"].array,
838
- selectAllMode: _propTypes["default"].string,
839
- onVisibleRowsChange: _propTypes["default"].func,
840
- // Function called with the currently visible rows whenever the table updates its visible row model.
841
- enableFixedHeader: _propTypes["default"].bool,
842
- // Defines whether action buttons and headers are pinned to the top
843
- updateCache: _propTypes["default"].func,
844
- // Function triggered when the cache update button is clicked.
845
- cacheUpdateText: _propTypes["default"].string,
846
- // Tooltip text shown on hover over the cache update button.
847
- cacheUpdating: _propTypes["default"].bool,
848
- // Indicates whether a cache update is currently in progress.
849
- getRowStyle: _propTypes["default"].func,
850
- // Function that defines custom styles for each row.
851
- enableCompactStyleMode: _propTypes["default"].bool // Enables/disables the compact style mode
852
- };
853
- var _default = exports["default"] = DataGrid; // DataGrid.defaultProps = {
854
- // hasExcelExport: false,
855
- // hasPdfExport: false,
856
- // excelOption: 'allRows',
857
- // pdfOption: 'allRows',
858
- // globalFilterFn: 'contains',
859
- // enableColumnFilterModes: true,
860
- // disableSelect: false,
861
- // pagination: 'both',
862
- // itemsPerPage: [10, 15, 20, 25],
863
- // rowHeight: 60,
864
- // };