@mui/x-virtualizer 0.3.3 → 0.3.4
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.
- package/CHANGELOG.md +488 -0
- package/esm/features/dimensions.js +46 -1
- package/esm/features/virtualization/virtualization.js +2 -2
- package/esm/index.js +1 -1
- package/features/dimensions.js +46 -1
- package/features/virtualization/virtualization.js +2 -2
- package/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,494 @@
|
|
|
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.28.1
|
|
9
|
+
|
|
10
|
+
<!-- generated comparing v8.28.0..v8.x -->
|
|
11
|
+
|
|
12
|
+
_Mar 26, 2026_
|
|
13
|
+
|
|
14
|
+
We'd like to extend a big thank you to the 2 contributors who made this release possible.
|
|
15
|
+
|
|
16
|
+
The following team members contributed to this release:
|
|
17
|
+
@arminmeh, @cherniavskii
|
|
18
|
+
|
|
19
|
+
### Data Grid
|
|
20
|
+
|
|
21
|
+
#### `@mui/x-data-grid@8.28.1`
|
|
22
|
+
|
|
23
|
+
- [DataGrid] Prevent repeated `hasScrollbar` state updates (#21847) @arminmeh
|
|
24
|
+
|
|
25
|
+
#### `@mui/x-data-grid-pro@8.28.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
26
|
+
|
|
27
|
+
Same changes as in `@mui/x-data-grid@8.28.1`, plus:
|
|
28
|
+
|
|
29
|
+
- [DataGridPro] `fetchRows()` API's default `start` and `end` params based on scroll position with lazy loading (#21811) @arminmeh
|
|
30
|
+
|
|
31
|
+
#### `@mui/x-data-grid-premium@8.28.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
32
|
+
|
|
33
|
+
Same changes as in `@mui/x-data-grid-pro@8.28.1`.
|
|
34
|
+
|
|
35
|
+
### Core
|
|
36
|
+
|
|
37
|
+
- [internal] Remove headless data grid packages (#21848) @cherniavskii
|
|
38
|
+
|
|
39
|
+
## 8.28.0
|
|
40
|
+
|
|
41
|
+
_Mar 19, 2026_
|
|
42
|
+
|
|
43
|
+
We'd like to extend a big thank you to the 5 contributors who made this release possible. Here are some highlights ✨:
|
|
44
|
+
|
|
45
|
+
TODO INSERT HIGHLIGHTS
|
|
46
|
+
|
|
47
|
+
The following team members contributed to this release:
|
|
48
|
+
@alexfauquette, @brijeshb42, @Janpot, @JCQuintas, @sai6855
|
|
49
|
+
|
|
50
|
+
### Data Grid
|
|
51
|
+
|
|
52
|
+
#### `@mui/x-data-grid@8.28.0`
|
|
53
|
+
|
|
54
|
+
- [DataGrid] Move `elementOverrides` to constants and remove duplicates (@sai6855) (#21752) @github-actions[bot]
|
|
55
|
+
|
|
56
|
+
#### `@mui/x-data-grid-pro@8.28.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
57
|
+
|
|
58
|
+
Same changes as in `@mui/x-data-grid@8.28.0`.
|
|
59
|
+
|
|
60
|
+
#### `@mui/x-data-grid-premium@8.28.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
61
|
+
|
|
62
|
+
Same changes as in `@mui/x-data-grid-pro@8.28.0`.
|
|
63
|
+
|
|
64
|
+
### Date and Time Pickers
|
|
65
|
+
|
|
66
|
+
#### `@mui/x-date-pickers@8.27.2`
|
|
67
|
+
|
|
68
|
+
Internal changes.
|
|
69
|
+
|
|
70
|
+
#### `@mui/x-date-pickers-pro@8.27.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
71
|
+
|
|
72
|
+
Same changes as in `@mui/x-date-pickers@8.27.2`.
|
|
73
|
+
|
|
74
|
+
### Charts
|
|
75
|
+
|
|
76
|
+
#### `@mui/x-charts@8.28.0`
|
|
77
|
+
|
|
78
|
+
- [charts] Improve deprecation warnings (#21760) (#21767) @alexfauquette
|
|
79
|
+
- [charts] Refactor `FunnelChart` classes structure (@JCQuintas) (#21763) @github-actions[bot]
|
|
80
|
+
- [charts] Refactor `Heatmap` classes structure (#21653) (#21745) @JCQuintas
|
|
81
|
+
- [charts] Refactor `PieChart` classes structure (@JCQuintas) (#21715) @github-actions[bot]
|
|
82
|
+
- [charts] Refactor `RadarChart` classes structure (@JCQuintas) (#21730) @github-actions[bot]
|
|
83
|
+
- [charts] Refactor `SankeyChart` classes structure (#21654) (#21726) @JCQuintas
|
|
84
|
+
- [charts] Rename `data-series-id` by `data-series` (#21761) (#21772) @alexfauquette
|
|
85
|
+
|
|
86
|
+
#### `@mui/x-charts-pro@8.28.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
87
|
+
|
|
88
|
+
Same changes as in `@mui/x-charts@8.28.0`, plus:
|
|
89
|
+
|
|
90
|
+
- [charts-pro] Allow `brush` interaction to accept `requiredKeys/pointerMode` (#21723) @JCQuintas
|
|
91
|
+
|
|
92
|
+
#### `@mui/x-charts-premium@8.28.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
93
|
+
|
|
94
|
+
Same changes as in `@mui/x-charts-pro@8.28.0`.
|
|
95
|
+
|
|
96
|
+
### Tree View
|
|
97
|
+
|
|
98
|
+
#### `@mui/x-tree-view@8.27.2`
|
|
99
|
+
|
|
100
|
+
Internal changes.
|
|
101
|
+
|
|
102
|
+
#### `@mui/x-tree-view-pro@8.27.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
103
|
+
|
|
104
|
+
Same changes as in `@mui/x-tree-view@8.27.2`.
|
|
105
|
+
|
|
106
|
+
### Codemod
|
|
107
|
+
|
|
108
|
+
#### `@mui/x-codemod@8.27.0`
|
|
109
|
+
|
|
110
|
+
Internal changes.
|
|
111
|
+
|
|
112
|
+
### Core
|
|
113
|
+
|
|
114
|
+
- [code-infra] Fix contributor generation in changelog (#21712) @brijeshb42
|
|
115
|
+
- [code-infra] Install pkg-pr-new (#21778) @Janpot
|
|
116
|
+
|
|
117
|
+
## 8.27.5
|
|
118
|
+
|
|
119
|
+
_Mar 11, 2026_
|
|
120
|
+
|
|
121
|
+
We'd like to extend a big thank you to the 7 contributors who made this release possible. Here are some highlights ✨:
|
|
122
|
+
|
|
123
|
+
- 🐞 Bugfixes
|
|
124
|
+
|
|
125
|
+
The following team members contributed to this release:
|
|
126
|
+
@bernardobelchior, @JCQuintas, @MBilalShafi, @michelengelen, @mj12albert, @sai6855, @siriwatknp
|
|
127
|
+
|
|
128
|
+
### Data Grid
|
|
129
|
+
|
|
130
|
+
#### `@mui/x-data-grid@8.27.5`
|
|
131
|
+
|
|
132
|
+
- [DataGrid] Fix crash when `rows` and `rowModesModel` are updated simultaneously (#21684) @michelengelen
|
|
133
|
+
- [DataGrid] Forward rest props in `GridFilterInputMultipleValue` (#21444) @siriwatknp
|
|
134
|
+
- [DataGrid] Remove double rtl inversion logic for columns pinning (#21443) @siriwatknp
|
|
135
|
+
- [DataGrid] Add missing `resizablePanelHandle` classes to `gridClasses` object (#21632) @sai6855
|
|
136
|
+
- [DataGrid] Refactor `headerAlign` style calls (#21633) @sai6855
|
|
137
|
+
- [DataGrid] Fix keyboard navigation with single-row checkbox selection (#21529) @mj12albert
|
|
138
|
+
|
|
139
|
+
#### `@mui/x-data-grid-pro@8.27.5` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
140
|
+
|
|
141
|
+
Same changes as in `@mui/x-data-grid@8.27.5`, plus:
|
|
142
|
+
|
|
143
|
+
- [DataGridPro] Add `role="presentation"` to detail panel toggle header content (#21691) @michelengelen
|
|
144
|
+
- [DataGridPro] Fix sorting not reflected in nested server-side data (#21641) @MBilalShafi
|
|
145
|
+
|
|
146
|
+
#### `@mui/x-data-grid-premium@8.27.5` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
147
|
+
|
|
148
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.5`.
|
|
149
|
+
|
|
150
|
+
### Charts
|
|
151
|
+
|
|
152
|
+
#### `@mui/x-charts@8.27.5`
|
|
153
|
+
|
|
154
|
+
- [charts] Refactor `BarChart` classes structure (#21601) (#21644) @JCQuintas
|
|
155
|
+
- [charts] Refactor `LineChart` classes structure (#21672) @JCQuintas
|
|
156
|
+
- [charts] Refactor `ScatterChart` classes structure (#21706) @JCQuintas
|
|
157
|
+
|
|
158
|
+
#### `@mui/x-charts-pro@8.27.5` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
159
|
+
|
|
160
|
+
Same changes as in `@mui/x-charts@8.27.5`, plus:
|
|
161
|
+
|
|
162
|
+
- [charts-pro] Fix image export truncated when page is zoomed out (#21696) @bernardobelchior
|
|
163
|
+
|
|
164
|
+
#### `@mui/x-charts-premium@8.27.5` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
165
|
+
|
|
166
|
+
Same changes as in `@mui/x-charts-pro@8.27.5`.
|
|
167
|
+
|
|
168
|
+
### Docs
|
|
169
|
+
|
|
170
|
+
- [docs] Fix `AssistantWithDataSource` demo crashing (#21631) @sai6855
|
|
171
|
+
- [docs] Move Range Bar Chart to existing charts (#21122) @bernardobelchior
|
|
172
|
+
|
|
173
|
+
### Core
|
|
174
|
+
|
|
175
|
+
- [code-infra] Fix datagrid test flakyness (#21657) @JCQuintas
|
|
176
|
+
- [code-infra] Removed `getTeamMembers` function and usage from the release script (#21608) @michelengelen
|
|
177
|
+
|
|
178
|
+
### Miscellaneous
|
|
179
|
+
|
|
180
|
+
- [test] Add missing tests for forwarding props to filter operators in DataGrid (#21700) @siriwatknp
|
|
181
|
+
|
|
182
|
+
## 8.27.4
|
|
183
|
+
|
|
184
|
+
_Mar 5, 2026_
|
|
185
|
+
|
|
186
|
+
We'd like to extend a big thank you to the 6 contributors who made this release possible. Here are some highlights ✨:
|
|
187
|
+
|
|
188
|
+
- 🐞 Bugfixes
|
|
189
|
+
- 🌎 Improve Ukrainian (uk-UA) locale
|
|
190
|
+
|
|
191
|
+
Special thanks go out to this community member for their valuable contribution:
|
|
192
|
+
@lion1963
|
|
193
|
+
|
|
194
|
+
The following team members contributed to this release:
|
|
195
|
+
@arminmeh, @brijeshb42, @dav-is, @JCQuintas, @sai6855
|
|
196
|
+
|
|
197
|
+
### Data Grid
|
|
198
|
+
|
|
199
|
+
#### `@mui/x-data-grid@8.27.4`
|
|
200
|
+
|
|
201
|
+
- [DataGrid] Prevent unnecessary row selection checkbox rerendering (#21571) @arminmeh
|
|
202
|
+
- [DataGrid] Make `GridScrollArea` overrides resolver dynamic (#21612) @sai6855
|
|
203
|
+
- [l10n] Improve Ukrainian (uk-UA) locale (#21381) @lion1963
|
|
204
|
+
|
|
205
|
+
#### `@mui/x-data-grid-pro@8.27.4` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
206
|
+
|
|
207
|
+
Same changes as in `@mui/x-data-grid@8.27.4`, plus:
|
|
208
|
+
|
|
209
|
+
- [DataGridPro] Use `getRowId` prop to calculate the tree data row update (#21544) @arminmeh
|
|
210
|
+
|
|
211
|
+
#### `@mui/x-data-grid-premium@8.27.4` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
212
|
+
|
|
213
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.4`.
|
|
214
|
+
|
|
215
|
+
### Charts
|
|
216
|
+
|
|
217
|
+
#### `@mui/x-charts@8.27.4`
|
|
218
|
+
|
|
219
|
+
- [charts] Deprecate `ChartDataProvider` in favour of `ChartsDataProvider` (#21549) @JCQuintas
|
|
220
|
+
- [charts] Rename `ChartContainer` to `ChartsContainer` (#21186) @JCQuintas
|
|
221
|
+
- [charts] Rename `ChartZoomSlider` to `ChartsZoomSlider` (#21572) @JCQuintas
|
|
222
|
+
|
|
223
|
+
#### `@mui/x-charts-pro@8.27.4` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
224
|
+
|
|
225
|
+
Same changes as in `@mui/x-charts@8.27.4`.
|
|
226
|
+
|
|
227
|
+
#### `@mui/x-charts-premium@8.27.4` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
228
|
+
|
|
229
|
+
Same changes as in `@mui/x-charts-pro@8.27.4`.
|
|
230
|
+
|
|
231
|
+
### Core
|
|
232
|
+
|
|
233
|
+
- [code-infra] Add eslint rule to prevent `Math.random` in docs (#21505) (#21563) @JCQuintas
|
|
234
|
+
- [code-infra] V8 Dedupe (#21561) @JCQuintas
|
|
235
|
+
- [docs-infra] Apply Cookie Banner to v8.x Branch (#21448) @dav-is
|
|
236
|
+
- [code-infra] Setup checkout to do full clone for non master branches (#21624) @brijeshb42
|
|
237
|
+
|
|
238
|
+
## 8.27.3
|
|
239
|
+
|
|
240
|
+
_Feb 25, 2026_
|
|
241
|
+
|
|
242
|
+
We'd like to extend a big thank you to the 4 contributors who made this release possible. Here are some highlights ✨:
|
|
243
|
+
|
|
244
|
+
- 🐞 Bugfixes
|
|
245
|
+
- ⚡️ Improved dynamic data support and cache invalidation in lazy loading for Data Grid Pro
|
|
246
|
+
|
|
247
|
+
The following team members contributed to this release:
|
|
248
|
+
@cherniavskii, @michelengelen, @MBilalShafi, @arminmeh
|
|
249
|
+
|
|
250
|
+
### Data Grid
|
|
251
|
+
|
|
252
|
+
#### `@mui/x-data-grid@8.27.3`
|
|
253
|
+
|
|
254
|
+
- [DataGrid] Preserve key input during row edit when using `rowModesModel` (#21457) @michelengelen
|
|
255
|
+
|
|
256
|
+
#### `@mui/x-data-grid-pro@8.27.3` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
257
|
+
|
|
258
|
+
Same changes as in `@mui/x-data-grid@8.27.3`, plus:
|
|
259
|
+
|
|
260
|
+
- [DataGridPro] Improve dynamic data support and cache invalidation in lazy loading (#21465) @MBilalShafi
|
|
261
|
+
|
|
262
|
+
#### `@mui/x-data-grid-premium@8.27.3` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
263
|
+
|
|
264
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.3`.
|
|
265
|
+
|
|
266
|
+
### Core
|
|
267
|
+
|
|
268
|
+
- [code-infra] Do not append `x` to the last version for the compare API (#21422) @arminmeh
|
|
269
|
+
- [docs-infra] Fix current version detection logic (#21415) @cherniavskii
|
|
270
|
+
|
|
271
|
+
## 8.27.2
|
|
272
|
+
|
|
273
|
+
_Feb 20, 2026_
|
|
274
|
+
|
|
275
|
+
We'd like to extend a big thank you to the 3 contributors who made this release possible. Here are some highlights ✨:
|
|
276
|
+
|
|
277
|
+
- 🐞 Bugfixes
|
|
278
|
+
|
|
279
|
+
### Data Grid
|
|
280
|
+
|
|
281
|
+
#### `@mui/x-data-grid@8.27.2`
|
|
282
|
+
|
|
283
|
+
Internal changes.
|
|
284
|
+
|
|
285
|
+
#### `@mui/x-data-grid-pro@8.27.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
286
|
+
|
|
287
|
+
Same changes as in `@mui/x-data-grid@8.27.2`, plus:
|
|
288
|
+
|
|
289
|
+
- [DataGridPro] Fix number input visibility in header filters (#21345) @michelengelen
|
|
290
|
+
|
|
291
|
+
#### `@mui/x-data-grid-premium@8.27.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
292
|
+
|
|
293
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.2`.
|
|
294
|
+
|
|
295
|
+
### Date and Time Pickers
|
|
296
|
+
|
|
297
|
+
#### `@mui/x-date-pickers@8.27.2`
|
|
298
|
+
|
|
299
|
+
- [DatePicker] Add keyboard support for selecting day, month, and year (#21399) @michelengelen
|
|
300
|
+
|
|
301
|
+
#### `@mui/x-date-pickers-pro@8.27.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
302
|
+
|
|
303
|
+
Same changes as in `@mui/x-date-pickers@8.27.2`, plus:
|
|
304
|
+
|
|
305
|
+
- [DateRangePicker] Fix timezone update issue leading to `invalidRange` error (#21382) @michelengelen
|
|
306
|
+
|
|
307
|
+
### Charts
|
|
308
|
+
|
|
309
|
+
#### `@mui/x-charts@8.27.2`
|
|
310
|
+
|
|
311
|
+
Internal changes.
|
|
312
|
+
|
|
313
|
+
#### `@mui/x-charts-pro@8.27.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
314
|
+
|
|
315
|
+
Same changes as in `@mui/x-charts@8.27.2`, plus:
|
|
316
|
+
|
|
317
|
+
- [charts-pro] Handle edge case in export image (#21206) @bernardobelchior
|
|
318
|
+
|
|
319
|
+
#### `@mui/x-charts-premium@8.27.2` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
320
|
+
|
|
321
|
+
Same changes as in `@mui/x-charts-pro@8.27.2`.
|
|
322
|
+
|
|
323
|
+
### Tree View
|
|
324
|
+
|
|
325
|
+
#### `@mui/x-tree-view@8.27.2`
|
|
326
|
+
|
|
327
|
+
- [tree view] Focus item sibling on unmount instead of the 1st item (#21386) @flaviendelangle
|
|
328
|
+
|
|
329
|
+
#### `@mui/x-tree-view-pro@8.27.2` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
330
|
+
|
|
331
|
+
Same changes as in `@mui/x-tree-view@8.27.2`.
|
|
332
|
+
|
|
333
|
+
### Codemod
|
|
334
|
+
|
|
335
|
+
#### `@mui/x-codemod@8.27.2`
|
|
336
|
+
|
|
337
|
+
Internal changes.
|
|
338
|
+
|
|
339
|
+
### Core
|
|
340
|
+
|
|
341
|
+
- [code-infra] Only ignore `renovate[bot]` in changelog generation script (#21188) @bernardobelchior
|
|
342
|
+
|
|
343
|
+
## v8.27.1
|
|
344
|
+
|
|
345
|
+
<!-- generated comparing v8.27.0..v8.x -->
|
|
346
|
+
|
|
347
|
+
_Feb 13, 2026_
|
|
348
|
+
|
|
349
|
+
We'd like to extend a big thank you to the 6 contributors who made this release possible. Here are some highlights ✨:
|
|
350
|
+
|
|
351
|
+
- 📝 CSS bundler support is no longer needed for the Data Grid
|
|
352
|
+
- 🐞 Bugfixes
|
|
353
|
+
|
|
354
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
355
|
+
@sai6855
|
|
356
|
+
|
|
357
|
+
The following team members contributed to this release:
|
|
358
|
+
@arminmeh, @cherniavskii, @flaviendelangle, @mj12albert, @MBilalShafi
|
|
359
|
+
|
|
360
|
+
### Data Grid
|
|
361
|
+
|
|
362
|
+
#### `@mui/x-data-grid@8.27.1`
|
|
363
|
+
|
|
364
|
+
- [DataGrid] Hide column menu icon when there are no items (#21303) @MBilalShafi
|
|
365
|
+
- [DataGrid] Migrate styled imports and remove `index.css` (#21176) @MBilalShafi
|
|
366
|
+
- [DataGrid] Optimize `GridRootStyles` overrides resolver (#21251) @sai6855
|
|
367
|
+
|
|
368
|
+
#### `@mui/x-data-grid-pro@8.27.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
369
|
+
|
|
370
|
+
Same changes as in `@mui/x-data-grid@8.27.1`, plus:
|
|
371
|
+
|
|
372
|
+
- [DataGridPro] Fix column pinning issue with `restoreState` (#21305) @MBilalShafi
|
|
373
|
+
- [DataGridPro] Fix lazy loading params for page with one row (#21238) @MBilalShafi
|
|
374
|
+
- [DataGridPro] Properly extract parent path (#21301) @arminmeh
|
|
375
|
+
|
|
376
|
+
#### `@mui/x-data-grid-premium@8.27.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
377
|
+
|
|
378
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.1`, plus:
|
|
379
|
+
|
|
380
|
+
- [DataGridPremium] Fix aggregation display when `initialState` has both `sortModel` and `pinnedColumns` (#21152) @mj12albert
|
|
381
|
+
|
|
382
|
+
### Tree View
|
|
383
|
+
|
|
384
|
+
#### `@mui/x-tree-view@8.27.1`
|
|
385
|
+
|
|
386
|
+
- [tree view] Fix `apiRef.current.setItemExpansion()` (#21095) @flaviendelangle
|
|
387
|
+
|
|
388
|
+
#### `@mui/x-tree-view-pro@8.27.1` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
389
|
+
|
|
390
|
+
Same changes as in `@mui/x-tree-view@8.27.1`.
|
|
391
|
+
|
|
392
|
+
### Core
|
|
393
|
+
|
|
394
|
+
- [internal] Add CLI for translation using LLM (#21299) @cherniavskii
|
|
395
|
+
|
|
396
|
+
## v8.27.0
|
|
397
|
+
|
|
398
|
+
_Feb 2, 2026_
|
|
399
|
+
|
|
400
|
+
We'd like to extend a big thank you to the 8 contributors who made this release possible. Here are some highlights ✨:
|
|
401
|
+
|
|
402
|
+
- 📝 Data Grid supports new `longText` [column type](https://mui.com/x/react-data-grid/column-definition/#column-types)
|
|
403
|
+
|
|
404
|
+
The following team members contributed to this release:
|
|
405
|
+
@alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @flaviendelangle, @JCQuintas, @MBilalShafi, @siriwatknp
|
|
406
|
+
|
|
407
|
+
### Data Grid
|
|
408
|
+
|
|
409
|
+
#### `@mui/x-data-grid@8.27.0`
|
|
410
|
+
|
|
411
|
+
- [DataGrid] Fix virtualization crash by preventing out-of-bounds `focusedVirtualCell` indices (#21123) @cherniavskii
|
|
412
|
+
- [DataGrid] Fix focus steal issue with `<Dialog />` (#21106) @MBilalShafi
|
|
413
|
+
- [DataGrid] Add new `longText` column type (#21103) @siriwatknp
|
|
414
|
+
|
|
415
|
+
#### `@mui/x-data-grid-pro@8.27.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
416
|
+
|
|
417
|
+
Same changes as in `@mui/x-data-grid@8.27.0`.
|
|
418
|
+
|
|
419
|
+
#### `@mui/x-data-grid-premium@8.27.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
420
|
+
|
|
421
|
+
Same changes as in `@mui/x-data-grid-pro@8.27.0`, plus:
|
|
422
|
+
|
|
423
|
+
- [DataGridPremium] Fix focus retention when undo/redo operations are done on the same cell (#21110) @arminmeh
|
|
424
|
+
|
|
425
|
+
### Date and Time Pickers
|
|
426
|
+
|
|
427
|
+
#### `@mui/x-date-pickers@8.27.0`
|
|
428
|
+
|
|
429
|
+
Internal changes.
|
|
430
|
+
|
|
431
|
+
#### `@mui/x-date-pickers-pro@8.27.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
432
|
+
|
|
433
|
+
Same changes as in `@mui/x-date-pickers@8.27.0`.
|
|
434
|
+
|
|
435
|
+
### Charts
|
|
436
|
+
|
|
437
|
+
#### `@mui/x-charts@8.27.0`
|
|
438
|
+
|
|
439
|
+
- [charts] Deprecate `AxisId` class in favour of to `data-axis-id` attribute (#21048) @JCQuintas
|
|
440
|
+
|
|
441
|
+
#### `@mui/x-charts-pro@8.27.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
442
|
+
|
|
443
|
+
Same changes as in `@mui/x-charts@8.27.0`, plus:
|
|
444
|
+
|
|
445
|
+
- [charts-pro] Add `onItemClick` to the heatmap (#20817) (#21030) @alexfauquette
|
|
446
|
+
|
|
447
|
+
#### `@mui/x-charts-premium@8.27.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
448
|
+
|
|
449
|
+
Same changes as in `@mui/x-charts-pro@8.27.0`, plus:
|
|
450
|
+
|
|
451
|
+
- [charts-premium] Fix wrong `defaultSlots` in premium charts (#21052) @bernardobelchior
|
|
452
|
+
|
|
453
|
+
### Tree View
|
|
454
|
+
|
|
455
|
+
#### `@mui/x-tree-view@8.27.0`
|
|
456
|
+
|
|
457
|
+
Internal changes.
|
|
458
|
+
|
|
459
|
+
#### `@mui/x-tree-view-pro@8.27.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
460
|
+
|
|
461
|
+
Same changes as in `@mui/x-tree-view@8.27.0`, plus:
|
|
462
|
+
|
|
463
|
+
- [RichTreeViewPro] Do not export `useSimpleTreeViewApiRef()` and `useRichTreeViewApiRef()` from pro package (#21145) @flaviendelangle
|
|
464
|
+
|
|
465
|
+
### Codemod
|
|
466
|
+
|
|
467
|
+
#### `@mui/x-codemod@8.27.0`
|
|
468
|
+
|
|
469
|
+
Internal changes.
|
|
470
|
+
|
|
471
|
+
### Docs
|
|
472
|
+
|
|
473
|
+
- [docs] Fix DataGrid's cell edit renderers (@arminmeh) (#21041) @github-actions[bot]
|
|
474
|
+
|
|
475
|
+
### Core
|
|
476
|
+
|
|
477
|
+
- [code-infra] Add `consistent-type-imports` rule to the grid packages (#21119) @arminmeh
|
|
478
|
+
- [code-infra] Allow user to select target branch if it exists for current major (#21005) @JCQuintas
|
|
479
|
+
- [code-infra] Fix the target branch condition in the release script (#21051) @arminmeh
|
|
480
|
+
- [code-infra] Update docs deploy script to fetch from `v8.x` (#21013) @arminmeh
|
|
481
|
+
|
|
482
|
+
## 8.26.1
|
|
483
|
+
|
|
484
|
+
_Jan 23, 2026_
|
|
485
|
+
|
|
486
|
+
Release highlight ✨:
|
|
487
|
+
|
|
488
|
+
- 🐞 Hotfix for Data Grid Premium type imports
|
|
489
|
+
|
|
490
|
+
### Data Grid
|
|
491
|
+
|
|
492
|
+
#### `@mui/x-data-grid-premium@8.26.1` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
493
|
+
|
|
494
|
+
- [DataGridPremium] Fix type import (#21033) @arminmeh
|
|
495
|
+
|
|
8
496
|
## 8.26.0
|
|
9
497
|
|
|
10
498
|
_Jan 22, 2026_
|
|
@@ -90,6 +90,21 @@ function initializeState(params) {
|
|
|
90
90
|
}
|
|
91
91
|
function useDimensions(store, params, _api) {
|
|
92
92
|
const isFirstSizing = React.useRef(true);
|
|
93
|
+
|
|
94
|
+
// Vertical scrollbar oscillation detector.
|
|
95
|
+
// Counts consecutive hasScrollY flips that happen with no row-height change.
|
|
96
|
+
// After 2 flips it is certainly a layout feedback loop, so every further flip
|
|
97
|
+
// is forced to false (no scrollbar). The counter resets when row heights change.
|
|
98
|
+
// Only vertical scrollbar can oscillate because column widths are never 'auto'.
|
|
99
|
+
// https://github.com/mui/mui-x/issues/20539
|
|
100
|
+
const scrollYOscillation = React.useRef({
|
|
101
|
+
counter: 0,
|
|
102
|
+
heights: {
|
|
103
|
+
content: 0,
|
|
104
|
+
pinnedTop: 0,
|
|
105
|
+
pinnedBottom: 0
|
|
106
|
+
}
|
|
107
|
+
});
|
|
93
108
|
const {
|
|
94
109
|
layout,
|
|
95
110
|
dimensions: {
|
|
@@ -123,6 +138,7 @@ function useDimensions(store, params, _api) {
|
|
|
123
138
|
width: columnsTotalWidth,
|
|
124
139
|
height: roundToDecimalPlaces(rowsMeta.currentPageTotalHeight, 1)
|
|
125
140
|
};
|
|
141
|
+
const prevDimensions = store.state.dimensions;
|
|
126
142
|
let viewportOuterSize;
|
|
127
143
|
let viewportInnerSize;
|
|
128
144
|
let hasScrollX = false;
|
|
@@ -160,6 +176,36 @@ function useDimensions(store, params, _api) {
|
|
|
160
176
|
hasScrollY = content.height + scrollbarSize > container.height;
|
|
161
177
|
}
|
|
162
178
|
}
|
|
179
|
+
|
|
180
|
+
// Detect vertical scrollbar oscillation.
|
|
181
|
+
// Track consecutive hasScrollY flips with no row-height change.
|
|
182
|
+
// Once confirmed (≥ 2 flips), force hasScrollY off — the scrollbar is
|
|
183
|
+
// not genuinely needed, it is a layout feedback loop caused by stale
|
|
184
|
+
// rootSize or the horizontal scrollbar's height cascading.
|
|
185
|
+
{
|
|
186
|
+
const osc = scrollYOscillation.current;
|
|
187
|
+
const heightsChanged = rowsMeta.currentPageTotalHeight !== osc.heights.content || rowsMeta.pinnedTopRowsTotalHeight !== osc.heights.pinnedTop || rowsMeta.pinnedBottomRowsTotalHeight !== osc.heights.pinnedBottom;
|
|
188
|
+
if (heightsChanged) {
|
|
189
|
+
osc.counter = 0;
|
|
190
|
+
osc.heights = {
|
|
191
|
+
content: rowsMeta.currentPageTotalHeight,
|
|
192
|
+
pinnedTop: rowsMeta.pinnedTopRowsTotalHeight,
|
|
193
|
+
pinnedBottom: rowsMeta.pinnedBottomRowsTotalHeight
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
if (prevDimensions.isReady && hasScrollY !== prevDimensions.hasScrollY) {
|
|
197
|
+
if (!heightsChanged) {
|
|
198
|
+
osc.counter += 1;
|
|
199
|
+
}
|
|
200
|
+
if (osc.counter >= 2) {
|
|
201
|
+
hasScrollY = false;
|
|
202
|
+
// Recompute hasScrollX without the vertical scrollbar's width impact,
|
|
203
|
+
// otherwise the cascade (hasScrollY → narrower viewport → hasScrollX)
|
|
204
|
+
// keeps the horizontal scrollbar/filler alive and the root keeps resizing.
|
|
205
|
+
hasScrollX = hasScrollXIfNoYScrollBar;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
163
209
|
if (hasScrollY) {
|
|
164
210
|
viewportInnerSize.width -= scrollbarSize;
|
|
165
211
|
}
|
|
@@ -198,7 +244,6 @@ function useDimensions(store, params, _api) {
|
|
|
198
244
|
autoHeight: params.dimensions.autoHeight,
|
|
199
245
|
minimalContentHeight: params.dimensions.minimalContentHeight
|
|
200
246
|
};
|
|
201
|
-
const prevDimensions = store.state.dimensions;
|
|
202
247
|
if (isDeepEqual(prevDimensions, newDimensions)) {
|
|
203
248
|
return;
|
|
204
249
|
}
|
|
@@ -291,11 +291,11 @@ function useVirtualization(store, params, api) {
|
|
|
291
291
|
let virtualRowIndex = -1;
|
|
292
292
|
const focusedVirtualCell = params.focusedVirtualCell?.();
|
|
293
293
|
if (!isPinnedSection && focusedVirtualCell) {
|
|
294
|
-
if (focusedVirtualCell.rowIndex < firstRowToRender) {
|
|
294
|
+
if (focusedVirtualCell.rowIndex < firstRowToRender && focusedVirtualCell.rowIndex >= 0 && focusedVirtualCell.rowIndex < rowModels.length) {
|
|
295
295
|
rowIndexes.unshift(focusedVirtualCell.rowIndex);
|
|
296
296
|
virtualRowIndex = focusedVirtualCell.rowIndex;
|
|
297
297
|
}
|
|
298
|
-
if (focusedVirtualCell.rowIndex > lastRowToRender) {
|
|
298
|
+
if (focusedVirtualCell.rowIndex > lastRowToRender && focusedVirtualCell.rowIndex < rowModels.length) {
|
|
299
299
|
rowIndexes.push(focusedVirtualCell.rowIndex);
|
|
300
300
|
virtualRowIndex = focusedVirtualCell.rowIndex;
|
|
301
301
|
}
|
package/esm/index.js
CHANGED
package/features/dimensions.js
CHANGED
|
@@ -97,6 +97,21 @@ function initializeState(params) {
|
|
|
97
97
|
}
|
|
98
98
|
function useDimensions(store, params, _api) {
|
|
99
99
|
const isFirstSizing = React.useRef(true);
|
|
100
|
+
|
|
101
|
+
// Vertical scrollbar oscillation detector.
|
|
102
|
+
// Counts consecutive hasScrollY flips that happen with no row-height change.
|
|
103
|
+
// After 2 flips it is certainly a layout feedback loop, so every further flip
|
|
104
|
+
// is forced to false (no scrollbar). The counter resets when row heights change.
|
|
105
|
+
// Only vertical scrollbar can oscillate because column widths are never 'auto'.
|
|
106
|
+
// https://github.com/mui/mui-x/issues/20539
|
|
107
|
+
const scrollYOscillation = React.useRef({
|
|
108
|
+
counter: 0,
|
|
109
|
+
heights: {
|
|
110
|
+
content: 0,
|
|
111
|
+
pinnedTop: 0,
|
|
112
|
+
pinnedBottom: 0
|
|
113
|
+
}
|
|
114
|
+
});
|
|
100
115
|
const {
|
|
101
116
|
layout,
|
|
102
117
|
dimensions: {
|
|
@@ -130,6 +145,7 @@ function useDimensions(store, params, _api) {
|
|
|
130
145
|
width: columnsTotalWidth,
|
|
131
146
|
height: (0, _math.roundToDecimalPlaces)(rowsMeta.currentPageTotalHeight, 1)
|
|
132
147
|
};
|
|
148
|
+
const prevDimensions = store.state.dimensions;
|
|
133
149
|
let viewportOuterSize;
|
|
134
150
|
let viewportInnerSize;
|
|
135
151
|
let hasScrollX = false;
|
|
@@ -167,6 +183,36 @@ function useDimensions(store, params, _api) {
|
|
|
167
183
|
hasScrollY = content.height + scrollbarSize > container.height;
|
|
168
184
|
}
|
|
169
185
|
}
|
|
186
|
+
|
|
187
|
+
// Detect vertical scrollbar oscillation.
|
|
188
|
+
// Track consecutive hasScrollY flips with no row-height change.
|
|
189
|
+
// Once confirmed (≥ 2 flips), force hasScrollY off — the scrollbar is
|
|
190
|
+
// not genuinely needed, it is a layout feedback loop caused by stale
|
|
191
|
+
// rootSize or the horizontal scrollbar's height cascading.
|
|
192
|
+
{
|
|
193
|
+
const osc = scrollYOscillation.current;
|
|
194
|
+
const heightsChanged = rowsMeta.currentPageTotalHeight !== osc.heights.content || rowsMeta.pinnedTopRowsTotalHeight !== osc.heights.pinnedTop || rowsMeta.pinnedBottomRowsTotalHeight !== osc.heights.pinnedBottom;
|
|
195
|
+
if (heightsChanged) {
|
|
196
|
+
osc.counter = 0;
|
|
197
|
+
osc.heights = {
|
|
198
|
+
content: rowsMeta.currentPageTotalHeight,
|
|
199
|
+
pinnedTop: rowsMeta.pinnedTopRowsTotalHeight,
|
|
200
|
+
pinnedBottom: rowsMeta.pinnedBottomRowsTotalHeight
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
if (prevDimensions.isReady && hasScrollY !== prevDimensions.hasScrollY) {
|
|
204
|
+
if (!heightsChanged) {
|
|
205
|
+
osc.counter += 1;
|
|
206
|
+
}
|
|
207
|
+
if (osc.counter >= 2) {
|
|
208
|
+
hasScrollY = false;
|
|
209
|
+
// Recompute hasScrollX without the vertical scrollbar's width impact,
|
|
210
|
+
// otherwise the cascade (hasScrollY → narrower viewport → hasScrollX)
|
|
211
|
+
// keeps the horizontal scrollbar/filler alive and the root keeps resizing.
|
|
212
|
+
hasScrollX = hasScrollXIfNoYScrollBar;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
170
216
|
if (hasScrollY) {
|
|
171
217
|
viewportInnerSize.width -= scrollbarSize;
|
|
172
218
|
}
|
|
@@ -205,7 +251,6 @@ function useDimensions(store, params, _api) {
|
|
|
205
251
|
autoHeight: params.dimensions.autoHeight,
|
|
206
252
|
minimalContentHeight: params.dimensions.minimalContentHeight
|
|
207
253
|
};
|
|
208
|
-
const prevDimensions = store.state.dimensions;
|
|
209
254
|
if ((0, _isDeepEqual.isDeepEqual)(prevDimensions, newDimensions)) {
|
|
210
255
|
return;
|
|
211
256
|
}
|
|
@@ -300,11 +300,11 @@ function useVirtualization(store, params, api) {
|
|
|
300
300
|
let virtualRowIndex = -1;
|
|
301
301
|
const focusedVirtualCell = params.focusedVirtualCell?.();
|
|
302
302
|
if (!isPinnedSection && focusedVirtualCell) {
|
|
303
|
-
if (focusedVirtualCell.rowIndex < firstRowToRender) {
|
|
303
|
+
if (focusedVirtualCell.rowIndex < firstRowToRender && focusedVirtualCell.rowIndex >= 0 && focusedVirtualCell.rowIndex < rowModels.length) {
|
|
304
304
|
rowIndexes.unshift(focusedVirtualCell.rowIndex);
|
|
305
305
|
virtualRowIndex = focusedVirtualCell.rowIndex;
|
|
306
306
|
}
|
|
307
|
-
if (focusedVirtualCell.rowIndex > lastRowToRender) {
|
|
307
|
+
if (focusedVirtualCell.rowIndex > lastRowToRender && focusedVirtualCell.rowIndex < rowModels.length) {
|
|
308
308
|
rowIndexes.push(focusedVirtualCell.rowIndex);
|
|
309
309
|
virtualRowIndex = focusedVirtualCell.rowIndex;
|
|
310
310
|
}
|
package/index.js
CHANGED