@mui/x-data-grid 7.27.2 → 7.28.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 (168) hide show
  1. package/CHANGELOG.md +128 -0
  2. package/README.md +1 -1
  3. package/components/cell/GridActionsCell.js +3 -1
  4. package/components/cell/GridCell.js +2 -2
  5. package/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -1
  6. package/components/containers/GridRootStyles.js +3 -3
  7. package/components/panel/filterPanel/GridFilterInputValue.d.ts +4 -0
  8. package/components/panel/filterPanel/index.d.ts +1 -1
  9. package/components/panel/filterPanel/index.js +1 -1
  10. package/components/virtualization/GridBottomContainer.js +1 -1
  11. package/components/virtualization/GridTopContainer.js +1 -1
  12. package/components/virtualization/GridVirtualScrollbar.js +9 -3
  13. package/constants/localeTextConstants.js +1 -0
  14. package/hooks/features/editing/useGridRowEditing.js +19 -10
  15. package/hooks/features/export/useGridPrintExport.js +4 -4
  16. package/hooks/features/filter/useGridFilter.js +5 -0
  17. package/hooks/features/rowSelection/useGridRowSelection.js +47 -11
  18. package/hooks/features/rowSelection/utils.d.ts +2 -2
  19. package/hooks/features/rowSelection/utils.js +8 -6
  20. package/hooks/features/rows/useGridRowsMeta.js +8 -0
  21. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -2
  22. package/hooks/features/virtualization/useGridVirtualScroller.js +0 -2
  23. package/index.js +1 -1
  24. package/locales/arSD.js +1 -0
  25. package/locales/beBY.js +1 -0
  26. package/locales/bgBG.js +1 -0
  27. package/locales/bnBD.js +1 -0
  28. package/locales/csCZ.js +6 -6
  29. package/locales/daDK.js +1 -0
  30. package/locales/deDE.js +1 -0
  31. package/locales/elGR.js +1 -0
  32. package/locales/esES.js +1 -0
  33. package/locales/faIR.js +1 -0
  34. package/locales/fiFI.js +1 -0
  35. package/locales/frFR.js +1 -0
  36. package/locales/heIL.js +1 -0
  37. package/locales/hrHR.js +1 -0
  38. package/locales/huHU.js +1 -0
  39. package/locales/isIS.js +1 -0
  40. package/locales/itIT.js +1 -0
  41. package/locales/jaJP.js +1 -0
  42. package/locales/koKR.js +2 -1
  43. package/locales/nbNO.js +1 -0
  44. package/locales/nlNL.js +1 -0
  45. package/locales/nnNO.js +1 -0
  46. package/locales/plPL.js +1 -0
  47. package/locales/ptBR.js +1 -0
  48. package/locales/ptPT.js +1 -0
  49. package/locales/roRO.js +1 -0
  50. package/locales/ruRU.js +1 -0
  51. package/locales/skSK.js +7 -7
  52. package/locales/svSE.js +1 -0
  53. package/locales/trTR.js +1 -0
  54. package/locales/ukUA.js +1 -0
  55. package/locales/urPK.js +1 -0
  56. package/locales/viVN.js +1 -0
  57. package/locales/zhCN.js +1 -0
  58. package/locales/zhHK.js +11 -11
  59. package/locales/zhTW.js +10 -10
  60. package/models/api/gridLocaleTextApi.d.ts +1 -0
  61. package/models/api/gridRowSelectionApi.d.ts +15 -4
  62. package/modern/components/cell/GridActionsCell.js +3 -1
  63. package/modern/components/cell/GridCell.js +2 -2
  64. package/modern/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -1
  65. package/modern/components/containers/GridRootStyles.js +3 -3
  66. package/modern/components/panel/filterPanel/index.js +1 -1
  67. package/modern/components/virtualization/GridBottomContainer.js +1 -1
  68. package/modern/components/virtualization/GridTopContainer.js +1 -1
  69. package/modern/components/virtualization/GridVirtualScrollbar.js +9 -3
  70. package/modern/constants/localeTextConstants.js +1 -0
  71. package/modern/hooks/features/editing/useGridRowEditing.js +19 -10
  72. package/modern/hooks/features/export/useGridPrintExport.js +4 -4
  73. package/modern/hooks/features/filter/useGridFilter.js +5 -0
  74. package/modern/hooks/features/rowSelection/useGridRowSelection.js +47 -11
  75. package/modern/hooks/features/rowSelection/utils.js +8 -6
  76. package/modern/hooks/features/rows/useGridRowsMeta.js +8 -0
  77. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +0 -2
  78. package/modern/index.js +1 -1
  79. package/modern/locales/arSD.js +1 -0
  80. package/modern/locales/beBY.js +1 -0
  81. package/modern/locales/bgBG.js +1 -0
  82. package/modern/locales/bnBD.js +1 -0
  83. package/modern/locales/csCZ.js +6 -6
  84. package/modern/locales/daDK.js +1 -0
  85. package/modern/locales/deDE.js +1 -0
  86. package/modern/locales/elGR.js +1 -0
  87. package/modern/locales/esES.js +1 -0
  88. package/modern/locales/faIR.js +1 -0
  89. package/modern/locales/fiFI.js +1 -0
  90. package/modern/locales/frFR.js +1 -0
  91. package/modern/locales/heIL.js +1 -0
  92. package/modern/locales/hrHR.js +1 -0
  93. package/modern/locales/huHU.js +1 -0
  94. package/modern/locales/isIS.js +1 -0
  95. package/modern/locales/itIT.js +1 -0
  96. package/modern/locales/jaJP.js +1 -0
  97. package/modern/locales/koKR.js +2 -1
  98. package/modern/locales/nbNO.js +1 -0
  99. package/modern/locales/nlNL.js +1 -0
  100. package/modern/locales/nnNO.js +1 -0
  101. package/modern/locales/plPL.js +1 -0
  102. package/modern/locales/ptBR.js +1 -0
  103. package/modern/locales/ptPT.js +1 -0
  104. package/modern/locales/roRO.js +1 -0
  105. package/modern/locales/ruRU.js +1 -0
  106. package/modern/locales/skSK.js +7 -7
  107. package/modern/locales/svSE.js +1 -0
  108. package/modern/locales/trTR.js +1 -0
  109. package/modern/locales/ukUA.js +1 -0
  110. package/modern/locales/urPK.js +1 -0
  111. package/modern/locales/viVN.js +1 -0
  112. package/modern/locales/zhCN.js +1 -0
  113. package/modern/locales/zhHK.js +11 -11
  114. package/modern/locales/zhTW.js +10 -10
  115. package/node/components/cell/GridActionsCell.js +3 -1
  116. package/node/components/cell/GridCell.js +2 -2
  117. package/node/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -1
  118. package/node/components/containers/GridRootStyles.js +3 -3
  119. package/node/components/panel/filterPanel/index.js +7 -11
  120. package/node/components/virtualization/GridBottomContainer.js +1 -1
  121. package/node/components/virtualization/GridTopContainer.js +1 -1
  122. package/node/components/virtualization/GridVirtualScrollbar.js +9 -3
  123. package/node/constants/localeTextConstants.js +1 -0
  124. package/node/hooks/features/editing/useGridRowEditing.js +19 -10
  125. package/node/hooks/features/export/useGridPrintExport.js +4 -4
  126. package/node/hooks/features/filter/useGridFilter.js +5 -0
  127. package/node/hooks/features/rowSelection/useGridRowSelection.js +55 -19
  128. package/node/hooks/features/rowSelection/utils.js +7 -5
  129. package/node/hooks/features/rows/useGridRowsMeta.js +8 -0
  130. package/node/hooks/features/virtualization/useGridVirtualScroller.js +0 -2
  131. package/node/index.js +1 -1
  132. package/node/locales/arSD.js +1 -0
  133. package/node/locales/beBY.js +1 -0
  134. package/node/locales/bgBG.js +1 -0
  135. package/node/locales/bnBD.js +1 -0
  136. package/node/locales/csCZ.js +6 -6
  137. package/node/locales/daDK.js +1 -0
  138. package/node/locales/deDE.js +1 -0
  139. package/node/locales/elGR.js +1 -0
  140. package/node/locales/esES.js +1 -0
  141. package/node/locales/faIR.js +1 -0
  142. package/node/locales/fiFI.js +1 -0
  143. package/node/locales/frFR.js +1 -0
  144. package/node/locales/heIL.js +1 -0
  145. package/node/locales/hrHR.js +1 -0
  146. package/node/locales/huHU.js +1 -0
  147. package/node/locales/isIS.js +1 -0
  148. package/node/locales/itIT.js +1 -0
  149. package/node/locales/jaJP.js +1 -0
  150. package/node/locales/koKR.js +2 -1
  151. package/node/locales/nbNO.js +1 -0
  152. package/node/locales/nlNL.js +1 -0
  153. package/node/locales/nnNO.js +1 -0
  154. package/node/locales/plPL.js +1 -0
  155. package/node/locales/ptBR.js +1 -0
  156. package/node/locales/ptPT.js +1 -0
  157. package/node/locales/roRO.js +1 -0
  158. package/node/locales/ruRU.js +1 -0
  159. package/node/locales/skSK.js +7 -7
  160. package/node/locales/svSE.js +1 -0
  161. package/node/locales/trTR.js +1 -0
  162. package/node/locales/ukUA.js +1 -0
  163. package/node/locales/urPK.js +1 -0
  164. package/node/locales/viVN.js +1 -0
  165. package/node/locales/zhCN.js +1 -0
  166. package/node/locales/zhHK.js +11 -11
  167. package/node/locales/zhTW.js +10 -10
  168. package/package.json +5 -5
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useGridRowSelection = exports.rowSelectionStateInitializer = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _utils = require("@mui/material/utils");
11
12
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
12
13
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
13
14
  var _useGridLogger = require("../../utils/useGridLogger");
@@ -24,7 +25,7 @@ var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
24
25
  var _constants = require("../../../internals/constants");
25
26
  var _gridClasses = require("../../../constants/gridClasses");
26
27
  var _domUtils = require("../../../utils/domUtils");
27
- var _utils = require("./utils");
28
+ var _utils2 = require("./utils");
28
29
  const getSelectionModelPropValue = (selectionModelProp, prevSelectionModel) => {
29
30
  if (selectionModelProp == null) {
30
31
  return selectionModelProp;
@@ -72,7 +73,7 @@ const useGridRowSelection = (apiRef, props) => {
72
73
  disableRowSelectionOnClick,
73
74
  isRowSelectable: propIsRowSelectable
74
75
  } = props;
75
- const canHaveMultipleSelection = (0, _utils.isMultipleRowSelectionEnabled)(props);
76
+ const canHaveMultipleSelection = (0, _utils2.isMultipleRowSelectionEnabled)(props);
76
77
  const tree = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowTreeSelector);
77
78
  const isNestedData = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowMaximumTreeDepthSelector) > 1;
78
79
  const expandMouseRowRangeSelection = React.useCallback(id => {
@@ -144,7 +145,7 @@ const useGridRowSelection = (apiRef, props) => {
144
145
  if (isSelected) {
145
146
  addRow(id);
146
147
  if (applyAutoSelection) {
147
- (0, _utils.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
148
+ (0, _utils2.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
148
149
  }
149
150
  }
150
151
  apiRef.current.setRowSelectionModel(newSelection);
@@ -162,10 +163,10 @@ const useGridRowSelection = (apiRef, props) => {
162
163
  if (isSelected) {
163
164
  addRow(id);
164
165
  if (applyAutoSelection) {
165
- (0, _utils.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
166
+ (0, _utils2.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
166
167
  }
167
168
  } else if (applyAutoSelection) {
168
- (0, _utils.findRowsToDeselect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, removeRow);
169
+ (0, _utils2.findRowsToDeselect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, removeRow);
169
170
  }
170
171
  const isSelectionValid = newSelection.size < 2 || canHaveMultipleSelection;
171
172
  if (isSelectionValid) {
@@ -185,7 +186,7 @@ const useGridRowSelection = (apiRef, props) => {
185
186
  newSelection.add(rowId);
186
187
  };
187
188
  selectableIds.forEach(id => {
188
- (0, _utils.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
189
+ (0, _utils2.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
189
190
  });
190
191
  }
191
192
  } else {
@@ -207,12 +208,12 @@ const useGridRowSelection = (apiRef, props) => {
207
208
  if (isSelected) {
208
209
  newSelection.add(id);
209
210
  if (applyAutoSelection) {
210
- (0, _utils.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
211
+ (0, _utils2.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow);
211
212
  }
212
213
  } else {
213
214
  removeRow(id);
214
215
  if (applyAutoSelection) {
215
- (0, _utils.findRowsToDeselect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, removeRow);
216
+ (0, _utils2.findRowsToDeselect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, removeRow);
216
217
  }
217
218
  }
218
219
  });
@@ -222,6 +223,19 @@ const useGridRowSelection = (apiRef, props) => {
222
223
  apiRef.current.setRowSelectionModel(Array.from(newSelection));
223
224
  }
224
225
  }, [logger, applyAutoSelection, canHaveMultipleSelection, apiRef, tree, props.rowSelectionPropagation?.descendants, props.rowSelectionPropagation?.parents]);
226
+ const getPropagatedRowSelectionModel = React.useCallback(inputSelectionModel => {
227
+ if (!isNestedData || !applyAutoSelection || inputSelectionModel.length === 0) {
228
+ return inputSelectionModel;
229
+ }
230
+ const propagatedSelectionModel = new Set(inputSelectionModel);
231
+ const addRow = rowId => {
232
+ propagatedSelectionModel.add(rowId);
233
+ };
234
+ for (const id of inputSelectionModel) {
235
+ (0, _utils2.findRowsToSelect)(apiRef, tree, id, props.rowSelectionPropagation?.descendants ?? false, props.rowSelectionPropagation?.parents ?? false, addRow, propagatedSelectionModel);
236
+ }
237
+ return Array.from(propagatedSelectionModel);
238
+ }, [apiRef, tree, props.rowSelectionPropagation?.descendants, props.rowSelectionPropagation?.parents, isNestedData, applyAutoSelection]);
225
239
  const selectRowRange = React.useCallback(({
226
240
  startId,
227
241
  endId
@@ -248,7 +262,8 @@ const useGridRowSelection = (apiRef, props) => {
248
262
  };
249
263
  const selectionPrivateApi = {
250
264
  selectRows,
251
- selectRowRange
265
+ selectRowRange,
266
+ getPropagatedRowSelectionModel
252
267
  };
253
268
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPublicApi, 'public');
254
269
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPrivateApi, props.signature === _useGridApiEventHandler.GridSignature.DataGrid ? 'private' : 'public');
@@ -256,7 +271,11 @@ const useGridRowSelection = (apiRef, props) => {
256
271
  /*
257
272
  * EVENTS
258
273
  */
274
+ const isFirstRender = React.useRef(true);
259
275
  const removeOutdatedSelection = React.useCallback((sortModelUpdated = false) => {
276
+ if (isFirstRender.current) {
277
+ return;
278
+ }
260
279
  const currentSelection = (0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state);
261
280
  const rowsLookup = (0, _gridRowsSelector.gridRowsLookupSelector)(apiRef);
262
281
  const filteredRowsLookup = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
@@ -436,8 +455,27 @@ const useGridRowSelection = (apiRef, props) => {
436
455
  selectRows(apiRef.current.getAllRowIds(), true);
437
456
  }
438
457
  }, [apiRef, handleSingleRowSelection, selectRows, canHaveMultipleSelection]);
458
+ const syncControlledState = (0, _utils.useEventCallback)(() => {
459
+ if (!props.rowSelection) {
460
+ apiRef.current.setRowSelectionModel([]);
461
+ return;
462
+ }
463
+ if (propRowSelectionModel === undefined) {
464
+ return;
465
+ }
466
+ if (!applyAutoSelection || !isNestedData || propRowSelectionModel.length === 0) {
467
+ apiRef.current.setRowSelectionModel(propRowSelectionModel);
468
+ return;
469
+ }
470
+ const newSelectionModel = apiRef.current.getPropagatedRowSelectionModel(propRowSelectionModel);
471
+ if (newSelectionModel.length !== propRowSelectionModel.length || !newSelectionModel.every(id => propRowSelectionModel.includes(id))) {
472
+ apiRef.current.setRowSelectionModel(newSelectionModel);
473
+ return;
474
+ }
475
+ apiRef.current.setRowSelectionModel(propRowSelectionModel);
476
+ });
439
477
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'sortedRowsSet', runIfRowSelectionIsEnabled(() => removeOutdatedSelection(true)));
440
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'filteredRowsSet', runIfRowSelectionIsEnabled(removeOutdatedSelection));
478
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'filteredRowsSet', runIfRowSelectionIsEnabled(() => removeOutdatedSelection()));
441
479
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowClick', runIfRowSelectionIsEnabled(handleRowClick));
442
480
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowSelectionCheckboxChange', runIfRowSelectionIsEnabled(handleRowSelectionCheckboxChange));
443
481
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
@@ -448,15 +486,8 @@ const useGridRowSelection = (apiRef, props) => {
448
486
  * EFFECTS
449
487
  */
450
488
  React.useEffect(() => {
451
- if (propRowSelectionModel !== undefined) {
452
- apiRef.current.setRowSelectionModel(propRowSelectionModel);
453
- }
454
- }, [apiRef, propRowSelectionModel, props.rowSelection]);
455
- React.useEffect(() => {
456
- if (!props.rowSelection) {
457
- apiRef.current.setRowSelectionModel([]);
458
- }
459
- }, [apiRef, props.rowSelection]);
489
+ syncControlledState();
490
+ }, [apiRef, propRowSelectionModel, props.rowSelection, syncControlledState]);
460
491
  const isStateControlled = propRowSelectionModel != null;
461
492
  React.useEffect(() => {
462
493
  if (isStateControlled || !props.rowSelection) {
@@ -485,5 +516,10 @@ const useGridRowSelection = (apiRef, props) => {
485
516
  React.useEffect(() => {
486
517
  runIfRowSelectionIsEnabled(removeOutdatedSelection);
487
518
  }, [removeOutdatedSelection, runIfRowSelectionIsEnabled]);
519
+ React.useEffect(() => {
520
+ if (isFirstRender.current) {
521
+ isFirstRender.current = false;
522
+ }
523
+ }, []);
488
524
  };
489
525
  exports.useGridRowSelection = useGridRowSelection;
@@ -102,9 +102,8 @@ const getFilteredRowNodeSiblings = (tree, filteredRows, id) => {
102
102
  const parentNode = tree[parent];
103
103
  return parentNode.children.filter(childId => childId !== id && filteredRows[childId] !== false);
104
104
  };
105
- const findRowsToSelect = (apiRef, tree, selectedRow, autoSelectDescendants, autoSelectParents, addRow) => {
105
+ const findRowsToSelect = (apiRef, tree, selectedRow, autoSelectDescendants, autoSelectParents, addRow, selectedIds = new Set((0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state))) => {
106
106
  const filteredRows = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
107
- const selectedIdsLookup = (0, _gridRowSelectionSelector.selectedIdsLookupSelector)(apiRef);
108
107
  const selectedDescendants = new Set([]);
109
108
  if (!autoSelectDescendants && !autoSelectParents) {
110
109
  return;
@@ -121,11 +120,14 @@ const findRowsToSelect = (apiRef, tree, selectedRow, autoSelectDescendants, auto
121
120
  }
122
121
  if (autoSelectParents) {
123
122
  const checkAllDescendantsSelected = rowId => {
124
- if (selectedIdsLookup[rowId] !== rowId && !selectedDescendants.has(rowId)) {
123
+ if (!selectedIds.has(rowId) && !selectedDescendants.has(rowId)) {
125
124
  return false;
126
125
  }
127
126
  const node = tree[rowId];
128
- if (node?.type !== 'group') {
127
+ if (!node) {
128
+ return false;
129
+ }
130
+ if (node.type !== 'group') {
129
131
  return true;
130
132
  }
131
133
  return node.children.every(checkAllDescendantsSelected);
@@ -134,7 +136,7 @@ const findRowsToSelect = (apiRef, tree, selectedRow, autoSelectDescendants, auto
134
136
  const siblings = getFilteredRowNodeSiblings(tree, filteredRows, rowId);
135
137
  if (siblings.length === 0 || siblings.every(checkAllDescendantsSelected)) {
136
138
  const rowNode = tree[rowId];
137
- const parent = rowNode.parent;
139
+ const parent = rowNode?.parent;
138
140
  if (parent != null && parent !== _gridRowsUtils.GRID_ROOT_GROUP_ID && apiRef.current.isRowSelectable(parent)) {
139
141
  addRow(parent);
140
142
  selectedDescendants.add(parent);
@@ -21,6 +21,7 @@ var _pipeProcessing = require("../../core/pipeProcessing");
21
21
  var _gridRowsSelector = require("./gridRowsSelector");
22
22
  var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
23
23
  var _gridRowsUtils = require("./gridRowsUtils");
24
+ var _gridFocusedVirtualCellSelector = require("../virtualization/gridFocusedVirtualCellSelector");
24
25
  /* eslint-disable no-underscore-dangle */
25
26
 
26
27
  const rowsMetaStateInitializer = (state, props, apiRef) => {
@@ -192,6 +193,13 @@ const useGridRowsMeta = (apiRef, props) => {
192
193
  const entry = entries[i];
193
194
  const height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;
194
195
  const rowId = entry.target.__mui_id;
196
+ const focusedVirtualRowId = (0, _gridFocusedVirtualCellSelector.gridFocusedVirtualCellSelector)(apiRef)?.id;
197
+ if (focusedVirtualRowId === rowId && height === 0) {
198
+ // Focused virtual row has 0 height.
199
+ // We don't want to store it to avoid scroll jumping.
200
+ // https://github.com/mui/mui-x/issues/14726
201
+ return;
202
+ }
195
203
  apiRef.current.unstable_storeRowHeightMeasurement(rowId, height);
196
204
  }
197
205
  if (!isHeightMetaValid.current) {
@@ -535,12 +535,10 @@ const useGridVirtualScroller = () => {
535
535
  }),
536
536
  getScrollbarVerticalProps: () => ({
537
537
  ref: scrollbarVerticalRef,
538
- role: 'presentation',
539
538
  scrollPosition
540
539
  }),
541
540
  getScrollbarHorizontalProps: () => ({
542
541
  ref: scrollbarHorizontalRef,
543
- role: 'presentation',
544
542
  scrollPosition
545
543
  }),
546
544
  getScrollAreaProps: () => ({
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.27.2
2
+ * @mui/x-data-grid v7.28.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -103,6 +103,7 @@ const arSDGrid = {
103
103
  filterValueFalse: 'خاطئ',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'القائمة',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'إظهار الأعمدة',
107
108
  columnMenuManageColumns: 'إدارة الأعمدة',
108
109
  columnMenuFilter: 'المرشِح',
@@ -119,6 +119,7 @@ const beBYGrid = {
119
119
  filterValueFalse: 'няпраўда',
120
120
  // Column menu text
121
121
  columnMenuLabel: 'Меню',
122
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
122
123
  columnMenuShowColumns: 'Паказаць слупкі',
123
124
  columnMenuManageColumns: 'Кіраваць слупкамі',
124
125
  columnMenuFilter: 'Фільтр',
@@ -103,6 +103,7 @@ const bgBGGrid = {
103
103
  filterValueFalse: 'невярно',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Меню',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Покажи колоните',
107
108
  columnMenuManageColumns: 'Управление на колони',
108
109
  columnMenuFilter: 'Филтри',
@@ -102,6 +102,7 @@ const bnBDGrid = {
102
102
  filterValueFalse: 'মিথ্যা',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'মেনু',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'কলাম দেখান',
106
107
  columnMenuManageColumns: 'কলাম পরিচালনা করুন',
107
108
  columnMenuFilter: 'ফিল্টার',
@@ -48,8 +48,7 @@ const csCZGrid = {
48
48
  columnsManagementNoColumns: 'Žádné sloupce',
49
49
  columnsManagementShowHideAllText: 'Zobrazit/skrýt vše',
50
50
  columnsManagementReset: 'Resetovat',
51
- // columnsManagementDeleteIconLabel: 'Clear',
52
-
51
+ columnsManagementDeleteIconLabel: 'Vyčistit',
53
52
  // Filter panel text
54
53
  filterPanelAddFilter: 'Přidat filtr',
55
54
  filterPanelRemoveAll: 'Odstranit vše',
@@ -63,9 +62,9 @@ const csCZGrid = {
63
62
  filterPanelInputPlaceholder: 'Hodnota filtru',
64
63
  // Filter operators text
65
64
  filterOperatorContains: 'obsahuje',
66
- // filterOperatorDoesNotContain: 'does not contain',
65
+ filterOperatorDoesNotContain: 'neobsahuje',
67
66
  filterOperatorEquals: 'rovná se',
68
- // filterOperatorDoesNotEqual: 'does not equal',
67
+ filterOperatorDoesNotEqual: 'nerovná se',
69
68
  filterOperatorStartsWith: 'začíná na',
70
69
  filterOperatorEndsWith: 'končí na',
71
70
  filterOperatorIs: 'je',
@@ -85,9 +84,9 @@ const csCZGrid = {
85
84
  'filterOperator<=': '<=',
86
85
  // Header filter operators text
87
86
  headerFilterOperatorContains: 'Obsahuje',
88
- // headerFilterOperatorDoesNotContain: 'Does not contain',
87
+ headerFilterOperatorDoesNotContain: 'Neobsahuje',
89
88
  headerFilterOperatorEquals: 'Rovná se',
90
- // headerFilterOperatorDoesNotEqual: 'Does not equal',
89
+ headerFilterOperatorDoesNotEqual: 'Nerovná se',
91
90
  headerFilterOperatorStartsWith: 'Začíná na',
92
91
  headerFilterOperatorEndsWith: 'Končí na',
93
92
  headerFilterOperatorIs: 'Je',
@@ -111,6 +110,7 @@ const csCZGrid = {
111
110
  filterValueFalse: 'ne',
112
111
  // Column menu text
113
112
  columnMenuLabel: 'Menu',
113
+ columnMenuAriaLabel: columnName => `Možnosti sloupce ${columnName}`,
114
114
  columnMenuShowColumns: 'Zobrazit sloupce',
115
115
  columnMenuManageColumns: 'Spravovat sloupce',
116
116
  columnMenuFilter: 'Filtr',
@@ -103,6 +103,7 @@ const daDKGrid = {
103
103
  filterValueFalse: 'negativ',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Menu',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Vis kolonner',
107
108
  columnMenuManageColumns: 'Administrer kolonner',
108
109
  columnMenuFilter: 'Filtrer',
@@ -102,6 +102,7 @@ const deDEGrid = {
102
102
  filterValueFalse: 'Nein',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menü',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Zeige alle Spalten',
106
107
  columnMenuManageColumns: 'Spalten verwalten',
107
108
  columnMenuFilter: 'Filter',
@@ -103,6 +103,7 @@ const elGRGrid = {
103
103
  filterValueFalse: 'ψευδές',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Μενού',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Εμφάνιση στηλών',
107
108
  columnMenuManageColumns: 'Διαχείριση στηλών',
108
109
  columnMenuFilter: 'Φίλτρο',
@@ -102,6 +102,7 @@ const esESGrid = {
102
102
  filterValueFalse: 'falso',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menú',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Mostrar columnas',
106
107
  columnMenuManageColumns: 'Administrar columnas',
107
108
  columnMenuFilter: 'Filtro',
@@ -102,6 +102,7 @@ const faIRGrid = {
102
102
  filterValueFalse: 'غلط',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'فهرست',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'نمایش ستون‌ها',
106
107
  columnMenuManageColumns: 'مدیریت ستون‌ها',
107
108
  columnMenuFilter: 'فیلتر',
@@ -103,6 +103,7 @@ const fiFIGrid = {
103
103
  filterValueFalse: 'epätosi',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Valikko',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Näytä sarakkeet',
107
108
  columnMenuManageColumns: 'Hallitse sarakkeita',
108
109
  columnMenuFilter: 'Suodata',
@@ -103,6 +103,7 @@ const frFRGrid = {
103
103
  filterValueFalse: 'faux',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Menu',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Afficher les colonnes',
107
108
  columnMenuManageColumns: 'Gérer les colonnes',
108
109
  columnMenuFilter: 'Filtrer',
@@ -103,6 +103,7 @@ const heILGrid = {
103
103
  filterValueFalse: 'לא',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'תפריט',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'הצג עמודות',
107
108
  columnMenuManageColumns: 'נהל עמודות',
108
109
  columnMenuFilter: 'סנן',
@@ -111,6 +111,7 @@ const hrHRGrid = {
111
111
  filterValueFalse: 'netačno',
112
112
  // Column menu text
113
113
  columnMenuLabel: 'Izbornik',
114
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
114
115
  columnMenuShowColumns: 'Prikaži stupce',
115
116
  columnMenuManageColumns: 'Upravljanje stupcima',
116
117
  columnMenuFilter: 'Filter',
@@ -102,6 +102,7 @@ const huHUGrid = {
102
102
  filterValueFalse: 'hamis',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menü',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Oszlopok megjelenítése',
106
107
  columnMenuManageColumns: 'Oszlopok kezelése',
107
108
  columnMenuFilter: 'Szűrők',
@@ -103,6 +103,7 @@ const isISGrid = {
103
103
  filterValueFalse: 'falskt',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Valmynd',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Sýna dálka',
107
108
  columnMenuManageColumns: 'Stjórna dálkum',
108
109
  columnMenuFilter: 'Síur',
@@ -103,6 +103,7 @@ const itITGrid = {
103
103
  filterValueFalse: 'falso',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Menu',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Mostra le colonne',
107
108
  columnMenuManageColumns: 'Gestisci colonne',
108
109
  columnMenuFilter: 'Filtra',
@@ -103,6 +103,7 @@ const jaJPGrid = {
103
103
  filterValueFalse: '偽',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'メニュー',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: '列表示',
107
108
  columnMenuManageColumns: '列管理',
108
109
  columnMenuFilter: 'フィルター',
@@ -102,6 +102,7 @@ const koKRGrid = {
102
102
  filterValueFalse: '거짓',
103
103
  // Column menu text
104
104
  columnMenuLabel: '메뉴',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: '열 표시',
106
107
  columnMenuManageColumns: '열 관리',
107
108
  columnMenuFilter: '필터',
@@ -149,7 +150,7 @@ const koKRGrid = {
149
150
  // Row reordering text
150
151
  rowReorderingHeaderName: '행 재배치',
151
152
  // Aggregation
152
- aggregationMenuItemHeader: '총계',
153
+ aggregationMenuItemHeader: '집계',
153
154
  aggregationFunctionLabelSum: '합',
154
155
  aggregationFunctionLabelAvg: '평균',
155
156
  aggregationFunctionLabelMin: '최소값',
@@ -103,6 +103,7 @@ const nbNOGrid = {
103
103
  filterValueFalse: 'usant',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Meny',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Vis kolonner',
107
108
  columnMenuManageColumns: 'Administrer kolonner',
108
109
  columnMenuFilter: 'Filter',
@@ -102,6 +102,7 @@ const nlNLGrid = {
102
102
  filterValueFalse: 'onwaar',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menu',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Toon kolommen',
106
107
  columnMenuManageColumns: 'Kolommen beheren',
107
108
  columnMenuFilter: 'Filteren',
@@ -103,6 +103,7 @@ const nnNOGrid = {
103
103
  filterValueFalse: 'usant',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Meny',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Vis kolonner',
107
108
  columnMenuManageColumns: 'Administrer kolonner',
108
109
  columnMenuFilter: 'Filter',
@@ -102,6 +102,7 @@ const plPLGrid = {
102
102
  filterValueFalse: 'fałsz',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menu',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Pokaż wszystkie kolumny',
106
107
  columnMenuManageColumns: 'Zarządzaj kolumnami',
107
108
  columnMenuFilter: 'Filtr',
@@ -102,6 +102,7 @@ const ptBRGrid = {
102
102
  filterValueFalse: 'falso',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menu',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Exibir colunas',
106
107
  columnMenuManageColumns: 'Gerir colunas',
107
108
  columnMenuFilter: 'Filtrar',
@@ -102,6 +102,7 @@ const ptPTGrid = {
102
102
  filterValueFalse: 'falso',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menu',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Mostrar colunas',
106
107
  columnMenuManageColumns: 'Gerir colunas',
107
108
  columnMenuFilter: 'Filtro',
@@ -102,6 +102,7 @@ const roROGrid = {
102
102
  filterValueFalse: 'Nu',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Meniu',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Afișează toate coloanele',
106
107
  columnMenuManageColumns: 'Gestionează coloane',
107
108
  columnMenuFilter: 'Filtru',
@@ -117,6 +117,7 @@ const ruRUGrid = {
117
117
  filterValueFalse: 'ложь',
118
118
  // Column menu text
119
119
  columnMenuLabel: 'Меню',
120
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
120
121
  columnMenuShowColumns: 'Показать столбцы',
121
122
  columnMenuManageColumns: 'Управление колонками',
122
123
  columnMenuFilter: 'Фильтр',
@@ -47,9 +47,8 @@ const skSKGrid = {
47
47
  columnsManagementSearchTitle: 'Vyhľadať',
48
48
  columnsManagementNoColumns: 'Žiadne stĺpce',
49
49
  columnsManagementShowHideAllText: 'Zobraziť/Skryť všetko',
50
- // columnsManagementReset: 'Reset',
51
- // columnsManagementDeleteIconLabel: 'Clear',
52
-
50
+ columnsManagementReset: 'Resetovať',
51
+ columnsManagementDeleteIconLabel: 'Vymazať',
53
52
  // Filter panel text
54
53
  filterPanelAddFilter: 'Pridať filter',
55
54
  filterPanelRemoveAll: 'Odstrániť všetky',
@@ -63,9 +62,9 @@ const skSKGrid = {
63
62
  filterPanelInputPlaceholder: 'Hodnota filtra',
64
63
  // Filter operators text
65
64
  filterOperatorContains: 'obsahuje',
66
- // filterOperatorDoesNotContain: 'does not contain',
65
+ filterOperatorDoesNotContain: 'neobsahuje',
67
66
  filterOperatorEquals: 'rovná sa',
68
- // filterOperatorDoesNotEqual: 'does not equal',
67
+ filterOperatorDoesNotEqual: 'nerovná sa',
69
68
  filterOperatorStartsWith: 'začína s',
70
69
  filterOperatorEndsWith: 'končí na',
71
70
  filterOperatorIs: 'je',
@@ -85,9 +84,9 @@ const skSKGrid = {
85
84
  'filterOperator<=': '<=',
86
85
  // Header filter operators text
87
86
  headerFilterOperatorContains: 'Obsahuje',
88
- // headerFilterOperatorDoesNotContain: 'Does not contain',
87
+ headerFilterOperatorDoesNotContain: 'Neobsahuje',
89
88
  headerFilterOperatorEquals: 'Rovná sa',
90
- // headerFilterOperatorDoesNotEqual: 'Does not equal',
89
+ headerFilterOperatorDoesNotEqual: 'Nerovná sa',
91
90
  headerFilterOperatorStartsWith: 'Začína s',
92
91
  headerFilterOperatorEndsWith: 'Končí na',
93
92
  headerFilterOperatorIs: 'Je',
@@ -111,6 +110,7 @@ const skSKGrid = {
111
110
  filterValueFalse: 'nie',
112
111
  // Column menu text
113
112
  columnMenuLabel: 'Menu',
113
+ columnMenuAriaLabel: columnName => `Ponuka stĺpca ${columnName}`,
114
114
  columnMenuShowColumns: 'Zobraziť stĺpce',
115
115
  columnMenuManageColumns: 'Spravovať stĺpce',
116
116
  columnMenuFilter: 'Filter',
@@ -103,6 +103,7 @@ const svSEGrid = {
103
103
  filterValueFalse: 'falskt',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Meny',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Visa kolumner',
107
108
  columnMenuManageColumns: 'Hantera kolumner',
108
109
  columnMenuFilter: 'Filtrera',
@@ -102,6 +102,7 @@ const trTRGrid = {
102
102
  filterValueFalse: 'yanlış',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'Menü',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'Sütunları göster',
106
107
  columnMenuManageColumns: 'Sütunları yönet',
107
108
  columnMenuFilter: 'Filtre Ekle',
@@ -117,6 +117,7 @@ const ukUAGrid = {
117
117
  filterValueFalse: 'ні',
118
118
  // Column menu text
119
119
  columnMenuLabel: 'Меню',
120
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
120
121
  columnMenuShowColumns: 'Показати стовпці',
121
122
  columnMenuManageColumns: 'Керування стовпцями',
122
123
  columnMenuFilter: 'Фільтр',
@@ -102,6 +102,7 @@ const urPKGrid = {
102
102
  filterValueFalse: 'غلط',
103
103
  // Column menu text
104
104
  columnMenuLabel: 'مینیو',
105
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
105
106
  columnMenuShowColumns: 'کالم دکھائیں',
106
107
  columnMenuManageColumns: 'کالم مینج کریں',
107
108
  columnMenuFilter: 'فلٹر',
@@ -103,6 +103,7 @@ const viVNGrid = {
103
103
  filterValueFalse: 'Không',
104
104
  // Column menu text
105
105
  columnMenuLabel: 'Danh mục',
106
+ // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
106
107
  columnMenuShowColumns: 'Danh sách cột',
107
108
  columnMenuManageColumns: 'Quản lý cột',
108
109
  columnMenuFilter: 'Bộ lọc',