@mui/x-data-grid 9.6.0 → 9.8.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 (239) hide show
  1. package/CHANGELOG.md +241 -2
  2. package/DataGrid/DataGrid.js +2 -2
  3. package/DataGrid/DataGrid.mjs +2 -2
  4. package/colDef/gridDateOperators.d.mts +1 -1
  5. package/colDef/gridDateOperators.d.ts +1 -1
  6. package/components/GridColumnHeaders.d.mts +1 -1
  7. package/components/GridColumnHeaders.d.ts +1 -1
  8. package/components/GridFooter.d.mts +1 -1
  9. package/components/GridFooter.d.ts +1 -1
  10. package/components/GridLoadingOverlay.d.mts +1 -1
  11. package/components/GridLoadingOverlay.d.ts +1 -1
  12. package/components/GridNoColumnsOverlay.d.mts +1 -1
  13. package/components/GridNoColumnsOverlay.d.ts +1 -1
  14. package/components/GridNoResultsOverlay.d.mts +1 -1
  15. package/components/GridNoResultsOverlay.d.ts +1 -1
  16. package/components/GridNoRowsOverlay.d.mts +1 -1
  17. package/components/GridNoRowsOverlay.d.ts +1 -1
  18. package/components/GridRowCount.d.mts +1 -1
  19. package/components/GridRowCount.d.ts +1 -1
  20. package/components/GridSelectedRowCount.d.mts +1 -1
  21. package/components/GridSelectedRowCount.d.ts +1 -1
  22. package/components/cell/GridActionsCell.d.mts +1 -1
  23. package/components/cell/GridActionsCell.d.ts +1 -1
  24. package/components/cell/GridCell.d.mts +1 -1
  25. package/components/cell/GridCell.d.ts +1 -1
  26. package/components/cell/GridCell.js +2 -10
  27. package/components/cell/GridCell.mjs +2 -10
  28. package/components/cell/GridFooterCell.d.mts +1 -1
  29. package/components/cell/GridFooterCell.d.ts +1 -1
  30. package/components/columnHeaders/GridBaseColumnHeaders.d.mts +1 -1
  31. package/components/columnHeaders/GridBaseColumnHeaders.d.ts +1 -1
  32. package/components/columnHeaders/GridColumnGroupHeader.js +2 -10
  33. package/components/columnHeaders/GridColumnGroupHeader.mjs +2 -10
  34. package/components/columnHeaders/GridColumnHeaderItem.js +2 -10
  35. package/components/columnHeaders/GridColumnHeaderItem.mjs +2 -10
  36. package/components/columnHeaders/GridColumnHeaderSortIcon.d.mts +1 -1
  37. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -1
  38. package/components/columnHeaders/GridGenericColumnHeaderItem.d.mts +1 -1
  39. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -1
  40. package/components/columnsPanel/ColumnsPanelTrigger.d.mts +1 -1
  41. package/components/columnsPanel/ColumnsPanelTrigger.d.ts +1 -1
  42. package/components/columnsPanel/ColumnsPanelTrigger.js +2 -2
  43. package/components/columnsPanel/ColumnsPanelTrigger.mjs +2 -2
  44. package/components/containers/GridFooterContainer.d.mts +1 -1
  45. package/components/containers/GridFooterContainer.d.ts +1 -1
  46. package/components/containers/GridOverlay.d.mts +1 -1
  47. package/components/containers/GridOverlay.d.ts +1 -1
  48. package/components/containers/GridToolbarContainer.d.mts +1 -1
  49. package/components/containers/GridToolbarContainer.d.ts +1 -1
  50. package/components/export/ExportCsv.d.mts +1 -1
  51. package/components/export/ExportCsv.d.ts +1 -1
  52. package/components/export/ExportPrint.d.mts +1 -1
  53. package/components/export/ExportPrint.d.ts +1 -1
  54. package/components/filterPanel/FilterPanelTrigger.d.mts +1 -1
  55. package/components/filterPanel/FilterPanelTrigger.d.ts +1 -1
  56. package/components/filterPanel/FilterPanelTrigger.js +2 -2
  57. package/components/filterPanel/FilterPanelTrigger.mjs +2 -2
  58. package/components/menu/columnMenu/GridColumnHeaderMenu.d.mts +1 -1
  59. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  60. package/components/panel/GridColumnsPanel.d.mts +1 -1
  61. package/components/panel/GridColumnsPanel.d.ts +1 -1
  62. package/components/panel/GridPanelContent.d.mts +1 -1
  63. package/components/panel/GridPanelContent.d.ts +1 -1
  64. package/components/panel/GridPanelContext.d.mts +9 -3
  65. package/components/panel/GridPanelContext.d.ts +9 -3
  66. package/components/panel/GridPanelContext.js +40 -7
  67. package/components/panel/GridPanelContext.mjs +40 -7
  68. package/components/panel/GridPanelFooter.d.mts +1 -1
  69. package/components/panel/GridPanelFooter.d.ts +1 -1
  70. package/components/panel/GridPanelHeader.d.mts +1 -1
  71. package/components/panel/GridPanelHeader.d.ts +1 -1
  72. package/components/panel/GridPanelWrapper.d.mts +1 -1
  73. package/components/panel/GridPanelWrapper.d.ts +1 -1
  74. package/components/panel/GridPreferencesPanel.js +4 -6
  75. package/components/panel/GridPreferencesPanel.mjs +4 -6
  76. package/components/panel/filterPanel/GridFilterForm.d.mts +2 -1
  77. package/components/panel/filterPanel/GridFilterForm.d.ts +2 -1
  78. package/components/panel/filterPanel/GridFilterPanel.d.mts +2 -2
  79. package/components/panel/filterPanel/GridFilterPanel.d.ts +2 -2
  80. package/components/quickFilter/QuickFilter.d.mts +2 -2
  81. package/components/quickFilter/QuickFilter.d.ts +2 -2
  82. package/components/quickFilter/QuickFilterClear.d.mts +2 -2
  83. package/components/quickFilter/QuickFilterClear.d.ts +2 -2
  84. package/components/quickFilter/QuickFilterControl.d.mts +2 -2
  85. package/components/quickFilter/QuickFilterControl.d.ts +2 -2
  86. package/components/quickFilter/QuickFilterTrigger.d.mts +2 -2
  87. package/components/quickFilter/QuickFilterTrigger.d.ts +2 -2
  88. package/components/toolbar/GridToolbar.d.mts +3 -3
  89. package/components/toolbar/GridToolbar.d.ts +3 -3
  90. package/components/toolbar/GridToolbarColumnsButton.js +2 -2
  91. package/components/toolbar/GridToolbarColumnsButton.mjs +2 -2
  92. package/components/toolbar/GridToolbarFilterButton.js +2 -2
  93. package/components/toolbar/GridToolbarFilterButton.mjs +2 -2
  94. package/components/toolbarV8/Toolbar.d.mts +1 -1
  95. package/components/toolbarV8/Toolbar.d.ts +1 -1
  96. package/components/toolbarV8/ToolbarButton.d.mts +1 -1
  97. package/components/toolbarV8/ToolbarButton.d.ts +1 -1
  98. package/components/virtualization/GridVirtualScrollerContent.d.mts +1 -1
  99. package/components/virtualization/GridVirtualScrollerContent.d.ts +1 -1
  100. package/components/virtualization/GridVirtualScrollerRenderZone.d.mts +1 -1
  101. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +1 -1
  102. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.js +7 -1
  103. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.mjs +7 -1
  104. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.mts +1 -1
  105. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +1 -1
  106. package/hooks/features/columnHeaders/useGridColumnHeaders.d.mts +2 -1
  107. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +2 -1
  108. package/hooks/features/columnResize/useGridColumnResize.js +56 -2
  109. package/hooks/features/columnResize/useGridColumnResize.mjs +57 -3
  110. package/hooks/features/columns/gridColumnsSelector.d.mts +1 -1
  111. package/hooks/features/columns/gridColumnsSelector.d.ts +1 -1
  112. package/hooks/features/dimensions/useGridDimensions.js +3 -3
  113. package/hooks/features/dimensions/useGridDimensions.mjs +3 -3
  114. package/hooks/features/editing/gridEditingSelectors.d.mts +1 -1
  115. package/hooks/features/editing/gridEditingSelectors.d.ts +1 -1
  116. package/hooks/features/editing/gridEditingSelectors.mjs +0 -1
  117. package/hooks/features/editing/useGridCellEditing.js +14 -7
  118. package/hooks/features/editing/useGridCellEditing.mjs +14 -7
  119. package/hooks/features/editing/utils.d.mts +1 -1
  120. package/hooks/features/editing/utils.d.ts +1 -1
  121. package/hooks/features/editing/utils.js +1 -1
  122. package/hooks/features/editing/utils.mjs +1 -1
  123. package/hooks/features/filter/gridFilterState.d.mts +1 -1
  124. package/hooks/features/filter/gridFilterState.d.ts +1 -1
  125. package/hooks/features/filter/gridFilterUtils.d.mts +2 -2
  126. package/hooks/features/filter/gridFilterUtils.d.ts +2 -2
  127. package/hooks/features/focus/useGridFocus.js +2 -10
  128. package/hooks/features/focus/useGridFocus.mjs +2 -10
  129. package/hooks/features/rowSelection/useGridRowSelection.js +0 -3
  130. package/hooks/features/rowSelection/useGridRowSelection.mjs +0 -3
  131. package/hooks/features/rows/gridRowSpanningUtils.d.mts +1 -1
  132. package/hooks/features/rows/gridRowSpanningUtils.d.ts +1 -1
  133. package/hooks/features/rows/gridRowSpanningUtils.js +1 -1
  134. package/hooks/features/rows/gridRowSpanningUtils.mjs +1 -1
  135. package/hooks/features/rows/gridRowsUtils.d.mts +1 -1
  136. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  137. package/hooks/features/rows/gridRowsUtils.js +6 -4
  138. package/hooks/features/rows/gridRowsUtils.mjs +6 -4
  139. package/hooks/features/virtualization/useGridVirtualization.d.mts +1 -1
  140. package/hooks/features/virtualization/useGridVirtualization.d.ts +1 -1
  141. package/hooks/features/virtualization/useGridVirtualization.js +2 -2
  142. package/hooks/features/virtualization/useGridVirtualization.mjs +2 -2
  143. package/hooks/utils/useGridEvent.js +1 -1
  144. package/hooks/utils/useGridEvent.mjs +1 -1
  145. package/index.js +1 -1
  146. package/index.mjs +1 -1
  147. package/locales/arSD.d.mts +1 -1
  148. package/locales/arSD.d.ts +1 -1
  149. package/locales/beBY.d.mts +1 -1
  150. package/locales/beBY.d.ts +1 -1
  151. package/locales/bgBG.d.mts +1 -1
  152. package/locales/bgBG.d.ts +1 -1
  153. package/locales/bnBD.d.mts +1 -1
  154. package/locales/bnBD.d.ts +1 -1
  155. package/locales/caES.d.mts +1 -1
  156. package/locales/caES.d.ts +1 -1
  157. package/locales/csCZ.d.mts +1 -1
  158. package/locales/csCZ.d.ts +1 -1
  159. package/locales/daDK.d.mts +1 -1
  160. package/locales/daDK.d.ts +1 -1
  161. package/locales/deDE.d.mts +1 -1
  162. package/locales/deDE.d.ts +1 -1
  163. package/locales/elGR.d.mts +1 -1
  164. package/locales/elGR.d.ts +1 -1
  165. package/locales/enUS.d.mts +1 -1
  166. package/locales/enUS.d.ts +1 -1
  167. package/locales/esES.d.mts +1 -1
  168. package/locales/esES.d.ts +1 -1
  169. package/locales/faIR.d.mts +1 -1
  170. package/locales/faIR.d.ts +1 -1
  171. package/locales/fiFI.d.mts +1 -1
  172. package/locales/fiFI.d.ts +1 -1
  173. package/locales/frFR.d.mts +1 -1
  174. package/locales/frFR.d.ts +1 -1
  175. package/locales/heIL.d.mts +1 -1
  176. package/locales/heIL.d.ts +1 -1
  177. package/locales/huHU.d.mts +1 -1
  178. package/locales/huHU.d.ts +1 -1
  179. package/locales/hyAM.d.mts +1 -1
  180. package/locales/hyAM.d.ts +1 -1
  181. package/locales/idID.d.mts +1 -1
  182. package/locales/idID.d.ts +1 -1
  183. package/locales/isIS.d.mts +1 -1
  184. package/locales/isIS.d.ts +1 -1
  185. package/locales/itIT.d.mts +1 -1
  186. package/locales/itIT.d.ts +1 -1
  187. package/locales/jaJP.d.mts +1 -1
  188. package/locales/jaJP.d.ts +1 -1
  189. package/locales/jaJP.js +4 -5
  190. package/locales/jaJP.mjs +4 -5
  191. package/locales/koKR.d.mts +1 -1
  192. package/locales/koKR.d.ts +1 -1
  193. package/locales/nbNO.d.mts +1 -1
  194. package/locales/nbNO.d.ts +1 -1
  195. package/locales/nlNL.d.mts +1 -1
  196. package/locales/nlNL.d.ts +1 -1
  197. package/locales/nnNO.d.mts +1 -1
  198. package/locales/nnNO.d.ts +1 -1
  199. package/locales/plPL.d.mts +1 -1
  200. package/locales/plPL.d.ts +1 -1
  201. package/locales/ptBR.d.mts +1 -1
  202. package/locales/ptBR.d.ts +1 -1
  203. package/locales/ptPT.d.mts +1 -1
  204. package/locales/ptPT.d.ts +1 -1
  205. package/locales/roRO.d.mts +1 -1
  206. package/locales/roRO.d.ts +1 -1
  207. package/locales/ruRU.d.mts +1 -1
  208. package/locales/ruRU.d.ts +1 -1
  209. package/locales/skSK.d.mts +1 -1
  210. package/locales/skSK.d.ts +1 -1
  211. package/locales/svSE.d.mts +1 -1
  212. package/locales/svSE.d.ts +1 -1
  213. package/locales/thTH.d.mts +1 -1
  214. package/locales/thTH.d.ts +1 -1
  215. package/locales/trTR.d.mts +1 -1
  216. package/locales/trTR.d.ts +1 -1
  217. package/locales/ukUA.d.mts +1 -1
  218. package/locales/ukUA.d.ts +1 -1
  219. package/locales/urPK.d.mts +1 -1
  220. package/locales/urPK.d.ts +1 -1
  221. package/locales/viVN.d.mts +1 -1
  222. package/locales/viVN.d.ts +1 -1
  223. package/locales/zhCN.d.mts +1 -1
  224. package/locales/zhCN.d.ts +1 -1
  225. package/locales/zhTW.d.mts +1 -1
  226. package/locales/zhTW.d.ts +1 -1
  227. package/material/variables.d.mts +1 -1
  228. package/material/variables.d.ts +1 -1
  229. package/package.json +5 -4
  230. package/utils/createSelector.d.mts +1 -1
  231. package/utils/createSelector.d.ts +1 -1
  232. package/utils/focusElement.d.mts +9 -0
  233. package/utils/focusElement.d.ts +9 -0
  234. package/utils/focusElement.js +24 -0
  235. package/utils/focusElement.mjs +19 -0
  236. package/utils/isJSDOM.d.mts +0 -1
  237. package/utils/isJSDOM.d.ts +0 -1
  238. package/utils/isJSDOM.js +0 -7
  239. package/utils/isJSDOM.mjs +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,245 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.8.0
4
+
5
+ _Jul 2, 2026_
6
+
7
+ We'd like to extend a big thank you to the 18 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - 🗺️ New [`MapImagePlot`](https://mui.com/x/react-charts/map/) for rendering raster base maps, with `onItemClick` support on map shapes (Premium)
10
+ - 📊 New [`usePolarGeometry`](https://mui.com/x/react-charts/hooks/use-polar-geometry/) hook to build custom radial overlays
11
+ - 🐞 Bugfixes
12
+ - 📚 Documentation improvements
13
+
14
+ Special thanks go out to these community members for their valuable contributions:
15
+ @Anexus5919, @aromanio, @greymoth-jp, @mustafajw07, @timbuckley, @voidmatcha
16
+
17
+ The following team members contributed to this release:
18
+ @alexfauquette, @arminmeh, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @joserodolfofreitas, @LukasTy, @mapache-salvaje, @michelengelen, @rita-codes, @sai6855
19
+
20
+ ### Data Grid
21
+
22
+ #### `@mui/x-data-grid@9.8.0`
23
+
24
+ - [DataGrid] Prevent cell editing from resurrecting a deleted row (#22958) @Anexus5919
25
+ - [DataGrid] Avoid reading `type` of `undefined` in `gridRowUtils` (#21808) @timbuckley
26
+ - [DataGrid] Improved get started tutorial (#22911) @joserodolfofreitas
27
+ - [l10n] Improve Japanese (ja-JP) locale (#23001) @greymoth-jp
28
+
29
+ #### `@mui/x-data-grid-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
30
+
31
+ Same changes as in `@mui/x-data-grid@9.8.0`.
32
+
33
+ #### `@mui/x-data-grid-premium@9.8.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
34
+
35
+ Same changes as in `@mui/x-data-grid-pro@9.8.0`, plus:
36
+
37
+ - [DataGridPremium] Escape `singleSelect` values in Excel export with `escapeFormulas` enabled (#22851) @Anexus5919
38
+
39
+ ### Date and Time Pickers
40
+
41
+ #### `@mui/x-date-pickers@9.8.0`
42
+
43
+ - [pickers] Fix localized digit crash (#22995) @alexfauquette
44
+ - [pickers] Flag the first and last visible day cell across year boundaries (#22981) @Anexus5919
45
+ - [pickers] Use calendar day tokens in `AdapterMomentHijri` and `AdapterMomentJalaali` formats (#22974) @Anexus5919
46
+ - [pickers] Use the Hijri day token in `AdapterMomentHijri` `normalDateWithWeekday` (#22972) @Anexus5919
47
+ - [l10n] Improve Romanian (ro-RO) locale (#22969) @aromanio
48
+
49
+ #### `@mui/x-date-pickers-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
50
+
51
+ Same changes as in `@mui/x-date-pickers@9.8.0`, plus:
52
+
53
+ - [DateRangeCalendar] Fix auto month-switch across the year boundary (#22987) @Anexus5919
54
+
55
+ ### Charts
56
+
57
+ #### `@mui/x-charts@9.8.0`
58
+
59
+ - [charts] Decouple `d3-geo` from the universal tooltip (#23011) @sai6855
60
+ - [charts] Deduplicate `getGroupingConfig` (#22889) @sai6855
61
+ - [charts] Expose `usePolarGeometry` hook for radial overlays (#22892) @mustafajw07
62
+
63
+ #### `@mui/x-charts-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
64
+
65
+ Same changes as in `@mui/x-charts@9.8.0`.
66
+
67
+ #### `@mui/x-charts-premium@9.8.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
68
+
69
+ Same changes as in `@mui/x-charts-pro@9.8.0`, plus:
70
+
71
+ - [charts-premium] Add `onItemClick` support for the Map shapes (#22876) @sai6855
72
+ - [charts-premium] Replace `dataIndex` with `name` in map identifier (#22891) @sai6855
73
+ - [charts-premium] Share helper function (#23030) @alexfauquette
74
+ - [charts-premium] Extract shared WebGL utilities across bar/scatter/heatmap renderers (#22466) @sai6855
75
+ - [charts-premium] Add `MapImagePlot` for raster base maps (#22977) @JCQuintas
76
+
77
+ ### Tree View
78
+
79
+ #### `@mui/x-tree-view@9.8.0`
80
+
81
+ - [TreeView] Fix extra selection event when clicking a collapsed parent item (#22249) @michelengelen
82
+ - [TreeView] Enforce top-level type imports (#23034) @Janpot
83
+
84
+ #### `@mui/x-tree-view-pro@9.8.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
85
+
86
+ Same changes as in `@mui/x-tree-view@9.8.0`.
87
+
88
+ ### Scheduler
89
+
90
+ #### `@mui/x-scheduler@9.0.0-beta.4`
91
+
92
+ - [scheduler] Enforce top-level type imports (#22931) @Janpot
93
+ - [scheduler] Keep the occurrence date when editing only one recurring event (#23007) @Anexus5919
94
+ - [scheduler] Track bundle size of scheduler packages (#22682) @flaviendelangle
95
+ - [scheduler] Add `viewConfig` prop to limit displayed hours in the day and week views (#22929) @flaviendelangle
96
+
97
+ #### `@mui/x-scheduler-premium@9.0.0-beta.4` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
98
+
99
+ Same changes as in `@mui/x-scheduler@9.0.0-beta.4`, plus:
100
+
101
+ - [scheduler] Collapsible resources in the timeline (#22920) @rita-codes
102
+
103
+ ### Codemod
104
+
105
+ #### `@mui/x-codemod@9.8.0`
106
+
107
+ Internal changes.
108
+
109
+ ### Docs
110
+
111
+ - [docs] Add recipe for conditional master-detail panels (#22971) @michelengelen
112
+ - [docs] Add recipe for describing active filters in the toolbar (#22970) @michelengelen
113
+ - [docs] Add recipe for triggering clipboard copy from a button (#22967) @michelengelen
114
+ - [docs] Clarify that `fieldRef.current.focusField()` is the canonical way to focus a field (#22937) @michelengelen
115
+ - [docs][scheduler] Another copyediting pass across the Scheduler docs (#22619) @mapache-salvaje
116
+ - [docs][charts] Add map example for arbitrary GeoJSON shapes (#22976) @JCQuintas
117
+ - [docs][charts] Double point count in `ScatterAsyncRenderer` demo (#22906) @JCQuintas
118
+
119
+ ### Core
120
+
121
+ - [code-infra] Fix tracking branch bug in release script (#22956) @michelengelen
122
+ - [code-infra] Remove mark-duplicate workflow (#22994) @cherniavskii
123
+ - [code-infra] Revert `nanoid@3.3.15` `minimumReleaseAge` exemption (#22953) @LukasTy
124
+
125
+ ### Miscellaneous
126
+
127
+ - [internals] Fix `ERR_UNSUPPORTED_DIR_IMPORT` for `core-js-pure` in Node ESM (#22985) @michelengelen
128
+ - [internals] Harden `useDisposable` React internals read with safeReact (#22986) @rita-codes
129
+ - [internals] Replace core-js `DisposableStack` ponyfill with a minimal fallback (#23002) @sai6855
130
+ - [test] Assert the edited `dateTime` cell value in the e2e edit test (#22982) @voidmatcha
131
+ - [virtualizer] Remeasure scrollbars when layout changes (#22914) @arminmeh
132
+
133
+ ## 9.7.0
134
+
135
+ _Jun 25, 2026_
136
+
137
+ We'd like to extend a big thank you to the 13 contributors who made this release possible. Here are some highlights ✨:
138
+
139
+ - 🐞 Bugfixes
140
+ - 📚 Documentation improvements
141
+
142
+ Special thanks go out to these community members for their valuable contributions:
143
+ @Anexus5919, @mustafajw07
144
+
145
+ The following team members contributed to this release:
146
+ @alexfauquette, @arminmeh, @brijeshb42, @Janpot, @JCQuintas, @LukasTy, @MBilalShafi, @michelengelen, @romgrk, @sai6855, @siriwatknp
147
+
148
+ ### Data Grid
149
+
150
+ #### `@mui/x-data-grid@9.7.0`
151
+
152
+ - [DataGrid] Fix `CustomColumnMenuGrid` demo crashing (#22897) @sai6855
153
+ - [DataGrid] Fix crash in `getRowValue` when `colDef` is `undefined` (#22838) @LukasTy
154
+ - [DataGrid] Fix `longText` expand button submitting surrounding form (#22450) @siriwatknp
155
+ - [DataGrid] Remove filename ignore list from `removePropTypesPlugin` in Babel config (#22727) @sai6855
156
+ - [DataGrid] Deduplicate scroll-preserving focus logic (#22916) @sai6855
157
+ - [DataGrid] Fix `singleSelect` clearing to use empty string instead of `null` (#22881) @michelengelen
158
+ - [DataGrid] Wait for rows before reacting on `autosizeOnMount` (#22698) @MBilalShafi
159
+
160
+ #### `@mui/x-data-grid-pro@9.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
161
+
162
+ Same changes as in `@mui/x-data-grid@9.7.0`.
163
+
164
+ #### `@mui/x-data-grid-premium@9.7.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
165
+
166
+ Same changes as in `@mui/x-data-grid-pro@9.7.0`.
167
+
168
+ ### Date and Time Pickers
169
+
170
+ #### `@mui/x-date-pickers@9.7.0`
171
+
172
+ - [fields] Announce cardinal day in the day section `aria-valuetext` (#22922) @LukasTy
173
+ - [fields] Avoid focusing the field on blank space clicks (#22285) @LukasTy
174
+ - [pickers] Commit `TimeClock` value when the drag ends outside the clock (#22877) @LukasTy
175
+ - [pickers] Respect explicit `notched` prop on the outlined PickersTextField (#22875) @LukasTy
176
+
177
+ #### `@mui/x-date-pickers-pro@9.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
178
+
179
+ Same changes as in `@mui/x-date-pickers@9.7.0`.
180
+
181
+ ### Charts
182
+
183
+ #### `@mui/x-charts@9.7.0`
184
+
185
+ - [charts] Add demo for displaying the sum of all values from the stacked series on top of the stacked bars (#22879) @sai6855
186
+ - [charts] Add `zAxis` custom scatter component demo (#22746) @mustafajw07
187
+ - [charts] Apply axis `colorMap` to radial bar fill (#22800) @JCQuintas
188
+ - [charts] Simplify classes type (#22626) @alexfauquette
189
+ - [charts] Stable progressive scatter batching + responsive zoom/pan (#22862) @JCQuintas
190
+ - [charts] Strip dev-only console diagnostics from production (#22917) @sai6855
191
+ - [docs] Fix scatter renderer table blocking column (#22904) @JCQuintas
192
+ - [docs] Make `ScatterAsyncRenderer` button bar responsive (#22905) @JCQuintas
193
+
194
+ #### `@mui/x-charts-pro@9.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
195
+
196
+ Same changes as in `@mui/x-charts@9.7.0`.
197
+
198
+ #### `@mui/x-charts-premium@9.7.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
199
+
200
+ Same changes as in `@mui/x-charts-pro@9.7.0`.
201
+
202
+ ### Tree View
203
+
204
+ #### `@mui/x-tree-view@9.7.0`
205
+
206
+ Internal changes.
207
+
208
+ #### `@mui/x-tree-view-pro@9.7.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
209
+
210
+ Same changes as in `@mui/x-tree-view@9.7.0`.
211
+
212
+ ### Scheduler
213
+
214
+ #### `@mui/x-scheduler@9.0.0-beta.3`
215
+
216
+ - [scheduler] Highlight only the edited occurrence of a recurring event (#22873) @Anexus5919
217
+
218
+ #### `@mui/x-scheduler-premium@9.0.0-beta.3` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
219
+
220
+ Same changes as in `@mui/x-scheduler@9.0.0-beta.3`.
221
+
222
+ ### Codemod
223
+
224
+ #### `@mui/x-codemod@9.7.0`
225
+
226
+ Internal changes.
227
+
228
+ ### Core
229
+
230
+ - [code-infra] Fix react@^18 CI failing on nanoid trust-downgrade (#22923) @LukasTy
231
+ - [code-infra] Reduce Netlify build parallelism to 2 (#22925) @LukasTy
232
+ - [code-infra] Use Turbopack for docs in dev (#22882) @brijeshb42
233
+ - [docs-infra] Pre-render API page descriptions (#22919) @brijeshb42
234
+ - [internal] Use `@base-ui/utils/platform` for platform detection (#22710) @romgrk
235
+ - [internal] Enforce top-level type imports (#22679) @Janpot
236
+
237
+ ### Miscellaneous
238
+
239
+ - [internal] Enable mui/no-floating-cleanup and fix leaks (#22872) @romgrk
240
+ - [infra] Update `.gitignore` to exclude `.claude` sub-directories (#22435) @michelengelen
241
+ - [virtualizer] Improve the dimensions' initial state (#22885) @arminmeh
242
+
3
243
  ## 9.6.0
4
244
 
5
245
  _Jun 18, 2026_
@@ -68,7 +308,6 @@ Same changes as in `@mui/x-charts-pro@9.6.0`, plus:
68
308
  - [charts-premium] Support maps tooltip positioned on items (#22648) @alexfauquette
69
309
  - [docs] Show how to export maps (#22837) @alexfauquette
70
310
 
71
-
72
311
  ### Tree View
73
312
 
74
313
  #### `@mui/x-tree-view@9.6.0`
@@ -115,7 +354,7 @@ Same changes as in `@mui/x-scheduler@9.0.0-beta.2`, plus:
115
354
 
116
355
  - [scheduler-premium] Expose premium model types through public API (#22798) @mustafajw07
117
356
  - [scheduler-premium] Remove non-functional `onPreferencesChange` prop from `EventTimelinePremium` (#22777) @rita-codes
118
- - [scheduler-premium] Validate the `FREQ` value in `parseRRule`] (#22786) @rita-codes
357
+ - [scheduler-premium] Validate the `FREQ` value in `parseRRule`] (#22786) @rita-codes
119
358
 
120
359
  ### Codemod
121
360
 
@@ -66,7 +66,7 @@ if (process.env.NODE_ENV !== "production") DataGridRaw.displayName = "DataGridRa
66
66
  */
67
67
  const DataGrid = exports.DataGrid = /*#__PURE__*/React.memo((0, _forwardRef.forwardRef)(DataGridRaw));
68
68
  if (process.env.NODE_ENV !== "production") DataGrid.displayName = "DataGrid";
69
- DataGridRaw.propTypes /* remove-proptypes */ = {
69
+ process.env.NODE_ENV !== "production" ? DataGridRaw.propTypes /* remove-proptypes */ = {
70
70
  // ----------------------------- Warning --------------------------------
71
71
  // | These PropTypes are generated from the TypeScript type definitions |
72
72
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
@@ -891,4 +891,4 @@ DataGridRaw.propTypes /* remove-proptypes */ = {
891
891
  * @default false
892
892
  */
893
893
  virtualizeColumnsWithAutoRowHeight: _propTypes.default.bool
894
- };
894
+ } : void 0;
@@ -59,7 +59,7 @@ if (process.env.NODE_ENV !== "production") DataGridRaw.displayName = "DataGridRa
59
59
  */
60
60
  export const DataGrid = /*#__PURE__*/React.memo(forwardRef(DataGridRaw));
61
61
  if (process.env.NODE_ENV !== "production") DataGrid.displayName = "DataGrid";
62
- DataGridRaw.propTypes /* remove-proptypes */ = {
62
+ process.env.NODE_ENV !== "production" ? DataGridRaw.propTypes /* remove-proptypes */ = {
63
63
  // ----------------------------- Warning --------------------------------
64
64
  // | These PropTypes are generated from the TypeScript type definitions |
65
65
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
@@ -884,4 +884,4 @@ DataGridRaw.propTypes /* remove-proptypes */ = {
884
884
  * @default false
885
885
  */
886
886
  virtualizeColumnsWithAutoRowHeight: PropTypes.bool
887
- };
887
+ } : void 0;
@@ -1,3 +1,3 @@
1
- import { type GridFilterInputDateProps } from "../components/panel/filterPanel/GridFilterInputDate.mjs";
1
+ import type { GridFilterInputDateProps } from "../components/panel/filterPanel/GridFilterInputDate.mjs";
2
2
  import type { GridFilterOperator } from "../models/gridFilterOperator.mjs";
3
3
  export declare const getGridDateOperators: (showTime?: boolean) => GridFilterOperator<any, Date, any, GridFilterInputDateProps>[];
@@ -1,3 +1,3 @@
1
- import { type GridFilterInputDateProps } from "../components/panel/filterPanel/GridFilterInputDate.js";
1
+ import type { GridFilterInputDateProps } from "../components/panel/filterPanel/GridFilterInputDate.js";
2
2
  import type { GridFilterOperator } from "../models/gridFilterOperator.js";
3
3
  export declare const getGridDateOperators: (showTime?: boolean) => GridFilterOperator<any, Date, any, GridFilterInputDateProps>[];
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type UseGridColumnHeadersProps } from "../hooks/features/columnHeaders/useGridColumnHeaders.mjs";
2
+ import type { UseGridColumnHeadersProps } from "../hooks/features/columnHeaders/useGridColumnHeaders.mjs";
3
3
  export interface GridColumnHeadersProps extends React.HTMLAttributes<HTMLDivElement>, UseGridColumnHeadersProps {
4
4
  ref?: React.Ref<HTMLDivElement>;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type UseGridColumnHeadersProps } from "../hooks/features/columnHeaders/useGridColumnHeaders.js";
2
+ import type { UseGridColumnHeadersProps } from "../hooks/features/columnHeaders/useGridColumnHeaders.js";
3
3
  export interface GridColumnHeadersProps extends React.HTMLAttributes<HTMLDivElement>, UseGridColumnHeadersProps {
4
4
  ref?: React.Ref<HTMLDivElement>;
5
5
  }
@@ -1,4 +1,4 @@
1
- import { type GridFooterContainerProps } from "./containers/GridFooterContainer.mjs";
1
+ import type { GridFooterContainerProps } from "./containers/GridFooterContainer.mjs";
2
2
  declare const GridFooter: import("react").ForwardRefExoticComponent<GridFooterContainerProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { type GridFooterContainerProps } from "./containers/GridFooterContainer.js";
1
+ import type { GridFooterContainerProps } from "./containers/GridFooterContainer.js";
2
2
  declare const GridFooter: import("react").ForwardRefExoticComponent<GridFooterContainerProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type GridOverlayProps } from "./containers/GridOverlay.mjs";
2
+ import type { GridOverlayProps } from "./containers/GridOverlay.mjs";
3
3
  import type { GridLoadingOverlayVariant } from "../hooks/features/overlays/gridOverlaysInterfaces.mjs";
4
4
  export interface GridLoadingOverlayProps extends GridOverlayProps {
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type GridOverlayProps } from "./containers/GridOverlay.js";
2
+ import type { GridOverlayProps } from "./containers/GridOverlay.js";
3
3
  import type { GridLoadingOverlayVariant } from "../hooks/features/overlays/gridOverlaysInterfaces.js";
4
4
  export interface GridLoadingOverlayProps extends GridOverlayProps {
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { type GridOverlayProps } from "./containers/GridOverlay.mjs";
1
+ import type { GridOverlayProps } from "./containers/GridOverlay.mjs";
2
2
  declare const GridNoColumnsOverlay: import("react").ForwardRefExoticComponent<GridOverlayProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { type GridOverlayProps } from "./containers/GridOverlay.js";
1
+ import type { GridOverlayProps } from "./containers/GridOverlay.js";
2
2
  declare const GridNoColumnsOverlay: import("react").ForwardRefExoticComponent<GridOverlayProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { type GridOverlayProps } from "./containers/GridOverlay.mjs";
1
+ import type { GridOverlayProps } from "./containers/GridOverlay.mjs";
2
2
  export declare const GridNoResultsOverlay: import("react").ForwardRefExoticComponent<GridOverlayProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { type GridOverlayProps } from "./containers/GridOverlay.js";
1
+ import type { GridOverlayProps } from "./containers/GridOverlay.js";
2
2
  export declare const GridNoResultsOverlay: import("react").ForwardRefExoticComponent<GridOverlayProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { type GridOverlayProps } from "./containers/GridOverlay.mjs";
1
+ import type { GridOverlayProps } from "./containers/GridOverlay.mjs";
2
2
  declare const GridNoRowsOverlay: import("react").ForwardRefExoticComponent<GridOverlayProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { type GridOverlayProps } from "./containers/GridOverlay.js";
1
+ import type { GridOverlayProps } from "./containers/GridOverlay.js";
2
2
  declare const GridNoRowsOverlay: import("react").ForwardRefExoticComponent<GridOverlayProps> | import("react").ForwardRefExoticComponent<import("react").HTMLAttributes<HTMLDivElement> & {
3
3
  sx?: import("@mui/system").SxProps<import("@mui/system").Theme>;
4
4
  } & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  interface RowCountProps {
4
4
  rowCount: number;
5
5
  visibleRowCount: number;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  interface RowCountProps {
4
4
  rowCount: number;
5
5
  visibleRowCount: number;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  interface SelectedRowCountProps {
4
4
  selectedRowCount: number;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  interface SelectedRowCountProps {
4
4
  selectedRowCount: number;
5
5
  }
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { GridRowParams } from "../../models/params/gridRowParams.mjs";
3
3
  import type { GridRenderCellParams } from "../../models/params/gridCellParams.mjs";
4
- import { type GridMenuProps } from "../menu/GridMenu.mjs";
4
+ import type { GridMenuProps } from "../menu/GridMenu.mjs";
5
5
  import type { GridValidRowModel, GridTreeNodeWithRender } from "../../models/gridRows.mjs";
6
6
  interface GridActionsCellProps<R extends GridValidRowModel = any, V = any, F = V, N extends GridTreeNodeWithRender = GridTreeNodeWithRender> extends Omit<GridRenderCellParams<R, V, F, N>, 'api'> {
7
7
  api?: GridRenderCellParams['api'];
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { GridRowParams } from "../../models/params/gridRowParams.js";
3
3
  import type { GridRenderCellParams } from "../../models/params/gridCellParams.js";
4
- import { type GridMenuProps } from "../menu/GridMenu.js";
4
+ import type { GridMenuProps } from "../menu/GridMenu.js";
5
5
  import type { GridValidRowModel, GridTreeNodeWithRender } from "../../models/gridRows.js";
6
6
  interface GridActionsCellProps<R extends GridValidRowModel = any, V = any, F = V, N extends GridTreeNodeWithRender = GridTreeNodeWithRender> extends Omit<GridRenderCellParams<R, V, F, N>, 'api'> {
7
7
  api?: GridRenderCellParams['api'];
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type GridRowId } from "../../models/index.mjs";
2
+ import type { GridRowId } from "../../models/index.mjs";
3
3
  import type { GridAlignment, GridStateColDef } from "../../models/colDef/gridColDef.mjs";
4
4
  import type { GridRowModel, GridTreeNode } from "../../models/gridRows.mjs";
5
5
  import { PinnedColumnPosition } from "../../internals/constants.mjs";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type GridRowId } from "../../models/index.js";
2
+ import type { GridRowId } from "../../models/index.js";
3
3
  import type { GridAlignment, GridStateColDef } from "../../models/colDef/gridColDef.js";
4
4
  import type { GridRowModel, GridTreeNode } from "../../models/gridRows.js";
5
5
  import { PinnedColumnPosition } from "../../internals/constants.js";
@@ -22,7 +22,7 @@ var _forwardRef = require("@mui/x-internals/forwardRef");
22
22
  var _store = require("@mui/x-internals/store");
23
23
  var _xVirtualizer = require("@mui/x-virtualizer");
24
24
  var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
25
- var _doesSupportPreventScroll = require("../../utils/doesSupportPreventScroll");
25
+ var _focusElement = require("../../utils/focusElement");
26
26
  var _gridClasses = require("../../constants/gridClasses");
27
27
  var _models = require("../../models");
28
28
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
@@ -233,15 +233,7 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
233
233
  if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {
234
234
  const focusableElement = cellRef.current.querySelector('[tabindex="0"]');
235
235
  const elementToFocus = focusableElement || cellRef.current;
236
- if ((0, _doesSupportPreventScroll.doesSupportPreventScroll)()) {
237
- elementToFocus.focus({
238
- preventScroll: true
239
- });
240
- } else {
241
- const scrollPosition = apiRef.current.getScrollPosition();
242
- elementToFocus.focus();
243
- apiRef.current.scroll(scrollPosition);
244
- }
236
+ (0, _focusElement.focusElement)(elementToFocus, apiRef);
245
237
  }
246
238
  }, [hasFocus, cellMode, apiRef]);
247
239
  if (isCellRowSpanned) {
@@ -17,7 +17,7 @@ import { forwardRef } from '@mui/x-internals/forwardRef';
17
17
  import { useStore } from '@mui/x-internals/store';
18
18
  import { Rowspan } from '@mui/x-virtualizer';
19
19
  import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
20
- import { doesSupportPreventScroll } from "../../utils/doesSupportPreventScroll.mjs";
20
+ import { focusElement } from "../../utils/focusElement.mjs";
21
21
  import { getDataGridUtilityClass, gridClasses } from "../../constants/gridClasses.mjs";
22
22
  import { GridCellModes } from "../../models/index.mjs";
23
23
  import { useGridSelector } from "../../hooks/utils/useGridSelector.mjs";
@@ -226,15 +226,7 @@ const GridCell = forwardRef(function GridCell(props, ref) {
226
226
  if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {
227
227
  const focusableElement = cellRef.current.querySelector('[tabindex="0"]');
228
228
  const elementToFocus = focusableElement || cellRef.current;
229
- if (doesSupportPreventScroll()) {
230
- elementToFocus.focus({
231
- preventScroll: true
232
- });
233
- } else {
234
- const scrollPosition = apiRef.current.getScrollPosition();
235
- elementToFocus.focus();
236
- apiRef.current.scroll(scrollPosition);
237
- }
229
+ focusElement(elementToFocus, apiRef);
238
230
  }
239
231
  }, [hasFocus, cellMode, apiRef]);
240
232
  if (isCellRowSpanned) {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/material/styles';
2
+ import type { SxProps, Theme } from '@mui/material/styles';
3
3
  import type { GridRenderCellParams } from "../../models/params/gridCellParams.mjs";
4
4
  interface GridFooterCellProps extends GridRenderCellParams {
5
5
  sx?: SxProps<Theme>;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/material/styles';
2
+ import type { SxProps, Theme } from '@mui/material/styles';
3
3
  import type { GridRenderCellParams } from "../../models/params/gridCellParams.js";
4
4
  interface GridFooterCellProps extends GridRenderCellParams {
5
5
  sx?: SxProps<Theme>;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  interface GridBaseColumnHeadersProps extends React.HTMLAttributes<HTMLDivElement> {
4
4
  sx?: SxProps<Theme>;
5
5
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type SxProps, type Theme } from '@mui/system';
2
+ import type { SxProps, Theme } from '@mui/system';
3
3
  interface GridBaseColumnHeadersProps extends React.HTMLAttributes<HTMLDivElement> {
4
4
  sx?: SxProps<Theme>;
5
5
  }
@@ -14,7 +14,7 @@ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"
14
14
  var _capitalize = _interopRequireDefault(require("@mui/utils/capitalize"));
15
15
  var _RtlProvider = require("@mui/system/RtlProvider");
16
16
  var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
17
- var _doesSupportPreventScroll = require("../../utils/doesSupportPreventScroll");
17
+ var _focusElement = require("../../utils/focusElement");
18
18
  var _gridClasses = require("../../constants/gridClasses");
19
19
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
20
20
  var _gridColumnGroupsSelector = require("../../hooks/features/columnGrouping/gridColumnGroupsSelector");
@@ -102,15 +102,7 @@ function GridColumnGroupHeader(props) {
102
102
  if (!elementToFocus) {
103
103
  return;
104
104
  }
105
- if ((0, _doesSupportPreventScroll.doesSupportPreventScroll)()) {
106
- elementToFocus.focus({
107
- preventScroll: true
108
- });
109
- } else {
110
- const scrollPosition = apiRef.current.getScrollPosition();
111
- elementToFocus.focus();
112
- apiRef.current.scroll(scrollPosition);
113
- }
105
+ (0, _focusElement.focusElement)(elementToFocus, apiRef);
114
106
  }
115
107
  }, [apiRef, hasFocus]);
116
108
  const publish = React.useCallback(eventName => event => {
@@ -7,7 +7,7 @@ import composeClasses from '@mui/utils/composeClasses';
7
7
  import capitalize from '@mui/utils/capitalize';
8
8
  import { useRtl } from '@mui/system/RtlProvider';
9
9
  import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.mjs";
10
- import { doesSupportPreventScroll } from "../../utils/doesSupportPreventScroll.mjs";
10
+ import { focusElement } from "../../utils/focusElement.mjs";
11
11
  import { getDataGridUtilityClass } from "../../constants/gridClasses.mjs";
12
12
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.mjs";
13
13
  import { gridColumnGroupsLookupSelector } from "../../hooks/features/columnGrouping/gridColumnGroupsSelector.mjs";
@@ -95,15 +95,7 @@ function GridColumnGroupHeader(props) {
95
95
  if (!elementToFocus) {
96
96
  return;
97
97
  }
98
- if (doesSupportPreventScroll()) {
99
- elementToFocus.focus({
100
- preventScroll: true
101
- });
102
- } else {
103
- const scrollPosition = apiRef.current.getScrollPosition();
104
- elementToFocus.focus();
105
- apiRef.current.scroll(scrollPosition);
106
- }
98
+ focusElement(elementToFocus, apiRef);
107
99
  }
108
100
  }, [apiRef, hasFocus]);
109
101
  const publish = React.useCallback(eventName => event => {
@@ -16,7 +16,7 @@ var _capitalize = _interopRequireDefault(require("@mui/utils/capitalize"));
16
16
  var _useId = _interopRequireDefault(require("@mui/utils/useId"));
17
17
  var _fastMemo = require("@mui/x-internals/fastMemo");
18
18
  var _RtlProvider = require("@mui/system/RtlProvider");
19
- var _doesSupportPreventScroll = require("../../utils/doesSupportPreventScroll");
19
+ var _focusElement = require("../../utils/focusElement");
20
20
  var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
21
21
  var _getColumnMenuItemKeys = require("../../hooks/features/columnMenu/getColumnMenuItemKeys");
22
22
  var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
@@ -209,15 +209,7 @@ function GridColumnHeaderItem(props) {
209
209
  if (!elementToFocus) {
210
210
  return;
211
211
  }
212
- if ((0, _doesSupportPreventScroll.doesSupportPreventScroll)()) {
213
- elementToFocus.focus({
214
- preventScroll: true
215
- });
216
- } else {
217
- const scrollPosition = apiRef.current.getScrollPosition();
218
- elementToFocus.focus();
219
- apiRef.current.scroll(scrollPosition);
220
- }
212
+ (0, _focusElement.focusElement)(elementToFocus, apiRef);
221
213
  }
222
214
  }, [apiRef, hasFocus]);
223
215
  const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({