@mui/x-data-grid 9.2.0 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +118 -0
  2. package/components/GridRow.js +2 -2
  3. package/components/GridRow.mjs +2 -2
  4. package/components/GridScrollbarFillerCell.js +1 -1
  5. package/components/GridScrollbarFillerCell.mjs +1 -1
  6. package/components/cell/GridCell.js +1 -1
  7. package/components/cell/GridCell.mjs +1 -1
  8. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  9. package/components/columnHeaders/GridBaseColumnHeaders.mjs +1 -1
  10. package/components/columnHeaders/GridGenericColumnHeaderItem.js +2 -2
  11. package/components/columnHeaders/GridGenericColumnHeaderItem.mjs +2 -2
  12. package/components/containers/GridRoot.js +1 -1
  13. package/components/containers/GridRoot.mjs +1 -1
  14. package/components/virtualization/GridBottomContainer.js +1 -1
  15. package/components/virtualization/GridBottomContainer.mjs +1 -1
  16. package/components/virtualization/GridMainContainer.js +1 -1
  17. package/components/virtualization/GridMainContainer.mjs +1 -1
  18. package/components/virtualization/GridTopContainer.js +1 -1
  19. package/components/virtualization/GridTopContainer.mjs +1 -1
  20. package/components/virtualization/GridVirtualScroller.js +3 -11
  21. package/components/virtualization/GridVirtualScroller.mjs +3 -11
  22. package/components/virtualization/GridVirtualScrollerFiller.js +1 -1
  23. package/components/virtualization/GridVirtualScrollerFiller.mjs +1 -1
  24. package/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
  25. package/hooks/features/columnHeaders/useGridColumnHeaders.mjs +2 -2
  26. package/index.js +1 -1
  27. package/index.mjs +1 -1
  28. package/locales/svSE.js +116 -129
  29. package/locales/svSE.mjs +116 -129
  30. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,123 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.3.0
4
+
5
+ _May 21, 2026_
6
+
7
+ We'd like to extend a big thank you to the 16 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - 📆 Refactor Calendar Range drag editing to use Pointer Events instead of drag and touch events combination (#22279)
10
+ - ✨ Apply lazy loading to `EventTimelinePremium` (#22308)
11
+ - 🐞 Bugfixes
12
+ - 📚 Documentation improvements
13
+ - 🌎 Added Norwegian bokmål (nb-NO) locale to the Scheduler
14
+ - 🌎 Improved Swedish (sv-SE) locale on the Data Grid
15
+
16
+ Special thanks go out to these community members for their valuable contributions:
17
+ @Anexus5919, @jvskriubakken, @oscar-b, @rin, @viktormelin
18
+
19
+ The following team members contributed to this release:
20
+ @aemartos, @alexfauquette, @arminmeh, @Janpot, @JCQuintas, @LukasTy, @mj12albert, @oliviertassinari, @rita-codes, @romgrk, @sai6855
21
+
22
+ ### Data Grid
23
+
24
+ #### `@mui/x-data-grid@9.3.0`
25
+
26
+ - [DataGrid] Fix scrollbar disappearing after multiple resizes (#22512) @LukasTy
27
+ - [DataGrid] Revert "Add support for pinned columns in `GridVirtualScroller`" (#22467) @oliviertassinari
28
+ - [l10n] Improve Swedish (svSE) locale (#21851) @viktormelin
29
+
30
+ #### `@mui/x-data-grid-pro@9.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
31
+
32
+ Same changes as in `@mui/x-data-grid@9.3.0`.
33
+
34
+ #### `@mui/x-data-grid-premium@9.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
35
+
36
+ Same changes as in `@mui/x-data-grid-pro@9.3.0`.
37
+
38
+ ### Date and Time Pickers
39
+
40
+ #### `@mui/x-date-pickers@9.3.0`
41
+
42
+ - [pickers] Fix disabled state styling for `PickersTextField` standard and filled variants (#22189) @LukasTy
43
+ - [pickers] Fix previous month disabled state calculation (#22524) @mj12albert
44
+ - [pickers] Merge `slotProps.sectionContent` in `PickersInputBase` (#22324) @rin
45
+
46
+ #### `@mui/x-date-pickers-pro@9.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
47
+
48
+ Same changes as in `@mui/x-date-pickers@9.3.0`, plus:
49
+
50
+ - [DateRangeCalendar] Use Pointer Events for drag editing (#22279) @LukasTy
51
+
52
+ ### Charts
53
+
54
+ #### `@mui/x-charts@9.3.0`
55
+
56
+ - [charts] Add `data-series` to elements of radar chart (#22523) @alexfauquette
57
+ - [charts] Add environment check for warning messages in axis and radar hooks (#22506) @sai6855
58
+ - [charts] Chart `seriesConfig` deduplication for lines and bars (#22257) @sai6855
59
+ - [charts] Fix highlighted item crash (#22539) @oscar-b
60
+ - [charts] Fix the line and mark class (#22526) @alexfauquette
61
+ - [charts] Fix use of deprecated API in docs (#22469) @oliviertassinari
62
+ - [charts] Improve performance of `evaluateCurveY` function (#22407) @sai6855
63
+
64
+ #### `@mui/x-charts-pro@9.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
65
+
66
+ Same changes as in `@mui/x-charts@9.3.0`.
67
+
68
+ #### `@mui/x-charts-premium@9.3.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
69
+
70
+ Same changes as in `@mui/x-charts-pro@9.3.0`, plus:
71
+
72
+ - [charts-premium] Add `closePath` option to the radial line series (#22517) @alexfauquette
73
+
74
+ ### Tree View
75
+
76
+ #### `@mui/x-tree-view-pro@9.3.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
77
+
78
+ Internal changes.
79
+
80
+ ### Scheduler
81
+
82
+ #### `@mui/x-scheduler@9.0.0-alpha.7`
83
+
84
+ - [I10n] Add Norwegian bokmål (nb-NO) locale (#22415) @jvskriubakken
85
+
86
+ #### `@mui/x-scheduler-premium@9.0.0-alpha.7` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
87
+
88
+ Same changes as in `@mui/x-scheduler@9.0.0-alpha.7`, plus:
89
+
90
+ - [scheduler] Apply lazy loading to `EventTimelinePremium` (#22308) @rita-codes
91
+ - [scheduler] Deduplicate staged ranges within the debounce window (#22476) @Anexus5919
92
+ - [scheduler] Pass full event objects to `dataSource.updateEvents` (#22462) @rita-codes
93
+
94
+ ### Docs
95
+
96
+ - [docs] Automatically update supported versions (#21850) @arminmeh
97
+ - [docs] Fix `New` label on bar charts docs (#22473) @oliviertassinari
98
+ - [docs] Improve premium page header for charts (#22474) @oliviertassinari
99
+ - [docs] Sync `README` with licensing/licensing.md in scheduler (#22468) @oliviertassinari
100
+
101
+ ### Core
102
+
103
+ - [code-infra] Cover docs overview composites with Argos (#22283) @LukasTy
104
+ - [code-infra] Enable `mui/no-presentation-role` lint rule (#22360) @Janpot
105
+ - [code-infra] Make generated `propTypes` union order deterministic (#22521) @JCQuintas
106
+ - [code-infra] Make screenshots stable across different ordering of the tests (#22449) @Janpot
107
+ - [code-infra] Optimize visual regression testing (#22447) @Janpot
108
+ - [code-infra] Replace markdownlint with remark from code-infra (#22255) @Janpot
109
+
110
+ ### Miscellaneous
111
+
112
+ - [virtualizer] Improve `controlled` mode performance (#22123) @romgrk
113
+ - [data-grid-generator] Include `tree-data` params in `useDemoData` cache key (#22456) @Janpot
114
+ - [test] Fix flaky browser tests and optimize (#22431) @Janpot
115
+ - [test] Speed up `test_types` job (#22442) @Janpot
116
+ - [test] Trim ffmpeg install in `test_regressions` (#22459) @Janpot
117
+ - [test] Add WebGL performance benchmarks for charts (#22471) @JCQuintas
118
+ - [test] Expand chart performance benchmarks for charts (#22472) @JCQuintas
119
+ - [x-license] use workspace dep for v9 in cross-major compat tests (#22504) @aemartos
120
+
3
121
  ## 9.2.0
4
122
 
5
123
  _May 13, 2026_
@@ -308,13 +308,13 @@ const GridRow = (0, _forwardRef.forwardRef)(function GridRow(props, refProp) {
308
308
  }, ariaAttributes, eventHandlers, other, {
309
309
  ref: handleRef,
310
310
  children: [leftCells, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
311
- role: "presentation",
311
+ role: "none",
312
312
  className: _gridClasses.gridClasses.cellOffsetLeft,
313
313
  style: {
314
314
  width: offsetLeft
315
315
  }
316
316
  }), cells, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
317
- role: "presentation",
317
+ role: "none",
318
318
  className: (0, _clsx.default)(_gridClasses.gridClasses.cell, _gridClasses.gridClasses.cellEmpty)
319
319
  }), rightCells, /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridRowDragAndDropOverlay.GridRowDragAndDropOverlay, {
320
320
  rowId: rowId
@@ -301,13 +301,13 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
301
301
  }, ariaAttributes, eventHandlers, other, {
302
302
  ref: handleRef,
303
303
  children: [leftCells, /*#__PURE__*/_jsx("div", {
304
- role: "presentation",
304
+ role: "none",
305
305
  className: gridClasses.cellOffsetLeft,
306
306
  style: {
307
307
  width: offsetLeft
308
308
  }
309
309
  }), cells, /*#__PURE__*/_jsx("div", {
310
- role: "presentation",
310
+ role: "none",
311
311
  className: clsx(gridClasses.cell, gridClasses.cellEmpty)
312
312
  }), rightCells, /*#__PURE__*/_jsx(GridRowDragAndDropOverlay, {
313
313
  rowId: rowId
@@ -21,7 +21,7 @@ function GridScrollbarFillerCell({
21
21
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
22
22
  const pinnedScrollOffset = (0, _usePinnedScrollOffset.usePinnedScrollOffset)(apiRef, pinnedRight ? _constants2.PinnedColumnPosition.RIGHT : undefined);
23
23
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
24
- role: "presentation",
24
+ role: "none",
25
25
  className: (0, _clsx.default)(classes.root, pinnedRight && classes.pinnedRight),
26
26
  style: {
27
27
  right: pinnedScrollOffset
@@ -14,7 +14,7 @@ function GridScrollbarFillerCell({
14
14
  const apiRef = useGridPrivateApiContext();
15
15
  const pinnedScrollOffset = usePinnedScrollOffset(apiRef, pinnedRight ? PinnedColumnPosition.RIGHT : undefined);
16
16
  return /*#__PURE__*/_jsx("div", {
17
- role: "presentation",
17
+ role: "none",
18
18
  className: clsx(classes.root, pinnedRight && classes.pinnedRight),
19
19
  style: {
20
20
  right: pinnedScrollOffset
@@ -247,7 +247,7 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
247
247
  if (isCellRowSpanned) {
248
248
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
249
249
  "data-colindex": colIndex,
250
- role: "presentation",
250
+ role: "none",
251
251
  style: (0, _extends2.default)({
252
252
  width: 'var(--width)'
253
253
  }, style)
@@ -240,7 +240,7 @@ const GridCell = forwardRef(function GridCell(props, ref) {
240
240
  if (isCellRowSpanned) {
241
241
  return /*#__PURE__*/_jsx("div", {
242
242
  "data-colindex": colIndex,
243
- role: "presentation",
243
+ role: "none",
244
244
  style: _extends({
245
245
  width: 'var(--width)'
246
246
  }, style)
@@ -47,7 +47,7 @@ const GridBaseColumnHeaders = exports.GridBaseColumnHeaders = (0, _forwardRef.fo
47
47
  className: (0, _clsx.default)(classes.root, className),
48
48
  ownerState: rootProps
49
49
  }, other, {
50
- role: "presentation",
50
+ role: "none",
51
51
  ref: ref
52
52
  }));
53
53
  });
@@ -40,7 +40,7 @@ export const GridBaseColumnHeaders = forwardRef(function GridColumnHeaders(props
40
40
  className: clsx(classes.root, className),
41
41
  ownerState: rootProps
42
42
  }, other, {
43
- role: "presentation",
43
+ role: "none",
44
44
  ref: ref
45
45
  }));
46
46
  });
@@ -63,11 +63,11 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = (0, _f
63
63
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
64
64
  className: classes.draggableContainer,
65
65
  draggable: isDraggable,
66
- role: "presentation"
66
+ role: "none"
67
67
  }, draggableContainerProps, {
68
68
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
69
69
  className: classes.titleContainer,
70
- role: "presentation",
70
+ role: "none",
71
71
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
72
72
  className: classes.titleContainerContent,
73
73
  children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderTitle.GridColumnHeaderTitle, {
@@ -56,11 +56,11 @@ const GridGenericColumnHeaderItem = forwardRef(function GridGenericColumnHeaderI
56
56
  children: [/*#__PURE__*/_jsxs("div", _extends({
57
57
  className: classes.draggableContainer,
58
58
  draggable: isDraggable,
59
- role: "presentation"
59
+ role: "none"
60
60
  }, draggableContainerProps, {
61
61
  children: [/*#__PURE__*/_jsxs("div", {
62
62
  className: classes.titleContainer,
63
- role: "presentation",
63
+ role: "none",
64
64
  children: [/*#__PURE__*/_jsx("div", {
65
65
  className: classes.titleContainerContent,
66
66
  children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {
@@ -72,7 +72,7 @@ const GridRoot = (0, _forwardRef.forwardRef)(function GridRoot(props, ref) {
72
72
  ref: handleRef,
73
73
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
74
74
  className: _gridClasses.gridClasses.mainContent,
75
- role: "presentation",
75
+ role: "none",
76
76
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeader.GridHeader, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridBody, {
77
77
  children: children
78
78
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridFooterPlaceholder, {})]
@@ -65,7 +65,7 @@ const GridRoot = forwardRef(function GridRoot(props, ref) {
65
65
  ref: handleRef,
66
66
  children: [/*#__PURE__*/_jsxs("div", {
67
67
  className: gridClasses.mainContent,
68
- role: "presentation",
68
+ role: "none",
69
69
  children: [/*#__PURE__*/_jsx(GridHeader, {}), /*#__PURE__*/_jsx(GridBody, {
70
70
  children: children
71
71
  }), /*#__PURE__*/_jsx(GridFooterPlaceholder, {})]
@@ -34,6 +34,6 @@ function GridBottomContainer(props) {
34
34
  const classes = useUtilityClasses();
35
35
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Element, (0, _extends2.default)({}, props, {
36
36
  className: (0, _clsx.default)(classes.root, _gridClasses.gridClasses['container--bottom']),
37
- role: "presentation"
37
+ role: "none"
38
38
  }));
39
39
  }
@@ -26,6 +26,6 @@ export function GridBottomContainer(props) {
26
26
  const classes = useUtilityClasses();
27
27
  return /*#__PURE__*/_jsx(Element, _extends({}, props, {
28
28
  className: clsx(classes.root, gridClasses['container--bottom']),
29
- role: "presentation"
29
+ role: "none"
30
30
  }));
31
31
  }
@@ -56,7 +56,7 @@ const GridMainContainer = exports.GridMainContainer = (0, _forwardRef.forwardRef
56
56
  }, ariaAttributes, rootProps.slotProps?.main, {
57
57
  ref: ref,
58
58
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(GridPanelAnchor, {
59
- role: "presentation",
59
+ role: "none",
60
60
  "data-id": "gridPanelAnchor"
61
61
  }), props.children]
62
62
  }));
@@ -49,7 +49,7 @@ export const GridMainContainer = forwardRef((props, ref) => {
49
49
  }, ariaAttributes, rootProps.slotProps?.main, {
50
50
  ref: ref,
51
51
  children: [/*#__PURE__*/_jsx(GridPanelAnchor, {
52
- role: "presentation",
52
+ role: "none",
53
53
  "data-id": "gridPanelAnchor"
54
54
  }), props.children]
55
55
  }));
@@ -31,6 +31,6 @@ function GridTopContainer(props) {
31
31
  const classes = useUtilityClasses();
32
32
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Element, (0, _extends2.default)({}, props, {
33
33
  className: (0, _clsx.default)(classes.root, _gridClasses.gridClasses['container--top']),
34
- role: "presentation"
34
+ role: "none"
35
35
  }));
36
36
  }
@@ -23,6 +23,6 @@ export function GridTopContainer(props) {
23
23
  const classes = useUtilityClasses();
24
24
  return /*#__PURE__*/_jsx(Element, _extends({}, props, {
25
25
  className: clsx(classes.root, gridClasses['container--top']),
26
- role: "presentation"
26
+ role: "none"
27
27
  }));
28
28
  }
@@ -55,9 +55,7 @@ const Scroller = (0, _styles.styled)('div', {
55
55
  } = props;
56
56
  return [styles.virtualScroller, ownerState.hasScrollX && styles['virtualScroller--hasScrollX']];
57
57
  }
58
- })(({
59
- ownerState
60
- }) => ({
58
+ })({
61
59
  position: 'relative',
62
60
  height: '100%',
63
61
  flexGrow: 1,
@@ -72,10 +70,8 @@ const Scroller = (0, _styles.styled)('div', {
72
70
  overflow: 'hidden'
73
71
  },
74
72
  // See https://github.com/mui/mui-x/issues/10547
75
- zIndex: 0,
76
- // Prevent overscroll bounce from revealing content behind pinned column shadows on macOS.
77
- overscrollBehaviorX: ownerState.hasPinnedColumns ? 'none' : undefined
78
- }));
73
+ zIndex: 0
74
+ });
79
75
  const Viewport = (0, _styles.styled)('div', {
80
76
  slot: 'internal',
81
77
  shouldForwardProp: undefined
@@ -90,26 +86,22 @@ const Viewport = (0, _styles.styled)('div', {
90
86
  }
91
87
  });
92
88
  const hasPinnedRightSelector = apiRef => apiRef.current.state.dimensions.rightPinnedWidth > 0;
93
- const hasPinnedLeftSelector = apiRef => apiRef.current.state.dimensions.leftPinnedWidth > 0;
94
89
  function GridVirtualScroller(props) {
95
90
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
96
91
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
97
92
  const hasScrollY = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasScrollYSelector);
98
93
  const hasScrollX = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasScrollXSelector);
99
94
  const hasPinnedRight = (0, _useGridSelector.useGridSelector)(apiRef, hasPinnedRightSelector);
100
- const hasPinnedLeft = (0, _useGridSelector.useGridSelector)(apiRef, hasPinnedLeftSelector);
101
95
  const hasBottomFiller = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasBottomFillerSelector);
102
96
  const {
103
97
  overlayType,
104
98
  loadingOverlayVariant
105
99
  } = (0, _useGridOverlays.useGridOverlays)(apiRef, rootProps);
106
100
  const Overlay = rootProps.slots?.[overlayType];
107
- const hasPinnedColumns = hasPinnedRight || hasPinnedLeft;
108
101
  const ownerState = {
109
102
  classes: rootProps.classes,
110
103
  hasScrollX,
111
104
  hasPinnedRight,
112
- hasPinnedColumns,
113
105
  overlayType,
114
106
  loadingOverlayVariant
115
107
  };
@@ -47,9 +47,7 @@ const Scroller = styled('div', {
47
47
  } = props;
48
48
  return [styles.virtualScroller, ownerState.hasScrollX && styles['virtualScroller--hasScrollX']];
49
49
  }
50
- })(({
51
- ownerState
52
- }) => ({
50
+ })({
53
51
  position: 'relative',
54
52
  height: '100%',
55
53
  flexGrow: 1,
@@ -64,10 +62,8 @@ const Scroller = styled('div', {
64
62
  overflow: 'hidden'
65
63
  },
66
64
  // See https://github.com/mui/mui-x/issues/10547
67
- zIndex: 0,
68
- // Prevent overscroll bounce from revealing content behind pinned column shadows on macOS.
69
- overscrollBehaviorX: ownerState.hasPinnedColumns ? 'none' : undefined
70
- }));
65
+ zIndex: 0
66
+ });
71
67
  const Viewport = styled('div', {
72
68
  slot: 'internal',
73
69
  shouldForwardProp: undefined
@@ -82,26 +78,22 @@ const Viewport = styled('div', {
82
78
  }
83
79
  });
84
80
  const hasPinnedRightSelector = apiRef => apiRef.current.state.dimensions.rightPinnedWidth > 0;
85
- const hasPinnedLeftSelector = apiRef => apiRef.current.state.dimensions.leftPinnedWidth > 0;
86
81
  function GridVirtualScroller(props) {
87
82
  const apiRef = useGridPrivateApiContext();
88
83
  const rootProps = useGridRootProps();
89
84
  const hasScrollY = useGridSelector(apiRef, gridHasScrollYSelector);
90
85
  const hasScrollX = useGridSelector(apiRef, gridHasScrollXSelector);
91
86
  const hasPinnedRight = useGridSelector(apiRef, hasPinnedRightSelector);
92
- const hasPinnedLeft = useGridSelector(apiRef, hasPinnedLeftSelector);
93
87
  const hasBottomFiller = useGridSelector(apiRef, gridHasBottomFillerSelector);
94
88
  const {
95
89
  overlayType,
96
90
  loadingOverlayVariant
97
91
  } = useGridOverlays(apiRef, rootProps);
98
92
  const Overlay = rootProps.slots?.[overlayType];
99
- const hasPinnedColumns = hasPinnedRight || hasPinnedLeft;
100
93
  const ownerState = {
101
94
  classes: rootProps.classes,
102
95
  hasScrollX,
103
96
  hasPinnedRight,
104
- hasPinnedColumns,
105
97
  overlayType,
106
98
  loadingOverlayVariant
107
99
  };
@@ -70,7 +70,7 @@ function GridVirtualScrollerFiller({
70
70
  }
71
71
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Filler, {
72
72
  className: _constants.gridClasses.filler,
73
- role: "presentation",
73
+ role: "none",
74
74
  style: {
75
75
  height,
76
76
  '--rowBorderColor': rowsLength === 0 ? 'transparent' : 'var(--DataGrid-rowBorderColor)'
@@ -63,7 +63,7 @@ function GridVirtualScrollerFiller({
63
63
  }
64
64
  return /*#__PURE__*/_jsxs(Filler, {
65
65
  className: gridClasses.filler,
66
- role: "presentation",
66
+ role: "none",
67
67
  style: {
68
68
  height,
69
69
  '--rowBorderColor': rowsLength === 0 ? 'transparent' : 'var(--DataGrid-rowBorderColor)'
@@ -110,12 +110,12 @@ const useGridColumnHeaders = props => {
110
110
  const leftOffsetWidth = offsetLeft - leftOverflow;
111
111
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
112
112
  children: [isNotPinned && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
113
- role: "presentation",
113
+ role: "none",
114
114
  style: {
115
115
  width: leftOffsetWidth
116
116
  }
117
117
  }), children, isNotPinned && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
118
- role: "presentation",
118
+ role: "none",
119
119
  className: (0, _clsx.default)(_gridClasses.gridClasses.filler, _gridClasses.gridClasses['filler--horizontal'], borderBottom && _gridClasses.gridClasses['filler--borderBottom'])
120
120
  }), hasScrollbarFiller && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
121
121
  pinnedRight: isPinnedRight
@@ -103,12 +103,12 @@ export const useGridColumnHeaders = props => {
103
103
  const leftOffsetWidth = offsetLeft - leftOverflow;
104
104
  return /*#__PURE__*/_jsxs(React.Fragment, {
105
105
  children: [isNotPinned && /*#__PURE__*/_jsx("div", {
106
- role: "presentation",
106
+ role: "none",
107
107
  style: {
108
108
  width: leftOffsetWidth
109
109
  }
110
110
  }), children, isNotPinned && /*#__PURE__*/_jsx("div", {
111
- role: "presentation",
111
+ role: "none",
112
112
  className: clsx(gridClasses.filler, gridClasses['filler--horizontal'], borderBottom && gridClasses['filler--borderBottom'])
113
113
  }), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {
114
114
  pinnedRight: isPinnedRight
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v9.2.0
2
+ * @mui/x-data-grid v9.3.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v9.2.0
2
+ * @mui/x-data-grid v9.3.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/locales/svSE.js CHANGED
@@ -11,8 +11,7 @@ const svSEGrid = {
11
11
  noResultsOverlayLabel: 'Inga resultat funna.',
12
12
  noColumnsOverlayLabel: 'Inga kolumner',
13
13
  noColumnsOverlayManageColumns: 'Hantera kolumner',
14
- // emptyPivotOverlayLabel: 'Add fields to rows, columns, and values to create a pivot table',
15
-
14
+ emptyPivotOverlayLabel: 'Lägg till fält i rader, kolumner och värden för att skapa en pivottabell',
16
15
  // Density selector toolbar button text
17
16
  toolbarDensity: 'Densitet',
18
17
  toolbarDensityLabel: 'Densitet',
@@ -42,21 +41,17 @@ const svSEGrid = {
42
41
  toolbarExportPrint: 'Skriv ut',
43
42
  toolbarExportExcel: 'Ladda ner som Excel',
44
43
  // Toolbar pivot button
45
- // toolbarPivot: 'Pivot',
46
-
44
+ toolbarPivot: 'Pivot',
47
45
  // Toolbar charts button
48
- // toolbarCharts: 'Charts',
49
-
46
+ toolbarCharts: 'Diagram',
50
47
  // Toolbar AI Assistant button
51
- // toolbarAssistant: 'AI Assistant',
52
-
48
+ toolbarAssistant: 'AI assistent',
53
49
  // Columns management text
54
50
  columnsManagementSearchTitle: 'Sök',
55
51
  columnsManagementNoColumns: 'Inga kolumner',
56
52
  columnsManagementShowHideAllText: 'Visa/Dölj alla',
57
53
  columnsManagementReset: 'Återställ',
58
- // columnsManagementDeleteIconLabel: 'Clear',
59
-
54
+ columnsManagementDeleteIconLabel: 'Rensa',
60
55
  // Filter panel text
61
56
  filterPanelAddFilter: 'Lägg till filter',
62
57
  filterPanelRemoveAll: 'Ta bort alla',
@@ -112,15 +107,14 @@ const svSEGrid = {
112
107
  'headerFilterOperator>=': 'Större eller lika med',
113
108
  'headerFilterOperator<': 'Mindre än',
114
109
  'headerFilterOperator<=': 'Mindre eller lika med',
115
- // headerFilterClear: 'Clear filter',
116
-
110
+ headerFilterClear: 'Rensa filter',
117
111
  // Filter values text
118
112
  filterValueAny: 'något',
119
113
  filterValueTrue: 'sant',
120
114
  filterValueFalse: 'falskt',
121
115
  // Column menu text
122
116
  columnMenuLabel: 'Meny',
123
- // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
117
+ columnMenuAriaLabel: columnName => `${columnName} kolumnmeny`,
124
118
  columnMenuShowColumns: 'Visa kolumner',
125
119
  columnMenuManageColumns: 'Hantera kolumner',
126
120
  columnMenuFilter: 'Filtrera',
@@ -128,9 +122,8 @@ const svSEGrid = {
128
122
  columnMenuUnsort: 'Ta bort sortering',
129
123
  columnMenuSortAsc: 'Sortera stigande',
130
124
  columnMenuSortDesc: 'Sortera fallande',
131
- // columnMenuManagePivot: 'Manage pivot',
132
- // columnMenuManageCharts: 'Manage charts',
133
-
125
+ columnMenuManagePivot: 'Hantera pivot',
126
+ columnMenuManageCharts: 'Hantera diagram',
134
127
  // Column header text
135
128
  columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} aktiva filter` : `${count} aktivt filter`,
136
129
  columnHeaderFiltersLabel: 'Visa filter',
@@ -173,19 +166,19 @@ const svSEGrid = {
173
166
  collapseDetailPanel: 'Kollapsa',
174
167
  // Pagination
175
168
  paginationRowsPerPage: 'Rader per sida:',
176
- // paginationDisplayedRows: ({
177
- // from,
178
- // to,
179
- // count,
180
- // estimated
181
- // }) => {
182
- // const unknownRowCount = count == null || count === -1;
183
- // if (!estimated) {
184
- // return `${formatNumber(from)}–${formatNumber(to)} of ${!unknownRowCount ? formatNumber(count) : `more than ${formatNumber(to)}`}`;
185
- // }
186
- // const estimatedLabel = estimated && estimated > to ? `around ${formatNumber(estimated)}` : `more than ${formatNumber(to)}`;
187
- // return `${formatNumber(from)}–${formatNumber(to)} of ${!unknownRowCount ? formatNumber(count) : estimatedLabel}`;
188
- // },
169
+ paginationDisplayedRows: ({
170
+ from,
171
+ to,
172
+ count,
173
+ estimated
174
+ }) => {
175
+ const unknownRowCount = count == null || count === -1;
176
+ if (!estimated) {
177
+ return `${from}–${to} av ${!unknownRowCount ? count : `fler än ${to}`}`;
178
+ }
179
+ const estimatedLabel = estimated && estimated > to ? `ungefär ${estimated}` : `fler än ${to}`;
180
+ return `${from}–${to} av ${!unknownRowCount ? count : estimatedLabel}`;
181
+ },
189
182
  paginationItemAriaLabel: type => {
190
183
  if (type === 'first') {
191
184
  return 'Gå till första sidan';
@@ -203,115 +196,109 @@ const svSEGrid = {
203
196
  rowReorderingHeaderName: 'Ordna om rader',
204
197
  // Aggregation
205
198
  aggregationMenuItemHeader: 'Aggregering',
206
- // aggregationFunctionLabelNone: 'none',
199
+ aggregationFunctionLabelNone: 'ingen',
207
200
  aggregationFunctionLabelSum: 'summa',
208
201
  aggregationFunctionLabelAvg: 'medel',
209
202
  aggregationFunctionLabelMin: 'min',
210
203
  aggregationFunctionLabelMax: 'max',
211
- aggregationFunctionLabelSize: 'antal'
212
-
204
+ aggregationFunctionLabelSize: 'antal',
213
205
  // Pivot panel
214
- // pivotToggleLabel: 'Pivot',
215
- // pivotRows: 'Rows',
216
- // pivotColumns: 'Columns',
217
- // pivotValues: 'Values',
218
- // pivotCloseButton: 'Close pivot settings',
219
- // pivotSearchButton: 'Search fields',
220
- // pivotSearchControlPlaceholder: 'Search fields',
221
- // pivotSearchControlLabel: 'Search fields',
222
- // pivotSearchControlClear: 'Clear search',
223
- // pivotNoFields: 'No fields',
224
- // pivotMenuMoveUp: 'Move up',
225
- // pivotMenuMoveDown: 'Move down',
226
- // pivotMenuMoveToTop: 'Move to top',
227
- // pivotMenuMoveToBottom: 'Move to bottom',
228
- // pivotMenuRows: 'Rows',
229
- // pivotMenuColumns: 'Columns',
230
- // pivotMenuValues: 'Values',
231
- // pivotMenuOptions: 'Field options',
232
- // pivotMenuAddToRows: 'Add to Rows',
233
- // pivotMenuAddToColumns: 'Add to Columns',
234
- // pivotMenuAddToValues: 'Add to Values',
235
- // pivotMenuRemove: 'Remove',
236
- // pivotDragToRows: 'Drag here to create rows',
237
- // pivotDragToColumns: 'Drag here to create columns',
238
- // pivotDragToValues: 'Drag here to create values',
239
- // pivotYearColumnHeaderName: '(Year)',
240
- // pivotQuarterColumnHeaderName: '(Quarter)',
241
-
206
+ pivotToggleLabel: 'Pivot',
207
+ pivotRows: 'Rader',
208
+ pivotColumns: 'Kolumner',
209
+ pivotValues: 'Värden',
210
+ pivotCloseButton: 'Stäng pivotinställningar',
211
+ pivotSearchButton: 'Sökfält',
212
+ pivotSearchControlPlaceholder: 'Sökfält',
213
+ pivotSearchControlLabel: 'Sökfält',
214
+ pivotSearchControlClear: 'Rensa sökfält',
215
+ pivotNoFields: 'Inga fält',
216
+ pivotMenuMoveUp: 'Flytta upp',
217
+ pivotMenuMoveDown: 'Flytta ned',
218
+ pivotMenuMoveToTop: 'Flytta till toppen',
219
+ pivotMenuMoveToBottom: 'Flytta till botten',
220
+ pivotMenuRows: 'Rader',
221
+ pivotMenuColumns: 'Kolumner',
222
+ pivotMenuValues: 'Värden',
223
+ pivotMenuOptions: 'Fältalternativ',
224
+ pivotMenuAddToRows: 'Lägg till i rader',
225
+ pivotMenuAddToColumns: 'Lägg till i kolumner',
226
+ pivotMenuAddToValues: 'Lägg till i värden',
227
+ pivotMenuRemove: 'Ta bort',
228
+ pivotDragToRows: 'Dra hit för att skapa rader',
229
+ pivotDragToColumns: 'Dra hit för att skapa kolumner',
230
+ pivotDragToValues: 'Dra hit för att skapa värden',
231
+ pivotYearColumnHeaderName: '(År)',
232
+ pivotQuarterColumnHeaderName: '(Kvartal)',
242
233
  // Charts configuration panel
243
- // chartsNoCharts: 'There are no charts available',
244
- // chartsChartNotSelected: 'Select a chart type to configure its options',
245
- // chartsTabChart: 'Chart',
246
- // chartsTabFields: 'Fields',
247
- // chartsTabCustomize: 'Customize',
248
- // chartsCloseButton: 'Close charts configuration',
249
- // chartsSyncButtonLabel: 'Sync chart',
250
- // chartsSearchPlaceholder: 'Search fields',
251
- // chartsSearchLabel: 'Search fields',
252
- // chartsSearchClear: 'Clear search',
253
- // chartsNoFields: 'No fields',
254
- // chartsFieldBlocked: 'This field cannot be added to any section',
255
- // chartsCategories: 'Categories',
256
- // chartsSeries: 'Series',
257
- // chartsMenuAddToDimensions: (dimensionLabel: string) => `Add to ${dimensionLabel}`,
258
- // chartsMenuAddToValues: (valuesLabel: string) => `Add to ${valuesLabel}`,
259
- // chartsMenuMoveUp: 'Move up',
260
- // chartsMenuMoveDown: 'Move down',
261
- // chartsMenuMoveToTop: 'Move to top',
262
- // chartsMenuMoveToBottom: 'Move to bottom',
263
- // chartsMenuOptions: 'Field options',
264
- // chartsMenuRemove: 'Remove',
265
- // chartsDragToDimensions: (dimensionLabel: string) => `Drag here to use column as ${dimensionLabel}`,
266
- // chartsDragToValues: (valuesLabel: string) => `Drag here to use column as ${valuesLabel}`,
267
-
234
+ chartsNoCharts: 'Det finns inga diagram tillgängliga',
235
+ chartsChartNotSelected: 'Välj en diagramtyp för att konfigurera alternativ',
236
+ chartsTabChart: 'Diagram',
237
+ chartsTabFields: 'Fält',
238
+ chartsTabCustomize: 'Anpassa',
239
+ chartsCloseButton: 'Stäng diagramkonfiguration',
240
+ chartsSyncButtonLabel: 'Synkronisera diagram',
241
+ chartsSearchPlaceholder: 'Sök fält',
242
+ chartsSearchLabel: 'Sök fält',
243
+ chartsSearchClear: 'Rensa sökning',
244
+ chartsNoFields: 'Inga fält',
245
+ chartsFieldBlocked: 'Det här fältet kan inte läggas till i någon sektion',
246
+ chartsCategories: 'Kategorier',
247
+ chartsSeries: 'Serie',
248
+ chartsMenuAddToDimensions: dimensionLabel => `Lägg till ${dimensionLabel}`,
249
+ chartsMenuAddToValues: valuesLabel => `Lägg till ${valuesLabel}`,
250
+ chartsMenuMoveUp: 'Flytta upp',
251
+ chartsMenuMoveDown: 'Flytta ned',
252
+ chartsMenuMoveToTop: 'Flytta till toppen',
253
+ chartsMenuMoveToBottom: 'Flytta till botten',
254
+ chartsMenuOptions: 'Fältalternativ',
255
+ chartsMenuRemove: 'Ta bort',
256
+ chartsDragToDimensions: dimensionLabel => `Dra hit för att använda kolumnen som ${dimensionLabel}`,
257
+ chartsDragToValues: valuesLabel => `Dra hit för att använda kolumnen som ${valuesLabel}`,
268
258
  // AI Assistant panel
269
- // aiAssistantPanelTitle: 'AI Assistant',
270
- // aiAssistantPanelClose: 'Close AI Assistant',
271
- // aiAssistantPanelNewConversation: 'New conversation',
272
- // aiAssistantPanelConversationHistory: 'Conversation history',
273
- // aiAssistantPanelEmptyConversation: 'No prompt history',
274
- // aiAssistantSuggestions: 'Suggestions',
275
-
259
+ aiAssistantPanelTitle: 'AI assistent',
260
+ aiAssistantPanelClose: 'Stäng AI assistent',
261
+ aiAssistantPanelNewConversation: 'Ny konversation',
262
+ aiAssistantPanelConversationHistory: 'Konversationshistorik',
263
+ aiAssistantPanelEmptyConversation: 'Ingen prompthistorik',
264
+ aiAssistantSuggestions: 'Förslag',
276
265
  // Prompt field
277
- // promptFieldLabel: 'Prompt',
278
- // promptFieldPlaceholder: 'Type a prompt…',
279
- // promptFieldPlaceholderWithRecording: 'Type or record a prompt…',
280
- // promptFieldPlaceholderListening: 'Listening for prompt…',
281
- // promptFieldSpeechRecognitionNotSupported: 'Speech recognition is not supported in this browser',
282
- // promptFieldSend: 'Send',
283
- // promptFieldRecord: 'Record',
284
- // promptFieldStopRecording: 'Stop recording',
285
-
266
+ promptFieldLabel: 'Prompt',
267
+ promptFieldPlaceholder: 'Skriv en prompt…',
268
+ promptFieldPlaceholderWithRecording: 'Skriv eller spela in en prompt…',
269
+ promptFieldPlaceholderListening: 'Lyssnar efter prompt…',
270
+ promptFieldSpeechRecognitionNotSupported: 'Taligenkänning stöds inte av webbläsaren',
271
+ promptFieldSend: 'Skicka',
272
+ promptFieldRecord: 'Spela in',
273
+ promptFieldStopRecording: 'Stoppa inspelning',
286
274
  // Prompt
287
- // promptRerun: 'Run again',
288
- // promptProcessing: 'Processing…',
289
- // promptAppliedChanges: 'Applied changes',
290
-
275
+ promptRerun: 'Kör igen',
276
+ promptProcessing: 'Bearbetar…',
277
+ promptAppliedChanges: 'Tillämpade ändringar',
291
278
  // Prompt changes
292
- // promptChangeGroupDescription: (column: string) => `Group by ${column}`,
293
- // promptChangeAggregationLabel: (column: string, aggregation: string) => `${column} (${aggregation})`,
294
- // promptChangeAggregationDescription: (column: string, aggregation: string) => `Aggregate ${column} (${aggregation})`,
295
- // promptChangeFilterLabel: (column: string, operator: string, value: string) => {
296
- // if (operator === 'is any of') {
297
- // return `${column} is any of: ${value}`;
298
- // }
299
- // return `${column} ${operator} ${value}`;
300
- // },
301
- // promptChangeFilterDescription: (column: string, operator: string, value: string) => {
302
- // if (operator === 'is any of') {
303
- // return `Filter where ${column} is any of: ${value}`;
304
- // }
305
- // return `Filter where ${column} ${operator} ${value}`;
306
- // },
307
- // promptChangeSortDescription: (column: string, direction: string) => `Sort by ${column} (${direction})`,
308
- // promptChangePivotEnableLabel: 'Pivot',
309
- // promptChangePivotEnableDescription: 'Enable pivot',
310
- // promptChangePivotColumnsLabel: (count: number) => `Columns (${count})`,
311
- // promptChangePivotColumnsDescription: (column: string, direction: string) => `${column}${direction ? ` (${direction})` : ''}`,
312
- // promptChangePivotRowsLabel: (count: number) => `Rows (${count})`,
313
- // promptChangePivotValuesLabel: (count: number) => `Values (${count})`,
314
- // promptChangePivotValuesDescription: (column: string, aggregation: string) => `${column} (${aggregation})`,
315
- // promptChangeChartsLabel: (dimensionsCount: number, valuesCount: number) => `Dimensions (${dimensionsCount}), Values (${valuesCount})`,
279
+ promptChangeGroupDescription: column => `Gruppera efter ${column}`,
280
+ promptChangeAggregationLabel: (column, aggregation) => `${column} (${aggregation})`,
281
+ promptChangeAggregationDescription: (column, aggregation) => `Aggregering ${column} (${aggregation})`,
282
+ promptChangeFilterLabel: (column, operator, value) => {
283
+ if (operator === 'is any of') {
284
+ return `${column} är någon av: ${value}`;
285
+ }
286
+ return `${column} ${operator} ${value}`;
287
+ },
288
+ promptChangeFilterDescription: (column, operator, value) => {
289
+ if (operator === 'is any of') {
290
+ return `Filtrera där ${column} är någon av: ${value}`;
291
+ }
292
+ return `Filtrera där ${column} ${operator} ${value}`;
293
+ },
294
+ promptChangeSortDescription: (column, direction) => `Sortera ${column} (${direction})`,
295
+ promptChangePivotEnableLabel: 'Pivot',
296
+ promptChangePivotEnableDescription: 'Aktivera pivot',
297
+ promptChangePivotColumnsLabel: count => `Kolumner (${count})`,
298
+ promptChangePivotColumnsDescription: (column, direction) => `${column}${direction ? ` (${direction})` : ''}`,
299
+ promptChangePivotRowsLabel: count => `Rader (${count})`,
300
+ promptChangePivotValuesLabel: count => `Värden (${count})`,
301
+ promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`,
302
+ promptChangeChartsLabel: (dimensionsCount, valuesCount) => `Dimensioner (${dimensionsCount}), Värden (${valuesCount})`
316
303
  };
317
304
  const svSE = exports.svSE = (0, _getGridLocalization.getGridLocalization)(svSEGrid);
package/locales/svSE.mjs CHANGED
@@ -5,8 +5,7 @@ const svSEGrid = {
5
5
  noResultsOverlayLabel: 'Inga resultat funna.',
6
6
  noColumnsOverlayLabel: 'Inga kolumner',
7
7
  noColumnsOverlayManageColumns: 'Hantera kolumner',
8
- // emptyPivotOverlayLabel: 'Add fields to rows, columns, and values to create a pivot table',
9
-
8
+ emptyPivotOverlayLabel: 'Lägg till fält i rader, kolumner och värden för att skapa en pivottabell',
10
9
  // Density selector toolbar button text
11
10
  toolbarDensity: 'Densitet',
12
11
  toolbarDensityLabel: 'Densitet',
@@ -36,21 +35,17 @@ const svSEGrid = {
36
35
  toolbarExportPrint: 'Skriv ut',
37
36
  toolbarExportExcel: 'Ladda ner som Excel',
38
37
  // Toolbar pivot button
39
- // toolbarPivot: 'Pivot',
40
-
38
+ toolbarPivot: 'Pivot',
41
39
  // Toolbar charts button
42
- // toolbarCharts: 'Charts',
43
-
40
+ toolbarCharts: 'Diagram',
44
41
  // Toolbar AI Assistant button
45
- // toolbarAssistant: 'AI Assistant',
46
-
42
+ toolbarAssistant: 'AI assistent',
47
43
  // Columns management text
48
44
  columnsManagementSearchTitle: 'Sök',
49
45
  columnsManagementNoColumns: 'Inga kolumner',
50
46
  columnsManagementShowHideAllText: 'Visa/Dölj alla',
51
47
  columnsManagementReset: 'Återställ',
52
- // columnsManagementDeleteIconLabel: 'Clear',
53
-
48
+ columnsManagementDeleteIconLabel: 'Rensa',
54
49
  // Filter panel text
55
50
  filterPanelAddFilter: 'Lägg till filter',
56
51
  filterPanelRemoveAll: 'Ta bort alla',
@@ -106,15 +101,14 @@ const svSEGrid = {
106
101
  'headerFilterOperator>=': 'Större eller lika med',
107
102
  'headerFilterOperator<': 'Mindre än',
108
103
  'headerFilterOperator<=': 'Mindre eller lika med',
109
- // headerFilterClear: 'Clear filter',
110
-
104
+ headerFilterClear: 'Rensa filter',
111
105
  // Filter values text
112
106
  filterValueAny: 'något',
113
107
  filterValueTrue: 'sant',
114
108
  filterValueFalse: 'falskt',
115
109
  // Column menu text
116
110
  columnMenuLabel: 'Meny',
117
- // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
111
+ columnMenuAriaLabel: columnName => `${columnName} kolumnmeny`,
118
112
  columnMenuShowColumns: 'Visa kolumner',
119
113
  columnMenuManageColumns: 'Hantera kolumner',
120
114
  columnMenuFilter: 'Filtrera',
@@ -122,9 +116,8 @@ const svSEGrid = {
122
116
  columnMenuUnsort: 'Ta bort sortering',
123
117
  columnMenuSortAsc: 'Sortera stigande',
124
118
  columnMenuSortDesc: 'Sortera fallande',
125
- // columnMenuManagePivot: 'Manage pivot',
126
- // columnMenuManageCharts: 'Manage charts',
127
-
119
+ columnMenuManagePivot: 'Hantera pivot',
120
+ columnMenuManageCharts: 'Hantera diagram',
128
121
  // Column header text
129
122
  columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} aktiva filter` : `${count} aktivt filter`,
130
123
  columnHeaderFiltersLabel: 'Visa filter',
@@ -167,19 +160,19 @@ const svSEGrid = {
167
160
  collapseDetailPanel: 'Kollapsa',
168
161
  // Pagination
169
162
  paginationRowsPerPage: 'Rader per sida:',
170
- // paginationDisplayedRows: ({
171
- // from,
172
- // to,
173
- // count,
174
- // estimated
175
- // }) => {
176
- // const unknownRowCount = count == null || count === -1;
177
- // if (!estimated) {
178
- // return `${formatNumber(from)}–${formatNumber(to)} of ${!unknownRowCount ? formatNumber(count) : `more than ${formatNumber(to)}`}`;
179
- // }
180
- // const estimatedLabel = estimated && estimated > to ? `around ${formatNumber(estimated)}` : `more than ${formatNumber(to)}`;
181
- // return `${formatNumber(from)}–${formatNumber(to)} of ${!unknownRowCount ? formatNumber(count) : estimatedLabel}`;
182
- // },
163
+ paginationDisplayedRows: ({
164
+ from,
165
+ to,
166
+ count,
167
+ estimated
168
+ }) => {
169
+ const unknownRowCount = count == null || count === -1;
170
+ if (!estimated) {
171
+ return `${from}–${to} av ${!unknownRowCount ? count : `fler än ${to}`}`;
172
+ }
173
+ const estimatedLabel = estimated && estimated > to ? `ungefär ${estimated}` : `fler än ${to}`;
174
+ return `${from}–${to} av ${!unknownRowCount ? count : estimatedLabel}`;
175
+ },
183
176
  paginationItemAriaLabel: type => {
184
177
  if (type === 'first') {
185
178
  return 'Gå till första sidan';
@@ -197,115 +190,109 @@ const svSEGrid = {
197
190
  rowReorderingHeaderName: 'Ordna om rader',
198
191
  // Aggregation
199
192
  aggregationMenuItemHeader: 'Aggregering',
200
- // aggregationFunctionLabelNone: 'none',
193
+ aggregationFunctionLabelNone: 'ingen',
201
194
  aggregationFunctionLabelSum: 'summa',
202
195
  aggregationFunctionLabelAvg: 'medel',
203
196
  aggregationFunctionLabelMin: 'min',
204
197
  aggregationFunctionLabelMax: 'max',
205
- aggregationFunctionLabelSize: 'antal'
206
-
198
+ aggregationFunctionLabelSize: 'antal',
207
199
  // Pivot panel
208
- // pivotToggleLabel: 'Pivot',
209
- // pivotRows: 'Rows',
210
- // pivotColumns: 'Columns',
211
- // pivotValues: 'Values',
212
- // pivotCloseButton: 'Close pivot settings',
213
- // pivotSearchButton: 'Search fields',
214
- // pivotSearchControlPlaceholder: 'Search fields',
215
- // pivotSearchControlLabel: 'Search fields',
216
- // pivotSearchControlClear: 'Clear search',
217
- // pivotNoFields: 'No fields',
218
- // pivotMenuMoveUp: 'Move up',
219
- // pivotMenuMoveDown: 'Move down',
220
- // pivotMenuMoveToTop: 'Move to top',
221
- // pivotMenuMoveToBottom: 'Move to bottom',
222
- // pivotMenuRows: 'Rows',
223
- // pivotMenuColumns: 'Columns',
224
- // pivotMenuValues: 'Values',
225
- // pivotMenuOptions: 'Field options',
226
- // pivotMenuAddToRows: 'Add to Rows',
227
- // pivotMenuAddToColumns: 'Add to Columns',
228
- // pivotMenuAddToValues: 'Add to Values',
229
- // pivotMenuRemove: 'Remove',
230
- // pivotDragToRows: 'Drag here to create rows',
231
- // pivotDragToColumns: 'Drag here to create columns',
232
- // pivotDragToValues: 'Drag here to create values',
233
- // pivotYearColumnHeaderName: '(Year)',
234
- // pivotQuarterColumnHeaderName: '(Quarter)',
235
-
200
+ pivotToggleLabel: 'Pivot',
201
+ pivotRows: 'Rader',
202
+ pivotColumns: 'Kolumner',
203
+ pivotValues: 'Värden',
204
+ pivotCloseButton: 'Stäng pivotinställningar',
205
+ pivotSearchButton: 'Sökfält',
206
+ pivotSearchControlPlaceholder: 'Sökfält',
207
+ pivotSearchControlLabel: 'Sökfält',
208
+ pivotSearchControlClear: 'Rensa sökfält',
209
+ pivotNoFields: 'Inga fält',
210
+ pivotMenuMoveUp: 'Flytta upp',
211
+ pivotMenuMoveDown: 'Flytta ned',
212
+ pivotMenuMoveToTop: 'Flytta till toppen',
213
+ pivotMenuMoveToBottom: 'Flytta till botten',
214
+ pivotMenuRows: 'Rader',
215
+ pivotMenuColumns: 'Kolumner',
216
+ pivotMenuValues: 'Värden',
217
+ pivotMenuOptions: 'Fältalternativ',
218
+ pivotMenuAddToRows: 'Lägg till i rader',
219
+ pivotMenuAddToColumns: 'Lägg till i kolumner',
220
+ pivotMenuAddToValues: 'Lägg till i värden',
221
+ pivotMenuRemove: 'Ta bort',
222
+ pivotDragToRows: 'Dra hit för att skapa rader',
223
+ pivotDragToColumns: 'Dra hit för att skapa kolumner',
224
+ pivotDragToValues: 'Dra hit för att skapa värden',
225
+ pivotYearColumnHeaderName: '(År)',
226
+ pivotQuarterColumnHeaderName: '(Kvartal)',
236
227
  // Charts configuration panel
237
- // chartsNoCharts: 'There are no charts available',
238
- // chartsChartNotSelected: 'Select a chart type to configure its options',
239
- // chartsTabChart: 'Chart',
240
- // chartsTabFields: 'Fields',
241
- // chartsTabCustomize: 'Customize',
242
- // chartsCloseButton: 'Close charts configuration',
243
- // chartsSyncButtonLabel: 'Sync chart',
244
- // chartsSearchPlaceholder: 'Search fields',
245
- // chartsSearchLabel: 'Search fields',
246
- // chartsSearchClear: 'Clear search',
247
- // chartsNoFields: 'No fields',
248
- // chartsFieldBlocked: 'This field cannot be added to any section',
249
- // chartsCategories: 'Categories',
250
- // chartsSeries: 'Series',
251
- // chartsMenuAddToDimensions: (dimensionLabel: string) => `Add to ${dimensionLabel}`,
252
- // chartsMenuAddToValues: (valuesLabel: string) => `Add to ${valuesLabel}`,
253
- // chartsMenuMoveUp: 'Move up',
254
- // chartsMenuMoveDown: 'Move down',
255
- // chartsMenuMoveToTop: 'Move to top',
256
- // chartsMenuMoveToBottom: 'Move to bottom',
257
- // chartsMenuOptions: 'Field options',
258
- // chartsMenuRemove: 'Remove',
259
- // chartsDragToDimensions: (dimensionLabel: string) => `Drag here to use column as ${dimensionLabel}`,
260
- // chartsDragToValues: (valuesLabel: string) => `Drag here to use column as ${valuesLabel}`,
261
-
228
+ chartsNoCharts: 'Det finns inga diagram tillgängliga',
229
+ chartsChartNotSelected: 'Välj en diagramtyp för att konfigurera alternativ',
230
+ chartsTabChart: 'Diagram',
231
+ chartsTabFields: 'Fält',
232
+ chartsTabCustomize: 'Anpassa',
233
+ chartsCloseButton: 'Stäng diagramkonfiguration',
234
+ chartsSyncButtonLabel: 'Synkronisera diagram',
235
+ chartsSearchPlaceholder: 'Sök fält',
236
+ chartsSearchLabel: 'Sök fält',
237
+ chartsSearchClear: 'Rensa sökning',
238
+ chartsNoFields: 'Inga fält',
239
+ chartsFieldBlocked: 'Det här fältet kan inte läggas till i någon sektion',
240
+ chartsCategories: 'Kategorier',
241
+ chartsSeries: 'Serie',
242
+ chartsMenuAddToDimensions: dimensionLabel => `Lägg till ${dimensionLabel}`,
243
+ chartsMenuAddToValues: valuesLabel => `Lägg till ${valuesLabel}`,
244
+ chartsMenuMoveUp: 'Flytta upp',
245
+ chartsMenuMoveDown: 'Flytta ned',
246
+ chartsMenuMoveToTop: 'Flytta till toppen',
247
+ chartsMenuMoveToBottom: 'Flytta till botten',
248
+ chartsMenuOptions: 'Fältalternativ',
249
+ chartsMenuRemove: 'Ta bort',
250
+ chartsDragToDimensions: dimensionLabel => `Dra hit för att använda kolumnen som ${dimensionLabel}`,
251
+ chartsDragToValues: valuesLabel => `Dra hit för att använda kolumnen som ${valuesLabel}`,
262
252
  // AI Assistant panel
263
- // aiAssistantPanelTitle: 'AI Assistant',
264
- // aiAssistantPanelClose: 'Close AI Assistant',
265
- // aiAssistantPanelNewConversation: 'New conversation',
266
- // aiAssistantPanelConversationHistory: 'Conversation history',
267
- // aiAssistantPanelEmptyConversation: 'No prompt history',
268
- // aiAssistantSuggestions: 'Suggestions',
269
-
253
+ aiAssistantPanelTitle: 'AI assistent',
254
+ aiAssistantPanelClose: 'Stäng AI assistent',
255
+ aiAssistantPanelNewConversation: 'Ny konversation',
256
+ aiAssistantPanelConversationHistory: 'Konversationshistorik',
257
+ aiAssistantPanelEmptyConversation: 'Ingen prompthistorik',
258
+ aiAssistantSuggestions: 'Förslag',
270
259
  // Prompt field
271
- // promptFieldLabel: 'Prompt',
272
- // promptFieldPlaceholder: 'Type a prompt…',
273
- // promptFieldPlaceholderWithRecording: 'Type or record a prompt…',
274
- // promptFieldPlaceholderListening: 'Listening for prompt…',
275
- // promptFieldSpeechRecognitionNotSupported: 'Speech recognition is not supported in this browser',
276
- // promptFieldSend: 'Send',
277
- // promptFieldRecord: 'Record',
278
- // promptFieldStopRecording: 'Stop recording',
279
-
260
+ promptFieldLabel: 'Prompt',
261
+ promptFieldPlaceholder: 'Skriv en prompt…',
262
+ promptFieldPlaceholderWithRecording: 'Skriv eller spela in en prompt…',
263
+ promptFieldPlaceholderListening: 'Lyssnar efter prompt…',
264
+ promptFieldSpeechRecognitionNotSupported: 'Taligenkänning stöds inte av webbläsaren',
265
+ promptFieldSend: 'Skicka',
266
+ promptFieldRecord: 'Spela in',
267
+ promptFieldStopRecording: 'Stoppa inspelning',
280
268
  // Prompt
281
- // promptRerun: 'Run again',
282
- // promptProcessing: 'Processing…',
283
- // promptAppliedChanges: 'Applied changes',
284
-
269
+ promptRerun: 'Kör igen',
270
+ promptProcessing: 'Bearbetar…',
271
+ promptAppliedChanges: 'Tillämpade ändringar',
285
272
  // Prompt changes
286
- // promptChangeGroupDescription: (column: string) => `Group by ${column}`,
287
- // promptChangeAggregationLabel: (column: string, aggregation: string) => `${column} (${aggregation})`,
288
- // promptChangeAggregationDescription: (column: string, aggregation: string) => `Aggregate ${column} (${aggregation})`,
289
- // promptChangeFilterLabel: (column: string, operator: string, value: string) => {
290
- // if (operator === 'is any of') {
291
- // return `${column} is any of: ${value}`;
292
- // }
293
- // return `${column} ${operator} ${value}`;
294
- // },
295
- // promptChangeFilterDescription: (column: string, operator: string, value: string) => {
296
- // if (operator === 'is any of') {
297
- // return `Filter where ${column} is any of: ${value}`;
298
- // }
299
- // return `Filter where ${column} ${operator} ${value}`;
300
- // },
301
- // promptChangeSortDescription: (column: string, direction: string) => `Sort by ${column} (${direction})`,
302
- // promptChangePivotEnableLabel: 'Pivot',
303
- // promptChangePivotEnableDescription: 'Enable pivot',
304
- // promptChangePivotColumnsLabel: (count: number) => `Columns (${count})`,
305
- // promptChangePivotColumnsDescription: (column: string, direction: string) => `${column}${direction ? ` (${direction})` : ''}`,
306
- // promptChangePivotRowsLabel: (count: number) => `Rows (${count})`,
307
- // promptChangePivotValuesLabel: (count: number) => `Values (${count})`,
308
- // promptChangePivotValuesDescription: (column: string, aggregation: string) => `${column} (${aggregation})`,
309
- // promptChangeChartsLabel: (dimensionsCount: number, valuesCount: number) => `Dimensions (${dimensionsCount}), Values (${valuesCount})`,
273
+ promptChangeGroupDescription: column => `Gruppera efter ${column}`,
274
+ promptChangeAggregationLabel: (column, aggregation) => `${column} (${aggregation})`,
275
+ promptChangeAggregationDescription: (column, aggregation) => `Aggregering ${column} (${aggregation})`,
276
+ promptChangeFilterLabel: (column, operator, value) => {
277
+ if (operator === 'is any of') {
278
+ return `${column} är någon av: ${value}`;
279
+ }
280
+ return `${column} ${operator} ${value}`;
281
+ },
282
+ promptChangeFilterDescription: (column, operator, value) => {
283
+ if (operator === 'is any of') {
284
+ return `Filtrera där ${column} är någon av: ${value}`;
285
+ }
286
+ return `Filtrera där ${column} ${operator} ${value}`;
287
+ },
288
+ promptChangeSortDescription: (column, direction) => `Sortera ${column} (${direction})`,
289
+ promptChangePivotEnableLabel: 'Pivot',
290
+ promptChangePivotEnableDescription: 'Aktivera pivot',
291
+ promptChangePivotColumnsLabel: count => `Kolumner (${count})`,
292
+ promptChangePivotColumnsDescription: (column, direction) => `${column}${direction ? ` (${direction})` : ''}`,
293
+ promptChangePivotRowsLabel: count => `Rader (${count})`,
294
+ promptChangePivotValuesLabel: count => `Värden (${count})`,
295
+ promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`,
296
+ promptChangeChartsLabel: (dimensionsCount, valuesCount) => `Dimensioner (${dimensionsCount}), Värden (${valuesCount})`
310
297
  };
311
298
  export const svSE = getGridLocalization(svSEGrid);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid",
3
- "version": "9.2.0",
3
+ "version": "9.3.0",
4
4
  "author": "MUI Team",
5
5
  "description": "The Community plan edition of the MUI X Data Grid components.",
6
6
  "license": "MIT",
@@ -42,8 +42,8 @@
42
42
  "clsx": "^2.1.1",
43
43
  "prop-types": "^15.8.1",
44
44
  "use-sync-external-store": "^1.6.0",
45
- "@mui/x-internals": "^9.1.0",
46
- "@mui/x-virtualizer": "9.0.0-alpha.5"
45
+ "@mui/x-virtualizer": "9.0.0-alpha.7",
46
+ "@mui/x-internals": "^9.1.0"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@emotion/react": "^11.9.0",