@mui/x-data-grid 8.27.0 → 8.27.1

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 (66) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/DataGrid/index.js +0 -1
  3. package/components/GridColumnSortButton.js +2 -2
  4. package/components/GridScrollArea.js +2 -2
  5. package/components/GridScrollShadows.js +2 -2
  6. package/components/GridSkeletonLoadingOverlay.js +2 -2
  7. package/components/base/GridOverlays.js +3 -3
  8. package/components/columnHeaders/GridColumnHeaderItem.js +31 -1
  9. package/components/columnHeaders/GridColumnHeaderTitle.js +2 -2
  10. package/components/columnHeaders/GridIconButtonContainer.js +2 -2
  11. package/components/containers/GridRootStyles.js +23 -217
  12. package/components/menu/columnMenu/GridColumnMenu.d.ts +2 -2
  13. package/components/menu/columnMenu/GridColumnMenu.js +2 -0
  14. package/components/menu/columnMenu/GridColumnMenuProps.d.ts +9 -1
  15. package/components/menu/columnMenu/index.d.ts +1 -1
  16. package/components/menu/columnMenu/index.js +0 -12
  17. package/components/toolbar/GridToolbarQuickFilter.js +4 -4
  18. package/components/toolbarV8/GridToolbar.js +3 -3
  19. package/components/toolbarV8/Toolbar.d.ts +1 -1
  20. package/components/toolbarV8/Toolbar.js +2 -2
  21. package/components/virtualization/GridBottomContainer.js +2 -2
  22. package/components/virtualization/GridMainContainer.js +3 -3
  23. package/components/virtualization/GridTopContainer.js +2 -2
  24. package/components/virtualization/GridVirtualScrollbar.d.ts +1 -1
  25. package/components/virtualization/GridVirtualScrollbar.js +5 -5
  26. package/components/virtualization/GridVirtualScroller.js +2 -2
  27. package/components/virtualization/GridVirtualScrollerFiller.js +6 -6
  28. package/esm/DataGrid/index.js +0 -1
  29. package/esm/components/GridColumnSortButton.js +1 -1
  30. package/esm/components/GridScrollArea.js +1 -1
  31. package/esm/components/GridScrollShadows.js +1 -1
  32. package/esm/components/GridSkeletonLoadingOverlay.js +1 -1
  33. package/esm/components/base/GridOverlays.js +1 -1
  34. package/esm/components/columnHeaders/GridColumnHeaderItem.js +31 -1
  35. package/esm/components/columnHeaders/GridColumnHeaderTitle.js +1 -1
  36. package/esm/components/columnHeaders/GridIconButtonContainer.js +1 -1
  37. package/esm/components/containers/GridRootStyles.js +23 -217
  38. package/esm/components/menu/columnMenu/GridColumnMenu.d.ts +2 -2
  39. package/esm/components/menu/columnMenu/GridColumnMenu.js +2 -0
  40. package/esm/components/menu/columnMenu/GridColumnMenuProps.d.ts +9 -1
  41. package/esm/components/menu/columnMenu/index.d.ts +1 -1
  42. package/esm/components/menu/columnMenu/index.js +0 -1
  43. package/esm/components/toolbar/GridToolbarQuickFilter.js +1 -1
  44. package/esm/components/toolbarV8/GridToolbar.js +1 -1
  45. package/esm/components/toolbarV8/Toolbar.d.ts +1 -1
  46. package/esm/components/toolbarV8/Toolbar.js +1 -1
  47. package/esm/components/virtualization/GridBottomContainer.js +1 -1
  48. package/esm/components/virtualization/GridMainContainer.js +1 -1
  49. package/esm/components/virtualization/GridTopContainer.js +1 -1
  50. package/esm/components/virtualization/GridVirtualScrollbar.d.ts +1 -1
  51. package/esm/components/virtualization/GridVirtualScrollbar.js +1 -1
  52. package/esm/components/virtualization/GridVirtualScroller.js +1 -1
  53. package/esm/components/virtualization/GridVirtualScrollerFiller.js +1 -1
  54. package/esm/hooks/features/columnMenu/getColumnMenuItemKeys.d.ts +17 -0
  55. package/esm/hooks/features/columnMenu/getColumnMenuItemKeys.js +36 -0
  56. package/esm/hooks/features/columnMenu/useGridColumnMenuSlots.js +11 -16
  57. package/esm/index.js +1 -1
  58. package/esm/internals/index.d.ts +1 -0
  59. package/hooks/features/columnMenu/getColumnMenuItemKeys.d.ts +17 -0
  60. package/hooks/features/columnMenu/getColumnMenuItemKeys.js +43 -0
  61. package/hooks/features/columnMenu/useGridColumnMenuSlots.js +11 -16
  62. package/index.js +1 -1
  63. package/internals/index.d.ts +1 -0
  64. package/package.json +1 -1
  65. package/esm/index.css +0 -5
  66. package/index.css +0 -5
package/CHANGELOG.md CHANGED
@@ -5,6 +5,59 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## v8.27.1
9
+
10
+ <!-- generated comparing v8.27.0..v8.x -->
11
+
12
+ _Feb 13, 2026_
13
+
14
+ We'd like to extend a big thank you to the 6 contributors who made this release possible. Here are some highlights ✨:
15
+
16
+ - 📝 CSS bundler support is no longer needed for the Data Grid
17
+ - 🐞 Bugfixes
18
+
19
+ Special thanks go out to these community members for their valuable contributions:
20
+ @sai6855
21
+
22
+ The following team members contributed to this release:
23
+ @arminmeh, @cherniavskii, @flaviendelangle, @mj12albert, @MBilalShafi
24
+
25
+ ### Data Grid
26
+
27
+ #### `@mui/x-data-grid@8.27.1`
28
+
29
+ - [DataGrid] Hide column menu icon when there are no items (#21303) @MBilalShafi
30
+ - [DataGrid] Migrate styled imports and remove `index.css` (#21176) @MBilalShafi
31
+ - [DataGrid] Optimize `GridRootStyles` overrides resolver (#21251) @sai6855
32
+
33
+ #### `@mui/x-data-grid-pro@8.27.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
34
+
35
+ Same changes as in `@mui/x-data-grid@8.27.1`, plus:
36
+
37
+ - [DataGridPro] Fix column pinning issue with `restoreState` (#21305) @MBilalShafi
38
+ - [DataGridPro] Fix lazy loading params for page with one row (#21238) @MBilalShafi
39
+ - [DataGridPro] Properly extract parent path (#21301) @arminmeh
40
+
41
+ #### `@mui/x-data-grid-premium@8.27.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
42
+
43
+ Same changes as in `@mui/x-data-grid-pro@8.27.1`, plus:
44
+
45
+ - [DataGridPremium] Fix aggregation display when `initialState` has both `sortModel` and `pinnedColumns` (#21152) @mj12albert
46
+
47
+ ### Tree View
48
+
49
+ #### `@mui/x-tree-view@8.27.1`
50
+
51
+ - [tree view] Fix `apiRef.current.setItemExpansion()` (#21095) @flaviendelangle
52
+
53
+ #### `@mui/x-tree-view-pro@8.27.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
54
+
55
+ Same changes as in `@mui/x-tree-view@8.27.1`.
56
+
57
+ ### Core
58
+
59
+ - [internal] Add CLI for translation using LLM (#21299) @cherniavskii
60
+
8
61
  ## v8.27.0
9
62
 
10
63
  _Feb 2, 2026_
package/DataGrid/index.js CHANGED
@@ -3,7 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- require("../index.css");
7
6
  var _DataGrid = require("./DataGrid");
8
7
  Object.keys(_DataGrid).forEach(function (key) {
9
8
  if (key === "default" || key === "__esModule") return;
@@ -11,7 +11,7 @@ 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 _system = require("@mui/system");
14
+ var _styles = require("@mui/material/styles");
15
15
  var _clsx = _interopRequireDefault(require("clsx"));
16
16
  var _useGridApiContext = require("../hooks/utils/useGridApiContext");
17
17
  var _gridClasses = require("../constants/gridClasses");
@@ -30,7 +30,7 @@ const useUtilityClasses = ownerState => {
30
30
  };
31
31
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
32
32
  };
33
- const GridColumnSortButtonRoot = (0, _system.styled)(_assert.NotRendered, {
33
+ const GridColumnSortButtonRoot = (0, _styles.styled)(_assert.NotRendered, {
34
34
  name: 'MuiDataGrid',
35
35
  slot: 'SortButton'
36
36
  })({
@@ -12,7 +12,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
- var _system = require("@mui/system");
15
+ var _styles = require("@mui/material/styles");
16
16
  var _fastMemo = require("@mui/x-internals/fastMemo");
17
17
  var _forwardRef = require("@mui/x-internals/forwardRef");
18
18
  var _useGridRootProps = require("../hooks/utils/useGridRootProps");
@@ -39,7 +39,7 @@ const useUtilityClasses = ownerState => {
39
39
  };
40
40
  return (0, _composeClasses.default)(slots, _constants.getDataGridUtilityClass, classes);
41
41
  };
42
- const GridScrollAreaRawRoot = (0, _system.styled)('div', {
42
+ const GridScrollAreaRawRoot = (0, _styles.styled)('div', {
43
43
  name: 'MuiDataGrid',
44
44
  slot: 'ScrollArea',
45
45
  overridesResolver: (props, styles) => [{
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  });
9
9
  exports.GridScrollShadows = GridScrollShadows;
10
10
  var React = _interopRequireWildcard(require("react"));
11
- var _system = require("@mui/system");
11
+ var _styles = require("@mui/material/styles");
12
12
  var _RtlProvider = require("@mui/system/RtlProvider");
13
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
14
  var _hooks = require("../hooks");
@@ -29,7 +29,7 @@ const useUtilityClasses = ownerState => {
29
29
  };
30
30
  return (0, _composeClasses.default)(slots, _constants.getDataGridUtilityClass, classes);
31
31
  };
32
- const ScrollShadow = (0, _system.styled)('div', {
32
+ const ScrollShadow = (0, _styles.styled)('div', {
33
33
  name: 'MuiDataGrid',
34
34
  slot: 'ScrollShadow',
35
35
  overridesResolver: (props, styles) => [styles.root, styles[props.position]]
@@ -11,7 +11,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  var _clsx = _interopRequireDefault(require("clsx"));
14
- var _system = require("@mui/system");
14
+ var _styles = require("@mui/material/styles");
15
15
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
16
16
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
17
17
  var _RtlProvider = require("@mui/system/RtlProvider");
@@ -29,7 +29,7 @@ var _rtlFlipSide = require("../utils/rtlFlipSide");
29
29
  var _utils = require("../internals/utils");
30
30
  var _jsxRuntime = require("react/jsx-runtime");
31
31
  const _excluded = ["skeletonRowsCount", "visibleColumns", "showFirstRowBorder"];
32
- const SkeletonOverlay = (0, _system.styled)('div', {
32
+ const SkeletonOverlay = (0, _styles.styled)('div', {
33
33
  name: 'MuiDataGrid',
34
34
  slot: 'SkeletonLoadingOverlay'
35
35
  })({
@@ -9,7 +9,7 @@ exports.GridOverlayWrapper = GridOverlayWrapper;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
- var _system = require("@mui/system");
12
+ var _styles = require("@mui/material/styles");
13
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
14
  var _gridRowsUtils = require("../../hooks/features/rows/gridRowsUtils");
15
15
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
@@ -18,7 +18,7 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
18
18
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
19
19
  var _gridClasses = require("../../constants/gridClasses");
20
20
  var _jsxRuntime = require("react/jsx-runtime");
21
- const GridOverlayWrapperRoot = (0, _system.styled)('div', {
21
+ const GridOverlayWrapperRoot = (0, _styles.styled)('div', {
22
22
  name: 'MuiDataGrid',
23
23
  slot: 'OverlayWrapper',
24
24
  shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant' && prop !== 'right'
@@ -42,7 +42,7 @@ loadingOverlayVariant !== 'skeleton' ? {
42
42
  zIndex: overlayType === 'loadingOverlay' ? 5 // Should be above pinned columns, pinned rows, and detail panel
43
43
  : 4 // Should be above pinned columns and detail panel
44
44
  } : {});
45
- const GridOverlayWrapperInner = (0, _system.styled)('div', {
45
+ const GridOverlayWrapperInner = (0, _styles.styled)('div', {
46
46
  name: 'MuiDataGrid',
47
47
  slot: 'OverlayWrapperInner',
48
48
  shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant'
@@ -17,6 +17,7 @@ var _fastMemo = require("@mui/x-internals/fastMemo");
17
17
  var _RtlProvider = require("@mui/system/RtlProvider");
18
18
  var _doesSupportPreventScroll = require("../../utils/doesSupportPreventScroll");
19
19
  var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
20
+ var _getColumnMenuItemKeys = require("../../hooks/features/columnMenu/getColumnMenuItemKeys");
20
21
  var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
21
22
  var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
22
23
  var _gridClasses = require("../../constants/gridClasses");
@@ -85,6 +86,30 @@ function GridColumnHeaderItem(props) {
85
86
  const columnMenuButtonId = (0, _useId.default)();
86
87
  const iconButtonRef = React.useRef(null);
87
88
  const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);
89
+ const columnMenuSlotProps = rootProps.slotProps?.columnMenu;
90
+ const columnMenuComponent = rootProps.slots.columnMenu;
91
+ const defaultSlots = columnMenuComponent?.defaultSlots;
92
+ const defaultSlotProps = columnMenuComponent?.defaultSlotProps;
93
+ const hasKnownDefaultColumnMenu = defaultSlots != null && defaultSlotProps != null;
94
+ const columnMenuItemKeys = React.useMemo(() => {
95
+ if (!hasKnownDefaultColumnMenu) {
96
+ return [];
97
+ }
98
+ return (0, _getColumnMenuItemKeys.getColumnMenuItemKeys)({
99
+ apiRef,
100
+ colDef,
101
+ defaultSlots,
102
+ defaultSlotProps,
103
+ slots: columnMenuSlotProps?.slots,
104
+ slotProps: columnMenuSlotProps?.slotProps
105
+ });
106
+ }, [apiRef, colDef, defaultSlotProps, defaultSlots, hasKnownDefaultColumnMenu, columnMenuSlotProps?.slotProps, columnMenuSlotProps?.slots]);
107
+
108
+ // If we don't have a "known" default column menu (i.e. a custom menu component
109
+ // without `defaultSlots` / `defaultSlotProps` statics), we treat it as opaque
110
+ // and assume it has items, so we always show the column menu icon.
111
+ // Only the built-in/default menu path can hide the icon when there are no items.
112
+ const hasColumnMenuItems = !hasKnownDefaultColumnMenu || columnMenuItemKeys.length > 0;
88
113
  const isDraggable = !rootProps.disableColumnReorder && !disableReorder && !colDef.disableReorder;
89
114
  let headerComponent;
90
115
  if (colDef.renderHeader) {
@@ -135,10 +160,15 @@ function GridColumnHeaderItem(props) {
135
160
  setShowColumnMenuIcon(columnMenuOpen);
136
161
  }
137
162
  }, [showColumnMenuIcon, columnMenuOpen]);
163
+ React.useEffect(() => {
164
+ if (hasKnownDefaultColumnMenu && columnMenuOpen && !hasColumnMenuItems) {
165
+ apiRef.current.hideColumnMenu();
166
+ }
167
+ }, [apiRef, columnMenuOpen, hasColumnMenuItems, hasKnownDefaultColumnMenu]);
138
168
  const handleExited = React.useCallback(() => {
139
169
  setShowColumnMenuIcon(false);
140
170
  }, []);
141
- const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColumnHeaderMenuIcon.ColumnHeaderMenuIcon, {
171
+ const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && hasColumnMenuItems && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColumnHeaderMenuIcon.ColumnHeaderMenuIcon, {
142
172
  colDef: colDef,
143
173
  columnMenuId: columnMenuId,
144
174
  columnMenuButtonId: columnMenuButtonId,
@@ -13,7 +13,7 @@ var React = _interopRequireWildcard(require("react"));
13
13
  var _propTypes = _interopRequireDefault(require("prop-types"));
14
14
  var _clsx = _interopRequireDefault(require("clsx"));
15
15
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
- var _system = require("@mui/system");
16
+ var _styles = require("@mui/material/styles");
17
17
  var _forwardRef = require("@mui/x-internals/forwardRef");
18
18
  var _domUtils = require("../../utils/domUtils");
19
19
  var _gridClasses = require("../../constants/gridClasses");
@@ -29,7 +29,7 @@ const useUtilityClasses = ownerState => {
29
29
  };
30
30
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
31
31
  };
32
- const GridColumnHeaderTitleRoot = (0, _system.styled)('div', {
32
+ const GridColumnHeaderTitleRoot = (0, _styles.styled)('div', {
33
33
  name: 'MuiDataGrid',
34
34
  slot: 'ColumnHeaderTitle'
35
35
  })({
@@ -12,7 +12,7 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  var _clsx = _interopRequireDefault(require("clsx"));
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
- var _system = require("@mui/system");
15
+ var _styles = require("@mui/material/styles");
16
16
  var _forwardRef = require("@mui/x-internals/forwardRef");
17
17
  var _gridClasses = require("../../constants/gridClasses");
18
18
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
@@ -27,7 +27,7 @@ const useUtilityClasses = ownerState => {
27
27
  };
28
28
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
29
29
  };
30
- const GridIconButtonContainerRoot = (0, _system.styled)('div', {
30
+ const GridIconButtonContainerRoot = (0, _styles.styled)('div', {
31
31
  name: 'MuiDataGrid',
32
32
  slot: 'IconButtonContainer'
33
33
  })(() => ({
@@ -22,226 +22,32 @@ const separatorIconDragStyles = {
22
22
  // https://github.com/emotion-js/emotion/issues/1105#issuecomment-1722524968
23
23
  const ignoreSsrWarning = '/* emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason */';
24
24
  const shouldShowBorderTopRightRadiusSelector = apiRef => !apiRef.current.state.dimensions.isReady ? apiRef.current.state.dimensions.scrollbarSize === 0 : apiRef.current.state.dimensions.hasScrollX && (!apiRef.current.state.dimensions.hasScrollY || apiRef.current.state.dimensions.scrollbarSize === 0);
25
+ const elementOverrides = {
26
+ root: ['autoHeight', 'autosizing', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'withVerticalBorder'],
27
+ children: ['actionsCell', 'booleanCell', 'cell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--rangeTop', 'cell--selectionMode', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withLeftBorder', 'cell--withRightBorder', 'cellCheckbox', 'cellEmpty', 'cellOffsetLeft', 'cellSkeleton', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--emptyGroup', 'columnHeader--filledGroup', 'columnHeader--filtered', 'columnHeader--last', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--siblingFocused', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnSeparator', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'container--bottom', 'container--top', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'editBooleanCell', 'filterIcon', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'groupingCriteriaCell', 'groupingCriteriaCellLoadingContainer', 'groupingCriteriaCellToggle', 'headerFilterRow', 'iconSeparator', 'menuIcon', 'menuIconButton', 'menuList', 'menuOpen', 'overlayWrapperInner', 'pinnedRows', 'pinnedRows--bottom', 'pinnedRows--top', 'row', 'row--borderBottom', 'row--detailPanelExpanded', 'row--dragging', 'row--dynamicHeight', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderCellContainer', 'rowReorderCellPlaceholder', 'rowSkeleton', 'scrollbar', 'scrollbar--horizontal', 'scrollbar--vertical', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'sortIcon', 'treeDataGroupingCell', 'treeDataGroupingCellLoadingContainer', 'treeDataGroupingCellToggle', 'withBorderColor', 'row--beingDragged']
28
+ };
25
29
  const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
26
30
  name: 'MuiDataGrid',
27
31
  slot: 'Root',
28
- overridesResolver: (props, styles) => [
29
- // Root overrides
30
- styles.root, {
31
- [`&.${_gridClasses.gridClasses.autoHeight}`]: styles.autoHeight
32
- }, {
33
- [`&.${_gridClasses.gridClasses.autosizing}`]: styles.autosizing
34
- }, {
35
- [`&.${_gridClasses.gridClasses['root--densityStandard']}`]: styles['root--densityStandard']
36
- }, {
37
- [`&.${_gridClasses.gridClasses['root--densityComfortable']}`]: styles['root--densityComfortable']
38
- }, {
39
- [`&.${_gridClasses.gridClasses['root--densityCompact']}`]: styles['root--densityCompact']
40
- }, {
41
- [`&.${_gridClasses.gridClasses['root--disableUserSelection']}`]: styles['root--disableUserSelection']
42
- }, {
43
- [`&.${_gridClasses.gridClasses['root--noToolbar']}`]: styles['root--noToolbar']
44
- }, {
45
- [`&.${_gridClasses.gridClasses.withVerticalBorder}`]: styles.withVerticalBorder
46
- },
47
- // Child element overrides
48
- // - Only declare overrides here for class names that are not applied to `styled` components.
49
- // - For `styled` components, declare overrides in the component itself.
50
- {
51
- [`& .${_gridClasses.gridClasses.actionsCell}`]: styles.actionsCell
52
- }, {
53
- [`& .${_gridClasses.gridClasses.booleanCell}`]: styles.booleanCell
54
- }, {
55
- [`& .${_gridClasses.gridClasses.cell}`]: styles.cell
56
- }, {
57
- [`& .${_gridClasses.gridClasses['cell--editable']}`]: styles['cell--editable']
58
- }, {
59
- [`& .${_gridClasses.gridClasses['cell--editing']}`]: styles['cell--editing']
60
- }, {
61
- [`& .${_gridClasses.gridClasses['cell--flex']}`]: styles['cell--flex']
62
- }, {
63
- [`& .${_gridClasses.gridClasses['cell--pinnedLeft']}`]: styles['cell--pinnedLeft']
64
- }, {
65
- [`& .${_gridClasses.gridClasses['cell--pinnedRight']}`]: styles['cell--pinnedRight']
66
- }, {
67
- [`& .${_gridClasses.gridClasses['cell--rangeBottom']}`]: styles['cell--rangeBottom']
68
- }, {
69
- [`& .${_gridClasses.gridClasses['cell--rangeLeft']}`]: styles['cell--rangeLeft']
70
- }, {
71
- [`& .${_gridClasses.gridClasses['cell--rangeRight']}`]: styles['cell--rangeRight']
72
- }, {
73
- [`& .${_gridClasses.gridClasses['cell--rangeTop']}`]: styles['cell--rangeTop']
74
- }, {
75
- [`& .${_gridClasses.gridClasses['cell--selectionMode']}`]: styles['cell--selectionMode']
76
- }, {
77
- [`& .${_gridClasses.gridClasses['cell--textCenter']}`]: styles['cell--textCenter']
78
- }, {
79
- [`& .${_gridClasses.gridClasses['cell--textLeft']}`]: styles['cell--textLeft']
80
- }, {
81
- [`& .${_gridClasses.gridClasses['cell--textRight']}`]: styles['cell--textRight']
82
- }, {
83
- [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}`]: styles['cell--withLeftBorder']
84
- }, {
85
- [`& .${_gridClasses.gridClasses['cell--withRightBorder']}`]: styles['cell--withRightBorder']
86
- }, {
87
- [`& .${_gridClasses.gridClasses.cellCheckbox}`]: styles.cellCheckbox
88
- }, {
89
- [`& .${_gridClasses.gridClasses.cellEmpty}`]: styles.cellEmpty
90
- }, {
91
- [`& .${_gridClasses.gridClasses.cellOffsetLeft}`]: styles.cellOffsetLeft
92
- }, {
93
- [`& .${_gridClasses.gridClasses.cellSkeleton}`]: styles.cellSkeleton
94
- }, {
95
- [`& .${_gridClasses.gridClasses.checkboxInput}`]: styles.checkboxInput
96
- }, {
97
- [`& .${_gridClasses.gridClasses.columnHeader}`]: styles.columnHeader
98
- }, {
99
- [`& .${_gridClasses.gridClasses['columnHeader--alignCenter']}`]: styles['columnHeader--alignCenter']
100
- }, {
101
- [`& .${_gridClasses.gridClasses['columnHeader--alignLeft']}`]: styles['columnHeader--alignLeft']
102
- }, {
103
- [`& .${_gridClasses.gridClasses['columnHeader--alignRight']}`]: styles['columnHeader--alignRight']
104
- }, {
105
- [`& .${_gridClasses.gridClasses['columnHeader--dragging']}`]: styles['columnHeader--dragging']
106
- }, {
107
- [`& .${_gridClasses.gridClasses['columnHeader--emptyGroup']}`]: styles['columnHeader--emptyGroup']
108
- }, {
109
- [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}`]: styles['columnHeader--filledGroup']
110
- }, {
111
- [`& .${_gridClasses.gridClasses['columnHeader--filtered']}`]: styles['columnHeader--filtered']
112
- }, {
113
- [`& .${_gridClasses.gridClasses['columnHeader--last']}`]: styles['columnHeader--last']
114
- }, {
115
- [`& .${_gridClasses.gridClasses['columnHeader--moving']}`]: styles['columnHeader--moving']
116
- }, {
117
- [`& .${_gridClasses.gridClasses['columnHeader--numeric']}`]: styles['columnHeader--numeric']
118
- }, {
119
- [`& .${_gridClasses.gridClasses['columnHeader--pinnedLeft']}`]: styles['columnHeader--pinnedLeft']
120
- }, {
121
- [`& .${_gridClasses.gridClasses['columnHeader--pinnedRight']}`]: styles['columnHeader--pinnedRight']
122
- }, {
123
- [`& .${_gridClasses.gridClasses['columnHeader--siblingFocused']}`]: styles['columnHeader--siblingFocused']
124
- }, {
125
- [`& .${_gridClasses.gridClasses['columnHeader--sortable']}`]: styles['columnHeader--sortable']
126
- }, {
127
- [`& .${_gridClasses.gridClasses['columnHeader--sorted']}`]: styles['columnHeader--sorted']
128
- }, {
129
- [`& .${_gridClasses.gridClasses['columnHeader--withLeftBorder']}`]: styles['columnHeader--withLeftBorder']
130
- }, {
131
- [`& .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: styles['columnHeader--withRightBorder']
132
- }, {
133
- [`& .${_gridClasses.gridClasses.columnHeaderCheckbox}`]: styles.columnHeaderCheckbox
134
- }, {
135
- [`& .${_gridClasses.gridClasses.columnHeaderDraggableContainer}`]: styles.columnHeaderDraggableContainer
136
- }, {
137
- [`& .${_gridClasses.gridClasses.columnHeaderTitleContainer}`]: styles.columnHeaderTitleContainer
138
- }, {
139
- [`& .${_gridClasses.gridClasses.columnHeaderTitleContainerContent}`]: styles.columnHeaderTitleContainerContent
140
- }, {
141
- [`& .${_gridClasses.gridClasses.columnSeparator}`]: styles.columnSeparator
142
- }, {
143
- [`& .${_gridClasses.gridClasses['columnSeparator--resizable']}`]: styles['columnSeparator--resizable']
144
- }, {
145
- [`& .${_gridClasses.gridClasses['columnSeparator--resizing']}`]: styles['columnSeparator--resizing']
146
- }, {
147
- [`& .${_gridClasses.gridClasses['columnSeparator--sideLeft']}`]: styles['columnSeparator--sideLeft']
148
- }, {
149
- [`& .${_gridClasses.gridClasses['columnSeparator--sideRight']}`]: styles['columnSeparator--sideRight']
150
- }, {
151
- [`& .${_gridClasses.gridClasses['container--bottom']}`]: styles['container--bottom']
152
- }, {
153
- [`& .${_gridClasses.gridClasses['container--top']}`]: styles['container--top']
154
- }, {
155
- [`& .${_gridClasses.gridClasses.detailPanelToggleCell}`]: styles.detailPanelToggleCell
156
- }, {
157
- [`& .${_gridClasses.gridClasses['detailPanelToggleCell--expanded']}`]: styles['detailPanelToggleCell--expanded']
158
- }, {
159
- [`& .${_gridClasses.gridClasses.editBooleanCell}`]: styles.editBooleanCell
160
- }, {
161
- [`& .${_gridClasses.gridClasses.filterIcon}`]: styles.filterIcon
162
- }, {
163
- [`& .${_gridClasses.gridClasses['filler--borderBottom']}`]: styles['filler--borderBottom']
164
- }, {
165
- [`& .${_gridClasses.gridClasses['filler--pinnedLeft']}`]: styles['filler--pinnedLeft']
166
- }, {
167
- [`& .${_gridClasses.gridClasses['filler--pinnedRight']}`]: styles['filler--pinnedRight']
168
- }, {
169
- [`& .${_gridClasses.gridClasses.groupingCriteriaCell}`]: styles.groupingCriteriaCell
170
- }, {
171
- [`& .${_gridClasses.gridClasses.groupingCriteriaCellLoadingContainer}`]: styles.groupingCriteriaCellLoadingContainer
172
- }, {
173
- [`& .${_gridClasses.gridClasses.groupingCriteriaCellToggle}`]: styles.groupingCriteriaCellToggle
174
- }, {
175
- [`& .${_gridClasses.gridClasses.headerFilterRow}`]: styles.headerFilterRow
176
- }, {
177
- [`& .${_gridClasses.gridClasses.iconSeparator}`]: styles.iconSeparator
178
- }, {
179
- [`& .${_gridClasses.gridClasses.menuIcon}`]: styles.menuIcon
180
- }, {
181
- [`& .${_gridClasses.gridClasses.menuIconButton}`]: styles.menuIconButton
182
- }, {
183
- [`& .${_gridClasses.gridClasses.menuList}`]: styles.menuList
184
- }, {
185
- [`& .${_gridClasses.gridClasses.menuOpen}`]: styles.menuOpen
186
- }, {
187
- [`& .${_gridClasses.gridClasses.overlayWrapperInner}`]: styles.overlayWrapperInner
188
- }, {
189
- [`& .${_gridClasses.gridClasses.pinnedRows}`]: styles.pinnedRows
190
- }, {
191
- [`& .${_gridClasses.gridClasses['pinnedRows--bottom']}`]: styles['pinnedRows--bottom']
192
- }, {
193
- [`& .${_gridClasses.gridClasses['pinnedRows--top']}`]: styles['pinnedRows--top']
194
- }, {
195
- [`& .${_gridClasses.gridClasses.row}`]: styles.row
196
- }, {
197
- [`& .${_gridClasses.gridClasses['row--borderBottom']}`]: styles['row--borderBottom']
198
- }, {
199
- [`& .${_gridClasses.gridClasses['row--detailPanelExpanded']}`]: styles['row--detailPanelExpanded']
200
- }, {
201
- [`& .${_gridClasses.gridClasses['row--dragging']}`]: styles['row--dragging']
202
- }, {
203
- [`& .${_gridClasses.gridClasses['row--dynamicHeight']}`]: styles['row--dynamicHeight']
204
- }, {
205
- [`& .${_gridClasses.gridClasses['row--editable']}`]: styles['row--editable']
206
- }, {
207
- [`& .${_gridClasses.gridClasses['row--editing']}`]: styles['row--editing']
208
- }, {
209
- [`& .${_gridClasses.gridClasses['row--firstVisible']}`]: styles['row--firstVisible']
210
- }, {
211
- [`& .${_gridClasses.gridClasses['row--lastVisible']}`]: styles['row--lastVisible']
212
- }, {
213
- [`& .${_gridClasses.gridClasses.rowReorderCell}`]: styles.rowReorderCell
214
- }, {
215
- [`& .${_gridClasses.gridClasses['rowReorderCell--draggable']}`]: styles['rowReorderCell--draggable']
216
- }, {
217
- [`& .${_gridClasses.gridClasses.rowReorderCellContainer}`]: styles.rowReorderCellContainer
218
- }, {
219
- [`& .${_gridClasses.gridClasses.rowReorderCellPlaceholder}`]: styles.rowReorderCellPlaceholder
220
- }, {
221
- [`& .${_gridClasses.gridClasses.rowSkeleton}`]: styles.rowSkeleton
222
- }, {
223
- [`& .${_gridClasses.gridClasses.scrollbar}`]: styles.scrollbar
224
- }, {
225
- [`& .${_gridClasses.gridClasses['scrollbar--horizontal']}`]: styles['scrollbar--horizontal']
226
- }, {
227
- [`& .${_gridClasses.gridClasses['scrollbar--vertical']}`]: styles['scrollbar--vertical']
228
- }, {
229
- [`& .${_gridClasses.gridClasses.scrollbarFiller}`]: styles.scrollbarFiller
230
- }, {
231
- [`& .${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}`]: styles['scrollbarFiller--pinnedRight']
232
- }, {
233
- [`& .${_gridClasses.gridClasses.sortIcon}`]: styles.sortIcon
234
- }, {
235
- [`& .${_gridClasses.gridClasses.treeDataGroupingCell}`]: styles.treeDataGroupingCell
236
- }, {
237
- [`& .${_gridClasses.gridClasses.treeDataGroupingCellLoadingContainer}`]: styles.treeDataGroupingCellLoadingContainer
238
- }, {
239
- [`& .${_gridClasses.gridClasses.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle
240
- }, {
241
- [`& .${_gridClasses.gridClasses.withBorderColor}`]: styles.withBorderColor
242
- }, {
243
- [`& .${_gridClasses.gridClasses['row--beingDragged']}`]: styles['row--beingDragged']
244
- }]
32
+ overridesResolver: (props, styles) => {
33
+ // Root overrides
34
+ const overrides = [styles.root];
35
+ elementOverrides.root.forEach(key => {
36
+ overrides.push({
37
+ [`&.${_gridClasses.gridClasses[key]}`]: styles[key]
38
+ });
39
+ });
40
+
41
+ // Child element overrides
42
+ // - Only declare overrides here for class names that are not applied to `styled` components.
43
+ // - For `styled` components, declare overrides in the component itself.
44
+ elementOverrides.children.forEach(key => {
45
+ overrides.push({
46
+ [`& .${_gridClasses.gridClasses[key]}`]: styles[key]
47
+ });
48
+ });
49
+ return overrides;
50
+ }
245
51
  })(() => {
246
52
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
247
53
  const shouldShowBorderTopRightRadius = (0, _useGridSelector.useGridSelector)(apiRef, shouldShowBorderTopRightRadiusSelector);
@@ -1,7 +1,7 @@
1
1
  import { GridColumnMenuColumnsItem } from "./menuItems/GridColumnMenuColumnsItem.js";
2
2
  import { GridColumnMenuFilterItem } from "./menuItems/GridColumnMenuFilterItem.js";
3
3
  import { GridColumnMenuSortItem } from "./menuItems/GridColumnMenuSortItem.js";
4
- import type { GridColumnMenuProps, GridGenericColumnMenuProps } from "./GridColumnMenuProps.js";
4
+ import type { GridGenericColumnMenuProps, GridColumnMenuComponent } from "./GridColumnMenuProps.js";
5
5
  export declare const GRID_COLUMN_MENU_SLOTS: {
6
6
  columnMenuSortItem: typeof GridColumnMenuSortItem;
7
7
  columnMenuFilterItem: typeof GridColumnMenuFilterItem;
@@ -19,5 +19,5 @@ export declare const GRID_COLUMN_MENU_SLOT_PROPS: {
19
19
  };
20
20
  };
21
21
  declare const GridGenericColumnMenu: import("react").ForwardRefExoticComponent<GridGenericColumnMenuProps> | import("react").ForwardRefExoticComponent<GridGenericColumnMenuProps & import("react").RefAttributes<HTMLUListElement>>;
22
- declare const GridColumnMenu: import("react").ForwardRefExoticComponent<GridColumnMenuProps> | import("react").ForwardRefExoticComponent<GridColumnMenuProps & import("react").RefAttributes<HTMLUListElement>>;
22
+ declare const GridColumnMenu: GridColumnMenuComponent;
23
23
  export { GridColumnMenu, GridGenericColumnMenu };
@@ -93,6 +93,8 @@ const GridColumnMenu = exports.GridColumnMenu = (0, _forwardRef.forwardRef)(func
93
93
  }));
94
94
  });
95
95
  if (process.env.NODE_ENV !== "production") GridColumnMenu.displayName = "GridColumnMenu";
96
+ GridColumnMenu.defaultSlots = GRID_COLUMN_MENU_SLOTS;
97
+ GridColumnMenu.defaultSlotProps = GRID_COLUMN_MENU_SLOT_PROPS;
96
98
  process.env.NODE_ENV !== "production" ? GridColumnMenu.propTypes = {
97
99
  // ----------------------------- Warning --------------------------------
98
100
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -9,4 +9,12 @@ export interface GridColumnMenuContainerProps extends React.HTMLAttributes<HTMLU
9
9
  labelledby?: string;
10
10
  }
11
11
  export interface GridGenericColumnMenuProps extends GridColumnMenuRootProps, GridColumnMenuContainerProps {}
12
- export interface GridColumnMenuProps extends Omit<GridGenericColumnMenuProps, 'defaultSlots' | 'defaultSlotProps'> {}
12
+ export interface GridColumnMenuProps extends Omit<GridGenericColumnMenuProps, 'defaultSlots' | 'defaultSlotProps'> {}
13
+ /**
14
+ * Type for column menu components with static defaultSlots and defaultSlotProps.
15
+ * Used by GridColumnMenu, GridProColumnMenu, and GridPremiumColumnMenu.
16
+ */
17
+ export type GridColumnMenuComponent = React.ForwardRefExoticComponent<GridColumnMenuProps & React.RefAttributes<HTMLUListElement>> & {
18
+ defaultSlots: GridColumnMenuRootProps['defaultSlots'];
19
+ defaultSlotProps: GridColumnMenuRootProps['defaultSlotProps'];
20
+ };
@@ -1,5 +1,5 @@
1
1
  export * from "./GridColumnHeaderMenu.js";
2
- export * from "./GridColumnMenuProps.js";
2
+ export type { GridColumnMenuContainerProps, GridGenericColumnMenuProps, GridColumnMenuProps } from "./GridColumnMenuProps.js";
3
3
  export * from "./GridColumnMenuItemProps.js";
4
4
  export * from "./GridColumnMenuContainer.js";
5
5
  export { GridGenericColumnMenu } from "./GridColumnMenu.js";
@@ -24,18 +24,6 @@ Object.keys(_GridColumnHeaderMenu).forEach(function (key) {
24
24
  }
25
25
  });
26
26
  });
27
- var _GridColumnMenuProps = require("./GridColumnMenuProps");
28
- Object.keys(_GridColumnMenuProps).forEach(function (key) {
29
- if (key === "default" || key === "__esModule") return;
30
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
31
- if (key in exports && exports[key] === _GridColumnMenuProps[key]) return;
32
- Object.defineProperty(exports, key, {
33
- enumerable: true,
34
- get: function () {
35
- return _GridColumnMenuProps[key];
36
- }
37
- });
38
- });
39
27
  var _GridColumnMenuItemProps = require("./GridColumnMenuItemProps");
40
28
  Object.keys(_GridColumnMenuItemProps).forEach(function (key) {
41
29
  if (key === "default" || key === "__esModule") return;
@@ -9,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
12
- var _system = require("@mui/system");
12
+ var _styles = require("@mui/material/styles");
13
13
  var _clsx = _interopRequireDefault(require("clsx"));
14
14
  var _constants = require("../../constants");
15
15
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
@@ -31,14 +31,14 @@ const useUtilityClasses = ownerState => {
31
31
  };
32
32
  return (0, _composeClasses.default)(slots, _constants.getDataGridUtilityClass, classes);
33
33
  };
34
- const GridQuickFilterRoot = (0, _system.styled)('div', {
34
+ const GridQuickFilterRoot = (0, _styles.styled)('div', {
35
35
  name: 'MuiDataGrid',
36
36
  slot: 'ToolbarQuickFilter'
37
37
  })({
38
38
  display: 'grid',
39
39
  alignItems: 'center'
40
40
  });
41
- const GridQuickFilterTrigger = (0, _system.styled)(_toolbarV.ToolbarButton, {
41
+ const GridQuickFilterTrigger = (0, _styles.styled)(_toolbarV.ToolbarButton, {
42
42
  name: 'MuiDataGrid',
43
43
  slot: 'ToolbarQuickFilterTrigger'
44
44
  })(({
@@ -55,7 +55,7 @@ const GridQuickFilterTrigger = (0, _system.styled)(_toolbarV.ToolbarButton, {
55
55
 
56
56
  // TODO: Use NotRendered from /utils/assert
57
57
  // Currently causes react-docgen to fail
58
- const GridQuickFilterTextField = (0, _system.styled)(_props => {
58
+ const GridQuickFilterTextField = (0, _styles.styled)(_props => {
59
59
  throw new Error('Failed assertion: should not be rendered');
60
60
  }, {
61
61
  name: 'MuiDataGrid',