@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
@@ -14,7 +14,7 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
14
14
  var React = _interopRequireWildcard(require("react"));
15
15
  var _propTypes = _interopRequireDefault(require("prop-types"));
16
16
  var _useId = _interopRequireDefault(require("@mui/utils/useId"));
17
- var _system = require("@mui/system");
17
+ var _styles = require("@mui/material/styles");
18
18
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
19
19
  var _GridMenu = require("../menu/GridMenu");
20
20
  var _Toolbar = require("./Toolbar");
@@ -42,14 +42,14 @@ const useUtilityClasses = ownerState => {
42
42
  };
43
43
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
44
44
  };
45
- const Divider = (0, _system.styled)(_assert.NotRendered, {
45
+ const Divider = (0, _styles.styled)(_assert.NotRendered, {
46
46
  name: 'MuiDataGrid',
47
47
  slot: 'ToolbarDivider'
48
48
  })({
49
49
  height: '50%',
50
50
  margin: _cssVariables.vars.spacing(0, 0.5)
51
51
  });
52
- const Label = (0, _system.styled)('span', {
52
+ const Label = (0, _styles.styled)('span', {
53
53
  name: 'MuiDataGrid',
54
54
  slot: 'ToolbarLabel'
55
55
  })({
@@ -6,7 +6,7 @@ export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
6
6
  */
7
7
  render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
8
8
  };
9
- declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
9
+ declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
10
10
  /**
11
11
  * The top level Toolbar component that provides context to child components.
12
12
  * It renders a styled `<div />` element.
@@ -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 _propTypes = _interopRequireDefault(require("prop-types"));
14
- var _system = require("@mui/system");
14
+ var _styles = require("@mui/material/styles");
15
15
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
16
  var _clsx = _interopRequireDefault(require("clsx"));
17
17
  var _forwardRef = require("@mui/x-internals/forwardRef");
@@ -32,7 +32,7 @@ const useUtilityClasses = ownerState => {
32
32
  };
33
33
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
34
34
  };
35
- const ToolbarRoot = (0, _system.styled)('div', {
35
+ const ToolbarRoot = (0, _styles.styled)('div', {
36
36
  name: 'MuiDataGrid',
37
37
  slot: 'Toolbar'
38
38
  })({
@@ -9,7 +9,7 @@ exports.GridBottomContainer = GridBottomContainer;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _clsx = _interopRequireDefault(require("clsx"));
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 _gridClasses = require("../../constants/gridClasses");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
@@ -19,7 +19,7 @@ const useUtilityClasses = () => {
19
19
  };
20
20
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, {});
21
21
  };
22
- const Element = (0, _system.styled)('div', {
22
+ const Element = (0, _styles.styled)('div', {
23
23
  slot: 'internal',
24
24
  shouldForwardProp: undefined
25
25
  })({
@@ -9,12 +9,12 @@ Object.defineProperty(exports, "__esModule", {
9
9
  exports.GridMainContainer = void 0;
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var React = _interopRequireWildcard(require("react"));
12
- var _system = require("@mui/system");
12
+ var _styles = require("@mui/material/styles");
13
13
  var _forwardRef = require("@mui/x-internals/forwardRef");
14
14
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
15
15
  var _useGridConfiguration = require("../../hooks/utils/useGridConfiguration");
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
- const GridPanelAnchor = (0, _system.styled)('div', {
17
+ const GridPanelAnchor = (0, _styles.styled)('div', {
18
18
  slot: 'internal',
19
19
  shouldForwardProp: undefined
20
20
  })({
@@ -23,7 +23,7 @@ const GridPanelAnchor = (0, _system.styled)('div', {
23
23
  left: 0,
24
24
  width: 'calc(100% - (var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize)))'
25
25
  });
26
- const Element = (0, _system.styled)('div', {
26
+ const Element = (0, _styles.styled)('div', {
27
27
  name: 'MuiDataGrid',
28
28
  slot: 'Main',
29
29
  overridesResolver: (props, styles) => {
@@ -9,7 +9,7 @@ exports.GridTopContainer = GridTopContainer;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _clsx = _interopRequireDefault(require("clsx"));
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 _gridClasses = require("../../constants/gridClasses");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
@@ -19,7 +19,7 @@ const useUtilityClasses = () => {
19
19
  };
20
20
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, {});
21
21
  };
22
- const Element = (0, _system.styled)('div', {
22
+ const Element = (0, _styles.styled)('div', {
23
23
  slot: 'internal',
24
24
  shouldForwardProp: undefined
25
25
  })({
@@ -8,6 +8,6 @@ type GridVirtualScrollbarProps = {
8
8
  }>;
9
9
  };
10
10
  export declare const scrollbarSizeCssExpression = "calc(max(var(--DataGrid-scrollbarSize), 14px))";
11
- export declare const ScrollbarCorner: import("@emotion/styled").StyledComponent<Pick<import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme> & Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement> | keyof import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme>, {}, {}>;
11
+ export declare const ScrollbarCorner: import("@emotion/styled").StyledComponent<Pick<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement> | keyof import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, {}, {}>;
12
12
  declare const GridVirtualScrollbar: React.ForwardRefExoticComponent<GridVirtualScrollbarProps> | React.ForwardRefExoticComponent<GridVirtualScrollbarProps & React.RefAttributes<HTMLDivElement>>;
13
13
  export { GridVirtualScrollbar };
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  });
9
9
  exports.scrollbarSizeCssExpression = exports.ScrollbarCorner = exports.GridVirtualScrollbar = void 0;
10
10
  var React = _interopRequireWildcard(require("react"));
11
- var _system = require("@mui/system");
11
+ var _styles = require("@mui/material/styles");
12
12
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
13
13
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
@@ -35,7 +35,7 @@ const useUtilityClasses = (ownerState, position) => {
35
35
  // to appear and have a real size. We set it to 14px because it seems like an acceptable value and we
36
36
  // don't have a method to find the required size for scrollbars on those platforms.
37
37
  const scrollbarSizeCssExpression = exports.scrollbarSizeCssExpression = 'calc(max(var(--DataGrid-scrollbarSize), 14px))';
38
- const Scrollbar = (0, _system.styled)('div', {
38
+ const Scrollbar = (0, _styles.styled)('div', {
39
39
  slot: 'internal',
40
40
  shouldForwardProp: undefined
41
41
  })({
@@ -47,7 +47,7 @@ const Scrollbar = (0, _system.styled)('div', {
47
47
  },
48
48
  '--size': scrollbarSizeCssExpression
49
49
  });
50
- const ScrollbarVertical = (0, _system.styled)(Scrollbar, {
50
+ const ScrollbarVertical = (0, _styles.styled)(Scrollbar, {
51
51
  slot: 'internal'
52
52
  })({
53
53
  width: 'var(--size)',
@@ -62,7 +62,7 @@ const ScrollbarVertical = (0, _system.styled)(Scrollbar, {
62
62
  top: 'var(--DataGrid-headersTotalHeight)',
63
63
  right: 0
64
64
  });
65
- const ScrollbarHorizontal = (0, _system.styled)(Scrollbar, {
65
+ const ScrollbarHorizontal = (0, _styles.styled)(Scrollbar, {
66
66
  slot: 'internal'
67
67
  })({
68
68
  width: 'calc(var(--DataGrid-hasScrollX) * (100% - var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize)))',
@@ -76,7 +76,7 @@ const ScrollbarHorizontal = (0, _system.styled)(Scrollbar, {
76
76
  },
77
77
  bottom: 0
78
78
  });
79
- const ScrollbarCorner = exports.ScrollbarCorner = (0, _system.styled)(Scrollbar, {
79
+ const ScrollbarCorner = exports.ScrollbarCorner = (0, _styles.styled)(Scrollbar, {
80
80
  slot: 'internal'
81
81
  })({
82
82
  width: 'var(--size)',
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.GridVirtualScroller = GridVirtualScroller;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
- var _system = require("@mui/system");
11
+ var _styles = require("@mui/material/styles");
12
12
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
13
13
  var _gridDimensionsSelectors = require("../../hooks/features/dimensions/gridDimensionsSelectors");
14
14
  var _rows = require("../../hooks/features/rows");
@@ -44,7 +44,7 @@ const useUtilityClasses = ownerState => {
44
44
  };
45
45
  return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
46
46
  };
47
- const Scroller = (0, _system.styled)('div', {
47
+ const Scroller = (0, _styles.styled)('div', {
48
48
  name: 'MuiDataGrid',
49
49
  slot: 'VirtualScroller',
50
50
  overridesResolver: (props, styles) => {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.GridVirtualScrollerFiller = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
- var _system = require("@mui/system");
9
+ var _styles = require("@mui/material/styles");
10
10
  var _fastMemo = require("@mui/x-internals/fastMemo");
11
11
  var _cssVariables = require("../../constants/cssVariables");
12
12
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
@@ -14,7 +14,7 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
14
14
  var _dimensions = require("../../hooks/features/dimensions");
15
15
  var _constants = require("../../constants");
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
- const Filler = (0, _system.styled)('div', {
17
+ const Filler = (0, _styles.styled)('div', {
18
18
  slot: 'internal',
19
19
  shouldForwardProp: undefined
20
20
  })({
@@ -23,7 +23,7 @@ const Filler = (0, _system.styled)('div', {
23
23
  width: 'var(--DataGrid-rowWidth)',
24
24
  boxSizing: 'border-box'
25
25
  });
26
- const Pinned = (0, _system.styled)('div', {
26
+ const Pinned = (0, _styles.styled)('div', {
27
27
  slot: 'internal',
28
28
  shouldForwardProp: undefined
29
29
  })({
@@ -33,17 +33,17 @@ const Pinned = (0, _system.styled)('div', {
33
33
  borderTop: '1px solid var(--rowBorderColor)',
34
34
  backgroundColor: _cssVariables.vars.cell.background.pinned
35
35
  });
36
- const PinnedLeft = (0, _system.styled)(Pinned, {
36
+ const PinnedLeft = (0, _styles.styled)(Pinned, {
37
37
  slot: 'internal'
38
38
  })({
39
39
  left: 0
40
40
  });
41
- const PinnedRight = (0, _system.styled)(Pinned, {
41
+ const PinnedRight = (0, _styles.styled)(Pinned, {
42
42
  slot: 'internal'
43
43
  })({
44
44
  right: 0
45
45
  });
46
- const Main = (0, _system.styled)('div', {
46
+ const Main = (0, _styles.styled)('div', {
47
47
  slot: 'internal',
48
48
  shouldForwardProp: undefined
49
49
  })({
@@ -1,2 +1 @@
1
- import '../index.css';
2
1
  export * from "./DataGrid.js";
@@ -4,7 +4,7 @@ const _excluded = ["direction", "index", "sortingOrder", "disabled", "className"
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import composeClasses from '@mui/utils/composeClasses';
7
- import { styled } from '@mui/system';
7
+ import { styled } from '@mui/material/styles';
8
8
  import clsx from 'clsx';
9
9
  import { useGridApiContext } from "../hooks/utils/useGridApiContext.js";
10
10
  import { getDataGridUtilityClass } from "../constants/gridClasses.js";
@@ -5,7 +5,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
5
5
  import * as React from 'react';
6
6
  import useEventCallback from '@mui/utils/useEventCallback';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
- import { styled } from '@mui/system';
8
+ import { styled } from '@mui/material/styles';
9
9
  import { fastMemo } from '@mui/x-internals/fastMemo';
10
10
  import { forwardRef } from '@mui/x-internals/forwardRef';
11
11
  import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import * as React from 'react';
4
- import { styled } from '@mui/system';
4
+ import { styled } from '@mui/material/styles';
5
5
  import { useRtl } from '@mui/system/RtlProvider';
6
6
  import composeClasses from '@mui/utils/composeClasses';
7
7
  import { gridDimensionsSelector, gridPinnedColumnsSelector, useGridEvent, useGridSelector } from "../hooks/index.js";
@@ -5,7 +5,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
5
5
  const _excluded = ["skeletonRowsCount", "visibleColumns", "showFirstRowBorder"];
6
6
  import * as React from 'react';
7
7
  import clsx from 'clsx';
8
- import { styled } from '@mui/system';
8
+ import { styled } from '@mui/material/styles';
9
9
  import useForkRef from '@mui/utils/useForkRef';
10
10
  import composeClasses from '@mui/utils/composeClasses';
11
11
  import { useRtl } from '@mui/system/RtlProvider';
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import { styled } from '@mui/system';
4
+ import { styled } from '@mui/material/styles';
5
5
  import composeClasses from '@mui/utils/composeClasses';
6
6
  import { minimalContentHeight } from "../../hooks/features/rows/gridRowsUtils.js";
7
7
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
@@ -10,6 +10,7 @@ import { fastMemo } from '@mui/x-internals/fastMemo';
10
10
  import { useRtl } from '@mui/system/RtlProvider';
11
11
  import { doesSupportPreventScroll } from "../../utils/doesSupportPreventScroll.js";
12
12
  import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.js";
13
+ import { getColumnMenuItemKeys } from "../../hooks/features/columnMenu/getColumnMenuItemKeys.js";
13
14
  import { ColumnHeaderMenuIcon } from "./ColumnHeaderMenuIcon.js";
14
15
  import { GridColumnHeaderMenu } from "../menu/columnMenu/GridColumnHeaderMenu.js";
15
16
  import { gridClasses, getDataGridUtilityClass } from "../../constants/gridClasses.js";
@@ -78,6 +79,30 @@ function GridColumnHeaderItem(props) {
78
79
  const columnMenuButtonId = useId();
79
80
  const iconButtonRef = React.useRef(null);
80
81
  const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);
82
+ const columnMenuSlotProps = rootProps.slotProps?.columnMenu;
83
+ const columnMenuComponent = rootProps.slots.columnMenu;
84
+ const defaultSlots = columnMenuComponent?.defaultSlots;
85
+ const defaultSlotProps = columnMenuComponent?.defaultSlotProps;
86
+ const hasKnownDefaultColumnMenu = defaultSlots != null && defaultSlotProps != null;
87
+ const columnMenuItemKeys = React.useMemo(() => {
88
+ if (!hasKnownDefaultColumnMenu) {
89
+ return [];
90
+ }
91
+ return getColumnMenuItemKeys({
92
+ apiRef,
93
+ colDef,
94
+ defaultSlots,
95
+ defaultSlotProps,
96
+ slots: columnMenuSlotProps?.slots,
97
+ slotProps: columnMenuSlotProps?.slotProps
98
+ });
99
+ }, [apiRef, colDef, defaultSlotProps, defaultSlots, hasKnownDefaultColumnMenu, columnMenuSlotProps?.slotProps, columnMenuSlotProps?.slots]);
100
+
101
+ // If we don't have a "known" default column menu (i.e. a custom menu component
102
+ // without `defaultSlots` / `defaultSlotProps` statics), we treat it as opaque
103
+ // and assume it has items, so we always show the column menu icon.
104
+ // Only the built-in/default menu path can hide the icon when there are no items.
105
+ const hasColumnMenuItems = !hasKnownDefaultColumnMenu || columnMenuItemKeys.length > 0;
81
106
  const isDraggable = !rootProps.disableColumnReorder && !disableReorder && !colDef.disableReorder;
82
107
  let headerComponent;
83
108
  if (colDef.renderHeader) {
@@ -128,10 +153,15 @@ function GridColumnHeaderItem(props) {
128
153
  setShowColumnMenuIcon(columnMenuOpen);
129
154
  }
130
155
  }, [showColumnMenuIcon, columnMenuOpen]);
156
+ React.useEffect(() => {
157
+ if (hasKnownDefaultColumnMenu && columnMenuOpen && !hasColumnMenuItems) {
158
+ apiRef.current.hideColumnMenu();
159
+ }
160
+ }, [apiRef, columnMenuOpen, hasColumnMenuItems, hasKnownDefaultColumnMenu]);
131
161
  const handleExited = React.useCallback(() => {
132
162
  setShowColumnMenuIcon(false);
133
163
  }, []);
134
- const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && /*#__PURE__*/_jsx(ColumnHeaderMenuIcon, {
164
+ const columnMenuIconButton = !rootProps.disableColumnMenu && !colDef.disableColumnMenu && hasColumnMenuItems && /*#__PURE__*/_jsx(ColumnHeaderMenuIcon, {
135
165
  colDef: colDef,
136
166
  columnMenuId: columnMenuId,
137
167
  columnMenuButtonId: columnMenuButtonId,
@@ -7,7 +7,7 @@ import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
9
9
  import composeClasses from '@mui/utils/composeClasses';
10
- import { styled } from '@mui/system';
10
+ import { styled } from '@mui/material/styles';
11
11
  import { forwardRef } from '@mui/x-internals/forwardRef';
12
12
  import { isOverflown } from "../../utils/domUtils.js";
13
13
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
@@ -6,7 +6,7 @@ const _excluded = ["className"];
6
6
  import * as React from 'react';
7
7
  import clsx from 'clsx';
8
8
  import composeClasses from '@mui/utils/composeClasses';
9
- import { styled } from '@mui/system';
9
+ import { styled } from '@mui/material/styles';
10
10
  import { forwardRef } from '@mui/x-internals/forwardRef';
11
11
  import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
12
12
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
@@ -16,226 +16,32 @@ const separatorIconDragStyles = {
16
16
  // https://github.com/emotion-js/emotion/issues/1105#issuecomment-1722524968
17
17
  const ignoreSsrWarning = '/* emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason */';
18
18
  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);
19
+ const elementOverrides = {
20
+ root: ['autoHeight', 'autosizing', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'withVerticalBorder'],
21
+ 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']
22
+ };
19
23
  export const GridRootStyles = styled('div', {
20
24
  name: 'MuiDataGrid',
21
25
  slot: 'Root',
22
- overridesResolver: (props, styles) => [
23
- // Root overrides
24
- styles.root, {
25
- [`&.${c.autoHeight}`]: styles.autoHeight
26
- }, {
27
- [`&.${c.autosizing}`]: styles.autosizing
28
- }, {
29
- [`&.${c['root--densityStandard']}`]: styles['root--densityStandard']
30
- }, {
31
- [`&.${c['root--densityComfortable']}`]: styles['root--densityComfortable']
32
- }, {
33
- [`&.${c['root--densityCompact']}`]: styles['root--densityCompact']
34
- }, {
35
- [`&.${c['root--disableUserSelection']}`]: styles['root--disableUserSelection']
36
- }, {
37
- [`&.${c['root--noToolbar']}`]: styles['root--noToolbar']
38
- }, {
39
- [`&.${c.withVerticalBorder}`]: styles.withVerticalBorder
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
- {
45
- [`& .${c.actionsCell}`]: styles.actionsCell
46
- }, {
47
- [`& .${c.booleanCell}`]: styles.booleanCell
48
- }, {
49
- [`& .${c.cell}`]: styles.cell
50
- }, {
51
- [`& .${c['cell--editable']}`]: styles['cell--editable']
52
- }, {
53
- [`& .${c['cell--editing']}`]: styles['cell--editing']
54
- }, {
55
- [`& .${c['cell--flex']}`]: styles['cell--flex']
56
- }, {
57
- [`& .${c['cell--pinnedLeft']}`]: styles['cell--pinnedLeft']
58
- }, {
59
- [`& .${c['cell--pinnedRight']}`]: styles['cell--pinnedRight']
60
- }, {
61
- [`& .${c['cell--rangeBottom']}`]: styles['cell--rangeBottom']
62
- }, {
63
- [`& .${c['cell--rangeLeft']}`]: styles['cell--rangeLeft']
64
- }, {
65
- [`& .${c['cell--rangeRight']}`]: styles['cell--rangeRight']
66
- }, {
67
- [`& .${c['cell--rangeTop']}`]: styles['cell--rangeTop']
68
- }, {
69
- [`& .${c['cell--selectionMode']}`]: styles['cell--selectionMode']
70
- }, {
71
- [`& .${c['cell--textCenter']}`]: styles['cell--textCenter']
72
- }, {
73
- [`& .${c['cell--textLeft']}`]: styles['cell--textLeft']
74
- }, {
75
- [`& .${c['cell--textRight']}`]: styles['cell--textRight']
76
- }, {
77
- [`& .${c['cell--withLeftBorder']}`]: styles['cell--withLeftBorder']
78
- }, {
79
- [`& .${c['cell--withRightBorder']}`]: styles['cell--withRightBorder']
80
- }, {
81
- [`& .${c.cellCheckbox}`]: styles.cellCheckbox
82
- }, {
83
- [`& .${c.cellEmpty}`]: styles.cellEmpty
84
- }, {
85
- [`& .${c.cellOffsetLeft}`]: styles.cellOffsetLeft
86
- }, {
87
- [`& .${c.cellSkeleton}`]: styles.cellSkeleton
88
- }, {
89
- [`& .${c.checkboxInput}`]: styles.checkboxInput
90
- }, {
91
- [`& .${c.columnHeader}`]: styles.columnHeader
92
- }, {
93
- [`& .${c['columnHeader--alignCenter']}`]: styles['columnHeader--alignCenter']
94
- }, {
95
- [`& .${c['columnHeader--alignLeft']}`]: styles['columnHeader--alignLeft']
96
- }, {
97
- [`& .${c['columnHeader--alignRight']}`]: styles['columnHeader--alignRight']
98
- }, {
99
- [`& .${c['columnHeader--dragging']}`]: styles['columnHeader--dragging']
100
- }, {
101
- [`& .${c['columnHeader--emptyGroup']}`]: styles['columnHeader--emptyGroup']
102
- }, {
103
- [`& .${c['columnHeader--filledGroup']}`]: styles['columnHeader--filledGroup']
104
- }, {
105
- [`& .${c['columnHeader--filtered']}`]: styles['columnHeader--filtered']
106
- }, {
107
- [`& .${c['columnHeader--last']}`]: styles['columnHeader--last']
108
- }, {
109
- [`& .${c['columnHeader--moving']}`]: styles['columnHeader--moving']
110
- }, {
111
- [`& .${c['columnHeader--numeric']}`]: styles['columnHeader--numeric']
112
- }, {
113
- [`& .${c['columnHeader--pinnedLeft']}`]: styles['columnHeader--pinnedLeft']
114
- }, {
115
- [`& .${c['columnHeader--pinnedRight']}`]: styles['columnHeader--pinnedRight']
116
- }, {
117
- [`& .${c['columnHeader--siblingFocused']}`]: styles['columnHeader--siblingFocused']
118
- }, {
119
- [`& .${c['columnHeader--sortable']}`]: styles['columnHeader--sortable']
120
- }, {
121
- [`& .${c['columnHeader--sorted']}`]: styles['columnHeader--sorted']
122
- }, {
123
- [`& .${c['columnHeader--withLeftBorder']}`]: styles['columnHeader--withLeftBorder']
124
- }, {
125
- [`& .${c['columnHeader--withRightBorder']}`]: styles['columnHeader--withRightBorder']
126
- }, {
127
- [`& .${c.columnHeaderCheckbox}`]: styles.columnHeaderCheckbox
128
- }, {
129
- [`& .${c.columnHeaderDraggableContainer}`]: styles.columnHeaderDraggableContainer
130
- }, {
131
- [`& .${c.columnHeaderTitleContainer}`]: styles.columnHeaderTitleContainer
132
- }, {
133
- [`& .${c.columnHeaderTitleContainerContent}`]: styles.columnHeaderTitleContainerContent
134
- }, {
135
- [`& .${c.columnSeparator}`]: styles.columnSeparator
136
- }, {
137
- [`& .${c['columnSeparator--resizable']}`]: styles['columnSeparator--resizable']
138
- }, {
139
- [`& .${c['columnSeparator--resizing']}`]: styles['columnSeparator--resizing']
140
- }, {
141
- [`& .${c['columnSeparator--sideLeft']}`]: styles['columnSeparator--sideLeft']
142
- }, {
143
- [`& .${c['columnSeparator--sideRight']}`]: styles['columnSeparator--sideRight']
144
- }, {
145
- [`& .${c['container--bottom']}`]: styles['container--bottom']
146
- }, {
147
- [`& .${c['container--top']}`]: styles['container--top']
148
- }, {
149
- [`& .${c.detailPanelToggleCell}`]: styles.detailPanelToggleCell
150
- }, {
151
- [`& .${c['detailPanelToggleCell--expanded']}`]: styles['detailPanelToggleCell--expanded']
152
- }, {
153
- [`& .${c.editBooleanCell}`]: styles.editBooleanCell
154
- }, {
155
- [`& .${c.filterIcon}`]: styles.filterIcon
156
- }, {
157
- [`& .${c['filler--borderBottom']}`]: styles['filler--borderBottom']
158
- }, {
159
- [`& .${c['filler--pinnedLeft']}`]: styles['filler--pinnedLeft']
160
- }, {
161
- [`& .${c['filler--pinnedRight']}`]: styles['filler--pinnedRight']
162
- }, {
163
- [`& .${c.groupingCriteriaCell}`]: styles.groupingCriteriaCell
164
- }, {
165
- [`& .${c.groupingCriteriaCellLoadingContainer}`]: styles.groupingCriteriaCellLoadingContainer
166
- }, {
167
- [`& .${c.groupingCriteriaCellToggle}`]: styles.groupingCriteriaCellToggle
168
- }, {
169
- [`& .${c.headerFilterRow}`]: styles.headerFilterRow
170
- }, {
171
- [`& .${c.iconSeparator}`]: styles.iconSeparator
172
- }, {
173
- [`& .${c.menuIcon}`]: styles.menuIcon
174
- }, {
175
- [`& .${c.menuIconButton}`]: styles.menuIconButton
176
- }, {
177
- [`& .${c.menuList}`]: styles.menuList
178
- }, {
179
- [`& .${c.menuOpen}`]: styles.menuOpen
180
- }, {
181
- [`& .${c.overlayWrapperInner}`]: styles.overlayWrapperInner
182
- }, {
183
- [`& .${c.pinnedRows}`]: styles.pinnedRows
184
- }, {
185
- [`& .${c['pinnedRows--bottom']}`]: styles['pinnedRows--bottom']
186
- }, {
187
- [`& .${c['pinnedRows--top']}`]: styles['pinnedRows--top']
188
- }, {
189
- [`& .${c.row}`]: styles.row
190
- }, {
191
- [`& .${c['row--borderBottom']}`]: styles['row--borderBottom']
192
- }, {
193
- [`& .${c['row--detailPanelExpanded']}`]: styles['row--detailPanelExpanded']
194
- }, {
195
- [`& .${c['row--dragging']}`]: styles['row--dragging']
196
- }, {
197
- [`& .${c['row--dynamicHeight']}`]: styles['row--dynamicHeight']
198
- }, {
199
- [`& .${c['row--editable']}`]: styles['row--editable']
200
- }, {
201
- [`& .${c['row--editing']}`]: styles['row--editing']
202
- }, {
203
- [`& .${c['row--firstVisible']}`]: styles['row--firstVisible']
204
- }, {
205
- [`& .${c['row--lastVisible']}`]: styles['row--lastVisible']
206
- }, {
207
- [`& .${c.rowReorderCell}`]: styles.rowReorderCell
208
- }, {
209
- [`& .${c['rowReorderCell--draggable']}`]: styles['rowReorderCell--draggable']
210
- }, {
211
- [`& .${c.rowReorderCellContainer}`]: styles.rowReorderCellContainer
212
- }, {
213
- [`& .${c.rowReorderCellPlaceholder}`]: styles.rowReorderCellPlaceholder
214
- }, {
215
- [`& .${c.rowSkeleton}`]: styles.rowSkeleton
216
- }, {
217
- [`& .${c.scrollbar}`]: styles.scrollbar
218
- }, {
219
- [`& .${c['scrollbar--horizontal']}`]: styles['scrollbar--horizontal']
220
- }, {
221
- [`& .${c['scrollbar--vertical']}`]: styles['scrollbar--vertical']
222
- }, {
223
- [`& .${c.scrollbarFiller}`]: styles.scrollbarFiller
224
- }, {
225
- [`& .${c['scrollbarFiller--pinnedRight']}`]: styles['scrollbarFiller--pinnedRight']
226
- }, {
227
- [`& .${c.sortIcon}`]: styles.sortIcon
228
- }, {
229
- [`& .${c.treeDataGroupingCell}`]: styles.treeDataGroupingCell
230
- }, {
231
- [`& .${c.treeDataGroupingCellLoadingContainer}`]: styles.treeDataGroupingCellLoadingContainer
232
- }, {
233
- [`& .${c.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle
234
- }, {
235
- [`& .${c.withBorderColor}`]: styles.withBorderColor
236
- }, {
237
- [`& .${c['row--beingDragged']}`]: styles['row--beingDragged']
238
- }]
26
+ overridesResolver: (props, styles) => {
27
+ // Root overrides
28
+ const overrides = [styles.root];
29
+ elementOverrides.root.forEach(key => {
30
+ overrides.push({
31
+ [`&.${c[key]}`]: styles[key]
32
+ });
33
+ });
34
+
35
+ // Child element overrides
36
+ // - Only declare overrides here for class names that are not applied to `styled` components.
37
+ // - For `styled` components, declare overrides in the component itself.
38
+ elementOverrides.children.forEach(key => {
39
+ overrides.push({
40
+ [`& .${c[key]}`]: styles[key]
41
+ });
42
+ });
43
+ return overrides;
44
+ }
239
45
  })(() => {
240
46
  const apiRef = useGridPrivateApiContext();
241
47
  const shouldShowBorderTopRightRadius = 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 };