@mui/x-data-grid 9.2.0 → 9.4.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.
- package/CHANGELOG.md +314 -0
- package/components/GridRow.js +11 -3
- package/components/GridRow.mjs +11 -3
- package/components/GridScrollbarFillerCell.js +1 -1
- package/components/GridScrollbarFillerCell.mjs +1 -1
- package/components/cell/GridActionsCellItem.js +1 -1
- package/components/cell/GridActionsCellItem.mjs +1 -1
- package/components/cell/GridCell.js +1 -1
- package/components/cell/GridCell.mjs +1 -1
- package/components/cell/GridSkeletonCell.d.mts +2 -1
- package/components/cell/GridSkeletonCell.d.ts +2 -1
- package/components/cell/GridSkeletonCell.js +8 -3
- package/components/cell/GridSkeletonCell.mjs +8 -3
- package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
- package/components/columnHeaders/GridBaseColumnHeaders.mjs +1 -1
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +2 -2
- package/components/columnHeaders/GridGenericColumnHeaderItem.mjs +2 -2
- package/components/containers/GridRoot.js +1 -1
- package/components/containers/GridRoot.mjs +1 -1
- package/components/virtualization/GridBottomContainer.js +1 -1
- package/components/virtualization/GridBottomContainer.mjs +1 -1
- package/components/virtualization/GridMainContainer.js +1 -1
- package/components/virtualization/GridMainContainer.mjs +1 -1
- package/components/virtualization/GridTopContainer.js +1 -1
- package/components/virtualization/GridTopContainer.mjs +1 -1
- package/components/virtualization/GridVirtualScroller.js +3 -11
- package/components/virtualization/GridVirtualScroller.mjs +3 -11
- package/components/virtualization/GridVirtualScrollerFiller.js +1 -1
- package/components/virtualization/GridVirtualScrollerFiller.mjs +1 -1
- package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.mts +17 -1
- package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +17 -1
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
- package/hooks/core/strategyProcessing/useGridStrategyProcessing.mjs +2 -1
- package/hooks/core/useGridVirtualizer.d.mts +10 -10
- package/hooks/core/useGridVirtualizer.d.ts +10 -10
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
- package/hooks/features/columnHeaders/useGridColumnHeaders.mjs +2 -2
- package/hooks/features/dataSource/models.d.mts +1 -1
- package/hooks/features/dataSource/models.d.ts +1 -1
- package/hooks/features/dataSource/useGridDataSourceBase.d.mts +2 -2
- package/hooks/features/dataSource/useGridDataSourceBase.d.ts +2 -2
- package/hooks/features/dataSource/useGridDataSourceBase.js +29 -17
- package/hooks/features/dataSource/useGridDataSourceBase.mjs +29 -17
- package/hooks/features/dataSource/utils.d.mts +1 -0
- package/hooks/features/dataSource/utils.d.ts +1 -0
- package/hooks/features/dataSource/utils.js +1 -0
- package/hooks/features/dataSource/utils.mjs +1 -0
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.mts +1 -1
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/locales/svSE.js +116 -129
- package/locales/svSE.mjs +116 -129
- package/models/gridDataSource.d.mts +6 -0
- package/models/gridDataSource.d.ts +6 -0
- package/models/gridRows.d.mts +0 -1
- package/models/gridRows.d.ts +0 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,319 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.4.0
|
|
4
|
+
|
|
5
|
+
<!-- generated comparing v9.3.0..master -->
|
|
6
|
+
|
|
7
|
+
_Jun 4, 2026_
|
|
8
|
+
|
|
9
|
+
We'd like to extend a big thank you to the 21 contributors who made this release possible. Here are some highlights ✨:
|
|
10
|
+
|
|
11
|
+
- 🎉 Scheduler is now in Beta shipping with Timeline vitualization and lazy loading
|
|
12
|
+
- 📆 Implement Event Timeline virtualization (#22339)
|
|
13
|
+
- 🫧 Introduce bubble charts (#22537)
|
|
14
|
+
- 🐞 Bugfixes
|
|
15
|
+
- 📚 Documentation improvements
|
|
16
|
+
|
|
17
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
18
|
+
@imxv, @mixelburg, @mustafajw07
|
|
19
|
+
|
|
20
|
+
The following team members contributed to this release:
|
|
21
|
+
@aemartos, @alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @flaviendelangle, @hasdfa, @Janpot, @JCQuintas, @joserodolfofreitas, @LukasTy, @MBilalShafi, @michelengelen, @mj12albert, @noraleonte, @oliviertassinari, @rita-codes, @romgrk, @sai6855
|
|
22
|
+
|
|
23
|
+
### Data Grid
|
|
24
|
+
|
|
25
|
+
#### `@mui/x-data-grid@9.4.0`
|
|
26
|
+
|
|
27
|
+
- [DataGrid] Fix `avg` aggregation when the average is zero (#22652) @mj12albert
|
|
28
|
+
- [DataGrid] Inherit icon `fontSize` from `baseIconButton` size (#22187) @imxv
|
|
29
|
+
- [DataGrid] Fix `noRowsOverlay` flicker between `dataSource` re-fetches (#22465) @LukasTy
|
|
30
|
+
|
|
31
|
+
#### `@mui/x-data-grid-pro@9.4.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
32
|
+
|
|
33
|
+
Same changes as in `@mui/x-data-grid@9.4.0`.
|
|
34
|
+
|
|
35
|
+
#### `@mui/x-data-grid-premium@9.4.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
36
|
+
|
|
37
|
+
> This release includes a version bump of the `@mui/x-internal-exceljs-fork` package to address the vulnerable dependencies.
|
|
38
|
+
> The following CVEs are fixed:
|
|
39
|
+
>
|
|
40
|
+
> - <https://github.com/advisories/GHSA-ph9p-34f9-6g65>
|
|
41
|
+
> - <https://github.com/isaacs/minimatch/security/advisories/GHSA-23c5-xmqv-rm74>
|
|
42
|
+
> - <https://github.com/advisories/GHSA-w5hq-g745-h8pq>
|
|
43
|
+
>
|
|
44
|
+
> To make this security update possible, we bumped the `node` version requirement from `>=14.0.0` to `>=14.17.0`.
|
|
45
|
+
> [Node.js 14.17.0](https://nodejs.org/en/blog/release/v14.17.0) was released in May 2021, so we consider it safe to bump the requirement without causing issues for our users.
|
|
46
|
+
|
|
47
|
+
Same changes as in `@mui/x-data-grid-pro@9.4.0`, plus:
|
|
48
|
+
|
|
49
|
+
- [DataGridPremium] Nested Lazy Loading (#21043) @MBilalShafi
|
|
50
|
+
- [DataGridPremium] Update exceljs fork (#22658) @cherniavskii
|
|
51
|
+
|
|
52
|
+
### Date and Time Pickers
|
|
53
|
+
|
|
54
|
+
#### `@mui/x-date-pickers@9.4.0`
|
|
55
|
+
|
|
56
|
+
Internal changes.
|
|
57
|
+
|
|
58
|
+
#### `@mui/x-date-pickers-pro@9.4.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
59
|
+
|
|
60
|
+
Same changes as in `@mui/x-date-pickers@9.4.0`.
|
|
61
|
+
|
|
62
|
+
### Charts
|
|
63
|
+
|
|
64
|
+
#### `@mui/x-charts@9.4.0`
|
|
65
|
+
|
|
66
|
+
- [charts] Add functionality to hide elements during chart export (#22525) @sai6855
|
|
67
|
+
- [charts] Add option to show marks only on the first/last values (#22645) @alexfauquette
|
|
68
|
+
- [charts] Add text customization section and demo for axis labels (#22597) @sai6855
|
|
69
|
+
- [charts] Allow axes to scale according to the visible series only (#22566) @alexfauquette
|
|
70
|
+
- [charts] Correctly handle different identifiers for each series (#22556) @sai6855
|
|
71
|
+
- [charts] Fix inverted Y axis zoom/pan on ordinal scales (#22654) @JCQuintas
|
|
72
|
+
- [charts] Introduce bubble charts (#22537) @alexfauquette
|
|
73
|
+
- [charts] Let scatter chart tooltip ignore hidden series (#22614) @alexfauquette
|
|
74
|
+
- [charts] Make `'sqrt'` size mapping the default (#22683) @alexfauquette
|
|
75
|
+
- [charts] Remove unused proptypes (#22618) @alexfauquette
|
|
76
|
+
- [charts] Support module augmentation for slots (#22519) @sai6855
|
|
77
|
+
- [charts] Support multiple marker size in `findClosestPoint` (#22622) @alexfauquette
|
|
78
|
+
- [charts] Upgrade bezier-easing to v3 and use it for line chart hit-detection (#22608) @sai6855
|
|
79
|
+
- [charts] Use `useLayoutEffect` with `ResizeObserver` (#22646) @JCQuintas
|
|
80
|
+
|
|
81
|
+
#### `@mui/x-charts-pro@9.4.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
82
|
+
|
|
83
|
+
Same changes as in `@mui/x-charts@9.4.0`, plus:
|
|
84
|
+
|
|
85
|
+
- [charts-pro] Auto-select range button matching current zoom (#22137) @JCQuintas
|
|
86
|
+
- [charts-pro] Support range values in `initialZoom` (#22563) @JCQuintas
|
|
87
|
+
|
|
88
|
+
#### `@mui/x-charts-premium@9.4.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
89
|
+
|
|
90
|
+
Same changes as in `@mui/x-charts-pro@9.4.0`, plus:
|
|
91
|
+
|
|
92
|
+
- [charts-premium] Support range-bar series in WebGL bar renderer (#22607) @JCQuintas
|
|
93
|
+
- [charts-premium] Fix `onAxisClick` for radial bar and lines (#22522) @alexfauquette
|
|
94
|
+
|
|
95
|
+
### Tree View
|
|
96
|
+
|
|
97
|
+
#### `@mui/x-tree-view@9.4.0`
|
|
98
|
+
|
|
99
|
+
Internal changes.
|
|
100
|
+
|
|
101
|
+
#### `@mui/x-tree-view-pro@9.4.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
102
|
+
|
|
103
|
+
Same changes as in `@mui/x-tree-view@9.4.0`.
|
|
104
|
+
|
|
105
|
+
### Scheduler
|
|
106
|
+
|
|
107
|
+
#### Breaking changes
|
|
108
|
+
|
|
109
|
+
The theme `styleOverrides` slots for the skeleton and the error container were
|
|
110
|
+
renamed and unified. The CSS utility class names (for example
|
|
111
|
+
`.MuiEventCalendar-eventSkeleton`) are **not** affected — only
|
|
112
|
+
`theme.components.*` overrides need updating.
|
|
113
|
+
|
|
114
|
+
**Event skeleton**
|
|
115
|
+
|
|
116
|
+
| Before | After |
|
|
117
|
+
| --------------------------------------- | ------------------------------ |
|
|
118
|
+
| `MuiEventCalendar` slot `EventSkeleton` | `MuiEventSkeleton` slot `Root` |
|
|
119
|
+
| `MuiEventTimeline` slot `EventSkeleton` | `MuiEventSkeleton` slot `Root` |
|
|
120
|
+
|
|
121
|
+
**Error container**
|
|
122
|
+
|
|
123
|
+
| Before | After |
|
|
124
|
+
| ------------------------------------------------------------- | --------------------------------------- |
|
|
125
|
+
| `MuiEventCalendar` / `MuiEventTimeline` slot `ErrorContainer` | `MuiEventErrorContainer` slot `Root` |
|
|
126
|
+
| `MuiEventCalendar` / `MuiEventTimeline` slot `ErrorAlert` | `MuiEventErrorContainer` slot `Alert` |
|
|
127
|
+
| `MuiEventCalendar` / `MuiEventTimeline` slot `ErrorMessage` | `MuiEventErrorContainer` slot `Message` |
|
|
128
|
+
|
|
129
|
+
If you customized these through the theme, update the component name and slot
|
|
130
|
+
names accordingly:
|
|
131
|
+
|
|
132
|
+
```diff
|
|
133
|
+
components: {
|
|
134
|
+
- MuiEventCalendar: {
|
|
135
|
+
+ MuiEventSkeleton: {
|
|
136
|
+
styleOverrides: {
|
|
137
|
+
- EventSkeleton: { /* ... */ },
|
|
138
|
+
+ Root: { /* ... */ },
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
#### `@mui/x-scheduler@9.0.0-beta.0`
|
|
146
|
+
|
|
147
|
+
- [scheduler] Add a prop to control whether the resource of an event can be cleared (#22464) @rita-codes
|
|
148
|
+
- [scheduler] Add week number labels to agenda, day and week views (#22594) @mustafajw07
|
|
149
|
+
- [scheduler] Add `weekStartsOn` preference and update date functions to support custom week start (#22426) @mustafajw07
|
|
150
|
+
- [scheduler] Export premium version of the standalone views (#22621) @flaviendelangle
|
|
151
|
+
- [scheduler] Implement timeline virtualization (#22339) @romgrk
|
|
152
|
+
- [scheduler] Split scheduler overview (#22453) @joserodolfofreitas
|
|
153
|
+
- [scheduler] Unify `EventSkeleton` and `ErrorContainer` between `EventCalendar` and `EventTimeline` (#22676) @noraleonte
|
|
154
|
+
|
|
155
|
+
#### `@mui/x-scheduler-premium@9.0.0-beta.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
156
|
+
|
|
157
|
+
Same changes as in `@mui/x-scheduler@9.0.0-beta.0`.
|
|
158
|
+
|
|
159
|
+
### Docs
|
|
160
|
+
|
|
161
|
+
- [docs] Add a performance docs page for charts (#22656) @alexfauquette
|
|
162
|
+
- [docs] Add real dataset for maps documentation (#22599) @alexfauquette
|
|
163
|
+
- [docs] Add spacing between selects on charts overview demo (#22589) @bernardobelchior
|
|
164
|
+
- [docs] Reorganize existing chat docs navigation (#22478) @hasdfa
|
|
165
|
+
- [docs] Switch to visionscarto's world atlas dataset (#22669) @cherniavskii
|
|
166
|
+
- [docs] Update TreeView `domstructure` docs and add demo (#22420) @mj12albert
|
|
167
|
+
- [docs] Fix indexation of Scheduler (#22567) @oliviertassinari
|
|
168
|
+
- [docs] Fix wide layout on event timeline lazy loading and Import title (#22604) @rita-codes
|
|
169
|
+
- [docs] Derive class name owners for shared charts classes (#22674) @JCQuintas
|
|
170
|
+
|
|
171
|
+
### Core
|
|
172
|
+
|
|
173
|
+
- [code-infra] Drop unused and now-transitive deps from docs/package.json (#22549) @LukasTy
|
|
174
|
+
- [code-infra] Refresh CI Node pins to 22.22.3 (#22598) @LukasTy
|
|
175
|
+
- [code-infra] Skip empty product sections in changelog (#22541) @rita-codes
|
|
176
|
+
- [code-infra] Stabilize DataGridScrollRestoration visual regression test (#22553) @Janpot
|
|
177
|
+
- [internal] Add license to the `x-data-grid-generator` (#22240) @arminmeh
|
|
178
|
+
- [internal] Express default value for resource_class (#22569) @oliviertassinari
|
|
179
|
+
- [internal] Fix use of ellipsis (#21852) @oliviertassinari
|
|
180
|
+
- [internal] `useLayoutEffect` with `ResizeObserver` (#22428) @romgrk
|
|
181
|
+
|
|
182
|
+
### Miscellaneous
|
|
183
|
+
|
|
184
|
+
- [chat-headless] Add built-in chat adapters (#22479) @hasdfa
|
|
185
|
+
- [chat-headless] Harden runtime model and message errors (#22480) @hasdfa
|
|
186
|
+
- [core] Prepare for TypeScript 6 bump (#22551) @LukasTy
|
|
187
|
+
- [core] Use CircleCI Gen2 resource classes (#22610) @LukasTy
|
|
188
|
+
- [infra] Fix broken tag retrieval on `master` during release (#22174) @michelengelen
|
|
189
|
+
- [infra] Group Base UI renovate updates (#22590) @LukasTy
|
|
190
|
+
- [pnpm] Add security settings to pnpm-workspace.yaml (#22611) @Janpot
|
|
191
|
+
- [release] Fix release PR scripts (#22680) @JCQuintas
|
|
192
|
+
- [test] Add a Tree View regression test for lazy loading with getChildrenCount returning -1 (#22605) @mixelburg
|
|
193
|
+
- [test] Disable LCD subpixel antialiasing in regression screenshots (#22602) @Janpot
|
|
194
|
+
- [test] Fix flaky Data Grid Pro data source tree data tests (#22659) @LukasTy
|
|
195
|
+
- [test] Remove stale form-submit TODO from e2e suite (#22564) @LukasTy
|
|
196
|
+
- [x-license] Exclude test keys from the published npm package (#22647) @aemartos
|
|
197
|
+
- [test] Fix flaky WebGL benchmark by polling for canvas content (#22535) @JCQuintas
|
|
198
|
+
|
|
199
|
+
## 9.3.0
|
|
200
|
+
|
|
201
|
+
_May 21, 2026_
|
|
202
|
+
|
|
203
|
+
We'd like to extend a big thank you to the 16 contributors who made this release possible. Here are some highlights ✨:
|
|
204
|
+
|
|
205
|
+
- 📆 Refactor Calendar Range drag editing to use Pointer Events instead of drag and touch events combination (#22279)
|
|
206
|
+
- ✨ Apply lazy loading to `EventTimelinePremium` (#22308)
|
|
207
|
+
- 🐞 Bugfixes
|
|
208
|
+
- 📚 Documentation improvements
|
|
209
|
+
- 🌎 Added Norwegian bokmål (nb-NO) locale to the Scheduler
|
|
210
|
+
- 🌎 Improved Swedish (sv-SE) locale on the Data Grid
|
|
211
|
+
|
|
212
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
213
|
+
@Anexus5919, @jvskriubakken, @oscar-b, @rin, @viktormelin
|
|
214
|
+
|
|
215
|
+
The following team members contributed to this release:
|
|
216
|
+
@aemartos, @alexfauquette, @arminmeh, @Janpot, @JCQuintas, @LukasTy, @mj12albert, @oliviertassinari, @rita-codes, @romgrk, @sai6855
|
|
217
|
+
|
|
218
|
+
### Data Grid
|
|
219
|
+
|
|
220
|
+
#### `@mui/x-data-grid@9.3.0`
|
|
221
|
+
|
|
222
|
+
- [DataGrid] Fix scrollbar disappearing after multiple resizes (#22512) @LukasTy
|
|
223
|
+
- [DataGrid] Revert "Add support for pinned columns in `GridVirtualScroller`" (#22467) @oliviertassinari
|
|
224
|
+
- [l10n] Improve Swedish (svSE) locale (#21851) @viktormelin
|
|
225
|
+
|
|
226
|
+
#### `@mui/x-data-grid-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
227
|
+
|
|
228
|
+
Same changes as in `@mui/x-data-grid@9.3.0`.
|
|
229
|
+
|
|
230
|
+
#### `@mui/x-data-grid-premium@9.3.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
231
|
+
|
|
232
|
+
Same changes as in `@mui/x-data-grid-pro@9.3.0`.
|
|
233
|
+
|
|
234
|
+
### Date and Time Pickers
|
|
235
|
+
|
|
236
|
+
#### `@mui/x-date-pickers@9.3.0`
|
|
237
|
+
|
|
238
|
+
- [pickers] Fix disabled state styling for `PickersTextField` standard and filled variants (#22189) @LukasTy
|
|
239
|
+
- [pickers] Fix previous month disabled state calculation (#22524) @mj12albert
|
|
240
|
+
- [pickers] Merge `slotProps.sectionContent` in `PickersInputBase` (#22324) @rin
|
|
241
|
+
|
|
242
|
+
#### `@mui/x-date-pickers-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
243
|
+
|
|
244
|
+
Same changes as in `@mui/x-date-pickers@9.3.0`, plus:
|
|
245
|
+
|
|
246
|
+
- [DateRangeCalendar] Use Pointer Events for drag editing (#22279) @LukasTy
|
|
247
|
+
|
|
248
|
+
### Charts
|
|
249
|
+
|
|
250
|
+
#### `@mui/x-charts@9.3.0`
|
|
251
|
+
|
|
252
|
+
- [charts] Add `data-series` to elements of radar chart (#22523) @alexfauquette
|
|
253
|
+
- [charts] Add environment check for warning messages in axis and radar hooks (#22506) @sai6855
|
|
254
|
+
- [charts] Chart `seriesConfig` deduplication for lines and bars (#22257) @sai6855
|
|
255
|
+
- [charts] Fix highlighted item crash (#22539) @oscar-b
|
|
256
|
+
- [charts] Fix the line and mark class (#22526) @alexfauquette
|
|
257
|
+
- [charts] Fix use of deprecated API in docs (#22469) @oliviertassinari
|
|
258
|
+
- [charts] Improve performance of `evaluateCurveY` function (#22407) @sai6855
|
|
259
|
+
|
|
260
|
+
#### `@mui/x-charts-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
261
|
+
|
|
262
|
+
Same changes as in `@mui/x-charts@9.3.0`.
|
|
263
|
+
|
|
264
|
+
#### `@mui/x-charts-premium@9.3.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
265
|
+
|
|
266
|
+
Same changes as in `@mui/x-charts-pro@9.3.0`, plus:
|
|
267
|
+
|
|
268
|
+
- [charts-premium] Add `closePath` option to the radial line series (#22517) @alexfauquette
|
|
269
|
+
|
|
270
|
+
### Tree View
|
|
271
|
+
|
|
272
|
+
#### `@mui/x-tree-view-pro@9.3.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
273
|
+
|
|
274
|
+
Internal changes.
|
|
275
|
+
|
|
276
|
+
### Scheduler
|
|
277
|
+
|
|
278
|
+
#### `@mui/x-scheduler@9.0.0-alpha.7`
|
|
279
|
+
|
|
280
|
+
- [I10n] Add Norwegian bokmål (nb-NO) locale (#22415) @jvskriubakken
|
|
281
|
+
|
|
282
|
+
#### `@mui/x-scheduler-premium@9.0.0-alpha.7` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
283
|
+
|
|
284
|
+
Same changes as in `@mui/x-scheduler@9.0.0-alpha.7`, plus:
|
|
285
|
+
|
|
286
|
+
- [scheduler] Apply lazy loading to `EventTimelinePremium` (#22308) @rita-codes
|
|
287
|
+
- [scheduler] Deduplicate staged ranges within the debounce window (#22476) @Anexus5919
|
|
288
|
+
- [scheduler] Pass full event objects to `dataSource.updateEvents` (#22462) @rita-codes
|
|
289
|
+
|
|
290
|
+
### Docs
|
|
291
|
+
|
|
292
|
+
- [docs] Automatically update supported versions (#21850) @arminmeh
|
|
293
|
+
- [docs] Fix `New` label on bar charts docs (#22473) @oliviertassinari
|
|
294
|
+
- [docs] Improve premium page header for charts (#22474) @oliviertassinari
|
|
295
|
+
- [docs] Sync `README` with licensing/licensing.md in scheduler (#22468) @oliviertassinari
|
|
296
|
+
|
|
297
|
+
### Core
|
|
298
|
+
|
|
299
|
+
- [code-infra] Cover docs overview composites with Argos (#22283) @LukasTy
|
|
300
|
+
- [code-infra] Enable `mui/no-presentation-role` lint rule (#22360) @Janpot
|
|
301
|
+
- [code-infra] Make generated `propTypes` union order deterministic (#22521) @JCQuintas
|
|
302
|
+
- [code-infra] Make screenshots stable across different ordering of the tests (#22449) @Janpot
|
|
303
|
+
- [code-infra] Optimize visual regression testing (#22447) @Janpot
|
|
304
|
+
- [code-infra] Replace markdownlint with remark from code-infra (#22255) @Janpot
|
|
305
|
+
|
|
306
|
+
### Miscellaneous
|
|
307
|
+
|
|
308
|
+
- [virtualizer] Improve `controlled` mode performance (#22123) @romgrk
|
|
309
|
+
- [data-grid-generator] Include `tree-data` params in `useDemoData` cache key (#22456) @Janpot
|
|
310
|
+
- [test] Fix flaky browser tests and optimize (#22431) @Janpot
|
|
311
|
+
- [test] Speed up `test_types` job (#22442) @Janpot
|
|
312
|
+
- [test] Trim ffmpeg install in `test_regressions` (#22459) @Janpot
|
|
313
|
+
- [test] Add WebGL performance benchmarks for charts (#22471) @JCQuintas
|
|
314
|
+
- [test] Expand chart performance benchmarks for charts (#22472) @JCQuintas
|
|
315
|
+
- [x-license] use workspace dep for v9 in cross-major compat tests (#22504) @aemartos
|
|
316
|
+
|
|
3
317
|
## 9.2.0
|
|
4
318
|
|
|
5
319
|
_May 13, 2026_
|
package/components/GridRow.js
CHANGED
|
@@ -16,6 +16,7 @@ var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
|
16
16
|
var _fastMemo = require("@mui/x-internals/fastMemo");
|
|
17
17
|
var _forwardRef = require("@mui/x-internals/forwardRef");
|
|
18
18
|
var _isObjectEmpty = require("@mui/x-internals/isObjectEmpty");
|
|
19
|
+
var _cssVariables = require("../constants/cssVariables");
|
|
19
20
|
var _gridEditRowModel = require("../models/gridEditRowModel");
|
|
20
21
|
var _gridClasses = require("../constants/gridClasses");
|
|
21
22
|
var _composeGridClasses = require("../utils/composeGridClasses");
|
|
@@ -236,7 +237,14 @@ const GridRow = (0, _forwardRef.forwardRef)(function GridRow(props, refProp) {
|
|
|
236
237
|
width: width,
|
|
237
238
|
height: rowHeight,
|
|
238
239
|
field: column.field,
|
|
239
|
-
align: column.align
|
|
240
|
+
align: column.align,
|
|
241
|
+
skeletonProps: {
|
|
242
|
+
style: {
|
|
243
|
+
marginLeft: indexRelativeToAllColumns === 0 && rowNode.depth > 0 ?
|
|
244
|
+
// TODO: Make the factor configurable
|
|
245
|
+
_cssVariables.vars.spacing(rowNode.depth * 2) : '0px'
|
|
246
|
+
}
|
|
247
|
+
}
|
|
240
248
|
}, column.field);
|
|
241
249
|
}
|
|
242
250
|
|
|
@@ -308,13 +316,13 @@ const GridRow = (0, _forwardRef.forwardRef)(function GridRow(props, refProp) {
|
|
|
308
316
|
}, ariaAttributes, eventHandlers, other, {
|
|
309
317
|
ref: handleRef,
|
|
310
318
|
children: [leftCells, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
311
|
-
role: "
|
|
319
|
+
role: "none",
|
|
312
320
|
className: _gridClasses.gridClasses.cellOffsetLeft,
|
|
313
321
|
style: {
|
|
314
322
|
width: offsetLeft
|
|
315
323
|
}
|
|
316
324
|
}), cells, /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
317
|
-
role: "
|
|
325
|
+
role: "none",
|
|
318
326
|
className: (0, _clsx.default)(_gridClasses.gridClasses.cell, _gridClasses.gridClasses.cellEmpty)
|
|
319
327
|
}), rightCells, /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridRowDragAndDropOverlay.GridRowDragAndDropOverlay, {
|
|
320
328
|
rowId: rowId
|
package/components/GridRow.mjs
CHANGED
|
@@ -10,6 +10,7 @@ import useForkRef from '@mui/utils/useForkRef';
|
|
|
10
10
|
import { fastMemo } from '@mui/x-internals/fastMemo';
|
|
11
11
|
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
12
12
|
import { isObjectEmpty } from '@mui/x-internals/isObjectEmpty';
|
|
13
|
+
import { vars } from "../constants/cssVariables.mjs";
|
|
13
14
|
import { GridEditModes, GridCellModes } from "../models/gridEditRowModel.mjs";
|
|
14
15
|
import { gridClasses } from "../constants/gridClasses.mjs";
|
|
15
16
|
import { composeGridClasses } from "../utils/composeGridClasses.mjs";
|
|
@@ -229,7 +230,14 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
229
230
|
width: width,
|
|
230
231
|
height: rowHeight,
|
|
231
232
|
field: column.field,
|
|
232
|
-
align: column.align
|
|
233
|
+
align: column.align,
|
|
234
|
+
skeletonProps: {
|
|
235
|
+
style: {
|
|
236
|
+
marginLeft: indexRelativeToAllColumns === 0 && rowNode.depth > 0 ?
|
|
237
|
+
// TODO: Make the factor configurable
|
|
238
|
+
vars.spacing(rowNode.depth * 2) : '0px'
|
|
239
|
+
}
|
|
240
|
+
}
|
|
233
241
|
}, column.field);
|
|
234
242
|
}
|
|
235
243
|
|
|
@@ -301,13 +309,13 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
|
|
|
301
309
|
}, ariaAttributes, eventHandlers, other, {
|
|
302
310
|
ref: handleRef,
|
|
303
311
|
children: [leftCells, /*#__PURE__*/_jsx("div", {
|
|
304
|
-
role: "
|
|
312
|
+
role: "none",
|
|
305
313
|
className: gridClasses.cellOffsetLeft,
|
|
306
314
|
style: {
|
|
307
315
|
width: offsetLeft
|
|
308
316
|
}
|
|
309
317
|
}), cells, /*#__PURE__*/_jsx("div", {
|
|
310
|
-
role: "
|
|
318
|
+
role: "none",
|
|
311
319
|
className: clsx(gridClasses.cell, gridClasses.cellEmpty)
|
|
312
320
|
}), rightCells, /*#__PURE__*/_jsx(GridRowDragAndDropOverlay, {
|
|
313
321
|
rowId: rowId
|
|
@@ -21,7 +21,7 @@ function GridScrollbarFillerCell({
|
|
|
21
21
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
22
22
|
const pinnedScrollOffset = (0, _usePinnedScrollOffset.usePinnedScrollOffset)(apiRef, pinnedRight ? _constants2.PinnedColumnPosition.RIGHT : undefined);
|
|
23
23
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
24
|
-
role: "
|
|
24
|
+
role: "none",
|
|
25
25
|
className: (0, _clsx.default)(classes.root, pinnedRight && classes.pinnedRight),
|
|
26
26
|
style: {
|
|
27
27
|
right: pinnedScrollOffset
|
|
@@ -14,7 +14,7 @@ function GridScrollbarFillerCell({
|
|
|
14
14
|
const apiRef = useGridPrivateApiContext();
|
|
15
15
|
const pinnedScrollOffset = usePinnedScrollOffset(apiRef, pinnedRight ? PinnedColumnPosition.RIGHT : undefined);
|
|
16
16
|
return /*#__PURE__*/_jsx("div", {
|
|
17
|
-
role: "
|
|
17
|
+
role: "none",
|
|
18
18
|
className: clsx(classes.root, pinnedRight && classes.pinnedRight),
|
|
19
19
|
style: {
|
|
20
20
|
right: pinnedScrollOffset
|
|
@@ -247,7 +247,7 @@ const GridCell = (0, _forwardRef.forwardRef)(function GridCell(props, ref) {
|
|
|
247
247
|
if (isCellRowSpanned) {
|
|
248
248
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
249
249
|
"data-colindex": colIndex,
|
|
250
|
-
role: "
|
|
250
|
+
role: "none",
|
|
251
251
|
style: (0, _extends2.default)({
|
|
252
252
|
width: 'var(--width)'
|
|
253
253
|
}, style)
|
|
@@ -240,7 +240,7 @@ const GridCell = forwardRef(function GridCell(props, ref) {
|
|
|
240
240
|
if (isCellRowSpanned) {
|
|
241
241
|
return /*#__PURE__*/_jsx("div", {
|
|
242
242
|
"data-colindex": colIndex,
|
|
243
|
-
role: "
|
|
243
|
+
role: "none",
|
|
244
244
|
style: _extends({
|
|
245
245
|
width: 'var(--width)'
|
|
246
246
|
}, style)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { GridColType } from "../../models/index.mjs";
|
|
2
|
+
import type { GridColType, GridSlotProps } from "../../models/index.mjs";
|
|
3
3
|
export interface GridSkeletonCellProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
4
|
type?: GridColType;
|
|
5
5
|
width?: number | string;
|
|
@@ -11,6 +11,7 @@ export interface GridSkeletonCellProps extends React.HTMLAttributes<HTMLDivEleme
|
|
|
11
11
|
* @default false
|
|
12
12
|
*/
|
|
13
13
|
empty?: boolean;
|
|
14
|
+
skeletonProps?: GridSlotProps['baseSkeleton'];
|
|
14
15
|
}
|
|
15
16
|
declare function GridSkeletonCell(props: GridSkeletonCellProps): import("react/jsx-runtime").JSX.Element;
|
|
16
17
|
declare namespace GridSkeletonCell {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { GridColType } from "../../models/index.js";
|
|
2
|
+
import type { GridColType, GridSlotProps } from "../../models/index.js";
|
|
3
3
|
export interface GridSkeletonCellProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
4
|
type?: GridColType;
|
|
5
5
|
width?: number | string;
|
|
@@ -11,6 +11,7 @@ export interface GridSkeletonCellProps extends React.HTMLAttributes<HTMLDivEleme
|
|
|
11
11
|
* @default false
|
|
12
12
|
*/
|
|
13
13
|
empty?: boolean;
|
|
14
|
+
skeletonProps?: GridSlotProps['baseSkeleton'];
|
|
14
15
|
}
|
|
15
16
|
declare function GridSkeletonCell(props: GridSkeletonCellProps): import("react/jsx-runtime").JSX.Element;
|
|
16
17
|
declare namespace GridSkeletonCell {
|
|
@@ -18,7 +18,7 @@ var _utils = require("../../utils/utils");
|
|
|
18
18
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
19
19
|
var _gridClasses = require("../../constants/gridClasses");
|
|
20
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
-
const _excluded = ["field", "type", "align", "width", "height", "empty", "style", "className"];
|
|
21
|
+
const _excluded = ["field", "type", "align", "width", "height", "empty", "style", "className", "skeletonProps"];
|
|
22
22
|
const CIRCULAR_CONTENT_SIZE = '1.3em';
|
|
23
23
|
const CONTENT_HEIGHT = '1.2em';
|
|
24
24
|
const DEFAULT_CONTENT_WIDTH_RANGE = [40, 80];
|
|
@@ -50,7 +50,8 @@ function GridSkeletonCell(props) {
|
|
|
50
50
|
height,
|
|
51
51
|
empty = false,
|
|
52
52
|
style,
|
|
53
|
-
className
|
|
53
|
+
className,
|
|
54
|
+
skeletonProps: skeletonPropsOverride
|
|
54
55
|
} = props,
|
|
55
56
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
56
57
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
@@ -62,7 +63,7 @@ function GridSkeletonCell(props) {
|
|
|
62
63
|
const classes = useUtilityClasses(ownerState);
|
|
63
64
|
|
|
64
65
|
// Memo prevents the non-circular skeleton widths changing to random widths on every render
|
|
65
|
-
const
|
|
66
|
+
const baseSkeletonProps = React.useMemo(() => {
|
|
66
67
|
const isCircularContent = type === 'boolean' || type === 'actions';
|
|
67
68
|
if (isCircularContent) {
|
|
68
69
|
return {
|
|
@@ -81,6 +82,10 @@ function GridSkeletonCell(props) {
|
|
|
81
82
|
height: CONTENT_HEIGHT
|
|
82
83
|
};
|
|
83
84
|
}, [type]);
|
|
85
|
+
|
|
86
|
+
// Merge caller overrides outside the memo so an inline `skeletonProps` object
|
|
87
|
+
// doesn't bust the memo and re-roll the random width on every render
|
|
88
|
+
const skeletonProps = skeletonPropsOverride && Object.keys(skeletonPropsOverride).length > 0 ? (0, _extends2.default)({}, baseSkeletonProps, skeletonPropsOverride) : baseSkeletonProps;
|
|
84
89
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _extends2.default)({
|
|
85
90
|
"data-field": field,
|
|
86
91
|
className: (0, _clsx.default)(classes.root, className),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["field", "type", "align", "width", "height", "empty", "style", "className"];
|
|
3
|
+
const _excluded = ["field", "type", "align", "width", "height", "empty", "style", "className", "skeletonProps"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
@@ -42,7 +42,8 @@ function GridSkeletonCell(props) {
|
|
|
42
42
|
height,
|
|
43
43
|
empty = false,
|
|
44
44
|
style,
|
|
45
|
-
className
|
|
45
|
+
className,
|
|
46
|
+
skeletonProps: skeletonPropsOverride
|
|
46
47
|
} = props,
|
|
47
48
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
48
49
|
const rootProps = useGridRootProps();
|
|
@@ -54,7 +55,7 @@ function GridSkeletonCell(props) {
|
|
|
54
55
|
const classes = useUtilityClasses(ownerState);
|
|
55
56
|
|
|
56
57
|
// Memo prevents the non-circular skeleton widths changing to random widths on every render
|
|
57
|
-
const
|
|
58
|
+
const baseSkeletonProps = React.useMemo(() => {
|
|
58
59
|
const isCircularContent = type === 'boolean' || type === 'actions';
|
|
59
60
|
if (isCircularContent) {
|
|
60
61
|
return {
|
|
@@ -73,6 +74,10 @@ function GridSkeletonCell(props) {
|
|
|
73
74
|
height: CONTENT_HEIGHT
|
|
74
75
|
};
|
|
75
76
|
}, [type]);
|
|
77
|
+
|
|
78
|
+
// Merge caller overrides outside the memo so an inline `skeletonProps` object
|
|
79
|
+
// doesn't bust the memo and re-roll the random width on every render
|
|
80
|
+
const skeletonProps = skeletonPropsOverride && Object.keys(skeletonPropsOverride).length > 0 ? _extends({}, baseSkeletonProps, skeletonPropsOverride) : baseSkeletonProps;
|
|
76
81
|
return /*#__PURE__*/_jsx("div", _extends({
|
|
77
82
|
"data-field": field,
|
|
78
83
|
className: clsx(classes.root, className),
|
|
@@ -63,11 +63,11 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = (0, _f
|
|
|
63
63
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
|
|
64
64
|
className: classes.draggableContainer,
|
|
65
65
|
draggable: isDraggable,
|
|
66
|
-
role: "
|
|
66
|
+
role: "none"
|
|
67
67
|
}, draggableContainerProps, {
|
|
68
68
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
69
69
|
className: classes.titleContainer,
|
|
70
|
-
role: "
|
|
70
|
+
role: "none",
|
|
71
71
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
72
72
|
className: classes.titleContainerContent,
|
|
73
73
|
children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderTitle.GridColumnHeaderTitle, {
|
|
@@ -56,11 +56,11 @@ const GridGenericColumnHeaderItem = forwardRef(function GridGenericColumnHeaderI
|
|
|
56
56
|
children: [/*#__PURE__*/_jsxs("div", _extends({
|
|
57
57
|
className: classes.draggableContainer,
|
|
58
58
|
draggable: isDraggable,
|
|
59
|
-
role: "
|
|
59
|
+
role: "none"
|
|
60
60
|
}, draggableContainerProps, {
|
|
61
61
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
62
62
|
className: classes.titleContainer,
|
|
63
|
-
role: "
|
|
63
|
+
role: "none",
|
|
64
64
|
children: [/*#__PURE__*/_jsx("div", {
|
|
65
65
|
className: classes.titleContainerContent,
|
|
66
66
|
children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/_jsx(GridColumnHeaderTitle, {
|
|
@@ -72,7 +72,7 @@ const GridRoot = (0, _forwardRef.forwardRef)(function GridRoot(props, ref) {
|
|
|
72
72
|
ref: handleRef,
|
|
73
73
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
74
74
|
className: _gridClasses.gridClasses.mainContent,
|
|
75
|
-
role: "
|
|
75
|
+
role: "none",
|
|
76
76
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridHeader.GridHeader, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridBody, {
|
|
77
77
|
children: children
|
|
78
78
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_base.GridFooterPlaceholder, {})]
|
|
@@ -65,7 +65,7 @@ const GridRoot = forwardRef(function GridRoot(props, ref) {
|
|
|
65
65
|
ref: handleRef,
|
|
66
66
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
67
67
|
className: gridClasses.mainContent,
|
|
68
|
-
role: "
|
|
68
|
+
role: "none",
|
|
69
69
|
children: [/*#__PURE__*/_jsx(GridHeader, {}), /*#__PURE__*/_jsx(GridBody, {
|
|
70
70
|
children: children
|
|
71
71
|
}), /*#__PURE__*/_jsx(GridFooterPlaceholder, {})]
|
|
@@ -34,6 +34,6 @@ function GridBottomContainer(props) {
|
|
|
34
34
|
const classes = useUtilityClasses();
|
|
35
35
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Element, (0, _extends2.default)({}, props, {
|
|
36
36
|
className: (0, _clsx.default)(classes.root, _gridClasses.gridClasses['container--bottom']),
|
|
37
|
-
role: "
|
|
37
|
+
role: "none"
|
|
38
38
|
}));
|
|
39
39
|
}
|
|
@@ -26,6 +26,6 @@ export function GridBottomContainer(props) {
|
|
|
26
26
|
const classes = useUtilityClasses();
|
|
27
27
|
return /*#__PURE__*/_jsx(Element, _extends({}, props, {
|
|
28
28
|
className: clsx(classes.root, gridClasses['container--bottom']),
|
|
29
|
-
role: "
|
|
29
|
+
role: "none"
|
|
30
30
|
}));
|
|
31
31
|
}
|