@redsift/table 12.4.0 → 12.5.0-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.
@@ -1,13 +1,14 @@
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 { LicenseInfo } from '@mui/x-license';
6
- import { useTheme, RedsiftColorBlueN, RedsiftColorNeutralXDarkGrey, RedsiftColorNeutralWhite, ThemeProvider } from '@redsift/design-system';
7
- import { useGridApiRef, DataGridPremium, gridPaginatedVisibleSortedGridRowEntriesSelector, gridPaginatedVisibleSortedGridRowIdsSelector, gridFilteredSortedRowEntriesSelector, gridFilteredSortedRowIdsSelector } from '@mui/x-data-grid-premium';
8
- import { u as useControlledDatagridState, S as StyledDataGrid } from './useControlledDatagridState.js';
9
- import { n as normalizeRowSelectionModel, o as onServerSideSelectionStatusChange, S as ServerSideControlledPagination, C as ControlledPagination, g as getSelectionCount } from './ServerSideControlledPagination.js';
10
- import { B as BaseButton, a as BaseCheckbox, c as BaseIconButton, b as BaseIcon } from './BaseIconButton.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 } from './useControlledDatagridState.js';
7
+ import { T as Toolbar } from './Toolbar2.js';
8
+ import { o as onServerSideSelectionStatusChange, f as fixServerSideHeaderCheckboxSelection, S as ServerSideControlledPagination, C as ControlledPagination } from './ControlledPagination.js';
9
+ import { e as createTheme } from './Portal.js';
10
+ import { B as BaseButton, a as BaseCheckbox, c as BasePopper, b as BaseIcon } from './BasePopper.js';
11
+ import { T as ToolbarWrapper } from './ToolbarWrapper2.js';
11
12
 
12
13
  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", "paginationProps", "rows", "pageSizeOptions", "sx", "theme", "paginationMode", "rowCount"];
13
14
  const COMPONENT_NAME = 'DataGrid';
@@ -86,7 +87,6 @@ const CLASSNAME = 'redsift-datagrid';
86
87
  */
87
88
 
88
89
  const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
89
- var _forwardedProps$densi, _initialState$density;
90
90
  const datagridRef = ref || useRef();
91
91
  const {
92
92
  apiRef: propsApiRef,
@@ -115,7 +115,7 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
115
115
  paginationPlacement = 'both',
116
116
  paginationProps,
117
117
  rows,
118
- pageSizeOptions = [5, 10, 25, 50],
118
+ pageSizeOptions,
119
119
  sx,
120
120
  theme: propsTheme,
121
121
  paginationMode = 'client',
@@ -125,6 +125,7 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
125
125
  const theme = useTheme(propsTheme);
126
126
  const _apiRef = useGridApiRef();
127
127
  const apiRef = propsApiRef !== null && propsApiRef !== void 0 ? propsApiRef : _apiRef;
128
+ const RenderedToolbar = slots !== null && slots !== void 0 && slots.toolbar ? slots.toolbar : Toolbar;
128
129
  LicenseInfo.setLicenseKey(license);
129
130
  const height = propsHeight !== null && propsHeight !== void 0 ? propsHeight : autoHeight ? undefined : '500px';
130
131
  const {
@@ -152,9 +153,9 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
152
153
  propsSortModel,
153
154
  propsOnPaginationModelChange
154
155
  });
155
- const [rowSelectionModel, setRowSelectionModel] = useState(() => normalizeRowSelectionModel(propsRowSelectionModel));
156
+ const [rowSelectionModel, setRowSelectionModel] = useState(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
156
157
  useEffect(() => {
157
- setRowSelectionModel(normalizeRowSelectionModel(propsRowSelectionModel));
158
+ setRowSelectionModel(propsRowSelectionModel !== null && propsRowSelectionModel !== void 0 ? propsRowSelectionModel : []);
158
159
  }, [propsRowSelectionModel]);
159
160
  const onRowSelectionModelChange = (selectionModel, details) => {
160
161
  setRowSelectionModel(selectionModel);
@@ -162,7 +163,7 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
162
163
  propsOnRowSelectionModelChange(selectionModel, details);
163
164
  }
164
165
  };
165
- const selectionStatus = useRef({
166
+ const selectionStatusRef = useRef({
166
167
  type: 'none',
167
168
  numberOfSelectedRows: 0,
168
169
  numberOfSelectedRowsInPage: 0,
@@ -170,33 +171,89 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
170
171
  pageSize: paginationModel.pageSize
171
172
  });
172
173
 
173
- // Version counter to force re-renders when selectionStatus ref changes
174
- const [, forceSelectionUpdate] = useState(0);
175
-
176
- // Track when the grid API is ready to ensure top pagination renders correctly
177
- const [gridReady, setGridReady] = useState(false);
178
-
179
174
  // The checkboxSelectionVisibleOnly should only be applied to client-side pagination,
180
175
  // for server-side pagination it produces inconsistent behavior when selecting all rows in pages 2 and beyond
181
176
  const checkboxSelectionVisibleOnly = Boolean(pagination) && Boolean(paginationMode != 'server');
182
177
 
183
- // Force re-render when the grid API becomes ready (for top pagination)
184
- useEffect(() => {
185
- if (apiRef.current && !gridReady) {
186
- setGridReady(true);
187
- }
188
- });
189
-
190
178
  // in server-side pagination we want to update the selection status
191
179
  // every time we navigate between pages, resize our page or select something
192
180
  useEffect(() => {
193
181
  if (paginationMode == 'server') {
194
- onServerSideSelectionStatusChange(rowSelectionModel, apiRef, selectionStatus, forceSelectionUpdate, isRowSelectable, paginationModel.page, paginationModel.pageSize);
182
+ onServerSideSelectionStatusChange(Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], apiRef, selectionStatusRef, isRowSelectable, paginationModel.page, paginationModel.pageSize);
195
183
  }
196
- }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize]);
184
+ }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize, rows]);
197
185
  if (!Array.isArray(rows)) {
198
186
  return null;
199
187
  }
188
+
189
+ // Compute selection status synchronously during render for client-side pagination.
190
+ // This value is passed directly to ToolbarWrapper and ControlledPagination, so slots
191
+ // receive the fresh value in the same render cycle — no extra re-render needed.
192
+ // The ref is kept in sync for the onRowSelectionModelChange callback's deselect logic.
193
+ let selectionStatus = selectionStatusRef.current;
194
+ if (pagination && paginationMode !== 'server' && Array.isArray(rowSelectionModel) && rowSelectionModel.length > 0) {
195
+ try {
196
+ const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref => {
197
+ let {
198
+ model
199
+ } = _ref;
200
+ return isRowSelectable({
201
+ row: model
202
+ });
203
+ }).map(_ref2 => {
204
+ let {
205
+ id
206
+ } = _ref2;
207
+ return id;
208
+ }) : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);
209
+ const numberOfSelectableRowsInPage = selectableRowsInPage.length;
210
+ const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref3 => {
211
+ let {
212
+ model
213
+ } = _ref3;
214
+ return isRowSelectable({
215
+ row: model
216
+ });
217
+ }).map(_ref4 => {
218
+ let {
219
+ id
220
+ } = _ref4;
221
+ return id;
222
+ }) : gridFilteredSortedRowIdsSelector(apiRef);
223
+ const numberOfSelectableRowsInTable = selectableRowsInTable.length;
224
+ const numberOfSelectedRows = rowSelectionModel.length;
225
+ const selectedOnCurrentPage = selectableRowsInPage.filter(id => rowSelectionModel.includes(id));
226
+ if (numberOfSelectedRows === numberOfSelectableRowsInTable && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
227
+ selectionStatus = {
228
+ type: 'table',
229
+ numberOfSelectedRows
230
+ };
231
+ } else if (selectedOnCurrentPage.length === numberOfSelectableRowsInPage && numberOfSelectableRowsInPage > 0 && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
232
+ selectionStatus = {
233
+ type: 'page',
234
+ numberOfSelectedRows: selectedOnCurrentPage.length
235
+ };
236
+ } else if (numberOfSelectedRows > 0) {
237
+ selectionStatus = {
238
+ type: 'other',
239
+ numberOfSelectedRows
240
+ };
241
+ } else {
242
+ selectionStatus = {
243
+ type: 'none',
244
+ numberOfSelectedRows: 0
245
+ };
246
+ }
247
+ } catch {
248
+ // apiRef may not be initialized on first render
249
+ }
250
+ } else if (pagination && paginationMode !== 'server') {
251
+ selectionStatus = {
252
+ type: 'none',
253
+ numberOfSelectedRows: 0
254
+ };
255
+ }
256
+ selectionStatusRef.current = selectionStatus;
200
257
  const muiTheme = useMemo(() => createTheme({
201
258
  palette: {
202
259
  mode: theme,
@@ -219,103 +276,100 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
219
276
  ref: datagridRef,
220
277
  className: classNames(DataGrid.className, className),
221
278
  $height: height
222
- }, pagination && ['top', 'both'].includes(paginationPlacement) && gridReady ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, {
223
- displaySelection: true,
224
- displayRowsPerPage: ['top', 'both'].includes(paginationPlacement),
225
- displayPagination: ['top', 'both'].includes(paginationPlacement),
226
- selectionStatus: selectionStatus.current,
227
- paginationModel: paginationModel,
228
- onPaginationModelChange: onPaginationModelChange,
229
- pageSizeOptions: pageSizeOptions,
230
- paginationProps: paginationProps,
231
- rowCount: rowCount
232
- }) : /*#__PURE__*/React__default.createElement(ControlledPagination, {
233
- displaySelection: true,
234
- displayRowsPerPage: ['top', 'both'].includes(paginationPlacement),
235
- displayPagination: ['top', 'both'].includes(paginationPlacement),
236
- selectionStatus: selectionStatus.current,
237
- apiRef: apiRef,
238
- isRowSelectable: isRowSelectable,
239
- paginationModel: paginationModel,
240
- onPaginationModelChange: onPaginationModelChange,
241
- pageSizeOptions: pageSizeOptions,
242
- paginationProps: paginationProps
243
- }) : null, /*#__PURE__*/React__default.createElement(DataGridPremium, _extends({}, forwardedProps, {
279
+ }, /*#__PURE__*/React__default.createElement(DataGridPro, _extends({}, forwardedProps, {
244
280
  rowCount: rowCount,
245
281
  apiRef: apiRef,
246
282
  autoHeight: autoHeight,
247
283
  checkboxSelectionVisibleOnly: checkboxSelectionVisibleOnly,
248
- showToolbar: !hideToolbar,
249
- density: (_forwardedProps$densi = forwardedProps.density) !== null && _forwardedProps$densi !== void 0 ? _forwardedProps$densi : 'standard',
250
284
  slots: _objectSpread2(_objectSpread2({
251
285
  baseButton: BaseButton,
252
286
  baseCheckbox: BaseCheckbox,
253
- baseIconButton: BaseIconButton,
287
+ // baseTextField,
288
+ basePopper: BasePopper,
254
289
  columnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
255
- displayName: "columnFilteredIcon"
290
+ displayName: "ColumnFilteredIcon"
256
291
  })),
257
292
  columnSelectorIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
258
- displayName: "columnSelectorIcon"
293
+ displayName: "ColumnSelectorIcon"
259
294
  })),
260
295
  columnSortedAscendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
261
- displayName: "columnSortedAscendingIcon"
296
+ displayName: "ColumnSortedAscendingIcon"
262
297
  })),
263
298
  columnSortedDescendingIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
264
- displayName: "columnSortedDescendingIcon"
299
+ displayName: "ColumnSortedDescendingIcon"
265
300
  })),
266
301
  densityCompactIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
267
- displayName: "densityCompactIcon"
302
+ displayName: "DensityCompactIcon"
268
303
  })),
269
304
  densityStandardIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
270
- displayName: "densityStandardIcon"
305
+ displayName: "DensityStandardIcon"
271
306
  })),
272
307
  densityComfortableIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
273
- displayName: "densityComfortableIcon"
308
+ displayName: "DensityComfortableIcon"
274
309
  })),
275
310
  detailPanelCollapseIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
276
- displayName: "detailPanelCollapseIcon"
311
+ displayName: "DetailPanelCollapseIcon"
277
312
  })),
278
313
  detailPanelExpandIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
279
- displayName: "detailPanelExpandIcon"
314
+ displayName: "DetailPanelExpandIcon"
280
315
  })),
281
316
  exportIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
282
- displayName: "exportIcon"
317
+ displayName: "ExportIcon"
283
318
  })),
284
- openFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
285
- displayName: "openFilterButtonIcon"
286
- }))
319
+ openFilterButtonIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({
320
+ displayName: "OpenFilterButtonIcon"
321
+ }, props))
287
322
  }, slots), {}, {
323
+ toolbar: ToolbarWrapper,
288
324
  pagination: props => pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, _extends({}, props, {
289
325
  displaySelection: false,
290
326
  displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
291
327
  displayPagination: ['bottom', 'both'].includes(paginationPlacement),
292
- selectionStatus: selectionStatus.current,
328
+ selectionStatus: selectionStatus,
293
329
  paginationModel: paginationModel,
294
330
  onPaginationModelChange: onPaginationModelChange,
295
331
  pageSizeOptions: pageSizeOptions,
296
332
  paginationProps: paginationProps,
333
+ paginationMode: paginationMode,
297
334
  rowCount: rowCount
298
335
  })) : /*#__PURE__*/React__default.createElement(ControlledPagination, _extends({}, props, {
299
336
  displaySelection: false,
300
337
  displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
301
338
  displayPagination: ['bottom', 'both'].includes(paginationPlacement),
302
- selectionStatus: selectionStatus.current,
339
+ selectionStatus: selectionStatus,
303
340
  apiRef: apiRef,
304
341
  isRowSelectable: isRowSelectable,
305
342
  paginationModel: paginationModel,
306
343
  onPaginationModelChange: onPaginationModelChange,
307
344
  pageSizeOptions: pageSizeOptions,
308
- paginationProps: paginationProps
345
+ paginationProps: paginationProps,
346
+ paginationMode: paginationMode
309
347
  })) : null
310
348
  }),
311
- slotProps: _objectSpread2({}, slotProps),
349
+ slotProps: _objectSpread2(_objectSpread2({}, slotProps), {}, {
350
+ toolbar: _objectSpread2({
351
+ hideToolbar,
352
+ RenderedToolbar,
353
+ filterModel,
354
+ onFilterModelChange,
355
+ pagination,
356
+ paginationPlacement,
357
+ selectionStatus,
358
+ apiRef,
359
+ isRowSelectable,
360
+ paginationModel,
361
+ onPaginationModelChange,
362
+ pageSizeOptions,
363
+ paginationProps,
364
+ paginationMode,
365
+ rowCount
366
+ }, slotProps === null || slotProps === void 0 ? void 0 : slotProps.toolbar)
367
+ }),
312
368
  filterModel: filterModel,
313
369
  columnVisibilityModel: columnVisibilityModel,
314
370
  pinnedColumns: pinnedColumns,
315
371
  sortModel: sortModel,
316
- initialState: _objectSpread2(_objectSpread2({}, initialState), {}, {
317
- density: (_initialState$density = initialState === null || initialState === void 0 ? void 0 : initialState.density) !== null && _initialState$density !== void 0 ? _initialState$density : 'standard'
318
- }),
372
+ initialState: initialState,
319
373
  isRowSelectable: isRowSelectable,
320
374
  onFilterModelChange: onFilterModelChange,
321
375
  onColumnVisibilityModelChange: onColumnVisibilityModelChange,
@@ -330,66 +384,71 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
330
384
  onPaginationModelChange: onPaginationModelChange,
331
385
  rowSelectionModel: rowSelectionModel,
332
386
  onRowSelectionModelChange: (newSelectionModel, details) => {
387
+ let effectiveSelectionModel = newSelectionModel;
388
+
389
+ // Fix server-side header checkbox: when MUI deselects all due to indeterminate
390
+ // state (cross-page selections exist, 0 on current page), convert to "select page".
391
+ if (pagination && paginationMode === 'server') {
392
+ effectiveSelectionModel = fixServerSideHeaderCheckboxSelection(newSelectionModel, Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], selectionStatusRef, apiRef, isRowSelectable);
393
+ }
333
394
  if (pagination && paginationMode != 'server') {
334
- const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref => {
395
+ const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref5 => {
335
396
  let {
336
397
  model
337
- } = _ref;
398
+ } = _ref5;
338
399
  return isRowSelectable({
339
400
  row: model
340
401
  });
341
- }).map(_ref2 => {
402
+ }).map(_ref6 => {
342
403
  let {
343
404
  id
344
- } = _ref2;
405
+ } = _ref6;
345
406
  return id;
346
407
  }) : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);
347
408
  const numberOfSelectableRowsInPage = selectableRowsInPage.length;
348
- const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref3 => {
409
+ const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref7 => {
349
410
  let {
350
411
  model
351
- } = _ref3;
412
+ } = _ref7;
352
413
  return isRowSelectable({
353
414
  row: model
354
415
  });
355
- }).map(_ref4 => {
416
+ }).map(_ref8 => {
356
417
  let {
357
418
  id
358
- } = _ref4;
419
+ } = _ref8;
359
420
  return id;
360
421
  }) : gridFilteredSortedRowIdsSelector(apiRef);
361
422
  const numberOfSelectableRowsInTable = selectableRowsInTable.length;
362
- const numberOfSelectedRows = getSelectionCount(newSelectionModel);
363
- if (selectionStatus.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage || selectionStatus.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable || selectionStatus.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage) {
423
+ const numberOfSelectedRows = newSelectionModel.length;
424
+ if (selectionStatusRef.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage || selectionStatusRef.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable || selectionStatusRef.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage) {
364
425
  setTimeout(() => {
365
- var _apiRef$current;
366
- (_apiRef$current = apiRef.current) === null || _apiRef$current === void 0 ? void 0 : _apiRef$current.selectRows([], true, true);
426
+ apiRef.current.selectRows([], true, true);
367
427
  }, 0);
368
428
  }
369
429
  if (numberOfSelectedRows === numberOfSelectableRowsInPage && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
370
- selectionStatus.current = {
430
+ selectionStatusRef.current = {
371
431
  type: 'page',
372
432
  numberOfSelectedRows
373
433
  };
374
434
  } else if (numberOfSelectedRows === numberOfSelectableRowsInTable && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
375
- selectionStatus.current = {
435
+ selectionStatusRef.current = {
376
436
  type: 'table',
377
437
  numberOfSelectedRows
378
438
  };
379
439
  } else if (numberOfSelectedRows > 0) {
380
- selectionStatus.current = {
440
+ selectionStatusRef.current = {
381
441
  type: 'other',
382
442
  numberOfSelectedRows
383
443
  };
384
444
  } else {
385
- selectionStatus.current = {
445
+ selectionStatusRef.current = {
386
446
  type: 'none',
387
447
  numberOfSelectedRows
388
448
  };
389
449
  }
390
- forceSelectionUpdate(v => v + 1);
391
450
  }
392
- onRowSelectionModelChange === null || onRowSelectionModelChange === void 0 ? void 0 : onRowSelectionModelChange(newSelectionModel, details);
451
+ onRowSelectionModelChange === null || onRowSelectionModelChange === void 0 ? void 0 : onRowSelectionModelChange(effectiveSelectionModel, details);
393
452
  },
394
453
  sx: _objectSpread2(_objectSpread2({}, sx), {}, {
395
454
  '.MuiDataGrid-columnHeaders': {
@@ -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 GridCallbackDetails,\n gridFilteredSortedRowEntriesSelector,\n gridFilteredSortedRowIdsSelector,\n gridPaginatedVisibleSortedGridRowEntriesSelector,\n gridPaginatedVisibleSortedGridRowIdsSelector,\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 { onServerSideSelectionStatusChange, ServerSideControlledPagination, ControlledPagination } from '../Pagination';\nimport { useControlledDatagridState } from '../../hooks/useControlledDatagridState';\nimport { getSelectionCount, 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 paginationProps,\n rows,\n pageSizeOptions = [5, 10, 25, 50],\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 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 selectionStatus = 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 // 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 selectionStatus,\n forceSelectionUpdate,\n isRowSelectable,\n paginationModel.page,\n paginationModel.pageSize\n );\n }\n }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize]);\n\n if (!Array.isArray(rows)) {\n return null;\n }\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 && ['top', 'both'].includes(paginationPlacement!) && gridReady ? (\n paginationMode == 'server' ? (\n <ServerSideControlledPagination\n displaySelection\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\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\n displayRowsPerPage={['top', 'both'].includes(paginationPlacement!)}\n displayPagination={['top', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\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 showToolbar={!hideToolbar}\n density={forwardedProps.density ?? 'standard'}\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 pagination: (props) =>\n pagination ? (\n paginationMode == 'server' ? (\n <ServerSideControlledPagination\n {...props}\n displaySelection={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\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={false}\n displayRowsPerPage={['bottom', 'both'].includes(paginationPlacement!)}\n displayPagination={['bottom', 'both'].includes(paginationPlacement!)}\n selectionStatus={selectionStatus.current}\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: 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 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 = getSelectionCount(newSelectionModel);\n\n if (\n (selectionStatus.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage) ||\n (selectionStatus.current.type === 'table' &&\n numberOfSelectedRows === numberOfSelectableRowsInTable) ||\n (selectionStatus.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 selectionStatus.current = {\n type: 'page',\n numberOfSelectedRows,\n };\n } else if (\n numberOfSelectedRows === numberOfSelectableRowsInTable &&\n numberOfSelectableRowsInPage < numberOfSelectableRowsInTable\n ) {\n selectionStatus.current = {\n type: 'table',\n numberOfSelectedRows,\n };\n } else if (numberOfSelectedRows > 0) {\n selectionStatus.current = {\n type: 'other',\n numberOfSelectedRows,\n };\n } else {\n selectionStatus.current = {\n type: 'none',\n numberOfSelectedRows,\n };\n }\n forceSelectionUpdate((v) => v + 1);\n }\n onRowSelectionModelChange?.(newSelectionModel, 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","_forwardedProps$densi","_initialState$density","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","paginationProps","rows","pageSizeOptions","sx","theme","propsTheme","paginationMode","rowCount","forwardedProps","_objectWithoutProperties","_excluded","useTheme","_apiRef","useGridApiRef","LicenseInfo","setLicenseKey","undefined","useControlledDatagridState","setRowSelectionModel","useState","normalizeRowSelectionModel","useEffect","selectionModel","details","selectionStatus","type","numberOfSelectedRows","numberOfSelectedRowsInPage","page","pageSize","forceSelectionUpdate","gridReady","setGridReady","checkboxSelectionVisibleOnly","Boolean","current","onServerSideSelectionStatusChange","Array","isArray","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","showToolbar","density","_objectSpread","baseButton","BaseButton","baseCheckbox","BaseCheckbox","baseIconButton","BaseIconButton","columnFilteredIcon","BaseIcon","displayName","columnSelectorIcon","columnSortedAscendingIcon","columnSortedDescendingIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","detailPanelCollapseIcon","detailPanelExpandIcon","exportIcon","openFilterButtonIcon","keepNonExistentRowsSelected","newSelectionModel","selectableRowsInPage","gridPaginatedVisibleSortedGridRowEntriesSelector","filter","_ref","model","row","map","_ref2","id","gridPaginatedVisibleSortedGridRowIdsSelector","numberOfSelectableRowsInPage","length","selectableRowsInTable","gridFilteredSortedRowEntriesSelector","_ref3","_ref4","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInTable","getSelectionCount","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 { BaseIcon, BaseButton, BaseCheckbox, BasePopper } from '../BaseComponents';\nimport { ToolbarWrapper } from '../ToolbarWrapper';\nimport {\n onServerSideSelectionStatusChange,\n fixServerSideHeaderCheckboxSelection,\n ServerSideControlledPagination,\n ControlledPagination,\n} 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 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 // 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 baseButton: BaseButton,\n baseCheckbox: BaseCheckbox,\n // baseTextField,\n basePopper: BasePopper,\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 displayName=\"OpenFilterButtonIcon\" {...props} />,\n ...slots,\n toolbar: ToolbarWrapper,\n pagination: (props) =>\n pagination ? (\n paginationMode == 'server' ? (\n <ServerSideControlledPagination\n {...props}\n displaySelection={false}\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 paginationMode={paginationMode}\n rowCount={rowCount!}\n />\n ) : (\n <ControlledPagination\n {...props}\n displaySelection={false}\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 paginationMode={paginationMode}\n />\n )\n ) : null,\n }}\n slotProps={{\n ...slotProps,\n toolbar: {\n hideToolbar,\n RenderedToolbar,\n filterModel,\n onFilterModelChange,\n pagination,\n paginationPlacement,\n selectionStatus,\n apiRef,\n isRowSelectable,\n paginationModel,\n onPaginationModelChange,\n pageSizeOptions,\n paginationProps,\n paginationMode,\n rowCount,\n ...slotProps?.toolbar,\n },\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","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","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","baseButton","BaseButton","baseCheckbox","BaseCheckbox","basePopper","BasePopper","columnFilteredIcon","BaseIcon","displayName","columnSelectorIcon","columnSortedAscendingIcon","columnSortedDescendingIcon","densityCompactIcon","densityStandardIcon","densityComfortableIcon","detailPanelCollapseIcon","detailPanelExpandIcon","exportIcon","openFilterButtonIcon","ToolbarWrapper","ServerSideControlledPagination","displaySelection","displayRowsPerPage","displayPagination","ControlledPagination","keepNonExistentRowsSelected","newSelectionModel","effectiveSelectionModel","fixServerSideHeaderCheckboxSelection","_ref5","_ref6","_ref7","_ref8","setTimeout","selectRows","flexDirection","alignItems","margin"],"mappings":"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"}