@mui/x-data-grid-pro 9.0.0-alpha.4 → 9.0.0-rc.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 +262 -2
- 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/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.js +28 -0
- package/hooks/features/serverSideLazyLoader/useGridDataSourceLazyLoader.mjs +29 -1
- 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,265 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 9.0.0-rc.0
|
|
4
|
+
|
|
5
|
+
<!-- generated comparing v9.0.0-beta.0..master -->
|
|
6
|
+
|
|
7
|
+
_Apr 7, 2026_
|
|
8
|
+
|
|
9
|
+
We'd like to extend a big thank you to the 18 contributors who made this release possible.
|
|
10
|
+
|
|
11
|
+
Special thanks go out to these community members for their valuable contributions:
|
|
12
|
+
@mixelburg, @sibananda485, @youjin-hong
|
|
13
|
+
|
|
14
|
+
The following team members contributed to this release:
|
|
15
|
+
@aemartos, @alexfauquette, @arminmeh, @brijeshb42, @flaviendelangle, @JCQuintas, @LukasTy, @mapache-salvaje, @MBilalShafi, @michelengelen, @noraleonte, @rita-codes, @romgrk, @siriwatknp, @ZeeshanTamboli
|
|
16
|
+
|
|
17
|
+
### Data Grid
|
|
18
|
+
|
|
19
|
+
#### `@mui/x-data-grid@9.0.0-rc.0`
|
|
20
|
+
|
|
21
|
+
- [DataGrid] Rename filter panel `Columns` label to singular `Column` (#21935) @youjin-hong
|
|
22
|
+
- [DataGrid] Export `GridColumnUnsortedIconProps` for custom column icon slots (#21658) @mixelburg
|
|
23
|
+
- [DataGrid] Remove `x-virtualizer`'s `virtualScroller` from public API (#21936) @romgrk
|
|
24
|
+
- [DataGrid][virtualizer] Scrolling without render gaps (#21616) @romgrk
|
|
25
|
+
|
|
26
|
+
#### `@mui/x-data-grid-pro@9.0.0-rc.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
27
|
+
|
|
28
|
+
Same changes as in `@mui/x-data-grid@9.0.0-rc.0`, plus:
|
|
29
|
+
|
|
30
|
+
- [DataGridPro] Improve trigger for nested row reordering (#21642) @MBilalShafi
|
|
31
|
+
- [DataGridPro] Undeprecate `onRowsScrollEnd` prop (#21912) @MBilalShafi
|
|
32
|
+
|
|
33
|
+
#### `@mui/x-data-grid-premium@9.0.0-rc.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
34
|
+
|
|
35
|
+
Same changes as in `@mui/x-data-grid-pro@9.0.0-rc.0`, plus:
|
|
36
|
+
|
|
37
|
+
- [DataGridPremium] Fix clipboard paste issue in portal (#21931) @sibananda485
|
|
38
|
+
|
|
39
|
+
### Date and Time Pickers
|
|
40
|
+
|
|
41
|
+
#### Breaking changes
|
|
42
|
+
|
|
43
|
+
- Accessible DOM structure is now the only default. [Read more](https://next.mui.com/x/migration/migration-pickers-v8/#accessible-dom-structure-is-now-the-default)
|
|
44
|
+
- The `PickerDay2` and `DateRangePickerDay2` components were propagated to stable while removing the previous defaults. [Read more](https://next.mui.com/x/migration/migration-pickers-v8/#day-slot)
|
|
45
|
+
|
|
46
|
+
#### `@mui/x-date-pickers@9.0.0-rc.0`
|
|
47
|
+
|
|
48
|
+
- [pickers] Remove `PickersDay` and `DateRangePickerDay` and promote their `2` versions as replacements (#21739) @michelengelen
|
|
49
|
+
|
|
50
|
+
#### `@mui/x-date-pickers-pro@9.0.0-rc.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
51
|
+
|
|
52
|
+
Same changes as in `@mui/x-date-pickers@9.0.0-rc.0`.
|
|
53
|
+
|
|
54
|
+
### Charts
|
|
55
|
+
|
|
56
|
+
#### `@mui/x-charts@9.0.0-rc.0.0`
|
|
57
|
+
|
|
58
|
+
- [charts] Make line visibility toggle start from the baseline (#21893) @alexfauquette
|
|
59
|
+
- [charts] Remove the container overflow (#21955) @alexfauquette
|
|
60
|
+
- [charts] Revert `theme.alpha` for non-channel token (#21965) @siriwatknp
|
|
61
|
+
|
|
62
|
+
#### `@mui/x-charts-pro@9.0.0-rc.0.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
63
|
+
|
|
64
|
+
Same changes as in `@mui/x-charts@9.0.0-rc.0.0`, plus:
|
|
65
|
+
|
|
66
|
+
- [charts-pro] Zoom slider touch improvements (#21832) @JCQuintas
|
|
67
|
+
- [charts-pro] Add `seriesIds` filter to zoom slider preview (#21933) @JCQuintas
|
|
68
|
+
- [charts-pro] Fix zoom slider preview with discard filter mode (#21883) @JCQuintas
|
|
69
|
+
|
|
70
|
+
#### `@mui/x-charts-premium@9.0.0-rc.0.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
71
|
+
|
|
72
|
+
Same changes as in `@mui/x-charts-pro@9.0.0-rc.0.0`, plus:
|
|
73
|
+
|
|
74
|
+
- [charts-premium] Add series `valueFormatter` to candlestick chart (#21905) @JCQuintas
|
|
75
|
+
- [charts-premium] Add zoom slider preview support for candlestick charts (#21914) @JCQuintas
|
|
76
|
+
- [charts-premium] Allow color customization in `Candlestick` chart (#21838) @JCQuintas
|
|
77
|
+
- [charts-premium] Support hide/show for OHLC (candlestick) series (#21807) @Copilot
|
|
78
|
+
- [charts-premium] Add `dataset` support to `Candlestick` chart (#21872) @JCQuintas
|
|
79
|
+
- [charts-premium] Add candlestick page to sidebar navigation (#21834) @JCQuintas
|
|
80
|
+
|
|
81
|
+
### Tree View
|
|
82
|
+
|
|
83
|
+
#### `@mui/x-tree-view@9.0.0-rc.0`
|
|
84
|
+
|
|
85
|
+
Internal changes.
|
|
86
|
+
|
|
87
|
+
#### `@mui/x-tree-view-pro@9.0.0-rc.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
88
|
+
|
|
89
|
+
Same changes as in `@mui/x-tree-view@9.0.0-rc.0`, plus:
|
|
90
|
+
|
|
91
|
+
- [RichTreeViewPro] Allow to auto-expand lazy loaded items (#21759) @flaviendelangle
|
|
92
|
+
|
|
93
|
+
### Scheduler
|
|
94
|
+
|
|
95
|
+
#### `@mui/x-scheduler@9.0.0-alpha.0`
|
|
96
|
+
|
|
97
|
+
- [scheduler] Add locale files, adapt l10n scripts, and add localization table to docs (#21870) @rita-codes
|
|
98
|
+
- [scheduler] Add planned features to the docs (#21705) @rita-codes
|
|
99
|
+
- [scheduler] Add scheduler to docs introduction (#21845) @rita-codes
|
|
100
|
+
- [scheduler] Add wide docs to scheduler (#21860) @noraleonte
|
|
101
|
+
- [scheduler] All day event bugfixes (#21884) @noraleonte
|
|
102
|
+
- [scheduler] Autofocus title field (#21947) @noraleonte
|
|
103
|
+
- [scheduler] Change default event creation trigger to single click (#21979) @rita-codes
|
|
104
|
+
- [scheduler] Change order of the views on the view selector (#21904) @rita-codes
|
|
105
|
+
- [scheduler] Disabled border color for the repeat day picker in dark mode (#21987) @rita-codes
|
|
106
|
+
- [scheduler] Drop unused dependency (#21956) @flaviendelangle
|
|
107
|
+
- [scheduler] Fix all-day event shifting to previous day in negative UTC offsets (#21994) @rita-codes
|
|
108
|
+
- [scheduler] Fix dark theme localization demos (#21992) @noraleonte
|
|
109
|
+
- [scheduler] Fix licensing confusion in docs (#21939) @rita-codes
|
|
110
|
+
- [scheduler] Fix preferences menu width shift when toggling options + Improve preferences menu accessibility (#21902) @rita-codes
|
|
111
|
+
- [scheduler] Prepare for the alpha launch (#21859) @rita-codes
|
|
112
|
+
- [scheduler] Sync Base UI internals and apply good practices (#21946) @flaviendelangle
|
|
113
|
+
- [scheduler] Update close modal aria label translation (#21940) @rita-codes
|
|
114
|
+
- [scheduler] Add Spanish (es-ES) locale (#21900) @rita-codes
|
|
115
|
+
- [scheduler] Improve French (fr-FR) locale (#21941) @rita-codes
|
|
116
|
+
- [scheduler] Improve Romanian (ro-RO) locale (#21942) @rita-codes
|
|
117
|
+
|
|
118
|
+
#### `@mui/x-scheduler-premium@9.0.0-alpha.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
119
|
+
|
|
120
|
+
Same changes as in `@mui/x-scheduler@9.0.0-alpha.0`.
|
|
121
|
+
|
|
122
|
+
### Codemod
|
|
123
|
+
|
|
124
|
+
#### `@mui/x-codemod@9.0.0-rc.0`
|
|
125
|
+
|
|
126
|
+
Internal changes.
|
|
127
|
+
|
|
128
|
+
### Docs
|
|
129
|
+
|
|
130
|
+
- [docs] Fix JSDOM → jsdom casing (#21907) @JCQuintas
|
|
131
|
+
- [docs] Remove Joy UI references and dependency (#21937) @siriwatknp
|
|
132
|
+
- [docs] Remove none generated files (#21886) @alexfauquette
|
|
133
|
+
- [docs] Remove unused interactive demo code (#21945) @LukasTy
|
|
134
|
+
- [docs] Revise the Funnel doc (#21677) @mapache-salvaje
|
|
135
|
+
- [docs] Revise the Line chart docs (#21554) @mapache-salvaje
|
|
136
|
+
- [docs] Revise the Radar doc (#21674) @mapache-salvaje
|
|
137
|
+
- [docs] Revise the Sankey doc (#21678) @mapache-salvaje
|
|
138
|
+
- [docs] Revise the Scatter chart docs (#21564) @mapache-salvaje
|
|
139
|
+
|
|
140
|
+
### Core
|
|
141
|
+
|
|
142
|
+
- [docs-infra] Update to the latest monorepo (#21971) @brijeshb42
|
|
143
|
+
- [internal] Remove checks for `materialVersion >= 6` (#21975) @LukasTy
|
|
144
|
+
|
|
145
|
+
### Miscellaneous
|
|
146
|
+
|
|
147
|
+
- [core] Bump @mui/material to v9.0.0-beta.1 (#21858) @siriwatknp
|
|
148
|
+
- [core] Update browserslistrc (#21974) @siriwatknp
|
|
149
|
+
- [deps] Bump minimum core packages to 7.3.0 to adopt theme color manipulator (#21892) @siriwatknp
|
|
150
|
+
- [telemetry] Prefer upstream remote over origin for `projectId` (#21882) @aemartos
|
|
151
|
+
- [telemetry] Send `repoHash`, `[x]packageNameHash`, and `rootPathHash` alongside `projectId` (#21896) @aemartos
|
|
152
|
+
- [test] Exclude flaky `DataGrid` argos test (#21977) @MBilalShafi
|
|
153
|
+
- [test] Fix flaky `DataGrid` test (#22000) @arminmeh
|
|
154
|
+
- [test] Remove `componentsProp` test from `describeConformance` (#21897) @ZeeshanTamboli
|
|
155
|
+
- [x-license] Change `orderId` type from `number` to `string` (#21885) @aemartos
|
|
156
|
+
|
|
157
|
+
## 9.0.0-beta.0
|
|
158
|
+
|
|
159
|
+
<!-- generated comparing v9.0.0-alpha.4..master -->
|
|
160
|
+
|
|
161
|
+
_Mar 27, 2026_
|
|
162
|
+
|
|
163
|
+
We'd like to extend a big thank you to the 10 contributors who made this release possible. Here are some highlights ✨:
|
|
164
|
+
|
|
165
|
+
- 🔊 New Charts voiceover component for improved screen reader support
|
|
166
|
+
- ⌨️ Charts keyboard navigation improvements: axis tooltip now shows when navigating with the keyboard
|
|
167
|
+
- 📊 Charts axes now can be set to automatically resize to fit their content
|
|
168
|
+
- 📝 New `rowCheckbox` slot in Data Grid for easier checkbox column customization
|
|
169
|
+
- ⚡️ `fetchRows()` API in Data Grid Pro now defaults `start` and `end` based on scroll position with lazy loading
|
|
170
|
+
- 🐞 Bugfixes and internal improvements
|
|
171
|
+
|
|
172
|
+
The following team members contributed to this release:
|
|
173
|
+
@aemartos, @alexfauquette, @arminmeh, @cherniavskii, @Janpot, @JCQuintas, @mapache-salvaje, @michelengelen, @noraleonte, @rita-codes
|
|
174
|
+
|
|
175
|
+
### Data Grid
|
|
176
|
+
|
|
177
|
+
#### `@mui/x-data-grid@9.0.0-beta.0`
|
|
178
|
+
|
|
179
|
+
- [DataGrid] Add `rowCheckbox` slot for easier customization (#21797) @michelengelen
|
|
180
|
+
- [DataGrid] Prevent repeated `hasScrollbar` state updates (#21820) @arminmeh
|
|
181
|
+
|
|
182
|
+
#### `@mui/x-data-grid-pro@9.0.0-beta.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
183
|
+
|
|
184
|
+
Same changes as in `@mui/x-data-grid@9.0.0-beta.0`, plus:
|
|
185
|
+
|
|
186
|
+
- [DataGridPro] `fetchRows()` API's default `start` and `end` params based on scroll position with lazy loading (#21742) @arminmeh
|
|
187
|
+
|
|
188
|
+
#### `@mui/x-data-grid-premium@9.0.0-beta.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
189
|
+
|
|
190
|
+
Same changes as in `@mui/x-data-grid-pro@9.0.0-beta.0`.
|
|
191
|
+
|
|
192
|
+
### Date and Time Pickers
|
|
193
|
+
|
|
194
|
+
#### `@mui/x-date-pickers@9.0.0-beta.0`
|
|
195
|
+
|
|
196
|
+
Internal changes.
|
|
197
|
+
|
|
198
|
+
#### `@mui/x-date-pickers-pro@9.0.0-beta.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
199
|
+
|
|
200
|
+
Same changes as in `@mui/x-date-pickers@9.0.0-beta.0`.
|
|
201
|
+
|
|
202
|
+
### Charts
|
|
203
|
+
|
|
204
|
+
#### `@mui/x-charts@9.0.0-beta.0`
|
|
205
|
+
|
|
206
|
+
- [charts] Add `className` prop to Pro chart plot components (#21793) @JCQuintas
|
|
207
|
+
- [charts] Add experimental position-based pointer interaction for line series (#21809) @JCQuintas
|
|
208
|
+
- [charts] Add l10n to the bar accessibility (#21815) @alexfauquette
|
|
209
|
+
- [charts] Add localization for the basic charts (#21822) @alexfauquette
|
|
210
|
+
- [charts] Add voiceover component (#21344) @alexfauquette
|
|
211
|
+
- [charts] Allow axes to automatically resize to content (#21087) @JCQuintas
|
|
212
|
+
- [charts] Document multiple use-cases for references (#21768) @alexfauquette
|
|
213
|
+
- [charts] Remove compatibility layer for React vs native events (#21780) @JCQuintas
|
|
214
|
+
- [charts] Remove deprecated `barLabel` props (#21783) @alexfauquette
|
|
215
|
+
- [charts] Show axis tooltip when navigating with keyboard (#21689) @Copilot
|
|
216
|
+
|
|
217
|
+
#### `@mui/x-charts-pro@9.0.0-beta.0` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
218
|
+
|
|
219
|
+
Same changes as in `@mui/x-charts@9.0.0-beta.0`.
|
|
220
|
+
|
|
221
|
+
#### `@mui/x-charts-premium@9.0.0-beta.0` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
222
|
+
|
|
223
|
+
Same changes as in `@mui/x-charts-pro@9.0.0-beta.0`.
|
|
224
|
+
|
|
225
|
+
### Tree View
|
|
226
|
+
|
|
227
|
+
#### `@mui/x-tree-view@9.0.0-alpha.4`
|
|
228
|
+
|
|
229
|
+
Internal changes.
|
|
230
|
+
|
|
231
|
+
#### `@mui/x-tree-view-pro@9.0.0-alpha.4` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
232
|
+
|
|
233
|
+
Same changes as in `@mui/x-tree-view@9.0.0-alpha.4`.
|
|
234
|
+
|
|
235
|
+
### Codemod
|
|
236
|
+
|
|
237
|
+
#### `@mui/x-codemod@9.0.0-alpha.4`
|
|
238
|
+
|
|
239
|
+
Internal changes.
|
|
240
|
+
|
|
241
|
+
### Docs
|
|
242
|
+
|
|
243
|
+
- [docs] Document how to customize voiceover announcement (#21833) @alexfauquette
|
|
244
|
+
- [docs] Remove Discord mention from docs (#21855) @mapache-salvaje
|
|
245
|
+
- [docs] Remove stabilized experimental feature from demo (#21869) @JCQuintas
|
|
246
|
+
- [docs] Update telemetry guide to reflect pseudonymous data collection and license compliance (#21812) @aemartos
|
|
247
|
+
- [docs] Revise the Sparkline doc (#21614) @mapache-salvaje
|
|
248
|
+
- [docs] Revise the Gauge doc (#21673) @mapache-salvaje
|
|
249
|
+
- [docs] Revise the Heatmap doc (#21676) @mapache-salvaje
|
|
250
|
+
|
|
251
|
+
### Core
|
|
252
|
+
|
|
253
|
+
- [code-infra] Remove unused deps and unify es-toolkit via catalog (#21840) @Janpot
|
|
254
|
+
- [code-infra] Update @mui/internal-bundle-size-checker to canary.68 (#21836) @Janpot
|
|
255
|
+
- [code-infra] Update next (#21837) @Janpot
|
|
256
|
+
- [internal] Remove headless data grid packages (#21843) @cherniavskii
|
|
257
|
+
|
|
258
|
+
### Miscellaneous
|
|
259
|
+
|
|
260
|
+
- Add @romgrk to CODEOWNERS for `x-virtualizer` and `x-internals` (#21819) @Copilot
|
|
261
|
+
- [x-license] add 2022 plan version (#21814) @aemartos
|
|
262
|
+
|
|
3
263
|
## 9.0.0-alpha.4
|
|
4
264
|
|
|
5
265
|
_Mar 19, 2026_
|
|
@@ -59,7 +319,7 @@ Same changes as in `@mui/x-date-pickers@9.0.0-alpha.4`.
|
|
|
59
319
|
- [charts] Remove deprecated `useMouseTracker()` (#21787) @alexfauquette
|
|
60
320
|
- [charts] Remove deprecated classes (#21775) @alexfauquette
|
|
61
321
|
- [charts] Remove deprecated props from PieArcLabel animation (#21789) @alexfauquette
|
|
62
|
-
- [charts] Remove get
|
|
322
|
+
- [charts] Remove get\*UtilityClass from public exports (#21769) @JCQuintas
|
|
63
323
|
- [charts] Remove the deprecated `disableHover` property (#21785) @alexfauquette
|
|
64
324
|
- [charts] Remove the deprecated `message` prop (#21784) @alexfauquette
|
|
65
325
|
- [charts] Remove deprecated props about voronoi (#21796) @alexfauquette
|
|
@@ -207,7 +467,7 @@ Same changes as in `@mui/x-charts-pro@9.0.0-alpha.3`, plus:
|
|
|
207
467
|
- Remove deprecated CSS state classes from `treeItemClasses`: `expanded`, `selected`, `focused`, `disabled`, `editable`, `editing` (use `[data-expanded]`, `[data-selected]`, etc.)
|
|
208
468
|
- The `<RichTreeViewPro />` component has now virtualization enabled by default.
|
|
209
469
|
- The items used inside the `<RichTreeViewPro />` now have a default height of `32px`.
|
|
210
|
-
- The
|
|
470
|
+
- The items of the `<RichTreeViewPro />` are now rendered as a flat list instead of a nested tree.
|
|
211
471
|
|
|
212
472
|
#### `@mui/x-tree-view@9.0.0-alpha.3`
|
|
213
473
|
|
|
@@ -35,8 +35,8 @@ const configuration = {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
const packageInfo = {
|
|
38
|
-
releaseDate: "
|
|
39
|
-
version: "9.0.0-
|
|
38
|
+
releaseDate: "MTc3NTUyMDAwMDAwMA==",
|
|
39
|
+
version: "9.0.0-rc.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: "MTc3NTUyMDAwMDAwMA==",
|
|
32
|
+
version: "9.0.0-rc.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
|
};
|
|
@@ -463,6 +463,34 @@ const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
463
463
|
const handleStrategyActivityChange = React.useCallback(() => {
|
|
464
464
|
setLazyLoadingRowsUpdateStrategyActive(privateApiRef.current.getActiveStrategy(_internals.GridStrategyGroup.DataSource) === _internals.DataSourceRowsUpdateStrategy.LazyLoading);
|
|
465
465
|
}, [privateApiRef]);
|
|
466
|
+
|
|
467
|
+
// Provide render context based start/end for lazy loading so that
|
|
468
|
+
// `apiRef.current.dataSource.fetchRows()` without params
|
|
469
|
+
// re-fetches the currently visible range instead of always using the
|
|
470
|
+
// pagination-model state.
|
|
471
|
+
const addGetRowsParams = React.useCallback(params => {
|
|
472
|
+
if (!lazyLoadingRowsUpdateStrategyActive) {
|
|
473
|
+
return params;
|
|
474
|
+
}
|
|
475
|
+
const renderContext = (0, _internals.gridRenderContextSelector)(privateApiRef);
|
|
476
|
+
// On initial load the grid hasn't rendered yet — keep the defaults.
|
|
477
|
+
if (renderContext.lastRowIndex === 0) {
|
|
478
|
+
return params;
|
|
479
|
+
}
|
|
480
|
+
const paginationModel = (0, _xDataGrid.gridPaginationModelSelector)(privateApiRef);
|
|
481
|
+
const adjustedParams = (0, _utils.adjustRowParams)({
|
|
482
|
+
start: renderContext.firstRowIndex,
|
|
483
|
+
end: renderContext.lastRowIndex - 1
|
|
484
|
+
}, {
|
|
485
|
+
pageSize: paginationModel.pageSize,
|
|
486
|
+
rowCount: privateApiRef.current.state.pagination.rowCount
|
|
487
|
+
});
|
|
488
|
+
return (0, _extends2.default)({}, params, {
|
|
489
|
+
start: adjustedParams.start,
|
|
490
|
+
end: adjustedParams.end
|
|
491
|
+
});
|
|
492
|
+
}, [privateApiRef, lazyLoadingRowsUpdateStrategyActive]);
|
|
493
|
+
(0, _internals.useGridRegisterPipeProcessor)(privateApiRef, 'getRowsParams', addGetRowsParams);
|
|
466
494
|
(0, _internals.useGridRegisterStrategyProcessor)(privateApiRef, _internals.DataSourceRowsUpdateStrategy.LazyLoading, 'dataSourceRowsUpdate', handleDataUpdate);
|
|
467
495
|
(0, _xDataGrid.useGridEvent)(privateApiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
|
|
468
496
|
(0, _xDataGrid.useGridEvent)(privateApiRef, 'rowCountChange', (0, _internals.runIf)(lazyLoadingRowsUpdateStrategyActive, handleRowCountChange));
|
|
@@ -7,7 +7,7 @@ import { isDeepEqual } from '@mui/x-internals/isDeepEqual';
|
|
|
7
7
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
8
8
|
import debounce from '@mui/utils/debounce';
|
|
9
9
|
import { useGridEvent, gridSortModelSelector, gridFilterModelSelector, GRID_ROOT_GROUP_ID, gridPaginationModelSelector, gridFilteredSortedRowIdsSelector, gridRowIdSelector } from '@mui/x-data-grid';
|
|
10
|
-
import { getVisibleRows, gridRenderContextSelector, GridStrategyGroup, useGridRegisterStrategyProcessor, runIf, DataSourceRowsUpdateStrategy } from '@mui/x-data-grid/internals';
|
|
10
|
+
import { getVisibleRows, gridRenderContextSelector, GridStrategyGroup, useGridRegisterStrategyProcessor, useGridRegisterPipeProcessor, runIf, DataSourceRowsUpdateStrategy } from '@mui/x-data-grid/internals';
|
|
11
11
|
import { findSkeletonRowsSection, adjustRowParams } from "../lazyLoader/utils.mjs";
|
|
12
12
|
import { GRID_SKELETON_ROW_ROOT_ID } from "../lazyLoader/useGridLazyLoaderPreProcessors.mjs";
|
|
13
13
|
var LoadingTrigger = /*#__PURE__*/function (LoadingTrigger) {
|
|
@@ -456,6 +456,34 @@ export const useGridDataSourceLazyLoader = (privateApiRef, props) => {
|
|
|
456
456
|
const handleStrategyActivityChange = React.useCallback(() => {
|
|
457
457
|
setLazyLoadingRowsUpdateStrategyActive(privateApiRef.current.getActiveStrategy(GridStrategyGroup.DataSource) === DataSourceRowsUpdateStrategy.LazyLoading);
|
|
458
458
|
}, [privateApiRef]);
|
|
459
|
+
|
|
460
|
+
// Provide render context based start/end for lazy loading so that
|
|
461
|
+
// `apiRef.current.dataSource.fetchRows()` without params
|
|
462
|
+
// re-fetches the currently visible range instead of always using the
|
|
463
|
+
// pagination-model state.
|
|
464
|
+
const addGetRowsParams = React.useCallback(params => {
|
|
465
|
+
if (!lazyLoadingRowsUpdateStrategyActive) {
|
|
466
|
+
return params;
|
|
467
|
+
}
|
|
468
|
+
const renderContext = gridRenderContextSelector(privateApiRef);
|
|
469
|
+
// On initial load the grid hasn't rendered yet — keep the defaults.
|
|
470
|
+
if (renderContext.lastRowIndex === 0) {
|
|
471
|
+
return params;
|
|
472
|
+
}
|
|
473
|
+
const paginationModel = gridPaginationModelSelector(privateApiRef);
|
|
474
|
+
const adjustedParams = adjustRowParams({
|
|
475
|
+
start: renderContext.firstRowIndex,
|
|
476
|
+
end: renderContext.lastRowIndex - 1
|
|
477
|
+
}, {
|
|
478
|
+
pageSize: paginationModel.pageSize,
|
|
479
|
+
rowCount: privateApiRef.current.state.pagination.rowCount
|
|
480
|
+
});
|
|
481
|
+
return _extends({}, params, {
|
|
482
|
+
start: adjustedParams.start,
|
|
483
|
+
end: adjustedParams.end
|
|
484
|
+
});
|
|
485
|
+
}, [privateApiRef, lazyLoadingRowsUpdateStrategyActive]);
|
|
486
|
+
useGridRegisterPipeProcessor(privateApiRef, 'getRowsParams', addGetRowsParams);
|
|
459
487
|
useGridRegisterStrategyProcessor(privateApiRef, DataSourceRowsUpdateStrategy.LazyLoading, 'dataSourceRowsUpdate', handleDataUpdate);
|
|
460
488
|
useGridEvent(privateApiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
|
|
461
489
|
useGridEvent(privateApiRef, 'rowCountChange', runIf(lazyLoadingRowsUpdateStrategyActive, handleRowCountChange));
|
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-rc.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-beta.1",
|
|
38
38
|
"clsx": "^2.1.1",
|
|
39
39
|
"prop-types": "^15.8.1",
|
|
40
|
-
"@mui/x-
|
|
41
|
-
"@mui/x-
|
|
42
|
-
"@mui/x-license": "9.0.0-
|
|
40
|
+
"@mui/x-data-grid": "9.0.0-rc.0",
|
|
41
|
+
"@mui/x-internals": "9.0.0-rc.0",
|
|
42
|
+
"@mui/x-license": "9.0.0-rc.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-beta.0 || ^9.0.0",
|
|
48
|
+
"@mui/system": "^7.3.0 || ^9.0.0-beta.1",
|
|
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
|
},
|