@redsift/table 12.5.5 → 12.5.6-muiv6
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/_internal/BaseComponents.js +1 -1
- package/_internal/BasePopper.js +2469 -0
- package/_internal/BasePopper.js.map +1 -0
- package/_internal/ControlledPagination.js +11004 -0
- package/_internal/ControlledPagination.js.map +1 -0
- package/_internal/DataGrid2.js +80 -183
- package/_internal/DataGrid2.js.map +1 -1
- package/_internal/GridToolbarFilterSemanticField2.js +3 -1340
- package/_internal/GridToolbarFilterSemanticField2.js.map +1 -1
- package/_internal/Pagination.js +1 -1
- package/_internal/Portal.js +6538 -0
- package/_internal/Portal.js.map +1 -0
- package/_internal/StatefulDataGrid.js +1 -1
- package/_internal/StatefulDataGrid2.js +1678 -1169
- package/_internal/StatefulDataGrid2.js.map +1 -1
- package/_internal/Toolbar2.js +6 -23
- package/_internal/Toolbar2.js.map +1 -1
- package/_internal/ToolbarWrapper2.js +1 -1
- package/_internal/jsx-runtime.js +1342 -0
- package/_internal/jsx-runtime.js.map +1 -0
- package/_internal/useControlledDatagridState.js +372 -13
- package/_internal/useControlledDatagridState.js.map +1 -1
- package/index.d.ts +373 -519
- package/index.js +15 -46
- package/index.js.map +1 -1
- package/package.json +10 -9
- package/_internal/BaseIconButton.js +0 -126
- package/_internal/BaseIconButton.js.map +0 -1
- package/_internal/ServerSideControlledPagination.js +0 -337
- package/_internal/ServerSideControlledPagination.js.map +0 -1
package/_internal/DataGrid2.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { a as _objectWithoutProperties, b as _extends, _ as _objectSpread2 } from './_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React__default, { forwardRef, useRef, useState, useEffect, useMemo } from 'react';
|
|
3
|
-
import { createTheme, ThemeProvider as ThemeProvider$1 } from '@mui/material/styles';
|
|
4
3
|
import classNames from 'classnames';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { u as useControlledDatagridState, S as StyledDataGrid } from './useControlledDatagridState.js';
|
|
9
|
-
import { n as normalizeRowSelectionModel, o as onServerSideSelectionStatusChange, g as getSelectionCount, i as isRowSelected, S as ServerSideControlledPagination, C as ControlledPagination, f as fixServerSideHeaderCheckboxSelection } from './ServerSideControlledPagination.js';
|
|
10
|
-
import { B as BaseButton, a as BaseCheckbox, c as BaseIconButton, b as BaseIcon } from './BaseIconButton.js';
|
|
11
|
-
import { T as ToolbarWrapper } from './ToolbarWrapper2.js';
|
|
4
|
+
import { useTheme, ThemeProvider, RedsiftColorBlueN, RedsiftColorNeutralXDarkGrey, RedsiftColorNeutralWhite } from '@redsift/design-system';
|
|
5
|
+
import { useGridApiRef, gridPaginatedVisibleSortedGridRowEntriesSelector, gridPaginatedVisibleSortedGridRowIdsSelector, gridFilteredSortedRowEntriesSelector, gridFilteredSortedRowIdsSelector, DataGridPro } from '@mui/x-data-grid-pro';
|
|
6
|
+
import { L as LicenseInfo, u as useControlledDatagridState, T as ThemeProvider$1, S as StyledDataGrid, B as BottomPagination, b as baseGridSlots } from './useControlledDatagridState.js';
|
|
12
7
|
import { T as Toolbar } from './Toolbar2.js';
|
|
8
|
+
import { o as onServerSideSelectionStatusChange, f as fixServerSideHeaderCheckboxSelection } from './ControlledPagination.js';
|
|
9
|
+
import { c as createTheme } from './Portal.js';
|
|
10
|
+
import { T as ToolbarWrapper } from './ToolbarWrapper2.js';
|
|
13
11
|
|
|
14
|
-
const _excluded = ["apiRef", "autoHeight", "className", "slots", "slotProps", "filterModel", "columnVisibilityModel", "pinnedColumns", "sortModel", "paginationModel", "height", "hideToolbar", "initialState", "isRowSelectable", "license", "onFilterModelChange", "rowSelectionModel", "onPaginationModelChange", "onRowSelectionModelChange", "onColumnVisibilityModelChange", "onPinnedColumnsChange", "onSortModelChange", "pagination", "paginationPlacement", "selectionBannerPlacement", "paginationProps", "rows", "pageSizeOptions", "sx", "theme", "paginationMode", "rowCount"
|
|
12
|
+
const _excluded = ["apiRef", "autoHeight", "className", "slots", "slotProps", "filterModel", "columnVisibilityModel", "pinnedColumns", "sortModel", "paginationModel", "height", "hideToolbar", "initialState", "isRowSelectable", "license", "onFilterModelChange", "rowSelectionModel", "onPaginationModelChange", "onRowSelectionModelChange", "onColumnVisibilityModelChange", "onPinnedColumnsChange", "onSortModelChange", "pagination", "paginationPlacement", "selectionBannerPlacement", "paginationProps", "rows", "pageSizeOptions", "sx", "theme", "paginationMode", "rowCount"];
|
|
15
13
|
const COMPONENT_NAME = 'DataGrid';
|
|
16
14
|
const CLASSNAME = 'redsift-datagrid';
|
|
17
15
|
|
|
@@ -88,7 +86,6 @@ const CLASSNAME = 'redsift-datagrid';
|
|
|
88
86
|
*/
|
|
89
87
|
|
|
90
88
|
const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
91
|
-
var _ref7;
|
|
92
89
|
const datagridRef = ref || useRef();
|
|
93
90
|
const {
|
|
94
91
|
apiRef: propsApiRef,
|
|
@@ -118,17 +115,17 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
118
115
|
selectionBannerPlacement = 'top',
|
|
119
116
|
paginationProps,
|
|
120
117
|
rows,
|
|
121
|
-
pageSizeOptions
|
|
118
|
+
pageSizeOptions,
|
|
122
119
|
sx,
|
|
123
120
|
theme: propsTheme,
|
|
124
121
|
paginationMode = 'client',
|
|
125
|
-
rowCount
|
|
126
|
-
density
|
|
122
|
+
rowCount
|
|
127
123
|
} = props,
|
|
128
124
|
forwardedProps = _objectWithoutProperties(props, _excluded);
|
|
129
125
|
const theme = useTheme(propsTheme);
|
|
130
126
|
const _apiRef = useGridApiRef();
|
|
131
127
|
const apiRef = propsApiRef !== null && propsApiRef !== void 0 ? propsApiRef : _apiRef;
|
|
128
|
+
const RenderedToolbar = slots !== null && slots !== void 0 && slots.toolbar ? slots.toolbar : Toolbar;
|
|
132
129
|
LicenseInfo.setLicenseKey(license);
|
|
133
130
|
const height = propsHeight !== null && propsHeight !== void 0 ? propsHeight : autoHeight ? undefined : '500px';
|
|
134
131
|
const {
|
|
@@ -156,9 +153,9 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
156
153
|
propsSortModel,
|
|
157
154
|
propsOnPaginationModelChange
|
|
158
155
|
});
|
|
159
|
-
const [rowSelectionModel, setRowSelectionModel] = useState(
|
|
156
|
+
const [rowSelectionModel, setRowSelectionModel] = useState(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
|
|
160
157
|
useEffect(() => {
|
|
161
|
-
setRowSelectionModel(
|
|
158
|
+
setRowSelectionModel(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
|
|
162
159
|
}, [propsRowSelectionModel]);
|
|
163
160
|
const onRowSelectionModelChange = (selectionModel, details) => {
|
|
164
161
|
setRowSelectionModel(selectionModel);
|
|
@@ -174,36 +171,22 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
174
171
|
pageSize: paginationModel.pageSize
|
|
175
172
|
});
|
|
176
173
|
|
|
177
|
-
// Version counter to force re-renders when selectionStatus ref changes
|
|
178
|
-
const [, forceSelectionUpdate] = useState(0);
|
|
179
|
-
|
|
180
|
-
// Track when the grid API is ready to ensure top pagination renders correctly
|
|
181
|
-
const [gridReady, setGridReady] = useState(false);
|
|
182
|
-
|
|
183
174
|
// The checkboxSelectionVisibleOnly should only be applied to client-side pagination,
|
|
184
175
|
// for server-side pagination it produces inconsistent behavior when selecting all rows in pages 2 and beyond
|
|
185
176
|
const checkboxSelectionVisibleOnly = Boolean(pagination) && Boolean(paginationMode != 'server');
|
|
186
177
|
|
|
187
178
|
// Banner and pager placements are independent. `belowToolbar` (for either) renders
|
|
188
|
-
// in
|
|
179
|
+
// in the toolbar-slot row, and only applies when pagination is on.
|
|
189
180
|
const bannerAtTop = selectionBannerPlacement === 'top';
|
|
190
181
|
const bannerAtBottom = selectionBannerPlacement === 'bottom';
|
|
191
182
|
const bannerBelowToolbar = selectionBannerPlacement === 'belowToolbar' && Boolean(pagination);
|
|
192
183
|
const pagerBelowToolbar = paginationPlacement === 'belowToolbar' && Boolean(pagination);
|
|
193
|
-
const belowToolbarActive = bannerBelowToolbar || pagerBelowToolbar;
|
|
194
|
-
|
|
195
|
-
// Force re-render when the grid API becomes ready (for top pagination)
|
|
196
|
-
useEffect(() => {
|
|
197
|
-
if (apiRef.current && !gridReady) {
|
|
198
|
-
setGridReady(true);
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
184
|
|
|
202
185
|
// in server-side pagination we want to update the selection status
|
|
203
186
|
// every time we navigate between pages, resize our page or select something
|
|
204
187
|
useEffect(() => {
|
|
205
188
|
if (paginationMode == 'server') {
|
|
206
|
-
onServerSideSelectionStatusChange(rowSelectionModel, apiRef, selectionStatusRef,
|
|
189
|
+
onServerSideSelectionStatusChange(Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], apiRef, selectionStatusRef, isRowSelectable, paginationModel.page, paginationModel.pageSize);
|
|
207
190
|
}
|
|
208
191
|
}, [rowSelectionModel, paginationModel.page, paginationModel.pageSize, rows]);
|
|
209
192
|
if (!Array.isArray(rows)) {
|
|
@@ -215,15 +198,9 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
215
198
|
// receive the fresh value in the same render cycle — no extra re-render needed.
|
|
216
199
|
// The ref is kept in sync for the onRowSelectionModelChange callback's deselect logic.
|
|
217
200
|
let selectionStatus = selectionStatusRef.current;
|
|
218
|
-
if (pagination && paginationMode !== 'server' &&
|
|
201
|
+
if (pagination && paginationMode !== 'server' && Array.isArray(rowSelectionModel) && rowSelectionModel.length > 0) {
|
|
219
202
|
try {
|
|
220
|
-
|
|
221
|
-
// MUI's paginated selectors use apiRef internal state which may be stale when
|
|
222
|
-
// paginationModel prop changes — our React state is always up to date.
|
|
223
|
-
const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);
|
|
224
|
-
const pageStart = paginationModel.page * paginationModel.pageSize;
|
|
225
|
-
const pageEntries = allFilteredEntries.slice(pageStart, pageStart + paginationModel.pageSize);
|
|
226
|
-
const selectableRowsInPage = isRowSelectable ? pageEntries.filter(_ref => {
|
|
203
|
+
const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref => {
|
|
227
204
|
let {
|
|
228
205
|
model
|
|
229
206
|
} = _ref;
|
|
@@ -235,29 +212,24 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
235
212
|
id
|
|
236
213
|
} = _ref2;
|
|
237
214
|
return id;
|
|
238
|
-
}) :
|
|
239
|
-
let {
|
|
240
|
-
id
|
|
241
|
-
} = _ref3;
|
|
242
|
-
return id;
|
|
243
|
-
});
|
|
215
|
+
}) : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);
|
|
244
216
|
const numberOfSelectableRowsInPage = selectableRowsInPage.length;
|
|
245
|
-
const selectableRowsInTable = isRowSelectable ?
|
|
217
|
+
const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref3 => {
|
|
246
218
|
let {
|
|
247
219
|
model
|
|
248
|
-
} =
|
|
220
|
+
} = _ref3;
|
|
249
221
|
return isRowSelectable({
|
|
250
222
|
row: model
|
|
251
223
|
});
|
|
252
|
-
}).map(
|
|
224
|
+
}).map(_ref4 => {
|
|
253
225
|
let {
|
|
254
226
|
id
|
|
255
|
-
} =
|
|
227
|
+
} = _ref4;
|
|
256
228
|
return id;
|
|
257
229
|
}) : gridFilteredSortedRowIdsSelector(apiRef);
|
|
258
230
|
const numberOfSelectableRowsInTable = selectableRowsInTable.length;
|
|
259
|
-
const numberOfSelectedRows =
|
|
260
|
-
const selectedOnCurrentPage = selectableRowsInPage.filter(id =>
|
|
231
|
+
const numberOfSelectedRows = rowSelectionModel.length;
|
|
232
|
+
const selectedOnCurrentPage = selectableRowsInPage.filter(id => rowSelectionModel.includes(id));
|
|
261
233
|
if (numberOfSelectedRows === numberOfSelectableRowsInTable && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
|
|
262
234
|
selectionStatus = {
|
|
263
235
|
type: 'table',
|
|
@@ -311,126 +283,63 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
311
283
|
ref: datagridRef,
|
|
312
284
|
className: classNames(DataGrid.className, className),
|
|
313
285
|
$height: height
|
|
314
|
-
},
|
|
315
|
-
displaySelection: bannerAtTop,
|
|
316
|
-
displayRowsPerPage: ['top', 'both'].includes(paginationPlacement),
|
|
317
|
-
displayPagination: ['top', 'both'].includes(paginationPlacement),
|
|
318
|
-
selectionStatus: selectionStatus,
|
|
319
|
-
paginationModel: paginationModel,
|
|
320
|
-
onPaginationModelChange: onPaginationModelChange,
|
|
321
|
-
pageSizeOptions: pageSizeOptions,
|
|
322
|
-
paginationProps: paginationProps,
|
|
323
|
-
rowCount: rowCount
|
|
324
|
-
}) : /*#__PURE__*/React__default.createElement(ControlledPagination, {
|
|
325
|
-
displaySelection: bannerAtTop,
|
|
326
|
-
displayRowsPerPage: ['top', 'both'].includes(paginationPlacement),
|
|
327
|
-
displayPagination: ['top', 'both'].includes(paginationPlacement),
|
|
328
|
-
selectionStatus: selectionStatus,
|
|
329
|
-
apiRef: apiRef,
|
|
330
|
-
isRowSelectable: isRowSelectable,
|
|
331
|
-
paginationModel: paginationModel,
|
|
332
|
-
onPaginationModelChange: onPaginationModelChange,
|
|
333
|
-
pageSizeOptions: pageSizeOptions,
|
|
334
|
-
paginationProps: paginationProps
|
|
335
|
-
}) : null, /*#__PURE__*/React__default.createElement(DataGridPremium, _extends({}, forwardedProps, {
|
|
286
|
+
}, /*#__PURE__*/React__default.createElement(DataGridPro, _extends({}, forwardedProps, {
|
|
336
287
|
rowCount: rowCount,
|
|
337
288
|
apiRef: apiRef,
|
|
338
289
|
autoHeight: autoHeight,
|
|
339
290
|
checkboxSelectionVisibleOnly: checkboxSelectionVisibleOnly,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
displayName: "exportIcon"
|
|
375
|
-
})),
|
|
376
|
-
openFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
|
|
377
|
-
displayName: "openFilterButtonIcon"
|
|
378
|
-
}))
|
|
379
|
-
}, slots), belowToolbarActive ? {
|
|
380
|
-
toolbar: toolbarProps => {
|
|
381
|
-
var _ref6;
|
|
382
|
-
return /*#__PURE__*/React__default.createElement(ToolbarWrapper, _extends({}, toolbarProps, {
|
|
383
|
-
RenderedToolbar: (_ref6 = slots === null || slots === void 0 ? void 0 : slots.toolbar) !== null && _ref6 !== void 0 ? _ref6 : Toolbar,
|
|
384
|
-
hideToolbar: hideToolbar,
|
|
385
|
-
filterModel: filterModel,
|
|
386
|
-
onFilterModelChange: onFilterModelChange,
|
|
387
|
-
pagination: pagination,
|
|
388
|
-
paginationMode: paginationMode,
|
|
389
|
-
displaySelection: bannerBelowToolbar,
|
|
390
|
-
displayPagination: pagerBelowToolbar,
|
|
391
|
-
displayRowsPerPage: pagerBelowToolbar,
|
|
392
|
-
selectionStatus: selectionStatus,
|
|
393
|
-
apiRef: apiRef,
|
|
394
|
-
isRowSelectable: isRowSelectable,
|
|
395
|
-
paginationModel: paginationModel,
|
|
396
|
-
onPaginationModelChange: onPaginationModelChange,
|
|
397
|
-
pageSizeOptions: pageSizeOptions,
|
|
398
|
-
paginationProps: paginationProps,
|
|
399
|
-
rowCount: rowCount
|
|
400
|
-
}));
|
|
401
|
-
}
|
|
402
|
-
} : {}), {}, {
|
|
403
|
-
pagination: props => pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, _extends({}, props, {
|
|
404
|
-
displaySelection: bannerAtBottom,
|
|
405
|
-
displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
|
|
406
|
-
displayPagination: ['bottom', 'both'].includes(paginationPlacement),
|
|
407
|
-
selectionStatus: selectionStatus,
|
|
408
|
-
paginationModel: paginationModel,
|
|
409
|
-
onPaginationModelChange: onPaginationModelChange,
|
|
410
|
-
pageSizeOptions: pageSizeOptions,
|
|
411
|
-
paginationProps: paginationProps,
|
|
412
|
-
rowCount: rowCount
|
|
413
|
-
})) : /*#__PURE__*/React__default.createElement(ControlledPagination, _extends({}, props, {
|
|
291
|
+
slots: _objectSpread2(_objectSpread2(_objectSpread2({}, baseGridSlots), slots), {}, {
|
|
292
|
+
// The toolbar is already a stable module-level component (ToolbarWrapper) with its
|
|
293
|
+
// per-render data injected via `slotProps.toolbar` below. `BottomPagination` is
|
|
294
|
+
// likewise stable; a fresh inline function here would remount the slot's subtree
|
|
295
|
+
// every render.
|
|
296
|
+
toolbar: ToolbarWrapper,
|
|
297
|
+
pagination: BottomPagination
|
|
298
|
+
}),
|
|
299
|
+
slotProps: _objectSpread2(_objectSpread2({}, slotProps), {}, {
|
|
300
|
+
toolbar: _objectSpread2({
|
|
301
|
+
hideToolbar,
|
|
302
|
+
RenderedToolbar,
|
|
303
|
+
filterModel,
|
|
304
|
+
onFilterModelChange,
|
|
305
|
+
pagination,
|
|
306
|
+
displaySelection: bannerAtTop || bannerBelowToolbar,
|
|
307
|
+
displayPagination: ['top', 'both'].includes(paginationPlacement) || pagerBelowToolbar,
|
|
308
|
+
displayRowsPerPage: pagerBelowToolbar,
|
|
309
|
+
selectionStatus,
|
|
310
|
+
apiRef,
|
|
311
|
+
isRowSelectable,
|
|
312
|
+
paginationModel,
|
|
313
|
+
onPaginationModelChange,
|
|
314
|
+
pageSizeOptions,
|
|
315
|
+
paginationProps,
|
|
316
|
+
paginationMode,
|
|
317
|
+
rowCount
|
|
318
|
+
}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.toolbar),
|
|
319
|
+
// Per-render data for the stable `BottomPagination` slot. Consumer slot props are
|
|
320
|
+
// spread first; the DS layout data wins. Cast at the MUI boundary because these are
|
|
321
|
+
// ToolbarWrapper props, not the MUI slot prop types.
|
|
322
|
+
pagination: _objectSpread2(_objectSpread2({}, slotProps === null || slotProps === void 0 ? void 0 : slotProps.pagination), {}, {
|
|
323
|
+
pagination,
|
|
324
|
+
paginationMode,
|
|
414
325
|
displaySelection: bannerAtBottom,
|
|
415
326
|
displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
|
|
416
327
|
displayPagination: ['bottom', 'both'].includes(paginationPlacement),
|
|
417
|
-
selectionStatus
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
pageSizeOptions
|
|
423
|
-
paginationProps
|
|
424
|
-
|
|
328
|
+
selectionStatus,
|
|
329
|
+
paginationModel,
|
|
330
|
+
onPaginationModelChange,
|
|
331
|
+
apiRef,
|
|
332
|
+
isRowSelectable,
|
|
333
|
+
pageSizeOptions,
|
|
334
|
+
paginationProps,
|
|
335
|
+
rowCount
|
|
336
|
+
})
|
|
425
337
|
}),
|
|
426
|
-
slotProps: _objectSpread2({}, slotProps),
|
|
427
338
|
filterModel: filterModel,
|
|
428
339
|
columnVisibilityModel: columnVisibilityModel,
|
|
429
340
|
pinnedColumns: pinnedColumns,
|
|
430
341
|
sortModel: sortModel,
|
|
431
|
-
initialState:
|
|
432
|
-
density: (_ref7 = density !== null && density !== void 0 ? density : initialState === null || initialState === void 0 ? void 0 : initialState.density) !== null && _ref7 !== void 0 ? _ref7 : 'standard'
|
|
433
|
-
}),
|
|
342
|
+
initialState: initialState,
|
|
434
343
|
isRowSelectable: isRowSelectable,
|
|
435
344
|
onFilterModelChange: onFilterModelChange,
|
|
436
345
|
onColumnVisibilityModelChange: onColumnVisibilityModelChange,
|
|
@@ -450,52 +359,41 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
450
359
|
// Fix server-side header checkbox: when MUI deselects all due to indeterminate
|
|
451
360
|
// state (cross-page selections exist, 0 on current page), convert to "select page".
|
|
452
361
|
if (pagination && paginationMode === 'server') {
|
|
453
|
-
effectiveSelectionModel = fixServerSideHeaderCheckboxSelection(newSelectionModel, rowSelectionModel, selectionStatusRef, apiRef, isRowSelectable);
|
|
362
|
+
effectiveSelectionModel = fixServerSideHeaderCheckboxSelection(newSelectionModel, Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], selectionStatusRef, apiRef, isRowSelectable);
|
|
454
363
|
}
|
|
455
364
|
if (pagination && paginationMode != 'server') {
|
|
456
|
-
|
|
457
|
-
// to avoid stale apiRef pagination state.
|
|
458
|
-
const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);
|
|
459
|
-
const pageStart = paginationModel.page * paginationModel.pageSize;
|
|
460
|
-
const pageEntries = allFilteredEntries.slice(pageStart, pageStart + paginationModel.pageSize);
|
|
461
|
-
const selectableRowsInPage = isRowSelectable ? pageEntries.filter(_ref8 => {
|
|
365
|
+
const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref5 => {
|
|
462
366
|
let {
|
|
463
367
|
model
|
|
464
|
-
} =
|
|
368
|
+
} = _ref5;
|
|
465
369
|
return isRowSelectable({
|
|
466
370
|
row: model
|
|
467
371
|
});
|
|
468
|
-
}).map(
|
|
469
|
-
let {
|
|
470
|
-
id
|
|
471
|
-
} = _ref9;
|
|
472
|
-
return id;
|
|
473
|
-
}) : pageEntries.map(_ref10 => {
|
|
372
|
+
}).map(_ref6 => {
|
|
474
373
|
let {
|
|
475
374
|
id
|
|
476
|
-
} =
|
|
375
|
+
} = _ref6;
|
|
477
376
|
return id;
|
|
478
|
-
});
|
|
377
|
+
}) : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);
|
|
479
378
|
const numberOfSelectableRowsInPage = selectableRowsInPage.length;
|
|
480
|
-
const selectableRowsInTable = isRowSelectable ?
|
|
379
|
+
const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref7 => {
|
|
481
380
|
let {
|
|
482
381
|
model
|
|
483
|
-
} =
|
|
382
|
+
} = _ref7;
|
|
484
383
|
return isRowSelectable({
|
|
485
384
|
row: model
|
|
486
385
|
});
|
|
487
|
-
}).map(
|
|
386
|
+
}).map(_ref8 => {
|
|
488
387
|
let {
|
|
489
388
|
id
|
|
490
|
-
} =
|
|
389
|
+
} = _ref8;
|
|
491
390
|
return id;
|
|
492
391
|
}) : gridFilteredSortedRowIdsSelector(apiRef);
|
|
493
392
|
const numberOfSelectableRowsInTable = selectableRowsInTable.length;
|
|
494
|
-
const numberOfSelectedRows =
|
|
393
|
+
const numberOfSelectedRows = newSelectionModel.length;
|
|
495
394
|
if (selectionStatusRef.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage || selectionStatusRef.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable || selectionStatusRef.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage) {
|
|
496
395
|
setTimeout(() => {
|
|
497
|
-
|
|
498
|
-
(_apiRef$current = apiRef.current) === null || _apiRef$current === void 0 ? void 0 : _apiRef$current.selectRows([], true, true);
|
|
396
|
+
apiRef.current.selectRows([], true, true);
|
|
499
397
|
}, 0);
|
|
500
398
|
}
|
|
501
399
|
if (numberOfSelectedRows === numberOfSelectableRowsInPage && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
|
|
@@ -519,7 +417,6 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
519
417
|
numberOfSelectedRows
|
|
520
418
|
};
|
|
521
419
|
}
|
|
522
|
-
forceSelectionUpdate(v => v + 1);
|
|
523
420
|
}
|
|
524
421
|
onRowSelectionModelChange === null || onRowSelectionModelChange === void 0 ? void 0 : onRowSelectionModelChange(effectiveSelectionModel, details);
|
|
525
422
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGrid2.js","sources":["../../src/components/DataGrid/DataGrid.tsx"],"sourcesContent":["import React, { forwardRef, RefObject, useEffect, useMemo, useRef, useState } from 'react';\nimport { ThemeProvider as MuiThemeProvider, createTheme } from '@mui/material/styles';\nimport classNames from 'classnames';\nimport { LicenseInfo } from '@mui/x-license';\nimport {\n Comp,\n RedsiftColorBlueN,\n RedsiftColorNeutralWhite,\n RedsiftColorNeutralXDarkGrey,\n ThemeProvider,\n useTheme,\n} from '@redsift/design-system';\nimport {\n DataGridPremium,\n GridApiPremium,\n GridCallbackDetails,\n gridFilteredSortedRowEntriesSelector,\n gridFilteredSortedRowIdsSelector,\n GridRowParams,\n GridRowSelectionModel,\n useGridApiRef,\n} from '@mui/x-data-grid-premium';\n\nimport { StyledDataGrid } from './styles';\nimport { DataGridProps, SelectionStatus } from './types';\nimport { BaseIcon, BaseButton, BaseIconButton, BaseCheckbox } from '../BaseComponents';\nimport {\n onServerSideSelectionStatusChange,\n fixServerSideHeaderCheckboxSelection,\n ServerSideControlledPagination,\n ControlledPagination,\n} from '../Pagination';\nimport { ToolbarWrapper } from '../ToolbarWrapper';\nimport { Toolbar } from '../Toolbar';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\nimport { getSelectionCount, isRowSelected, normalizeRowSelectionModel } from '../../utils/rowSelection';\n\nconst COMPONENT_NAME = 'DataGrid';\nconst CLASSNAME = 'redsift-datagrid';\n\n/**\n * DataGrid displays tabular data with sorting, filtering, pagination, and row selection.\n * Built on MUI X DataGrid Pro with Red Sift styling and theming.\n *\n * Requires MUI Premium license key (set via `MUI_LICENSE_KEY` env variable).\n *\n * Use `createColumn()` to get pre-configured column definitions with typed filter operators.\n * Supported types: `string`, `number`, `date`, `dateTime`, `singleSelect`, `multiSelect`, `tags`.\n * For `boolean` columns, use `type: 'boolean'` directly (no createColumn wrapper needed).\n *\n * @example\n * // Basic data grid with typed columns\n * <DataGrid\n * columns={[\n * { ...createColumn('number'), field: 'id', headerName: 'ID', width: 90 },\n * { ...createColumn('string'), field: 'name', headerName: 'Name', width: 150 },\n * { ...createColumn('string'), field: 'email', headerName: 'Email', flex: 1 },\n * ]}\n * rows={users}\n * />\n *\n * @example\n * // Custom cell renderer with Shield component\n * const columns = [\n * { field: 'domain', headerName: 'Domain' },\n * {\n * field: 'status',\n * headerName: 'Status',\n * renderCell: ({ value }) => (\n * <Shield variant={value === 'active' ? 'success' : 'fail'}>\n * {value}\n * </Shield>\n * ),\n * },\n * ];\n * <DataGrid columns={columns} rows={data} />\n *\n * @example\n * // With pagination and sorting\n * <DataGrid\n * columns={columns}\n * rows={data}\n * pagination\n * paginationModel={{ page: 0, pageSize: 25 }}\n * pageSizeOptions={[10, 25, 50]}\n * sortModel={[{ field: 'createdAt', sort: 'desc' }]}\n * />\n *\n * @example\n * // With row selection and checkbox\n * <DataGrid\n * columns={columns}\n * rows={data}\n * checkboxSelection\n * rowSelectionModel={selectedIds}\n * onRowSelectionModelChange={setSelectedIds}\n * />\n *\n * @example\n * // Server-side pagination\n * <DataGrid\n * columns={columns}\n * rows={pageData}\n * pagination\n * paginationMode=\"server\"\n * rowCount={totalRows}\n * paginationModel={{ page, pageSize }}\n * pageSizeOptions={[10, 25, 50]}\n * onPaginationModelChange={setPaginationModel}\n * />\n */\n\nexport const DataGrid: Comp<DataGridProps, HTMLDivElement> = forwardRef((props, ref) => {\n const datagridRef = ref || useRef<HTMLDivElement>();\n\n const {\n apiRef: propsApiRef,\n autoHeight,\n className,\n slots,\n slotProps,\n filterModel: propsFilterModel,\n columnVisibilityModel: propsColumnVisibilityModel,\n pinnedColumns: propsPinnedColumns,\n sortModel: propsSortModel,\n paginationModel: propsPaginationModel,\n height: propsHeight,\n hideToolbar,\n initialState,\n isRowSelectable,\n license = process.env.MUI_LICENSE_KEY,\n onFilterModelChange: propsOnFilterModelChange,\n rowSelectionModel: propsRowSelectionModel,\n onPaginationModelChange: propsOnPaginationModelChange,\n onRowSelectionModelChange: propsOnRowSelectionModelChange,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n pagination,\n paginationPlacement = 'both',\n selectionBannerPlacement = 'top',\n paginationProps,\n rows,\n pageSizeOptions = [5, 10, 25, 50],\n sx,\n theme: propsTheme,\n paginationMode = 'client',\n rowCount,\n density,\n ...forwardedProps\n } = props;\n\n const theme = useTheme(propsTheme);\n\n const _apiRef = useGridApiRef();\n const apiRef = propsApiRef ?? _apiRef;\n\n LicenseInfo.setLicenseKey(license!);\n\n const height = propsHeight ?? (autoHeight ? undefined : '500px');\n\n const {\n columnVisibilityModel,\n filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPaginationModelChange,\n onPinnedColumnsChange,\n onSortModelChange,\n paginationModel,\n pinnedColumns,\n sortModel,\n } = useControlledDatagridState({\n initialState,\n pageSizeOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPaginationModel,\n propsPinnedColumns,\n propsSortModel,\n propsOnPaginationModelChange,\n });\n\n const [rowSelectionModel, setRowSelectionModel] = useState(() => normalizeRowSelectionModel(propsRowSelectionModel));\n useEffect(() => {\n setRowSelectionModel(normalizeRowSelectionModel(propsRowSelectionModel));\n }, [propsRowSelectionModel]);\n\n const onRowSelectionModelChange = (selectionModel: GridRowSelectionModel, details: GridCallbackDetails) => {\n setRowSelectionModel(selectionModel);\n if (propsOnRowSelectionModelChange) {\n propsOnRowSelectionModelChange(selectionModel, details);\n }\n };\n\n const selectionStatusRef = useRef<SelectionStatus>({\n type: 'none',\n numberOfSelectedRows: 0,\n numberOfSelectedRowsInPage: 0,\n page: paginationModel.page,\n pageSize: paginationModel.pageSize,\n });\n\n // Version counter to force re-renders when selectionStatus ref changes\n const [, forceSelectionUpdate] = useState(0);\n\n // Track when the grid API is ready to ensure top pagination renders correctly\n const [gridReady, setGridReady] = useState(false);\n\n // The checkboxSelectionVisibleOnly should only be applied to client-side pagination,\n // for server-side pagination it produces inconsistent behavior when selecting all rows in pages 2 and beyond\n const checkboxSelectionVisibleOnly = Boolean(pagination) && Boolean(paginationMode != 'server');\n\n // Banner and pager placements are independent. `belowToolbar` (for either) renders\n // in a row inside the toolbar slot, and only applies when pagination is on.\n const bannerAtTop = selectionBannerPlacement === 'top';\n const bannerAtBottom = selectionBannerPlacement === 'bottom';\n const bannerBelowToolbar = selectionBannerPlacement === 'belowToolbar' && Boolean(pagination);\n const pagerBelowToolbar = paginationPlacement === 'belowToolbar' && Boolean(pagination);\n const belowToolbarActive = bannerBelowToolbar || pagerBelowToolbar;\n\n // Force re-render when the grid API becomes ready (for top pagination)\n useEffect(() => {\n if (apiRef.current && !gridReady) {\n setGridReady(true);\n }\n });\n\n // in server-side pagination we want to update the selection status\n // every time we navigate between pages, resize our page or select something\n useEffect(() => {\n if (paginationMode == 'server') {\n onServerSideSelectionStatusChange(\n rowSelectionModel,\n apiRef,\n selectionStatusRef,\n forceSelectionUpdate,\n isRowSelectable,\n paginationModel.page,\n paginationModel.pageSize\n );\n }\n }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize, rows]);\n\n if (!Array.isArray(rows)) {\n return null;\n }\n\n // Compute selection status synchronously during render for client-side pagination.\n // This value is passed directly to ToolbarWrapper and ControlledPagination, so slots\n // receive the fresh value in the same render cycle — no extra re-render needed.\n // The ref is kept in sync for the onRowSelectionModelChange callback's deselect logic.\n let selectionStatus: SelectionStatus = selectionStatusRef.current;\n if (pagination && paginationMode !== 'server' && getSelectionCount(rowSelectionModel) > 0) {\n try {\n // Use manual page slicing instead of gridPaginatedVisibleSorted* selectors.\n // MUI's paginated selectors use apiRef internal state which may be stale when\n // paginationModel prop changes — our React state is always up to date.\n const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);\n const pageStart = paginationModel.page * paginationModel.pageSize;\n const pageEntries = allFilteredEntries.slice(pageStart, pageStart + paginationModel.pageSize);\n\n const selectableRowsInPage = isRowSelectable\n ? pageEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : pageEntries.map(({ id }) => id);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? allFilteredEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = getSelectionCount(rowSelectionModel);\n const selectedOnCurrentPage = selectableRowsInPage.filter((id) => isRowSelected(rowSelectionModel, id));\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'table', numberOfSelectedRows };\n } else if (\n selectedOnCurrentPage.length === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage > 0 &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'page', numberOfSelectedRows: selectedOnCurrentPage.length };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus = { type: 'other', numberOfSelectedRows };\n } else {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n } catch {\n // apiRef may not be initialized on first render\n }\n } else if (pagination && paginationMode !== 'server') {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n selectionStatusRef.current = selectionStatus;\n\n const muiTheme = useMemo(\n () =>\n createTheme({\n palette: {\n mode: theme as 'light' | 'dark',\n primary: { main: RedsiftColorBlueN },\n background: {\n default: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n paper: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n },\n },\n }),\n [theme]\n );\n\n return (\n <ThemeProvider value={{ theme }}>\n <MuiThemeProvider theme={muiTheme}>\n {/* <pre>{JSON.stringify(selectionStatus, null, 2)}</pre> */}\n <StyledDataGrid\n ref={datagridRef as RefObject<HTMLDivElement>}\n className={classNames(DataGrid.className, className)}\n $height={height}\n >\n {pagination && gridReady && (bannerAtTop || ['top', 'both'].includes(paginationPlacement!)) ? (\n paginationMode == 'server' ? (\n <ServerSideControlledPagination\n displaySelection={bannerAtTop}\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n displaySelection={bannerAtTop}\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n />\n )\n ) : null}\n <DataGridPremium\n {...forwardedProps}\n rowCount={rowCount!}\n apiRef={apiRef}\n autoHeight={autoHeight}\n checkboxSelectionVisibleOnly={checkboxSelectionVisibleOnly}\n disableRowSelectionExcludeModel\n showToolbar={!hideToolbar || belowToolbarActive}\n slots={{\n baseButton: BaseButton,\n baseCheckbox: BaseCheckbox,\n baseIconButton: BaseIconButton,\n columnFilteredIcon: (props) => <BaseIcon {...props} displayName=\"columnFilteredIcon\" />,\n columnSelectorIcon: (props) => <BaseIcon {...props} displayName=\"columnSelectorIcon\" />,\n columnSortedAscendingIcon: (props) => <BaseIcon {...props} displayName=\"columnSortedAscendingIcon\" />,\n columnSortedDescendingIcon: (props) => <BaseIcon {...props} displayName=\"columnSortedDescendingIcon\" />,\n densityCompactIcon: (props) => <BaseIcon {...props} displayName=\"densityCompactIcon\" />,\n densityStandardIcon: (props) => <BaseIcon {...props} displayName=\"densityStandardIcon\" />,\n densityComfortableIcon: (props) => <BaseIcon {...props} displayName=\"densityComfortableIcon\" />,\n detailPanelCollapseIcon: (props) => <BaseIcon {...props} displayName=\"detailPanelCollapseIcon\" />,\n detailPanelExpandIcon: (props) => <BaseIcon {...props} displayName=\"detailPanelExpandIcon\" />,\n exportIcon: (props) => <BaseIcon {...props} displayName=\"exportIcon\" />,\n openFilterButtonIcon: (props) => <BaseIcon {...props} displayName=\"openFilterButtonIcon\" />,\n ...slots,\n // When the banner and/or pager is placed below the toolbar, wrap the resolved\n // toolbar (consumer-provided slot, or the default DS Toolbar) so the banner (left)\n // and/or pager (right) render directly beneath it. `showToolbar` is forced on\n // above so this slot still renders when `hideToolbar` is set.\n ...(belowToolbarActive\n ? {\n toolbar: (toolbarProps: any) => (\n <ToolbarWrapper\n {...toolbarProps}\n RenderedToolbar={(slots?.toolbar as React.JSXElementConstructor<any>) ?? Toolbar}\n hideToolbar={hideToolbar}\n filterModel={filterModel}\n onFilterModelChange={onFilterModelChange}\n pagination={pagination}\n paginationMode={paginationMode}\n displaySelection={bannerBelowToolbar}\n displayPagination={pagerBelowToolbar}\n displayRowsPerPage={pagerBelowToolbar}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ),\n }\n : {}),\n pagination: (props) =>\n pagination ? (\n paginationMode == 'server' ? (\n <ServerSideControlledPagination\n {...props}\n displaySelection={bannerAtBottom}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n {...props}\n displaySelection={bannerAtBottom}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions as any as number[]}\n paginationProps={paginationProps}\n />\n )\n ) : null,\n }}\n slotProps={{\n ...slotProps,\n }}\n filterModel={filterModel}\n columnVisibilityModel={columnVisibilityModel}\n pinnedColumns={pinnedColumns}\n sortModel={sortModel}\n initialState={{ ...initialState, density: density ?? initialState?.density ?? 'standard' }}\n isRowSelectable={isRowSelectable}\n onFilterModelChange={onFilterModelChange}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n onSortModelChange={onSortModelChange}\n pagination={pagination}\n paginationMode={paginationMode}\n keepNonExistentRowsSelected={paginationMode == 'server'}\n rows={rows}\n pageSizeOptions={pageSizeOptions}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n rowSelectionModel={rowSelectionModel}\n onRowSelectionModelChange={(newSelectionModel, details) => {\n let effectiveSelectionModel = newSelectionModel;\n\n // Fix server-side header checkbox: when MUI deselects all due to indeterminate\n // state (cross-page selections exist, 0 on current page), convert to \"select page\".\n if (pagination && paginationMode === 'server') {\n effectiveSelectionModel = fixServerSideHeaderCheckboxSelection(\n newSelectionModel,\n rowSelectionModel,\n selectionStatusRef,\n apiRef as React.MutableRefObject<GridApiPremium>,\n isRowSelectable\n );\n }\n\n if (pagination && paginationMode != 'server') {\n // Use manual page slicing instead of gridPaginatedVisibleSorted* selectors\n // to avoid stale apiRef pagination state.\n const allFilteredEntries = gridFilteredSortedRowEntriesSelector(apiRef);\n const pageStart = paginationModel.page * paginationModel.pageSize;\n const pageEntries = allFilteredEntries.slice(pageStart, pageStart + paginationModel.pageSize);\n\n const selectableRowsInPage = isRowSelectable\n ? pageEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : pageEntries.map(({ id }) => id);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? allFilteredEntries\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = getSelectionCount(newSelectionModel);\n\n if (\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage) ||\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable) ||\n (selectionStatusRef.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage)\n ) {\n setTimeout(() => {\n apiRef.current?.selectRows([], true, true);\n }, 0);\n }\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'page',\n numberOfSelectedRows,\n };\n } else if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'table',\n numberOfSelectedRows,\n };\n } else if (numberOfSelectedRows > 0) {\n selectionStatusRef.current = {\n type: 'other',\n numberOfSelectedRows,\n };\n } else {\n selectionStatusRef.current = {\n type: 'none',\n numberOfSelectedRows,\n };\n }\n forceSelectionUpdate((v) => v + 1);\n }\n onRowSelectionModelChange?.(effectiveSelectionModel, details);\n }}\n sx={{\n ...sx,\n '.MuiDataGrid-columnHeaders': {\n flexDirection: 'column',\n alignItems: 'normal',\n },\n '.MuiDataGrid-selectedRowCount': {\n margin: 'none',\n },\n }}\n />\n </StyledDataGrid>\n </MuiThemeProvider>\n </ThemeProvider>\n );\n});\nDataGrid.className = CLASSNAME;\nDataGrid.displayName = COMPONENT_NAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","DataGrid","forwardRef","props","ref","_ref7","datagridRef","useRef","apiRef","propsApiRef","autoHeight","className","slots","slotProps","filterModel","propsFilterModel","columnVisibilityModel","propsColumnVisibilityModel","pinnedColumns","propsPinnedColumns","sortModel","propsSortModel","paginationModel","propsPaginationModel","height","propsHeight","hideToolbar","initialState","isRowSelectable","license","process","env","MUI_LICENSE_KEY","onFilterModelChange","propsOnFilterModelChange","rowSelectionModel","propsRowSelectionModel","onPaginationModelChange","propsOnPaginationModelChange","onRowSelectionModelChange","propsOnRowSelectionModelChange","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","pagination","paginationPlacement","selectionBannerPlacement","paginationProps","rows","pageSizeOptions","sx","theme","propsTheme","paginationMode","rowCount","density","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","LicenseInfo","setLicenseKey","undefined","useControlledDatagridState","setRowSelectionModel","useState","normalizeRowSelectionModel","useEffect","selectionModel","details","selectionStatusRef","type","numberOfSelectedRows","numberOfSelectedRowsInPage","page","pageSize","forceSelectionUpdate","gridReady","setGridReady","checkboxSelectionVisibleOnly","Boolean","bannerAtTop","bannerAtBottom","bannerBelowToolbar","pagerBelowToolbar","belowToolbarActive","current","onServerSideSelectionStatusChange","Array","isArray","selectionStatus","getSelectionCount","allFilteredEntries","gridFilteredSortedRowEntriesSelector","pageStart","pageEntries","slice","selectableRowsInPage","filter","_ref","model","row","map","_ref2","id","_ref3","numberOfSelectableRowsInPage","length","selectableRowsInTable","_ref4","_ref5","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","selectedOnCurrentPage","isRowSelected","muiTheme","useMemo","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","React","createElement","ThemeProvider","value","MuiThemeProvider","StyledDataGrid","classNames","$height","includes","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","ControlledPagination","DataGridPremium","_extends","disableRowSelectionExcludeModel","showToolbar","_objectSpread","baseButton","BaseButton","baseCheckbox","BaseCheckbox","baseIconButton","BaseIconButton","columnFilteredIcon","BaseIcon","displayName","columnSelectorIcon","columnSortedAscendingIcon","columnSortedDescendingIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","detailPanelCollapseIcon","detailPanelExpandIcon","exportIcon","openFilterButtonIcon","toolbar","toolbarProps","_ref6","ToolbarWrapper","RenderedToolbar","Toolbar","keepNonExistentRowsSelected","newSelectionModel","effectiveSelectionModel","fixServerSideHeaderCheckboxSelection","_ref8","_ref9","_ref10","_ref11","_ref12","setTimeout","_apiRef$current","selectRows","v","flexDirection","alignItems","margin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataGrid2.js","sources":["../../src/components/DataGrid/DataGrid.tsx"],"sourcesContent":["import React, { forwardRef, RefObject, useEffect, useMemo, useRef, useState } from 'react';\nimport { ThemeProvider as MuiThemeProvider, createTheme } from '@mui/material/styles';\nimport classNames from 'classnames';\nimport { LicenseInfo } from '@mui/x-license-pro';\nimport {\n Comp,\n RedsiftColorBlueN,\n RedsiftColorNeutralWhite,\n RedsiftColorNeutralXDarkGrey,\n ThemeProvider,\n useTheme,\n} from '@redsift/design-system';\nimport {\n DataGridPro,\n GridCallbackDetails,\n gridFilteredSortedRowEntriesSelector,\n gridFilteredSortedRowIdsSelector,\n gridPaginatedVisibleSortedGridRowEntriesSelector,\n gridPaginatedVisibleSortedGridRowIdsSelector,\n GridRowParams,\n GridRowSelectionModel,\n useGridApiRef,\n} from '@mui/x-data-grid-pro';\n\nimport { StyledDataGrid } from './styles';\nimport { DataGridProps, SelectionStatus } from './types';\nimport { Toolbar as DefaultToolbar } from '../Toolbar';\nimport { ToolbarWrapper } from '../ToolbarWrapper';\nimport { baseGridSlots, BottomPagination } from './defaultSlots';\nimport { onServerSideSelectionStatusChange, fixServerSideHeaderCheckboxSelection } from '../Pagination';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\n\nconst COMPONENT_NAME = 'DataGrid';\nconst CLASSNAME = 'redsift-datagrid';\n\n/**\n * DataGrid displays tabular data with sorting, filtering, pagination, and row selection.\n * Built on MUI X DataGrid Pro with Red Sift styling and theming.\n *\n * Requires MUI Premium license key (set via `MUI_LICENSE_KEY` env variable).\n *\n * Use `createColumn()` to get pre-configured column definitions with typed filter operators.\n * Supported types: `string`, `number`, `date`, `dateTime`, `singleSelect`, `multiSelect`, `tags`.\n * For `boolean` columns, use `type: 'boolean'` directly (no createColumn wrapper needed).\n *\n * @example\n * // Basic data grid with typed columns\n * <DataGrid\n * columns={[\n * { ...createColumn('number'), field: 'id', headerName: 'ID', width: 90 },\n * { ...createColumn('string'), field: 'name', headerName: 'Name', width: 150 },\n * { ...createColumn('string'), field: 'email', headerName: 'Email', flex: 1 },\n * ]}\n * rows={users}\n * />\n *\n * @example\n * // Custom cell renderer with Shield component\n * const columns = [\n * { field: 'domain', headerName: 'Domain' },\n * {\n * field: 'status',\n * headerName: 'Status',\n * renderCell: ({ value }) => (\n * <Shield variant={value === 'active' ? 'success' : 'fail'}>\n * {value}\n * </Shield>\n * ),\n * },\n * ];\n * <DataGrid columns={columns} rows={data} />\n *\n * @example\n * // With pagination and sorting\n * <DataGrid\n * columns={columns}\n * rows={data}\n * pagination\n * paginationModel={{ page: 0, pageSize: 25 }}\n * pageSizeOptions={[10, 25, 50]}\n * sortModel={[{ field: 'createdAt', sort: 'desc' }]}\n * />\n *\n * @example\n * // With row selection and checkbox\n * <DataGrid\n * columns={columns}\n * rows={data}\n * checkboxSelection\n * rowSelectionModel={selectedIds}\n * onRowSelectionModelChange={setSelectedIds}\n * />\n *\n * @example\n * // Server-side pagination\n * <DataGrid\n * columns={columns}\n * rows={pageData}\n * pagination\n * paginationMode=\"server\"\n * rowCount={totalRows}\n * paginationModel={{ page, pageSize }}\n * pageSizeOptions={[10, 25, 50]}\n * onPaginationModelChange={setPaginationModel}\n * />\n */\n\nexport const DataGrid: Comp<DataGridProps, HTMLDivElement> = forwardRef((props, ref) => {\n const datagridRef = ref || useRef<HTMLDivElement>();\n\n const {\n apiRef: propsApiRef,\n autoHeight,\n className,\n slots,\n slotProps,\n filterModel: propsFilterModel,\n columnVisibilityModel: propsColumnVisibilityModel,\n pinnedColumns: propsPinnedColumns,\n sortModel: propsSortModel,\n paginationModel: propsPaginationModel,\n height: propsHeight,\n hideToolbar,\n initialState,\n isRowSelectable,\n license = process.env.MUI_LICENSE_KEY,\n onFilterModelChange: propsOnFilterModelChange,\n rowSelectionModel: propsRowSelectionModel,\n onPaginationModelChange: propsOnPaginationModelChange,\n onRowSelectionModelChange: propsOnRowSelectionModelChange,\n onColumnVisibilityModelChange: propsOnColumnVisibilityModelChange,\n onPinnedColumnsChange: propsOnPinnedColumnsChange,\n onSortModelChange: propsOnSortModelChange,\n pagination,\n paginationPlacement = 'both',\n selectionBannerPlacement = 'top',\n paginationProps,\n rows,\n pageSizeOptions,\n sx,\n theme: propsTheme,\n paginationMode = 'client',\n rowCount,\n ...forwardedProps\n } = props;\n\n const theme = useTheme(propsTheme);\n\n const _apiRef = useGridApiRef();\n const apiRef = propsApiRef ?? _apiRef;\n\n const RenderedToolbar = slots?.toolbar ? slots.toolbar : DefaultToolbar;\n\n LicenseInfo.setLicenseKey(license!);\n\n const height = propsHeight ?? (autoHeight ? undefined : '500px');\n\n const {\n columnVisibilityModel,\n filterModel,\n onColumnVisibilityModelChange,\n onFilterModelChange,\n onPaginationModelChange,\n onPinnedColumnsChange,\n onSortModelChange,\n paginationModel,\n pinnedColumns,\n sortModel,\n } = useControlledDatagridState({\n initialState,\n pageSizeOptions,\n propsColumnVisibilityModel,\n propsFilterModel,\n propsOnColumnVisibilityModelChange,\n propsOnFilterModelChange,\n propsOnPinnedColumnsChange,\n propsOnSortModelChange,\n propsPaginationModel,\n propsPinnedColumns,\n propsSortModel,\n propsOnPaginationModelChange,\n });\n\n const [rowSelectionModel, setRowSelectionModel] = useState(propsRowSelectionModel ?? []);\n useEffect(() => {\n setRowSelectionModel(propsRowSelectionModel ?? []);\n }, [propsRowSelectionModel]);\n\n const onRowSelectionModelChange = (selectionModel: GridRowSelectionModel, details: GridCallbackDetails) => {\n setRowSelectionModel(selectionModel);\n if (propsOnRowSelectionModelChange) {\n propsOnRowSelectionModelChange(selectionModel, details);\n }\n };\n\n const selectionStatusRef = useRef<SelectionStatus>({\n type: 'none',\n numberOfSelectedRows: 0,\n numberOfSelectedRowsInPage: 0,\n page: paginationModel.page,\n pageSize: paginationModel.pageSize,\n });\n\n // The checkboxSelectionVisibleOnly should only be applied to client-side pagination,\n // for server-side pagination it produces inconsistent behavior when selecting all rows in pages 2 and beyond\n const checkboxSelectionVisibleOnly = Boolean(pagination) && Boolean(paginationMode != 'server');\n\n // Banner and pager placements are independent. `belowToolbar` (for either) renders\n // in the toolbar-slot row, and only applies when pagination is on.\n const bannerAtTop = selectionBannerPlacement === 'top';\n const bannerAtBottom = selectionBannerPlacement === 'bottom';\n const bannerBelowToolbar = selectionBannerPlacement === 'belowToolbar' && Boolean(pagination);\n const pagerBelowToolbar = paginationPlacement === 'belowToolbar' && Boolean(pagination);\n\n // in server-side pagination we want to update the selection status\n // every time we navigate between pages, resize our page or select something\n useEffect(() => {\n if (paginationMode == 'server') {\n onServerSideSelectionStatusChange(\n Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel],\n apiRef,\n selectionStatusRef,\n isRowSelectable,\n paginationModel.page,\n paginationModel.pageSize\n );\n }\n }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize, rows]);\n\n if (!Array.isArray(rows)) {\n return null;\n }\n\n // Compute selection status synchronously during render for client-side pagination.\n // This value is passed directly to ToolbarWrapper and ControlledPagination, so slots\n // receive the fresh value in the same render cycle — no extra re-render needed.\n // The ref is kept in sync for the onRowSelectionModelChange callback's deselect logic.\n let selectionStatus: SelectionStatus = selectionStatusRef.current;\n if (pagination && paginationMode !== 'server' && Array.isArray(rowSelectionModel) && rowSelectionModel.length > 0) {\n try {\n const selectableRowsInPage = isRowSelectable\n ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = rowSelectionModel.length;\n const selectedOnCurrentPage = selectableRowsInPage.filter((id) => rowSelectionModel.includes(id));\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'table', numberOfSelectedRows };\n } else if (\n selectedOnCurrentPage.length === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage > 0 &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus = { type: 'page', numberOfSelectedRows: selectedOnCurrentPage.length };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus = { type: 'other', numberOfSelectedRows };\n } else {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n } catch {\n // apiRef may not be initialized on first render\n }\n } else if (pagination && paginationMode !== 'server') {\n selectionStatus = { type: 'none', numberOfSelectedRows: 0 };\n }\n selectionStatusRef.current = selectionStatus;\n\n const muiTheme = useMemo(\n () =>\n createTheme({\n palette: {\n mode: theme,\n primary: { main: RedsiftColorBlueN },\n background: {\n default: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n paper: theme === 'dark' ? RedsiftColorNeutralXDarkGrey : RedsiftColorNeutralWhite,\n },\n },\n }),\n [theme]\n );\n\n return (\n <ThemeProvider value={{ theme }}>\n <MuiThemeProvider theme={muiTheme}>\n {/* <pre>{JSON.stringify(selectionStatus, null, 2)}</pre> */}\n <StyledDataGrid\n ref={datagridRef as RefObject<HTMLDivElement>}\n className={classNames(DataGrid.className, className)}\n $height={height}\n >\n <DataGridPro\n {...forwardedProps}\n rowCount={rowCount!}\n apiRef={apiRef}\n autoHeight={autoHeight}\n checkboxSelectionVisibleOnly={checkboxSelectionVisibleOnly}\n slots={{\n // Stable base/icon slots (created once) — see defaultSlots.\n ...baseGridSlots,\n ...slots,\n // The toolbar is already a stable module-level component (ToolbarWrapper) with its\n // per-render data injected via `slotProps.toolbar` below. `BottomPagination` is\n // likewise stable; a fresh inline function here would remount the slot's subtree\n // every render.\n toolbar: ToolbarWrapper,\n pagination: BottomPagination,\n }}\n slotProps={{\n ...slotProps,\n toolbar: {\n hideToolbar,\n RenderedToolbar,\n filterModel,\n onFilterModelChange,\n pagination,\n displaySelection: bannerAtTop || bannerBelowToolbar,\n displayPagination: ['top', 'both'].includes(paginationPlacement!) || pagerBelowToolbar,\n displayRowsPerPage: pagerBelowToolbar,\n selectionStatus,\n apiRef,\n isRowSelectable,\n paginationModel,\n onPaginationModelChange,\n pageSizeOptions,\n paginationProps,\n paginationMode,\n rowCount,\n ...slotProps?.toolbar,\n },\n // Per-render data for the stable `BottomPagination` slot. Consumer slot props are\n // spread first; the DS layout data wins. Cast at the MUI boundary because these are\n // ToolbarWrapper props, not the MUI slot prop types.\n pagination: {\n ...slotProps?.pagination,\n pagination,\n paginationMode,\n displaySelection: bannerAtBottom,\n displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement!),\n displayPagination: ['bottom', 'both'].includes(paginationPlacement!),\n selectionStatus,\n paginationModel,\n onPaginationModelChange,\n apiRef,\n isRowSelectable,\n pageSizeOptions,\n paginationProps,\n rowCount,\n } as unknown as NonNullable<DataGridProps['slotProps']>['pagination'],\n }}\n filterModel={filterModel}\n columnVisibilityModel={columnVisibilityModel}\n pinnedColumns={pinnedColumns}\n sortModel={sortModel}\n initialState={initialState}\n isRowSelectable={isRowSelectable}\n onFilterModelChange={onFilterModelChange}\n onColumnVisibilityModelChange={onColumnVisibilityModelChange}\n onPinnedColumnsChange={onPinnedColumnsChange}\n onSortModelChange={onSortModelChange}\n pagination={pagination}\n paginationMode={paginationMode}\n keepNonExistentRowsSelected={paginationMode == 'server'}\n rows={rows}\n pageSizeOptions={pageSizeOptions}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n rowSelectionModel={rowSelectionModel}\n onRowSelectionModelChange={(newSelectionModel, details) => {\n let effectiveSelectionModel = newSelectionModel;\n\n // Fix server-side header checkbox: when MUI deselects all due to indeterminate\n // state (cross-page selections exist, 0 on current page), convert to \"select page\".\n if (pagination && paginationMode === 'server') {\n effectiveSelectionModel = fixServerSideHeaderCheckboxSelection(\n newSelectionModel,\n Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel],\n selectionStatusRef,\n apiRef,\n isRowSelectable\n );\n }\n\n if (pagination && paginationMode != 'server') {\n const selectableRowsInPage = isRowSelectable\n ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);\n const numberOfSelectableRowsInPage = selectableRowsInPage.length;\n\n const selectableRowsInTable = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef);\n const numberOfSelectableRowsInTable = selectableRowsInTable.length;\n\n const numberOfSelectedRows = newSelectionModel.length;\n\n if (\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage) ||\n (selectionStatusRef.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable) ||\n (selectionStatusRef.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage)\n ) {\n setTimeout(() => {\n apiRef.current.selectRows([], true, true);\n }, 0);\n }\n\n if (\n numberOfSelectedRows === numberOfSelectableRowsInPage &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'page',\n numberOfSelectedRows,\n };\n } else if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatusRef.current = {\n type: 'table',\n numberOfSelectedRows,\n };\n } else if (numberOfSelectedRows > 0) {\n selectionStatusRef.current = {\n type: 'other',\n numberOfSelectedRows,\n };\n } else {\n selectionStatusRef.current = {\n type: 'none',\n numberOfSelectedRows,\n };\n }\n }\n onRowSelectionModelChange?.(effectiveSelectionModel, details);\n }}\n sx={{\n ...sx,\n '.MuiDataGrid-columnHeaders': {\n flexDirection: 'column',\n alignItems: 'normal',\n },\n '.MuiDataGrid-selectedRowCount': {\n margin: 'none',\n },\n }}\n />\n </StyledDataGrid>\n </MuiThemeProvider>\n </ThemeProvider>\n );\n});\nDataGrid.className = CLASSNAME;\nDataGrid.displayName = COMPONENT_NAME;\n"],"names":["COMPONENT_NAME","CLASSNAME","DataGrid","forwardRef","props","ref","datagridRef","useRef","apiRef","propsApiRef","autoHeight","className","slots","slotProps","filterModel","propsFilterModel","columnVisibilityModel","propsColumnVisibilityModel","pinnedColumns","propsPinnedColumns","sortModel","propsSortModel","paginationModel","propsPaginationModel","height","propsHeight","hideToolbar","initialState","isRowSelectable","license","process","env","MUI_LICENSE_KEY","onFilterModelChange","propsOnFilterModelChange","rowSelectionModel","propsRowSelectionModel","onPaginationModelChange","propsOnPaginationModelChange","onRowSelectionModelChange","propsOnRowSelectionModelChange","onColumnVisibilityModelChange","propsOnColumnVisibilityModelChange","onPinnedColumnsChange","propsOnPinnedColumnsChange","onSortModelChange","propsOnSortModelChange","pagination","paginationPlacement","selectionBannerPlacement","paginationProps","rows","pageSizeOptions","sx","theme","propsTheme","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","RenderedToolbar","toolbar","DefaultToolbar","LicenseInfo","setLicenseKey","undefined","useControlledDatagridState","setRowSelectionModel","useState","useEffect","selectionModel","details","selectionStatusRef","type","numberOfSelectedRows","numberOfSelectedRowsInPage","page","pageSize","checkboxSelectionVisibleOnly","Boolean","bannerAtTop","bannerAtBottom","bannerBelowToolbar","pagerBelowToolbar","onServerSideSelectionStatusChange","Array","isArray","selectionStatus","current","length","selectableRowsInPage","gridPaginatedVisibleSortedGridRowEntriesSelector","filter","_ref","model","row","map","_ref2","id","gridPaginatedVisibleSortedGridRowIdsSelector","numberOfSelectableRowsInPage","selectableRowsInTable","gridFilteredSortedRowEntriesSelector","_ref3","_ref4","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","selectedOnCurrentPage","includes","muiTheme","useMemo","createTheme","palette","mode","primary","main","RedsiftColorBlueN","background","default","RedsiftColorNeutralXDarkGrey","RedsiftColorNeutralWhite","paper","React","createElement","ThemeProvider","value","MuiThemeProvider","StyledDataGrid","classNames","$height","DataGridPro","_extends","_objectSpread","baseGridSlots","ToolbarWrapper","BottomPagination","displaySelection","displayPagination","displayRowsPerPage","keepNonExistentRowsSelected","newSelectionModel","effectiveSelectionModel","fixServerSideHeaderCheckboxSelection","_ref5","_ref6","_ref7","_ref8","setTimeout","selectRows","flexDirection","alignItems","margin","displayName"],"mappings":"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"}
|