@mui/x-data-grid 9.11.0 → 9.12.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 (178) hide show
  1. package/CHANGELOG.md +165 -0
  2. package/DataGrid/DataGrid.js +3 -1
  3. package/DataGrid/DataGrid.mjs +3 -1
  4. package/DataGrid/useDataGridProps.d.mts +1 -1
  5. package/DataGrid/useDataGridProps.d.ts +1 -1
  6. package/components/cell/GridCell.js +14 -1
  7. package/components/cell/GridCell.mjs +14 -1
  8. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  9. package/components/columnHeaders/GridBaseColumnHeaders.mjs +1 -1
  10. package/components/columnHeaders/GridColumnHeaderItem.js +4 -0
  11. package/components/columnHeaders/GridColumnHeaderItem.mjs +4 -0
  12. package/components/columnHeaders/GridGenericColumnHeaderItem.d.mts +7 -0
  13. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +7 -0
  14. package/components/columnHeaders/GridGenericColumnHeaderItem.js +5 -4
  15. package/components/columnHeaders/GridGenericColumnHeaderItem.mjs +5 -4
  16. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +18 -6
  17. package/components/panel/filterPanel/GridFilterInputSingleSelect.mjs +18 -6
  18. package/constants/gridClasses.d.mts +12 -0
  19. package/constants/gridClasses.d.ts +12 -0
  20. package/constants/gridClasses.js +1 -1
  21. package/constants/gridClasses.mjs +1 -1
  22. package/constants/localeTextConstants.js +4 -0
  23. package/constants/localeTextConstants.mjs +4 -0
  24. package/hooks/core/useGridApiInitialization.js +5 -1
  25. package/hooks/core/useGridApiInitialization.mjs +5 -1
  26. package/hooks/core/useGridStateInitialization.js +3 -1
  27. package/hooks/core/useGridStateInitialization.mjs +3 -1
  28. package/hooks/core/useGridVirtualizer.js +3 -0
  29. package/hooks/core/useGridVirtualizer.mjs +3 -0
  30. package/hooks/features/columnResize/useGridColumnResize.js +5 -0
  31. package/hooks/features/columnResize/useGridColumnResize.mjs +5 -0
  32. package/hooks/features/columns/gridColumnsUtils.d.mts +1 -1
  33. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
  34. package/hooks/features/columns/gridColumnsUtils.js +2 -2
  35. package/hooks/features/columns/gridColumnsUtils.mjs +2 -2
  36. package/hooks/features/dataSource/gridDataSourceSelector.js +6 -2
  37. package/hooks/features/dataSource/gridDataSourceSelector.mjs +6 -2
  38. package/hooks/features/dataSource/useGridDataSourceBase.js +14 -1
  39. package/hooks/features/dataSource/useGridDataSourceBase.mjs +14 -1
  40. package/hooks/features/dataSource/useGridDataSourceFilterModelChange.d.mts +9 -0
  41. package/hooks/features/dataSource/useGridDataSourceFilterModelChange.d.ts +9 -0
  42. package/hooks/features/dataSource/useGridDataSourceFilterModelChange.js +57 -0
  43. package/hooks/features/dataSource/useGridDataSourceFilterModelChange.mjs +49 -0
  44. package/hooks/features/editing/useGridCellEditing.js +3 -1
  45. package/hooks/features/editing/useGridCellEditing.mjs +3 -1
  46. package/hooks/features/editing/useGridRowEditing.js +3 -1
  47. package/hooks/features/editing/useGridRowEditing.mjs +3 -1
  48. package/hooks/features/filter/gridFilterUtils.d.mts +13 -0
  49. package/hooks/features/filter/gridFilterUtils.d.ts +13 -0
  50. package/hooks/features/filter/gridFilterUtils.js +32 -1
  51. package/hooks/features/filter/gridFilterUtils.mjs +29 -1
  52. package/hooks/features/filter/useGridFilter.js +1 -21
  53. package/hooks/features/filter/useGridFilter.mjs +2 -22
  54. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +1 -1
  55. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.mjs +1 -1
  56. package/hooks/features/rows/useGridRowSpanning.js +5 -0
  57. package/hooks/features/rows/useGridRowSpanning.mjs +5 -0
  58. package/hooks/features/virtualization/gridVirtualizationSelectors.d.mts +1 -1
  59. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
  60. package/hooks/utils/useGridEvent.d.mts +2 -2
  61. package/hooks/utils/useGridEvent.d.ts +2 -2
  62. package/hooks/utils/useGridEvent.js +2 -0
  63. package/hooks/utils/useGridEvent.mjs +2 -0
  64. package/index.js +1 -1
  65. package/index.mjs +1 -1
  66. package/internals/index.d.mts +2 -0
  67. package/internals/index.d.ts +2 -0
  68. package/internals/index.js +20 -0
  69. package/internals/index.mjs +2 -0
  70. package/locales/arSD.js +5 -0
  71. package/locales/arSD.mjs +5 -0
  72. package/locales/beBY.js +5 -0
  73. package/locales/beBY.mjs +5 -0
  74. package/locales/bgBG.js +5 -0
  75. package/locales/bgBG.mjs +5 -0
  76. package/locales/bnBD.js +5 -0
  77. package/locales/bnBD.mjs +5 -0
  78. package/locales/caES.js +5 -0
  79. package/locales/caES.mjs +5 -0
  80. package/locales/csCZ.js +5 -0
  81. package/locales/csCZ.mjs +5 -0
  82. package/locales/daDK.js +5 -0
  83. package/locales/daDK.mjs +5 -0
  84. package/locales/deDE.js +5 -0
  85. package/locales/deDE.mjs +5 -0
  86. package/locales/elGR.js +5 -0
  87. package/locales/elGR.mjs +5 -0
  88. package/locales/esES.js +5 -0
  89. package/locales/esES.mjs +5 -0
  90. package/locales/faIR.js +5 -0
  91. package/locales/faIR.mjs +5 -0
  92. package/locales/fiFI.js +5 -0
  93. package/locales/fiFI.mjs +5 -0
  94. package/locales/frFR.js +5 -0
  95. package/locales/frFR.mjs +5 -0
  96. package/locales/heIL.js +5 -0
  97. package/locales/heIL.mjs +5 -0
  98. package/locales/hrHR.js +5 -0
  99. package/locales/hrHR.mjs +5 -0
  100. package/locales/huHU.js +5 -0
  101. package/locales/huHU.mjs +5 -0
  102. package/locales/hyAM.js +5 -0
  103. package/locales/hyAM.mjs +5 -0
  104. package/locales/idID.js +5 -0
  105. package/locales/idID.mjs +5 -0
  106. package/locales/isIS.js +5 -0
  107. package/locales/isIS.mjs +5 -0
  108. package/locales/itIT.js +5 -0
  109. package/locales/itIT.mjs +5 -0
  110. package/locales/jaJP.js +5 -0
  111. package/locales/jaJP.mjs +5 -0
  112. package/locales/koKR.js +5 -0
  113. package/locales/koKR.mjs +5 -0
  114. package/locales/nbNO.js +5 -0
  115. package/locales/nbNO.mjs +5 -0
  116. package/locales/nlNL.js +5 -0
  117. package/locales/nlNL.mjs +5 -0
  118. package/locales/nnNO.js +5 -0
  119. package/locales/nnNO.mjs +5 -0
  120. package/locales/plPL.js +5 -0
  121. package/locales/plPL.mjs +5 -0
  122. package/locales/ptBR.js +5 -0
  123. package/locales/ptBR.mjs +5 -0
  124. package/locales/ptPT.js +5 -0
  125. package/locales/ptPT.mjs +5 -0
  126. package/locales/roRO.js +5 -0
  127. package/locales/roRO.mjs +5 -0
  128. package/locales/ruRU.js +5 -0
  129. package/locales/ruRU.mjs +5 -0
  130. package/locales/skSK.js +5 -0
  131. package/locales/skSK.mjs +5 -0
  132. package/locales/svSE.js +5 -0
  133. package/locales/svSE.mjs +5 -0
  134. package/locales/thTH.js +5 -0
  135. package/locales/thTH.mjs +5 -0
  136. package/locales/trTR.js +5 -0
  137. package/locales/trTR.mjs +5 -0
  138. package/locales/ukUA.js +5 -0
  139. package/locales/ukUA.mjs +5 -0
  140. package/locales/urPK.js +5 -0
  141. package/locales/urPK.mjs +5 -0
  142. package/locales/viVN.js +5 -0
  143. package/locales/viVN.mjs +5 -0
  144. package/locales/zhCN.js +5 -0
  145. package/locales/zhCN.mjs +5 -0
  146. package/locales/zhHK.js +5 -0
  147. package/locales/zhHK.mjs +5 -0
  148. package/locales/zhTW.js +5 -0
  149. package/locales/zhTW.mjs +5 -0
  150. package/models/api/gridApiCommon.d.mts +2 -2
  151. package/models/api/gridApiCommon.d.ts +2 -2
  152. package/models/api/gridCallbackDetails.d.mts +11 -1
  153. package/models/api/gridCallbackDetails.d.ts +11 -1
  154. package/models/api/gridLocaleTextApi.d.mts +3 -0
  155. package/models/api/gridLocaleTextApi.d.ts +3 -0
  156. package/models/api/gridRowApi.d.mts +12 -0
  157. package/models/api/gridRowApi.d.ts +12 -0
  158. package/models/api/gridStateApi.d.mts +3 -2
  159. package/models/api/gridStateApi.d.ts +3 -2
  160. package/models/api/index.d.mts +1 -1
  161. package/models/api/index.d.ts +1 -1
  162. package/models/colDef/gridColDef.d.mts +5 -0
  163. package/models/colDef/gridColDef.d.ts +5 -0
  164. package/models/configuration/gridConfiguration.d.mts +13 -1
  165. package/models/configuration/gridConfiguration.d.ts +13 -1
  166. package/models/controlStateItem.d.mts +3 -2
  167. package/models/controlStateItem.d.ts +3 -2
  168. package/models/events/gridEventListener.d.mts +3 -2
  169. package/models/events/gridEventListener.d.ts +3 -2
  170. package/models/props/DataGridProps.d.mts +38 -35
  171. package/models/props/DataGridProps.d.ts +38 -35
  172. package/package.json +3 -3
  173. package/utils/domUtils.js +1 -1
  174. package/utils/domUtils.mjs +1 -1
  175. package/utils/getPublicApiRef.d.mts +2 -2
  176. package/utils/getPublicApiRef.d.ts +2 -2
  177. package/utils/getPublicApiRef.js +15 -3
  178. package/utils/getPublicApiRef.mjs +15 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,170 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.12.0
4
+
5
+ _Aug 21, 2026_
6
+
7
+ We'd like to extend a big thank you to the 12 contributors who made this release possible. Here are some highlights ✨:
8
+
9
+ - 🧮 Support [Formulas](https://mui.com/x/react-data-grid/formulas/) on the Data Grid: cells in opted-in columns can hold spreadsheet-like formulas (`=SUM(RANGE(…))`, `=price * quantity`) evaluated by a built-in engine, with a formula editor and [Formula Bar](https://mui.com/x/react-data-grid/components/formula-bar/), autocomplete, reference highlighting, optional A1 notation, fill-handle reference adjustment, custom functions, and live formula Excel export
10
+ - ♿️ Improve the accessibility of Data Grid cells and picker day cells
11
+ - 🗓️ Enable multi-resource event creation and editing in the Scheduler
12
+ - 🐞 Bugfixes
13
+ - 📚 Documentation improvements
14
+
15
+ Special thanks go out to these community members for their valuable contributions:
16
+ @Anexus5919, @mustafajw07
17
+
18
+ The following team members contributed to this release:
19
+ @brijeshb42, @flaviendelangle, @JCQuintas, @LukasTy, @MBilalShafi, @michelengelen, @noraleonte, @rita-codes, @romgrk, @silviuaavram
20
+
21
+ ### Data Grid
22
+
23
+ #### `@mui/x-data-grid@9.12.0`
24
+
25
+ - [DataGrid] Expose `apiRef` on `GridCallbackDetails` for selector access in callbacks (#22973) @michelengelen
26
+ - [DataGrid] Fix header height not updating when `headerFilters` or `columnGroupingModel` change (#23059) @MBilalShafi
27
+ - [DataGrid] Fix unhandled rejection when unmounting mid-autosize (#23319) @JCQuintas
28
+ - [DataGrid] Label the blank `singleSelect` filter option (#23294) @JCQuintas
29
+ - [DataGrid] Stop sending incomplete filter items to the data source (#23303) @JCQuintas
30
+ - [DataGrid] Support the `rowheader` attribute for grid cells (#23340) @silviuaavram
31
+
32
+ #### `@mui/x-data-grid-pro@9.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
33
+
34
+ Same changes as in `@mui/x-data-grid@9.12.0`, plus:
35
+
36
+ - [DataGridPro] Honor `hasNextPage` in infinite lazy loading (#23048) @MBilalShafi
37
+
38
+ #### `@mui/x-data-grid-premium@9.12.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
39
+
40
+ Same changes as in `@mui/x-data-grid-pro@9.12.0`, plus:
41
+
42
+ - [DataGridPremium] Formula support (#22807) @MBilalShafi
43
+
44
+ ### Date and Time Pickers
45
+
46
+ #### `@mui/x-date-pickers@9.12.0`
47
+
48
+ - [fields] Keep the selected section on blank space clicks (#23318) @LukasTy
49
+ - [pickers] Associate the day cells with their week day column header (#23339) @LukasTy
50
+ - [pickers] Keep the `gridcell` role and the column index on filler cells (#23326) @Anexus5919
51
+
52
+ #### `@mui/x-date-pickers-pro@9.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
53
+
54
+ Same changes as in `@mui/x-date-pickers@9.12.0`, plus:
55
+
56
+ - [DateRangeCalendar] Round the range highlight at the month grid edges (#23297) @JCQuintas
57
+ - [DateRangePicker] Keep the range highlight opaque for disabled days (#23317) @JCQuintas
58
+
59
+ ### Charts
60
+
61
+ #### `@mui/x-charts@9.12.0`
62
+
63
+ - [charts] Add a demo for label on grid row (#23333) @noraleonte
64
+ - [charts] Fix React 18 `propTypes` warnings and stray-pointer test flakiness (#23384) @LukasTy
65
+ - [charts] Focus the clicked item for keyboard navigation (#23247) @JCQuintas
66
+
67
+ #### `@mui/x-charts-pro@9.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
68
+
69
+ Same changes as in `@mui/x-charts@9.12.0`.
70
+
71
+ #### `@mui/x-charts-premium@9.12.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
72
+
73
+ Same changes as in `@mui/x-charts-pro@9.12.0`, plus:
74
+
75
+ - [charts-premium] Add `onItemClick` to the radial charts (#23253) @JCQuintas
76
+
77
+ ### Tree View
78
+
79
+ #### `@mui/x-tree-view@9.12.0`
80
+
81
+ Internal changes.
82
+
83
+ #### `@mui/x-tree-view-pro@9.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
84
+
85
+ Same changes as in `@mui/x-tree-view@9.12.0`.
86
+
87
+ ### Scheduler
88
+
89
+ #### `@mui/x-scheduler@9.0.0-beta.10`
90
+
91
+ - [scheduler] Add `onEventEditingStart` to let consumers open their own edit UI (#23361) @rita-codes
92
+ - [scheduler] Fix keyboard and focus issues around the "+N more" popover (#23312) @rita-codes
93
+ - [scheduler] Honor `viewConfig` hour limits in the compact day and week views (#23316) @rita-codes
94
+ - [scheduler] Share timeline event layout data (#23366) @flaviendelangle
95
+ - [scheduler] enable multi-resource event creation and editing (#23313) @mustafajw07
96
+
97
+ #### `@mui/x-scheduler-premium@9.0.0-beta.10` [![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.10`, plus:
100
+
101
+ - [scheduler-premium] Allow to control the min and max hour in the Event Timeline (#23212) @rita-codes
102
+ - [scheduler-premium] Dependencies - Create, select and delete via terminals (#23200) @rita-codes
103
+
104
+ ### Codemod
105
+
106
+ #### `@mui/x-codemod@9.12.0`
107
+
108
+ Internal changes.
109
+
110
+ ### Docs
111
+
112
+ - [docs][charts] Document line mark size customization (#23370) @JCQuintas
113
+ - [docs] Add recipe for constraining the `make-child` drop action by item type (#22940) @michelengelen
114
+ - [docs] Redirect the renamed Event Timeline views page (#23324) @brijeshb42
115
+ - [docs] Remove unused `adapter-dependencies.json` (#23328) @LukasTy
116
+
117
+ ### Core
118
+
119
+ - [code-infra] Add release skill (#23308) @brijeshb42
120
+ - [code-infra] Fix changelog categorization of docs and `DateRangeCalendar` tags (#23385) @JCQuintas
121
+ - [code-infra] Sync mui-release skill (#23330) @brijeshb42
122
+
123
+ ### Miscellaneous
124
+
125
+ - [core] Declare the missing `react-dom` peer dependencies (#23381) @LukasTy
126
+ - [test] Fix act warnings in the data source filter tests (#23360) @JCQuintas
127
+ - [virtualizer] Add inverse-sticky layout (#23053) @romgrk
128
+
129
+ ## 9.11.1
130
+
131
+ _Aug 6, 2026_
132
+
133
+ We'd like to extend a big thank you to the 2 contributors who made this release possible. Here are some highlights ✨:
134
+
135
+ - 🐛 Fix the empty `@mui/x-charts-vendor` package published in v9.11.0
136
+
137
+ The following team members contributed to this release:
138
+ @JCQuintas, @rita-codes
139
+
140
+ ### Charts
141
+
142
+ #### `@mui/x-charts@9.11.1`
143
+
144
+ - [charts] Fix empty `@mui/x-charts-vendor` published package (#23310) @JCQuintas
145
+
146
+ #### `@mui/x-charts-pro@9.11.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
147
+
148
+ Same changes as in `@mui/x-charts@9.11.1`.
149
+
150
+ #### `@mui/x-charts-premium@9.11.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
151
+
152
+ Same changes as in `@mui/x-charts-pro@9.11.1`.
153
+
154
+ #### `@mui/x-charts-vendor@9.11.1`
155
+
156
+ - [charts] Fix empty `@mui/x-charts-vendor` published package (#23310) @JCQuintas
157
+
158
+ ### Scheduler
159
+
160
+ #### `@mui/x-scheduler@9.0.0-beta.9`
161
+
162
+ - [scheduler] Show the range validation errors on the End date and End time fields (#23291) @rita-codes
163
+
164
+ #### `@mui/x-scheduler-premium@9.0.0-beta.9` [![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-scheduler@9.0.0-beta.9`.
167
+
3
168
  ## 9.11.0
4
169
 
5
170
  _Aug 6, 2026_
@@ -33,7 +33,8 @@ const configuration = {
33
33
  useGridParamsOverridableMethods: _useGridParamsOverridableMethods.useGridParamsOverridableMethods,
34
34
  useIsCellEditable: _useGridCellEditable.useIsCellEditable,
35
35
  useCellAggregationResult: () => null,
36
- useFilterValueGetter: apiRef => apiRef.current.getRowValue
36
+ useFilterValueGetter: apiRef => apiRef.current.getRowValue,
37
+ useColumnHeaderAdornment: () => null
37
38
  }
38
39
  };
39
40
  const DataGridRaw = function DataGrid(inProps, ref) {
@@ -166,6 +167,7 @@ process.env.NODE_ENV !== "production" ? DataGridRaw.propTypes /* remove-proptype
166
167
  renderEditCell: _propTypes.default.func,
167
168
  renderHeader: _propTypes.default.func,
168
169
  resizable: _propTypes.default.bool,
170
+ rowHeader: _propTypes.default.bool,
169
171
  rowSpanValueGetter: _propTypes.default.func,
170
172
  sortable: _propTypes.default.bool,
171
173
  sortComparator: _propTypes.default.func,
@@ -26,7 +26,8 @@ const configuration = {
26
26
  useGridParamsOverridableMethods,
27
27
  useIsCellEditable,
28
28
  useCellAggregationResult: () => null,
29
- useFilterValueGetter: apiRef => apiRef.current.getRowValue
29
+ useFilterValueGetter: apiRef => apiRef.current.getRowValue,
30
+ useColumnHeaderAdornment: () => null
30
31
  }
31
32
  };
32
33
  const DataGridRaw = function DataGrid(inProps, ref) {
@@ -159,6 +160,7 @@ process.env.NODE_ENV !== "production" ? DataGridRaw.propTypes /* remove-proptype
159
160
  renderEditCell: PropTypes.func,
160
161
  renderHeader: PropTypes.func,
161
162
  resizable: PropTypes.bool,
163
+ rowHeader: PropTypes.bool,
162
164
  rowSpanValueGetter: PropTypes.func,
163
165
  sortable: PropTypes.bool,
164
166
  sortComparator: PropTypes.func,
@@ -1,3 +1,3 @@
1
1
  import type { DataGridProcessedProps, DataGridProps } from "../models/props/DataGridProps.mjs";
2
2
  import type { GridValidRowModel } from "../models/index.mjs";
3
- export declare const useDataGridProps: <R extends GridValidRowModel>(inProps: DataGridProps<R>) => DataGridProcessedProps<R>;
3
+ export declare const useDataGridProps: <R extends GridValidRowModel>(inProps: DataGridProps<R>) => DataGridProcessedProps<R, any>;
@@ -1,3 +1,3 @@
1
1
  import type { DataGridProcessedProps, DataGridProps } from "../models/props/DataGridProps.js";
2
2
  import type { GridValidRowModel } from "../models/index.js";
3
- export declare const useDataGridProps: <R extends GridValidRowModel>(inProps: DataGridProps<R>) => DataGridProcessedProps<R>;
3
+ export declare const useDataGridProps: <R extends GridValidRowModel>(inProps: DataGridProps<R>) => DataGridProcessedProps<R, any>;
@@ -231,6 +231,19 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
231
231
  }
232
232
  const doc = (0, _ownerDocument.default)(apiRef.current.rootElementRef.current);
233
233
  if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {
234
+ // An external editor can legitimately hold DOM focus for the focused cell
235
+ // (e.g. the Premium formula bar) — the same pipe the document click
236
+ // handler consults decides whether pulling focus back is allowed. The
237
+ // pseudo-event only carries the element that owns the focus.
238
+ const canUpdateFocus = apiRef.current.unstable_applyPipeProcessors('canUpdateFocus', true, {
239
+ event: {
240
+ target: doc.activeElement
241
+ },
242
+ cell: null
243
+ });
244
+ if (!canUpdateFocus) {
245
+ return;
246
+ }
234
247
  const focusableElement = cellRef.current.querySelector('[tabindex="0"]');
235
248
  const elementToFocus = focusableElement || cellRef.current;
236
249
  (0, _focusElement.focusElement)(elementToFocus, apiRef);
@@ -291,7 +304,7 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
291
304
  };
292
305
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _extends2.default)({
293
306
  className: (0, _clsx.default)(classes.root, classNames, className),
294
- role: "gridcell",
307
+ role: column.rowHeader ? 'rowheader' : 'gridcell',
295
308
  "data-field": field,
296
309
  "data-colindex": colIndex,
297
310
  "aria-colindex": colIndex + 1,
@@ -224,6 +224,19 @@ const GridCell = forwardRef(function GridCell(props, ref) {
224
224
  }
225
225
  const doc = ownerDocument(apiRef.current.rootElementRef.current);
226
226
  if (cellRef.current && !cellRef.current.contains(doc.activeElement)) {
227
+ // An external editor can legitimately hold DOM focus for the focused cell
228
+ // (e.g. the Premium formula bar) — the same pipe the document click
229
+ // handler consults decides whether pulling focus back is allowed. The
230
+ // pseudo-event only carries the element that owns the focus.
231
+ const canUpdateFocus = apiRef.current.unstable_applyPipeProcessors('canUpdateFocus', true, {
232
+ event: {
233
+ target: doc.activeElement
234
+ },
235
+ cell: null
236
+ });
237
+ if (!canUpdateFocus) {
238
+ return;
239
+ }
227
240
  const focusableElement = cellRef.current.querySelector('[tabindex="0"]');
228
241
  const elementToFocus = focusableElement || cellRef.current;
229
242
  focusElement(elementToFocus, apiRef);
@@ -284,7 +297,7 @@ const GridCell = forwardRef(function GridCell(props, ref) {
284
297
  };
285
298
  return /*#__PURE__*/_jsx("div", _extends({
286
299
  className: clsx(classes.root, classNames, className),
287
- role: "gridcell",
300
+ role: column.rowHeader ? 'rowheader' : 'gridcell',
288
301
  "data-field": field,
289
302
  "data-colindex": colIndex,
290
303
  "aria-colindex": colIndex + 1,
@@ -47,7 +47,7 @@ const GridBaseColumnHeaders = exports.GridBaseColumnHeaders = (0, _forwardRef.fo
47
47
  className: (0, _clsx.default)(classes.root, className),
48
48
  ownerState: rootProps
49
49
  }, other, {
50
- role: "none",
50
+ role: "rowgroup",
51
51
  ref: ref
52
52
  }));
53
53
  });
@@ -40,7 +40,7 @@ export const GridBaseColumnHeaders = forwardRef(function GridColumnHeaders(props
40
40
  className: clsx(classes.root, className),
41
41
  ownerState: rootProps
42
42
  }, other, {
43
- role: "none",
43
+ role: "rowgroup",
44
44
  ref: ref
45
45
  }));
46
46
  });
@@ -18,6 +18,7 @@ var _fastMemo = require("@mui/x-internals/fastMemo");
18
18
  var _RtlProvider = require("@mui/system/RtlProvider");
19
19
  var _focusElement = require("../../utils/focusElement");
20
20
  var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
21
+ var _useGridConfiguration = require("../../hooks/utils/useGridConfiguration");
21
22
  var _getColumnMenuItemKeys = require("../../hooks/features/columnMenu/getColumnMenuItemKeys");
22
23
  var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
23
24
  var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
@@ -81,8 +82,10 @@ function GridColumnHeaderItem(props) {
81
82
  pinnedOffset
82
83
  } = props;
83
84
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
85
+ const configuration = (0, _useGridConfiguration.useGridConfiguration)();
84
86
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
85
87
  const isRtl = (0, _RtlProvider.useRtl)();
88
+ const adornment = configuration.hooks.useColumnHeaderAdornment(colDef.field);
86
89
  const headerCellRef = React.useRef(null);
87
90
  const columnMenuId = (0, _useId.default)();
88
91
  const columnMenuButtonId = (0, _useId.default)();
@@ -232,6 +235,7 @@ function GridColumnHeaderItem(props) {
232
235
  separatorSide: separatorSide,
233
236
  isDraggable: isDraggable,
234
237
  headerComponent: headerComponent,
238
+ adornment: adornment,
235
239
  description: colDef.description,
236
240
  elementId: colDef.field,
237
241
  width: colDef.computedWidth,
@@ -11,6 +11,7 @@ import { fastMemo } from '@mui/x-internals/fastMemo';
11
11
  import { useRtl } from '@mui/system/RtlProvider';
12
12
  import { focusElement } from "../../utils/focusElement.mjs";
13
13
  import { useGridPrivateApiContext } from "../../hooks/utils/useGridPrivateApiContext.mjs";
14
+ import { useGridConfiguration } from "../../hooks/utils/useGridConfiguration.mjs";
14
15
  import { getColumnMenuItemKeys } from "../../hooks/features/columnMenu/getColumnMenuItemKeys.mjs";
15
16
  import { ColumnHeaderMenuIcon } from "./ColumnHeaderMenuIcon.mjs";
16
17
  import { GridColumnHeaderMenu } from "../menu/columnMenu/GridColumnHeaderMenu.mjs";
@@ -74,8 +75,10 @@ function GridColumnHeaderItem(props) {
74
75
  pinnedOffset
75
76
  } = props;
76
77
  const apiRef = useGridPrivateApiContext();
78
+ const configuration = useGridConfiguration();
77
79
  const rootProps = useGridRootProps();
78
80
  const isRtl = useRtl();
81
+ const adornment = configuration.hooks.useColumnHeaderAdornment(colDef.field);
79
82
  const headerCellRef = React.useRef(null);
80
83
  const columnMenuId = useId();
81
84
  const columnMenuButtonId = useId();
@@ -225,6 +228,7 @@ function GridColumnHeaderItem(props) {
225
228
  separatorSide: separatorSide,
226
229
  isDraggable: isDraggable,
227
230
  headerComponent: headerComponent,
231
+ adornment: adornment,
228
232
  description: colDef.description,
229
233
  elementId: colDef.field,
230
234
  width: colDef.computedWidth,
@@ -23,6 +23,13 @@ interface GridGenericColumnHeaderItemProps extends Pick<GridStateColDef, 'header
23
23
  columnMenuIconButton?: React.ReactNode;
24
24
  columnMenu?: React.ReactNode;
25
25
  columnTitleIconButtons?: React.ReactNode;
26
+ /**
27
+ * Optional adornment rendered at the start of the title content, before the
28
+ * title label (used by the Premium formula feature for A1 column letters).
29
+ * Placing it inside the (non-reversed) title content keeps it on the same
30
+ * side of the title for both left- and right-aligned headers.
31
+ */
32
+ adornment?: React.ReactNode;
26
33
  label: string;
27
34
  draggableContainerProps?: Partial<React.HTMLProps<HTMLDivElement>>;
28
35
  columnHeaderSeparatorProps?: Partial<GridColumnHeaderSeparatorProps>;
@@ -23,6 +23,13 @@ interface GridGenericColumnHeaderItemProps extends Pick<GridStateColDef, 'header
23
23
  columnMenuIconButton?: React.ReactNode;
24
24
  columnMenu?: React.ReactNode;
25
25
  columnTitleIconButtons?: React.ReactNode;
26
+ /**
27
+ * Optional adornment rendered at the start of the title content, before the
28
+ * title label (used by the Premium formula feature for A1 column letters).
29
+ * Placing it inside the (non-reversed) title content keeps it on the same
30
+ * side of the title for both left- and right-aligned headers.
31
+ */
32
+ adornment?: React.ReactNode;
26
33
  label: string;
27
34
  draggableContainerProps?: Partial<React.HTMLProps<HTMLDivElement>>;
28
35
  columnHeaderSeparatorProps?: Partial<GridColumnHeaderSeparatorProps>;
@@ -17,7 +17,7 @@ var _GridColumnHeaderTitle = require("./GridColumnHeaderTitle");
17
17
  var _GridColumnHeaderSeparator = require("./GridColumnHeaderSeparator");
18
18
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
- const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "style"];
20
+ const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "adornment", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "style"];
21
21
  const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = (0, _forwardRef.forwardRef)(function GridGenericColumnHeaderItem(props, ref) {
22
22
  const {
23
23
  classes,
@@ -34,6 +34,7 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = (0, _f
34
34
  columnMenuIconButton = null,
35
35
  columnMenu = null,
36
36
  columnTitleIconButtons = null,
37
+ adornment = null,
37
38
  headerClassName,
38
39
  label,
39
40
  resizable,
@@ -68,13 +69,13 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = (0, _f
68
69
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
69
70
  className: classes.titleContainer,
70
71
  role: "none",
71
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
72
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
72
73
  className: classes.titleContainerContent,
73
- children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderTitle.GridColumnHeaderTitle, {
74
+ children: [adornment, headerComponent !== undefined ? headerComponent : /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderTitle.GridColumnHeaderTitle, {
74
75
  label: label,
75
76
  description: description,
76
77
  columnWidth: width
77
- })
78
+ })]
78
79
  }), columnTitleIconButtons]
79
80
  }), columnMenuIconButton]
80
81
  })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderSeparator.GridColumnHeaderSeparator, (0, _extends2.default)({
@@ -2,7 +2,7 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "style"];
5
+ const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "adornment", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "style"];
6
6
  import * as React from 'react';
7
7
  import clsx from 'clsx';
8
8
  import useForkRef from '@mui/utils/useForkRef';
@@ -27,6 +27,7 @@ const GridGenericColumnHeaderItem = forwardRef(function GridGenericColumnHeaderI
27
27
  columnMenuIconButton = null,
28
28
  columnMenu = null,
29
29
  columnTitleIconButtons = null,
30
+ adornment = null,
30
31
  headerClassName,
31
32
  label,
32
33
  resizable,
@@ -61,13 +62,13 @@ const GridGenericColumnHeaderItem = forwardRef(function GridGenericColumnHeaderI
61
62
  children: [/*#__PURE__*/_jsxs("div", {
62
63
  className: classes.titleContainer,
63
64
  role: "none",
64
- children: [/*#__PURE__*/_jsx("div", {
65
+ children: [/*#__PURE__*/_jsxs("div", {
65
66
  className: classes.titleContainerContent,
66
- children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {
67
+ children: [adornment, headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {
67
68
  label: label,
68
69
  description: description,
69
70
  columnWidth: width
70
- })
71
+ })]
71
72
  }), columnTitleIconButtons]
72
73
  }), columnMenuIconButton]
73
74
  })), /*#__PURE__*/_jsx(GridColumnHeaderSeparator, _extends({
@@ -23,12 +23,23 @@ const renderSingleSelectOptions = ({
23
23
  getOptionLabel,
24
24
  getOptionValue,
25
25
  isSelectNative,
26
- baseSelectOptionProps
26
+ baseSelectOptionProps,
27
+ blankOptionLabel
27
28
  }) => {
28
- const iterableColumnValues = ['', ...((0, _filterPanelUtils.getValueOptions)(column) || [])];
29
- return iterableColumnValues.map(option => {
30
- const value = getOptionValue(option);
31
- let label = getOptionLabel(option);
29
+ const valueOptions = (0, _filterPanelUtils.getValueOptions)(column) || [];
30
+
31
+ // A column that declares its own blank entry already offers a way to reset the filter.
32
+ // Prepending another one would render two options sharing the same `''` key.
33
+ const declaresBlankOption = valueOptions.some(option => {
34
+ const optionValue = getOptionValue(option);
35
+ return optionValue === '' || optionValue === null || optionValue === undefined;
36
+ });
37
+ const iterableColumnValues = declaresBlankOption ? valueOptions : ['', ...valueOptions];
38
+ return iterableColumnValues.map((option, index) => {
39
+ // The prepended entry is ours, not a value option, so it skips the column accessors.
40
+ const isBlankOption = !declaresBlankOption && index === 0;
41
+ const value = isBlankOption ? '' : getOptionValue(option);
42
+ let label = isBlankOption ? blankOptionLabel : getOptionLabel(option);
32
43
  if (label === '') {
33
44
  label = ' '; // To force the height of the empty option
34
45
  }
@@ -98,7 +109,8 @@ function GridFilterInputSingleSelect(props) {
98
109
  getOptionLabel,
99
110
  getOptionValue,
100
111
  isSelectNative,
101
- baseSelectOptionProps: rootProps.slotProps?.baseSelectOption
112
+ baseSelectOptionProps: rootProps.slotProps?.baseSelectOption,
113
+ blankOptionLabel: apiRef.current.getLocaleText('filterValueAny')
102
114
  })
103
115
  })), headerFilterMenu, clearButton]
104
116
  });
@@ -15,12 +15,23 @@ const renderSingleSelectOptions = ({
15
15
  getOptionLabel,
16
16
  getOptionValue,
17
17
  isSelectNative,
18
- baseSelectOptionProps
18
+ baseSelectOptionProps,
19
+ blankOptionLabel
19
20
  }) => {
20
- const iterableColumnValues = ['', ...(getValueOptions(column) || [])];
21
- return iterableColumnValues.map(option => {
22
- const value = getOptionValue(option);
23
- let label = getOptionLabel(option);
21
+ const valueOptions = getValueOptions(column) || [];
22
+
23
+ // A column that declares its own blank entry already offers a way to reset the filter.
24
+ // Prepending another one would render two options sharing the same `''` key.
25
+ const declaresBlankOption = valueOptions.some(option => {
26
+ const optionValue = getOptionValue(option);
27
+ return optionValue === '' || optionValue === null || optionValue === undefined;
28
+ });
29
+ const iterableColumnValues = declaresBlankOption ? valueOptions : ['', ...valueOptions];
30
+ return iterableColumnValues.map((option, index) => {
31
+ // The prepended entry is ours, not a value option, so it skips the column accessors.
32
+ const isBlankOption = !declaresBlankOption && index === 0;
33
+ const value = isBlankOption ? '' : getOptionValue(option);
34
+ let label = isBlankOption ? blankOptionLabel : getOptionLabel(option);
24
35
  if (label === '') {
25
36
  label = ' '; // To force the height of the empty option
26
37
  }
@@ -90,7 +101,8 @@ function GridFilterInputSingleSelect(props) {
90
101
  getOptionLabel,
91
102
  getOptionValue,
92
103
  isSelectNative,
93
- baseSelectOptionProps: rootProps.slotProps?.baseSelectOption
104
+ baseSelectOptionProps: rootProps.slotProps?.baseSelectOption,
105
+ blankOptionLabel: apiRef.current.getLocaleText('filterValueAny')
94
106
  })
95
107
  })), headerFilterMenu, clearButton]
96
108
  });
@@ -83,6 +83,18 @@ export interface GridClasses {
83
83
  * Styles applied to the aggregation row overlay wrapper.
84
84
  */
85
85
  aggregationRowOverlayWrapper: string;
86
+ /**
87
+ * Styles applied to the A1-notation column-letter adornment in the column header (Premium formulas).
88
+ */
89
+ formulaColumnHeaderLetter: string;
90
+ /**
91
+ * Styles applied to the cells of the A1-notation row-number column (Premium formulas).
92
+ */
93
+ formulaRowNumberCell: string;
94
+ /**
95
+ * Styles applied to the formula bar root element (Premium formulas).
96
+ */
97
+ formulaBar: string;
86
98
  /**
87
99
  * Styles applied to the root element if `autoHeight={true}`.
88
100
  */
@@ -83,6 +83,18 @@ export interface GridClasses {
83
83
  * Styles applied to the aggregation row overlay wrapper.
84
84
  */
85
85
  aggregationRowOverlayWrapper: string;
86
+ /**
87
+ * Styles applied to the A1-notation column-letter adornment in the column header (Premium formulas).
88
+ */
89
+ formulaColumnHeaderLetter: string;
90
+ /**
91
+ * Styles applied to the cells of the A1-notation row-number column (Premium formulas).
92
+ */
93
+ formulaRowNumberCell: string;
94
+ /**
95
+ * Styles applied to the formula bar root element (Premium formulas).
96
+ */
97
+ formulaBar: string;
86
98
  /**
87
99
  * Styles applied to the root element if `autoHeight={true}`.
88
100
  */
@@ -30,4 +30,4 @@ const gridClassesOverrides = exports.gridClassesOverrides = {
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', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', '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']);
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', 'formulaColumnHeaderLetter', 'formulaRowNumberCell', 'formulaBar', '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', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', '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']);
@@ -22,4 +22,4 @@ export const gridClassesOverrides = {
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', 'contentFiller', 'detailPanel', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editInputCell', 'longTextCell', 'longTextCellContent', 'longTextCellExpandButton', 'longTextCellCollapseButton', 'longTextCellPopup', 'longTextCellPopperContent', 'editLongTextCell', 'editLongTextCellValue', 'editLongTextCellPopup', 'editLongTextCellPopperContent', 'editLongTextCellTextarea', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', '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']);
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', 'formulaColumnHeaderLetter', 'formulaRowNumberCell', 'formulaBar', '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', 'multiSelectCell', 'multiSelectCellChip', 'multiSelectCellChip--hidden', 'multiSelectCellOverflow', 'multiSelectCellPopup', 'multiSelectCellPopperContent', 'editMultiSelectCell', 'editMultiSelectCellChip', 'editMultiSelectCellChip--hidden', 'editMultiSelectCellOverflow', 'editMultiSelectCellPopup', 'editMultiSelectCellPopperContent', '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']);