@redsift/table 12.4.0 → 12.5.0-muiv7

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
4
  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';
5
+ import { useGridApiRef, 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 { b 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,
@@ -173,30 +174,95 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
173
174
  // Version counter to force re-renders when selectionStatus ref changes
174
175
  const [, forceSelectionUpdate] = useState(0);
175
176
 
176
- // Track when the grid API is ready to ensure top pagination renders correctly
177
- const [gridReady, setGridReady] = useState(false);
178
-
179
177
  // The checkboxSelectionVisibleOnly should only be applied to client-side pagination,
180
178
  // for server-side pagination it produces inconsistent behavior when selecting all rows in pages 2 and beyond
181
179
  const checkboxSelectionVisibleOnly = Boolean(pagination) && Boolean(paginationMode != 'server');
182
180
 
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
181
  // in server-side pagination we want to update the selection status
191
182
  // every time we navigate between pages, resize our page or select something
192
183
  useEffect(() => {
193
184
  if (paginationMode == 'server') {
194
- onServerSideSelectionStatusChange(rowSelectionModel, apiRef, selectionStatus, forceSelectionUpdate, isRowSelectable, paginationModel.page, paginationModel.pageSize);
185
+ onServerSideSelectionStatusChange(Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], apiRef, selectionStatusRef, forceSelectionUpdate, isRowSelectable, paginationModel.page, paginationModel.pageSize);
195
186
  }
196
- }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize]);
187
+ }, [rowSelectionModel, paginationModel.page, paginationModel.pageSize, rows]);
197
188
  if (!Array.isArray(rows)) {
198
189
  return null;
199
190
  }
191
+
192
+ // Compute selection status synchronously during render for client-side pagination.
193
+ // This value is passed directly to ToolbarWrapper and ControlledPagination, so slots
194
+ // receive the fresh value in the same render cycle — no extra re-render needed.
195
+ // The ref is kept in sync for the onRowSelectionModelChange callback's deselect logic.
196
+ let selectionStatus = selectionStatusRef.current;
197
+ if (pagination && paginationMode !== 'server' && Array.isArray(rowSelectionModel) && rowSelectionModel.length > 0) {
198
+ try {
199
+ // Use manual page slicing with our React state's paginationModel instead of
200
+ // gridPaginatedVisibleSortedGridRow*Selector(apiRef). In MUI v7, the apiRef's
201
+ // internal pagination state can lag behind the React state after a page change,
202
+ // causing the selection status to be one page behind.
203
+ const pageStart = paginationModel.page * paginationModel.pageSize;
204
+ const pageEnd = pageStart + paginationModel.pageSize;
205
+ const selectableRowsInPage = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).slice(pageStart, pageEnd).filter(_ref => {
206
+ let {
207
+ model
208
+ } = _ref;
209
+ return isRowSelectable({
210
+ row: model
211
+ });
212
+ }).map(_ref2 => {
213
+ let {
214
+ id
215
+ } = _ref2;
216
+ return id;
217
+ }) : gridFilteredSortedRowIdsSelector(apiRef).slice(pageStart, pageEnd);
218
+ const numberOfSelectableRowsInPage = selectableRowsInPage.length;
219
+ const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref3 => {
220
+ let {
221
+ model
222
+ } = _ref3;
223
+ return isRowSelectable({
224
+ row: model
225
+ });
226
+ }).map(_ref4 => {
227
+ let {
228
+ id
229
+ } = _ref4;
230
+ return id;
231
+ }) : gridFilteredSortedRowIdsSelector(apiRef);
232
+ const numberOfSelectableRowsInTable = selectableRowsInTable.length;
233
+ const numberOfSelectedRows = rowSelectionModel.length;
234
+ const selectedOnCurrentPage = selectableRowsInPage.filter(id => rowSelectionModel.includes(id));
235
+ if (numberOfSelectedRows === numberOfSelectableRowsInTable && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
236
+ selectionStatus = {
237
+ type: 'table',
238
+ numberOfSelectedRows
239
+ };
240
+ } else if (selectedOnCurrentPage.length === numberOfSelectableRowsInPage && numberOfSelectableRowsInPage > 0 && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
241
+ selectionStatus = {
242
+ type: 'page',
243
+ numberOfSelectedRows: selectedOnCurrentPage.length
244
+ };
245
+ } else if (numberOfSelectedRows > 0) {
246
+ selectionStatus = {
247
+ type: 'other',
248
+ numberOfSelectedRows
249
+ };
250
+ } else {
251
+ selectionStatus = {
252
+ type: 'none',
253
+ numberOfSelectedRows: 0
254
+ };
255
+ }
256
+ } catch {
257
+ // apiRef may not be initialized on first render
258
+ }
259
+ } else if (pagination && paginationMode !== 'server') {
260
+ selectionStatus = {
261
+ type: 'none',
262
+ numberOfSelectedRows: 0
263
+ };
264
+ }
265
+ selectionStatusRef.current = selectionStatus;
200
266
  const muiTheme = useMemo(() => createTheme({
201
267
  palette: {
202
268
  mode: theme,
@@ -219,38 +285,16 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
219
285
  ref: datagridRef,
220
286
  className: classNames(DataGrid.className, className),
221
287
  $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, {
288
+ }, /*#__PURE__*/React__default.createElement(DataGridPro, _extends({}, forwardedProps, {
244
289
  rowCount: rowCount,
245
290
  apiRef: apiRef,
246
291
  autoHeight: autoHeight,
247
292
  checkboxSelectionVisibleOnly: checkboxSelectionVisibleOnly,
248
- showToolbar: !hideToolbar,
249
- density: (_forwardedProps$densi = forwardedProps.density) !== null && _forwardedProps$densi !== void 0 ? _forwardedProps$densi : 'standard',
250
293
  slots: _objectSpread2(_objectSpread2({
251
294
  baseButton: BaseButton,
252
295
  baseCheckbox: BaseCheckbox,
253
- baseIconButton: BaseIconButton,
296
+ // baseTextField,
297
+ basePopper: BasePopper,
254
298
  columnFilteredIcon: props => /*#__PURE__*/React__default.createElement(BaseIcon, _extends({}, props, {
255
299
  displayName: "columnFilteredIcon"
256
300
  })),
@@ -285,11 +329,28 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
285
329
  displayName: "openFilterButtonIcon"
286
330
  }))
287
331
  }, slots), {}, {
332
+ toolbar: props => /*#__PURE__*/React__default.createElement(ToolbarWrapper, _extends({}, props, {
333
+ hideToolbar: hideToolbar,
334
+ RenderedToolbar: RenderedToolbar,
335
+ filterModel: filterModel,
336
+ onFilterModelChange: onFilterModelChange,
337
+ pagination: pagination,
338
+ paginationPlacement: paginationPlacement,
339
+ selectionStatus: selectionStatus,
340
+ apiRef: apiRef,
341
+ isRowSelectable: isRowSelectable,
342
+ paginationModel: paginationModel,
343
+ onPaginationModelChange: onPaginationModelChange,
344
+ pageSizeOptions: pageSizeOptions,
345
+ paginationProps: paginationProps,
346
+ paginationMode: paginationMode,
347
+ rowCount: rowCount
348
+ })),
288
349
  pagination: props => pagination ? paginationMode == 'server' ? /*#__PURE__*/React__default.createElement(ServerSideControlledPagination, _extends({}, props, {
289
350
  displaySelection: false,
290
351
  displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
291
352
  displayPagination: ['bottom', 'both'].includes(paginationPlacement),
292
- selectionStatus: selectionStatus.current,
353
+ selectionStatus: selectionStatus,
293
354
  paginationModel: paginationModel,
294
355
  onPaginationModelChange: onPaginationModelChange,
295
356
  pageSizeOptions: pageSizeOptions,
@@ -299,7 +360,7 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
299
360
  displaySelection: false,
300
361
  displayRowsPerPage: ['bottom', 'both'].includes(paginationPlacement),
301
362
  displayPagination: ['bottom', 'both'].includes(paginationPlacement),
302
- selectionStatus: selectionStatus.current,
363
+ selectionStatus: selectionStatus,
303
364
  apiRef: apiRef,
304
365
  isRowSelectable: isRowSelectable,
305
366
  paginationModel: paginationModel,
@@ -313,9 +374,7 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
313
374
  columnVisibilityModel: columnVisibilityModel,
314
375
  pinnedColumns: pinnedColumns,
315
376
  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
- }),
377
+ initialState: initialState,
319
378
  isRowSelectable: isRowSelectable,
320
379
  onFilterModelChange: onFilterModelChange,
321
380
  onColumnVisibilityModelChange: onColumnVisibilityModelChange,
@@ -330,66 +389,74 @@ const DataGrid = /*#__PURE__*/forwardRef((props, ref) => {
330
389
  onPaginationModelChange: onPaginationModelChange,
331
390
  rowSelectionModel: rowSelectionModel,
332
391
  onRowSelectionModelChange: (newSelectionModel, details) => {
392
+ let effectiveSelectionModel = newSelectionModel;
393
+
394
+ // Fix server-side header checkbox: when MUI deselects all due to indeterminate
395
+ // state (cross-page selections exist, 0 on current page), convert to "select page".
396
+ if (pagination && paginationMode === 'server') {
397
+ effectiveSelectionModel = fixServerSideHeaderCheckboxSelection(newSelectionModel, Array.isArray(rowSelectionModel) ? rowSelectionModel : [rowSelectionModel], selectionStatusRef, apiRef, isRowSelectable);
398
+ }
333
399
  if (pagination && paginationMode != 'server') {
334
- const selectableRowsInPage = isRowSelectable ? gridPaginatedVisibleSortedGridRowEntriesSelector(apiRef).filter(_ref => {
400
+ const cbPageStart = paginationModel.page * paginationModel.pageSize;
401
+ const cbPageEnd = cbPageStart + paginationModel.pageSize;
402
+ const selectableRowsInPage = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).slice(cbPageStart, cbPageEnd).filter(_ref5 => {
335
403
  let {
336
404
  model
337
- } = _ref;
405
+ } = _ref5;
338
406
  return isRowSelectable({
339
407
  row: model
340
408
  });
341
- }).map(_ref2 => {
409
+ }).map(_ref6 => {
342
410
  let {
343
411
  id
344
- } = _ref2;
412
+ } = _ref6;
345
413
  return id;
346
- }) : gridPaginatedVisibleSortedGridRowIdsSelector(apiRef);
414
+ }) : gridFilteredSortedRowIdsSelector(apiRef).slice(cbPageStart, cbPageEnd);
347
415
  const numberOfSelectableRowsInPage = selectableRowsInPage.length;
348
- const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref3 => {
416
+ const selectableRowsInTable = isRowSelectable ? gridFilteredSortedRowEntriesSelector(apiRef).filter(_ref7 => {
349
417
  let {
350
418
  model
351
- } = _ref3;
419
+ } = _ref7;
352
420
  return isRowSelectable({
353
421
  row: model
354
422
  });
355
- }).map(_ref4 => {
423
+ }).map(_ref8 => {
356
424
  let {
357
425
  id
358
- } = _ref4;
426
+ } = _ref8;
359
427
  return id;
360
428
  }) : gridFilteredSortedRowIdsSelector(apiRef);
361
429
  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) {
430
+ const numberOfSelectedRows = newSelectionModel.length;
431
+ if (selectionStatusRef.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable - numberOfSelectableRowsInPage || selectionStatusRef.current.type === 'table' && numberOfSelectedRows === numberOfSelectableRowsInTable || selectionStatusRef.current.type === 'page' && numberOfSelectedRows === numberOfSelectableRowsInPage) {
364
432
  setTimeout(() => {
365
- var _apiRef$current;
366
- (_apiRef$current = apiRef.current) === null || _apiRef$current === void 0 ? void 0 : _apiRef$current.selectRows([], true, true);
433
+ apiRef.current.selectRows([], true, true);
367
434
  }, 0);
368
435
  }
369
436
  if (numberOfSelectedRows === numberOfSelectableRowsInPage && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
370
- selectionStatus.current = {
437
+ selectionStatusRef.current = {
371
438
  type: 'page',
372
439
  numberOfSelectedRows
373
440
  };
374
441
  } else if (numberOfSelectedRows === numberOfSelectableRowsInTable && numberOfSelectableRowsInPage < numberOfSelectableRowsInTable) {
375
- selectionStatus.current = {
442
+ selectionStatusRef.current = {
376
443
  type: 'table',
377
444
  numberOfSelectedRows
378
445
  };
379
446
  } else if (numberOfSelectedRows > 0) {
380
- selectionStatus.current = {
447
+ selectionStatusRef.current = {
381
448
  type: 'other',
382
449
  numberOfSelectedRows
383
450
  };
384
451
  } else {
385
- selectionStatus.current = {
452
+ selectionStatusRef.current = {
386
453
  type: 'none',
387
454
  numberOfSelectedRows
388
455
  };
389
456
  }
390
457
  forceSelectionUpdate(v => v + 1);
391
458
  }
392
- onRowSelectionModelChange === null || onRowSelectionModelChange === void 0 ? void 0 : onRowSelectionModelChange(newSelectionModel, details);
459
+ onRowSelectionModelChange === null || onRowSelectionModelChange === void 0 ? void 0 : onRowSelectionModelChange(effectiveSelectionModel, details);
393
460
  },
394
461
  sx: _objectSpread2(_objectSpread2({}, sx), {}, {
395
462
  '.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';\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 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 // Version counter to force re-renders when selectionStatus ref changes\n const [, forceSelectionUpdate] = useState(0);\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 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' && Array.isArray(rowSelectionModel) && rowSelectionModel.length > 0) {\n try {\n // Use manual page slicing with our React state's paginationModel instead of\n // gridPaginatedVisibleSortedGridRow*Selector(apiRef). In MUI v7, the apiRef's\n // internal pagination state can lag behind the React state after a page change,\n // causing the selection status to be one page behind.\n const pageStart = paginationModel.page * paginationModel.pageSize;\n const pageEnd = pageStart + paginationModel.pageSize;\n\n const selectableRowsInPage = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .slice(pageStart, pageEnd)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef).slice(pageStart, pageEnd);\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 {...props} displayName=\"openFilterButtonIcon\" />,\n ...slots,\n toolbar: (props) => (\n <ToolbarWrapper\n {...props}\n hideToolbar={hideToolbar}\n RenderedToolbar={RenderedToolbar}\n filterModel={filterModel}\n onFilterModelChange={onFilterModelChange}\n pagination={pagination}\n paginationPlacement={paginationPlacement}\n selectionStatus={selectionStatus}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions}\n paginationProps={paginationProps}\n paginationMode={paginationMode}\n rowCount={rowCount}\n />\n ),\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}\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}\n apiRef={apiRef}\n isRowSelectable={isRowSelectable}\n paginationModel={paginationModel}\n onPaginationModelChange={onPaginationModelChange}\n pageSizeOptions={pageSizeOptions}\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}\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 cbPageStart = paginationModel.page * paginationModel.pageSize;\n const cbPageEnd = cbPageStart + paginationModel.pageSize;\n\n const selectableRowsInPage = isRowSelectable\n ? gridFilteredSortedRowEntriesSelector(apiRef)\n .slice(cbPageStart, cbPageEnd)\n .filter(({ model }) => isRowSelectable({ row: model } as GridRowParams))\n .map(({ id }) => id)\n : gridFilteredSortedRowIdsSelector(apiRef).slice(cbPageStart, cbPageEnd);\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 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","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","forceSelectionUpdate","checkboxSelectionVisibleOnly","Boolean","onServerSideSelectionStatusChange","Array","isArray","selectionStatus","current","length","pageStart","pageEnd","selectableRowsInPage","gridFilteredSortedRowEntriesSelector","slice","filter","_ref","model","row","map","_ref2","id","gridFilteredSortedRowIdsSelector","numberOfSelectableRowsInPage","selectableRowsInTable","_ref3","_ref4","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","cbPageStart","cbPageEnd","_ref5","_ref6","_ref7","_ref8","setTimeout","selectRows","v","flexDirection","alignItems","margin"],"mappings":"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"}