@mui/x-data-grid 9.0.0-beta.0 → 9.0.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 (170) hide show
  1. package/CHANGELOG.md +267 -1
  2. package/DataGrid/DataGrid.js +1 -0
  3. package/DataGrid/DataGrid.mjs +1 -0
  4. package/components/GridColumnUnsortedIcon.d.mts +5 -2
  5. package/components/GridColumnUnsortedIcon.d.ts +5 -2
  6. package/components/GridColumnUnsortedIcon.js +20 -6
  7. package/components/GridColumnUnsortedIcon.mjs +20 -5
  8. package/components/GridDetailPanels.d.mts +1 -4
  9. package/components/GridDetailPanels.d.ts +1 -4
  10. package/components/GridPinnedRows.d.mts +0 -2
  11. package/components/GridPinnedRows.d.ts +0 -2
  12. package/components/GridRowDragAndDropOverlay.js +1 -1
  13. package/components/GridRowDragAndDropOverlay.mjs +2 -2
  14. package/components/GridScrollbarFillerCell.js +9 -1
  15. package/components/GridScrollbarFillerCell.mjs +9 -1
  16. package/components/cell/GridCell.js +4 -2
  17. package/components/cell/GridCell.mjs +4 -2
  18. package/components/columnHeaders/GridColumnGroupHeader.js +5 -3
  19. package/components/columnHeaders/GridColumnGroupHeader.mjs +5 -3
  20. package/components/columnHeaders/GridColumnHeaderItem.js +3 -1
  21. package/components/columnHeaders/GridColumnHeaderItem.mjs +3 -1
  22. package/components/containers/GridRootStyles.js +86 -5
  23. package/components/containers/GridRootStyles.mjs +86 -5
  24. package/components/index.d.mts +3 -1
  25. package/components/index.d.ts +3 -1
  26. package/components/index.js +10 -2
  27. package/components/index.mjs +2 -1
  28. package/components/panel/filterPanel/GridFilterForm.js +1 -1
  29. package/components/panel/filterPanel/GridFilterForm.mjs +1 -1
  30. package/components/virtualization/GridBottomContainer.js +4 -1
  31. package/components/virtualization/GridBottomContainer.mjs +4 -1
  32. package/components/virtualization/GridVirtualScroller.js +55 -30
  33. package/components/virtualization/GridVirtualScroller.mjs +56 -31
  34. package/components/virtualization/GridVirtualScrollerContent.js +5 -1
  35. package/components/virtualization/GridVirtualScrollerContent.mjs +5 -1
  36. package/constants/gridClasses.d.mts +40 -1
  37. package/constants/gridClasses.d.ts +40 -1
  38. package/constants/gridClasses.js +2 -2
  39. package/constants/gridClasses.mjs +2 -2
  40. package/constants/localeTextConstants.js +1 -1
  41. package/constants/localeTextConstants.mjs +1 -1
  42. package/hooks/core/useGridVirtualizer.js +1 -0
  43. package/hooks/core/useGridVirtualizer.mjs +1 -0
  44. package/hooks/features/columnHeaders/useGridColumnHeaders.js +8 -4
  45. package/hooks/features/columnHeaders/useGridColumnHeaders.mjs +8 -4
  46. package/hooks/features/dimensions/useGridDimensions.js +1 -0
  47. package/hooks/features/dimensions/useGridDimensions.mjs +1 -0
  48. package/hooks/features/export/useGridPrintExport.js +5 -1
  49. package/hooks/features/export/useGridPrintExport.mjs +5 -1
  50. package/hooks/features/focus/useGridFocus.js +4 -0
  51. package/hooks/features/focus/useGridFocus.mjs +4 -0
  52. package/hooks/features/rowSelection/useGridRowSelection.js +17 -1
  53. package/hooks/features/rowSelection/useGridRowSelection.mjs +17 -1
  54. package/hooks/features/virtualization/gridVirtualizationSelectors.d.mts +8 -0
  55. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +8 -0
  56. package/hooks/features/virtualization/gridVirtualizationSelectors.js +8 -1
  57. package/hooks/features/virtualization/gridVirtualizationSelectors.mjs +7 -0
  58. package/hooks/features/virtualization/index.d.mts +1 -1
  59. package/hooks/features/virtualization/index.d.ts +1 -1
  60. package/hooks/features/virtualization/index.js +44 -13
  61. package/hooks/features/virtualization/index.mjs +1 -1
  62. package/hooks/utils/usePinnedScrollOffset.d.mts +3 -0
  63. package/hooks/utils/usePinnedScrollOffset.d.ts +3 -0
  64. package/hooks/utils/usePinnedScrollOffset.js +27 -0
  65. package/hooks/utils/usePinnedScrollOffset.mjs +21 -0
  66. package/index.js +1 -1
  67. package/index.mjs +1 -1
  68. package/internals/index.d.mts +3 -2
  69. package/internals/index.d.ts +3 -2
  70. package/internals/index.js +29 -0
  71. package/internals/index.mjs +3 -2
  72. package/locales/arSD.js +1 -1
  73. package/locales/arSD.mjs +1 -1
  74. package/locales/beBY.js +1 -1
  75. package/locales/beBY.mjs +1 -1
  76. package/locales/bgBG.js +1 -1
  77. package/locales/bgBG.mjs +1 -1
  78. package/locales/bnBD.js +1 -1
  79. package/locales/bnBD.mjs +1 -1
  80. package/locales/caES.js +1 -1
  81. package/locales/caES.mjs +1 -1
  82. package/locales/csCZ.js +1 -1
  83. package/locales/csCZ.mjs +1 -1
  84. package/locales/daDK.js +1 -1
  85. package/locales/daDK.mjs +1 -1
  86. package/locales/deDE.js +1 -1
  87. package/locales/deDE.mjs +1 -1
  88. package/locales/elGR.js +1 -1
  89. package/locales/elGR.mjs +1 -1
  90. package/locales/esES.js +1 -1
  91. package/locales/esES.mjs +1 -1
  92. package/locales/faIR.js +1 -1
  93. package/locales/faIR.mjs +1 -1
  94. package/locales/fiFI.js +1 -1
  95. package/locales/fiFI.mjs +1 -1
  96. package/locales/frFR.js +1 -1
  97. package/locales/frFR.mjs +1 -1
  98. package/locales/heIL.js +1 -1
  99. package/locales/heIL.mjs +1 -1
  100. package/locales/hrHR.js +1 -1
  101. package/locales/hrHR.mjs +1 -1
  102. package/locales/huHU.js +1 -1
  103. package/locales/huHU.mjs +1 -1
  104. package/locales/hyAM.js +1 -1
  105. package/locales/hyAM.mjs +1 -1
  106. package/locales/idID.js +1 -1
  107. package/locales/idID.mjs +1 -1
  108. package/locales/isIS.js +1 -1
  109. package/locales/isIS.mjs +1 -1
  110. package/locales/itIT.js +1 -1
  111. package/locales/itIT.mjs +1 -1
  112. package/locales/jaJP.js +1 -1
  113. package/locales/jaJP.mjs +1 -1
  114. package/locales/koKR.js +1 -1
  115. package/locales/koKR.mjs +1 -1
  116. package/locales/nbNO.js +1 -1
  117. package/locales/nbNO.mjs +1 -1
  118. package/locales/nlNL.js +1 -1
  119. package/locales/nlNL.mjs +1 -1
  120. package/locales/nnNO.js +1 -1
  121. package/locales/nnNO.mjs +1 -1
  122. package/locales/plPL.js +1 -1
  123. package/locales/plPL.mjs +1 -1
  124. package/locales/ptBR.js +1 -1
  125. package/locales/ptBR.mjs +1 -1
  126. package/locales/ptPT.js +1 -1
  127. package/locales/ptPT.mjs +1 -1
  128. package/locales/roRO.js +1 -1
  129. package/locales/roRO.mjs +1 -1
  130. package/locales/ruRU.js +1 -1
  131. package/locales/ruRU.mjs +1 -1
  132. package/locales/skSK.js +1 -1
  133. package/locales/skSK.mjs +1 -1
  134. package/locales/svSE.js +1 -1
  135. package/locales/svSE.mjs +1 -1
  136. package/locales/thTH.js +1 -1
  137. package/locales/thTH.mjs +1 -1
  138. package/locales/trTR.js +1 -1
  139. package/locales/trTR.mjs +1 -1
  140. package/locales/ukUA.js +1 -1
  141. package/locales/ukUA.mjs +1 -1
  142. package/locales/urPK.js +1 -1
  143. package/locales/urPK.mjs +1 -1
  144. package/locales/viVN.js +1 -1
  145. package/locales/viVN.mjs +1 -1
  146. package/locales/zhCN.js +1 -1
  147. package/locales/zhCN.mjs +1 -1
  148. package/locales/zhHK.js +1 -1
  149. package/locales/zhHK.mjs +1 -1
  150. package/locales/zhTW.js +1 -1
  151. package/locales/zhTW.mjs +1 -1
  152. package/material/index.js +26 -21
  153. package/material/index.mjs +26 -21
  154. package/material/variables.js +4 -4
  155. package/material/variables.mjs +4 -5
  156. package/models/api/gridLocaleTextApi.d.mts +1 -1
  157. package/models/api/gridLocaleTextApi.d.ts +1 -1
  158. package/models/gridBaseSlots.d.mts +4 -2
  159. package/models/gridBaseSlots.d.ts +4 -2
  160. package/models/props/DataGridProps.d.mts +9 -0
  161. package/models/props/DataGridProps.d.ts +9 -0
  162. package/package.json +6 -6
  163. package/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.mjs +2 -2
  164. package/utils/cleanupTracking/TimerBasedCleanupTracking.mjs +2 -2
  165. package/utils/domUtils.js +3 -2
  166. package/utils/domUtils.mjs +3 -2
  167. package/utils/keyboardUtils.d.mts +2 -0
  168. package/utils/keyboardUtils.d.ts +2 -0
  169. package/utils/keyboardUtils.js +8 -0
  170. package/utils/keyboardUtils.mjs +6 -0
@@ -2,13 +2,15 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { styled } from '@mui/material/styles';
4
4
  import composeClasses from '@mui/utils/composeClasses';
5
+ import clsx from 'clsx';
6
+ import { Virtualization } from '@mui/x-virtualizer';
5
7
  import { gridHasBottomFillerSelector, gridHasScrollXSelector, gridHasScrollYSelector } from "../../hooks/features/dimensions/gridDimensionsSelectors.mjs";
6
8
  import { gridRowTreeSelector } from "../../hooks/features/rows/index.mjs";
7
9
  import { GridScrollArea } from "../GridScrollArea.mjs";
8
10
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.mjs";
9
11
  import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.mjs";
10
12
  import { useGridSelector } from "../../hooks/utils/useGridSelector.mjs";
11
- import { getDataGridUtilityClass } from "../../constants/gridClasses.mjs";
13
+ import { getDataGridUtilityClass, gridClasses } from "../../constants/gridClasses.mjs";
12
14
  import { useGridOverlays } from "../../hooks/features/overlays/useGridOverlays.mjs";
13
15
  import { GridHeaders } from "../GridHeaders.mjs";
14
16
  import { GridMainContainer as Container } from "./GridMainContainer.mjs";
@@ -50,9 +52,9 @@ const Scroller = styled('div', {
50
52
  height: '100%',
51
53
  flexGrow: 1,
52
54
  overflow: 'scroll',
53
- scrollbarWidth: 'none' /* Firefox */,
54
55
  display: 'flex',
55
56
  flexDirection: 'column',
57
+ scrollbarWidth: 'none' /* Firefox */,
56
58
  '&::-webkit-scrollbar': {
57
59
  display: 'none' /* Safari and Chrome */
58
60
  },
@@ -62,6 +64,23 @@ const Scroller = styled('div', {
62
64
  // See https://github.com/mui/mui-x/issues/10547
63
65
  zIndex: 0
64
66
  });
67
+ const Viewport = styled('div', {
68
+ slot: 'internal',
69
+ shouldForwardProp: undefined
70
+ })({
71
+ display: 'contents',
72
+ [`.${gridClasses['virtualizer--layoutControlled']} &`]: {
73
+ display: 'inline-block',
74
+ position: 'sticky',
75
+ top: 0,
76
+ left: 0,
77
+ overflow: 'hidden',
78
+ scrollbarWidth: 'none' /* Firefox */,
79
+ '&::-webkit-scrollbar': {
80
+ display: 'none' /* Safari and Chrome */
81
+ }
82
+ }
83
+ });
65
84
  const hasPinnedRightSelector = apiRef => apiRef.current.state.dimensions.rightPinnedWidth > 0;
66
85
  function GridVirtualScroller(props) {
67
86
  const apiRef = useGridPrivateApiContext();
@@ -83,20 +102,26 @@ function GridVirtualScroller(props) {
83
102
  loadingOverlayVariant
84
103
  };
85
104
  const classes = useUtilityClasses(ownerState);
86
- const virtualScroller = useGridVirtualizer().api.getters;
105
+ const virtualizer = useGridVirtualizer();
106
+ const layoutMode = virtualizer.store.use(Virtualization.selectors.layoutMode);
107
+ const hasContentFiller = layoutMode === 'uncontrolled' && loadingOverlayVariant !== 'skeleton';
87
108
  const {
88
109
  getContainerProps,
89
110
  getScrollerProps,
111
+ getScrollerContentProps,
112
+ getViewportProps,
90
113
  getContentProps,
91
114
  getPositionerProps,
92
115
  getScrollbarVerticalProps,
93
116
  getScrollbarHorizontalProps,
94
117
  getRows,
95
- getScrollAreaProps
96
- } = virtualScroller;
118
+ getScrollAreaProps,
119
+ getContainerVerticalProps
120
+ } = virtualizer.api.getters;
97
121
  const rows = getRows(undefined, gridRowTreeSelector(apiRef));
122
+ const containerVerticalProps = getContainerVerticalProps();
98
123
  return /*#__PURE__*/_jsxs(Container, _extends({
99
- className: classes.root
124
+ className: clsx(classes.root, layoutMode === 'controlled' && gridClasses['virtualizer--layoutControlled'])
100
125
  }, getContainerProps(), {
101
126
  ownerState: ownerState,
102
127
  children: [/*#__PURE__*/_jsx(GridScrollArea, _extends({
@@ -107,35 +132,35 @@ function GridVirtualScroller(props) {
107
132
  scrollDirection: "up"
108
133
  }, getScrollAreaProps())), /*#__PURE__*/_jsx(GridScrollArea, _extends({
109
134
  scrollDirection: "down"
110
- }, getScrollAreaProps())), /*#__PURE__*/_jsxs(Scroller, _extends({
135
+ }, getScrollAreaProps())), /*#__PURE__*/_jsx(Scroller, _extends({
111
136
  className: classes.scroller
112
137
  }, getScrollerProps(), {
113
138
  ownerState: ownerState,
114
- children: [/*#__PURE__*/_jsxs(TopContainer, {
115
- children: [!rootProps.listView && /*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
116
- position: "top",
117
- virtualScroller: virtualScroller
118
- })]
119
- }), overlayType && /*#__PURE__*/_jsx(GridOverlayWrapper, {
120
- overlayType: overlayType,
121
- loadingOverlayVariant: loadingOverlayVariant,
122
- children: /*#__PURE__*/_jsx(Overlay, _extends({}, rootProps.slotProps?.[overlayType]))
123
- }), /*#__PURE__*/_jsx(Content, _extends({}, getContentProps(), {
124
- children: /*#__PURE__*/_jsxs(RenderZone, _extends({
125
- role: "rowgroup"
126
- }, getPositionerProps(), {
127
- children: [rows, /*#__PURE__*/_jsx(rootProps.slots.detailPanels, {
128
- virtualScroller: virtualScroller
129
- })]
139
+ children: /*#__PURE__*/_jsx(Content, _extends({}, getScrollerContentProps(), {
140
+ children: /*#__PURE__*/_jsxs(Viewport, _extends({}, getViewportProps(), {
141
+ children: [/*#__PURE__*/_jsxs(TopContainer, _extends({}, containerVerticalProps, {
142
+ children: [!rootProps.listView && /*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
143
+ position: "top"
144
+ })]
145
+ })), overlayType && /*#__PURE__*/_jsx(GridOverlayWrapper, {
146
+ overlayType: overlayType,
147
+ loadingOverlayVariant: loadingOverlayVariant,
148
+ children: /*#__PURE__*/_jsx(Overlay, _extends({}, rootProps.slotProps?.[overlayType]))
149
+ }), /*#__PURE__*/_jsxs(RenderZone, _extends({
150
+ role: "rowgroup"
151
+ }, getPositionerProps(), {
152
+ children: [rows, /*#__PURE__*/_jsx(rootProps.slots.detailPanels, {})]
153
+ })), hasContentFiller && /*#__PURE__*/_jsx("div", _extends({
154
+ className: gridClasses.contentFiller
155
+ }, getContentProps())), hasBottomFiller && /*#__PURE__*/_jsx(SpaceFiller, {
156
+ rowsLength: rows.length
157
+ }), /*#__PURE__*/_jsx(rootProps.slots.bottomContainer, _extends({}, containerVerticalProps, {
158
+ children: /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
159
+ position: "bottom"
160
+ })
161
+ }))]
130
162
  }))
131
- })), hasBottomFiller && /*#__PURE__*/_jsx(SpaceFiller, {
132
- rowsLength: rows.length
133
- }), /*#__PURE__*/_jsx(rootProps.slots.bottomContainer, {
134
- children: /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
135
- position: "bottom",
136
- virtualScroller: virtualScroller
137
- })
138
- })]
163
+ }))
139
164
  })), hasScrollX && /*#__PURE__*/_jsxs(React.Fragment, {
140
165
  children: [rootProps.pinnedColumnsSectionSeparator?.endsWith('shadow') && /*#__PURE__*/_jsx(ScrollShadows, {
141
166
  position: "horizontal"
@@ -34,7 +34,11 @@ const VirtualScrollerContentRoot = (0, _system.styled)('div', {
34
34
  } = props;
35
35
  return [styles.virtualScrollerContent, ownerState.overflowedContent && styles['virtualScrollerContent--overflowed']];
36
36
  }
37
- })({});
37
+ })({
38
+ flex: '1 0 auto',
39
+ display: 'flex',
40
+ flexDirection: 'column'
41
+ });
38
42
  const GridVirtualScrollerContent = exports.GridVirtualScrollerContent = (0, _forwardRef.forwardRef)(function GridVirtualScrollerContent(props, ref) {
39
43
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
40
44
  const overflowedContent = !rootProps.autoHeight && props.style?.minHeight === 'auto';
@@ -27,7 +27,11 @@ const VirtualScrollerContentRoot = styled('div', {
27
27
  } = props;
28
28
  return [styles.virtualScrollerContent, ownerState.overflowedContent && styles['virtualScrollerContent--overflowed']];
29
29
  }
30
- })({});
30
+ })({
31
+ flex: '1 0 auto',
32
+ display: 'flex',
33
+ flexDirection: 'column'
34
+ });
31
35
  const GridVirtualScrollerContent = forwardRef(function GridVirtualScrollerContent(props, ref) {
32
36
  const rootProps = useGridRootProps();
33
37
  const overflowedContent = !rootProps.autoHeight && props.style?.minHeight === 'auto';
@@ -136,6 +136,30 @@ export interface GridClasses {
136
136
  * Styles applied to the cell element if it is at the right edge of a cell selection range.
137
137
  */
138
138
  'cell--rangeRight': string;
139
+ /**
140
+ * Styles applied to the cell element when it displays the fill handle.
141
+ */
142
+ 'cell--withFillHandle': string;
143
+ /**
144
+ * Styles applied to the cell element when it is in the fill preview range.
145
+ */
146
+ 'cell--fillPreview': string;
147
+ /**
148
+ * Styles applied to the cell element if it is at the top edge of the fill preview range.
149
+ */
150
+ 'cell--fillPreviewTop': string;
151
+ /**
152
+ * Styles applied to the cell element if it is at the bottom edge of the fill preview range.
153
+ */
154
+ 'cell--fillPreviewBottom': string;
155
+ /**
156
+ * Styles applied to the cell element if it is at the left edge of the fill preview range.
157
+ */
158
+ 'cell--fillPreviewLeft': string;
159
+ /**
160
+ * Styles applied to the cell element if it is at the right edge of the fill preview range.
161
+ */
162
+ 'cell--fillPreviewRight': string;
139
163
  /**
140
164
  * Styles applied to the cell element if it is pinned to the left.
141
165
  */
@@ -336,6 +360,11 @@ export interface GridClasses {
336
360
  * Styles applied to the columns management empty text element.
337
361
  */
338
362
  columnsManagementEmptyText: string;
363
+ /**
364
+ * Styles applied to the content filler.
365
+ * @ignore - do not document.
366
+ */
367
+ contentFiller: string;
339
368
  /**
340
369
  * Styles applied to the top container.
341
370
  */
@@ -408,6 +437,11 @@ export interface GridClasses {
408
437
  * @ignore - do not document.
409
438
  */
410
439
  'filler--pinnedRight': string;
440
+ /**
441
+ * Styles applied to the horizontal filler element.
442
+ * @ignore - do not document.
443
+ */
444
+ 'filler--horizontal': string;
411
445
  /**
412
446
  * Styles applied to the root of the filter form component.
413
447
  */
@@ -604,6 +638,11 @@ export interface GridClasses {
604
638
  * @ignore - do not document.
605
639
  */
606
640
  'root--noToolbar': string;
641
+ /**
642
+ * Styles applied to the root element when layout mode is "controlled".
643
+ * @ignore - do not document.
644
+ */
645
+ 'virtualizer--layoutControlled': string;
607
646
  /**
608
647
  * Styles applied to the row element if the row is editable.
609
648
  */
@@ -974,6 +1013,6 @@ export declare function getDataGridUtilityClass(slot: string): string;
974
1013
  */
975
1014
  export declare const gridClassesOverrides: {
976
1015
  readonly root: ["autoHeight", "autosizing", "root--densityStandard", "root--densityComfortable", "root--densityCompact", "root--disableUserSelection", "root--noToolbar", "withVerticalBorder"];
977
- readonly children: ["actionsCell", "booleanCell", "cell", "cell--editable", "cell--editing", "cell--flex", "cell--pinnedLeft", "cell--pinnedRight", "cell--rangeBottom", "cell--rangeLeft", "cell--rangeRight", "cell--rangeTop", "cell--selectionMode", "cell--textCenter", "cell--textLeft", "cell--textRight", "cell--withLeftBorder", "cell--withRightBorder", "cellCheckbox", "cellEmpty", "cellOffsetLeft", "cellSkeleton", "checkboxInput", "columnHeader", "columnHeader--alignCenter", "columnHeader--alignLeft", "columnHeader--alignRight", "columnHeader--dragging", "columnHeader--emptyGroup", "columnHeader--filledGroup", "columnHeader--filtered", "columnHeader--last", "columnHeader--moving", "columnHeader--numeric", "columnHeader--pinnedLeft", "columnHeader--pinnedRight", "columnHeader--siblingFocused", "columnHeader--sortable", "columnHeader--sorted", "columnHeader--withLeftBorder", "columnHeader--withRightBorder", "columnHeaderCheckbox", "columnHeaderDraggableContainer", "columnHeaderTitleContainer", "columnHeaderTitleContainerContent", "columnSeparator", "columnSeparator--resizable", "columnSeparator--resizing", "columnSeparator--sideLeft", "columnSeparator--sideRight", "container--bottom", "container--top", "detailPanelToggleCell", "detailPanelToggleCell--expanded", "editBooleanCell", "filterIcon", "filler--borderBottom", "filler--pinnedLeft", "filler--pinnedRight", "groupingCriteriaCell", "groupingCriteriaCellLoadingContainer", "groupingCriteriaCellToggle", "headerFilterRow", "iconSeparator", "menuIcon", "menuIconButton", "menuList", "menuOpen", "overlayWrapperInner", "pinnedRows", "pinnedRows--bottom", "pinnedRows--top", "row", "row--borderBottom", "row--detailPanelExpanded", "row--dragging", "row--dynamicHeight", "row--editable", "row--editing", "row--firstVisible", "row--lastVisible", "rowReorderCell", "rowReorderCell--draggable", "rowReorderCellContainer", "rowReorderCellPlaceholder", "rowSkeleton", "scrollbar", "scrollbar--horizontal", "scrollbar--vertical", "scrollbarFiller", "scrollbarFiller--pinnedRight", "sortIcon", "treeDataGroupingCell", "treeDataGroupingCellLoadingContainer", "treeDataGroupingCellToggle", "withBorderColor", "row--beingDragged"];
1016
+ readonly children: ["actionsCell", "booleanCell", "cell", "cell--editable", "cell--editing", "cell--flex", "cell--pinnedLeft", "cell--pinnedRight", "cell--rangeBottom", "cell--rangeLeft", "cell--rangeRight", "cell--rangeTop", "cell--withFillHandle", "cell--fillPreview", "cell--fillPreviewTop", "cell--fillPreviewBottom", "cell--fillPreviewLeft", "cell--fillPreviewRight", "cell--selectionMode", "cell--textCenter", "cell--textLeft", "cell--textRight", "cell--withLeftBorder", "cell--withRightBorder", "cellCheckbox", "cellEmpty", "cellOffsetLeft", "cellSkeleton", "checkboxInput", "columnHeader", "columnHeader--alignCenter", "columnHeader--alignLeft", "columnHeader--alignRight", "columnHeader--dragging", "columnHeader--emptyGroup", "columnHeader--filledGroup", "columnHeader--filtered", "columnHeader--last", "columnHeader--moving", "columnHeader--numeric", "columnHeader--pinnedLeft", "columnHeader--pinnedRight", "columnHeader--siblingFocused", "columnHeader--sortable", "columnHeader--sorted", "columnHeader--withLeftBorder", "columnHeader--withRightBorder", "columnHeaderCheckbox", "columnHeaderDraggableContainer", "columnHeaderTitleContainer", "columnHeaderTitleContainerContent", "columnSeparator", "columnSeparator--resizable", "columnSeparator--resizing", "columnSeparator--sideLeft", "columnSeparator--sideRight", "container--bottom", "container--top", "detailPanelToggleCell", "detailPanelToggleCell--expanded", "editBooleanCell", "filterIcon", "filler--borderBottom", "filler--pinnedLeft", "filler--pinnedRight", "groupingCriteriaCell", "groupingCriteriaCellLoadingContainer", "groupingCriteriaCellToggle", "headerFilterRow", "iconSeparator", "menuIcon", "menuIconButton", "menuList", "menuOpen", "overlayWrapperInner", "pinnedRows", "pinnedRows--bottom", "pinnedRows--top", "row", "row--borderBottom", "row--detailPanelExpanded", "row--dragging", "row--dynamicHeight", "row--editable", "row--editing", "row--firstVisible", "row--lastVisible", "rowReorderCell", "rowReorderCell--draggable", "rowReorderCellContainer", "rowReorderCellPlaceholder", "rowSkeleton", "scrollbar", "scrollbar--horizontal", "scrollbar--vertical", "scrollbarFiller", "scrollbarFiller--pinnedRight", "sortIcon", "treeDataGroupingCell", "treeDataGroupingCellLoadingContainer", "treeDataGroupingCellToggle", "withBorderColor", "row--beingDragged"];
978
1017
  };
979
1018
  export declare const gridClasses: Record<keyof GridClasses, string>;
@@ -136,6 +136,30 @@ export interface GridClasses {
136
136
  * Styles applied to the cell element if it is at the right edge of a cell selection range.
137
137
  */
138
138
  'cell--rangeRight': string;
139
+ /**
140
+ * Styles applied to the cell element when it displays the fill handle.
141
+ */
142
+ 'cell--withFillHandle': string;
143
+ /**
144
+ * Styles applied to the cell element when it is in the fill preview range.
145
+ */
146
+ 'cell--fillPreview': string;
147
+ /**
148
+ * Styles applied to the cell element if it is at the top edge of the fill preview range.
149
+ */
150
+ 'cell--fillPreviewTop': string;
151
+ /**
152
+ * Styles applied to the cell element if it is at the bottom edge of the fill preview range.
153
+ */
154
+ 'cell--fillPreviewBottom': string;
155
+ /**
156
+ * Styles applied to the cell element if it is at the left edge of the fill preview range.
157
+ */
158
+ 'cell--fillPreviewLeft': string;
159
+ /**
160
+ * Styles applied to the cell element if it is at the right edge of the fill preview range.
161
+ */
162
+ 'cell--fillPreviewRight': string;
139
163
  /**
140
164
  * Styles applied to the cell element if it is pinned to the left.
141
165
  */
@@ -336,6 +360,11 @@ export interface GridClasses {
336
360
  * Styles applied to the columns management empty text element.
337
361
  */
338
362
  columnsManagementEmptyText: string;
363
+ /**
364
+ * Styles applied to the content filler.
365
+ * @ignore - do not document.
366
+ */
367
+ contentFiller: string;
339
368
  /**
340
369
  * Styles applied to the top container.
341
370
  */
@@ -408,6 +437,11 @@ export interface GridClasses {
408
437
  * @ignore - do not document.
409
438
  */
410
439
  'filler--pinnedRight': string;
440
+ /**
441
+ * Styles applied to the horizontal filler element.
442
+ * @ignore - do not document.
443
+ */
444
+ 'filler--horizontal': string;
411
445
  /**
412
446
  * Styles applied to the root of the filter form component.
413
447
  */
@@ -604,6 +638,11 @@ export interface GridClasses {
604
638
  * @ignore - do not document.
605
639
  */
606
640
  'root--noToolbar': string;
641
+ /**
642
+ * Styles applied to the root element when layout mode is "controlled".
643
+ * @ignore - do not document.
644
+ */
645
+ 'virtualizer--layoutControlled': string;
607
646
  /**
608
647
  * Styles applied to the row element if the row is editable.
609
648
  */
@@ -974,6 +1013,6 @@ export declare function getDataGridUtilityClass(slot: string): string;
974
1013
  */
975
1014
  export declare const gridClassesOverrides: {
976
1015
  readonly root: ["autoHeight", "autosizing", "root--densityStandard", "root--densityComfortable", "root--densityCompact", "root--disableUserSelection", "root--noToolbar", "withVerticalBorder"];
977
- readonly children: ["actionsCell", "booleanCell", "cell", "cell--editable", "cell--editing", "cell--flex", "cell--pinnedLeft", "cell--pinnedRight", "cell--rangeBottom", "cell--rangeLeft", "cell--rangeRight", "cell--rangeTop", "cell--selectionMode", "cell--textCenter", "cell--textLeft", "cell--textRight", "cell--withLeftBorder", "cell--withRightBorder", "cellCheckbox", "cellEmpty", "cellOffsetLeft", "cellSkeleton", "checkboxInput", "columnHeader", "columnHeader--alignCenter", "columnHeader--alignLeft", "columnHeader--alignRight", "columnHeader--dragging", "columnHeader--emptyGroup", "columnHeader--filledGroup", "columnHeader--filtered", "columnHeader--last", "columnHeader--moving", "columnHeader--numeric", "columnHeader--pinnedLeft", "columnHeader--pinnedRight", "columnHeader--siblingFocused", "columnHeader--sortable", "columnHeader--sorted", "columnHeader--withLeftBorder", "columnHeader--withRightBorder", "columnHeaderCheckbox", "columnHeaderDraggableContainer", "columnHeaderTitleContainer", "columnHeaderTitleContainerContent", "columnSeparator", "columnSeparator--resizable", "columnSeparator--resizing", "columnSeparator--sideLeft", "columnSeparator--sideRight", "container--bottom", "container--top", "detailPanelToggleCell", "detailPanelToggleCell--expanded", "editBooleanCell", "filterIcon", "filler--borderBottom", "filler--pinnedLeft", "filler--pinnedRight", "groupingCriteriaCell", "groupingCriteriaCellLoadingContainer", "groupingCriteriaCellToggle", "headerFilterRow", "iconSeparator", "menuIcon", "menuIconButton", "menuList", "menuOpen", "overlayWrapperInner", "pinnedRows", "pinnedRows--bottom", "pinnedRows--top", "row", "row--borderBottom", "row--detailPanelExpanded", "row--dragging", "row--dynamicHeight", "row--editable", "row--editing", "row--firstVisible", "row--lastVisible", "rowReorderCell", "rowReorderCell--draggable", "rowReorderCellContainer", "rowReorderCellPlaceholder", "rowSkeleton", "scrollbar", "scrollbar--horizontal", "scrollbar--vertical", "scrollbarFiller", "scrollbarFiller--pinnedRight", "sortIcon", "treeDataGroupingCell", "treeDataGroupingCellLoadingContainer", "treeDataGroupingCellToggle", "withBorderColor", "row--beingDragged"];
1016
+ readonly children: ["actionsCell", "booleanCell", "cell", "cell--editable", "cell--editing", "cell--flex", "cell--pinnedLeft", "cell--pinnedRight", "cell--rangeBottom", "cell--rangeLeft", "cell--rangeRight", "cell--rangeTop", "cell--withFillHandle", "cell--fillPreview", "cell--fillPreviewTop", "cell--fillPreviewBottom", "cell--fillPreviewLeft", "cell--fillPreviewRight", "cell--selectionMode", "cell--textCenter", "cell--textLeft", "cell--textRight", "cell--withLeftBorder", "cell--withRightBorder", "cellCheckbox", "cellEmpty", "cellOffsetLeft", "cellSkeleton", "checkboxInput", "columnHeader", "columnHeader--alignCenter", "columnHeader--alignLeft", "columnHeader--alignRight", "columnHeader--dragging", "columnHeader--emptyGroup", "columnHeader--filledGroup", "columnHeader--filtered", "columnHeader--last", "columnHeader--moving", "columnHeader--numeric", "columnHeader--pinnedLeft", "columnHeader--pinnedRight", "columnHeader--siblingFocused", "columnHeader--sortable", "columnHeader--sorted", "columnHeader--withLeftBorder", "columnHeader--withRightBorder", "columnHeaderCheckbox", "columnHeaderDraggableContainer", "columnHeaderTitleContainer", "columnHeaderTitleContainerContent", "columnSeparator", "columnSeparator--resizable", "columnSeparator--resizing", "columnSeparator--sideLeft", "columnSeparator--sideRight", "container--bottom", "container--top", "detailPanelToggleCell", "detailPanelToggleCell--expanded", "editBooleanCell", "filterIcon", "filler--borderBottom", "filler--pinnedLeft", "filler--pinnedRight", "groupingCriteriaCell", "groupingCriteriaCellLoadingContainer", "groupingCriteriaCellToggle", "headerFilterRow", "iconSeparator", "menuIcon", "menuIconButton", "menuList", "menuOpen", "overlayWrapperInner", "pinnedRows", "pinnedRows--bottom", "pinnedRows--top", "row", "row--borderBottom", "row--detailPanelExpanded", "row--dragging", "row--dynamicHeight", "row--editable", "row--editing", "row--firstVisible", "row--lastVisible", "rowReorderCell", "rowReorderCell--draggable", "rowReorderCellContainer", "rowReorderCellPlaceholder", "rowSkeleton", "scrollbar", "scrollbar--horizontal", "scrollbar--vertical", "scrollbarFiller", "scrollbarFiller--pinnedRight", "sortIcon", "treeDataGroupingCell", "treeDataGroupingCellLoadingContainer", "treeDataGroupingCellToggle", "withBorderColor", "row--beingDragged"];
978
1017
  };
979
1018
  export declare const gridClasses: Record<keyof GridClasses, string>;
@@ -26,8 +26,8 @@ function getDataGridUtilityClass(slot) {
26
26
  */
27
27
  const gridClassesOverrides = exports.gridClassesOverrides = {
28
28
  root: ['autoHeight', 'autosizing', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'withVerticalBorder'],
29
- children: ['actionsCell', 'booleanCell', 'cell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--rangeTop', 'cell--selectionMode', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withLeftBorder', 'cell--withRightBorder', 'cellCheckbox', 'cellEmpty', 'cellOffsetLeft', 'cellSkeleton', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--emptyGroup', 'columnHeader--filledGroup', 'columnHeader--filtered', 'columnHeader--last', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--siblingFocused', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnSeparator', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'container--bottom', 'container--top', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'editBooleanCell', 'filterIcon', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'groupingCriteriaCell', 'groupingCriteriaCellLoadingContainer', 'groupingCriteriaCellToggle', 'headerFilterRow', 'iconSeparator', 'menuIcon', 'menuIconButton', 'menuList', 'menuOpen', 'overlayWrapperInner', 'pinnedRows', 'pinnedRows--bottom', 'pinnedRows--top', 'row', 'row--borderBottom', 'row--detailPanelExpanded',
29
+ children: ['actionsCell', 'booleanCell', 'cell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--rangeTop', 'cell--withFillHandle', 'cell--fillPreview', 'cell--fillPreviewTop', 'cell--fillPreviewBottom', 'cell--fillPreviewLeft', 'cell--fillPreviewRight', 'cell--selectionMode', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withLeftBorder', 'cell--withRightBorder', 'cellCheckbox', 'cellEmpty', 'cellOffsetLeft', 'cellSkeleton', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--emptyGroup', 'columnHeader--filledGroup', 'columnHeader--filtered', 'columnHeader--last', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--siblingFocused', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnSeparator', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'container--bottom', 'container--top', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'editBooleanCell', 'filterIcon', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'groupingCriteriaCell', 'groupingCriteriaCellLoadingContainer', 'groupingCriteriaCellToggle', 'headerFilterRow', 'iconSeparator', 'menuIcon', 'menuIconButton', 'menuList', 'menuOpen', 'overlayWrapperInner', 'pinnedRows', 'pinnedRows--bottom', 'pinnedRows--top', 'row', 'row--borderBottom', 'row--detailPanelExpanded',
30
30
  // TODO v9: Rename to `cell--dragging`
31
31
  'row--dragging', 'row--dynamicHeight', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderCellContainer', 'rowReorderCellPlaceholder', 'rowSkeleton', 'scrollbar', 'scrollbar--horizontal', 'scrollbar--vertical', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'sortIcon', 'treeDataGroupingCell', 'treeDataGroupingCellLoadingContainer', 'treeDataGroupingCellToggle', 'withBorderColor', 'row--beingDragged']
32
32
  };
33
- const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
33
+ const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filler--horizontal', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'virtualizer--layoutControlled', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
@@ -18,8 +18,8 @@ export function getDataGridUtilityClass(slot) {
18
18
  */
19
19
  export const gridClassesOverrides = {
20
20
  root: ['autoHeight', 'autosizing', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'withVerticalBorder'],
21
- children: ['actionsCell', 'booleanCell', 'cell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--rangeTop', 'cell--selectionMode', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withLeftBorder', 'cell--withRightBorder', 'cellCheckbox', 'cellEmpty', 'cellOffsetLeft', 'cellSkeleton', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--emptyGroup', 'columnHeader--filledGroup', 'columnHeader--filtered', 'columnHeader--last', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--siblingFocused', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnSeparator', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'container--bottom', 'container--top', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'editBooleanCell', 'filterIcon', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'groupingCriteriaCell', 'groupingCriteriaCellLoadingContainer', 'groupingCriteriaCellToggle', 'headerFilterRow', 'iconSeparator', 'menuIcon', 'menuIconButton', 'menuList', 'menuOpen', 'overlayWrapperInner', 'pinnedRows', 'pinnedRows--bottom', 'pinnedRows--top', 'row', 'row--borderBottom', 'row--detailPanelExpanded',
21
+ children: ['actionsCell', 'booleanCell', 'cell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--rangeTop', 'cell--withFillHandle', 'cell--fillPreview', 'cell--fillPreviewTop', 'cell--fillPreviewBottom', 'cell--fillPreviewLeft', 'cell--fillPreviewRight', 'cell--selectionMode', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withLeftBorder', 'cell--withRightBorder', 'cellCheckbox', 'cellEmpty', 'cellOffsetLeft', 'cellSkeleton', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--emptyGroup', 'columnHeader--filledGroup', 'columnHeader--filtered', 'columnHeader--last', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--siblingFocused', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnSeparator', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'container--bottom', 'container--top', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'editBooleanCell', 'filterIcon', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'groupingCriteriaCell', 'groupingCriteriaCellLoadingContainer', 'groupingCriteriaCellToggle', 'headerFilterRow', 'iconSeparator', 'menuIcon', 'menuIconButton', 'menuList', 'menuOpen', 'overlayWrapperInner', 'pinnedRows', 'pinnedRows--bottom', 'pinnedRows--top', 'row', 'row--borderBottom', 'row--detailPanelExpanded',
22
22
  // TODO v9: Rename to `cell--dragging`
23
23
  'row--dragging', 'row--dynamicHeight', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderCellContainer', 'rowReorderCellPlaceholder', 'rowSkeleton', 'scrollbar', 'scrollbar--horizontal', 'scrollbar--vertical', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'sortIcon', 'treeDataGroupingCell', 'treeDataGroupingCellLoadingContainer', 'treeDataGroupingCellToggle', 'withBorderColor', 'row--beingDragged']
24
24
  };
25
- export const gridClasses = generateUtilityClasses('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
25
+ export const gridClasses = generateUtilityClasses('MuiDataGrid', [...gridClassesOverrides.root, ...gridClassesOverrides.children, 'aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'mainContent', 'withSidePanel', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderTitle', 'columnHeaders', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'filler', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filler--horizontal', 'footerContainer', 'iconButtonContainer', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'overlay', 'overlayWrapper', 'root', 'virtualizer--layoutControlled', 'rowCount', 'rowReorderIcon', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollShadow', 'scrollShadow--vertical', 'scrollShadow--horizontal', 'selectedRowCount', 'sortButton', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction', 'resizablePanelHandle', 'resizablePanelHandle--horizontal', 'resizablePanelHandle--vertical']);
@@ -61,7 +61,7 @@ const GRID_DEFAULT_LOCALE_TEXT = exports.GRID_DEFAULT_LOCALE_TEXT = {
61
61
  filterPanelOperator: 'Operator',
62
62
  filterPanelOperatorAnd: 'And',
63
63
  filterPanelOperatorOr: 'Or',
64
- filterPanelColumns: 'Columns',
64
+ filterPanelColumn: 'Column',
65
65
  filterPanelInputLabel: 'Value',
66
66
  filterPanelInputPlaceholder: 'Filter value',
67
67
  // Filter operators text
@@ -55,7 +55,7 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
55
55
  filterPanelOperator: 'Operator',
56
56
  filterPanelOperatorAnd: 'And',
57
57
  filterPanelOperatorOr: 'Or',
58
- filterPanelColumns: 'Columns',
58
+ filterPanelColumn: 'Column',
59
59
  filterPanelInputLabel: 'Value',
60
60
  filterPanelInputPlaceholder: 'Filter value',
61
61
  // Filter operators text
@@ -133,6 +133,7 @@ function useGridVirtualizer() {
133
133
  layout,
134
134
  dimensions: dimensionsParams,
135
135
  virtualization: {
136
+ layoutMode: rootProps.experimentalFeatures?.virtualizerLayoutMode ?? 'uncontrolled',
136
137
  isRtl,
137
138
  rowBufferPx: rootProps.rowBufferPx,
138
139
  columnBufferPx: rootProps.columnBufferPx
@@ -125,6 +125,7 @@ export function useGridVirtualizer() {
125
125
  layout,
126
126
  dimensions: dimensionsParams,
127
127
  virtualization: {
128
+ layoutMode: rootProps.experimentalFeatures?.virtualizerLayoutMode ?? 'uncontrolled',
128
129
  isRtl,
129
130
  rowBufferPx: rootProps.rowBufferPx,
130
131
  columnBufferPx: rootProps.columnBufferPx
@@ -19,6 +19,7 @@ var _useGridEvent = require("../../utils/useGridEvent");
19
19
  var _GridColumnHeaderItem = require("../../../components/columnHeaders/GridColumnHeaderItem");
20
20
  var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
21
21
  var _virtualization = require("../virtualization");
22
+ var _gridVirtualizationSelectors = require("../virtualization/gridVirtualizationSelectors");
22
23
  var _GridColumnGroupHeader = require("../../../components/columnHeaders/GridColumnGroupHeader");
23
24
  var _columns = require("../columns");
24
25
  var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
@@ -59,7 +60,8 @@ const useGridColumnHeaders = props => {
59
60
  const renderContext = (0, _utils.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
60
61
  const pinnedColumns = (0, _utils.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
61
62
  const columnsLookup = (0, _utils.useGridSelector)(apiRef, _columns.gridColumnLookupSelector);
62
- const offsetLeft = (0, _xVirtualizer.computeOffsetLeft)(columnPositions, renderContext, pinnedColumns.left.length);
63
+ const layoutMode = (0, _utils.useGridSelector)(apiRef, _gridVirtualizationSelectors.gridVirtualizationLayoutModeSelector);
64
+ const offsetLeft = (0, _xVirtualizer.computeOffsetLeft)(columnPositions, renderContext, pinnedColumns.left.length, layoutMode);
63
65
  const columnsTotalWidth = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridColumnsTotalWidthSelector);
64
66
  const gridHasFiller = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasFillerSelector);
65
67
  const headerHeight = (0, _utils.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHeaderHeightSelector);
@@ -114,7 +116,7 @@ const useGridColumnHeaders = props => {
114
116
  }
115
117
  }), children, isNotPinned && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
116
118
  role: "presentation",
117
- className: (0, _clsx.default)(_gridClasses.gridClasses.filler, borderBottom && _gridClasses.gridClasses['filler--borderBottom'])
119
+ className: (0, _clsx.default)(_gridClasses.gridClasses.filler, _gridClasses.gridClasses['filler--horizontal'], borderBottom && _gridClasses.gridClasses['filler--borderBottom'])
118
120
  }), hasScrollbarFiller && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
119
121
  pinnedRight: isPinnedRight
120
122
  })]
@@ -169,7 +171,8 @@ const useGridColumnHeaders = props => {
169
171
  ownerState: rootProps,
170
172
  className: _gridClasses.gridClasses['row--borderBottom'],
171
173
  style: {
172
- height: headerHeight
174
+ height: headerHeight,
175
+ '--height': `${headerHeight}px`
173
176
  },
174
177
  children: [leftRenderContext && getColumnHeaders({
175
178
  position: _constants.PinnedColumnPosition.LEFT,
@@ -277,7 +280,8 @@ const useGridColumnHeaders = props => {
277
280
  "aria-rowindex": depth + 1,
278
281
  ownerState: rootProps,
279
282
  style: {
280
- height: groupHeaderHeight
283
+ height: groupHeaderHeight,
284
+ '--height': `${groupHeaderHeight}px`
281
285
  },
282
286
  children: [leftRenderContext && getColumnGroupHeaders({
283
287
  depth,
@@ -12,6 +12,7 @@ import { useGridEvent } from "../../utils/useGridEvent.mjs";
12
12
  import { GridColumnHeaderItem } from "../../../components/columnHeaders/GridColumnHeaderItem.mjs";
13
13
  import { gridColumnsTotalWidthSelector, gridGroupHeaderHeightSelector, gridHasFillerSelector, gridHeaderHeightSelector, gridVerticalScrollbarWidthSelector } from "../dimensions/gridDimensionsSelectors.mjs";
14
14
  import { gridRenderContextColumnsSelector } from "../virtualization/index.mjs";
15
+ import { gridVirtualizationLayoutModeSelector } from "../virtualization/gridVirtualizationSelectors.mjs";
15
16
  import { GridColumnGroupHeader } from "../../../components/columnHeaders/GridColumnGroupHeader.mjs";
16
17
  import { gridColumnPositionsSelector, gridVisiblePinnedColumnDefinitionsSelector, gridColumnLookupSelector } from "../columns/index.mjs";
17
18
  import { gridColumnGroupsUnwrappedModelSelector } from "../columnGrouping/gridColumnGroupsSelector.mjs";
@@ -52,7 +53,8 @@ export const useGridColumnHeaders = props => {
52
53
  const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);
53
54
  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
54
55
  const columnsLookup = useGridSelector(apiRef, gridColumnLookupSelector);
55
- const offsetLeft = computeOffsetLeft(columnPositions, renderContext, pinnedColumns.left.length);
56
+ const layoutMode = useGridSelector(apiRef, gridVirtualizationLayoutModeSelector);
57
+ const offsetLeft = computeOffsetLeft(columnPositions, renderContext, pinnedColumns.left.length, layoutMode);
56
58
  const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
57
59
  const gridHasFiller = useGridSelector(apiRef, gridHasFillerSelector);
58
60
  const headerHeight = useGridSelector(apiRef, gridHeaderHeightSelector);
@@ -107,7 +109,7 @@ export const useGridColumnHeaders = props => {
107
109
  }
108
110
  }), children, isNotPinned && /*#__PURE__*/_jsx("div", {
109
111
  role: "presentation",
110
- className: clsx(gridClasses.filler, borderBottom && gridClasses['filler--borderBottom'])
112
+ className: clsx(gridClasses.filler, gridClasses['filler--horizontal'], borderBottom && gridClasses['filler--borderBottom'])
111
113
  }), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {
112
114
  pinnedRight: isPinnedRight
113
115
  })]
@@ -162,7 +164,8 @@ export const useGridColumnHeaders = props => {
162
164
  ownerState: rootProps,
163
165
  className: gridClasses['row--borderBottom'],
164
166
  style: {
165
- height: headerHeight
167
+ height: headerHeight,
168
+ '--height': `${headerHeight}px`
166
169
  },
167
170
  children: [leftRenderContext && getColumnHeaders({
168
171
  position: PinnedColumnPosition.LEFT,
@@ -270,7 +273,8 @@ export const useGridColumnHeaders = props => {
270
273
  "aria-rowindex": depth + 1,
271
274
  ownerState: rootProps,
272
275
  style: {
273
- height: groupHeaderHeight
276
+ height: groupHeaderHeight,
277
+ '--height': `${groupHeaderHeight}px`
274
278
  },
275
279
  children: [leftRenderContext && getColumnGroupHeaders({
276
280
  depth,
@@ -133,6 +133,7 @@ function setCSSVariables(root, dimensions) {
133
133
  set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
134
134
  set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
135
135
  set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
136
+ set('--DataGrid-horizontalFiller', `${Math.max(0, dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth)}px`);
136
137
  set('--height', `${dimensions.rowHeight}px`);
137
138
  }
138
139
  function getStaticDimensions(props, apiRef, density, pinnedColumnns) {
@@ -124,6 +124,7 @@ function setCSSVariables(root, dimensions) {
124
124
  set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
125
125
  set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
126
126
  set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
127
+ set('--DataGrid-horizontalFiller', `${Math.max(0, dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth)}px`);
127
128
  set('--height', `${dimensions.rowHeight}px`);
128
129
  }
129
130
  function getStaticDimensions(props, apiRef, density, pinnedColumnns) {
@@ -116,7 +116,11 @@ const useGridPrintExport = (apiRef, props) => {
116
116
  // Allow to overflow to not hide the border of the last row
117
117
  const gridMain = gridClone.querySelector(`.${_gridClasses.gridClasses.main}`);
118
118
  gridMain.style.overflow = 'visible';
119
- gridClone.querySelector(`.${_gridClasses.gridClasses.virtualScrollerRenderZone}`).style.position = 'static';
119
+ const renderZone = gridClone.querySelector(`.${_gridClasses.gridClasses.virtualScrollerRenderZone}`);
120
+ renderZone.style.position = 'static';
121
+ renderZone.style.transform = '';
122
+ const contentFiller = gridClone.querySelector(`.${_gridClasses.gridClasses.contentFiller}`);
123
+ contentFiller.style.display = 'none';
120
124
  virtualScrollerContent.style.flexBasis = 'auto';
121
125
  gridClone.querySelector(`.${_gridClasses.gridClasses['scrollbar--vertical']}`)?.remove();
122
126
  if (!(virtualScrollerContent.nextSibling instanceof HTMLElement && virtualScrollerContent.nextSibling.classList.contains(_gridClasses.gridClasses.filler))) {
@@ -109,7 +109,11 @@ export const useGridPrintExport = (apiRef, props) => {
109
109
  // Allow to overflow to not hide the border of the last row
110
110
  const gridMain = gridClone.querySelector(`.${gridClasses.main}`);
111
111
  gridMain.style.overflow = 'visible';
112
- gridClone.querySelector(`.${gridClasses.virtualScrollerRenderZone}`).style.position = 'static';
112
+ const renderZone = gridClone.querySelector(`.${gridClasses.virtualScrollerRenderZone}`);
113
+ renderZone.style.position = 'static';
114
+ renderZone.style.transform = '';
115
+ const contentFiller = gridClone.querySelector(`.${gridClasses.contentFiller}`);
116
+ contentFiller.style.display = 'none';
113
117
  virtualScrollerContent.style.flexBasis = 'auto';
114
118
  gridClone.querySelector(`.${gridClasses['scrollbar--vertical']}`)?.remove();
115
119
  if (!(virtualScrollerContent.nextSibling instanceof HTMLElement && virtualScrollerContent.nextSibling.classList.contains(gridClasses.filler))) {
@@ -301,6 +301,10 @@ const useGridFocus = (apiRef, props) => {
301
301
  if (event.relatedTarget?.getAttribute('class')?.includes(_gridClasses.gridClasses.columnHeader)) {
302
302
  return;
303
303
  }
304
+ // Don't clear focus when it moves to a body cell — setCellFocus already set it
305
+ if (event.relatedTarget?.getAttribute('class')?.includes(_gridClasses.gridClasses.cell)) {
306
+ return;
307
+ }
304
308
  logger.debug(`Clearing focus`);
305
309
  apiRef.current.setState(state => (0, _extends2.default)({}, state, {
306
310
  focus: {