@mui/x-data-grid-pro 9.0.0-beta.0 → 9.0.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 +267 -1
- package/DataGridPro/DataGridPro.js +4 -3
- package/DataGridPro/DataGridPro.mjs +4 -3
- package/components/GridDetailPanels.js +2 -4
- package/components/GridDetailPanels.mjs +2 -4
- package/components/GridPinnedRows.d.mts +1 -2
- package/components/GridPinnedRows.d.ts +1 -2
- package/components/GridPinnedRows.js +2 -3
- package/components/GridPinnedRows.mjs +2 -3
- package/components/headerFiltering/GridHeaderFilterCell.js +2 -1
- package/components/headerFiltering/GridHeaderFilterCell.mjs +3 -2
- package/hooks/features/dataSource/utils.mjs +3 -3
- package/hooks/features/rowReorder/utils.mjs +4 -4
- package/hooks/features/rows/useGridRowsOverridableMethods.d.mts +2 -2
- package/hooks/features/rows/useGridRowsOverridableMethods.d.ts +2 -2
- package/hooks/features/rows/useGridRowsOverridableMethods.js +4 -4
- package/hooks/features/rows/useGridRowsOverridableMethods.mjs +5 -5
- package/index.js +1 -1
- package/index.mjs +1 -1
- package/models/dataGridProProps.d.mts +1 -1
- package/models/dataGridProProps.d.ts +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,271 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.0.0
|
|
4
|
+
|
|
5
|
+
<!-- generated comparing v9.0.0-rc.0..master -->
|
|
6
|
+
|
|
7
|
+
_Apr 8, 2026_
|
|
8
|
+
|
|
9
|
+
🥳 We're excited to announce the stable release of MUI X v9!
|
|
10
|
+
This major release includes many new features and improvements. Here are some highlights ✨:
|
|
11
|
+
|
|
12
|
+
- Data Grid – [Charts integration](https://mui.com/x/react-data-grid/charts-integration/) [Premium]
|
|
13
|
+
- Data Grid – [AI Assistant](https://mui.com/x/react-data-grid/ai-assistant/) [Premium]
|
|
14
|
+
- Data Grid – [Undo and redo](https://mui.com/x/react-data-grid/undo-redo/) [Premium]
|
|
15
|
+
- Data Grid – [Drag fill](https://mui.com/x/react-data-grid/clipboard/#drag-to-fill) [Premium]
|
|
16
|
+
- Data Grid – [longText column type](https://mui.com/x/react-data-grid/column-definition/#column-types)
|
|
17
|
+
- Charts – [Interaction and accessibility](https://mui.com/x/react-charts/accessibility/)
|
|
18
|
+
- Charts – [Candlestick](https://mui.com/x/react-charts/candlestick/) [Premium]
|
|
19
|
+
- Charts – [Range bar charts](https://mui.com/x/react-charts/range-bar/) [Premium]
|
|
20
|
+
- Charts – [WebGL Heatmap renderer](https://mui.com/x/react-charts/heatmap/#webgl-renderer) [Premium]
|
|
21
|
+
- Tree View – [Virtualization](https://mui.com/x/react-tree-view/rich-tree-view/virtualization/) [Pro]
|
|
22
|
+
- New [Scheduler](https://mui.com/x/react-scheduler/) packages [Alpha]
|
|
23
|
+
|
|
24
|
+
We'd like to extend a big thank you to the 5 contributors who made this release possible.
|
|
25
|
+
The following team members contributed to this release:
|
|
26
|
+
@DanailH, @LukasTy, @MBilalShafi, @oliviertassinari, @siriwatknp
|
|
27
|
+
|
|
28
|
+
### Data Grid
|
|
29
|
+
|
|
30
|
+
#### `@mui/x-data-grid@9.0.0`
|
|
31
|
+
|
|
32
|
+
Internal changes.
|
|
33
|
+
|
|
34
|
+
#### `@mui/x-data-grid-pro@9.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
35
|
+
|
|
36
|
+
Same changes as in `@mui/x-data-grid@9.0.0`, plus:
|
|
37
|
+
|
|
38
|
+
- [DataGridPro] Preserve parent selection for non-selectable children (#21132) @MBilalShafi
|
|
39
|
+
|
|
40
|
+
#### `@mui/x-data-grid-premium@9.0.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
41
|
+
|
|
42
|
+
Same changes as in `@mui/x-data-grid-pro@9.0.0`, plus:
|
|
43
|
+
|
|
44
|
+
- [DataGridPremium] Drag fill (#21717) @MBilalShafi
|
|
45
|
+
|
|
46
|
+
### Date and Time Pickers
|
|
47
|
+
|
|
48
|
+
#### Breaking changes
|
|
49
|
+
|
|
50
|
+
- Removed the legacy Pickers and Field TextField props (for example: `InputProps`) in favor of the nested `slotProps`. [Read more](https://mui.com/x/migration/migration-pickers-v8/#drop-deprecated-pickerstextfield-props)
|
|
51
|
+
- The `utils` field in `PickersAdapterContextValue` has been removed in favor of the `adapter` field.
|
|
52
|
+
This should no longer affect you, as the context export has also been removed.
|
|
53
|
+
- `MuiPickersAdapterContext` export has been removed.
|
|
54
|
+
Prefer using the `usePickerAdapter` hook. [Read more](https://mui.com/x/migration/migration-pickers-v8/#localizationprovider-breaking-changes).
|
|
55
|
+
|
|
56
|
+
#### `@mui/x-date-pickers@9.0.0`
|
|
57
|
+
|
|
58
|
+
- [pickers] Refactor `PickersTextField` to use `slotProps` approach (#22002) @LukasTy
|
|
59
|
+
- [pickers] Remove deprecated LocalizationProvider legacy API (#22010) @LukasTy
|
|
60
|
+
|
|
61
|
+
#### `@mui/x-date-pickers-pro@9.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
62
|
+
|
|
63
|
+
Same changes as in `@mui/x-date-pickers@9.0.0`.
|
|
64
|
+
|
|
65
|
+
### Charts
|
|
66
|
+
|
|
67
|
+
#### `@mui/x-charts@9.0.0`
|
|
68
|
+
|
|
69
|
+
Internal changes.
|
|
70
|
+
|
|
71
|
+
#### `@mui/x-charts-pro@9.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
72
|
+
|
|
73
|
+
Same changes as in `@mui/x-charts@9.0.0`.
|
|
74
|
+
|
|
75
|
+
#### `@mui/x-charts-premium@9.0.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
76
|
+
|
|
77
|
+
Same changes as in `@mui/x-charts-pro@9.0.0`.
|
|
78
|
+
|
|
79
|
+
### Tree View
|
|
80
|
+
|
|
81
|
+
#### `@mui/x-tree-view@9.0.0`
|
|
82
|
+
|
|
83
|
+
Internal changes.
|
|
84
|
+
|
|
85
|
+
#### `@mui/x-tree-view-pro@9.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
86
|
+
|
|
87
|
+
Same changes as in `@mui/x-tree-view@9.0.0`.
|
|
88
|
+
|
|
89
|
+
### Scheduler
|
|
90
|
+
|
|
91
|
+
#### `@mui/x-scheduler@9.0.0-alpha.0`
|
|
92
|
+
|
|
93
|
+
Internal changes.
|
|
94
|
+
|
|
95
|
+
#### `@mui/x-scheduler-premium@9.0.0-alpha.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
96
|
+
|
|
97
|
+
Same changes as in `@mui/x-scheduler-pro@9.0.0-alpha.0`.
|
|
98
|
+
|
|
99
|
+
### Codemod
|
|
100
|
+
|
|
101
|
+
#### `@mui/x-codemod@9.0.0`
|
|
102
|
+
|
|
103
|
+
Internal changes.
|
|
104
|
+
|
|
105
|
+
### Docs
|
|
106
|
+
|
|
107
|
+
- [docs] Add explanation for v8 -> v9 license migration (#22004) @DanailH
|
|
108
|
+
|
|
109
|
+
### Core
|
|
110
|
+
|
|
111
|
+
- [code-infra] Optimize dependency definition (#22006) @LukasTy
|
|
112
|
+
- [internal] Prepare v9 stable (#22018) @siriwatknp
|
|
113
|
+
- [internal] Remove 'conf' from codebase (#21989) @oliviertassinari
|
|
114
|
+
|
|
115
|
+
## 9.0.0-rc.0
|
|
116
|
+
|
|
117
|
+
<!-- generated comparing v9.0.0-beta.0..master -->
|
|
118
|
+
|
|
119
|
+
_Apr 7, 2026_
|
|
120
|
+
|
|
121
|
+
We'd like to extend a big thank you to the 18 contributors who made this release possible.
|
|
122
|
+
|
|
123
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
124
|
+
@mixelburg, @sibananda485, @youjin-hong
|
|
125
|
+
|
|
126
|
+
The following team members contributed to this release:
|
|
127
|
+
@aemartos, @alexfauquette, @arminmeh, @brijeshb42, @flaviendelangle, @JCQuintas, @LukasTy, @mapache-salvaje, @MBilalShafi, @michelengelen, @noraleonte, @rita-codes, @romgrk, @siriwatknp, @ZeeshanTamboli
|
|
128
|
+
|
|
129
|
+
### Data Grid
|
|
130
|
+
|
|
131
|
+
#### `@mui/x-data-grid@9.0.0-rc.0`
|
|
132
|
+
|
|
133
|
+
- [DataGrid] Rename filter panel `Columns` label to singular `Column` (#21935) @youjin-hong
|
|
134
|
+
- [DataGrid] Export `GridColumnUnsortedIconProps` for custom column icon slots (#21658) @mixelburg
|
|
135
|
+
- [DataGrid] Remove `x-virtualizer`'s `virtualScroller` from public API (#21936) @romgrk
|
|
136
|
+
- [DataGrid][virtualizer] Scrolling without render gaps (#21616) @romgrk
|
|
137
|
+
|
|
138
|
+
#### `@mui/x-data-grid-pro@9.0.0-rc.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
139
|
+
|
|
140
|
+
Same changes as in `@mui/x-data-grid@9.0.0-rc.0`, plus:
|
|
141
|
+
|
|
142
|
+
- [DataGridPro] Improve trigger for nested row reordering (#21642) @MBilalShafi
|
|
143
|
+
- [DataGridPro] Undeprecate `onRowsScrollEnd` prop (#21912) @MBilalShafi
|
|
144
|
+
|
|
145
|
+
#### `@mui/x-data-grid-premium@9.0.0-rc.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
146
|
+
|
|
147
|
+
Same changes as in `@mui/x-data-grid-pro@9.0.0-rc.0`, plus:
|
|
148
|
+
|
|
149
|
+
- [DataGridPremium] Fix clipboard paste issue in portal (#21931) @sibananda485
|
|
150
|
+
|
|
151
|
+
### Date and Time Pickers
|
|
152
|
+
|
|
153
|
+
#### Breaking changes
|
|
154
|
+
|
|
155
|
+
- Accessible DOM structure is now the only default. [Read more](https://mui.com/x/migration/migration-pickers-v8/#accessible-dom-structure-is-now-the-default)
|
|
156
|
+
- The `PickerDay2` and `DateRangePickerDay2` components were propagated to stable while removing the previous defaults. [Read more](https://mui.com/x/migration/migration-pickers-v8/#day-slot)
|
|
157
|
+
|
|
158
|
+
#### `@mui/x-date-pickers@9.0.0-rc.0`
|
|
159
|
+
|
|
160
|
+
- [pickers] Remove `PickersDay` and `DateRangePickerDay` and promote their `2` versions as replacements (#21739) @michelengelen
|
|
161
|
+
|
|
162
|
+
#### `@mui/x-date-pickers-pro@9.0.0-rc.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
163
|
+
|
|
164
|
+
Same changes as in `@mui/x-date-pickers@9.0.0-rc.0`.
|
|
165
|
+
|
|
166
|
+
### Charts
|
|
167
|
+
|
|
168
|
+
#### `@mui/x-charts@9.0.0-rc.0.0`
|
|
169
|
+
|
|
170
|
+
- [charts] Make line visibility toggle start from the baseline (#21893) @alexfauquette
|
|
171
|
+
- [charts] Remove the container overflow (#21955) @alexfauquette
|
|
172
|
+
- [charts] Revert `theme.alpha` for non-channel token (#21965) @siriwatknp
|
|
173
|
+
|
|
174
|
+
#### `@mui/x-charts-pro@9.0.0-rc.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
175
|
+
|
|
176
|
+
Same changes as in `@mui/x-charts@9.0.0-rc.0.0`, plus:
|
|
177
|
+
|
|
178
|
+
- [charts-pro] Zoom slider touch improvements (#21832) @JCQuintas
|
|
179
|
+
- [charts-pro] Add `seriesIds` filter to zoom slider preview (#21933) @JCQuintas
|
|
180
|
+
- [charts-pro] Fix zoom slider preview with discard filter mode (#21883) @JCQuintas
|
|
181
|
+
|
|
182
|
+
#### `@mui/x-charts-premium@9.0.0-rc.0.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
183
|
+
|
|
184
|
+
Same changes as in `@mui/x-charts-pro@9.0.0-rc.0.0`, plus:
|
|
185
|
+
|
|
186
|
+
- [charts-premium] Add series `valueFormatter` to candlestick chart (#21905) @JCQuintas
|
|
187
|
+
- [charts-premium] Add zoom slider preview support for candlestick charts (#21914) @JCQuintas
|
|
188
|
+
- [charts-premium] Allow color customization in `Candlestick` chart (#21838) @JCQuintas
|
|
189
|
+
- [charts-premium] Support hide/show for OHLC (candlestick) series (#21807) @Copilot
|
|
190
|
+
- [charts-premium] Add `dataset` support to `Candlestick` chart (#21872) @JCQuintas
|
|
191
|
+
- [charts-premium] Add candlestick page to sidebar navigation (#21834) @JCQuintas
|
|
192
|
+
|
|
193
|
+
### Tree View
|
|
194
|
+
|
|
195
|
+
#### `@mui/x-tree-view@9.0.0-rc.0`
|
|
196
|
+
|
|
197
|
+
Internal changes.
|
|
198
|
+
|
|
199
|
+
#### `@mui/x-tree-view-pro@9.0.0-rc.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
200
|
+
|
|
201
|
+
Same changes as in `@mui/x-tree-view@9.0.0-rc.0`, plus:
|
|
202
|
+
|
|
203
|
+
- [RichTreeViewPro] Allow to auto-expand lazy loaded items (#21759) @flaviendelangle
|
|
204
|
+
|
|
205
|
+
### Scheduler
|
|
206
|
+
|
|
207
|
+
#### `@mui/x-scheduler@9.0.0-alpha.0`
|
|
208
|
+
|
|
209
|
+
- [scheduler] Add locale files, adapt l10n scripts, and add localization table to docs (#21870) @rita-codes
|
|
210
|
+
- [scheduler] Add planned features to the docs (#21705) @rita-codes
|
|
211
|
+
- [scheduler] Add scheduler to docs introduction (#21845) @rita-codes
|
|
212
|
+
- [scheduler] Add wide docs to scheduler (#21860) @noraleonte
|
|
213
|
+
- [scheduler] All day event bugfixes (#21884) @noraleonte
|
|
214
|
+
- [scheduler] Autofocus title field (#21947) @noraleonte
|
|
215
|
+
- [scheduler] Change default event creation trigger to single click (#21979) @rita-codes
|
|
216
|
+
- [scheduler] Change order of the views on the view selector (#21904) @rita-codes
|
|
217
|
+
- [scheduler] Disabled border color for the repeat day picker in dark mode (#21987) @rita-codes
|
|
218
|
+
- [scheduler] Drop unused dependency (#21956) @flaviendelangle
|
|
219
|
+
- [scheduler] Fix all-day event shifting to previous day in negative UTC offsets (#21994) @rita-codes
|
|
220
|
+
- [scheduler] Fix dark theme localization demos (#21992) @noraleonte
|
|
221
|
+
- [scheduler] Fix licensing confusion in docs (#21939) @rita-codes
|
|
222
|
+
- [scheduler] Fix preferences menu width shift when toggling options + Improve preferences menu accessibility (#21902) @rita-codes
|
|
223
|
+
- [scheduler] Prepare for the alpha launch (#21859) @rita-codes
|
|
224
|
+
- [scheduler] Sync Base UI internals and apply good practices (#21946) @flaviendelangle
|
|
225
|
+
- [scheduler] Update close modal aria label translation (#21940) @rita-codes
|
|
226
|
+
- [scheduler] Add Spanish (es-ES) locale (#21900) @rita-codes
|
|
227
|
+
- [scheduler] Improve French (fr-FR) locale (#21941) @rita-codes
|
|
228
|
+
- [scheduler] Improve Romanian (ro-RO) locale (#21942) @rita-codes
|
|
229
|
+
|
|
230
|
+
#### `@mui/x-scheduler-premium@9.0.0-alpha.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
231
|
+
|
|
232
|
+
Same changes as in `@mui/x-scheduler@9.0.0-alpha.0`.
|
|
233
|
+
|
|
234
|
+
### Codemod
|
|
235
|
+
|
|
236
|
+
#### `@mui/x-codemod@9.0.0-rc.0`
|
|
237
|
+
|
|
238
|
+
Internal changes.
|
|
239
|
+
|
|
240
|
+
### Docs
|
|
241
|
+
|
|
242
|
+
- [docs] Fix JSDOM → jsdom casing (#21907) @JCQuintas
|
|
243
|
+
- [docs] Remove Joy UI references and dependency (#21937) @siriwatknp
|
|
244
|
+
- [docs] Remove none generated files (#21886) @alexfauquette
|
|
245
|
+
- [docs] Remove unused interactive demo code (#21945) @LukasTy
|
|
246
|
+
- [docs] Revise the Funnel doc (#21677) @mapache-salvaje
|
|
247
|
+
- [docs] Revise the Line chart docs (#21554) @mapache-salvaje
|
|
248
|
+
- [docs] Revise the Radar doc (#21674) @mapache-salvaje
|
|
249
|
+
- [docs] Revise the Sankey doc (#21678) @mapache-salvaje
|
|
250
|
+
- [docs] Revise the Scatter chart docs (#21564) @mapache-salvaje
|
|
251
|
+
|
|
252
|
+
### Core
|
|
253
|
+
|
|
254
|
+
- [docs-infra] Update to the latest monorepo (#21971) @brijeshb42
|
|
255
|
+
- [internal] Remove checks for `materialVersion >= 6` (#21975) @LukasTy
|
|
256
|
+
|
|
257
|
+
### Miscellaneous
|
|
258
|
+
|
|
259
|
+
- [core] Bump @mui/material to v9.0.0-beta.1 (#21858) @siriwatknp
|
|
260
|
+
- [core] Update browserslistrc (#21974) @siriwatknp
|
|
261
|
+
- [deps] Bump minimum core packages to 7.3.0 to adopt theme color manipulator (#21892) @siriwatknp
|
|
262
|
+
- [telemetry] Prefer upstream remote over origin for `projectId` (#21882) @aemartos
|
|
263
|
+
- [telemetry] Send `repoHash`, `[x]packageNameHash`, and `rootPathHash` alongside `projectId` (#21896) @aemartos
|
|
264
|
+
- [test] Exclude flaky `DataGrid` argos test (#21977) @MBilalShafi
|
|
265
|
+
- [test] Fix flaky `DataGrid` test (#22000) @arminmeh
|
|
266
|
+
- [test] Remove `componentsProp` test from `describeConformance` (#21897) @ZeeshanTamboli
|
|
267
|
+
- [x-license] Change `orderId` type from `number` to `string` (#21885) @aemartos
|
|
268
|
+
|
|
3
269
|
## 9.0.0-beta.0
|
|
4
270
|
|
|
5
271
|
<!-- generated comparing v9.0.0-alpha.4..master -->
|
|
@@ -313,7 +579,7 @@ Same changes as in `@mui/x-charts-pro@9.0.0-alpha.3`, plus:
|
|
|
313
579
|
- Remove deprecated CSS state classes from `treeItemClasses`: `expanded`, `selected`, `focused`, `disabled`, `editable`, `editing` (use `[data-expanded]`, `[data-selected]`, etc.)
|
|
314
580
|
- The `<RichTreeViewPro />` component has now virtualization enabled by default.
|
|
315
581
|
- The items used inside the `<RichTreeViewPro />` now have a default height of `32px`.
|
|
316
|
-
- The
|
|
582
|
+
- The items of the `<RichTreeViewPro />` are now rendered as a flat list instead of a nested tree.
|
|
317
583
|
|
|
318
584
|
#### `@mui/x-tree-view@9.0.0-alpha.3`
|
|
319
585
|
|
|
@@ -35,8 +35,8 @@ const configuration = {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
const packageInfo = {
|
|
38
|
-
releaseDate: "
|
|
39
|
-
version: "9.0.0
|
|
38
|
+
releaseDate: "MTc3NTYwNjQwMDAwMA==",
|
|
39
|
+
version: "9.0.0",
|
|
40
40
|
name: 'x-data-grid-pro'
|
|
41
41
|
};
|
|
42
42
|
const watermark = /*#__PURE__*/(0, _jsxRuntime.jsx)(_internals.Watermark, {
|
|
@@ -382,6 +382,7 @@ DataGridProRaw.propTypes = {
|
|
|
382
382
|
* For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect.
|
|
383
383
|
*/
|
|
384
384
|
experimentalFeatures: _propTypes.default.shape({
|
|
385
|
+
virtualizerLayoutMode: _propTypes.default.oneOf(['controlled', 'uncontrolled']),
|
|
385
386
|
warnIfFocusStateIsNotSynced: _propTypes.default.bool
|
|
386
387
|
}),
|
|
387
388
|
/**
|
|
@@ -905,7 +906,7 @@ DataGridProRaw.propTypes = {
|
|
|
905
906
|
* @param {GridRowScrollEndParams} params With all properties from [[GridRowScrollEndParams]].
|
|
906
907
|
* @param {MuiEvent<{}>} event The event object.
|
|
907
908
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
908
|
-
*
|
|
909
|
+
* Prefer to use {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#infinite-loading Server-side data-Infinite loading} unless it doesn't fulfill your needs.
|
|
909
910
|
*/
|
|
910
911
|
onRowsScrollEnd: _propTypes.default.func,
|
|
911
912
|
/**
|
|
@@ -28,8 +28,8 @@ const configuration = {
|
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
const packageInfo = {
|
|
31
|
-
releaseDate: "
|
|
32
|
-
version: "9.0.0
|
|
31
|
+
releaseDate: "MTc3NTYwNjQwMDAwMA==",
|
|
32
|
+
version: "9.0.0",
|
|
33
33
|
name: 'x-data-grid-pro'
|
|
34
34
|
};
|
|
35
35
|
const watermark = /*#__PURE__*/_jsx(Watermark, {
|
|
@@ -375,6 +375,7 @@ DataGridProRaw.propTypes = {
|
|
|
375
375
|
* For each feature, if the flag is not explicitly set to `true`, the feature will be fully disabled and any property / method call will not have any effect.
|
|
376
376
|
*/
|
|
377
377
|
experimentalFeatures: PropTypes.shape({
|
|
378
|
+
virtualizerLayoutMode: PropTypes.oneOf(['controlled', 'uncontrolled']),
|
|
378
379
|
warnIfFocusStateIsNotSynced: PropTypes.bool
|
|
379
380
|
}),
|
|
380
381
|
/**
|
|
@@ -898,7 +899,7 @@ DataGridProRaw.propTypes = {
|
|
|
898
899
|
* @param {GridRowScrollEndParams} params With all properties from [[GridRowScrollEndParams]].
|
|
899
900
|
* @param {MuiEvent<{}>} event The event object.
|
|
900
901
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
901
|
-
*
|
|
902
|
+
* Prefer to use {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#infinite-loading Server-side data-Infinite loading} unless it doesn't fulfill your needs.
|
|
902
903
|
*/
|
|
903
904
|
onRowsScrollEnd: PropTypes.func,
|
|
904
905
|
/**
|
|
@@ -29,14 +29,12 @@ function GridDetailPanels(props) {
|
|
|
29
29
|
}
|
|
30
30
|
return /*#__PURE__*/React.createElement(GridDetailPanelsImpl, props);
|
|
31
31
|
}
|
|
32
|
-
function GridDetailPanelsImpl({
|
|
33
|
-
virtualScroller
|
|
34
|
-
}) {
|
|
32
|
+
function GridDetailPanelsImpl(_props) {
|
|
35
33
|
const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
|
|
36
34
|
const classes = useUtilityClasses();
|
|
37
35
|
const {
|
|
38
36
|
setPanels
|
|
39
|
-
} =
|
|
37
|
+
} = apiRef.current.virtualizer.api.getters;
|
|
40
38
|
const expandedRowIds = (0, _xDataGrid.useGridSelector)(apiRef, _detailPanel.gridDetailPanelExpandedRowIdsSelector);
|
|
41
39
|
const detailPanelsContent = (0, _xDataGrid.useGridSelector)(apiRef, _detailPanel.gridDetailPanelExpandedRowsContentCacheSelector);
|
|
42
40
|
const detailPanelsHeights = (0, _xDataGrid.useGridSelector)(apiRef, _gridDetailPanelSelector.gridDetailPanelRawHeightCacheSelector);
|
|
@@ -22,14 +22,12 @@ export function GridDetailPanels(props) {
|
|
|
22
22
|
}
|
|
23
23
|
return /*#__PURE__*/React.createElement(GridDetailPanelsImpl, props);
|
|
24
24
|
}
|
|
25
|
-
function GridDetailPanelsImpl({
|
|
26
|
-
virtualScroller
|
|
27
|
-
}) {
|
|
25
|
+
function GridDetailPanelsImpl(_props) {
|
|
28
26
|
const apiRef = useGridPrivateApiContext();
|
|
29
27
|
const classes = useUtilityClasses();
|
|
30
28
|
const {
|
|
31
29
|
setPanels
|
|
32
|
-
} =
|
|
30
|
+
} = apiRef.current.virtualizer.api.getters;
|
|
33
31
|
const expandedRowIds = useGridSelector(apiRef, gridDetailPanelExpandedRowIdsSelector);
|
|
34
32
|
const detailPanelsContent = useGridSelector(apiRef, gridDetailPanelExpandedRowsContentCacheSelector);
|
|
35
33
|
const detailPanelsHeights = useGridSelector(apiRef, gridDetailPanelRawHeightCacheSelector);
|
|
@@ -19,8 +19,7 @@ const useUtilityClasses = () => {
|
|
|
19
19
|
return (0, _composeClasses.default)(slots, _xDataGrid.getDataGridUtilityClass, {});
|
|
20
20
|
};
|
|
21
21
|
function GridPinnedRows({
|
|
22
|
-
position
|
|
23
|
-
virtualScroller
|
|
22
|
+
position
|
|
24
23
|
}) {
|
|
25
24
|
const classes = useUtilityClasses();
|
|
26
25
|
const apiRef = (0, _internals.useGridPrivateApiContext)();
|
|
@@ -28,7 +27,7 @@ function GridPinnedRows({
|
|
|
28
27
|
const rows = pinnedRowsData[position];
|
|
29
28
|
const {
|
|
30
29
|
getRows
|
|
31
|
-
} =
|
|
30
|
+
} = apiRef.current.virtualizer.api.getters;
|
|
32
31
|
const pinnedRenderContext = React.useMemo(() => ({
|
|
33
32
|
firstRowIndex: 0,
|
|
34
33
|
lastRowIndex: rows.length,
|
|
@@ -11,8 +11,7 @@ const useUtilityClasses = () => {
|
|
|
11
11
|
return composeClasses(slots, getDataGridUtilityClass, {});
|
|
12
12
|
};
|
|
13
13
|
export function GridPinnedRows({
|
|
14
|
-
position
|
|
15
|
-
virtualScroller
|
|
14
|
+
position
|
|
16
15
|
}) {
|
|
17
16
|
const classes = useUtilityClasses();
|
|
18
17
|
const apiRef = useGridPrivateApiContext();
|
|
@@ -20,7 +19,7 @@ export function GridPinnedRows({
|
|
|
20
19
|
const rows = pinnedRowsData[position];
|
|
21
20
|
const {
|
|
22
21
|
getRows
|
|
23
|
-
} =
|
|
22
|
+
} = apiRef.current.virtualizer.api.getters;
|
|
24
23
|
const pinnedRenderContext = React.useMemo(() => ({
|
|
25
24
|
firstRowIndex: 0,
|
|
26
25
|
lastRowIndex: rows.length,
|
|
@@ -246,12 +246,13 @@ const GridHeaderFilterCell = (0, _forwardRef.forwardRef)((props, ref) => {
|
|
|
246
246
|
onClick: clearFilterItem,
|
|
247
247
|
disabled: isFilterReadOnly
|
|
248
248
|
}) : null;
|
|
249
|
+
const pinnedScrollOffset = (0, _internals.usePinnedScrollOffset)(apiRef, pinnedPosition);
|
|
249
250
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
|
|
250
251
|
className: (0, _clsx.default)(classes.root, headerClassName),
|
|
251
252
|
style: (0, _internals.attachPinnedStyle)((0, _extends2.default)({
|
|
252
253
|
height,
|
|
253
254
|
width
|
|
254
|
-
}, styleProp), isRtl, pinnedPosition, pinnedOffset),
|
|
255
|
+
}, styleProp), isRtl, pinnedPosition, pinnedOffset !== undefined ? pinnedOffset + pinnedScrollOffset : undefined),
|
|
255
256
|
role: "columnheader",
|
|
256
257
|
"aria-colindex": colIndex + 1,
|
|
257
258
|
"aria-label": headerFilterComponent == null ? colDef.headerName ?? colDef.field : undefined
|
|
@@ -13,7 +13,7 @@ import composeClasses from '@mui/utils/composeClasses';
|
|
|
13
13
|
import capitalize from '@mui/utils/capitalize';
|
|
14
14
|
import { fastMemo } from '@mui/x-internals/fastMemo';
|
|
15
15
|
import { gridVisibleColumnFieldsSelector, getDataGridUtilityClass, useGridSelector, GridFilterInputValue, GridFilterInputDate, GridFilterInputBoolean, GridFilterInputSingleSelect, gridFilterModelSelector, gridFilterableColumnLookupSelector, gridClasses } from '@mui/x-data-grid';
|
|
16
|
-
import { PinnedColumnPosition, useGridPrivateApiContext, gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector, isNavigationKey, attachPinnedStyle, vars } from '@mui/x-data-grid/internals';
|
|
16
|
+
import { PinnedColumnPosition, useGridPrivateApiContext, gridHeaderFilteringEditFieldSelector, gridHeaderFilteringMenuSelector, isNavigationKey, attachPinnedStyle, usePinnedScrollOffset, vars } from '@mui/x-data-grid/internals';
|
|
17
17
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
18
18
|
import { forwardRef } from '@mui/x-internals/forwardRef';
|
|
19
19
|
import { inputBaseClasses } from '@mui/material/InputBase';
|
|
@@ -239,12 +239,13 @@ const GridHeaderFilterCell = forwardRef((props, ref) => {
|
|
|
239
239
|
onClick: clearFilterItem,
|
|
240
240
|
disabled: isFilterReadOnly
|
|
241
241
|
}) : null;
|
|
242
|
+
const pinnedScrollOffset = usePinnedScrollOffset(apiRef, pinnedPosition);
|
|
242
243
|
return /*#__PURE__*/_jsxs("div", _extends({
|
|
243
244
|
className: clsx(classes.root, headerClassName),
|
|
244
245
|
style: attachPinnedStyle(_extends({
|
|
245
246
|
height,
|
|
246
247
|
width
|
|
247
|
-
}, styleProp), isRtl, pinnedPosition, pinnedOffset),
|
|
248
|
+
}, styleProp), isRtl, pinnedPosition, pinnedOffset !== undefined ? pinnedOffset + pinnedScrollOffset : undefined),
|
|
248
249
|
role: "columnheader",
|
|
249
250
|
"aria-colindex": colIndex + 1,
|
|
250
251
|
"aria-label": headerFilterComponent == null ? colDef.headerName ?? colDef.field : undefined
|
|
@@ -15,9 +15,9 @@ export let RequestStatus = /*#__PURE__*/function (RequestStatus) {
|
|
|
15
15
|
* Uses `GridRowId` to uniquely identify a request
|
|
16
16
|
*/
|
|
17
17
|
export class NestedDataManager {
|
|
18
|
-
pendingRequests =
|
|
19
|
-
queuedRequests =
|
|
20
|
-
settledRequests =
|
|
18
|
+
pendingRequests = new Set();
|
|
19
|
+
queuedRequests = new Set();
|
|
20
|
+
settledRequests = new Set();
|
|
21
21
|
constructor(privateApiRef, maxConcurrentRequests = MAX_CONCURRENT_REQUESTS) {
|
|
22
22
|
this.api = privateApiRef.current;
|
|
23
23
|
this.maxConcurrentRequests = maxConcurrentRequests;
|
|
@@ -193,10 +193,10 @@ export function handleProcessRowUpdateError(error, onProcessRowUpdateError) {
|
|
|
193
193
|
* ```
|
|
194
194
|
*/
|
|
195
195
|
export class BatchRowUpdater {
|
|
196
|
-
rowsToUpdate =
|
|
197
|
-
originalRows =
|
|
198
|
-
successfulRowIds =
|
|
199
|
-
failedRowIds =
|
|
196
|
+
rowsToUpdate = new Map();
|
|
197
|
+
originalRows = new Map();
|
|
198
|
+
successfulRowIds = new Set();
|
|
199
|
+
failedRowIds = new Set();
|
|
200
200
|
pendingRowUpdates = [];
|
|
201
201
|
constructor(apiRef, processRowUpdate, onProcessRowUpdateError) {
|
|
202
202
|
this.apiRef = apiRef;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RefObject } from '@mui/x-internals/types';
|
|
2
2
|
import type { GridPrivateApiPro } from "../../../models/gridApiPro.mjs";
|
|
3
3
|
import type { DataGridProProcessedProps } from "../../../models/dataGridProProps.mjs";
|
|
4
|
-
export declare const useGridRowsOverridableMethods: (apiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "processRowUpdate" | "onProcessRowUpdateError" | "setTreeDataPath">) => {
|
|
5
|
-
setRowIndex: (rowId: import("@mui/x-data-grid").GridRowId, targetIndex: number) => void
|
|
4
|
+
export declare const useGridRowsOverridableMethods: (apiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "processRowUpdate" | "onProcessRowUpdateError" | "setTreeDataPath" | "treeData">) => {
|
|
5
|
+
setRowIndex: (rowId: import("@mui/x-data-grid").GridRowId, targetIndex: number) => void | Promise<void>;
|
|
6
6
|
setRowPosition: (sourceRowId: import("@mui/x-data-grid").GridRowId, targetRowId: import("@mui/x-data-grid").GridRowId, position: import("@mui/x-data-grid/internals").RowReorderDropPosition) => void | Promise<void>;
|
|
7
7
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { RefObject } from '@mui/x-internals/types';
|
|
2
2
|
import type { GridPrivateApiPro } from "../../../models/gridApiPro.js";
|
|
3
3
|
import type { DataGridProProcessedProps } from "../../../models/dataGridProProps.js";
|
|
4
|
-
export declare const useGridRowsOverridableMethods: (apiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "processRowUpdate" | "onProcessRowUpdateError" | "setTreeDataPath">) => {
|
|
5
|
-
setRowIndex: (rowId: import("@mui/x-data-grid").GridRowId, targetIndex: number) => void
|
|
4
|
+
export declare const useGridRowsOverridableMethods: (apiRef: RefObject<GridPrivateApiPro>, props: Pick<DataGridProProcessedProps, "processRowUpdate" | "onProcessRowUpdateError" | "setTreeDataPath" | "treeData">) => {
|
|
5
|
+
setRowIndex: (rowId: import("@mui/x-data-grid").GridRowId, targetIndex: number) => void | Promise<void>;
|
|
6
6
|
setRowPosition: (sourceRowId: import("@mui/x-data-grid").GridRowId, targetRowId: import("@mui/x-data-grid").GridRowId, position: import("@mui/x-data-grid/internals").RowReorderDropPosition) => void | Promise<void>;
|
|
7
7
|
};
|
|
@@ -15,13 +15,13 @@ const useGridRowsOverridableMethods = (apiRef, props) => {
|
|
|
15
15
|
const {
|
|
16
16
|
processRowUpdate,
|
|
17
17
|
onProcessRowUpdateError,
|
|
18
|
-
setTreeDataPath
|
|
18
|
+
setTreeDataPath,
|
|
19
|
+
treeData
|
|
19
20
|
} = props;
|
|
20
21
|
const {
|
|
21
22
|
setRowIndex: setRowIndexFlat,
|
|
22
23
|
setRowPosition: setRowPositionFlat
|
|
23
24
|
} = (0, _internals.useGridRowsOverridableMethodsCommunity)(apiRef);
|
|
24
|
-
const flatTree = (0, _xDataGrid.useGridSelector)(apiRef, _xDataGrid.gridRowMaximumTreeDepthSelector) === 1;
|
|
25
25
|
const setRowPosition = React.useCallback(async (sourceRowId, targetRowId, position) => {
|
|
26
26
|
const sortedFilteredRowIds = (0, _xDataGrid.gridExpandedSortedRowIdsSelector)(apiRef);
|
|
27
27
|
const sortedFilteredRowIndexLookup = (0, _xDataGrid.gridExpandedSortedRowIndexLookupSelector)(apiRef);
|
|
@@ -62,8 +62,8 @@ const useGridRowsOverridableMethods = (apiRef, props) => {
|
|
|
62
62
|
throw new Error(process.env.NODE_ENV !== "production" ? 'MUI X Data Grid: setRowIndex() is not supported for tree data. ' + 'Tree data uses hierarchical positioning which requires setRowPosition(). ' + 'Use setRowPosition() instead to reorder rows in tree data mode.' : (0, _formatErrorMessage2.default)(132));
|
|
63
63
|
}, []);
|
|
64
64
|
return {
|
|
65
|
-
setRowIndex:
|
|
66
|
-
setRowPosition:
|
|
65
|
+
setRowIndex: treeData ? setRowIndex : setRowIndexFlat,
|
|
66
|
+
setRowPosition: treeData ? setRowPosition : setRowPositionFlat
|
|
67
67
|
};
|
|
68
68
|
};
|
|
69
69
|
exports.useGridRowsOverridableMethods = useGridRowsOverridableMethods;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import _formatErrorMessage from "@mui/x-internals/formatErrorMessage";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { gridRowTreeSelector, gridExpandedSortedRowIdsSelector, gridRowNodeSelector,
|
|
3
|
+
import { gridRowTreeSelector, gridExpandedSortedRowIdsSelector, gridRowNodeSelector, gridExpandedSortedRowIndexLookupSelector } from '@mui/x-data-grid';
|
|
4
4
|
import { useGridRowsOverridableMethodsCommunity } from '@mui/x-data-grid/internals';
|
|
5
5
|
import { treeDataReorderExecutor } from "../treeData/treeDataReorderExecutor.mjs";
|
|
6
6
|
export const useGridRowsOverridableMethods = (apiRef, props) => {
|
|
7
7
|
const {
|
|
8
8
|
processRowUpdate,
|
|
9
9
|
onProcessRowUpdateError,
|
|
10
|
-
setTreeDataPath
|
|
10
|
+
setTreeDataPath,
|
|
11
|
+
treeData
|
|
11
12
|
} = props;
|
|
12
13
|
const {
|
|
13
14
|
setRowIndex: setRowIndexFlat,
|
|
14
15
|
setRowPosition: setRowPositionFlat
|
|
15
16
|
} = useGridRowsOverridableMethodsCommunity(apiRef);
|
|
16
|
-
const flatTree = useGridSelector(apiRef, gridRowMaximumTreeDepthSelector) === 1;
|
|
17
17
|
const setRowPosition = React.useCallback(async (sourceRowId, targetRowId, position) => {
|
|
18
18
|
const sortedFilteredRowIds = gridExpandedSortedRowIdsSelector(apiRef);
|
|
19
19
|
const sortedFilteredRowIndexLookup = gridExpandedSortedRowIndexLookupSelector(apiRef);
|
|
@@ -54,7 +54,7 @@ export const useGridRowsOverridableMethods = (apiRef, props) => {
|
|
|
54
54
|
throw new Error(process.env.NODE_ENV !== "production" ? 'MUI X Data Grid: setRowIndex() is not supported for tree data. ' + 'Tree data uses hierarchical positioning which requires setRowPosition(). ' + 'Use setRowPosition() instead to reorder rows in tree data mode.' : _formatErrorMessage(132));
|
|
55
55
|
}, []);
|
|
56
56
|
return {
|
|
57
|
-
setRowIndex:
|
|
58
|
-
setRowPosition:
|
|
57
|
+
setRowIndex: treeData ? setRowIndex : setRowIndexFlat,
|
|
58
|
+
setRowPosition: treeData ? setRowPosition : setRowPositionFlat
|
|
59
59
|
};
|
|
60
60
|
};
|
package/index.js
CHANGED
package/index.mjs
CHANGED
|
@@ -160,7 +160,7 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
|
|
|
160
160
|
* @param {GridRowScrollEndParams} params With all properties from [[GridRowScrollEndParams]].
|
|
161
161
|
* @param {MuiEvent<{}>} event The event object.
|
|
162
162
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
163
|
-
*
|
|
163
|
+
* Prefer to use {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#infinite-loading Server-side data-Infinite loading} unless it doesn't fulfill your needs.
|
|
164
164
|
*/
|
|
165
165
|
onRowsScrollEnd?: GridEventListener<'rowsScrollEnd'>;
|
|
166
166
|
/**
|
|
@@ -160,7 +160,7 @@ export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel
|
|
|
160
160
|
* @param {GridRowScrollEndParams} params With all properties from [[GridRowScrollEndParams]].
|
|
161
161
|
* @param {MuiEvent<{}>} event The event object.
|
|
162
162
|
* @param {GridCallbackDetails} details Additional details for this callback.
|
|
163
|
-
*
|
|
163
|
+
* Prefer to use {@link https://mui.com/x/react-data-grid/server-side-data/lazy-loading/#infinite-loading Server-side data-Infinite loading} unless it doesn't fulfill your needs.
|
|
164
164
|
*/
|
|
165
165
|
onRowsScrollEnd?: GridEventListener<'rowsScrollEnd'>;
|
|
166
166
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-data-grid-pro",
|
|
3
|
-
"version": "9.0.0
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The Pro plan edition of the MUI X Data Grid components.",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -34,18 +34,18 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@babel/runtime": "^7.28.6",
|
|
37
|
-
"@mui/utils": "
|
|
37
|
+
"@mui/utils": "9.0.0",
|
|
38
38
|
"clsx": "^2.1.1",
|
|
39
39
|
"prop-types": "^15.8.1",
|
|
40
|
-
"@mui/x-internals": "9.0.0
|
|
41
|
-
"@mui/x-data-grid": "9.0.0
|
|
42
|
-
"@mui/x-license": "9.0.0
|
|
40
|
+
"@mui/x-internals": "^9.0.0",
|
|
41
|
+
"@mui/x-data-grid": "^9.0.0",
|
|
42
|
+
"@mui/x-license": "^9.0.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@emotion/react": "^11.9.0",
|
|
46
46
|
"@emotion/styled": "^11.8.1",
|
|
47
|
-
"@mui/material": "^
|
|
48
|
-
"@mui/system": "^
|
|
47
|
+
"@mui/material": "^7.3.0 || ^9.0.0",
|
|
48
|
+
"@mui/system": "^7.3.0 || ^9.0.0",
|
|
49
49
|
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
50
50
|
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
51
51
|
},
|