@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 +107 -0
- package/components/cell/GridActionsCell.js +0 -9
- package/components/cell/GridActionsCellItem.d.ts +4 -1
- package/components/cell/GridActionsCellItem.js +1 -1
- package/components/menu/GridMenu.d.ts +1 -1
- package/components/menu/GridMenu.js +8 -1
- package/components/toolbar/GridToolbarDensitySelector.js +0 -10
- package/components/toolbar/GridToolbarExportContainer.js +0 -10
- package/esm/components/cell/GridActionsCell.js +0 -9
- package/esm/components/cell/GridActionsCellItem.d.ts +4 -1
- package/esm/components/cell/GridActionsCellItem.js +1 -1
- package/esm/components/menu/GridMenu.d.ts +1 -1
- package/esm/components/menu/GridMenu.js +8 -1
- package/esm/components/toolbar/GridToolbarDensitySelector.js +0 -10
- package/esm/components/toolbar/GridToolbarExportContainer.js +0 -10
- package/esm/hooks/features/focus/useGridFocus.js +1 -1
- package/esm/index.js +1 -1
- package/esm/locales/daDK.js +4 -4
- package/esm/locales/deDE.js +65 -73
- package/esm/models/params/gridScrollParams.d.ts +4 -0
- package/hooks/features/focus/useGridFocus.js +1 -1
- package/index.js +1 -1
- package/locales/daDK.js +4 -4
- package/locales/deDE.js +65 -73
- package/models/params/gridScrollParams.d.ts +4 -0
- package/package.json +2 -2
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` [](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` [](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` [](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` [](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` [](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.
|
|
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?:
|
|
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.
|
|
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?:
|
|
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
package/esm/locales/daDK.js
CHANGED
|
@@ -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: '
|
|
114
|
-
columnMenuFilter: '
|
|
113
|
+
columnMenuManageColumns: 'Administrér kolonner',
|
|
114
|
+
columnMenuFilter: 'Filtrér',
|
|
115
115
|
columnMenuHideColumn: 'Skjul kolonne',
|
|
116
116
|
columnMenuUnsort: 'Fjern sortering',
|
|
117
|
-
columnMenuSortAsc: '
|
|
118
|
-
columnMenuSortDesc: '
|
|
117
|
+
columnMenuSortAsc: 'Sortér stigende',
|
|
118
|
+
columnMenuSortDesc: 'Sortér faldende',
|
|
119
119
|
// columnMenuManagePivot: 'Manage pivot',
|
|
120
120
|
|
|
121
121
|
// Column header text
|
package/esm/locales/deDE.js
CHANGED
|
@@ -5,8 +5,7 @@ const deDEGrid = {
|
|
|
5
5
|
noResultsOverlayLabel: 'Keine Ergebnisse gefunden.',
|
|
6
6
|
noColumnsOverlayLabel: 'Keine Spalten',
|
|
7
7
|
noColumnsOverlayManageColumns: 'Spalten verwalten',
|
|
8
|
-
|
|
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
|
-
|
|
37
|
-
|
|
35
|
+
toolbarPivot: 'Pivot',
|
|
38
36
|
// Toolbar AI Assistant button
|
|
39
|
-
|
|
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
|
-
|
|
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
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|
-
|
|
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
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
233
|
+
promptRerun: 'Erneut ausführen',
|
|
234
|
+
promptProcessing: 'Verarbeitung…',
|
|
235
|
+
promptAppliedChanges: 'Änderungen angewendet',
|
|
244
236
|
// Prompt changes
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
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
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: '
|
|
120
|
-
columnMenuFilter: '
|
|
119
|
+
columnMenuManageColumns: 'Administrér kolonner',
|
|
120
|
+
columnMenuFilter: 'Filtrér',
|
|
121
121
|
columnMenuHideColumn: 'Skjul kolonne',
|
|
122
122
|
columnMenuUnsort: 'Fjern sortering',
|
|
123
|
-
columnMenuSortAsc: '
|
|
124
|
-
columnMenuSortDesc: '
|
|
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
|
-
|
|
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
|
-
|
|
43
|
-
|
|
41
|
+
toolbarPivot: 'Pivot',
|
|
44
42
|
// Toolbar AI Assistant button
|
|
45
|
-
|
|
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
|
-
|
|
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
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
|
|
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
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
239
|
+
promptRerun: 'Erneut ausführen',
|
|
240
|
+
promptProcessing: 'Verarbeitung…',
|
|
241
|
+
promptAppliedChanges: 'Änderungen angewendet',
|
|
250
242
|
// Prompt changes
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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.
|
|
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.
|
|
47
|
+
"@mui/x-internals": "8.6.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@emotion/react": "^11.9.0",
|