@mui/x-data-grid 7.1.1 → 7.3.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 (145) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/DataGrid/DataGrid.js +19 -0
  3. package/components/GridPagination.d.ts +4 -1
  4. package/components/GridPagination.js +60 -9
  5. package/components/GridRow.js +4 -1
  6. package/components/GridScrollArea.js +1 -1
  7. package/components/cell/GridCell.d.ts +1 -0
  8. package/components/cell/GridCell.js +4 -2
  9. package/components/columnHeaders/GridColumnGroupHeader.d.ts +1 -0
  10. package/components/columnHeaders/GridColumnGroupHeader.js +3 -2
  11. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -0
  12. package/components/columnHeaders/GridColumnHeaderItem.js +9 -4
  13. package/components/containers/GridRootStyles.js +8 -4
  14. package/components/index.d.ts +1 -1
  15. package/components/index.js +1 -1
  16. package/components/panel/GridPanel.js +3 -1
  17. package/components/panel/filterPanel/GridFilterInputDate.js +5 -1
  18. package/constants/gridClasses.d.ts +11 -2
  19. package/constants/gridClasses.js +1 -1
  20. package/hooks/core/useGridInitialization.js +1 -1
  21. package/hooks/core/useGridStateInitialization.d.ts +1 -2
  22. package/hooks/core/useGridStateInitialization.js +6 -10
  23. package/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -5
  24. package/hooks/features/columnResize/useGridColumnResize.js +75 -61
  25. package/hooks/features/columns/gridColumnsUtils.d.ts +2 -1
  26. package/hooks/features/columns/gridColumnsUtils.js +4 -3
  27. package/hooks/features/density/useGridDensity.d.ts +1 -1
  28. package/hooks/features/density/useGridDensity.js +30 -4
  29. package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -1
  30. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  31. package/hooks/features/dimensions/useGridDimensions.js +5 -2
  32. package/hooks/features/editing/useGridCellEditing.js +17 -2
  33. package/hooks/features/editing/useGridRowEditing.js +3 -1
  34. package/hooks/features/export/serializers/csvSerializer.js +6 -5
  35. package/hooks/features/export/useGridPrintExport.d.ts +1 -1
  36. package/hooks/features/export/useGridPrintExport.js +2 -2
  37. package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +2 -2
  38. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +2 -2
  39. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +14 -2
  40. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  41. package/hooks/features/pagination/gridPaginationSelector.js +7 -1
  42. package/hooks/features/pagination/gridPaginationUtils.d.ts +1 -2
  43. package/hooks/features/pagination/gridPaginationUtils.js +5 -3
  44. package/hooks/features/pagination/useGridPagination.d.ts +1 -1
  45. package/hooks/features/pagination/useGridPagination.js +5 -1
  46. package/hooks/features/pagination/useGridPaginationMeta.d.ts +4 -0
  47. package/hooks/features/pagination/useGridPaginationMeta.js +77 -0
  48. package/hooks/features/pagination/useGridPaginationModel.js +2 -1
  49. package/hooks/features/pagination/useGridRowCount.d.ts +0 -4
  50. package/hooks/features/pagination/useGridRowCount.js +32 -18
  51. package/hooks/utils/useGridSelector.d.ts +1 -1
  52. package/index.js +1 -1
  53. package/internals/index.d.ts +1 -1
  54. package/internals/utils/propValidation.js +1 -1
  55. package/locales/daDK.js +3 -4
  56. package/locales/deDE.js +3 -4
  57. package/locales/frFR.js +5 -6
  58. package/locales/svSE.js +3 -4
  59. package/models/api/gridApiCommon.d.ts +1 -1
  60. package/models/api/gridCallbackDetails.d.ts +5 -0
  61. package/models/api/gridLocaleTextApi.d.ts +7 -3
  62. package/models/api/index.d.ts +1 -1
  63. package/models/api/index.js +0 -1
  64. package/models/events/gridEventLookup.d.ts +7 -1
  65. package/models/gridPaginationProps.d.ts +3 -0
  66. package/models/props/DataGridProps.d.ts +26 -8
  67. package/modern/DataGrid/DataGrid.js +19 -0
  68. package/modern/components/GridPagination.js +60 -9
  69. package/modern/components/GridRow.js +4 -1
  70. package/modern/components/GridScrollArea.js +1 -1
  71. package/modern/components/cell/GridCell.js +4 -2
  72. package/modern/components/columnHeaders/GridColumnGroupHeader.js +3 -2
  73. package/modern/components/columnHeaders/GridColumnHeaderItem.js +9 -4
  74. package/modern/components/containers/GridRootStyles.js +8 -4
  75. package/modern/components/index.js +1 -1
  76. package/modern/components/panel/GridPanel.js +3 -1
  77. package/modern/components/panel/filterPanel/GridFilterInputDate.js +5 -1
  78. package/modern/constants/gridClasses.js +1 -1
  79. package/modern/hooks/core/useGridInitialization.js +1 -1
  80. package/modern/hooks/core/useGridStateInitialization.js +6 -10
  81. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -5
  82. package/modern/hooks/features/columnResize/useGridColumnResize.js +75 -61
  83. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -3
  84. package/modern/hooks/features/density/useGridDensity.js +30 -4
  85. package/modern/hooks/features/dimensions/useGridDimensions.js +5 -2
  86. package/modern/hooks/features/editing/useGridCellEditing.js +17 -2
  87. package/modern/hooks/features/editing/useGridRowEditing.js +3 -1
  88. package/modern/hooks/features/export/serializers/csvSerializer.js +6 -5
  89. package/modern/hooks/features/export/useGridPrintExport.js +2 -2
  90. package/modern/hooks/features/pagination/gridPaginationSelector.js +7 -1
  91. package/modern/hooks/features/pagination/gridPaginationUtils.js +5 -3
  92. package/modern/hooks/features/pagination/useGridPagination.js +5 -1
  93. package/modern/hooks/features/pagination/useGridPaginationMeta.js +77 -0
  94. package/modern/hooks/features/pagination/useGridPaginationModel.js +2 -1
  95. package/modern/hooks/features/pagination/useGridRowCount.js +32 -18
  96. package/modern/index.js +1 -1
  97. package/modern/internals/utils/propValidation.js +1 -1
  98. package/modern/locales/daDK.js +3 -4
  99. package/modern/locales/deDE.js +3 -4
  100. package/modern/locales/frFR.js +5 -6
  101. package/modern/locales/svSE.js +3 -4
  102. package/modern/models/api/index.js +0 -1
  103. package/modern/utils/cellBorderUtils.js +15 -2
  104. package/node/DataGrid/DataGrid.js +19 -0
  105. package/node/components/GridPagination.js +59 -8
  106. package/node/components/GridRow.js +4 -1
  107. package/node/components/GridScrollArea.js +1 -1
  108. package/node/components/cell/GridCell.js +4 -2
  109. package/node/components/columnHeaders/GridColumnGroupHeader.js +3 -2
  110. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -3
  111. package/node/components/containers/GridRootStyles.js +8 -4
  112. package/node/components/index.js +27 -10
  113. package/node/components/panel/GridPanel.js +3 -1
  114. package/node/components/panel/filterPanel/GridFilterInputDate.js +5 -1
  115. package/node/constants/gridClasses.js +1 -1
  116. package/node/hooks/core/useGridInitialization.js +1 -1
  117. package/node/hooks/core/useGridStateInitialization.js +6 -10
  118. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +9 -5
  119. package/node/hooks/features/columnResize/useGridColumnResize.js +76 -62
  120. package/node/hooks/features/columns/gridColumnsUtils.js +4 -3
  121. package/node/hooks/features/density/useGridDensity.js +30 -4
  122. package/node/hooks/features/dimensions/useGridDimensions.js +5 -2
  123. package/node/hooks/features/editing/useGridCellEditing.js +17 -2
  124. package/node/hooks/features/editing/useGridRowEditing.js +3 -1
  125. package/node/hooks/features/export/serializers/csvSerializer.js +6 -5
  126. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  127. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  128. package/node/hooks/features/pagination/gridPaginationUtils.js +6 -4
  129. package/node/hooks/features/pagination/useGridPagination.js +5 -1
  130. package/node/hooks/features/pagination/useGridPaginationMeta.js +87 -0
  131. package/node/hooks/features/pagination/useGridPaginationModel.js +2 -1
  132. package/node/hooks/features/pagination/useGridRowCount.js +30 -15
  133. package/node/index.js +1 -1
  134. package/node/internals/utils/propValidation.js +1 -1
  135. package/node/locales/daDK.js +3 -4
  136. package/node/locales/deDE.js +3 -4
  137. package/node/locales/frFR.js +5 -6
  138. package/node/locales/svSE.js +3 -4
  139. package/node/models/api/index.js +0 -11
  140. package/node/utils/cellBorderUtils.js +15 -2
  141. package/package.json +1 -1
  142. package/themeAugmentation/overrides.d.ts +6 -0
  143. package/utils/cellBorderUtils.d.ts +1 -1
  144. package/utils/cellBorderUtils.js +15 -2
  145. package/utils/getGridLocalization.d.ts +1 -1
@@ -3,9 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ GridPagination: true
8
+ };
9
+ Object.defineProperty(exports, "GridPagination", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _GridPagination.GridPagination;
13
+ }
14
+ });
6
15
  var _base = require("./base");
7
16
  Object.keys(_base).forEach(function (key) {
8
17
  if (key === "default" || key === "__esModule") return;
18
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
9
19
  if (key in exports && exports[key] === _base[key]) return;
10
20
  Object.defineProperty(exports, key, {
11
21
  enumerable: true,
@@ -17,6 +27,7 @@ Object.keys(_base).forEach(function (key) {
17
27
  var _cell = require("./cell");
18
28
  Object.keys(_cell).forEach(function (key) {
19
29
  if (key === "default" || key === "__esModule") return;
30
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
20
31
  if (key in exports && exports[key] === _cell[key]) return;
21
32
  Object.defineProperty(exports, key, {
22
33
  enumerable: true,
@@ -28,6 +39,7 @@ Object.keys(_cell).forEach(function (key) {
28
39
  var _containers = require("./containers");
29
40
  Object.keys(_containers).forEach(function (key) {
30
41
  if (key === "default" || key === "__esModule") return;
42
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
43
  if (key in exports && exports[key] === _containers[key]) return;
32
44
  Object.defineProperty(exports, key, {
33
45
  enumerable: true,
@@ -39,6 +51,7 @@ Object.keys(_containers).forEach(function (key) {
39
51
  var _columnHeaders = require("./columnHeaders");
40
52
  Object.keys(_columnHeaders).forEach(function (key) {
41
53
  if (key === "default" || key === "__esModule") return;
54
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
42
55
  if (key in exports && exports[key] === _columnHeaders[key]) return;
43
56
  Object.defineProperty(exports, key, {
44
57
  enumerable: true,
@@ -50,6 +63,7 @@ Object.keys(_columnHeaders).forEach(function (key) {
50
63
  var _columnSelection = require("./columnSelection");
51
64
  Object.keys(_columnSelection).forEach(function (key) {
52
65
  if (key === "default" || key === "__esModule") return;
66
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
53
67
  if (key in exports && exports[key] === _columnSelection[key]) return;
54
68
  Object.defineProperty(exports, key, {
55
69
  enumerable: true,
@@ -61,6 +75,7 @@ Object.keys(_columnSelection).forEach(function (key) {
61
75
  var _icons = require("../material/icons");
62
76
  Object.keys(_icons).forEach(function (key) {
63
77
  if (key === "default" || key === "__esModule") return;
78
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
64
79
  if (key in exports && exports[key] === _icons[key]) return;
65
80
  Object.defineProperty(exports, key, {
66
81
  enumerable: true,
@@ -72,6 +87,7 @@ Object.keys(_icons).forEach(function (key) {
72
87
  var _menu = require("./menu");
73
88
  Object.keys(_menu).forEach(function (key) {
74
89
  if (key === "default" || key === "__esModule") return;
90
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
75
91
  if (key in exports && exports[key] === _menu[key]) return;
76
92
  Object.defineProperty(exports, key, {
77
93
  enumerable: true,
@@ -83,6 +99,7 @@ Object.keys(_menu).forEach(function (key) {
83
99
  var _panel = require("./panel");
84
100
  Object.keys(_panel).forEach(function (key) {
85
101
  if (key === "default" || key === "__esModule") return;
102
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
86
103
  if (key in exports && exports[key] === _panel[key]) return;
87
104
  Object.defineProperty(exports, key, {
88
105
  enumerable: true,
@@ -94,6 +111,7 @@ Object.keys(_panel).forEach(function (key) {
94
111
  var _columnsManagement = require("./columnsManagement");
95
112
  Object.keys(_columnsManagement).forEach(function (key) {
96
113
  if (key === "default" || key === "__esModule") return;
114
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
97
115
  if (key in exports && exports[key] === _columnsManagement[key]) return;
98
116
  Object.defineProperty(exports, key, {
99
117
  enumerable: true,
@@ -105,6 +123,7 @@ Object.keys(_columnsManagement).forEach(function (key) {
105
123
  var _toolbar = require("./toolbar");
106
124
  Object.keys(_toolbar).forEach(function (key) {
107
125
  if (key === "default" || key === "__esModule") return;
126
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
108
127
  if (key in exports && exports[key] === _toolbar[key]) return;
109
128
  Object.defineProperty(exports, key, {
110
129
  enumerable: true,
@@ -116,6 +135,7 @@ Object.keys(_toolbar).forEach(function (key) {
116
135
  var _GridApiContext = require("./GridApiContext");
117
136
  Object.keys(_GridApiContext).forEach(function (key) {
118
137
  if (key === "default" || key === "__esModule") return;
138
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
119
139
  if (key in exports && exports[key] === _GridApiContext[key]) return;
120
140
  Object.defineProperty(exports, key, {
121
141
  enumerable: true,
@@ -127,6 +147,7 @@ Object.keys(_GridApiContext).forEach(function (key) {
127
147
  var _GridFooter = require("./GridFooter");
128
148
  Object.keys(_GridFooter).forEach(function (key) {
129
149
  if (key === "default" || key === "__esModule") return;
150
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
130
151
  if (key in exports && exports[key] === _GridFooter[key]) return;
131
152
  Object.defineProperty(exports, key, {
132
153
  enumerable: true,
@@ -138,6 +159,7 @@ Object.keys(_GridFooter).forEach(function (key) {
138
159
  var _GridHeader = require("./GridHeader");
139
160
  Object.keys(_GridHeader).forEach(function (key) {
140
161
  if (key === "default" || key === "__esModule") return;
162
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
141
163
  if (key in exports && exports[key] === _GridHeader[key]) return;
142
164
  Object.defineProperty(exports, key, {
143
165
  enumerable: true,
@@ -149,6 +171,7 @@ Object.keys(_GridHeader).forEach(function (key) {
149
171
  var _GridLoadingOverlay = require("./GridLoadingOverlay");
150
172
  Object.keys(_GridLoadingOverlay).forEach(function (key) {
151
173
  if (key === "default" || key === "__esModule") return;
174
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
152
175
  if (key in exports && exports[key] === _GridLoadingOverlay[key]) return;
153
176
  Object.defineProperty(exports, key, {
154
177
  enumerable: true,
@@ -160,6 +183,7 @@ Object.keys(_GridLoadingOverlay).forEach(function (key) {
160
183
  var _GridNoRowsOverlay = require("./GridNoRowsOverlay");
161
184
  Object.keys(_GridNoRowsOverlay).forEach(function (key) {
162
185
  if (key === "default" || key === "__esModule") return;
186
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
163
187
  if (key in exports && exports[key] === _GridNoRowsOverlay[key]) return;
164
188
  Object.defineProperty(exports, key, {
165
189
  enumerable: true,
@@ -169,19 +193,10 @@ Object.keys(_GridNoRowsOverlay).forEach(function (key) {
169
193
  });
170
194
  });
171
195
  var _GridPagination = require("./GridPagination");
172
- Object.keys(_GridPagination).forEach(function (key) {
173
- if (key === "default" || key === "__esModule") return;
174
- if (key in exports && exports[key] === _GridPagination[key]) return;
175
- Object.defineProperty(exports, key, {
176
- enumerable: true,
177
- get: function () {
178
- return _GridPagination[key];
179
- }
180
- });
181
- });
182
196
  var _GridRowCount = require("./GridRowCount");
183
197
  Object.keys(_GridRowCount).forEach(function (key) {
184
198
  if (key === "default" || key === "__esModule") return;
199
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
185
200
  if (key in exports && exports[key] === _GridRowCount[key]) return;
186
201
  Object.defineProperty(exports, key, {
187
202
  enumerable: true,
@@ -193,6 +208,7 @@ Object.keys(_GridRowCount).forEach(function (key) {
193
208
  var _GridRow = require("./GridRow");
194
209
  Object.keys(_GridRow).forEach(function (key) {
195
210
  if (key === "default" || key === "__esModule") return;
211
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
196
212
  if (key in exports && exports[key] === _GridRow[key]) return;
197
213
  Object.defineProperty(exports, key, {
198
214
  enumerable: true,
@@ -204,6 +220,7 @@ Object.keys(_GridRow).forEach(function (key) {
204
220
  var _GridSelectedRowCount = require("./GridSelectedRowCount");
205
221
  Object.keys(_GridSelectedRowCount).forEach(function (key) {
206
222
  if (key === "default" || key === "__esModule") return;
223
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
207
224
  if (key in exports && exports[key] === _GridSelectedRowCount[key]) return;
208
225
  Object.defineProperty(exports, key, {
209
226
  enumerable: true,
@@ -42,7 +42,9 @@ const GridPaperRoot = (0, _styles.styled)(_Paper.default, {
42
42
  backgroundColor: (theme.vars || theme).palette.background.paper,
43
43
  minWidth: 300,
44
44
  maxHeight: 450,
45
- display: 'flex'
45
+ display: 'flex',
46
+ maxWidth: `calc(100vw - ${theme.spacing(0.5)})`,
47
+ overflow: 'auto'
46
48
  }));
47
49
  const GridPanel = exports.GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {
48
50
  const {
@@ -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', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', '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, {
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useGridColumnHeaders = exports.GridColumnHeaderRow = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
+ var _clsx = _interopRequireDefault(require("clsx"));
10
11
  var _styles = require("@mui/material/styles");
11
12
  var _utils = require("../../utils");
12
13
  var _useGridRootProps = require("../../utils/useGridRootProps");
@@ -30,8 +31,7 @@ const GridColumnHeaderRow = exports.GridColumnHeaderRow = (0, _styles.styled)('d
30
31
  slot: 'ColumnHeaderRow',
31
32
  overridesResolver: (_, styles) => styles.columnHeaderRow
32
33
  })({
33
- display: 'flex',
34
- height: 'var(--DataGrid-headerHeight)'
34
+ display: 'flex'
35
35
  });
36
36
  const useGridColumnHeaders = props => {
37
37
  const {
@@ -59,6 +59,7 @@ const useGridColumnHeaders = props => {
59
59
  const renderContext = (0, _utils.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
60
60
  const pinnedColumns = (0, _utils.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
61
61
  const offsetLeft = (0, _useGridVirtualScroller.computeOffsetLeft)(columnPositions, renderContext, theme.direction, pinnedColumns.left.length);
62
+ const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
62
63
  React.useEffect(() => {
63
64
  apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
64
65
  }, [apiRef]);
@@ -112,7 +113,7 @@ const useGridColumnHeaders = props => {
112
113
  }
113
114
  }), children, isNotPinned && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
114
115
  role: "presentation",
115
- className: _gridClasses.gridClasses.filler
116
+ className: (0, _clsx.default)(_gridClasses.gridClasses.filler, borderTop && _gridClasses.gridClasses['filler--borderTop'])
116
117
  }), hasScrollbarFiller && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
117
118
  header: true,
118
119
  borderTop: borderTop,
@@ -168,12 +169,14 @@ const useGridColumnHeaders = props => {
168
169
  colDef: colDef,
169
170
  colIndex: columnIndex,
170
171
  isResizing: resizeCol === colDef.field,
172
+ isLast: columnIndex === columnPositions.length - 1,
171
173
  hasFocus: hasFocus,
172
174
  tabIndex: tabIndex,
173
175
  pinnedPosition: pinnedPosition,
174
176
  style: style,
175
177
  indexInSection: i,
176
- sectionLength: renderedColumns.length
178
+ sectionLength: renderedColumns.length,
179
+ gridHasFiller: gridHasFiller
177
180
  }, other), colDef.field));
178
181
  }
179
182
  return getFillers(params, columns, 0);
@@ -283,7 +286,8 @@ const useGridColumnHeaders = props => {
283
286
  pinnedPosition: pinnedPosition,
284
287
  style: style,
285
288
  indexInSection: indexInSection,
286
- sectionLength: renderedColumns.length
289
+ sectionLength: renderedColumns.length,
290
+ gridHasFiller: gridHasFiller
287
291
  }, index);
288
292
  });
289
293
  return getFillers(params, children, leftOverflow);
@@ -8,6 +8,7 @@ exports.useGridColumnResize = exports.columnResizeStateInitializer = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _utils = require("@mui/utils");
11
+ var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
11
12
  var _styles = require("@mui/material/styles");
12
13
  var _domUtils = require("../../../utils/domUtils");
13
14
  var _gridColumnResizeApi = require("./gridColumnResizeApi");
@@ -182,26 +183,34 @@ const columnResizeStateInitializer = state => (0, _extends2.default)({}, state,
182
183
  resizingColumnField: ''
183
184
  }
184
185
  });
186
+ exports.columnResizeStateInitializer = columnResizeStateInitializer;
187
+ function createResizeRefs() {
188
+ return {
189
+ colDef: undefined,
190
+ initialColWidth: 0,
191
+ initialTotalWidth: 0,
192
+ previousMouseClickEvent: undefined,
193
+ columnHeaderElement: undefined,
194
+ headerFilterElement: undefined,
195
+ groupHeaderElements: [],
196
+ cellElements: [],
197
+ leftPinnedCellsAfter: [],
198
+ rightPinnedCellsBefore: [],
199
+ fillerLeft: undefined,
200
+ fillerRight: undefined,
201
+ leftPinnedHeadersAfter: [],
202
+ rightPinnedHeadersBefore: []
203
+ };
204
+ }
205
+
185
206
  /**
186
207
  * @requires useGridColumns (method, event)
187
208
  * TODO: improve experience for last column
188
209
  */
189
- exports.columnResizeStateInitializer = columnResizeStateInitializer;
190
210
  const useGridColumnResize = (apiRef, props) => {
191
211
  const theme = (0, _styles.useTheme)();
192
212
  const logger = (0, _utils2.useGridLogger)(apiRef, 'useGridColumnResize');
193
- const colDefRef = React.useRef();
194
- const previousMouseClickEvent = React.useRef();
195
- const columnHeaderElementRef = React.useRef();
196
- const headerFilterElementRef = React.useRef();
197
- const groupHeaderElementsRef = React.useRef([]);
198
- const cellElementsRef = React.useRef([]);
199
- const leftPinnedCellsAfterRef = React.useRef([]);
200
- const rightPinnedCellsBeforeRef = React.useRef([]);
201
- const fillerLeftRef = React.useRef();
202
- const fillerRightRef = React.useRef();
203
- const leftPinnedHeadersAfterRef = React.useRef([]);
204
- const rightPinnedHeadersBeforeRef = React.useRef([]);
213
+ const refs = (0, _useLazyRef.default)(createResizeRefs).current;
205
214
 
206
215
  // To improve accessibility, the separator has padding on both sides.
207
216
  // Clicking inside the padding area should be treated as a click in the separator.
@@ -211,22 +220,25 @@ const useGridColumnResize = (apiRef, props) => {
211
220
  const stopResizeEventTimeout = (0, _useTimeout.useTimeout)();
212
221
  const touchId = React.useRef();
213
222
  const updateWidth = newWidth => {
214
- logger.debug(`Updating width to ${newWidth} for col ${colDefRef.current.field}`);
215
- const prevWidth = columnHeaderElementRef.current.offsetWidth;
223
+ logger.debug(`Updating width to ${newWidth} for col ${refs.colDef.field}`);
224
+ const prevWidth = refs.columnHeaderElement.offsetWidth;
216
225
  const widthDiff = newWidth - prevWidth;
217
- colDefRef.current.computedWidth = newWidth;
218
- colDefRef.current.width = newWidth;
219
- colDefRef.current.flex = 0;
220
- columnHeaderElementRef.current.style.width = `${newWidth}px`;
221
- columnHeaderElementRef.current.style.minWidth = `${newWidth}px`;
222
- columnHeaderElementRef.current.style.maxWidth = `${newWidth}px`;
223
- const headerFilterElement = headerFilterElementRef.current;
226
+ const columnWidthDiff = newWidth - refs.initialColWidth;
227
+ const newTotalWidth = refs.initialTotalWidth + columnWidthDiff;
228
+ apiRef.current.rootElementRef?.current?.style.setProperty('--DataGrid-rowWidth', `${newTotalWidth}px`);
229
+ refs.colDef.computedWidth = newWidth;
230
+ refs.colDef.width = newWidth;
231
+ refs.colDef.flex = 0;
232
+ refs.columnHeaderElement.style.width = `${newWidth}px`;
233
+ refs.columnHeaderElement.style.minWidth = `${newWidth}px`;
234
+ refs.columnHeaderElement.style.maxWidth = `${newWidth}px`;
235
+ const headerFilterElement = refs.headerFilterElement;
224
236
  if (headerFilterElement) {
225
237
  headerFilterElement.style.width = `${newWidth}px`;
226
238
  headerFilterElement.style.minWidth = `${newWidth}px`;
227
239
  headerFilterElement.style.maxWidth = `${newWidth}px`;
228
240
  }
229
- groupHeaderElementsRef.current.forEach(element => {
241
+ refs.groupHeaderElements.forEach(element => {
230
242
  const div = element;
231
243
  let finalWidth;
232
244
  if (div.getAttribute('aria-colspan') === '1') {
@@ -240,7 +252,7 @@ const useGridColumnResize = (apiRef, props) => {
240
252
  div.style.minWidth = finalWidth;
241
253
  div.style.maxWidth = finalWidth;
242
254
  });
243
- cellElementsRef.current.forEach(element => {
255
+ refs.cellElements.forEach(element => {
244
256
  const div = element;
245
257
  let finalWidth;
246
258
  if (div.getAttribute('aria-colspan') === '1') {
@@ -252,22 +264,22 @@ const useGridColumnResize = (apiRef, props) => {
252
264
  }
253
265
  div.style.setProperty('--width', finalWidth);
254
266
  });
255
- const pinnedPosition = apiRef.current.unstable_applyPipeProcessors('isColumnPinned', false, colDefRef.current.field);
267
+ const pinnedPosition = apiRef.current.unstable_applyPipeProcessors('isColumnPinned', false, refs.colDef.field);
256
268
  if (pinnedPosition === _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT) {
257
- updateProperty(fillerLeftRef.current, 'width', widthDiff);
258
- leftPinnedCellsAfterRef.current.forEach(cell => {
269
+ updateProperty(refs.fillerLeft, 'width', widthDiff);
270
+ refs.leftPinnedCellsAfter.forEach(cell => {
259
271
  updateProperty(cell, 'left', widthDiff);
260
272
  });
261
- leftPinnedHeadersAfterRef.current.forEach(header => {
273
+ refs.leftPinnedHeadersAfter.forEach(header => {
262
274
  updateProperty(header, 'left', widthDiff);
263
275
  });
264
276
  }
265
277
  if (pinnedPosition === _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT) {
266
- updateProperty(fillerRightRef.current, 'width', widthDiff);
267
- rightPinnedCellsBeforeRef.current.forEach(cell => {
278
+ updateProperty(refs.fillerRight, 'width', widthDiff);
279
+ refs.rightPinnedCellsBefore.forEach(cell => {
268
280
  updateProperty(cell, 'right', widthDiff);
269
281
  });
270
- rightPinnedHeadersBeforeRef.current.forEach(header => {
282
+ refs.rightPinnedHeadersBefore.forEach(header => {
271
283
  updateProperty(header, 'right', widthDiff);
272
284
  });
273
285
  }
@@ -277,21 +289,21 @@ const useGridColumnResize = (apiRef, props) => {
277
289
  stopListening();
278
290
 
279
291
  // Prevent double-clicks from being interpreted as two separate clicks
280
- if (previousMouseClickEvent.current) {
281
- const prevEvent = previousMouseClickEvent.current;
292
+ if (refs.previousMouseClickEvent) {
293
+ const prevEvent = refs.previousMouseClickEvent;
282
294
  const prevTimeStamp = prevEvent.timeStamp;
283
295
  const prevClientX = prevEvent.clientX;
284
296
  const prevClientY = prevEvent.clientY;
285
297
 
286
298
  // Check if the current event is part of a double-click
287
299
  if (nativeEvent.timeStamp - prevTimeStamp < 300 && nativeEvent.clientX === prevClientX && nativeEvent.clientY === prevClientY) {
288
- previousMouseClickEvent.current = undefined;
300
+ refs.previousMouseClickEvent = undefined;
289
301
  return;
290
302
  }
291
303
  }
292
- if (colDefRef.current) {
293
- apiRef.current.setColumnWidth(colDefRef.current.field, colDefRef.current.width);
294
- logger.debug(`Updating col ${colDefRef.current.field} with new width: ${colDefRef.current.width}`);
304
+ if (refs.colDef) {
305
+ apiRef.current.setColumnWidth(refs.colDef.field, refs.colDef.width);
306
+ logger.debug(`Updating col ${refs.colDef.field} with new width: ${refs.colDef.width}`);
295
307
  }
296
308
  stopResizeEventTimeout.start(0, () => {
297
309
  apiRef.current.publishEvent('columnResizeStop', null, nativeEvent);
@@ -299,23 +311,25 @@ const useGridColumnResize = (apiRef, props) => {
299
311
  };
300
312
  const storeReferences = (colDef, separator, xStart) => {
301
313
  const root = apiRef.current.rootElementRef.current;
302
- colDefRef.current = colDef;
303
- columnHeaderElementRef.current = (0, _domUtils.findHeaderElementFromField)(apiRef.current.columnHeadersContainerRef.current, colDef.field);
314
+ refs.initialColWidth = colDef.computedWidth;
315
+ refs.initialTotalWidth = apiRef.current.getRootDimensions().rowWidth;
316
+ refs.colDef = colDef;
317
+ refs.columnHeaderElement = (0, _domUtils.findHeaderElementFromField)(apiRef.current.columnHeadersContainerRef.current, colDef.field);
304
318
  const headerFilterElement = root.querySelector(`.${_gridClasses.gridClasses.headerFilterRow} [data-field="${colDef.field}"]`);
305
319
  if (headerFilterElement) {
306
- headerFilterElementRef.current = headerFilterElement;
320
+ refs.headerFilterElement = headerFilterElement;
307
321
  }
308
- groupHeaderElementsRef.current = (0, _domUtils.findGroupHeaderElementsFromField)(apiRef.current.columnHeadersContainerRef?.current, colDef.field);
309
- cellElementsRef.current = (0, _domUtils.findGridCellElementsFromCol)(columnHeaderElementRef.current, apiRef.current);
310
- fillerLeftRef.current = (0, _domUtils.findGridElement)(apiRef.current, 'filler--pinnedLeft');
311
- fillerRightRef.current = (0, _domUtils.findGridElement)(apiRef.current, 'filler--pinnedRight');
312
- const pinnedPosition = apiRef.current.unstable_applyPipeProcessors('isColumnPinned', false, colDefRef.current.field);
313
- leftPinnedCellsAfterRef.current = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT ? [] : (0, _domUtils.findLeftPinnedCellsAfterCol)(apiRef.current, columnHeaderElementRef.current);
314
- rightPinnedCellsBeforeRef.current = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT ? [] : (0, _domUtils.findRightPinnedCellsBeforeCol)(apiRef.current, columnHeaderElementRef.current);
315
- leftPinnedHeadersAfterRef.current = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT ? [] : (0, _domUtils.findLeftPinnedHeadersAfterCol)(apiRef.current, columnHeaderElementRef.current);
316
- rightPinnedHeadersBeforeRef.current = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT ? [] : (0, _domUtils.findRightPinnedHeadersBeforeCol)(apiRef.current, columnHeaderElementRef.current);
322
+ refs.groupHeaderElements = (0, _domUtils.findGroupHeaderElementsFromField)(apiRef.current.columnHeadersContainerRef?.current, colDef.field);
323
+ refs.cellElements = (0, _domUtils.findGridCellElementsFromCol)(refs.columnHeaderElement, apiRef.current);
324
+ refs.fillerLeft = (0, _domUtils.findGridElement)(apiRef.current, 'filler--pinnedLeft');
325
+ refs.fillerRight = (0, _domUtils.findGridElement)(apiRef.current, 'filler--pinnedRight');
326
+ const pinnedPosition = apiRef.current.unstable_applyPipeProcessors('isColumnPinned', false, refs.colDef.field);
327
+ refs.leftPinnedCellsAfter = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT ? [] : (0, _domUtils.findLeftPinnedCellsAfterCol)(apiRef.current, refs.columnHeaderElement);
328
+ refs.rightPinnedCellsBefore = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT ? [] : (0, _domUtils.findRightPinnedCellsBeforeCol)(apiRef.current, refs.columnHeaderElement);
329
+ refs.leftPinnedHeadersAfter = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT ? [] : (0, _domUtils.findLeftPinnedHeadersAfterCol)(apiRef.current, refs.columnHeaderElement);
330
+ refs.rightPinnedHeadersBefore = pinnedPosition !== _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT ? [] : (0, _domUtils.findRightPinnedHeadersBeforeCol)(apiRef.current, refs.columnHeaderElement);
317
331
  resizeDirection.current = getResizeDirection(separator, theme.direction);
318
- initialOffsetToSeparator.current = computeOffsetToSeparator(xStart, columnHeaderElementRef.current.getBoundingClientRect(), resizeDirection.current);
332
+ initialOffsetToSeparator.current = computeOffsetToSeparator(xStart, refs.columnHeaderElement.getBoundingClientRect(), resizeDirection.current);
319
333
  };
320
334
  const handleResizeMouseUp = (0, _utils.unstable_useEventCallback)(finishResize);
321
335
  const handleResizeMouseMove = (0, _utils.unstable_useEventCallback)(nativeEvent => {
@@ -324,12 +338,12 @@ const useGridColumnResize = (apiRef, props) => {
324
338
  handleResizeMouseUp(nativeEvent);
325
339
  return;
326
340
  }
327
- let newWidth = computeNewWidth(initialOffsetToSeparator.current, nativeEvent.clientX, columnHeaderElementRef.current.getBoundingClientRect(), resizeDirection.current);
328
- newWidth = (0, _utils3.clamp)(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
341
+ let newWidth = computeNewWidth(initialOffsetToSeparator.current, nativeEvent.clientX, refs.columnHeaderElement.getBoundingClientRect(), resizeDirection.current);
342
+ newWidth = (0, _utils3.clamp)(newWidth, refs.colDef.minWidth, refs.colDef.maxWidth);
329
343
  updateWidth(newWidth);
330
344
  const params = {
331
- element: columnHeaderElementRef.current,
332
- colDef: colDefRef.current,
345
+ element: refs.columnHeaderElement,
346
+ colDef: refs.colDef,
333
347
  width: newWidth
334
348
  };
335
349
  apiRef.current.publishEvent('columnResize', params, nativeEvent);
@@ -352,12 +366,12 @@ const useGridColumnResize = (apiRef, props) => {
352
366
  handleTouchEnd(nativeEvent);
353
367
  return;
354
368
  }
355
- let newWidth = computeNewWidth(initialOffsetToSeparator.current, finger.x, columnHeaderElementRef.current.getBoundingClientRect(), resizeDirection.current);
356
- newWidth = (0, _utils3.clamp)(newWidth, colDefRef.current.minWidth, colDefRef.current.maxWidth);
369
+ let newWidth = computeNewWidth(initialOffsetToSeparator.current, finger.x, refs.columnHeaderElement.getBoundingClientRect(), resizeDirection.current);
370
+ newWidth = (0, _utils3.clamp)(newWidth, refs.colDef.minWidth, refs.colDef.maxWidth);
357
371
  updateWidth(newWidth);
358
372
  const params = {
359
- element: columnHeaderElementRef.current,
360
- colDef: colDefRef.current,
373
+ element: refs.columnHeaderElement,
374
+ colDef: refs.colDef,
361
375
  width: newWidth
362
376
  };
363
377
  apiRef.current.publishEvent('columnResize', params, nativeEvent);
@@ -401,10 +415,10 @@ const useGridColumnResize = (apiRef, props) => {
401
415
  setTimeout(() => {
402
416
  doc.removeEventListener('click', preventClick, true);
403
417
  }, 100);
404
- if (columnHeaderElementRef.current) {
405
- columnHeaderElementRef.current.style.pointerEvents = 'unset';
418
+ if (refs.columnHeaderElement) {
419
+ refs.columnHeaderElement.style.pointerEvents = 'unset';
406
420
  }
407
- }, [apiRef, columnHeaderElementRef, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]);
421
+ }, [apiRef, refs, handleResizeMouseMove, handleResizeMouseUp, handleTouchMove, handleTouchEnd]);
408
422
  const handleResizeStart = React.useCallback(({
409
423
  field
410
424
  }) => {
@@ -445,7 +459,7 @@ const useGridColumnResize = (apiRef, props) => {
445
459
  storeReferences(colDef, event.currentTarget, event.clientX);
446
460
  const doc = (0, _utils.unstable_ownerDocument)(apiRef.current.rootElementRef.current);
447
461
  doc.body.style.cursor = 'col-resize';
448
- previousMouseClickEvent.current = event.nativeEvent;
462
+ refs.previousMouseClickEvent = event.nativeEvent;
449
463
  doc.addEventListener('mousemove', handleResizeMouseMove);
450
464
  doc.addEventListener('mouseup', handleResizeMouseUp);
451
465
 
@@ -319,10 +319,11 @@ function getFirstNonSpannedColumnToRender({
319
319
  }
320
320
  return firstNonSpannedColumnToRender;
321
321
  }
322
- function getTotalHeaderHeight(apiRef, headerHeight) {
322
+ function getTotalHeaderHeight(apiRef, props) {
323
323
  const densityFactor = (0, _densitySelector.gridDensityFactorSelector)(apiRef);
324
324
  const maxDepth = (0, _gridColumnGroupsSelector.gridColumnGroupsHeaderMaxDepthSelector)(apiRef);
325
325
  const isHeaderFilteringEnabled = (0, _gridHeaderFilteringSelectors.gridHeaderFilteringEnabledSelector)(apiRef);
326
- const multiplicationFactor = isHeaderFilteringEnabled ? 2 : 1;
327
- return Math.floor(headerHeight * densityFactor) * ((maxDepth ?? 0) + multiplicationFactor);
326
+ const columnHeadersHeight = Math.floor(props.columnHeaderHeight * densityFactor);
327
+ const filterHeadersHeight = isHeaderFilteringEnabled ? Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * densityFactor) : 0;
328
+ return columnHeadersHeight * (1 + (maxDepth ?? 0)) + filterHeadersHeight;
328
329
  }