@mui/x-data-grid 7.1.1 → 7.2.0

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.
Files changed (67) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/components/GridRow.js +3 -1
  3. package/components/cell/GridCell.d.ts +1 -0
  4. package/components/cell/GridCell.js +4 -2
  5. package/components/columnHeaders/GridColumnGroupHeader.d.ts +1 -0
  6. package/components/columnHeaders/GridColumnGroupHeader.js +3 -2
  7. package/components/columnHeaders/GridColumnHeaderItem.d.ts +1 -0
  8. package/components/columnHeaders/GridColumnHeaderItem.js +4 -2
  9. package/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  10. package/components/containers/GridRootStyles.js +5 -3
  11. package/components/panel/filterPanel/GridFilterInputDate.js +5 -1
  12. package/constants/gridClasses.d.ts +5 -0
  13. package/constants/gridClasses.js +1 -1
  14. package/hooks/core/useGridInitialization.js +1 -1
  15. package/hooks/core/useGridStateInitialization.d.ts +1 -2
  16. package/hooks/core/useGridStateInitialization.js +6 -10
  17. package/hooks/features/columnHeaders/useGridColumnHeaders.js +7 -3
  18. package/hooks/features/editing/useGridCellEditing.js +3 -1
  19. package/hooks/features/editing/useGridRowEditing.js +3 -1
  20. package/hooks/features/export/serializers/csvSerializer.js +6 -5
  21. package/index.js +1 -1
  22. package/locales/deDE.js +3 -4
  23. package/locales/frFR.js +5 -6
  24. package/locales/svSE.js +3 -4
  25. package/models/api/gridCallbackDetails.d.ts +5 -0
  26. package/modern/components/GridRow.js +3 -1
  27. package/modern/components/cell/GridCell.js +4 -2
  28. package/modern/components/columnHeaders/GridColumnGroupHeader.js +3 -2
  29. package/modern/components/columnHeaders/GridColumnHeaderItem.js +4 -2
  30. package/modern/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  31. package/modern/components/containers/GridRootStyles.js +5 -3
  32. package/modern/components/panel/filterPanel/GridFilterInputDate.js +5 -1
  33. package/modern/constants/gridClasses.js +1 -1
  34. package/modern/hooks/core/useGridInitialization.js +1 -1
  35. package/modern/hooks/core/useGridStateInitialization.js +6 -10
  36. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +7 -3
  37. package/modern/hooks/features/editing/useGridCellEditing.js +3 -1
  38. package/modern/hooks/features/editing/useGridRowEditing.js +3 -1
  39. package/modern/hooks/features/export/serializers/csvSerializer.js +6 -5
  40. package/modern/index.js +1 -1
  41. package/modern/locales/deDE.js +3 -4
  42. package/modern/locales/frFR.js +5 -6
  43. package/modern/locales/svSE.js +3 -4
  44. package/modern/utils/cellBorderUtils.js +15 -2
  45. package/node/components/GridRow.js +3 -1
  46. package/node/components/cell/GridCell.js +4 -2
  47. package/node/components/columnHeaders/GridColumnGroupHeader.js +3 -2
  48. package/node/components/columnHeaders/GridColumnHeaderItem.js +4 -2
  49. package/node/components/columnHeaders/GridColumnHeaderSeparator.js +1 -1
  50. package/node/components/containers/GridRootStyles.js +5 -3
  51. package/node/components/panel/filterPanel/GridFilterInputDate.js +5 -1
  52. package/node/constants/gridClasses.js +1 -1
  53. package/node/hooks/core/useGridInitialization.js +1 -1
  54. package/node/hooks/core/useGridStateInitialization.js +6 -10
  55. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +7 -3
  56. package/node/hooks/features/editing/useGridCellEditing.js +3 -1
  57. package/node/hooks/features/editing/useGridRowEditing.js +3 -1
  58. package/node/hooks/features/export/serializers/csvSerializer.js +6 -5
  59. package/node/index.js +1 -1
  60. package/node/locales/deDE.js +3 -4
  61. package/node/locales/frFR.js +5 -6
  62. package/node/locales/svSE.js +3 -4
  63. package/node/utils/cellBorderUtils.js +15 -2
  64. package/package.json +1 -1
  65. package/themeAugmentation/overrides.d.ts +6 -0
  66. package/utils/cellBorderUtils.d.ts +1 -1
  67. package/utils/cellBorderUtils.js +15 -2
@@ -54,7 +54,8 @@ function GridColumnHeaderItem(props) {
54
54
  style,
55
55
  pinnedPosition,
56
56
  indexInSection,
57
- sectionLength
57
+ sectionLength,
58
+ gridHasFiller
58
59
  } = props;
59
60
  const apiRef = useGridPrivateApiContext();
60
61
  const rootProps = useGridRootProps();
@@ -69,7 +70,7 @@ function GridColumnHeaderItem(props) {
69
70
  headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
70
71
  }
71
72
  const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
72
- const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
73
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
73
74
  const ownerState = _extends({}, props, {
74
75
  classes: rootProps.classes,
75
76
  showRightBorder,
@@ -201,6 +202,7 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
201
202
  columnMenuOpen: PropTypes.bool.isRequired,
202
203
  disableReorder: PropTypes.bool,
203
204
  filterItemsCounter: PropTypes.number,
205
+ gridHasFiller: PropTypes.bool.isRequired,
204
206
  hasFocus: PropTypes.bool,
205
207
  headerHeight: PropTypes.number.isRequired,
206
208
  indexInSection: PropTypes.number.isRequired,
@@ -48,7 +48,7 @@ function GridColumnHeaderSeparatorRaw(props) {
48
48
  className: classes.root,
49
49
  style: {
50
50
  minHeight: height,
51
- opacity: rootProps.showColumnVerticalBorder ? 0 : 1
51
+ opacity: rootProps.showColumnVerticalBorder ? 1 : 0
52
52
  }
53
53
  }, other, {
54
54
  onClick: stopClick,
@@ -151,8 +151,8 @@ export const GridRootStyles = styled('div', {
151
151
  }) => {
152
152
  const borderColor = getBorderColor(t);
153
153
  const radius = t.shape.borderRadius;
154
- const containerBackground = t.vars ? t.vars.palette.background.default : t.palette.background.default;
155
- const pinnedBackground = containerBackground;
154
+ const containerBackground = t.vars ? t.vars.palette.background.default : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default;
155
+ const pinnedBackground = t.mixins.MuiDataGrid?.pinnedBackground ?? containerBackground;
156
156
  const overlayBackground = t.vars ? `rgba(${t.vars.palette.background.defaultChannel} / ${t.vars.palette.action.disabledOpacity})` : alpha(t.palette.background.default, t.palette.action.disabledOpacity);
157
157
  const hoverOpacity = (t.vars || t).palette.action.hoverOpacity;
158
158
  const hoverColor = (t.vars || t).palette.action.hover;
@@ -450,7 +450,6 @@ export const GridRootStyles = styled('div', {
450
450
  userSelect: 'none'
451
451
  },
452
452
  [`& .${c['row--dynamicHeight']} > .${c.cell}`]: {
453
- overflow: 'initial',
454
453
  whiteSpace: 'initial',
455
454
  lineHeight: 'inherit'
456
455
  },
@@ -632,6 +631,9 @@ export const GridRootStyles = styled('div', {
632
631
  },
633
632
  [`& .${c.filler}`]: {
634
633
  flex: 1
634
+ },
635
+ [`& .${c['filler--borderTop']}`]: {
636
+ borderTop: '1px solid var(--DataGrid-rowBorderColor)'
635
637
  }
636
638
  });
637
639
  return gridStyle;
@@ -12,6 +12,9 @@ function convertFilterItemValueToInputValue(itemValue, inputType) {
12
12
  return '';
13
13
  }
14
14
  const dateCopy = new Date(itemValue);
15
+ if (Number.isNaN(dateCopy.getTime())) {
16
+ return '';
17
+ }
15
18
  // The date picker expects the date to be in the local timezone.
16
19
  // But .toISOString() converts it to UTC with zero offset.
17
20
  // So we need to subtract the timezone offset.
@@ -48,8 +51,9 @@ function GridFilterInputDate(props) {
48
51
  setFilterValueState(value);
49
52
  setIsApplying(true);
50
53
  filterTimeout.start(rootProps.filterDebounceMs, () => {
54
+ const date = new Date(value);
51
55
  applyValue(_extends({}, item, {
52
- value: new Date(value)
56
+ value: Number.isNaN(date.getTime()) ? undefined : date
53
57
  }));
54
58
  setIsApplying(false);
55
59
  });
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
5
+ export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderTop', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -15,7 +15,7 @@ export const useGridInitialization = (inputApiRef, props) => {
15
15
  useGridRefs(privateApiRef);
16
16
  useGridTheme(privateApiRef);
17
17
  useGridLoggerFactory(privateApiRef, props);
18
- useGridStateInitialization(privateApiRef, props);
18
+ useGridStateInitialization(privateApiRef);
19
19
  useGridPipeProcessing(privateApiRef);
20
20
  useGridStrategyProcessing(privateApiRef);
21
21
  useGridLocaleText(privateApiRef, props);
@@ -1,9 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridSignature } from '../utils/useGridApiEventHandler';
4
3
  import { useGridApiMethod } from '../utils';
5
4
  import { isFunction } from '../../utils/utils';
6
- export const useGridStateInitialization = (apiRef, props) => {
5
+ export const useGridStateInitialization = apiRef => {
7
6
  const controlStateMapRef = React.useRef({});
8
7
  const [, rawForceUpdate] = React.useState();
9
8
  const registerControlState = React.useCallback(controlStateItem => {
@@ -62,13 +61,10 @@ export const useGridStateInitialization = (apiRef, props) => {
62
61
  const controlState = controlStateMapRef.current[stateId];
63
62
  const model = controlState.stateSelector(newState, apiRef.current.instanceId);
64
63
  if (controlState.propOnChange && hasPropChanged) {
65
- const details = props.signature === GridSignature.DataGridPro ? {
66
- api: apiRef.current,
67
- reason
68
- } : {
69
- reason
70
- };
71
- controlState.propOnChange(model, details);
64
+ controlState.propOnChange(model, {
65
+ reason,
66
+ api: apiRef.current
67
+ });
72
68
  }
73
69
  if (!ignoreSetState) {
74
70
  apiRef.current.publishEvent(controlState.changeEvent, model, {
@@ -77,7 +73,7 @@ export const useGridStateInitialization = (apiRef, props) => {
77
73
  }
78
74
  }
79
75
  return !ignoreSetState;
80
- }, [apiRef, props.signature]);
76
+ }, [apiRef]);
81
77
  const updateControlState = React.useCallback((key, state, reason) => {
82
78
  return apiRef.current.setState(previousState => {
83
79
  return _extends({}, previousState, {
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import clsx from 'clsx';
3
4
  import { styled, useTheme } from '@mui/material/styles';
4
5
  import { useGridSelector } from '../../utils';
5
6
  import { useGridRootProps } from '../../utils/useGridRootProps';
@@ -51,6 +52,7 @@ export const useGridColumnHeaders = props => {
51
52
  const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);
52
53
  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
53
54
  const offsetLeft = computeOffsetLeft(columnPositions, renderContext, theme.direction, pinnedColumns.left.length);
55
+ const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
54
56
  React.useEffect(() => {
55
57
  apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
56
58
  }, [apiRef]);
@@ -104,7 +106,7 @@ export const useGridColumnHeaders = props => {
104
106
  }
105
107
  }), children, isNotPinned && /*#__PURE__*/_jsx("div", {
106
108
  role: "presentation",
107
- className: gridClasses.filler
109
+ className: clsx(gridClasses.filler, borderTop && gridClasses['filler--borderTop'])
108
110
  }), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {
109
111
  header: true,
110
112
  borderTop: borderTop,
@@ -165,7 +167,8 @@ export const useGridColumnHeaders = props => {
165
167
  pinnedPosition: pinnedPosition,
166
168
  style: style,
167
169
  indexInSection: i,
168
- sectionLength: renderedColumns.length
170
+ sectionLength: renderedColumns.length,
171
+ gridHasFiller: gridHasFiller
169
172
  }, other), colDef.field));
170
173
  }
171
174
  return getFillers(params, columns, 0);
@@ -275,7 +278,8 @@ export const useGridColumnHeaders = props => {
275
278
  pinnedPosition: pinnedPosition,
276
279
  style: style,
277
280
  indexInSection: indexInSection,
278
- sectionLength: renderedColumns.length
281
+ sectionLength: renderedColumns.length,
282
+ gridHasFiller: gridHasFiller
279
283
  }, index);
280
284
  });
281
285
  return getFillers(params, children, leftOverflow);
@@ -168,7 +168,9 @@ export const useGridCellEditing = (apiRef, props) => {
168
168
  const updateCellModesModel = useEventCallback(newModel => {
169
169
  const isNewModelDifferentFromProp = newModel !== props.cellModesModel;
170
170
  if (onCellModesModelChange && isNewModelDifferentFromProp) {
171
- onCellModesModelChange(newModel, {});
171
+ onCellModesModelChange(newModel, {
172
+ api: apiRef.current
173
+ });
172
174
  }
173
175
  if (props.cellModesModel && isNewModelDifferentFromProp) {
174
176
  return; // The prop always win
@@ -242,7 +242,9 @@ export const useGridRowEditing = (apiRef, props) => {
242
242
  const updateRowModesModel = useEventCallback(newModel => {
243
243
  const isNewModelDifferentFromProp = newModel !== props.rowModesModel;
244
244
  if (onRowModesModelChange && isNewModelDifferentFromProp) {
245
- onRowModesModelChange(newModel, {});
245
+ onRowModesModelChange(newModel, {
246
+ api: apiRef.current
247
+ });
246
248
  }
247
249
  if (props.rowModesModel && isNewModelDifferentFromProp) {
248
250
  return; // The prop always win
@@ -2,12 +2,13 @@ import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../../colDef';
2
2
  import { buildWarning } from '../../../../utils/warning';
3
3
  function sanitizeCellValue(value, delimiterCharacter, shouldAppendQuotes) {
4
4
  if (typeof value === 'string') {
5
- // Make sure value containing delimiter or line break won't be split into multiple rows
6
- if ([delimiterCharacter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
7
- if (shouldAppendQuotes) {
8
- return `"${value.replace(/"/g, '""')}"`;
5
+ if (shouldAppendQuotes) {
6
+ const escapedValue = value.replace(/"/g, '""');
7
+ // Make sure value containing delimiter or line break won't be split into multiple rows
8
+ if ([delimiterCharacter, '\n', '\r', '"'].some(delimiter => value.includes(delimiter))) {
9
+ return `"${escapedValue}"`;
9
10
  }
10
- return `${value.replace(/"/g, '""')}`;
11
+ return escapedValue;
11
12
  }
12
13
  return value;
13
14
  }
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.1.1
2
+ * @mui/x-data-grid v7.2.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -30,10 +30,9 @@ const deDEGrid = {
30
30
  toolbarExportPrint: 'Drucken',
31
31
  toolbarExportExcel: 'Download als Excel',
32
32
  // Columns management text
33
- // columnsManagementSearchTitle: 'Search',
34
- // columnsManagementNoColumns: 'No columns',
35
- // columnsManagementShowHideAllText: 'Show/Hide All',
36
-
33
+ columnsManagementSearchTitle: 'Suche',
34
+ columnsManagementNoColumns: 'Keine Spalten',
35
+ columnsManagementShowHideAllText: 'Alle anzeigen/verbergen',
37
36
  // Filter panel text
38
37
  filterPanelAddFilter: 'Filter hinzufügen',
39
38
  filterPanelRemoveAll: 'Alle entfernen',
@@ -16,7 +16,7 @@ const frFRGrid = {
16
16
  // Filters toolbar button text
17
17
  toolbarFilters: 'Filtres',
18
18
  toolbarFiltersLabel: 'Afficher les filtres',
19
- toolbarFiltersTooltipHide: 'Cacher les filtres',
19
+ toolbarFiltersTooltipHide: 'Masquer les filtres',
20
20
  toolbarFiltersTooltipShow: 'Afficher les filtres',
21
21
  toolbarFiltersTooltipActive: count => count > 1 ? `${count} filtres actifs` : `${count} filtre actif`,
22
22
  // Quick filter toolbar field
@@ -30,10 +30,9 @@ const frFRGrid = {
30
30
  toolbarExportPrint: 'Imprimer',
31
31
  toolbarExportExcel: 'Télécharger pour Excel',
32
32
  // Columns management text
33
- // columnsManagementSearchTitle: 'Search',
34
- // columnsManagementNoColumns: 'No columns',
35
- // columnsManagementShowHideAllText: 'Show/Hide All',
36
-
33
+ columnsManagementSearchTitle: 'Rechercher',
34
+ columnsManagementNoColumns: 'Pas de colonnes',
35
+ columnsManagementShowHideAllText: 'Afficher/masquer toutes',
37
36
  // Filter panel text
38
37
  filterPanelAddFilter: 'Ajouter un filtre',
39
38
  filterPanelRemoveAll: 'Tout supprimer',
@@ -94,7 +93,7 @@ const frFRGrid = {
94
93
  columnMenuShowColumns: 'Afficher les colonnes',
95
94
  columnMenuManageColumns: 'Gérer les colonnes',
96
95
  columnMenuFilter: 'Filtrer',
97
- columnMenuHideColumn: 'Cacher',
96
+ columnMenuHideColumn: 'Masquer',
98
97
  columnMenuUnsort: 'Annuler le tri',
99
98
  columnMenuSortAsc: 'Tri ascendant',
100
99
  columnMenuSortDesc: 'Tri descendant',
@@ -30,10 +30,9 @@ const svSEGrid = {
30
30
  toolbarExportPrint: 'Skriv ut',
31
31
  toolbarExportExcel: 'Ladda ner som Excel',
32
32
  // Columns management text
33
- // columnsManagementSearchTitle: 'Search',
34
- // columnsManagementNoColumns: 'No columns',
35
- // columnsManagementShowHideAllText: 'Show/Hide All',
36
-
33
+ columnsManagementSearchTitle: 'Sök',
34
+ columnsManagementNoColumns: 'Inga kolumner',
35
+ columnsManagementShowHideAllText: 'Visa/Dölj alla',
37
36
  // Filter panel text
38
37
  filterPanelAddFilter: 'Lägg till filter',
39
38
  filterPanelRemoveAll: 'Ta bort alla',
@@ -1,7 +1,20 @@
1
1
  import { GridPinnedColumnPosition } from '../hooks/features/columns/gridColumnsInterfaces';
2
- export const shouldCellShowRightBorder = (pinnedPosition, indexInSection, sectionLength, showCellVerticalBorderRootProp) => {
2
+ export const shouldCellShowRightBorder = (pinnedPosition, indexInSection, sectionLength, showCellVerticalBorderRootProp, gridHasFiller) => {
3
3
  const isSectionLastCell = indexInSection === sectionLength - 1;
4
- return showCellVerticalBorderRootProp && (pinnedPosition !== GridPinnedColumnPosition.LEFT ? !isSectionLastCell : true) || pinnedPosition === GridPinnedColumnPosition.LEFT && isSectionLastCell;
4
+ if (pinnedPosition === GridPinnedColumnPosition.LEFT && isSectionLastCell) {
5
+ return true;
6
+ }
7
+ if (showCellVerticalBorderRootProp) {
8
+ if (pinnedPosition === GridPinnedColumnPosition.LEFT) {
9
+ return true;
10
+ }
11
+ if (pinnedPosition === GridPinnedColumnPosition.RIGHT) {
12
+ return !isSectionLastCell;
13
+ }
14
+ // pinnedPosition === undefined, middle section
15
+ return !isSectionLastCell || gridHasFiller;
16
+ }
17
+ return false;
5
18
  };
6
19
  export const shouldCellShowLeftBorder = (pinnedPosition, indexInSection) => {
7
20
  return pinnedPosition === GridPinnedColumnPosition.RIGHT && indexInSection === 0;
@@ -101,6 +101,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
101
101
  const handleRef = (0, _utils.unstable_useForkRef)(ref, refProp);
102
102
  const rowNode = apiRef.current.getRowNode(rowId);
103
103
  const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
104
+ const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
104
105
  const hasFocusCell = focusedColumnIndex !== undefined;
105
106
  const hasVirtualFocusCellLeft = hasFocusCell && focusedColumnIndex >= pinnedColumns.left.length && focusedColumnIndex < renderContext.firstColumnIndex;
106
107
  const hasVirtualFocusCellRight = hasFocusCell && focusedColumnIndex < visibleColumns.length - pinnedColumns.right.length && focusedColumnIndex >= renderContext.lastColumnIndex;
@@ -292,7 +293,8 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
292
293
  pinnedOffset: pinnedOffset,
293
294
  pinnedPosition: pinnedPosition,
294
295
  sectionIndex: indexInSection,
295
- sectionLength: sectionLength
296
+ sectionLength: sectionLength,
297
+ gridHasFiller: gridHasFiller
296
298
  }, slotProps?.cell), column.field);
297
299
  };
298
300
 
@@ -23,7 +23,7 @@ var _useGridParamsApi = require("../../hooks/features/rows/useGridParamsApi");
23
23
  var _cellBorderUtils = require("../../utils/cellBorderUtils");
24
24
  var _gridColumnsInterfaces = require("../../hooks/features/columns/gridColumnsInterfaces");
25
25
  var _jsxRuntime = require("react/jsx-runtime");
26
- const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
26
+ const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "gridHasFiller", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
27
27
  _excluded2 = ["changeReason", "unstable_updateValueOnRender"];
28
28
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
29
29
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -101,6 +101,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
101
101
  pinnedPosition,
102
102
  sectionIndex,
103
103
  sectionLength,
104
+ gridHasFiller,
104
105
  onClick,
105
106
  onDoubleClick,
106
107
  onMouseDown,
@@ -171,7 +172,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
171
172
  const isSelectionMode = rootProps.cellSelection ?? false;
172
173
  const position = gridPinnedColumnPositionLookup[pinnedPosition];
173
174
  const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(position, sectionIndex);
174
- const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder);
175
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
175
176
  const ownerState = {
176
177
  align,
177
178
  showLeftBorder,
@@ -337,6 +338,7 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
337
338
  isValidating: _propTypes.default.bool,
338
339
  value: _propTypes.default.any
339
340
  }),
341
+ gridHasFiller: _propTypes.default.bool.isRequired,
340
342
  isNotVisible: _propTypes.default.bool.isRequired,
341
343
  onClick: _propTypes.default.func,
342
344
  onDoubleClick: _propTypes.default.func,
@@ -52,7 +52,8 @@ function GridColumnGroupHeader(props) {
52
52
  pinnedPosition,
53
53
  style,
54
54
  indexInSection,
55
- sectionLength
55
+ sectionLength,
56
+ gridHasFiller
56
57
  } = props;
57
58
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
58
59
  const headerCellRef = React.useRef(null);
@@ -80,7 +81,7 @@ function GridColumnGroupHeader(props) {
80
81
  headerComponent = render(renderParams);
81
82
  }
82
83
  const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
83
- const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
84
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
84
85
  const ownerState = (0, _extends2.default)({}, props, {
85
86
  classes: rootProps.classes,
86
87
  showLeftBorder,
@@ -62,7 +62,8 @@ function GridColumnHeaderItem(props) {
62
62
  style,
63
63
  pinnedPosition,
64
64
  indexInSection,
65
- sectionLength
65
+ sectionLength,
66
+ gridHasFiller
66
67
  } = props;
67
68
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
68
69
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
@@ -77,7 +78,7 @@ function GridColumnHeaderItem(props) {
77
78
  headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
78
79
  }
79
80
  const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
80
- const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
81
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
81
82
  const ownerState = (0, _extends2.default)({}, props, {
82
83
  classes: rootProps.classes,
83
84
  showRightBorder,
@@ -209,6 +210,7 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
209
210
  columnMenuOpen: _propTypes.default.bool.isRequired,
210
211
  disableReorder: _propTypes.default.bool,
211
212
  filterItemsCounter: _propTypes.default.number,
213
+ gridHasFiller: _propTypes.default.bool.isRequired,
212
214
  hasFocus: _propTypes.default.bool,
213
215
  headerHeight: _propTypes.default.number.isRequired,
214
216
  indexInSection: _propTypes.default.number.isRequired,
@@ -57,7 +57,7 @@ function GridColumnHeaderSeparatorRaw(props) {
57
57
  className: classes.root,
58
58
  style: {
59
59
  minHeight: height,
60
- opacity: rootProps.showColumnVerticalBorder ? 0 : 1
60
+ opacity: rootProps.showColumnVerticalBorder ? 1 : 0
61
61
  }
62
62
  }, other, {
63
63
  onClick: stopClick,
@@ -158,8 +158,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
158
158
  }) => {
159
159
  const borderColor = getBorderColor(t);
160
160
  const radius = t.shape.borderRadius;
161
- const containerBackground = t.vars ? t.vars.palette.background.default : t.palette.background.default;
162
- const pinnedBackground = containerBackground;
161
+ const containerBackground = t.vars ? t.vars.palette.background.default : t.mixins.MuiDataGrid?.containerBackground ?? t.palette.background.default;
162
+ const pinnedBackground = t.mixins.MuiDataGrid?.pinnedBackground ?? containerBackground;
163
163
  const overlayBackground = t.vars ? `rgba(${t.vars.palette.background.defaultChannel} / ${t.vars.palette.action.disabledOpacity})` : (0, _styles.alpha)(t.palette.background.default, t.palette.action.disabledOpacity);
164
164
  const hoverOpacity = (t.vars || t).palette.action.hoverOpacity;
165
165
  const hoverColor = (t.vars || t).palette.action.hover;
@@ -457,7 +457,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
457
457
  userSelect: 'none'
458
458
  },
459
459
  [`& .${_gridClasses.gridClasses['row--dynamicHeight']} > .${_gridClasses.gridClasses.cell}`]: {
460
- overflow: 'initial',
461
460
  whiteSpace: 'initial',
462
461
  lineHeight: 'inherit'
463
462
  },
@@ -639,6 +638,9 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
639
638
  },
640
639
  [`& .${_gridClasses.gridClasses.filler}`]: {
641
640
  flex: 1
641
+ },
642
+ [`& .${_gridClasses.gridClasses['filler--borderTop']}`]: {
643
+ borderTop: '1px solid var(--DataGrid-rowBorderColor)'
642
644
  }
643
645
  });
644
646
  return gridStyle;
@@ -21,6 +21,9 @@ function convertFilterItemValueToInputValue(itemValue, inputType) {
21
21
  return '';
22
22
  }
23
23
  const dateCopy = new Date(itemValue);
24
+ if (Number.isNaN(dateCopy.getTime())) {
25
+ return '';
26
+ }
24
27
  // The date picker expects the date to be in the local timezone.
25
28
  // But .toISOString() converts it to UTC with zero offset.
26
29
  // So we need to subtract the timezone offset.
@@ -57,8 +60,9 @@ function GridFilterInputDate(props) {
57
60
  setFilterValueState(value);
58
61
  setIsApplying(true);
59
62
  filterTimeout.start(rootProps.filterDebounceMs, () => {
63
+ const date = new Date(value);
60
64
  applyValue((0, _extends2.default)({}, item, {
61
- value: new Date(value)
65
+ value: Number.isNaN(date.getTime()) ? undefined : date
62
66
  }));
63
67
  setIsApplying(false);
64
68
  });
@@ -9,4 +9,4 @@ var _utils = require("@mui/utils");
9
9
  function getDataGridUtilityClass(slot) {
10
10
  return (0, _utils.unstable_generateUtilityClass)('MuiDataGrid', slot);
11
11
  }
12
- const gridClasses = exports.gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
12
+ const gridClasses = exports.gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderTop', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -20,7 +20,7 @@ const useGridInitialization = (inputApiRef, props) => {
20
20
  (0, _useGridRefs.useGridRefs)(privateApiRef);
21
21
  (0, _useGridTheme.useGridTheme)(privateApiRef);
22
22
  (0, _useGridLoggerFactory.useGridLoggerFactory)(privateApiRef, props);
23
- (0, _useGridStateInitialization.useGridStateInitialization)(privateApiRef, props);
23
+ (0, _useGridStateInitialization.useGridStateInitialization)(privateApiRef);
24
24
  (0, _pipeProcessing.useGridPipeProcessing)(privateApiRef);
25
25
  (0, _strategyProcessing.useGridStrategyProcessing)(privateApiRef);
26
26
  (0, _useGridLocaleText.useGridLocaleText)(privateApiRef, props);
@@ -7,12 +7,11 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useGridStateInitialization = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var _useGridApiEventHandler = require("../utils/useGridApiEventHandler");
11
10
  var _utils = require("../utils");
12
11
  var _utils2 = require("../../utils/utils");
13
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
- const useGridStateInitialization = (apiRef, props) => {
14
+ const useGridStateInitialization = apiRef => {
16
15
  const controlStateMapRef = React.useRef({});
17
16
  const [, rawForceUpdate] = React.useState();
18
17
  const registerControlState = React.useCallback(controlStateItem => {
@@ -71,13 +70,10 @@ const useGridStateInitialization = (apiRef, props) => {
71
70
  const controlState = controlStateMapRef.current[stateId];
72
71
  const model = controlState.stateSelector(newState, apiRef.current.instanceId);
73
72
  if (controlState.propOnChange && hasPropChanged) {
74
- const details = props.signature === _useGridApiEventHandler.GridSignature.DataGridPro ? {
75
- api: apiRef.current,
76
- reason
77
- } : {
78
- reason
79
- };
80
- controlState.propOnChange(model, details);
73
+ controlState.propOnChange(model, {
74
+ reason,
75
+ api: apiRef.current
76
+ });
81
77
  }
82
78
  if (!ignoreSetState) {
83
79
  apiRef.current.publishEvent(controlState.changeEvent, model, {
@@ -86,7 +82,7 @@ const useGridStateInitialization = (apiRef, props) => {
86
82
  }
87
83
  }
88
84
  return !ignoreSetState;
89
- }, [apiRef, props.signature]);
85
+ }, [apiRef]);
90
86
  const updateControlState = React.useCallback((key, state, reason) => {
91
87
  return apiRef.current.setState(previousState => {
92
88
  return (0, _extends2.default)({}, previousState, {