@mui/x-data-grid 8.11.2 → 8.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 (176) hide show
  1. package/CHANGELOG.md +231 -0
  2. package/DataGrid/DataGrid.js +3 -1
  3. package/DataGrid/useDataGridComponent.js +2 -2
  4. package/colDef/gridActionsColDef.js +1 -0
  5. package/colDef/gridBooleanColDef.js +1 -0
  6. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  7. package/colDef/gridStringColDef.js +1 -0
  8. package/components/GridShadowScrollArea.js +2 -2
  9. package/components/GridSkeletonLoadingOverlay.js +2 -2
  10. package/components/cell/GridCell.js +7 -5
  11. package/components/panel/filterPanel/GridFilterInputBoolean.js +2 -2
  12. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +2 -2
  13. package/components/panel/filterPanel/GridFilterInputValue.js +2 -2
  14. package/components/quickFilter/QuickFilterControl.js +1 -1
  15. package/constants/localeTextConstants.js +29 -0
  16. package/esm/DataGrid/DataGrid.js +3 -1
  17. package/esm/DataGrid/useDataGridComponent.js +2 -2
  18. package/esm/colDef/gridActionsColDef.js +1 -0
  19. package/esm/colDef/gridBooleanColDef.js +1 -0
  20. package/esm/colDef/gridCheckboxSelectionColDef.js +1 -0
  21. package/esm/colDef/gridStringColDef.js +1 -0
  22. package/esm/components/GridShadowScrollArea.js +2 -2
  23. package/esm/components/GridSkeletonLoadingOverlay.js +2 -2
  24. package/esm/components/cell/GridCell.js +7 -5
  25. package/esm/components/panel/filterPanel/GridFilterInputBoolean.js +2 -2
  26. package/esm/components/panel/filterPanel/GridFilterInputSingleSelect.js +2 -2
  27. package/esm/components/panel/filterPanel/GridFilterInputValue.js +2 -2
  28. package/esm/components/quickFilter/QuickFilterControl.js +1 -1
  29. package/esm/constants/localeTextConstants.js +29 -0
  30. package/esm/hooks/features/columnResize/useGridColumnResize.js +2 -2
  31. package/esm/hooks/features/columns/useGridColumns.js +21 -4
  32. package/esm/hooks/features/filter/gridFilterSelector.d.ts +12 -4
  33. package/esm/hooks/features/filter/gridFilterSelector.js +21 -4
  34. package/esm/hooks/features/filter/gridFilterState.d.ts +3 -1
  35. package/esm/hooks/features/filter/gridFilterUtils.d.ts +3 -3
  36. package/esm/hooks/features/filter/gridFilterUtils.js +23 -13
  37. package/esm/hooks/features/filter/useGridFilter.d.ts +2 -1
  38. package/esm/hooks/features/filter/useGridFilter.js +7 -5
  39. package/esm/hooks/features/rows/gridRowsSelector.d.ts +9 -0
  40. package/esm/hooks/features/rows/gridRowsSelector.js +12 -0
  41. package/esm/hooks/features/rows/index.d.ts +1 -1
  42. package/esm/hooks/features/rows/index.js +1 -1
  43. package/esm/hooks/features/rows/useGridParamsApi.js +16 -7
  44. package/esm/hooks/features/sorting/gridSortingUtils.d.ts +3 -1
  45. package/esm/hooks/features/sorting/gridSortingUtils.js +10 -4
  46. package/esm/hooks/features/sorting/useGridSorting.d.ts +2 -1
  47. package/esm/hooks/features/sorting/useGridSorting.js +4 -3
  48. package/esm/index.js +1 -1
  49. package/esm/internals/index.d.ts +1 -1
  50. package/esm/internals/index.js +1 -1
  51. package/esm/locales/arSD.js +31 -0
  52. package/esm/locales/beBY.js +31 -0
  53. package/esm/locales/bgBG.js +31 -0
  54. package/esm/locales/bnBD.js +31 -0
  55. package/esm/locales/csCZ.js +31 -0
  56. package/esm/locales/daDK.js +31 -0
  57. package/esm/locales/deDE.js +32 -0
  58. package/esm/locales/elGR.js +31 -0
  59. package/esm/locales/esES.js +31 -0
  60. package/esm/locales/faIR.js +31 -0
  61. package/esm/locales/fiFI.js +31 -0
  62. package/esm/locales/frFR.js +32 -2
  63. package/esm/locales/heIL.js +31 -0
  64. package/esm/locales/hrHR.js +31 -0
  65. package/esm/locales/huHU.js +31 -0
  66. package/esm/locales/hyAM.js +31 -0
  67. package/esm/locales/idID.d.ts +1 -1
  68. package/esm/locales/idID.js +32 -0
  69. package/esm/locales/isIS.js +31 -0
  70. package/esm/locales/itIT.js +31 -0
  71. package/esm/locales/jaJP.js +31 -0
  72. package/esm/locales/koKR.js +31 -0
  73. package/esm/locales/nbNO.js +31 -0
  74. package/esm/locales/nlNL.js +31 -0
  75. package/esm/locales/nnNO.js +32 -0
  76. package/esm/locales/plPL.js +31 -0
  77. package/esm/locales/ptBR.js +31 -0
  78. package/esm/locales/ptPT.js +31 -0
  79. package/esm/locales/roRO.js +31 -0
  80. package/esm/locales/ruRU.js +31 -0
  81. package/esm/locales/skSK.js +31 -0
  82. package/esm/locales/svSE.js +31 -0
  83. package/esm/locales/trTR.js +31 -0
  84. package/esm/locales/ukUA.js +31 -0
  85. package/esm/locales/urPK.js +31 -0
  86. package/esm/locales/viVN.js +31 -0
  87. package/esm/locales/zhCN.js +31 -0
  88. package/esm/locales/zhHK.js +31 -0
  89. package/esm/locales/zhTW.js +31 -0
  90. package/esm/material/augmentation.d.ts +8 -0
  91. package/esm/material/index.js +147 -49
  92. package/esm/material/variables.js +2 -1
  93. package/esm/models/api/gridLocaleTextApi.d.ts +27 -0
  94. package/esm/models/api/gridParamsApi.d.ts +5 -1
  95. package/esm/models/configuration/gridAggregationConfiguration.d.ts +25 -0
  96. package/esm/models/configuration/gridAggregationConfiguration.js +1 -0
  97. package/esm/models/configuration/gridConfiguration.d.ts +6 -9
  98. package/esm/models/gridBaseSlots.d.ts +15 -0
  99. package/esm/models/gridFilterItem.d.ts +4 -2
  100. package/esm/models/gridFilterOperator.d.ts +1 -1
  101. package/esm/models/gridSlotsComponent.d.ts +10 -0
  102. package/esm/models/gridSlotsComponentsProps.d.ts +5 -1
  103. package/hooks/features/columnResize/useGridColumnResize.js +2 -2
  104. package/hooks/features/columns/useGridColumns.js +23 -6
  105. package/hooks/features/filter/gridFilterSelector.d.ts +12 -4
  106. package/hooks/features/filter/gridFilterSelector.js +22 -5
  107. package/hooks/features/filter/gridFilterState.d.ts +3 -1
  108. package/hooks/features/filter/gridFilterUtils.d.ts +3 -3
  109. package/hooks/features/filter/gridFilterUtils.js +23 -13
  110. package/hooks/features/filter/useGridFilter.d.ts +2 -1
  111. package/hooks/features/filter/useGridFilter.js +7 -5
  112. package/hooks/features/rows/gridRowsSelector.d.ts +9 -0
  113. package/hooks/features/rows/gridRowsSelector.js +12 -0
  114. package/hooks/features/rows/index.d.ts +1 -1
  115. package/hooks/features/rows/index.js +7 -0
  116. package/hooks/features/rows/useGridParamsApi.js +16 -7
  117. package/hooks/features/sorting/gridSortingUtils.d.ts +3 -1
  118. package/hooks/features/sorting/gridSortingUtils.js +10 -4
  119. package/hooks/features/sorting/useGridSorting.d.ts +2 -1
  120. package/hooks/features/sorting/useGridSorting.js +4 -3
  121. package/index.js +1 -1
  122. package/internals/index.d.ts +1 -1
  123. package/internals/index.js +7 -0
  124. package/locales/arSD.js +31 -0
  125. package/locales/beBY.js +31 -0
  126. package/locales/bgBG.js +31 -0
  127. package/locales/bnBD.js +31 -0
  128. package/locales/csCZ.js +31 -0
  129. package/locales/daDK.js +31 -0
  130. package/locales/deDE.js +32 -0
  131. package/locales/elGR.js +31 -0
  132. package/locales/esES.js +31 -0
  133. package/locales/faIR.js +31 -0
  134. package/locales/fiFI.js +31 -0
  135. package/locales/frFR.js +32 -2
  136. package/locales/heIL.js +31 -0
  137. package/locales/hrHR.js +31 -0
  138. package/locales/huHU.js +31 -0
  139. package/locales/hyAM.js +31 -0
  140. package/locales/idID.d.ts +1 -1
  141. package/locales/idID.js +32 -0
  142. package/locales/isIS.js +31 -0
  143. package/locales/itIT.js +31 -0
  144. package/locales/jaJP.js +31 -0
  145. package/locales/koKR.js +31 -0
  146. package/locales/nbNO.js +31 -0
  147. package/locales/nlNL.js +31 -0
  148. package/locales/nnNO.js +32 -0
  149. package/locales/plPL.js +31 -0
  150. package/locales/ptBR.js +31 -0
  151. package/locales/ptPT.js +31 -0
  152. package/locales/roRO.js +31 -0
  153. package/locales/ruRU.js +31 -0
  154. package/locales/skSK.js +31 -0
  155. package/locales/svSE.js +31 -0
  156. package/locales/trTR.js +31 -0
  157. package/locales/ukUA.js +31 -0
  158. package/locales/urPK.js +31 -0
  159. package/locales/viVN.js +31 -0
  160. package/locales/zhCN.js +31 -0
  161. package/locales/zhHK.js +31 -0
  162. package/locales/zhTW.js +31 -0
  163. package/material/augmentation.d.ts +8 -0
  164. package/material/index.js +147 -49
  165. package/material/variables.js +2 -1
  166. package/models/api/gridLocaleTextApi.d.ts +27 -0
  167. package/models/api/gridParamsApi.d.ts +5 -1
  168. package/models/configuration/gridAggregationConfiguration.d.ts +25 -0
  169. package/models/configuration/gridAggregationConfiguration.js +5 -0
  170. package/models/configuration/gridConfiguration.d.ts +6 -9
  171. package/models/gridBaseSlots.d.ts +15 -0
  172. package/models/gridFilterItem.d.ts +4 -2
  173. package/models/gridFilterOperator.d.ts +1 -1
  174. package/models/gridSlotsComponent.d.ts +10 -0
  175. package/models/gridSlotsComponentsProps.d.ts +5 -1
  176. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -5,6 +5,237 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.12.0
9
+
10
+ _Sep 25, 2025_
11
+
12
+ We'd like to extend a big thank you to the 15 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 🤝 Grid-Charts integration
15
+
16
+ ![Grid x Charts](https://github.com/user-attachments/assets/0817c36f-f87f-4688-8f30-fa0db638ca8c)
17
+
18
+ 👉 [🎥 Watch the full video](https://github.com/user-attachments/assets/28f1848e-dc85-4077-8756-a3e88afd4e54)
19
+
20
+ - ⌨️ Charts keyboard navigation
21
+ - ⚡️ Charts: Add new `renderer="svg-batch"` prop to Scatter charts that provides improved performance for large datasets
22
+ - 🐞 Bugfixes
23
+ - 📚 Documentation improvements
24
+ - 🧰 Codemod requires Node >=20.19
25
+
26
+ `@mui/x-codemod` minimum supported Node version is `20.19`.
27
+ This was only the case due to using the v18 `yargs` package; this now explicitly aligns with it. (#18979)
28
+
29
+ Special thanks go out to the community members for their valuable contributions:
30
+ @deade1e, @sai6855, @thomas-mcdonald
31
+
32
+ The following are all team members who have contributed to this release:
33
+ @alexfauquette, @bernardobelchior, @flaviendelangle, @Janpot, @JCQuintas, @LukasTy, @michelengelen, @prakhargupta1, @rita-codes, @siriwatknp, @arminmeh, @romgrk
34
+
35
+ ### Data Grid
36
+
37
+ #### `@mui/x-data-grid@8.12.0`
38
+
39
+ - [DataGrid] Fix flex column width diff calculation while resizing (#19667) @arminmeh
40
+
41
+ #### `@mui/x-data-grid-pro@8.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
42
+
43
+ Same changes as in `@mui/x-data-grid@8.12.0`.
44
+
45
+ #### `@mui/x-data-grid-premium@8.12.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
46
+
47
+ Same changes as in `@mui/x-data-grid-pro@8.12.0`, plus:
48
+
49
+ - [DataGridPremium] Grid-Charts integration (#18021) @arminmeh
50
+ - [DataGridPremium] Fix sorting and filtering of the tree group columns with aggregation (#19607) @arminmeh
51
+ - [DataGridPremium] Disable aggregation on the grouping column by default (#19692) @arminmeh
52
+ - [DataGridPremium] Do not rely on the group separation constant to retrieve the column name for the charts panel (#19677) @arminmeh
53
+ - [DataGridPremium] Fix stale aggregation state (#19690) @arminmeh
54
+ - [DataGridPremium] Fix pivot column being hidden on autosizing (#19699) @cherniavskii
55
+
56
+ ### Date and Time Pickers
57
+
58
+ #### `@mui/x-date-pickers@8.12.0`
59
+
60
+ - [pickers] Ensure reference value is not updated for invalid values (#19635) @michelengelen
61
+ - [pickers] Fix `slotProps.textField.slotProps.htmlInput` resolution (#19713) @LukasTy
62
+ - [pickers] Preserve time format when using single column layout on Time Range Picker (#19626) @sai6855
63
+ - [pickers] Preserve time format when using single column layout on Date Time Picker and Date Time Range Picker (#19608) @sai6855
64
+
65
+ #### `@mui/x-date-pickers-pro@8.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
66
+
67
+ Same changes as in `@mui/x-date-pickers@8.12.0`.
68
+
69
+ ### Charts
70
+
71
+ #### `@mui/x-charts@8.12.0`
72
+
73
+ - [charts] Add batch renderer for scatter chart (#19075) @bernardobelchior
74
+ - [charts] Add renderer suffix to performance benchmarks (#19620) @bernardobelchior
75
+ - [charts] Document how plugins can be used (#19343) @alexfauquette
76
+ - [charts] Export chart plugins per series type (#19337) @alexfauquette
77
+ - [charts] Export plugins (#19335) @alexfauquette
78
+ - [charts] Fix horizontal layout and toolbar (#19655) @alexfauquette
79
+ - [charts] Fix performance issue with JS animations (#19606) @bernardobelchior
80
+ - [charts] Fix piecewise scale causing wrong colors in axis with min/max (#19610) @bernardobelchior
81
+ - [charts] Fix zoom discard inconsistency (#19535) @bernardobelchior
82
+ - [charts] Introduce keyboard navigation (#19155) @alexfauquette
83
+ - [charts] Refactor `getAxisExtremum` (#19627) @bernardobelchior
84
+ - [charts] Remove unused code path from `getAxisScale` (#19673) @bernardobelchior
85
+ - [charts] Make new hideLegend prop on ChartWrapper optional (#19694) @thomas-mcdonald
86
+ - [charts] Fix chart crash in test environment (#19711) @JCQuintas
87
+
88
+ #### `@mui/x-charts-pro@8.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
89
+
90
+ Same changes as in `@mui/x-charts@8.12.0`, plus:
91
+
92
+ - [charts-pro] Add `valueFormatter` to sankey (#19636) @JCQuintas
93
+ - [charts-pro] Allow `source/target` keywords in sankey link color (#19634) @JCQuintas
94
+ - [charts-pro] Allow exporting `SankeyChart` (#19659) @JCQuintas
95
+ - [charts-pro] Fix axis inversion when using axis `max` and `filterMode: 'discard'` (#19200) @bernardobelchior
96
+
97
+ #### `@mui/x-charts-premium@8.12.0` [![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-charts-pro@8.12.0`, plus:
100
+
101
+ - [charts-premium] Grid-Charts integration (#18021) @arminmeh
102
+
103
+ ### Tree View
104
+
105
+ #### `@mui/x-tree-view@8.12.0`
106
+
107
+ - [tree view] Allow to pass `null` to the icon slots (#19569) @flaviendelangle
108
+ - [tree view] Fix `apiRef.current.isItemExpanded()` method (#19619) @flaviendelangle
109
+
110
+ #### `@mui/x-tree-view-pro@8.12.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
111
+
112
+ Same changes as in `@mui/x-tree-view@8.12.0`.
113
+
114
+ ### Codemod
115
+
116
+ #### `@mui/x-codemod@8.12.0`
117
+
118
+ - [codemod] Bump `engines.node` to `>=20.19` to align with `yargs` package (#18979) @LukasTy
119
+
120
+ ### Docs
121
+
122
+ - [docs] Add missing label to Charts example (#19616) @prakhargupta1
123
+ - [docs] Replace axis type and axis data with a table (#19618) @prakhargupta1
124
+ - [docs] Add Charts example collection page (#18353) @prakhargupta1
125
+ - [docs] Add a Charts demo showcasing bar and scatter composition (#19605) @prakhargupta1
126
+ - [docs] Add composition Charts demo for legends and tooltip (#19602) @prakhargupta1
127
+ - [docs] Add recipe about server-side data export (#19617) @siriwatknp
128
+ - [docs] Clarify DataGrid layout requirements (#19413) @romgrk
129
+ - [docs] Fix `ExportServerSideData` demo layout shift (#19669) @siriwatknp
130
+ - [docs] Improve server-side `updateRow()` description (#19554) @deade1e
131
+ - [docs] Show how to customize drawing area background (#19682) @alexfauquette
132
+ - [docs] Add hook documentation pages (#19334) @Copilot
133
+
134
+ ### Core
135
+
136
+ - [code-infra] Add copilot instructions specific to x repo (#19623) @JCQuintas
137
+ - [code-infra] Load `tsx` files in visual regression (#19595) @JCQuintas
138
+ - [code-infra] Remove renovate automerge (#19501) @Janpot
139
+ - [code-infra] Update `DEFAULT_TIMESTAMP` format to ISO 8601 (#19624) @Janpot
140
+ - [code-infra] Update `findLatestTaggedVersion` to filter tags based on major version (#19693) @michelengelen
141
+ - [code-infra] Fix changelog generation for charts premium (#19701) @JCQuintas
142
+ - [code-infra] Run prettier on `createReleasePR.mjs` (#19702) @bernardobelchior
143
+ - [code-infra] Make `x-charts-premium` releasable (#18959) @JCQuintas
144
+ - [docs-infra] Ensure `create-playground` script only runs if target file is absent (#19603) @michelengelen
145
+ - [docs-infra] Add @prakhargupta1 as a codeowner of the docs (#19679) @alexfauquette
146
+
147
+ ### Miscellaneous
148
+
149
+ - [test] Reduce time for wheel zoom test (#19571) @alexfauquette
150
+ - Change `matchPackageNames` to `matchDepNames` for date-fns-v2 @Janpot
151
+ - Remove groupName for date-fns-v2 in renovate.json @Janpot
152
+
153
+ ## 8.11.3
154
+
155
+ _Sep 16, 2025_
156
+
157
+ We'd like to extend a big thank you to the 11 contributors who made this release possible. Here are some highlights ✨:
158
+
159
+ - 🐞 Bugfixes
160
+ - 📚 Documentation improvements
161
+
162
+ Special thanks go out to the community members for their valuable contributions:
163
+ @sai6855
164
+
165
+ The following are all team members who have contributed to this release:
166
+ @alexfauquette, @bernardobelchior, @brijeshb42, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @LukasTy, @rita-codes, @siriwatknp
167
+
168
+ ### Data Grid
169
+
170
+ #### `@mui/x-data-grid@8.11.3`
171
+
172
+ - [DataGrid] Fix numeric font size not being applied (#19552) @cherniavskii
173
+ - [DataGrid] Improve `operator` types to display literal values (#19529) @siriwatknp
174
+
175
+ #### `@mui/x-data-grid-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
176
+
177
+ Same changes as in `@mui/x-data-grid@8.11.3`.
178
+
179
+ #### `@mui/x-data-grid-premium@8.11.3` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
180
+
181
+ Same changes as in `@mui/x-data-grid-pro@8.11.3`.
182
+
183
+ ### Date and Time Pickers
184
+
185
+ #### `@mui/x-date-pickers@8.11.3`
186
+
187
+ - [pickers] Refactor `slots` and `slotProps` propagation strategy (#18867) @LukasTy
188
+
189
+ #### `@mui/x-date-pickers-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
190
+
191
+ Same changes as in `@mui/x-date-pickers@8.11.3`.
192
+
193
+ ### Charts
194
+
195
+ #### `@mui/x-charts@8.11.3`
196
+
197
+ - [charts] Add `inline-` piecewise legend options (#19382) @JCQuintas
198
+ - [charts] Add bar gradient example (#19174) @bernardobelchior
199
+ - [charts] Ignore empty tick labels in label overlap computation (#19547) @alexfauquette
200
+ - [charts] Rename `isBandScale` to `isDiscreteScale` (#19514) @bernardobelchior
201
+ - [charts] Fix legend position affecting toolbar's position (#19257) @sai6855
202
+
203
+ #### `@mui/x-charts-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
204
+
205
+ Same changes as in `@mui/x-charts@8.11.3`, plus:
206
+
207
+ - [charts-pro] Add chart title and caption to export demo (#19524) @bernardobelchior
208
+
209
+ ### Tree View
210
+
211
+ #### `@mui/x-tree-view@8.11.3`
212
+
213
+ - [tree view] Stop looping through all items to publish the `removeItem` event (#19500) @flaviendelangle
214
+ - [tree view] Support flat DOM structure (#19350) @flaviendelangle
215
+ - [tree view] Update cursor styles for disabled TreeItem (#19548) @sai6855
216
+
217
+ #### `@mui/x-tree-view-pro@8.11.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
218
+
219
+ Same changes as in `@mui/x-tree-view@8.11.3`.
220
+
221
+ ### Codemod
222
+
223
+ #### `@mui/x-codemod@8.11.3`
224
+
225
+ Internal changes.
226
+
227
+ ### Docs
228
+
229
+ - [docs] Add styling row group recipe (#19349) @siriwatknp
230
+ - [docs] Group demos data into the dataset folder (#19549) @alexfauquette
231
+ - [docs] Add `shiny` bar chart example at the top (#19416) @JCQuintas
232
+
233
+ ### Core
234
+
235
+ - [code-infra] Axios update (#19577) @Janpot
236
+ - [code-infra] Remove usage of copy-files command from code-infra (#19518) @brijeshb42
237
+ - [internal] Fix naming to match convention @oliviertassinari
238
+
8
239
  ## 8.11.2
9
240
 
10
241
  _Sep 10, 2025_
@@ -28,7 +28,9 @@ const configuration = {
28
28
  useGridAriaAttributes: _useGridAriaAttributes.useGridAriaAttributes,
29
29
  useGridRowAriaAttributes: _useGridRowAriaAttributes.useGridRowAriaAttributes,
30
30
  useGridRowsOverridableMethods: _useGridRowsOverridableMethods.useGridRowsOverridableMethods,
31
- useCellAggregationResult: () => null
31
+ useCellAggregationResult: () => null,
32
+ useSortValueGetter: apiRef => apiRef.current.getCellValue,
33
+ useFilterValueGetter: apiRef => apiRef.current.getRowValue
32
34
  }
33
35
  };
34
36
  const DataGridRaw = function DataGrid(inProps, ref) {
@@ -84,8 +84,8 @@ const useDataGridComponent = (apiRef, props, configuration) => {
84
84
  (0, _useGridEditing.useGridEditing)(apiRef, props);
85
85
  (0, _useGridFocus.useGridFocus)(apiRef, props);
86
86
  (0, _useGridPreferencesPanel.useGridPreferencesPanel)(apiRef, props);
87
- (0, _useGridFilter.useGridFilter)(apiRef, props);
88
- (0, _useGridSorting.useGridSorting)(apiRef, props);
87
+ (0, _useGridFilter.useGridFilter)(apiRef, props, configuration);
88
+ (0, _useGridSorting.useGridSorting)(apiRef, props, configuration);
89
89
  (0, _useGridDensity.useGridDensity)(apiRef, props);
90
90
  (0, _useGridColumnResize.useGridColumnResize)(apiRef, props);
91
91
  (0, _useGridPagination.useGridPagination)(apiRef, props);
@@ -14,6 +14,7 @@ const GRID_ACTIONS_COL_DEF = exports.GRID_ACTIONS_COL_DEF = (0, _extends2.defaul
14
14
  filterable: false,
15
15
  // @ts-ignore
16
16
  aggregable: false,
17
+ chartable: false,
17
18
  width: 100,
18
19
  display: 'flex',
19
20
  align: 'center',
@@ -43,6 +43,7 @@ const GRID_BOOLEAN_COL_DEF = exports.GRID_BOOLEAN_COL_DEF = (0, _extends2.defaul
43
43
  getApplyQuickFilterFn: () => null,
44
44
  // @ts-ignore
45
45
  aggregable: false,
46
+ chartable: false,
46
47
  // @ts-ignore
47
48
  pastedValueParser: value => stringToBoolean(value)
48
49
  });
@@ -23,6 +23,7 @@ const GRID_CHECKBOX_SELECTION_COL_DEF = exports.GRID_CHECKBOX_SELECTION_COL_DEF
23
23
  filterable: false,
24
24
  // @ts-ignore
25
25
  aggregable: false,
26
+ chartable: false,
26
27
  disableColumnMenu: true,
27
28
  disableReorder: true,
28
29
  disableExport: true,
@@ -22,6 +22,7 @@ const GRID_STRING_COL_DEF = exports.GRID_STRING_COL_DEF = {
22
22
  pinnable: true,
23
23
  // @ts-ignore
24
24
  aggregable: true,
25
+ chartable: true,
25
26
  editable: false,
26
27
  sortComparator: _gridSortingUtils.gridStringOrNumberComparator,
27
28
  type: 'string',
@@ -86,8 +86,8 @@ const GridShadowScrollArea = exports.GridShadowScrollArea = (0, _forwardRef.forw
86
86
  const {
87
87
  children
88
88
  } = props,
89
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
90
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(ShadowScrollArea, (0, _extends2.default)({}, rest, {
89
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
90
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ShadowScrollArea, (0, _extends2.default)({}, other, {
91
91
  ref: ref,
92
92
  children: children
93
93
  }));
@@ -70,7 +70,7 @@ const GridSkeletonLoadingOverlayInner = exports.GridSkeletonLoadingOverlayInner
70
70
  visibleColumns,
71
71
  showFirstRowBorder
72
72
  } = props,
73
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
73
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
74
74
  const allVisibleColumns = (0, _hooks.useGridSelector)(apiRef, _hooks.gridVisibleColumnDefinitionsSelector);
75
75
  const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);
76
76
  const pinnedColumns = (0, _hooks.useGridSelector)(apiRef, _hooks.gridVisiblePinnedColumnDefinitionsSelector);
@@ -189,7 +189,7 @@ const GridSkeletonLoadingOverlayInner = exports.GridSkeletonLoadingOverlayInner
189
189
  (0, _hooks.useGridEvent)(apiRef, 'columnResize', handleColumnResize);
190
190
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonOverlay, (0, _extends2.default)({
191
191
  className: classes.root
192
- }, rest, {
192
+ }, other, {
193
193
  ref: handleRef,
194
194
  children: children
195
195
  }));
@@ -102,6 +102,10 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
102
102
  const config = (0, _useGridConfiguration.useGridConfiguration)();
103
103
  const cellAggregationResult = config.hooks.useCellAggregationResult(rowId, field);
104
104
  const cellMode = editCellState ? _models.GridCellModes.Edit : _models.GridCellModes.View;
105
+ const {
106
+ value: forcedValue,
107
+ formattedValue: forcedFormattedValue
108
+ } = cellAggregationResult || {};
105
109
  const cellParams = apiRef.current.getCellParamsForRow(rowId, field, row, {
106
110
  colDef: column,
107
111
  cellMode,
@@ -113,13 +117,11 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
113
117
  hasFocus: (0, _useGridSelector.useGridSelector)(apiRef, () => {
114
118
  const focus = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
115
119
  return focus?.id === rowId && focus.field === field;
116
- })
120
+ }),
121
+ value: forcedValue,
122
+ formattedValue: forcedFormattedValue
117
123
  });
118
124
  cellParams.api = apiRef.current;
119
- if (cellAggregationResult) {
120
- cellParams.value = cellAggregationResult.value;
121
- cellParams.formattedValue = column.valueFormatter ? column.valueFormatter(cellParams.value, row, column, apiRef) : cellParams.value;
122
- }
123
125
  const isSelected = (0, _useGridSelector.useGridSelector)(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
124
126
  id: rowId,
125
127
  field
@@ -28,7 +28,7 @@ function GridFilterInputBoolean(props) {
28
28
  tabIndex,
29
29
  slotProps
30
30
  } = props,
31
- others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
31
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
32
32
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
33
33
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
34
34
  const labelId = (0, _useId.default)();
@@ -63,7 +63,7 @@ function GridFilterInputBoolean(props) {
63
63
  tabIndex
64
64
  }, rootSlotProps?.htmlInput)
65
65
  }
66
- }, baseSelectProps, others, slotProps?.root, {
66
+ }, baseSelectProps, other, slotProps?.root, {
67
67
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseSelectOption, (0, _extends2.default)({}, baseSelectOptionProps, {
68
68
  native: isSelectNative,
69
69
  value: "",
@@ -50,7 +50,7 @@ function GridFilterInputSingleSelect(props) {
50
50
  headerFilterMenu,
51
51
  slotProps
52
52
  } = props,
53
- others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
53
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
54
54
  const filterValue = item.value ?? '';
55
55
  const id = (0, _useId.default)();
56
56
  const labelId = (0, _useId.default)();
@@ -92,7 +92,7 @@ function GridFilterInputSingleSelect(props) {
92
92
  }, slotProps?.root.slotProps?.htmlInput)
93
93
  },
94
94
  native: isSelectNative
95
- }, rootProps.slotProps?.baseSelect, others, slotProps?.root, {
95
+ }, rootProps.slotProps?.baseSelect, other, slotProps?.root, {
96
96
  children: renderSingleSelectOptions({
97
97
  column: resolvedColumn,
98
98
  OptionComponent: rootProps.slots.baseSelectOption,
@@ -29,7 +29,7 @@ function GridFilterInputValue(props) {
29
29
  clearButton,
30
30
  headerFilterMenu
31
31
  } = props,
32
- others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
32
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
33
33
  const textFieldProps = slotProps?.root;
34
34
  const filterTimeout = (0, _useTimeout.useTimeout)();
35
35
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
@@ -76,7 +76,7 @@ function GridFilterInputValue(props) {
76
76
  }, textFieldProps?.slotProps?.htmlInput)
77
77
  }),
78
78
  inputRef: focusElementRef
79
- }, rootProps.slotProps?.baseTextField, others, textFieldProps)), headerFilterMenu, clearButton]
79
+ }, rootProps.slotProps?.baseTextField, other, textFieldProps)), headerFilterMenu, clearButton]
80
80
  });
81
81
  }
82
82
  function sanitizeFilterItemValue(value) {
@@ -126,6 +126,6 @@ process.env.NODE_ENV !== "production" ? QuickFilterControl.propTypes = {
126
126
  slotProps: _propTypes.default.object,
127
127
  style: _propTypes.default.object,
128
128
  tabIndex: _propTypes.default.number,
129
- type: _propTypes.default.oneOfType([_propTypes.default.oneOf(['button', 'checkbox', 'color', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week']), _propTypes.default.object]),
129
+ type: _propTypes.default.string,
130
130
  value: _propTypes.default.string
131
131
  } : void 0;
@@ -38,6 +38,8 @@ const GRID_DEFAULT_LOCALE_TEXT = exports.GRID_DEFAULT_LOCALE_TEXT = {
38
38
  toolbarExportExcel: 'Download as Excel',
39
39
  // Toolbar pivot button
40
40
  toolbarPivot: 'Pivot',
41
+ // Toolbar charts button
42
+ toolbarCharts: 'Charts',
41
43
  // Toolbar AI Assistant button
42
44
  toolbarAssistant: 'AI Assistant',
43
45
  // Columns management text
@@ -117,6 +119,7 @@ const GRID_DEFAULT_LOCALE_TEXT = exports.GRID_DEFAULT_LOCALE_TEXT = {
117
119
  columnMenuSortAsc: 'Sort by ASC',
118
120
  columnMenuSortDesc: 'Sort by DESC',
119
121
  columnMenuManagePivot: 'Manage pivot',
122
+ columnMenuManageCharts: 'Manage charts',
120
123
  // Column header text
121
124
  columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} active filters` : `${count} active filter`,
122
125
  columnHeaderFiltersLabel: 'Show filters',
@@ -185,6 +188,7 @@ const GRID_DEFAULT_LOCALE_TEXT = exports.GRID_DEFAULT_LOCALE_TEXT = {
185
188
  rowReorderingHeaderName: 'Row reordering',
186
189
  // Aggregation
187
190
  aggregationMenuItemHeader: 'Aggregation',
191
+ aggregationFunctionLabelNone: 'none',
188
192
  aggregationFunctionLabelSum: 'sum',
189
193
  aggregationFunctionLabelAvg: 'avg',
190
194
  aggregationFunctionLabelMin: 'min',
@@ -218,6 +222,31 @@ const GRID_DEFAULT_LOCALE_TEXT = exports.GRID_DEFAULT_LOCALE_TEXT = {
218
222
  pivotDragToValues: 'Drag here to create values',
219
223
  pivotYearColumnHeaderName: '(Year)',
220
224
  pivotQuarterColumnHeaderName: '(Quarter)',
225
+ // Charts configuration panel
226
+ chartsNoCharts: 'There are no charts available',
227
+ chartsChartNotSelected: 'Select a chart type to configure its options',
228
+ chartsTabChart: 'Chart',
229
+ chartsTabFields: 'Fields',
230
+ chartsTabCustomize: 'Customize',
231
+ chartsCloseButton: 'Close charts configuration',
232
+ chartsSyncButtonLabel: 'Sync chart',
233
+ chartsSearchPlaceholder: 'Search fields',
234
+ chartsSearchLabel: 'Search fields',
235
+ chartsSearchClear: 'Clear search',
236
+ chartsNoFields: 'No fields',
237
+ chartsFieldBlocked: 'This field cannot be added to any section',
238
+ chartsCategories: 'Categories',
239
+ chartsSeries: 'Series',
240
+ chartsMenuAddToDimensions: dimensionLabel => `Add to ${dimensionLabel}`,
241
+ chartsMenuAddToValues: valuesLabel => `Add to ${valuesLabel}`,
242
+ chartsMenuMoveUp: 'Move up',
243
+ chartsMenuMoveDown: 'Move down',
244
+ chartsMenuMoveToTop: 'Move to top',
245
+ chartsMenuMoveToBottom: 'Move to bottom',
246
+ chartsMenuOptions: 'Field options',
247
+ chartsMenuRemove: 'Remove',
248
+ chartsDragToDimensions: dimensionLabel => `Drag here to use column as ${dimensionLabel}`,
249
+ chartsDragToValues: valuesLabel => `Drag here to use column as ${valuesLabel}`,
221
250
  // AI Assistant panel
222
251
  aiAssistantPanelTitle: 'AI Assistant',
223
252
  aiAssistantPanelClose: 'Close AI Assistant',
@@ -21,7 +21,9 @@ const configuration = {
21
21
  useGridAriaAttributes,
22
22
  useGridRowAriaAttributes,
23
23
  useGridRowsOverridableMethods,
24
- useCellAggregationResult: () => null
24
+ useCellAggregationResult: () => null,
25
+ useSortValueGetter: apiRef => apiRef.current.getCellValue,
26
+ useFilterValueGetter: apiRef => apiRef.current.getRowValue
25
27
  }
26
28
  };
27
29
  const DataGridRaw = function DataGrid(inProps, ref) {
@@ -78,8 +78,8 @@ export const useDataGridComponent = (apiRef, props, configuration) => {
78
78
  useGridEditing(apiRef, props);
79
79
  useGridFocus(apiRef, props);
80
80
  useGridPreferencesPanel(apiRef, props);
81
- useGridFilter(apiRef, props);
82
- useGridSorting(apiRef, props);
81
+ useGridFilter(apiRef, props, configuration);
82
+ useGridSorting(apiRef, props, configuration);
83
83
  useGridDensity(apiRef, props);
84
84
  useGridColumnResize(apiRef, props);
85
85
  useGridPagination(apiRef, props);
@@ -7,6 +7,7 @@ export const GRID_ACTIONS_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
7
7
  filterable: false,
8
8
  // @ts-ignore
9
9
  aggregable: false,
10
+ chartable: false,
10
11
  width: 100,
11
12
  display: 'flex',
12
13
  align: 'center',
@@ -36,6 +36,7 @@ export const GRID_BOOLEAN_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
36
36
  getApplyQuickFilterFn: () => null,
37
37
  // @ts-ignore
38
38
  aggregable: false,
39
+ chartable: false,
39
40
  // @ts-ignore
40
41
  pastedValueParser: value => stringToBoolean(value)
41
42
  });
@@ -15,6 +15,7 @@ export const GRID_CHECKBOX_SELECTION_COL_DEF = _extends({}, GRID_BOOLEAN_COL_DEF
15
15
  filterable: false,
16
16
  // @ts-ignore
17
17
  aggregable: false,
18
+ chartable: false,
18
19
  disableColumnMenu: true,
19
20
  disableReorder: true,
20
21
  disableExport: true,
@@ -17,6 +17,7 @@ export const GRID_STRING_COL_DEF = {
17
17
  pinnable: true,
18
18
  // @ts-ignore
19
19
  aggregable: true,
20
+ chartable: true,
20
21
  editable: false,
21
22
  sortComparator: gridStringOrNumberComparator,
22
23
  type: 'string',
@@ -78,8 +78,8 @@ const GridShadowScrollArea = forwardRef(function GridShadowScrollArea(props, ref
78
78
  const {
79
79
  children
80
80
  } = props,
81
- rest = _objectWithoutPropertiesLoose(props, _excluded);
82
- return /*#__PURE__*/_jsx(ShadowScrollArea, _extends({}, rest, {
81
+ other = _objectWithoutPropertiesLoose(props, _excluded);
82
+ return /*#__PURE__*/_jsx(ShadowScrollArea, _extends({}, other, {
83
83
  ref: ref,
84
84
  children: children
85
85
  }));
@@ -62,7 +62,7 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
62
62
  visibleColumns,
63
63
  showFirstRowBorder
64
64
  } = props,
65
- rest = _objectWithoutPropertiesLoose(props, _excluded);
65
+ other = _objectWithoutPropertiesLoose(props, _excluded);
66
66
  const allVisibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
67
67
  const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);
68
68
  const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
@@ -181,7 +181,7 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
181
181
  useGridEvent(apiRef, 'columnResize', handleColumnResize);
182
182
  return /*#__PURE__*/_jsx(SkeletonOverlay, _extends({
183
183
  className: classes.root
184
- }, rest, {
184
+ }, other, {
185
185
  ref: handleRef,
186
186
  children: children
187
187
  }));
@@ -95,6 +95,10 @@ const GridCell = forwardRef(function GridCell(props, ref) {
95
95
  const config = useGridConfiguration();
96
96
  const cellAggregationResult = config.hooks.useCellAggregationResult(rowId, field);
97
97
  const cellMode = editCellState ? GridCellModes.Edit : GridCellModes.View;
98
+ const {
99
+ value: forcedValue,
100
+ formattedValue: forcedFormattedValue
101
+ } = cellAggregationResult || {};
98
102
  const cellParams = apiRef.current.getCellParamsForRow(rowId, field, row, {
99
103
  colDef: column,
100
104
  cellMode,
@@ -106,13 +110,11 @@ const GridCell = forwardRef(function GridCell(props, ref) {
106
110
  hasFocus: useGridSelector(apiRef, () => {
107
111
  const focus = gridFocusCellSelector(apiRef);
108
112
  return focus?.id === rowId && focus.field === field;
109
- })
113
+ }),
114
+ value: forcedValue,
115
+ formattedValue: forcedFormattedValue
110
116
  });
111
117
  cellParams.api = apiRef.current;
112
- if (cellAggregationResult) {
113
- cellParams.value = cellAggregationResult.value;
114
- cellParams.formattedValue = column.valueFormatter ? column.valueFormatter(cellParams.value, row, column, apiRef) : cellParams.value;
115
- }
116
118
  const isSelected = useGridSelector(apiRef, () => apiRef.current.unstable_applyPipeProcessors('isCellSelected', false, {
117
119
  id: rowId,
118
120
  field
@@ -20,7 +20,7 @@ function GridFilterInputBoolean(props) {
20
20
  tabIndex,
21
21
  slotProps
22
22
  } = props,
23
- others = _objectWithoutPropertiesLoose(props, _excluded);
23
+ other = _objectWithoutPropertiesLoose(props, _excluded);
24
24
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
25
25
  const rootProps = useGridRootProps();
26
26
  const labelId = useId();
@@ -55,7 +55,7 @@ function GridFilterInputBoolean(props) {
55
55
  tabIndex
56
56
  }, rootSlotProps?.htmlInput)
57
57
  }
58
- }, baseSelectProps, others, slotProps?.root, {
58
+ }, baseSelectProps, other, slotProps?.root, {
59
59
  children: [/*#__PURE__*/_jsx(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
60
60
  native: isSelectNative,
61
61
  value: "",
@@ -42,7 +42,7 @@ function GridFilterInputSingleSelect(props) {
42
42
  headerFilterMenu,
43
43
  slotProps
44
44
  } = props,
45
- others = _objectWithoutPropertiesLoose(props, _excluded);
45
+ other = _objectWithoutPropertiesLoose(props, _excluded);
46
46
  const filterValue = item.value ?? '';
47
47
  const id = useId();
48
48
  const labelId = useId();
@@ -84,7 +84,7 @@ function GridFilterInputSingleSelect(props) {
84
84
  }, slotProps?.root.slotProps?.htmlInput)
85
85
  },
86
86
  native: isSelectNative
87
- }, rootProps.slotProps?.baseSelect, others, slotProps?.root, {
87
+ }, rootProps.slotProps?.baseSelect, other, slotProps?.root, {
88
88
  children: renderSingleSelectOptions({
89
89
  column: resolvedColumn,
90
90
  OptionComponent: rootProps.slots.baseSelectOption,
@@ -22,7 +22,7 @@ function GridFilterInputValue(props) {
22
22
  clearButton,
23
23
  headerFilterMenu
24
24
  } = props,
25
- others = _objectWithoutPropertiesLoose(props, _excluded);
25
+ other = _objectWithoutPropertiesLoose(props, _excluded);
26
26
  const textFieldProps = slotProps?.root;
27
27
  const filterTimeout = useTimeout();
28
28
  const [filterValueState, setFilterValueState] = React.useState(sanitizeFilterItemValue(item.value));
@@ -69,7 +69,7 @@ function GridFilterInputValue(props) {
69
69
  }, textFieldProps?.slotProps?.htmlInput)
70
70
  }),
71
71
  inputRef: focusElementRef
72
- }, rootProps.slotProps?.baseTextField, others, textFieldProps)), headerFilterMenu, clearButton]
72
+ }, rootProps.slotProps?.baseTextField, other, textFieldProps)), headerFilterMenu, clearButton]
73
73
  });
74
74
  }
75
75
  function sanitizeFilterItemValue(value) {