@mui/x-data-grid 7.20.0 → 7.22.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 (186) hide show
  1. package/CHANGELOG.md +200 -31
  2. package/DataGrid/DataGrid.js +1 -0
  3. package/DataGrid/index.d.ts +0 -1
  4. package/DataGrid/index.js +1 -2
  5. package/DataGrid/useDataGridComponent.js +4 -1
  6. package/DataGrid/useDataGridProps.d.ts +1 -5
  7. package/DataGrid/useDataGridProps.js +3 -62
  8. package/components/GridPagination.js +1 -0
  9. package/components/GridRow.js +25 -36
  10. package/components/base/GridOverlays.js +8 -0
  11. package/components/cell/GridBooleanCell.d.ts +3 -3
  12. package/components/cell/GridBooleanCell.js +11 -1
  13. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -2
  14. package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -2
  15. package/components/containers/GridRootStyles.js +5 -2
  16. package/components/menu/columnMenu/GridColumnMenu.js +32 -0
  17. package/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  18. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +2 -2
  19. package/components/panel/filterPanel/GridFilterInputValue.js +2 -2
  20. package/components/toolbar/GridToolbar.js +2 -3
  21. package/components/toolbar/GridToolbarExport.d.ts +9 -3
  22. package/components/toolbar/GridToolbarExport.js +43 -3
  23. package/components/toolbar/GridToolbarFilterButton.js +1 -2
  24. package/components/virtualization/GridBottomContainer.js +0 -17
  25. package/components/virtualization/GridMainContainer.js +2 -1
  26. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  27. package/components/virtualization/GridVirtualScroller.js +4 -2
  28. package/constants/dataGridPropsDefaultValues.d.ts +5 -0
  29. package/constants/dataGridPropsDefaultValues.js +60 -0
  30. package/constants/gridClasses.d.ts +5 -0
  31. package/constants/gridClasses.js +1 -1
  32. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +6 -1
  33. package/hooks/features/clipboard/useGridClipboard.js +2 -1
  34. package/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -1
  35. package/hooks/features/columnMenu/useGridColumnMenuSlots.js +4 -3
  36. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
  37. package/hooks/features/columns/gridColumnsUtils.js +3 -0
  38. package/hooks/features/dimensions/useGridDimensions.js +4 -2
  39. package/hooks/features/focus/useGridFocus.js +18 -3
  40. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  41. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +9 -5
  42. package/hooks/features/listView/gridListViewSelectors.d.ts +5 -0
  43. package/hooks/features/listView/gridListViewSelectors.js +4 -0
  44. package/hooks/features/listView/useGridListView.d.ts +10 -0
  45. package/hooks/features/listView/useGridListView.js +54 -0
  46. package/hooks/features/pagination/gridPaginationSelector.js +2 -1
  47. package/hooks/features/rowSelection/useGridRowSelection.js +11 -2
  48. package/hooks/features/rowSelection/utils.js +1 -1
  49. package/hooks/features/rows/gridRowsMetaInterfaces.d.ts +16 -0
  50. package/hooks/features/rows/gridRowsMetaInterfaces.js +1 -0
  51. package/hooks/features/rows/gridRowsUtils.d.ts +3 -0
  52. package/hooks/features/rows/gridRowsUtils.js +14 -1
  53. package/hooks/features/rows/useGridParamsApi.d.ts +2 -1
  54. package/hooks/features/rows/useGridParamsApi.js +4 -3
  55. package/hooks/features/rows/useGridRowsMeta.js +135 -154
  56. package/hooks/features/scroll/useGridScroll.d.ts +1 -1
  57. package/hooks/features/scroll/useGridScroll.js +3 -2
  58. package/hooks/features/virtualization/useGridVirtualScroller.js +25 -10
  59. package/hooks/utils/useGridApiMethod.js +2 -1
  60. package/index.d.ts +1 -0
  61. package/index.js +2 -1
  62. package/internals/index.d.ts +2 -1
  63. package/internals/index.js +2 -1
  64. package/joy/joySlots.js +45 -27
  65. package/locales/daDK.js +5 -6
  66. package/locales/itIT.js +27 -28
  67. package/locales/ptBR.js +4 -4
  68. package/material/index.js +4 -0
  69. package/models/api/gridRowsMetaApi.d.ts +15 -14
  70. package/models/colDef/gridColDef.d.ts +6 -0
  71. package/models/colDef/index.d.ts +1 -1
  72. package/models/gridApiCaches.d.ts +2 -0
  73. package/models/gridExport.d.ts +1 -1
  74. package/models/gridSlotsComponent.d.ts +10 -0
  75. package/models/gridSlotsComponentsProps.d.ts +9 -0
  76. package/models/gridStateCommunity.d.ts +2 -0
  77. package/models/props/DataGridProps.d.ts +14 -3
  78. package/modern/DataGrid/DataGrid.js +1 -0
  79. package/modern/DataGrid/index.js +1 -2
  80. package/modern/DataGrid/useDataGridComponent.js +4 -1
  81. package/modern/DataGrid/useDataGridProps.js +3 -62
  82. package/modern/components/GridPagination.js +1 -0
  83. package/modern/components/GridRow.js +25 -36
  84. package/modern/components/base/GridOverlays.js +8 -0
  85. package/modern/components/cell/GridBooleanCell.js +11 -1
  86. package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -2
  87. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -2
  88. package/modern/components/containers/GridRootStyles.js +5 -2
  89. package/modern/components/menu/columnMenu/GridColumnMenu.js +32 -0
  90. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  91. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +2 -2
  92. package/modern/components/panel/filterPanel/GridFilterInputValue.js +2 -2
  93. package/modern/components/toolbar/GridToolbar.js +2 -3
  94. package/modern/components/toolbar/GridToolbarExport.js +43 -3
  95. package/modern/components/toolbar/GridToolbarFilterButton.js +1 -2
  96. package/modern/components/virtualization/GridBottomContainer.js +0 -17
  97. package/modern/components/virtualization/GridMainContainer.js +2 -1
  98. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  99. package/modern/components/virtualization/GridVirtualScroller.js +4 -2
  100. package/modern/constants/dataGridPropsDefaultValues.js +60 -0
  101. package/modern/constants/gridClasses.js +1 -1
  102. package/modern/hooks/features/clipboard/useGridClipboard.js +2 -1
  103. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -1
  104. package/modern/hooks/features/columnMenu/useGridColumnMenuSlots.js +4 -3
  105. package/modern/hooks/features/columns/gridColumnsUtils.js +3 -0
  106. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -2
  107. package/modern/hooks/features/focus/useGridFocus.js +18 -3
  108. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +9 -5
  109. package/modern/hooks/features/listView/gridListViewSelectors.js +4 -0
  110. package/modern/hooks/features/listView/useGridListView.js +54 -0
  111. package/modern/hooks/features/pagination/gridPaginationSelector.js +2 -1
  112. package/modern/hooks/features/rowSelection/useGridRowSelection.js +11 -2
  113. package/modern/hooks/features/rowSelection/utils.js +1 -1
  114. package/modern/hooks/features/rows/gridRowsMetaInterfaces.js +1 -0
  115. package/modern/hooks/features/rows/gridRowsUtils.js +14 -1
  116. package/modern/hooks/features/rows/useGridParamsApi.js +4 -3
  117. package/modern/hooks/features/rows/useGridRowsMeta.js +135 -154
  118. package/modern/hooks/features/scroll/useGridScroll.js +3 -2
  119. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +25 -10
  120. package/modern/hooks/utils/useGridApiMethod.js +2 -1
  121. package/modern/index.js +2 -1
  122. package/modern/internals/index.js +2 -1
  123. package/modern/joy/joySlots.js +45 -27
  124. package/modern/locales/daDK.js +5 -6
  125. package/modern/locales/itIT.js +27 -28
  126. package/modern/locales/ptBR.js +4 -4
  127. package/modern/material/index.js +4 -0
  128. package/modern/utils/ResizeObserver.js +10 -0
  129. package/modern/utils/keyboardUtils.js +12 -4
  130. package/node/DataGrid/DataGrid.js +1 -0
  131. package/node/DataGrid/index.js +1 -12
  132. package/node/DataGrid/useDataGridComponent.js +4 -1
  133. package/node/DataGrid/useDataGridProps.js +6 -65
  134. package/node/components/GridPagination.js +1 -0
  135. package/node/components/GridRow.js +25 -36
  136. package/node/components/base/GridOverlays.js +8 -0
  137. package/node/components/cell/GridBooleanCell.js +11 -1
  138. package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +1 -2
  139. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -2
  140. package/node/components/containers/GridRootStyles.js +5 -2
  141. package/node/components/menu/columnMenu/GridColumnMenu.js +32 -0
  142. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  143. package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +2 -2
  144. package/node/components/panel/filterPanel/GridFilterInputValue.js +2 -2
  145. package/node/components/toolbar/GridToolbar.js +2 -3
  146. package/node/components/toolbar/GridToolbarExport.js +40 -0
  147. package/node/components/toolbar/GridToolbarFilterButton.js +1 -2
  148. package/node/components/virtualization/GridBottomContainer.js +0 -17
  149. package/node/components/virtualization/GridMainContainer.js +2 -1
  150. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  151. package/node/components/virtualization/GridVirtualScroller.js +4 -2
  152. package/node/constants/dataGridPropsDefaultValues.js +66 -0
  153. package/node/constants/gridClasses.js +1 -1
  154. package/node/hooks/features/clipboard/useGridClipboard.js +2 -1
  155. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -1
  156. package/node/hooks/features/columnMenu/useGridColumnMenuSlots.js +4 -3
  157. package/node/hooks/features/columns/gridColumnsUtils.js +3 -0
  158. package/node/hooks/features/dimensions/useGridDimensions.js +3 -1
  159. package/node/hooks/features/focus/useGridFocus.js +18 -3
  160. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +9 -5
  161. package/node/hooks/features/listView/gridListViewSelectors.js +11 -0
  162. package/node/hooks/features/listView/useGridListView.js +64 -0
  163. package/node/hooks/features/pagination/gridPaginationSelector.js +3 -1
  164. package/node/hooks/features/rowSelection/useGridRowSelection.js +11 -2
  165. package/node/hooks/features/rowSelection/utils.js +1 -1
  166. package/node/hooks/features/rows/gridRowsMetaInterfaces.js +5 -0
  167. package/node/hooks/features/rows/gridRowsUtils.js +16 -2
  168. package/node/hooks/features/rows/useGridParamsApi.js +4 -3
  169. package/node/hooks/features/rows/useGridRowsMeta.js +136 -154
  170. package/node/hooks/features/scroll/useGridScroll.js +3 -2
  171. package/node/hooks/features/virtualization/useGridVirtualScroller.js +25 -10
  172. package/node/hooks/utils/useGridApiMethod.js +3 -1
  173. package/node/index.js +13 -1
  174. package/node/internals/index.js +22 -0
  175. package/node/joy/joySlots.js +45 -27
  176. package/node/locales/daDK.js +5 -6
  177. package/node/locales/itIT.js +27 -28
  178. package/node/locales/ptBR.js +4 -4
  179. package/node/material/index.js +4 -0
  180. package/node/utils/ResizeObserver.js +16 -0
  181. package/node/utils/keyboardUtils.js +15 -5
  182. package/package.json +2 -2
  183. package/utils/ResizeObserver.d.ts +4 -0
  184. package/utils/ResizeObserver.js +10 -0
  185. package/utils/keyboardUtils.d.ts +1 -0
  186. package/utils/keyboardUtils.js +12 -4
@@ -14,7 +14,6 @@ var _clsx = _interopRequireDefault(require("clsx"));
14
14
  var _utils = require("@mui/utils");
15
15
  var _fastMemo = require("@mui/x-internals/fastMemo");
16
16
  var _gridEditRowModel = require("../models/gridEditRowModel");
17
- var _useGridApiContext = require("../hooks/utils/useGridApiContext");
18
17
  var _gridClasses = require("../constants/gridClasses");
19
18
  var _composeGridClasses = require("../utils/composeGridClasses");
20
19
  var _useGridRootProps = require("../hooks/utils/useGridRootProps");
@@ -32,6 +31,7 @@ var _GridCell = require("./cell/GridCell");
32
31
  var _GridScrollbarFillerCell = require("./GridScrollbarFillerCell");
33
32
  var _getPinnedCellOffset = require("../internals/utils/getPinnedCellOffset");
34
33
  var _useGridConfiguration = require("../hooks/utils/useGridConfiguration");
34
+ var _useGridPrivateApiContext = require("../hooks/utils/useGridPrivateApiContext");
35
35
  var _jsxRuntime = require("react/jsx-runtime");
36
36
  const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "showBottomBorder", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
37
37
  function EmptyCell({
@@ -48,6 +48,13 @@ function EmptyCell({
48
48
  }
49
49
  });
50
50
  }
51
+ process.env.NODE_ENV !== "production" ? EmptyCell.propTypes = {
52
+ // ----------------------------- Warning --------------------------------
53
+ // | These PropTypes are generated from the TypeScript type definitions |
54
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
55
+ // ----------------------------------------------------------------------
56
+ width: _propTypes.default.number.isRequired
57
+ } : void 0;
51
58
  const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
52
59
  const {
53
60
  selected,
@@ -75,7 +82,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
75
82
  onMouseOver
76
83
  } = props,
77
84
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
78
- const apiRef = (0, _useGridApiContext.useGridApiContext)();
85
+ const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
79
86
  const configuration = (0, _useGridConfiguration.useGridConfiguration)();
80
87
  const ref = React.useRef(null);
81
88
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
@@ -99,30 +106,17 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
99
106
  const getRowAriaAttributes = configuration.hooks.useGridRowAriaAttributes();
100
107
  React.useLayoutEffect(() => {
101
108
  if (currentPage.range) {
102
- // The index prop is relative to the rows from all pages. As example, the index prop of the
103
- // first row is 5 if `paginationModel.pageSize=5` and `paginationModel.page=1`. However, the index used by the virtualization
104
- // doesn't care about pagination and considers the rows from the current page only, so the
105
- // first row always has index=0. We need to subtract the index of the first row to make it
106
- // compatible with the index used by the virtualization.
107
109
  const rowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(rowId);
108
- // pinned rows are not part of the visible rows
109
- if (rowIndex != null) {
110
+ // Pinned rows are not part of the visible rows
111
+ if (rowIndex !== undefined) {
110
112
  apiRef.current.unstable_setLastMeasuredRowIndex(rowIndex);
111
113
  }
112
114
  }
113
- const rootElement = ref.current;
114
- const hasFixedHeight = rowHeight !== 'auto';
115
- if (!rootElement || hasFixedHeight || typeof ResizeObserver === 'undefined') {
116
- return undefined;
115
+ if (ref.current && rowHeight === 'auto') {
116
+ return apiRef.current.observeRowHeight(ref.current, rowId);
117
117
  }
118
- const resizeObserver = new ResizeObserver(entries => {
119
- const [entry] = entries;
120
- const height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;
121
- apiRef.current.unstable_storeRowHeightMeasurement(rowId, height);
122
- });
123
- resizeObserver.observe(rootElement);
124
- return () => resizeObserver.disconnect();
125
- }, [apiRef, currentPage.range, index, rowHeight, rowId]);
118
+ return undefined;
119
+ }, [apiRef, currentPage.range, rowHeight, rowId]);
126
120
  const publish = React.useCallback((eventName, propHandler) => event => {
127
121
  // Ignore portal
128
122
  if ((0, _domUtils.isEventTargetInPortal)(event)) {
@@ -179,15 +173,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
179
173
  disableColumnReorder
180
174
  } = rootProps;
181
175
  const rowReordering = rootProps.rowReordering;
182
- const sizes = (0, _useGridSelector.useGridSelector)(apiRef, () => (0, _extends2.default)({}, apiRef.current.unstable_getRowInternalSizes(rowId)), _useGridSelector.objectShallowCompare);
183
- let minHeight = rowHeight;
184
- if (minHeight === 'auto' && sizes) {
185
- const numberOfBaseSizes = 1;
186
- const maximumSize = sizes.baseCenter ?? 0;
187
- if (maximumSize > 0 && numberOfBaseSizes > 1) {
188
- minHeight = maximumSize;
189
- }
190
- }
176
+ const heightEntry = (0, _useGridSelector.useGridSelector)(apiRef, () => (0, _extends2.default)({}, apiRef.current.getRowHeightEntry(rowId)), _useGridSelector.objectShallowCompare);
191
177
  const style = React.useMemo(() => {
192
178
  if (isNotVisible) {
193
179
  return {
@@ -199,25 +185,25 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
199
185
  const rowStyle = (0, _extends2.default)({}, styleProp, {
200
186
  maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,
201
187
  // max-height doesn't support "auto"
202
- minHeight,
188
+ minHeight: rowHeight,
203
189
  '--height': typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight
204
190
  });
205
- if (sizes?.spacingTop) {
191
+ if (heightEntry.spacingTop) {
206
192
  const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';
207
- rowStyle[property] = sizes.spacingTop;
193
+ rowStyle[property] = heightEntry.spacingTop;
208
194
  }
209
- if (sizes?.spacingBottom) {
195
+ if (heightEntry.spacingBottom) {
210
196
  const property = rootProps.rowSpacingType === 'border' ? 'borderBottomWidth' : 'marginBottom';
211
197
  let propertyValue = rowStyle[property];
212
198
  // avoid overriding existing value
213
199
  if (typeof propertyValue !== 'number') {
214
200
  propertyValue = parseInt(propertyValue || '0', 10);
215
201
  }
216
- propertyValue += sizes.spacingBottom;
202
+ propertyValue += heightEntry.spacingBottom;
217
203
  rowStyle[property] = propertyValue;
218
204
  }
219
205
  return rowStyle;
220
- }, [isNotVisible, rowHeight, styleProp, minHeight, sizes, rootProps.rowSpacingType]);
206
+ }, [isNotVisible, rowHeight, styleProp, heightEntry, rootProps.rowSpacingType]);
221
207
  const rowClassNames = apiRef.current.unstable_applyPipeProcessors('rowClassName', [], rowId);
222
208
  const ariaAttributes = rowNode ? getRowAriaAttributes(rowNode, index) : undefined;
223
209
  if (typeof rootProps.getRowClassName === 'function') {
@@ -295,6 +281,9 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
295
281
  for (let i = renderContext.firstColumnIndex; i < renderContext.lastColumnIndex; i += 1) {
296
282
  const column = visibleColumns[i];
297
283
  const indexInSection = i - pinnedColumns.left.length;
284
+ if (!column) {
285
+ continue;
286
+ }
298
287
  cells.push(getCell(column, indexInSection, i, middleColumnsLength));
299
288
  }
300
289
  if (hasVirtualFocusCellRight) {
@@ -82,6 +82,14 @@ function GridOverlayWrapper(props) {
82
82
  }, props))
83
83
  }));
84
84
  }
85
+ process.env.NODE_ENV !== "production" ? GridOverlayWrapper.propTypes = {
86
+ // ----------------------------- Warning --------------------------------
87
+ // | These PropTypes are generated from the TypeScript type definitions |
88
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
89
+ // ----------------------------------------------------------------------
90
+ loadingOverlayVariant: _propTypes.default.oneOf(['circular-progress', 'linear-progress', 'skeleton']),
91
+ overlayType: _propTypes.default.oneOf(['loadingOverlay', 'noResultsOverlay', 'noRowsOverlay'])
92
+ } : void 0;
85
93
  process.env.NODE_ENV !== "production" ? GridOverlays.propTypes = {
86
94
  // ----------------------------- Warning --------------------------------
87
95
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -11,6 +11,8 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
+ var _useGridSelector = require("../../hooks/utils/useGridSelector");
15
+ var _gridRowsSelector = require("../../hooks/features/rows/gridRowsSelector");
14
16
  var _gridClasses = require("../../constants/gridClasses");
15
17
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
16
18
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
@@ -28,7 +30,8 @@ const useUtilityClasses = ownerState => {
28
30
  };
29
31
  function GridBooleanCellRaw(props) {
30
32
  const {
31
- value
33
+ value,
34
+ rowNode
32
35
  } = props,
33
36
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
34
37
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
@@ -37,7 +40,14 @@ function GridBooleanCellRaw(props) {
37
40
  classes: rootProps.classes
38
41
  };
39
42
  const classes = useUtilityClasses(ownerState);
43
+ const maxDepth = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowMaximumTreeDepthSelector);
44
+ const isServerSideRowGroupingRow =
45
+ // @ts-expect-error - Access tree data prop
46
+ maxDepth > 0 && rowNode.type === 'group' && rootProps.treeData === false;
40
47
  const Icon = React.useMemo(() => value ? rootProps.slots.booleanCellTrueIcon : rootProps.slots.booleanCellFalseIcon, [rootProps.slots.booleanCellFalseIcon, rootProps.slots.booleanCellTrueIcon, value]);
48
+ if (isServerSideRowGroupingRow && value === undefined) {
49
+ return null;
50
+ }
41
51
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, (0, _extends2.default)({
42
52
  fontSize: "small",
43
53
  className: classes.root,
@@ -10,7 +10,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _utils = require("@mui/utils");
13
- var _Badge = _interopRequireDefault(require("@mui/material/Badge"));
14
13
  var _hooks = require("../../hooks");
15
14
  var _gridPreferencePanelSelector = require("../../hooks/features/preferencesPanel/gridPreferencePanelSelector");
16
15
  var _gridPreferencePanelsValue = require("../../hooks/features/preferencesPanel/gridPreferencePanelsValue");
@@ -84,7 +83,7 @@ function GridColumnHeaderFilterIconButton(props) {
84
83
  enterDelay: 1000
85
84
  }, rootProps.slotProps?.baseTooltip, {
86
85
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridIconButtonContainer.GridIconButtonContainer, {
87
- children: [counter > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Badge.default, {
86
+ children: [counter > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseBadge, {
88
87
  badgeContent: counter,
89
88
  color: "default",
90
89
  children: iconButton
@@ -11,7 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
- var _Badge = _interopRequireDefault(require("@mui/material/Badge"));
15
14
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
16
15
  var _gridClasses = require("../../constants/gridClasses");
17
16
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
@@ -71,7 +70,7 @@ function GridColumnHeaderSortIconRaw(props) {
71
70
  children: iconElement
72
71
  }));
73
72
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridIconButtonContainer.GridIconButtonContainer, {
74
- children: [index != null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Badge.default, {
73
+ children: [index != null && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseBadge, {
75
74
  badgeContent: index,
76
75
  color: "default",
77
76
  overlap: "circular",
@@ -159,6 +159,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
159
159
  [`& .${_gridClasses.gridClasses.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle
160
160
  }, {
161
161
  [`& .${_gridClasses.gridClasses.treeDataGroupingCellLoadingContainer}`]: styles.treeDataGroupingCellLoadingContainer
162
+ }, {
163
+ [`& .${_gridClasses.gridClasses.groupingCriteriaCellLoadingContainer}`]: styles.groupingCriteriaCellLoadingContainer
162
164
  }, {
163
165
  [`& .${_gridClasses.gridClasses.detailPanelToggleCell}`]: styles.detailPanelToggleCell
164
166
  }, {
@@ -520,6 +522,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
520
522
  },
521
523
  /* Cell styles */
522
524
  [`& .${_gridClasses.gridClasses.cell}`]: {
525
+ flex: '0 0 auto',
523
526
  height: 'var(--height)',
524
527
  width: 'var(--width)',
525
528
  lineHeight: 'calc(var(--height) - 1px)',
@@ -691,7 +694,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
691
694
  alignSelf: 'stretch',
692
695
  marginRight: t.spacing(2)
693
696
  },
694
- [`& .${_gridClasses.gridClasses.treeDataGroupingCellLoadingContainer}`]: {
697
+ [`& .${_gridClasses.gridClasses.treeDataGroupingCellLoadingContainer}, .${_gridClasses.gridClasses.groupingCriteriaCellLoadingContainer}`]: {
695
698
  display: 'flex',
696
699
  alignItems: 'center',
697
700
  justifyContent: 'center',
@@ -724,7 +727,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
724
727
  }
725
728
  },
726
729
  [`& .${_gridClasses.gridClasses.filler}`]: {
727
- flex: 1
730
+ flex: '1 0 auto'
728
731
  },
729
732
  [`& .${_gridClasses.gridClasses['filler--borderBottom']}`]: {
730
733
  borderBottom: '1px solid var(--DataGrid-rowBorderColor)'
@@ -53,6 +53,38 @@ const GridGenericColumnMenu = exports.GridGenericColumnMenu = /*#__PURE__*/React
53
53
  children: orderedSlots.map(([Component, otherProps], index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, (0, _extends2.default)({}, otherProps), index))
54
54
  }));
55
55
  });
56
+ process.env.NODE_ENV !== "production" ? GridGenericColumnMenu.propTypes = {
57
+ // ----------------------------- Warning --------------------------------
58
+ // | These PropTypes are generated from the TypeScript type definitions |
59
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
60
+ // ----------------------------------------------------------------------
61
+ colDef: _propTypes.default.object.isRequired,
62
+ /**
63
+ * Initial `slotProps` - it is internal, to be overrriden by Pro or Premium packages
64
+ * @ignore - do not document.
65
+ */
66
+ defaultSlotProps: _propTypes.default.object.isRequired,
67
+ /**
68
+ * Initial `slots` - it is internal, to be overrriden by Pro or Premium packages
69
+ * @ignore - do not document.
70
+ */
71
+ defaultSlots: _propTypes.default.object.isRequired,
72
+ hideMenu: _propTypes.default.func.isRequired,
73
+ id: _propTypes.default.string,
74
+ labelledby: _propTypes.default.string,
75
+ open: _propTypes.default.bool.isRequired,
76
+ /**
77
+ * Could be used to pass new props or override props specific to a column menu component
78
+ * e.g. `displayOrder`
79
+ */
80
+ slotProps: _propTypes.default.object,
81
+ /**
82
+ * `slots` could be used to add new and (or) override default column menu items
83
+ * If you register a nee component you must pass it's `displayOrder` in `slotProps`
84
+ * or it will be placed in the end of the list
85
+ */
86
+ slots: _propTypes.default.object
87
+ } : void 0;
56
88
  const GridColumnMenu = exports.GridColumnMenu = /*#__PURE__*/React.forwardRef(function GridColumnMenu(props, ref) {
57
89
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridGenericColumnMenu, (0, _extends2.default)({}, props, {
58
90
  ref: ref,
@@ -46,7 +46,7 @@ function GridFilterInputBoolean(props) {
46
46
  const value = event.target.value;
47
47
  setFilterValueState(value);
48
48
  applyValue((0, _extends2.default)({}, item, {
49
- value
49
+ value: Boolean(value)
50
50
  }));
51
51
  }, [applyValue, item]);
52
52
  React.useEffect(() => {
@@ -47,9 +47,9 @@ function GridFilterInputMultipleValue(props) {
47
47
  const handleChange = React.useCallback((event, value) => {
48
48
  setFilterValueState(value.map(String));
49
49
  applyValue((0, _extends2.default)({}, item, {
50
- value: [...value]
50
+ value: [...value.map(filterItemValue => type === 'number' ? Number(filterItemValue) : filterItemValue)]
51
51
  }));
52
- }, [applyValue, item]);
52
+ }, [applyValue, item, type]);
53
53
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Autocomplete.default, (0, _extends2.default)({
54
54
  multiple: true,
55
55
  freeSolo: true,
@@ -42,13 +42,13 @@ function GridFilterInputValue(props) {
42
42
  setIsApplying(true);
43
43
  filterTimeout.start(rootProps.filterDebounceMs, () => {
44
44
  const newItem = (0, _extends2.default)({}, item, {
45
- value,
45
+ value: type === 'number' ? Number(value) : value,
46
46
  fromInput: id
47
47
  });
48
48
  applyValue(newItem);
49
49
  setIsApplying(false);
50
50
  });
51
- }, [id, applyValue, item, rootProps.filterDebounceMs, filterTimeout]);
51
+ }, [filterTimeout, rootProps.filterDebounceMs, item, type, id, applyValue]);
52
52
  React.useEffect(() => {
53
53
  const itemPlusTag = item;
54
54
  if (itemPlusTag.fromInput !== id || item.value === undefined) {
@@ -10,7 +10,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
- var _Box = _interopRequireDefault(require("@mui/material/Box"));
14
13
  var _GridToolbarContainer = require("../containers/GridToolbarContainer");
15
14
  var _GridToolbarColumnsButton = require("./GridToolbarColumnsButton");
16
15
  var _GridToolbarDensitySelector = require("./GridToolbarDensitySelector");
@@ -44,8 +43,8 @@ const GridToolbar = exports.GridToolbar = /*#__PURE__*/React.forwardRef(function
44
43
  // TODO: remove the reference to excelOptions in community package
45
44
  ,
46
45
  excelOptions: excelOptions
47
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
48
- sx: {
46
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
47
+ style: {
49
48
  flex: 1
50
49
  }
51
50
  }), showQuickFilter && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridToolbarQuickFilter.GridToolbarQuickFilter, (0, _extends2.default)({}, quickFilterProps))]
@@ -35,6 +35,26 @@ function GridCsvExportMenuItem(props) {
35
35
  children: apiRef.current.getLocaleText('toolbarExportCSV')
36
36
  }));
37
37
  }
38
+ process.env.NODE_ENV !== "production" ? GridCsvExportMenuItem.propTypes = {
39
+ // ----------------------------- Warning --------------------------------
40
+ // | These PropTypes are generated from the TypeScript type definitions |
41
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
42
+ // ----------------------------------------------------------------------
43
+ hideMenu: _propTypes.default.func,
44
+ options: _propTypes.default.shape({
45
+ allColumns: _propTypes.default.bool,
46
+ delimiter: _propTypes.default.string,
47
+ disableToolbarButton: _propTypes.default.bool,
48
+ escapeFormulas: _propTypes.default.bool,
49
+ fields: _propTypes.default.arrayOf(_propTypes.default.string),
50
+ fileName: _propTypes.default.string,
51
+ getRowsToExport: _propTypes.default.func,
52
+ includeColumnGroupsHeaders: _propTypes.default.bool,
53
+ includeHeaders: _propTypes.default.bool,
54
+ shouldAppendQuotes: _propTypes.default.bool,
55
+ utf8WithBom: _propTypes.default.bool
56
+ })
57
+ } : void 0;
38
58
  function GridPrintExportMenuItem(props) {
39
59
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
40
60
  const {
@@ -51,6 +71,26 @@ function GridPrintExportMenuItem(props) {
51
71
  children: apiRef.current.getLocaleText('toolbarExportPrint')
52
72
  }));
53
73
  }
74
+ process.env.NODE_ENV !== "production" ? GridPrintExportMenuItem.propTypes = {
75
+ // ----------------------------- Warning --------------------------------
76
+ // | These PropTypes are generated from the TypeScript type definitions |
77
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
78
+ // ----------------------------------------------------------------------
79
+ hideMenu: _propTypes.default.func,
80
+ options: _propTypes.default.shape({
81
+ allColumns: _propTypes.default.bool,
82
+ bodyClassName: _propTypes.default.string,
83
+ copyStyles: _propTypes.default.bool,
84
+ disableToolbarButton: _propTypes.default.bool,
85
+ fields: _propTypes.default.arrayOf(_propTypes.default.string),
86
+ fileName: _propTypes.default.string,
87
+ getRowsToExport: _propTypes.default.func,
88
+ hideFooter: _propTypes.default.bool,
89
+ hideToolbar: _propTypes.default.bool,
90
+ includeCheckboxes: _propTypes.default.bool,
91
+ pageStyle: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string])
92
+ })
93
+ } : void 0;
54
94
  const GridToolbarExport = exports.GridToolbarExport = /*#__PURE__*/React.forwardRef(function GridToolbarExport(props, ref) {
55
95
  const {
56
96
  csvOptions = {},
@@ -11,7 +11,6 @@ var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _styles = require("@mui/material/styles");
13
13
  var _utils = require("@mui/utils");
14
- var _Badge = _interopRequireDefault(require("@mui/material/Badge"));
15
14
  var _gridColumnsSelector = require("../../hooks/features/columns/gridColumnsSelector");
16
15
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
17
16
  var _gridFilterSelector = require("../../hooks/features/filter/gridFilterSelector");
@@ -112,7 +111,7 @@ const GridToolbarFilterButton = exports.GridToolbarFilterButton = /*#__PURE__*/R
112
111
  "aria-controls": isOpen ? filterPanelId : undefined,
113
112
  "aria-expanded": isOpen,
114
113
  "aria-haspopup": true,
115
- startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Badge.default, {
114
+ startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseBadge, {
116
115
  badgeContent: activeFilters.length,
117
116
  color: "primary",
118
117
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.openFilterButtonIcon, {})
@@ -12,9 +12,6 @@ var _clsx = _interopRequireDefault(require("clsx"));
12
12
  var _system = require("@mui/system");
13
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
14
  var _gridClasses = require("../../constants/gridClasses");
15
- var _gridDimensionsSelectors = require("../../hooks/features/dimensions/gridDimensionsSelectors");
16
- var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
17
- var _useGridSelector = require("../../hooks/utils/useGridSelector");
18
15
  var _jsxRuntime = require("react/jsx-runtime");
19
16
  const useUtilityClasses = () => {
20
17
  const slots = {
@@ -29,22 +26,8 @@ const Element = (0, _system.styled)('div')({
29
26
  });
30
27
  function GridBottomContainer(props) {
31
28
  const classes = useUtilityClasses();
32
- const apiRef = (0, _useGridApiContext.useGridApiContext)();
33
- const {
34
- viewportOuterSize,
35
- minimumSize,
36
- hasScrollX,
37
- scrollbarSize
38
- } = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridDimensionsSelector);
39
- const scrollHeight = hasScrollX ? scrollbarSize : 0;
40
- const offset = Math.max(viewportOuterSize.height - minimumSize.height -
41
- // Subtract scroll height twice to account for GridVirtualScrollerFiller and horizontal scrollbar
42
- 2 * scrollHeight, 0);
43
29
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Element, (0, _extends2.default)({}, props, {
44
30
  className: (0, _clsx.default)(classes.root, _gridClasses.gridClasses['container--bottom']),
45
- style: {
46
- transform: `translateY(${offset}px)`
47
- },
48
31
  role: "presentation"
49
32
  }));
50
33
  }
@@ -15,7 +15,8 @@ var _jsxRuntime = require("react/jsx-runtime");
15
15
  const GridPanelAnchor = (0, _system.styled)('div')({
16
16
  position: 'absolute',
17
17
  top: `var(--DataGrid-headersTotalHeight)`,
18
- left: 0
18
+ left: 0,
19
+ width: 'calc(100% - (var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize)))'
19
20
  });
20
21
  const Element = (0, _system.styled)('div', {
21
22
  name: 'MuiDataGrid',
@@ -126,6 +126,10 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = /*#__PURE__*/React.f
126
126
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
127
127
  ref: (0, _utils.unstable_useForkRef)(ref, scrollbarRef),
128
128
  className: classes.root,
129
+ style: props.position === 'vertical' && rootProps.unstable_listView ? {
130
+ height: '100%',
131
+ top: 0
132
+ } : undefined,
129
133
  tabIndex: -1,
130
134
  "aria-hidden": "true",
131
135
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
@@ -48,6 +48,8 @@ const Scroller = (0, _system.styled)('div', {
48
48
  flexGrow: 1,
49
49
  overflow: 'scroll',
50
50
  scrollbarWidth: 'none' /* Firefox */,
51
+ display: 'flex',
52
+ flexDirection: 'column',
51
53
  '&::-webkit-scrollbar': {
52
54
  display: 'none' /* Safari and Chrome */
53
55
  },
@@ -86,7 +88,7 @@ function GridVirtualScroller(props) {
86
88
  }, getScrollerProps(), {
87
89
  ownerState: rootProps,
88
90
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridTopContainer.GridTopContainer, {
89
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeaders.GridHeaders, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.pinnedRows, {
91
+ children: [!rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeaders.GridHeaders, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.pinnedRows, {
90
92
  position: "top",
91
93
  virtualScroller: virtualScroller
92
94
  })]
@@ -106,7 +108,7 @@ function GridVirtualScroller(props) {
106
108
  })]
107
109
  })), dimensions.hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
108
110
  position: "vertical"
109
- }, getScrollbarVerticalProps())), dimensions.hasScrollX && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
111
+ }, getScrollbarVerticalProps())), dimensions.hasScrollX && !rootProps.unstable_listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
110
112
  position: "horizontal"
111
113
  }, getScrollbarHorizontalProps())), props.children]
112
114
  }));
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DATA_GRID_PROPS_DEFAULT_VALUES = void 0;
7
+ var _gridEditRowModel = require("../models/gridEditRowModel");
8
+ /**
9
+ * The default values of `DataGridPropsWithDefaultValues` to inject in the props of DataGrid.
10
+ */
11
+ const DATA_GRID_PROPS_DEFAULT_VALUES = exports.DATA_GRID_PROPS_DEFAULT_VALUES = {
12
+ autoHeight: false,
13
+ autoPageSize: false,
14
+ autosizeOnMount: false,
15
+ checkboxSelection: false,
16
+ checkboxSelectionVisibleOnly: false,
17
+ clipboardCopyCellDelimiter: '\t',
18
+ columnBufferPx: 150,
19
+ columnHeaderHeight: 56,
20
+ disableAutosize: false,
21
+ disableColumnFilter: false,
22
+ disableColumnMenu: false,
23
+ disableColumnReorder: false,
24
+ disableColumnResize: false,
25
+ disableColumnSelector: false,
26
+ disableColumnSorting: false,
27
+ disableDensitySelector: false,
28
+ disableEval: false,
29
+ disableMultipleColumnsFiltering: false,
30
+ disableMultipleColumnsSorting: false,
31
+ disableMultipleRowSelection: false,
32
+ disableRowSelectionOnClick: false,
33
+ disableVirtualization: false,
34
+ editMode: _gridEditRowModel.GridEditModes.Cell,
35
+ filterDebounceMs: 150,
36
+ filterMode: 'client',
37
+ hideFooter: false,
38
+ hideFooterPagination: false,
39
+ hideFooterRowCount: false,
40
+ hideFooterSelectedRowCount: false,
41
+ ignoreDiacritics: false,
42
+ ignoreValueFormatterDuringExport: false,
43
+ // TODO v8: Update to 'select'
44
+ indeterminateCheckboxAction: 'deselect',
45
+ keepColumnPositionIfDraggedOutside: false,
46
+ keepNonExistentRowsSelected: false,
47
+ loading: false,
48
+ logger: console,
49
+ logLevel: process.env.NODE_ENV === 'production' ? 'error' : 'warn',
50
+ pageSizeOptions: [25, 50, 100],
51
+ pagination: false,
52
+ paginationMode: 'client',
53
+ resizeThrottleMs: 60,
54
+ rowBufferPx: 150,
55
+ rowHeight: 52,
56
+ rowPositionsDebounceMs: 166,
57
+ rows: [],
58
+ rowSelection: true,
59
+ rowSpacingType: 'margin',
60
+ showCellVerticalBorder: false,
61
+ showColumnVerticalBorder: false,
62
+ sortingMode: 'client',
63
+ sortingOrder: ['asc', 'desc', null],
64
+ throttleRowsMs: 0,
65
+ unstable_rowSpanning: false
66
+ };
@@ -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', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', '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--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', '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', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', '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--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -9,6 +9,7 @@ var React = _interopRequireWildcard(require("react"));
9
9
  var _utils = require("../../utils");
10
10
  var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
11
11
  var _csvSerializer = require("../export/serializers/csvSerializer");
12
+ var _keyboardUtils = require("../../../utils/keyboardUtils");
12
13
  function writeToClipboardPolyfill(data) {
13
14
  const span = document.createElement('span');
14
15
  span.style.whiteSpace = 'pre';
@@ -60,7 +61,7 @@ const useGridClipboard = (apiRef, props) => {
60
61
  const ignoreValueFormatter = (typeof ignoreValueFormatterProp === 'object' ? ignoreValueFormatterProp?.clipboardExport : ignoreValueFormatterProp) || false;
61
62
  const clipboardCopyCellDelimiter = props.clipboardCopyCellDelimiter;
62
63
  const handleCopy = React.useCallback(event => {
63
- if (!((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'c' && !event.shiftKey && !event.altKey)) {
64
+ if (!(0, _keyboardUtils.isCopyShortcut)(event)) {
64
65
  return;
65
66
  }
66
67
 
@@ -64,7 +64,9 @@ const useGridColumnHeaders = props => {
64
64
  const offsetLeft = (0, _useGridVirtualScroller.computeOffsetLeft)(columnPositions, renderContext, pinnedColumns.left.length);
65
65
  const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
66
66
  React.useEffect(() => {
67
- apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
67
+ if (apiRef.current.columnHeadersContainerRef.current) {
68
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
69
+ }
68
70
  }, [apiRef]);
69
71
  const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);
70
72
  const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);