@mui/x-data-grid 8.5.3 → 8.6.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,113 @@
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
+ ## 8.6.0
9
+
10
+ _Jun 27, 2025_
11
+
12
+ We'd like to extend a big thank you to the 12 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 📊 Add export menu to charts toolbar
15
+ - 📅 Add `usePickerAdapter` hook to access the date adapter.
16
+
17
+ You can use the adapter in your custom components if you need them to work with multiple date libraries — [Learn more](https://mui.com/x/react-date-pickers/custom-components/#access-date-adapter).
18
+ - 🌎 Improve Danish (da-DK) locale
19
+ - 🌎 Improve German (de-DE) locale
20
+
21
+ Special thanks go out to the community members for their valuable contributions:
22
+ @ShahrazH, @vadimka123
23
+
24
+ The following are all team members who have contributed to this release:
25
+ @arminmeh, @bernardobelchior, @JCQuintas, @KenanYusuf, @LukasTy, @MBilalShafi, @michelengelen, @noraleonte, @rita-codes, @sai6855
26
+
27
+ ### Data Grid
28
+
29
+ #### `@mui/x-data-grid@8.6.0`
30
+
31
+ - [DataGrid] Fix `label` type in `GridActionsCellItem` type (#18175) @sai6855
32
+ - [DataGrid] Fix grid menu not closing when pressing escape/tab (#18300) @KenanYusuf
33
+ - [l10n] Improve Danish (da-DK) locale (#18428) @ShahrazH
34
+ - [l10n] Improve German (de-DE) locale (#18388) @omalyutin
35
+
36
+ #### `@mui/x-data-grid-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
37
+
38
+ Same changes as in `@mui/x-data-grid@8.6.0`, plus:
39
+
40
+ - [DataGridPro] Fix lazy loading params calculated from rendering context (#18460) @arminmeh
41
+
42
+ #### `@mui/x-data-grid-premium@8.6.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link "Premium plan")
43
+
44
+ Same changes as in `@mui/x-data-grid-pro@8.6.0`.
45
+
46
+ ### Date and Time Pickers
47
+
48
+ #### `@mui/x-date-pickers@8.6.0`
49
+
50
+ - [pickers] Add `usePickerAdapter` hook (#18457) @LukasTy
51
+ - [pickers] Fix to use latest `value` when updating `lastCommittedValue` in internal state (#18518) @LukasTy
52
+ - [pickers] Use `usePickerAdapter` hook internally instead of `useUtils` (#18465) @LukasTy
53
+
54
+ #### `@mui/x-date-pickers-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
55
+
56
+ Same changes as in `@mui/x-date-pickers@8.6.0`.
57
+
58
+ ### Charts
59
+
60
+ #### `@mui/x-charts@8.6.0`
61
+
62
+ - [charts] Add `data-series` to charts legend item (#18414) @bernardobelchior
63
+ - [charts] Add `data-series` to bar charts (#18413) @bernardobelchior
64
+ - [charts] Add `data-series` to elements of line chart (#18409) @bernardobelchior
65
+ - [charts] Add `data-series` to pie charts (#18432) @bernardobelchior
66
+ - [charts] Fix missing key in bar plot (#18502) @bernardobelchior
67
+ - [charts] Split axis utils from main file (#18517) @JCQuintas
68
+ - [charts] Improve touch behavior for polar axis (#18531) @JCQuintas
69
+ - [charts] Add `isElementInside` helper (#18530) @JCQuintas
70
+
71
+ #### `@mui/x-charts-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
72
+
73
+ Same changes as in `@mui/x-charts@8.6.0`, plus:
74
+
75
+ - [charts-pro] Add export menu to charts toolbar (#18210) @bernardobelchior
76
+ - [charts-pro] Fix export docs mentioning tooltip instead of toolbar (#18490) @bernardobelchior
77
+ - [charts-pro] Fix iframe not being removed after print export (#18500) @bernardobelchior
78
+
79
+ ### Tree View
80
+
81
+ #### `@mui/x-tree-view@8.6.0`
82
+
83
+ Internal changes.
84
+
85
+ #### `@mui/x-tree-view-pro@8.6.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link "Pro plan")
86
+
87
+ Same changes as in `@mui/x-tree-view@8.6.0`, plus:
88
+
89
+ - [tree view pro] Fix theme augmentation (#18437) @LukasTy
90
+
91
+ ### Codemod
92
+
93
+ #### `@mui/x-codemod@8.6.0`
94
+
95
+ Internal changes.
96
+
97
+ ### Docs
98
+
99
+ - [docs] Document `GridRenderContext` (#18492) @arminmeh
100
+ - [docs] Prevent stale rows to appear on sort and filter change in the lazy loading demo (#18461) @arminmeh
101
+ - [docs][pickers] Update action bar demo to use the `nextOrAccept` action (#18505) @LukasTy
102
+ - [docs] Update indeterminate checkbox section in migration guide (#18229) @michelengelen
103
+ - [docs] Data source nested pagination recipe (#14777) @MBilalShafi
104
+
105
+ ### Core
106
+
107
+ - [core] Avoid json stringify whole window object (#18512) @vadimka123
108
+
109
+ ### Miscellaneous
110
+
111
+ - [code-infra] Dynamically get pickers adapters dependencies versions (#18446) @JCQuintas
112
+ - [infra] Adjust inquirer version and usage (#18495) @michelengelen
113
+ - [infra] Use `String.raw` for creating the remote regex (#18462) @michelengelen
114
+
8
115
  ## 8.5.3
9
116
 
10
117
  _Jun 19, 2025_
@@ -148,14 +148,6 @@ function GridActionsCell(props) {
148
148
  setFocusedButtonIndex(newIndex);
149
149
  }
150
150
  };
151
- const handleListKeyDown = event => {
152
- if (event.key === 'Tab') {
153
- event.preventDefault();
154
- }
155
- if (['Tab', 'Escape'].includes(event.key)) {
156
- hideMenu();
157
- }
158
- };
159
151
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
160
152
  role: "menu",
161
153
  ref: rootRef,
@@ -192,7 +184,6 @@ function GridActionsCell(props) {
192
184
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseMenuList, {
193
185
  id: menuId,
194
186
  className: _gridClasses.gridClasses.menuList,
195
- onKeyDown: handleListKeyDown,
196
187
  "aria-labelledby": buttonId,
197
188
  autoFocusItem: true,
198
189
  children: menuButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { GridSlotProps, GridBaseIconProps } from "../../models/gridSlotsComponentsProps.js";
3
3
  interface GridActionsCellItemCommonProps {
4
- label: string;
5
4
  icon?: React.JSXElementConstructor<GridBaseIconProps> | React.ReactNode;
6
5
  /** from https://mui.com/material-ui/api/button-base/#ButtonBase-prop-component */
7
6
  component?: React.ElementType;
@@ -9,6 +8,7 @@ interface GridActionsCellItemCommonProps {
9
8
  export type GridActionsCellItemProps = GridActionsCellItemCommonProps & (({
10
9
  showInMenu?: false;
11
10
  icon: React.ReactElement<any>;
11
+ label: string;
12
12
  } & Omit<GridSlotProps['baseIconButton'], 'component'>) | ({
13
13
  showInMenu: true;
14
14
  /**
@@ -17,6 +17,7 @@ export type GridActionsCellItemProps = GridActionsCellItemCommonProps & (({
17
17
  */
18
18
  closeMenuOnClick?: boolean;
19
19
  closeMenu?: () => void;
20
+ label: React.ReactNode;
20
21
  } & Omit<GridSlotProps['baseMenuItem'], 'component'>));
21
22
  declare const GridActionsCellItem: React.ForwardRefExoticComponent<GridActionsCellItemProps> | React.ForwardRefExoticComponent<((GridActionsCellItemCommonProps & {
22
23
  showInMenu: true;
@@ -26,6 +27,7 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<GridActionsCe
26
27
  */
27
28
  closeMenuOnClick?: boolean;
28
29
  closeMenu?: () => void;
30
+ label: React.ReactNode;
29
31
  } & Omit<React.DOMAttributes<HTMLElement> & {
30
32
  [k: `aria-${string}`]: any;
31
33
  [k: `data-${string}`]: any;
@@ -44,6 +46,7 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<GridActionsCe
44
46
  } & import("@mui/x-data-grid").BaseMenuItemPropsOverrides, "component">) | Omit<GridActionsCellItemCommonProps & {
45
47
  showInMenu?: false;
46
48
  icon: React.ReactElement<any>;
49
+ label: string;
47
50
  } & Omit<Omit<import("../../models/gridBaseSlots.js").ButtonProps, "startIcon"> & {
48
51
  label?: string;
49
52
  color?: "default" | "inherit" | "primary";
@@ -75,7 +75,7 @@ process.env.NODE_ENV !== "production" ? GridActionsCellItem.propTypes = {
75
75
  component: _propTypes.default.elementType,
76
76
  disabled: _propTypes.default.bool,
77
77
  icon: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.element, _propTypes.default.func, _propTypes.default.number, _propTypes.default.object, _propTypes.default.string, _propTypes.default.bool]),
78
- label: _propTypes.default.string.isRequired,
78
+ label: _propTypes.default.node,
79
79
  showInMenu: _propTypes.default.bool,
80
80
  style: _propTypes.default.object
81
81
  } : void 0;
@@ -4,7 +4,7 @@ type MenuPosition = 'bottom-end' | 'bottom-start' | 'bottom' | 'left-end' | 'lef
4
4
  export interface GridMenuProps extends Pick<PopperProps, 'className' | 'onExited'> {
5
5
  open: boolean;
6
6
  target: HTMLElement | null;
7
- onClose: (event?: Event) => void;
7
+ onClose: (event?: React.KeyboardEvent | MouseEvent | TouchEvent) => void;
8
8
  position?: MenuPosition;
9
9
  children: React.ReactNode;
10
10
  }
@@ -15,6 +15,7 @@ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"
15
15
  var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
16
16
  var _HTMLElementType = _interopRequireDefault(require("@mui/utils/HTMLElementType"));
17
17
  var _styles = require("@mui/material/styles");
18
+ var _keyboardUtils = require("../../utils/keyboardUtils");
18
19
  var _cssVariables = require("../../constants/cssVariables");
19
20
  var _context = require("../../utils/css/context");
20
21
  var _gridClasses = require("../../constants/gridClasses");
@@ -78,6 +79,11 @@ function GridMenu(props) {
78
79
  }
79
80
  onClose(event);
80
81
  };
82
+ const handleKeyDown = event => {
83
+ if ((0, _keyboardUtils.isHideMenuKey)(event.key)) {
84
+ onClose(event);
85
+ }
86
+ };
81
87
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridMenuRoot, (0, _extends2.default)({
82
88
  as: rootProps.slots.basePopper,
83
89
  className: (0, _clsx.default)(classes.root, className, variablesClass),
@@ -88,7 +94,8 @@ function GridMenu(props) {
88
94
  placement: position,
89
95
  onClickAway: handleClickAway,
90
96
  onExited: onExited,
91
- clickAwayMouseEvent: "onMouseDown"
97
+ clickAwayMouseEvent: "onMouseDown",
98
+ onKeyDown: handleKeyDown
92
99
  }, other, rootProps.slotProps?.basePopper, {
93
100
  children: children
94
101
  }));
@@ -13,7 +13,6 @@ var _useId = _interopRequireDefault(require("@mui/utils/useId"));
13
13
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
14
14
  var _forwardRef = require("@mui/x-internals/forwardRef");
15
15
  var _densitySelector = require("../../hooks/features/density/densitySelector");
16
- var _keyboardUtils = require("../../utils/keyboardUtils");
17
16
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
18
17
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
19
18
  var _GridMenu = require("../menu/GridMenu");
@@ -71,14 +70,6 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = (0, _for
71
70
  apiRef.current.setDensity(newDensity);
72
71
  setOpen(false);
73
72
  };
74
- const handleListKeyDown = event => {
75
- if (event.key === 'Tab') {
76
- event.preventDefault();
77
- }
78
- if ((0, _keyboardUtils.isHideMenuKey)(event.key)) {
79
- setOpen(false);
80
- }
81
- };
82
73
 
83
74
  // Disable the button if the corresponding is disabled
84
75
  if (rootProps.disableDensitySelector) {
@@ -117,7 +108,6 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = (0, _for
117
108
  id: densityMenuId,
118
109
  className: _gridClasses.gridClasses.menuList,
119
110
  "aria-labelledby": densityButtonId,
120
- onKeyDown: handleListKeyDown,
121
111
  autoFocusItem: open,
122
112
  children: densityElements
123
113
  })
@@ -12,7 +12,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _useId = _interopRequireDefault(require("@mui/utils/useId"));
13
13
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
14
14
  var _forwardRef = require("@mui/x-internals/forwardRef");
15
- var _keyboardUtils = require("../../utils/keyboardUtils");
16
15
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
17
16
  var _GridMenu = require("../menu/GridMenu");
18
17
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
@@ -37,14 +36,6 @@ const GridToolbarExportContainer = exports.GridToolbarExportContainer = (0, _for
37
36
  buttonProps.onClick?.(event);
38
37
  };
39
38
  const handleMenuClose = () => setOpen(false);
40
- const handleListKeyDown = event => {
41
- if (event.key === 'Tab') {
42
- event.preventDefault();
43
- }
44
- if ((0, _keyboardUtils.isHideMenuKey)(event.key)) {
45
- handleMenuClose();
46
- }
47
- };
48
39
  if (children == null) {
49
40
  return null;
50
41
  }
@@ -75,7 +66,6 @@ const GridToolbarExportContainer = exports.GridToolbarExportContainer = (0, _for
75
66
  id: exportMenuId,
76
67
  className: _gridClasses.gridClasses.menuList,
77
68
  "aria-labelledby": exportButtonId,
78
- onKeyDown: handleListKeyDown,
79
69
  autoFocusItem: open,
80
70
  children: React.Children.map(children, child => {
81
71
  if (! /*#__PURE__*/React.isValidElement(child)) {
@@ -139,14 +139,6 @@ function GridActionsCell(props) {
139
139
  setFocusedButtonIndex(newIndex);
140
140
  }
141
141
  };
142
- const handleListKeyDown = event => {
143
- if (event.key === 'Tab') {
144
- event.preventDefault();
145
- }
146
- if (['Tab', 'Escape'].includes(event.key)) {
147
- hideMenu();
148
- }
149
- };
150
142
  return /*#__PURE__*/_jsxs("div", _extends({
151
143
  role: "menu",
152
144
  ref: rootRef,
@@ -183,7 +175,6 @@ function GridActionsCell(props) {
183
175
  children: /*#__PURE__*/_jsx(rootProps.slots.baseMenuList, {
184
176
  id: menuId,
185
177
  className: gridClasses.menuList,
186
- onKeyDown: handleListKeyDown,
187
178
  "aria-labelledby": buttonId,
188
179
  autoFocusItem: true,
189
180
  children: menuButtons.map((button, index) => /*#__PURE__*/React.cloneElement(button, {
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { GridSlotProps, GridBaseIconProps } from "../../models/gridSlotsComponentsProps.js";
3
3
  interface GridActionsCellItemCommonProps {
4
- label: string;
5
4
  icon?: React.JSXElementConstructor<GridBaseIconProps> | React.ReactNode;
6
5
  /** from https://mui.com/material-ui/api/button-base/#ButtonBase-prop-component */
7
6
  component?: React.ElementType;
@@ -9,6 +8,7 @@ interface GridActionsCellItemCommonProps {
9
8
  export type GridActionsCellItemProps = GridActionsCellItemCommonProps & (({
10
9
  showInMenu?: false;
11
10
  icon: React.ReactElement<any>;
11
+ label: string;
12
12
  } & Omit<GridSlotProps['baseIconButton'], 'component'>) | ({
13
13
  showInMenu: true;
14
14
  /**
@@ -17,6 +17,7 @@ export type GridActionsCellItemProps = GridActionsCellItemCommonProps & (({
17
17
  */
18
18
  closeMenuOnClick?: boolean;
19
19
  closeMenu?: () => void;
20
+ label: React.ReactNode;
20
21
  } & Omit<GridSlotProps['baseMenuItem'], 'component'>));
21
22
  declare const GridActionsCellItem: React.ForwardRefExoticComponent<GridActionsCellItemProps> | React.ForwardRefExoticComponent<((GridActionsCellItemCommonProps & {
22
23
  showInMenu: true;
@@ -26,6 +27,7 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<GridActionsCe
26
27
  */
27
28
  closeMenuOnClick?: boolean;
28
29
  closeMenu?: () => void;
30
+ label: React.ReactNode;
29
31
  } & Omit<React.DOMAttributes<HTMLElement> & {
30
32
  [k: `aria-${string}`]: any;
31
33
  [k: `data-${string}`]: any;
@@ -44,6 +46,7 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<GridActionsCe
44
46
  } & import("@mui/x-data-grid").BaseMenuItemPropsOverrides, "component">) | Omit<GridActionsCellItemCommonProps & {
45
47
  showInMenu?: false;
46
48
  icon: React.ReactElement<any>;
49
+ label: string;
47
50
  } & Omit<Omit<import("../../models/gridBaseSlots.js").ButtonProps, "startIcon"> & {
48
51
  label?: string;
49
52
  color?: "default" | "inherit" | "primary";
@@ -67,7 +67,7 @@ process.env.NODE_ENV !== "production" ? GridActionsCellItem.propTypes = {
67
67
  component: PropTypes.elementType,
68
68
  disabled: PropTypes.bool,
69
69
  icon: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.element, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),
70
- label: PropTypes.string.isRequired,
70
+ label: PropTypes.node,
71
71
  showInMenu: PropTypes.bool,
72
72
  style: PropTypes.object
73
73
  } : void 0;
@@ -4,7 +4,7 @@ type MenuPosition = 'bottom-end' | 'bottom-start' | 'bottom' | 'left-end' | 'lef
4
4
  export interface GridMenuProps extends Pick<PopperProps, 'className' | 'onExited'> {
5
5
  open: boolean;
6
6
  target: HTMLElement | null;
7
- onClose: (event?: Event) => void;
7
+ onClose: (event?: React.KeyboardEvent | MouseEvent | TouchEvent) => void;
8
8
  position?: MenuPosition;
9
9
  children: React.ReactNode;
10
10
  }
@@ -8,6 +8,7 @@ import composeClasses from '@mui/utils/composeClasses';
8
8
  import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
9
9
  import HTMLElementType from '@mui/utils/HTMLElementType';
10
10
  import { styled } from '@mui/material/styles';
11
+ import { isHideMenuKey } from "../../utils/keyboardUtils.js";
11
12
  import { vars } from "../../constants/cssVariables.js";
12
13
  import { useCSSVariablesClass } from "../../utils/css/context.js";
13
14
  import { getDataGridUtilityClass, gridClasses } from "../../constants/gridClasses.js";
@@ -70,6 +71,11 @@ function GridMenu(props) {
70
71
  }
71
72
  onClose(event);
72
73
  };
74
+ const handleKeyDown = event => {
75
+ if (isHideMenuKey(event.key)) {
76
+ onClose(event);
77
+ }
78
+ };
73
79
  return /*#__PURE__*/_jsx(GridMenuRoot, _extends({
74
80
  as: rootProps.slots.basePopper,
75
81
  className: clsx(classes.root, className, variablesClass),
@@ -80,7 +86,8 @@ function GridMenu(props) {
80
86
  placement: position,
81
87
  onClickAway: handleClickAway,
82
88
  onExited: onExited,
83
- clickAwayMouseEvent: "onMouseDown"
89
+ clickAwayMouseEvent: "onMouseDown",
90
+ onKeyDown: handleKeyDown
84
91
  }, other, rootProps.slotProps?.basePopper, {
85
92
  children: children
86
93
  }));
@@ -5,7 +5,6 @@ import useId from '@mui/utils/useId';
5
5
  import useForkRef from '@mui/utils/useForkRef';
6
6
  import { forwardRef } from '@mui/x-internals/forwardRef';
7
7
  import { gridDensitySelector } from "../../hooks/features/density/densitySelector.js";
8
- import { isHideMenuKey } from "../../utils/keyboardUtils.js";
9
8
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
10
9
  import { useGridSelector } from "../../hooks/utils/useGridSelector.js";
11
10
  import { GridMenu } from "../menu/GridMenu.js";
@@ -63,14 +62,6 @@ const GridToolbarDensitySelector = forwardRef(function GridToolbarDensitySelecto
63
62
  apiRef.current.setDensity(newDensity);
64
63
  setOpen(false);
65
64
  };
66
- const handleListKeyDown = event => {
67
- if (event.key === 'Tab') {
68
- event.preventDefault();
69
- }
70
- if (isHideMenuKey(event.key)) {
71
- setOpen(false);
72
- }
73
- };
74
65
 
75
66
  // Disable the button if the corresponding is disabled
76
67
  if (rootProps.disableDensitySelector) {
@@ -109,7 +100,6 @@ const GridToolbarDensitySelector = forwardRef(function GridToolbarDensitySelecto
109
100
  id: densityMenuId,
110
101
  className: gridClasses.menuList,
111
102
  "aria-labelledby": densityButtonId,
112
- onKeyDown: handleListKeyDown,
113
103
  autoFocusItem: open,
114
104
  children: densityElements
115
105
  })
@@ -4,7 +4,6 @@ import PropTypes from 'prop-types';
4
4
  import useId from '@mui/utils/useId';
5
5
  import useForkRef from '@mui/utils/useForkRef';
6
6
  import { forwardRef } from '@mui/x-internals/forwardRef';
7
- import { isHideMenuKey } from "../../utils/keyboardUtils.js";
8
7
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
9
8
  import { GridMenu } from "../menu/GridMenu.js";
10
9
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
@@ -29,14 +28,6 @@ const GridToolbarExportContainer = forwardRef(function GridToolbarExportContaine
29
28
  buttonProps.onClick?.(event);
30
29
  };
31
30
  const handleMenuClose = () => setOpen(false);
32
- const handleListKeyDown = event => {
33
- if (event.key === 'Tab') {
34
- event.preventDefault();
35
- }
36
- if (isHideMenuKey(event.key)) {
37
- handleMenuClose();
38
- }
39
- };
40
31
  if (children == null) {
41
32
  return null;
42
33
  }
@@ -67,7 +58,6 @@ const GridToolbarExportContainer = forwardRef(function GridToolbarExportContaine
67
58
  id: exportMenuId,
68
59
  className: gridClasses.menuList,
69
60
  "aria-labelledby": exportButtonId,
70
- onKeyDown: handleListKeyDown,
71
61
  autoFocusItem: open,
72
62
  children: React.Children.map(children, child => {
73
63
  if (! /*#__PURE__*/React.isValidElement(child)) {
@@ -357,7 +357,7 @@ export const useGridFocus = (apiRef, props) => {
357
357
  paginationMode: props.paginationMode
358
358
  });
359
359
  const rowIsInCurrentPage = currentPage.rows.find(row => row.id === currentFocusedCell.id);
360
- if (rowIsInCurrentPage) {
360
+ if (rowIsInCurrentPage || currentPage.rows.length === 0) {
361
361
  return;
362
362
  }
363
363
  const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
package/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.5.3
2
+ * @mui/x-data-grid v8.6.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -110,12 +110,12 @@ const daDKGrid = {
110
110
  columnMenuLabel: 'Menu',
111
111
  // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
112
112
  columnMenuShowColumns: 'Vis kolonner',
113
- columnMenuManageColumns: 'Administrer kolonner',
114
- columnMenuFilter: 'Filtrer',
113
+ columnMenuManageColumns: 'Administrér kolonner',
114
+ columnMenuFilter: 'Filtrér',
115
115
  columnMenuHideColumn: 'Skjul kolonne',
116
116
  columnMenuUnsort: 'Fjern sortering',
117
- columnMenuSortAsc: 'Sorter stigende',
118
- columnMenuSortDesc: 'Sorter faldende',
117
+ columnMenuSortAsc: 'Sortér stigende',
118
+ columnMenuSortDesc: 'Sortér faldende',
119
119
  // columnMenuManagePivot: 'Manage pivot',
120
120
 
121
121
  // Column header text
@@ -5,8 +5,7 @@ const deDEGrid = {
5
5
  noResultsOverlayLabel: 'Keine Ergebnisse gefunden.',
6
6
  noColumnsOverlayLabel: 'Keine Spalten',
7
7
  noColumnsOverlayManageColumns: 'Spalten verwalten',
8
- // emptyPivotOverlayLabel: 'Add fields to rows, columns, and values to create a pivot table',
9
-
8
+ emptyPivotOverlayLabel: 'Felder zu Zeilen, Spalten und Werten hinzufügen, um eine Pivot-Tabelle zu erstellen',
10
9
  // Density selector toolbar button text
11
10
  toolbarDensity: 'Zeilenhöhe',
12
11
  toolbarDensityLabel: 'Zeilenhöhe',
@@ -33,11 +32,9 @@ const deDEGrid = {
33
32
  toolbarExportPrint: 'Drucken',
34
33
  toolbarExportExcel: 'Download als Excel',
35
34
  // Toolbar pivot button
36
- // toolbarPivot: 'Pivot',
37
-
35
+ toolbarPivot: 'Pivot',
38
36
  // Toolbar AI Assistant button
39
- // toolbarAssistant: 'AI Assistant',
40
-
37
+ toolbarAssistant: 'KI-Assistent',
41
38
  // Columns management text
42
39
  columnsManagementSearchTitle: 'Suche',
43
40
  columnsManagementNoColumns: 'Keine Spalten',
@@ -114,8 +111,7 @@ const deDEGrid = {
114
111
  columnMenuUnsort: 'Sortierung deaktivieren',
115
112
  columnMenuSortAsc: 'Sortiere aufsteigend',
116
113
  columnMenuSortDesc: 'Sortiere absteigend',
117
- // columnMenuManagePivot: 'Manage pivot',
118
-
114
+ columnMenuManagePivot: 'Pivot verwalten',
119
115
  // Column header text
120
116
  columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} aktive Filter` : `${count} aktiver Filter`,
121
117
  columnHeaderFiltersLabel: 'Zeige Filter',
@@ -190,80 +186,76 @@ const deDEGrid = {
190
186
  aggregationFunctionLabelMax: 'Maximum',
191
187
  aggregationFunctionLabelSize: 'Anzahl',
192
188
  // Pivot panel
193
- // pivotToggleLabel: 'Pivot',
194
- // pivotRows: 'Rows',
195
- // pivotColumns: 'Columns',
196
- // pivotValues: 'Values',
197
- // pivotCloseButton: 'Close pivot settings',
198
- // pivotSearchButton: 'Search fields',
199
- // pivotSearchControlPlaceholder: 'Search fields',
200
- // pivotSearchControlLabel: 'Search fields',
201
- // pivotSearchControlClear: 'Clear search',
202
- // pivotNoFields: 'No fields',
203
- // pivotMenuMoveUp: 'Move up',
204
- // pivotMenuMoveDown: 'Move down',
205
- // pivotMenuMoveToTop: 'Move to top',
206
- // pivotMenuMoveToBottom: 'Move to bottom',
207
- // pivotMenuRows: 'Rows',
208
- // pivotMenuColumns: 'Columns',
209
- // pivotMenuValues: 'Values',
210
- // pivotMenuOptions: 'Field options',
211
- // pivotMenuAddToRows: 'Add to Rows',
212
- // pivotMenuAddToColumns: 'Add to Columns',
213
- // pivotMenuAddToValues: 'Add to Values',
214
- // pivotMenuRemove: 'Remove',
215
- // pivotDragToRows: 'Drag here to create rows',
216
- // pivotDragToColumns: 'Drag here to create columns',
217
- // pivotDragToValues: 'Drag here to create values',
218
- // pivotYearColumnHeaderName: '(Year)',
219
- // pivotQuarterColumnHeaderName: '(Quarter)',
220
-
189
+ pivotToggleLabel: 'Pivot',
190
+ pivotRows: 'Zeilen',
191
+ pivotColumns: 'Spalten',
192
+ pivotValues: 'Werte',
193
+ pivotCloseButton: 'Pivot-Einstellungen schließen',
194
+ pivotSearchButton: 'Felder suchen',
195
+ pivotSearchControlPlaceholder: 'Felder suchen',
196
+ pivotSearchControlLabel: 'Felder suchen',
197
+ pivotSearchControlClear: 'Suche löschen',
198
+ pivotNoFields: 'Keine Felder',
199
+ pivotMenuMoveUp: 'Nach oben',
200
+ pivotMenuMoveDown: 'Nach unten',
201
+ pivotMenuMoveToTop: 'An den Anfang',
202
+ pivotMenuMoveToBottom: 'An das Ende',
203
+ pivotMenuRows: 'Zeilen',
204
+ pivotMenuColumns: 'Spalten',
205
+ pivotMenuValues: 'Werte',
206
+ pivotMenuOptions: 'Feldoptionen',
207
+ pivotMenuAddToRows: 'Zu Zeilen hinzufügen',
208
+ pivotMenuAddToColumns: 'Zu Spalten hinzufügen',
209
+ pivotMenuAddToValues: 'Zu Werten hinzufügen',
210
+ pivotMenuRemove: 'Entfernen',
211
+ pivotDragToRows: 'Hier hinziehen, um Zeilen zu erstellen',
212
+ pivotDragToColumns: 'Hier hinziehen, um Spalten zu erstellen',
213
+ pivotDragToValues: 'Hier hinziehen, um Werte zu erstellen',
214
+ pivotYearColumnHeaderName: '(Jahr)',
215
+ pivotQuarterColumnHeaderName: '(Quartal)',
221
216
  // AI Assistant panel
222
- // aiAssistantPanelTitle: 'AI Assistant',
223
- // aiAssistantPanelClose: 'Close AI Assistant',
224
- // aiAssistantPanelNewConversation: 'New conversation',
225
- // aiAssistantPanelConversationHistory: 'Conversation history',
226
- // aiAssistantPanelEmptyConversation: 'No prompt history',
227
- // aiAssistantSuggestions: 'Suggestions',
228
-
217
+ aiAssistantPanelTitle: 'KI-Assistent',
218
+ aiAssistantPanelClose: 'KI-Assistent schließen',
219
+ aiAssistantPanelNewConversation: 'Neue Unterhaltung',
220
+ aiAssistantPanelConversationHistory: 'Unterhaltungsverlauf',
221
+ aiAssistantPanelEmptyConversation: 'Kein Prompt-Verlauf',
222
+ aiAssistantSuggestions: 'Vorschläge',
229
223
  // Prompt field
230
224
  promptFieldLabel: 'Prompteingabe',
231
225
  promptFieldPlaceholder: 'Prompt eingeben…',
232
226
  promptFieldPlaceholderWithRecording: 'Prompt eingeben oder aufnehmen…',
233
227
  promptFieldPlaceholderListening: 'Hört Prompteingabe zu…',
234
- // promptFieldSpeechRecognitionNotSupported: 'Speech recognition is not supported in this browser',
228
+ promptFieldSpeechRecognitionNotSupported: 'Spracherkennung wird in diesem Browser nicht unterstützt',
235
229
  promptFieldSend: 'Senden',
236
230
  promptFieldRecord: 'Aufnahme starten',
237
- promptFieldStopRecording: 'Aufnahme stoppen'
238
-
231
+ promptFieldStopRecording: 'Aufnahme stoppen',
239
232
  // Prompt
240
- // promptRerun: 'Run again',
241
- // promptProcessing: 'Processing…',
242
- // promptAppliedChanges: 'Applied changes',
243
-
233
+ promptRerun: 'Erneut ausführen',
234
+ promptProcessing: 'Verarbeitung…',
235
+ promptAppliedChanges: 'Änderungen angewendet',
244
236
  // Prompt changes
245
- // promptChangeGroupDescription: (column: string) => `Group by ${column}`,
246
- // promptChangeAggregationLabel: (column: string, aggregation: string) => `${column} (${aggregation})`,
247
- // promptChangeAggregationDescription: (column: string, aggregation: string) => `Aggregate ${column} (${aggregation})`,
248
- // promptChangeFilterLabel: (column: string, operator: string, value: string) => {
249
- // if (operator === 'is any of') {
250
- // return `${column} is any of: ${value}`;
251
- // }
252
- // return `${column} ${operator} ${value}`;
253
- // },
254
- // promptChangeFilterDescription: (column: string, operator: string, value: string) => {
255
- // if (operator === 'is any of') {
256
- // return `Filter where ${column} is any of: ${value}`;
257
- // }
258
- // return `Filter where ${column} ${operator} ${value}`;
259
- // },
260
- // promptChangeSortDescription: (column: string, direction: string) => `Sort by ${column} (${direction})`,
261
- // promptChangePivotEnableLabel: 'Pivot',
262
- // promptChangePivotEnableDescription: 'Enable pivot',
263
- // promptChangePivotColumnsLabel: (count: number) => `Columns (${count})`,
264
- // promptChangePivotColumnsDescription: (column: string, direction: string) => `${column}${direction ? ` (${direction})` : ''}`,
265
- // promptChangePivotRowsLabel: (count: number) => `Rows (${count})`,
266
- // promptChangePivotValuesLabel: (count: number) => `Values (${count})`,
267
- // promptChangePivotValuesDescription: (column: string, aggregation: string) => `${column} (${aggregation})`,
237
+ promptChangeGroupDescription: column => `Gruppieren nach ${column}`,
238
+ promptChangeAggregationLabel: (column, aggregation) => `${column} (${aggregation})`,
239
+ promptChangeAggregationDescription: (column, aggregation) => `${column} aggregieren (${aggregation})`,
240
+ promptChangeFilterLabel: (column, operator, value) => {
241
+ if (operator === 'is any of') {
242
+ return `${column} entspricht einem der Werte: ${value}`;
243
+ }
244
+ return `${column} ${operator} ${value}`;
245
+ },
246
+ promptChangeFilterDescription: (column, operator, value) => {
247
+ if (operator === 'is any of') {
248
+ return `Filtern, bei dem ${column} einem der folgenden Werte entspricht: ${value}`;
249
+ }
250
+ return `Filtern wo ${column} ${operator} ${value}`;
251
+ },
252
+ promptChangeSortDescription: (column, direction) => `Sortieren nach ${column} (${direction})`,
253
+ promptChangePivotEnableLabel: 'Pivot',
254
+ promptChangePivotEnableDescription: 'Pivot aktivieren',
255
+ promptChangePivotColumnsLabel: count => `Spalten (${count})`,
256
+ promptChangePivotColumnsDescription: (column, direction) => `${column}${direction ? ` (${direction})` : ''}`,
257
+ promptChangePivotRowsLabel: count => `Zeilen (${count})`,
258
+ promptChangePivotValuesLabel: count => `Werte (${count})`,
259
+ promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`
268
260
  };
269
261
  export const deDE = getGridLocalization(deDEGrid);
@@ -2,6 +2,10 @@ export interface GridColumnsRenderContext {
2
2
  firstColumnIndex: number;
3
3
  lastColumnIndex: number;
4
4
  }
5
+ /**
6
+ * Provides the current render context range for rows and columns.
7
+ * End index is exclusive - [firstRowIndex, lastRowIndex) and [firstColumnIndex, lastColumnIndex)
8
+ */
5
9
  export interface GridRenderContext extends GridColumnsRenderContext {
6
10
  firstRowIndex: number;
7
11
  lastRowIndex: number;
@@ -366,7 +366,7 @@ const useGridFocus = (apiRef, props) => {
366
366
  paginationMode: props.paginationMode
367
367
  });
368
368
  const rowIsInCurrentPage = currentPage.rows.find(row => row.id === currentFocusedCell.id);
369
- if (rowIsInCurrentPage) {
369
+ if (rowIsInCurrentPage || currentPage.rows.length === 0) {
370
370
  return;
371
371
  }
372
372
  const visibleColumns = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v8.5.3
2
+ * @mui/x-data-grid v8.6.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/locales/daDK.js CHANGED
@@ -116,12 +116,12 @@ const daDKGrid = {
116
116
  columnMenuLabel: 'Menu',
117
117
  // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
118
118
  columnMenuShowColumns: 'Vis kolonner',
119
- columnMenuManageColumns: 'Administrer kolonner',
120
- columnMenuFilter: 'Filtrer',
119
+ columnMenuManageColumns: 'Administrér kolonner',
120
+ columnMenuFilter: 'Filtrér',
121
121
  columnMenuHideColumn: 'Skjul kolonne',
122
122
  columnMenuUnsort: 'Fjern sortering',
123
- columnMenuSortAsc: 'Sorter stigende',
124
- columnMenuSortDesc: 'Sorter faldende',
123
+ columnMenuSortAsc: 'Sortér stigende',
124
+ columnMenuSortDesc: 'Sortér faldende',
125
125
  // columnMenuManagePivot: 'Manage pivot',
126
126
 
127
127
  // Column header text
package/locales/deDE.js CHANGED
@@ -11,8 +11,7 @@ const deDEGrid = {
11
11
  noResultsOverlayLabel: 'Keine Ergebnisse gefunden.',
12
12
  noColumnsOverlayLabel: 'Keine Spalten',
13
13
  noColumnsOverlayManageColumns: 'Spalten verwalten',
14
- // emptyPivotOverlayLabel: 'Add fields to rows, columns, and values to create a pivot table',
15
-
14
+ emptyPivotOverlayLabel: 'Felder zu Zeilen, Spalten und Werten hinzufügen, um eine Pivot-Tabelle zu erstellen',
16
15
  // Density selector toolbar button text
17
16
  toolbarDensity: 'Zeilenhöhe',
18
17
  toolbarDensityLabel: 'Zeilenhöhe',
@@ -39,11 +38,9 @@ const deDEGrid = {
39
38
  toolbarExportPrint: 'Drucken',
40
39
  toolbarExportExcel: 'Download als Excel',
41
40
  // Toolbar pivot button
42
- // toolbarPivot: 'Pivot',
43
-
41
+ toolbarPivot: 'Pivot',
44
42
  // Toolbar AI Assistant button
45
- // toolbarAssistant: 'AI Assistant',
46
-
43
+ toolbarAssistant: 'KI-Assistent',
47
44
  // Columns management text
48
45
  columnsManagementSearchTitle: 'Suche',
49
46
  columnsManagementNoColumns: 'Keine Spalten',
@@ -120,8 +117,7 @@ const deDEGrid = {
120
117
  columnMenuUnsort: 'Sortierung deaktivieren',
121
118
  columnMenuSortAsc: 'Sortiere aufsteigend',
122
119
  columnMenuSortDesc: 'Sortiere absteigend',
123
- // columnMenuManagePivot: 'Manage pivot',
124
-
120
+ columnMenuManagePivot: 'Pivot verwalten',
125
121
  // Column header text
126
122
  columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} aktive Filter` : `${count} aktiver Filter`,
127
123
  columnHeaderFiltersLabel: 'Zeige Filter',
@@ -196,80 +192,76 @@ const deDEGrid = {
196
192
  aggregationFunctionLabelMax: 'Maximum',
197
193
  aggregationFunctionLabelSize: 'Anzahl',
198
194
  // Pivot panel
199
- // pivotToggleLabel: 'Pivot',
200
- // pivotRows: 'Rows',
201
- // pivotColumns: 'Columns',
202
- // pivotValues: 'Values',
203
- // pivotCloseButton: 'Close pivot settings',
204
- // pivotSearchButton: 'Search fields',
205
- // pivotSearchControlPlaceholder: 'Search fields',
206
- // pivotSearchControlLabel: 'Search fields',
207
- // pivotSearchControlClear: 'Clear search',
208
- // pivotNoFields: 'No fields',
209
- // pivotMenuMoveUp: 'Move up',
210
- // pivotMenuMoveDown: 'Move down',
211
- // pivotMenuMoveToTop: 'Move to top',
212
- // pivotMenuMoveToBottom: 'Move to bottom',
213
- // pivotMenuRows: 'Rows',
214
- // pivotMenuColumns: 'Columns',
215
- // pivotMenuValues: 'Values',
216
- // pivotMenuOptions: 'Field options',
217
- // pivotMenuAddToRows: 'Add to Rows',
218
- // pivotMenuAddToColumns: 'Add to Columns',
219
- // pivotMenuAddToValues: 'Add to Values',
220
- // pivotMenuRemove: 'Remove',
221
- // pivotDragToRows: 'Drag here to create rows',
222
- // pivotDragToColumns: 'Drag here to create columns',
223
- // pivotDragToValues: 'Drag here to create values',
224
- // pivotYearColumnHeaderName: '(Year)',
225
- // pivotQuarterColumnHeaderName: '(Quarter)',
226
-
195
+ pivotToggleLabel: 'Pivot',
196
+ pivotRows: 'Zeilen',
197
+ pivotColumns: 'Spalten',
198
+ pivotValues: 'Werte',
199
+ pivotCloseButton: 'Pivot-Einstellungen schließen',
200
+ pivotSearchButton: 'Felder suchen',
201
+ pivotSearchControlPlaceholder: 'Felder suchen',
202
+ pivotSearchControlLabel: 'Felder suchen',
203
+ pivotSearchControlClear: 'Suche löschen',
204
+ pivotNoFields: 'Keine Felder',
205
+ pivotMenuMoveUp: 'Nach oben',
206
+ pivotMenuMoveDown: 'Nach unten',
207
+ pivotMenuMoveToTop: 'An den Anfang',
208
+ pivotMenuMoveToBottom: 'An das Ende',
209
+ pivotMenuRows: 'Zeilen',
210
+ pivotMenuColumns: 'Spalten',
211
+ pivotMenuValues: 'Werte',
212
+ pivotMenuOptions: 'Feldoptionen',
213
+ pivotMenuAddToRows: 'Zu Zeilen hinzufügen',
214
+ pivotMenuAddToColumns: 'Zu Spalten hinzufügen',
215
+ pivotMenuAddToValues: 'Zu Werten hinzufügen',
216
+ pivotMenuRemove: 'Entfernen',
217
+ pivotDragToRows: 'Hier hinziehen, um Zeilen zu erstellen',
218
+ pivotDragToColumns: 'Hier hinziehen, um Spalten zu erstellen',
219
+ pivotDragToValues: 'Hier hinziehen, um Werte zu erstellen',
220
+ pivotYearColumnHeaderName: '(Jahr)',
221
+ pivotQuarterColumnHeaderName: '(Quartal)',
227
222
  // AI Assistant panel
228
- // aiAssistantPanelTitle: 'AI Assistant',
229
- // aiAssistantPanelClose: 'Close AI Assistant',
230
- // aiAssistantPanelNewConversation: 'New conversation',
231
- // aiAssistantPanelConversationHistory: 'Conversation history',
232
- // aiAssistantPanelEmptyConversation: 'No prompt history',
233
- // aiAssistantSuggestions: 'Suggestions',
234
-
223
+ aiAssistantPanelTitle: 'KI-Assistent',
224
+ aiAssistantPanelClose: 'KI-Assistent schließen',
225
+ aiAssistantPanelNewConversation: 'Neue Unterhaltung',
226
+ aiAssistantPanelConversationHistory: 'Unterhaltungsverlauf',
227
+ aiAssistantPanelEmptyConversation: 'Kein Prompt-Verlauf',
228
+ aiAssistantSuggestions: 'Vorschläge',
235
229
  // Prompt field
236
230
  promptFieldLabel: 'Prompteingabe',
237
231
  promptFieldPlaceholder: 'Prompt eingeben…',
238
232
  promptFieldPlaceholderWithRecording: 'Prompt eingeben oder aufnehmen…',
239
233
  promptFieldPlaceholderListening: 'Hört Prompteingabe zu…',
240
- // promptFieldSpeechRecognitionNotSupported: 'Speech recognition is not supported in this browser',
234
+ promptFieldSpeechRecognitionNotSupported: 'Spracherkennung wird in diesem Browser nicht unterstützt',
241
235
  promptFieldSend: 'Senden',
242
236
  promptFieldRecord: 'Aufnahme starten',
243
- promptFieldStopRecording: 'Aufnahme stoppen'
244
-
237
+ promptFieldStopRecording: 'Aufnahme stoppen',
245
238
  // Prompt
246
- // promptRerun: 'Run again',
247
- // promptProcessing: 'Processing…',
248
- // promptAppliedChanges: 'Applied changes',
249
-
239
+ promptRerun: 'Erneut ausführen',
240
+ promptProcessing: 'Verarbeitung…',
241
+ promptAppliedChanges: 'Änderungen angewendet',
250
242
  // Prompt changes
251
- // promptChangeGroupDescription: (column: string) => `Group by ${column}`,
252
- // promptChangeAggregationLabel: (column: string, aggregation: string) => `${column} (${aggregation})`,
253
- // promptChangeAggregationDescription: (column: string, aggregation: string) => `Aggregate ${column} (${aggregation})`,
254
- // promptChangeFilterLabel: (column: string, operator: string, value: string) => {
255
- // if (operator === 'is any of') {
256
- // return `${column} is any of: ${value}`;
257
- // }
258
- // return `${column} ${operator} ${value}`;
259
- // },
260
- // promptChangeFilterDescription: (column: string, operator: string, value: string) => {
261
- // if (operator === 'is any of') {
262
- // return `Filter where ${column} is any of: ${value}`;
263
- // }
264
- // return `Filter where ${column} ${operator} ${value}`;
265
- // },
266
- // promptChangeSortDescription: (column: string, direction: string) => `Sort by ${column} (${direction})`,
267
- // promptChangePivotEnableLabel: 'Pivot',
268
- // promptChangePivotEnableDescription: 'Enable pivot',
269
- // promptChangePivotColumnsLabel: (count: number) => `Columns (${count})`,
270
- // promptChangePivotColumnsDescription: (column: string, direction: string) => `${column}${direction ? ` (${direction})` : ''}`,
271
- // promptChangePivotRowsLabel: (count: number) => `Rows (${count})`,
272
- // promptChangePivotValuesLabel: (count: number) => `Values (${count})`,
273
- // promptChangePivotValuesDescription: (column: string, aggregation: string) => `${column} (${aggregation})`,
243
+ promptChangeGroupDescription: column => `Gruppieren nach ${column}`,
244
+ promptChangeAggregationLabel: (column, aggregation) => `${column} (${aggregation})`,
245
+ promptChangeAggregationDescription: (column, aggregation) => `${column} aggregieren (${aggregation})`,
246
+ promptChangeFilterLabel: (column, operator, value) => {
247
+ if (operator === 'is any of') {
248
+ return `${column} entspricht einem der Werte: ${value}`;
249
+ }
250
+ return `${column} ${operator} ${value}`;
251
+ },
252
+ promptChangeFilterDescription: (column, operator, value) => {
253
+ if (operator === 'is any of') {
254
+ return `Filtern, bei dem ${column} einem der folgenden Werte entspricht: ${value}`;
255
+ }
256
+ return `Filtern wo ${column} ${operator} ${value}`;
257
+ },
258
+ promptChangeSortDescription: (column, direction) => `Sortieren nach ${column} (${direction})`,
259
+ promptChangePivotEnableLabel: 'Pivot',
260
+ promptChangePivotEnableDescription: 'Pivot aktivieren',
261
+ promptChangePivotColumnsLabel: count => `Spalten (${count})`,
262
+ promptChangePivotColumnsDescription: (column, direction) => `${column}${direction ? ` (${direction})` : ''}`,
263
+ promptChangePivotRowsLabel: count => `Zeilen (${count})`,
264
+ promptChangePivotValuesLabel: count => `Werte (${count})`,
265
+ promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`
274
266
  };
275
267
  const deDE = exports.deDE = (0, _getGridLocalization.getGridLocalization)(deDEGrid);
@@ -2,6 +2,10 @@ export interface GridColumnsRenderContext {
2
2
  firstColumnIndex: number;
3
3
  lastColumnIndex: number;
4
4
  }
5
+ /**
6
+ * Provides the current render context range for rows and columns.
7
+ * End index is exclusive - [firstRowIndex, lastRowIndex) and [firstColumnIndex, lastColumnIndex)
8
+ */
5
9
  export interface GridRenderContext extends GridColumnsRenderContext {
6
10
  firstRowIndex: number;
7
11
  lastRowIndex: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "8.5.3",
3
+ "version": "8.6.0",
4
4
  "author": "MUI Team",
5
5
  "description": "The Community plan edition of the MUI X Data Grid components.",
6
6
  "main": "./index.js",
@@ -44,7 +44,7 @@
44
44
  "clsx": "^2.1.1",
45
45
  "prop-types": "^15.8.1",
46
46
  "use-sync-external-store": "^1.5.0",
47
- "@mui/x-internals": "8.5.3"
47
+ "@mui/x-internals": "8.6.0"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@emotion/react": "^11.9.0",