@mui/x-data-grid-pro 7.18.0 → 7.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/CHANGELOG.md +213 -11
  2. package/DataGridPro/DataGrid.js +2 -2
  3. package/DataGridPro/DataGridPro.js +29 -1
  4. package/DataGridPro/useDataGridProProps.js +1 -0
  5. package/esm/DataGridPro/DataGrid.js +2 -2
  6. package/esm/DataGridPro/DataGridPro.js +29 -1
  7. package/esm/DataGridPro/useDataGridProProps.js +2 -1
  8. package/esm/hooks/features/columnReorder/useGridColumnReorder.js +6 -1
  9. package/esm/hooks/features/dataSource/useGridDataSource.js +3 -3
  10. package/esm/hooks/features/infiniteLoader/useGridInfiniteLoader.js +20 -7
  11. package/esm/typeOverloads/reexports.js +2 -2
  12. package/esm/utils/releaseInfo.js +1 -1
  13. package/hooks/features/columnReorder/useGridColumnReorder.js +6 -1
  14. package/hooks/features/dataSource/useGridDataSource.js +3 -3
  15. package/hooks/features/infiniteLoader/useGridInfiniteLoader.js +19 -6
  16. package/index.js +1 -1
  17. package/material/index.d.ts +2 -2
  18. package/models/dataGridProProps.d.ts +2 -2
  19. package/models/gridApiPro.d.ts +1 -1
  20. package/models/gridStatePro.d.ts +2 -2
  21. package/modern/DataGridPro/DataGrid.js +2 -2
  22. package/modern/DataGridPro/DataGridPro.js +29 -1
  23. package/modern/DataGridPro/useDataGridProProps.js +2 -1
  24. package/modern/hooks/features/columnReorder/useGridColumnReorder.js +6 -1
  25. package/modern/hooks/features/dataSource/useGridDataSource.js +3 -3
  26. package/modern/hooks/features/infiniteLoader/useGridInfiniteLoader.js +20 -7
  27. package/modern/index.js +1 -1
  28. package/modern/typeOverloads/reexports.js +2 -2
  29. package/modern/utils/releaseInfo.js +1 -1
  30. package/package.json +6 -6
  31. package/typeOverloads/reexports.d.ts +2 -2
  32. package/utils/releaseInfo.js +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,206 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 7.20.0
7
+
8
+ _Oct 11, 2024_
9
+
10
+ We'd like to offer a big thanks to the 14 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 📚 Updated ["What's new"](https://mui.com/x/whats-new/) page giving more detailed overview of the latest new features and other highlights
13
+ - 📚 New [collapsible column groups demo](https://mui.com/x/react-data-grid/column-groups/#collapsible-column-groups) for the Data Grid component
14
+ - 📚 New [Tree Item Customization](https://mui.com/x/react-tree-view/tree-item-customization/) documentation to learn how to use the new APIs to create custom Tree Items. The old APIs (`props.ContentComponent` and `props.ContentProps`) have been deprecated and will be removed in the new major version of the Tree View component.
15
+ - 🌍 Improve Japanese (ja-JP) locale on the Data Grid component
16
+ - 🐞 Bugfixes
17
+ - 📚 Other documentation improvements
18
+
19
+ Special thanks go out to the community contributors who have helped make this release possible:
20
+ @k-rajat19, @kalyan90, @uma-neko, @vfbiby.
21
+ Following are all team members who have contributed to this release: @alelthomas, @arminmeh, @arthurbalduini,
22
+ @cherniavskii, @flaviendelangle, @JCQuintas, @MBilalShafi, @noraleonte, @oliviertassinari, @samuelsycamore, @siriwatknp.
23
+
24
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
25
+
26
+ ### Data Grid
27
+
28
+ #### `@mui/x-data-grid@7.20.0`
29
+
30
+ - [DataGrid] Add `onColumnHeaderContextMenu` event (#14734) @vfbiby
31
+ - [DataGrid] Avoid row spanning computation of outdated rows (#14902) @MBilalShafi
32
+ - [DataGrid] Fix scrollbar position not being updated after `scrollToIndexes` (#14888) @arminmeh
33
+ - [DataGrid] Pass `rowId` param to `processRowUpdate` (#14821) @k-rajat19
34
+ - [l10n] Improve Japanese (ja-JP) locale (#14870) @uma-neko
35
+
36
+ #### `@mui/x-data-grid-pro@7.20.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
37
+
38
+ Same changes as in `@mui/x-data-grid@7.20.0`, plus:
39
+
40
+ - [DataGridPro] Fix wording on the `rowSelectionPropagation` JSDoc and doc section (#14907) @flaviendelangle
41
+
42
+ #### `@mui/x-data-grid-premium@7.20.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
43
+
44
+ Same changes as in `@mui/x-data-grid-pro@7.20.0`.
45
+
46
+ ### Date and Time Pickers
47
+
48
+ #### `@mui/x-date-pickers@7.20.0`
49
+
50
+ - [pickers] Add `PageUp` and `PageDown` support for time components (#14812) @arthurbalduini
51
+ - [pickers] Fix regression on `PickerValidDate` (#14896) @flaviendelangle
52
+ - [pickers] Move the `DateFieldInPickerProps` interface to the `DatePicker` folder and rename it `DatePickerFieldProps` (same for time and date time) (#14828) @flaviendelangle
53
+
54
+ #### `@mui/x-date-pickers-pro@7.20.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
55
+
56
+ Same changes as in `@mui/x-date-pickers@7.20.0`.
57
+
58
+ ### Charts
59
+
60
+ #### `@mui/x-charts@7.20.0`
61
+
62
+ No changes since `@mui/x-charts@v7.19.0`.
63
+
64
+ #### `@mui/x-charts-pro@7.0.0-beta.4` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
65
+
66
+ Same changes as in `@mui/x-charts@7.20.0`.
67
+
68
+ ### Tree View
69
+
70
+ #### `@mui/x-tree-view@7.20.0`
71
+
72
+ - [TreeItem] Deprecate the `ContentComponent` and `ContentProps` props (#14908) @flaviendelangle
73
+ - [TreeView] Rework how items are being rendered in Rich Tree View components (#14749) @flaviendelangle
74
+
75
+ ### Docs
76
+
77
+ - [docs] Update "What's new" page (#14858) @cherniavskii
78
+ - [docs] Add collapsible column groups demo (#14818) @cherniavskii
79
+ - [docs] Add custom columns panel demo (#14825) @cherniavskii
80
+ - [docs] Capitalize all instances of "Data Grid" (#14884) @samuelsycamore
81
+ - [docs] Divide charts `tooltip` and `highlighting` pages (#14824) @JCQuintas
82
+ - [docs] Document the `TreeItem2` component and the `useTreeItem2` hook (#14551) @noraleonte
83
+ - [docs] Fix column pinning for "Disable detail panel content scroll" section (#14854 and #14885) @kalyan90
84
+ - [docs] Fix detail panel demo not working well with pinned columns (#14883) @cherniavskii
85
+ - [docs] New recipe of a read-only field (#14606) @flaviendelangle
86
+ - [docs] Change demo name example (#14822) @alelthomas
87
+
88
+ ### Core
89
+
90
+ - [core] Support `@mui/utils` v6 (#14867) @siriwatknp
91
+ - [code-infra] Remove deprecated `data-mui-test` in favour of `data-testid` (#14882) @JCQuintas
92
+ - [code-infra] Update renovate config and add a `vitest` group (#14856) @JCQuintas
93
+ - [test] Replace `waitFor()` with `act()` (#14851) @oliviertassinari
94
+ - [test] Restore "pnpm tc" CLI (#14852) @oliviertassinari
95
+
96
+ ## 7.19.0
97
+
98
+ _Oct 4, 2024_
99
+
100
+ We'd like to offer a big thanks to the 26 contributors who made this release possible. Here are some highlights ✨:
101
+
102
+ - 🔁 Automatic parents and children selection for Data Grid ["tree data"](https://mui.com/x/react-data-grid/tree-data/) and ["row grouping"](https://mui.com/x/react-data-grid/row-grouping/) features
103
+ - 💫 Support `minHeight` and `maxHeight` on flex parent container for the Data Grid component
104
+ - 🎁 Export `publicAPI` from the `useTreeItem2Utils` hook for the Tree View
105
+ - 🌍 Improve Bulgarian (bg-BG), Croatian (hr-HR), French (fr-FR), German (de-DE), Japanese (ja-JP) and Vietnamese (vi-VN) locales and add Portuguese (pt-PT) locale on the Data Grid component
106
+ - 🌏 Improve Czech (cs-CZ) and Portuguese (pt-BR) locales and add Bulgarian (bg-BG), Croatian (hr-HR) and Portuguese (pt-PT) locales on the Pickers components
107
+ - 🐞 Bugfixes
108
+ - 📚 Documentation improvements
109
+
110
+ Special thanks goes out to our community contributors who have helped make this release possible:
111
+ @AWAIS97, @chucamphong, @GMchris, @JakubSveda, @k-rajat19, @k725, @lhilgert9, @ruiaraujo012, @Sanderand, @thomasmoon, @vallereaugabriel.
112
+ Following are all team members who have contributed to this release:
113
+ @alexfauquette, @arminmeh, @arthurbalduini, @cherniavskii, @flaviendelangle, @Janpot, @JCQuintas, @KenanYusuf, @MBilalShafi, @michelengelen, @noraleonte, @oliviertassinari, @romgrk, @sai6855, @samuelsycamore.
114
+
115
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
116
+
117
+ ### Data Grid
118
+
119
+ #### `@mui/x-data-grid@7.19.0`
120
+
121
+ - [DataGrid] Fix column definition `undefined` value (#14456) @sai6855
122
+ - [DataGrid] Fix `checkboxSelectionVisibleOnly` reset the selection on filtering (#14677) @MBilalShafi
123
+ - [DataGrid] Fix background colors when `CSSVarsProvider` is used (#12901) @cherniavskii
124
+ - [DataGrid] Fix error when initializing aggregation with row spanning (#14710) @MBilalShafi
125
+ - [DataGrid] Fix scroll to cell logic for keyboard navigating cells and drag selection with pinned columns (#14550) @KenanYusuf
126
+ - [DataGrid] Support `minHeight` and `maxHeight` on flex parent container (#14614) @cherniavskii
127
+ - [l10n] Add missing Portuguese (pt-PT) translations (#14707) @ruiaraujo012
128
+ - [l10n] Improve Bulgarian (bg-BG) locale (#14451) @GMchris
129
+ - [l10n] Improve Croatian (hr-HR) locale (#14794) @arminmeh
130
+ - [l10n] Improve French (fr-FR) locale (#14750) @vallereaugabriel
131
+ - [l10n] Improve German (de-DE) locale (#14755) @lhilgert9
132
+ - [l10n] Improve Japanese (ja-JP) locale (#14381) @k725
133
+ - [l10n] Improve Vietnamese (vi-VN) locale (#14769) @chucamphong
134
+
135
+ #### `@mui/x-data-grid-pro@7.19.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
136
+
137
+ Same changes as in `@mui/x-data-grid@7.19.0`, plus:
138
+
139
+ - [DataGridPro] Fix dragging styles removal in column reorder (#14680) @k-rajat19
140
+ - [DataGridPro] Fix row pre-processing running with a stale data source (#14810) @MBilalShafi
141
+ - [DataGridPro] Fix `onRowsScrollEnd` not firing on very fast scrolling (#14171) @arminmeh
142
+
143
+ #### `@mui/x-data-grid-premium@7.19.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
144
+
145
+ Same changes as in `@mui/x-data-grid-pro@7.19.0`, plus:
146
+
147
+ - [DataGridPremium] Automatic parents and children selection (#13757) @MBilalShafi
148
+
149
+ ### Date and Time Pickers
150
+
151
+ #### `@mui/x-date-pickers@7.19.0`
152
+
153
+ - [pickers] Fix left-right keyboard nav with `yearsOrder="desc"` and `direction="rtl"` (#14682) @thomasmoon
154
+ - [pickers] Improve `PickerValidDate` type (#14771) @flaviendelangle
155
+ - [pickers] Improve typing of the range pickers (#14716) @flaviendelangle
156
+ - [l10n] Add Bulgarian (bg-BG) locale (#14469) @GMchris
157
+ - [l10n] Add Croatian (hr-HR) locale (#14795) @arminmeh
158
+ - [l10n] Add Portuguese (pt-PT) locale (#14722) @ruiaraujo012
159
+ - [l10n] Improve Czech (cs-CZ) locale (#14732) @JakubSveda
160
+ - [l10n] Improve Portuguese (pt-BR) locale (#14725) @arthurbalduini
161
+
162
+ #### `@mui/x-date-pickers-pro@7.19.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
163
+
164
+ Same changes as in `@mui/x-date-pickers@7.19.0`.
165
+
166
+ ### Charts
167
+
168
+ #### `@mui/x-charts@7.19.0`
169
+
170
+ - [charts] Fix `LineChart` area animation being stuck when resizing container (#14711) @alexfauquette
171
+ - [charts] Improve types and start using `warnOnce` (#14792) @JCQuintas
172
+
173
+ #### `@mui/x-charts-pro@7.0.0-beta.3` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
174
+
175
+ Same changes as in `@mui/x-charts@7.19.0`.
176
+
177
+ ### Tree View
178
+
179
+ #### `@mui/x-tree-view@7.19.0`
180
+
181
+ - [TreeView] Apply experimental features in `getDefaultizedParams` instead of in the plugin render (#14661) @flaviendelangle
182
+ - [TreeView] Export `publicAPI` form `useTreeItem2Utils` (#14729) @noraleonte
183
+ - [TreeView] Fix cursor navigation interfering with browser shortcut keys (#14798) @sai6855
184
+ - [TreeView] Fix invalid test for items reordering (#14665) @flaviendelangle
185
+ - [TreeView] Remove `instance.getTreeItemIdAttribute` (#14667) @flaviendelangle
186
+
187
+ ### Docs
188
+
189
+ - [docs] Added warning callout for Firefox reordering bug (#14516) @michelengelen
190
+ - [docs] Copyedit `pages.ts` navigation (#14782) @samuelsycamore
191
+ - [docs] Fix typo in row spanning doc (#14770) @flaviendelangle
192
+ - [docs] Fix typo in the Tree View migration guide to v7 (#14727) @Sanderand
193
+ - [docs] Fix typo in usage of Moment guide for UTC and timezones (#14780) @AWAIS97
194
+ - [docs] Fix what's new link to use absolute URL (#14543) @oliviertassinari
195
+
196
+ ### Core
197
+
198
+ - [core] Fix class name composition order (#14775) @oliviertassinari
199
+ - [core] Replace minWidth, maxWidth with width (#14776) @oliviertassinari
200
+ - [code-infra] Remove custom playwright installation steps (#14728) @Janpot
201
+ - [code-infra] Replace or remove all instances of `e` identifier (#14724) @samuelsycamore
202
+ - [infra] Adds community contribution section to the changelog script (#14799) @michelengelen
203
+ - [infra] Fix line break in Stack Overflow message @oliviertassinari
204
+ - [test] Fix `Escape` event firing event (#14797) @oliviertassinari
205
+
6
206
  ## 7.18.0
7
207
 
8
208
  _Sep 20, 2024_
@@ -11,7 +211,7 @@ We'd like to offer a big thanks to the 14 contributors who made this release pos
11
211
 
12
212
  - 💫 Support [Row spanning](https://mui.com/x/react-data-grid/row-spanning/) on the Data Grid that automatically merges the consecutive cells in a column based on the cell value
13
213
 
14
- <img width="600" src="https://github.com/user-attachments/assets/d32ec936-d238-4c92-9e1a-af6788d74cdf" alt="data grid row spanning" />
214
+ <img width="600" src="https://github.com/user-attachments/assets/d32ec936-d238-4c92-9e1a-af6788d74cdf" alt="Data Grid row spanning" />
15
215
 
16
216
  - ⏰ Support `date-fns` v4 (#14673) @LukasTy
17
217
  - 🎉 Add option for Pickers to change the order of displayed years (#11780) @thomasmoon
@@ -450,7 +650,7 @@ We'd like to offer a big thanks to the 12 contributors who made this release pos
450
650
  #### `@mui/x-data-grid@7.13.0`
451
651
 
452
652
  - [DataGrid] Fix CSV export for `null` and `undefined` values (#14166) @k-rajat19
453
- - [DataGrid] Fix error logged during skeleton loading with nested data grid (#14186) @KenanYusuf
653
+ - [DataGrid] Fix error logged during skeleton loading with nested Data Grid (#14186) @KenanYusuf
454
654
  - [DataGrid] Remove needless check in `useGridStateInitialization` (#14181) @k-rajat19
455
655
  - [DataGrid] Add recipe for persisting filters in local storage (#14208) @cherniavskii
456
656
  - [l10n] Improve Vietnamese (vi-VN) locale (#14216) @hungnd-casso
@@ -568,6 +768,8 @@ Same changes as in `@mui/x-charts@7.12.1`, plus:
568
768
 
569
769
  #### `@mui/x-tree-view@7.12.1`
570
770
 
771
+ No changes since `@mui/x-tree-view@7.12.0`.
772
+
571
773
  ### Docs
572
774
 
573
775
  - [docs] Add a warning to promote the usage of `updateRows` (#14027) @MBilalShafi
@@ -1418,7 +1620,7 @@ Same changes as in `@mui/x-date-pickers@7.6.0`.
1418
1620
  - [docs] Fix a small typo in property comment (#13245) @Janpot
1419
1621
  - [docs] Improve the Data Grid FAQ page (#13258) @MBilalShafi
1420
1622
  - [docs] Removes unused lines in TreeItem2 styling (#13264) @arthurbalduini
1421
- - [docs] Small improvements on accessibility data grid doc (#13233) @arthurbalduini
1623
+ - [docs] Small improvements on accessibility Data Grid doc (#13233) @arthurbalduini
1422
1624
  - [docs] Update Pickers demo configurations (#13303) @LukasTy
1423
1625
 
1424
1626
  ### Core
@@ -1432,7 +1634,7 @@ Same changes as in `@mui/x-date-pickers@7.6.0`.
1432
1634
  - [test] Use test-utils from npm (#12880) @michaldudak
1433
1635
  - [typescript] Remove duplicate `DateRangePosition` type in favor of `RangePosition` (#13288) @LukasTy
1434
1636
 
1435
- ## v7.5.1
1637
+ ## 7.5.1
1436
1638
 
1437
1639
  _May 23, 2024_
1438
1640
 
@@ -1492,7 +1694,7 @@ Same changes as in `@mui/x-date-pickers@7.5.1`.
1492
1694
  - [code-infra] Run corepack enable on all CI jobs (#13205) @Janpot
1493
1695
  - [code-infra] Use `nx` for lerna tasks (#13166) @LukasTy
1494
1696
 
1495
- ## v7.5.0
1697
+ ## 7.5.0
1496
1698
 
1497
1699
  _May 17, 2024_
1498
1700
 
@@ -2017,7 +2219,7 @@ Same changes as in `@mui/x-date-pickers@7.1.1`, plus:
2017
2219
  - [docs] Fix typo in `getItemId` prop description (#12637) @flaviendelangle
2018
2220
  - [docs] Make the Charts `margin` usage more visible (#12591) @alexfauquette
2019
2221
  - [docs] Match IE 11 spacing with Material UI @oliviertassinari
2020
- - [docs] Move data grid interfaces to standard API page layout (#12016) @alexfauquette
2222
+ - [docs] Move Data Grid interfaces to standard API page layout (#12016) @alexfauquette
2021
2223
  - [docs] Remove ` around @default values (#12158) @alexfauquette
2022
2224
  - [docs] Remove `day` from the default `dayOfWeekFormatter` function params (#12644) @LukasTy
2023
2225
  - [docs] Use `TreeItem2` for icon expansion example on `RichTreeView` (#12563) @flaviendelangle
@@ -3458,7 +3660,7 @@ Same changes as in `@mui/x-date-pickers@7.0.0-alpha.9`.
3458
3660
  - [docs] Fix generated tree view API docs (#11737) @LukasTy
3459
3661
  - [docs] Generate docs for Tree View slots (#11730) @flaviendelangle
3460
3662
  - [docs] Improve codemod for v7 (#11650) @oliviertassinari
3461
- - [docs] Improve data grid `pageSizeOptions` prop documentation (#11682) @oliviertassinari
3663
+ - [docs] Improve Data Grid `pageSizeOptions` prop documentation (#11682) @oliviertassinari
3462
3664
  - [docs] Parse markdown on API docs demo titles (#11728) @LukasTy
3463
3665
  - [docs] Remove the description from the `className` prop (#11693) @oliviertassinari
3464
3666
  - [docs] Uplift `SimpleTreeView` customization examples (#11424) @noraleonte
@@ -3546,8 +3748,8 @@ Same changes as in `@mui/x-date-pickers@7.0.0-alpha.8`.
3546
3748
  - [docs] Fix parsing of `x-date-pickers-pro` demo adapter imports (#11628) @LukasTy
3547
3749
  - [docs] Improve `git diff` format @oliviertassinari
3548
3750
  - [docs] Push up the MUI X brand (#11533) @oliviertassinari
3549
- - [docs] Remove old data grid translation files (#11646) @cherniavskii
3550
- - [docs] Improve Server-side data grid docs (#11589) @oliviertassinari
3751
+ - [docs] Remove old Data Grid translation files (#11646) @cherniavskii
3752
+ - [docs] Improve Server-side Data Grid docs (#11589) @oliviertassinari
3551
3753
  - [docs] Improve charts landing page (#11570) @oliviertassinari
3552
3754
 
3553
3755
  ### Core
@@ -4057,7 +4259,7 @@ We'd like to offer a big thanks to the 15 contributors who made this release pos
4057
4259
 
4058
4260
  - The clipboard related exports `ignoreValueFormatterDuringExport` and `splitClipboardPastedText` are no longer prefixed with `unstable_`.
4059
4261
 
4060
- - The deprecated constants `SUBMIT_FILTER_STROKE_TIME` and `SUBMIT_FILTER_DATE_STROKE_TIME` have been removed from the `DataGrid` exports. Use the [`filterDebounceMs`](https://next.mui.com/x/api/data-grid/data-grid/#data-grid-prop-filterDebounceMs) prop to customize filter debounce time.
4262
+ - The deprecated constants `SUBMIT_FILTER_STROKE_TIME` and `SUBMIT_FILTER_DATE_STROKE_TIME` have been removed from the Data Grid exports. Use the [`filterDebounceMs`](https://next.mui.com/x/api/data-grid/data-grid/#data-grid-prop-filterDebounceMs) prop to customize filter debounce time.
4061
4263
 
4062
4264
  - The `slots.preferencesPanel` slot and the `slotProps.preferencesPanel` prop were removed. Use `slots.panel` and `slotProps.panel` instead.
4063
4265
 
@@ -4769,7 +4971,7 @@ A special shoutout to thank the 12 contributors who made this release possible.
4769
4971
  - 🚀 First v7 alpha release
4770
4972
  - ✨ Fix aggregation label not showing when `renderHeader` is used (#10961) @cherniavskii
4771
4973
  - 📘 Server side data source [early documentation](https://mui.com/x/react-data-grid/server-side-data/)
4772
- - 💫 New recipes added for the data grid
4974
+ - 💫 New recipes added for the Data Grid
4773
4975
  - 📈 `<ChartsReferenceLine />` component is now available
4774
4976
  - 🌍 Add Basque (eu) locale, improve Czech (cs-CZ) and Spanish (es-ES) locales
4775
4977
  - 🐞 Bugfixes
@@ -12,7 +12,7 @@ function DataGrid() {
12
12
  if (process.env.NODE_ENV === 'production') {
13
13
  return null;
14
14
  }
15
- throw new Error(["You try to import `DataGrid` from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', "Instead, you can do `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
15
+ throw new Error(["You try to import Data Grid from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', "Instead, you can do `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
16
16
  }
17
17
 
18
18
  /**
@@ -22,5 +22,5 @@ function DataGridPremium() {
22
22
  if (process.env.NODE_ENV === 'production') {
23
23
  return null;
24
24
  }
25
- throw new Error(["You try to import `DataGridPremium` from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', 'Instead, if you have a Premium plan license or want to try Premium, you can do this:', `import { DataGridPremium } from '@mui/x-data-grid-premium'`, '', "Otherwise, you can stay on the Pro plan: `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
25
+ throw new Error(["You try to import Data Grid Premium from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', 'Instead, if you have a Premium plan license or want to try Premium, you can do this:', `import { DataGridPremium } from '@mui/x-data-grid-premium'`, '', "Otherwise, you can stay on the Pro plan: `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
26
26
  }
@@ -83,6 +83,11 @@ DataGridProRaw.propTypes = {
83
83
  /**
84
84
  * If `true`, the Data Grid height is dynamic and follows the number of rows in the Data Grid.
85
85
  * @default false
86
+ * @deprecated Use flex parent container instead: https://mui.com/x/react-data-grid/layout/#flex-parent-container
87
+ * @example
88
+ * <div style={{ display: 'flex', flexDirection: 'column' }}>
89
+ * <DataGrid />
90
+ * </div>
86
91
  */
87
92
  autoHeight: _propTypes.default.bool,
88
93
  /**
@@ -371,7 +376,7 @@ DataGridProRaw.propTypes = {
371
376
  */
372
377
  headerFilterHeight: _propTypes.default.number,
373
378
  /**
374
- * If `true`, enables the data grid filtering on header feature.
379
+ * If `true`, the header filters feature is enabled.
375
380
  * @default false
376
381
  */
377
382
  headerFilters: _propTypes.default.bool,
@@ -537,6 +542,12 @@ DataGridProRaw.propTypes = {
537
542
  * @param {GridCallbackDetails} details Additional details for this callback.
538
543
  */
539
544
  onColumnHeaderClick: _propTypes.default.func,
545
+ /**
546
+ * Callback fired when a contextmenu event comes from a column header element.
547
+ * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].
548
+ * @param {MuiEvent<React.MouseEvent>} event The event object.
549
+ */
550
+ onColumnHeaderContextMenu: _propTypes.default.func,
540
551
  /**
541
552
  * Callback fired when a double click event comes from a column header element.
542
553
  * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].
@@ -802,6 +813,7 @@ DataGridProRaw.propTypes = {
802
813
  * @template R
803
814
  * @param {R} newRow Row object with the new values.
804
815
  * @param {R} oldRow Row object with the old values.
816
+ * @param {{ rowId: GridRowId }} params Additional parameters.
805
817
  * @returns {Promise<R> | R} The final values to update the row.
806
818
  */
807
819
  processRowUpdate: _propTypes.default.func,
@@ -856,6 +868,22 @@ DataGridProRaw.propTypes = {
856
868
  * Sets the row selection model of the Data Grid.
857
869
  */
858
870
  rowSelectionModel: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]).isRequired), _propTypes.default.number, _propTypes.default.string]),
871
+ /**
872
+ * When `rowSelectionPropagation.descendants` is set to `true`.
873
+ * - Selecting a parent selects all its filtered descendants automatically.
874
+ * - Deselecting a parent row deselects all its filtered descendants automatically.
875
+ *
876
+ * When `rowSelectionPropagation.parents` is set to `true`
877
+ * - Selecting all the filtered descendants of a parent selects the parent automatically.
878
+ * - Deselecting a descendant of a selected parent deselects the parent automatically.
879
+ *
880
+ * Works with tree data and row grouping on the client-side only.
881
+ * @default { parents: false, descendants: false }
882
+ */
883
+ rowSelectionPropagation: _propTypes.default.shape({
884
+ descendants: _propTypes.default.bool,
885
+ parents: _propTypes.default.bool
886
+ }),
859
887
  /**
860
888
  * Loading rows can be processed on the server or client-side.
861
889
  * Set it to 'client' if you would like enable infnite loading.
@@ -33,6 +33,7 @@ const DATA_GRID_PRO_PROPS_DEFAULT_VALUES = exports.DATA_GRID_PRO_PROPS_DEFAULT_V
33
33
  getDetailPanelHeight: () => 500,
34
34
  headerFilters: false,
35
35
  keepColumnPositionIfDraggedOutside: false,
36
+ rowSelectionPropagation: _internals.ROW_SELECTION_PROPAGATION_DEFAULT,
36
37
  rowReordering: false,
37
38
  rowsLoadingMode: 'client',
38
39
  scrollEndThreshold: 80,
@@ -5,7 +5,7 @@ export function DataGrid() {
5
5
  if (process.env.NODE_ENV === 'production') {
6
6
  return null;
7
7
  }
8
- throw new Error(["You try to import `DataGrid` from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', "Instead, you can do `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
8
+ throw new Error(["You try to import Data Grid from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', "Instead, you can do `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
9
9
  }
10
10
 
11
11
  /**
@@ -15,5 +15,5 @@ export function DataGridPremium() {
15
15
  if (process.env.NODE_ENV === 'production') {
16
16
  return null;
17
17
  }
18
- throw new Error(["You try to import `DataGridPremium` from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', 'Instead, if you have a Premium plan license or want to try Premium, you can do this:', `import { DataGridPremium } from '@mui/x-data-grid-premium'`, '', "Otherwise, you can stay on the Pro plan: `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
18
+ throw new Error(["You try to import Data Grid Premium from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', 'Instead, if you have a Premium plan license or want to try Premium, you can do this:', `import { DataGridPremium } from '@mui/x-data-grid-premium'`, '', "Otherwise, you can stay on the Pro plan: `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
19
19
  }
@@ -76,6 +76,11 @@ DataGridProRaw.propTypes = {
76
76
  /**
77
77
  * If `true`, the Data Grid height is dynamic and follows the number of rows in the Data Grid.
78
78
  * @default false
79
+ * @deprecated Use flex parent container instead: https://mui.com/x/react-data-grid/layout/#flex-parent-container
80
+ * @example
81
+ * <div style={{ display: 'flex', flexDirection: 'column' }}>
82
+ * <DataGrid />
83
+ * </div>
79
84
  */
80
85
  autoHeight: PropTypes.bool,
81
86
  /**
@@ -364,7 +369,7 @@ DataGridProRaw.propTypes = {
364
369
  */
365
370
  headerFilterHeight: PropTypes.number,
366
371
  /**
367
- * If `true`, enables the data grid filtering on header feature.
372
+ * If `true`, the header filters feature is enabled.
368
373
  * @default false
369
374
  */
370
375
  headerFilters: PropTypes.bool,
@@ -530,6 +535,12 @@ DataGridProRaw.propTypes = {
530
535
  * @param {GridCallbackDetails} details Additional details for this callback.
531
536
  */
532
537
  onColumnHeaderClick: PropTypes.func,
538
+ /**
539
+ * Callback fired when a contextmenu event comes from a column header element.
540
+ * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].
541
+ * @param {MuiEvent<React.MouseEvent>} event The event object.
542
+ */
543
+ onColumnHeaderContextMenu: PropTypes.func,
533
544
  /**
534
545
  * Callback fired when a double click event comes from a column header element.
535
546
  * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].
@@ -795,6 +806,7 @@ DataGridProRaw.propTypes = {
795
806
  * @template R
796
807
  * @param {R} newRow Row object with the new values.
797
808
  * @param {R} oldRow Row object with the old values.
809
+ * @param {{ rowId: GridRowId }} params Additional parameters.
798
810
  * @returns {Promise<R> | R} The final values to update the row.
799
811
  */
800
812
  processRowUpdate: PropTypes.func,
@@ -849,6 +861,22 @@ DataGridProRaw.propTypes = {
849
861
  * Sets the row selection model of the Data Grid.
850
862
  */
851
863
  rowSelectionModel: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired), PropTypes.number, PropTypes.string]),
864
+ /**
865
+ * When `rowSelectionPropagation.descendants` is set to `true`.
866
+ * - Selecting a parent selects all its filtered descendants automatically.
867
+ * - Deselecting a parent row deselects all its filtered descendants automatically.
868
+ *
869
+ * When `rowSelectionPropagation.parents` is set to `true`
870
+ * - Selecting all the filtered descendants of a parent selects the parent automatically.
871
+ * - Deselecting a descendant of a selected parent deselects the parent automatically.
872
+ *
873
+ * Works with tree data and row grouping on the client-side only.
874
+ * @default { parents: false, descendants: false }
875
+ */
876
+ rowSelectionPropagation: PropTypes.shape({
877
+ descendants: PropTypes.bool,
878
+ parents: PropTypes.bool
879
+ }),
852
880
  /**
853
881
  * Loading rows can be processed on the server or client-side.
854
882
  * Set it to 'client' if you would like enable infnite loading.
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { useThemeProps } from '@mui/material/styles';
4
4
  import { GRID_DEFAULT_LOCALE_TEXT, DATA_GRID_PROPS_DEFAULT_VALUES } from '@mui/x-data-grid';
5
- import { computeSlots, useProps } from '@mui/x-data-grid/internals';
5
+ import { computeSlots, useProps, ROW_SELECTION_PROPAGATION_DEFAULT } from '@mui/x-data-grid/internals';
6
6
  import { DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS } from "../constants/dataGridProDefaultSlotsComponents.js";
7
7
  const getDataGridProForcedProps = themedProps => _extends({
8
8
  signature: 'DataGridPro'
@@ -25,6 +25,7 @@ export const DATA_GRID_PRO_PROPS_DEFAULT_VALUES = _extends({}, DATA_GRID_PROPS_D
25
25
  getDetailPanelHeight: () => 500,
26
26
  headerFilters: false,
27
27
  keepColumnPositionIfDraggedOutside: false,
28
+ rowSelectionPropagation: ROW_SELECTION_PROPAGATION_DEFAULT,
28
29
  rowReordering: false,
29
30
  rowsLoadingMode: 'client',
30
31
  scrollEndThreshold: 80,
@@ -206,6 +206,11 @@ export const useGridColumnReorder = (apiRef, props) => {
206
206
  // For more information check here https://github.com/mui/mui-x/issues/2680.
207
207
  event.stopPropagation();
208
208
  clearTimeout(removeDnDStylesTimeout.current);
209
+
210
+ // For more information check here https://github.com/mui/mui-x/issues/14678
211
+ if (dragColNode.current.classList.contains(classes.columnHeaderDragging)) {
212
+ dragColNode.current.classList.remove(classes.columnHeaderDragging);
213
+ }
209
214
  dragColNode.current = null;
210
215
 
211
216
  // Check if the column was dropped outside the grid.
@@ -228,7 +233,7 @@ export const useGridColumnReorder = (apiRef, props) => {
228
233
  })
229
234
  }));
230
235
  apiRef.current.forceUpdate();
231
- }, [props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, apiRef]);
236
+ }, [apiRef, props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, classes.columnHeaderDragging]);
232
237
  useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleDragStart);
233
238
  useGridApiEventHandler(apiRef, 'columnHeaderDragEnter', handleDragEnter);
234
239
  useGridApiEventHandler(apiRef, 'columnHeaderDragOver', handleDragOver);
@@ -128,9 +128,9 @@ export const useGridDataSource = (apiRef, props) => {
128
128
  apiRef.current.updateServerRows(getRowsResponse.rows, rowNode.path);
129
129
  apiRef.current.setRowChildrenExpansion(id, true);
130
130
  } catch (error) {
131
- const e = error;
132
- apiRef.current.unstable_dataSource.setChildrenFetchError(id, e);
133
- onError?.(e, fetchParams);
131
+ const childrenFetchError = error;
132
+ apiRef.current.unstable_dataSource.setChildrenFetchError(id, childrenFetchError);
133
+ onError?.(childrenFetchError, fetchParams);
134
134
  } finally {
135
135
  apiRef.current.unstable_dataSource.setChildrenLoading(id, false);
136
136
  nestedDataManager.setRequestSettled(id);
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useGridSelector, useGridApiOptionHandler, gridVisibleColumnDefinitionsSelector, useGridApiMethod, gridDimensionsSelector } from '@mui/x-data-grid';
3
- import { useGridVisibleRows } from '@mui/x-data-grid/internals';
3
+ import { useGridVisibleRows, useTimeout } from '@mui/x-data-grid/internals';
4
4
  import useEventCallback from '@mui/utils/useEventCallback';
5
5
  import { styled } from '@mui/system';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -20,6 +20,7 @@ export const useGridInfiniteLoader = (apiRef, props) => {
20
20
  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
21
21
  const currentPage = useGridVisibleRows(apiRef, props);
22
22
  const observer = React.useRef();
23
+ const updateTargetTimeout = useTimeout();
23
24
  const triggerElement = React.useRef(null);
24
25
  const isEnabled = props.rowsLoadingMode === 'client' && !!props.onRowsScrollEnd;
25
26
  const handleLoadMoreRows = useEventCallback(([entry]) => {
@@ -58,11 +59,7 @@ export const useGridInfiniteLoader = (apiRef, props) => {
58
59
  observer.current.observe(triggerElement.current);
59
60
  }
60
61
  }, [virtualScroller, handleLoadMoreRows, isEnabled, marginBottom]);
61
- const triggerRef = React.useCallback(node => {
62
- // Prevent the infite loading working in combination with lazy loading
63
- if (!isEnabled) {
64
- return;
65
- }
62
+ const updateTarget = node => {
66
63
  if (triggerElement.current !== node) {
67
64
  observer.current?.disconnect();
68
65
  triggerElement.current = node;
@@ -70,7 +67,23 @@ export const useGridInfiniteLoader = (apiRef, props) => {
70
67
  observer.current?.observe(triggerElement.current);
71
68
  }
72
69
  }
73
- }, [isEnabled]);
70
+ };
71
+ const triggerRef = React.useCallback(node => {
72
+ // Prevent the infite loading working in combination with lazy loading
73
+ if (!isEnabled) {
74
+ return;
75
+ }
76
+
77
+ // If the user scrolls through the grid too fast it might happen that the observer is connected to the trigger element
78
+ // that will be intersecting the root inside the same render cycle (but not intersecting at the time of the connection).
79
+ // This will cause the observer to not call the callback with `isIntersecting` set to `true`.
80
+ // https://www.w3.org/TR/intersection-observer/#event-loop
81
+ // Delaying the connection to the next cycle helps since the observer will always call the callback the first time it is connected.
82
+ // https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/observe
83
+ // Related to
84
+ // https://github.com/mui/mui-x/issues/14116
85
+ updateTargetTimeout.start(0, () => updateTarget(node));
86
+ }, [isEnabled, updateTargetTimeout]);
74
87
  const getInfiniteLoadingTriggerElement = React.useCallback(({
75
88
  lastRowId
76
89
  }) => {
@@ -7,9 +7,9 @@ export { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
7
7
  */
8
8
 
9
9
  /**
10
- * The state of `DataGridPro`.
10
+ * The state of Data Grid Pro.
11
11
  */
12
12
 
13
13
  /**
14
- * The initial state of `DataGridPro`.
14
+ * The initial state of Data Grid Pro.
15
15
  */
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTcyNjc4NjgwMDAwMA==";
3
+ const releaseInfo = "MTcyODU5NzYwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat
@@ -215,6 +215,11 @@ const useGridColumnReorder = (apiRef, props) => {
215
215
  // For more information check here https://github.com/mui/mui-x/issues/2680.
216
216
  event.stopPropagation();
217
217
  clearTimeout(removeDnDStylesTimeout.current);
218
+
219
+ // For more information check here https://github.com/mui/mui-x/issues/14678
220
+ if (dragColNode.current.classList.contains(classes.columnHeaderDragging)) {
221
+ dragColNode.current.classList.remove(classes.columnHeaderDragging);
222
+ }
218
223
  dragColNode.current = null;
219
224
 
220
225
  // Check if the column was dropped outside the grid.
@@ -237,7 +242,7 @@ const useGridColumnReorder = (apiRef, props) => {
237
242
  })
238
243
  }));
239
244
  apiRef.current.forceUpdate();
240
- }, [props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, apiRef]);
245
+ }, [apiRef, props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, classes.columnHeaderDragging]);
241
246
  (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleDragStart);
242
247
  (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnter', handleDragEnter);
243
248
  (0, _xDataGrid.useGridApiEventHandler)(apiRef, 'columnHeaderDragOver', handleDragOver);
@@ -137,9 +137,9 @@ const useGridDataSource = (apiRef, props) => {
137
137
  apiRef.current.updateServerRows(getRowsResponse.rows, rowNode.path);
138
138
  apiRef.current.setRowChildrenExpansion(id, true);
139
139
  } catch (error) {
140
- const e = error;
141
- apiRef.current.unstable_dataSource.setChildrenFetchError(id, e);
142
- onError?.(e, fetchParams);
140
+ const childrenFetchError = error;
141
+ apiRef.current.unstable_dataSource.setChildrenFetchError(id, childrenFetchError);
142
+ onError?.(childrenFetchError, fetchParams);
143
143
  } finally {
144
144
  apiRef.current.unstable_dataSource.setChildrenLoading(id, false);
145
145
  nestedDataManager.setRequestSettled(id);
@@ -28,6 +28,7 @@ const useGridInfiniteLoader = (apiRef, props) => {
28
28
  const visibleColumns = (0, _xDataGrid.useGridSelector)(apiRef, _xDataGrid.gridVisibleColumnDefinitionsSelector);
29
29
  const currentPage = (0, _internals.useGridVisibleRows)(apiRef, props);
30
30
  const observer = React.useRef();
31
+ const updateTargetTimeout = (0, _internals.useTimeout)();
31
32
  const triggerElement = React.useRef(null);
32
33
  const isEnabled = props.rowsLoadingMode === 'client' && !!props.onRowsScrollEnd;
33
34
  const handleLoadMoreRows = (0, _useEventCallback.default)(([entry]) => {
@@ -66,11 +67,7 @@ const useGridInfiniteLoader = (apiRef, props) => {
66
67
  observer.current.observe(triggerElement.current);
67
68
  }
68
69
  }, [virtualScroller, handleLoadMoreRows, isEnabled, marginBottom]);
69
- const triggerRef = React.useCallback(node => {
70
- // Prevent the infite loading working in combination with lazy loading
71
- if (!isEnabled) {
72
- return;
73
- }
70
+ const updateTarget = node => {
74
71
  if (triggerElement.current !== node) {
75
72
  observer.current?.disconnect();
76
73
  triggerElement.current = node;
@@ -78,7 +75,23 @@ const useGridInfiniteLoader = (apiRef, props) => {
78
75
  observer.current?.observe(triggerElement.current);
79
76
  }
80
77
  }
81
- }, [isEnabled]);
78
+ };
79
+ const triggerRef = React.useCallback(node => {
80
+ // Prevent the infite loading working in combination with lazy loading
81
+ if (!isEnabled) {
82
+ return;
83
+ }
84
+
85
+ // If the user scrolls through the grid too fast it might happen that the observer is connected to the trigger element
86
+ // that will be intersecting the root inside the same render cycle (but not intersecting at the time of the connection).
87
+ // This will cause the observer to not call the callback with `isIntersecting` set to `true`.
88
+ // https://www.w3.org/TR/intersection-observer/#event-loop
89
+ // Delaying the connection to the next cycle helps since the observer will always call the callback the first time it is connected.
90
+ // https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/observe
91
+ // Related to
92
+ // https://github.com/mui/mui-x/issues/14116
93
+ updateTargetTimeout.start(0, () => updateTarget(node));
94
+ }, [isEnabled, updateTargetTimeout]);
82
95
  const getInfiniteLoadingTriggerElement = React.useCallback(({
83
96
  lastRowId
84
97
  }) => {
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-pro v7.18.0
2
+ * @mui/x-data-grid-pro v7.20.0
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -1,5 +1,5 @@
1
1
  declare const materialSlots: {
2
- columnMenuPinLeftIcon: import("react").JSXElementConstructor<any>;
3
- columnMenuPinRightIcon: import("react").JSXElementConstructor<any>;
2
+ columnMenuPinLeftIcon: React.JSXElementConstructor<any>;
3
+ columnMenuPinRightIcon: React.JSXElementConstructor<any>;
4
4
  };
5
5
  export default materialSlots;
@@ -24,13 +24,13 @@ interface DataGridProPropsWithComplexDefaultValueAfterProcessing extends Omit<Da
24
24
  slots: GridProSlotsComponent;
25
25
  }
26
26
  /**
27
- * The props of the `DataGridPro` component after the pre-processing phase.
27
+ * The props of the Data Grid Pro component after the pre-processing phase.
28
28
  */
29
29
  export interface DataGridProProcessedProps<R extends GridValidRowModel = any> extends DataGridProPropsWithDefaultValue<R>, DataGridProPropsWithComplexDefaultValueAfterProcessing, Omit<DataGridProPropsWithoutDefaultValue<R>, 'componentsProps'> {
30
30
  }
31
31
  export type DataGridProForcedPropsKey = 'signature';
32
32
  /**
33
- * The `DataGridPro` options with a default value overridable through props
33
+ * The Data Grid Pro options with a default value overridable through props
34
34
  * None of the entry of this interface should be optional, they all have default values and `DataGridProps` already applies a `Partial<DataGridSimpleOptions>` for the public interface
35
35
  * The controlled model do not have a default value at the prop processing level, so they must be defined in `DataGridOtherProps`
36
36
  */
@@ -4,7 +4,7 @@ import { GridInitialStatePro, GridStatePro } from './gridStatePro';
4
4
  import type { GridColumnPinningApi, GridDetailPanelApi, GridRowPinningApi, GridDetailPanelPrivateApi, GridDataSourceApi, GridDataSourcePrivateApi } from '../hooks';
5
5
  import type { DataGridProProcessedProps } from './dataGridProProps';
6
6
  /**
7
- * The api of `DataGridPro`.
7
+ * The api of Data Grid Pro.
8
8
  */
9
9
  export interface GridApiPro extends GridApiCommon<GridStatePro, GridInitialStatePro>, GridRowProApi, GridColumnPinningApi, GridDetailPanelApi, GridRowPinningApi, GridDataSourceApi, GridRowMultiSelectionApi, GridColumnReorderApi {
10
10
  }
@@ -2,7 +2,7 @@ import { GridInitialState as GridInitialStateCommunity, GridState as GridStateCo
2
2
  import type { GridDetailPanelState, GridDetailPanelInitialState, GridColumnReorderState } from '../hooks';
3
3
  import type { GridDataSourceState } from '../hooks/features/dataSource/interfaces';
4
4
  /**
5
- * The state of `DataGridPro`.
5
+ * The state of Data Grid Pro.
6
6
  */
7
7
  export interface GridStatePro extends GridStateCommunity {
8
8
  columnReorder: GridColumnReorderState;
@@ -11,7 +11,7 @@ export interface GridStatePro extends GridStateCommunity {
11
11
  dataSource: GridDataSourceState;
12
12
  }
13
13
  /**
14
- * The initial state of `DataGridPro`.
14
+ * The initial state of Data Grid Pro.
15
15
  */
16
16
  export interface GridInitialStatePro extends GridInitialStateCommunity {
17
17
  pinnedColumns?: GridPinnedColumnFields;
@@ -5,7 +5,7 @@ export function DataGrid() {
5
5
  if (process.env.NODE_ENV === 'production') {
6
6
  return null;
7
7
  }
8
- throw new Error(["You try to import `DataGrid` from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', "Instead, you can do `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
8
+ throw new Error(["You try to import Data Grid from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', "Instead, you can do `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
9
9
  }
10
10
 
11
11
  /**
@@ -15,5 +15,5 @@ export function DataGridPremium() {
15
15
  if (process.env.NODE_ENV === 'production') {
16
16
  return null;
17
17
  }
18
- throw new Error(["You try to import `DataGridPremium` from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', 'Instead, if you have a Premium plan license or want to try Premium, you can do this:', `import { DataGridPremium } from '@mui/x-data-grid-premium'`, '', "Otherwise, you can stay on the Pro plan: `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
18
+ throw new Error(["You try to import Data Grid Premium from @mui/x-data-grid-pro but this module isn't exported from this npm package.", '', 'Instead, if you have a Premium plan license or want to try Premium, you can do this:', `import { DataGridPremium } from '@mui/x-data-grid-premium'`, '', "Otherwise, you can stay on the Pro plan: `import { DataGridPro } from '@mui/x-data-grid-pro'`.", ''].join('\n'));
19
19
  }
@@ -76,6 +76,11 @@ DataGridProRaw.propTypes = {
76
76
  /**
77
77
  * If `true`, the Data Grid height is dynamic and follows the number of rows in the Data Grid.
78
78
  * @default false
79
+ * @deprecated Use flex parent container instead: https://mui.com/x/react-data-grid/layout/#flex-parent-container
80
+ * @example
81
+ * <div style={{ display: 'flex', flexDirection: 'column' }}>
82
+ * <DataGrid />
83
+ * </div>
79
84
  */
80
85
  autoHeight: PropTypes.bool,
81
86
  /**
@@ -364,7 +369,7 @@ DataGridProRaw.propTypes = {
364
369
  */
365
370
  headerFilterHeight: PropTypes.number,
366
371
  /**
367
- * If `true`, enables the data grid filtering on header feature.
372
+ * If `true`, the header filters feature is enabled.
368
373
  * @default false
369
374
  */
370
375
  headerFilters: PropTypes.bool,
@@ -530,6 +535,12 @@ DataGridProRaw.propTypes = {
530
535
  * @param {GridCallbackDetails} details Additional details for this callback.
531
536
  */
532
537
  onColumnHeaderClick: PropTypes.func,
538
+ /**
539
+ * Callback fired when a contextmenu event comes from a column header element.
540
+ * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].
541
+ * @param {MuiEvent<React.MouseEvent>} event The event object.
542
+ */
543
+ onColumnHeaderContextMenu: PropTypes.func,
533
544
  /**
534
545
  * Callback fired when a double click event comes from a column header element.
535
546
  * @param {GridColumnHeaderParams} params With all properties from [[GridColumnHeaderParams]].
@@ -795,6 +806,7 @@ DataGridProRaw.propTypes = {
795
806
  * @template R
796
807
  * @param {R} newRow Row object with the new values.
797
808
  * @param {R} oldRow Row object with the old values.
809
+ * @param {{ rowId: GridRowId }} params Additional parameters.
798
810
  * @returns {Promise<R> | R} The final values to update the row.
799
811
  */
800
812
  processRowUpdate: PropTypes.func,
@@ -849,6 +861,22 @@ DataGridProRaw.propTypes = {
849
861
  * Sets the row selection model of the Data Grid.
850
862
  */
851
863
  rowSelectionModel: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired), PropTypes.number, PropTypes.string]),
864
+ /**
865
+ * When `rowSelectionPropagation.descendants` is set to `true`.
866
+ * - Selecting a parent selects all its filtered descendants automatically.
867
+ * - Deselecting a parent row deselects all its filtered descendants automatically.
868
+ *
869
+ * When `rowSelectionPropagation.parents` is set to `true`
870
+ * - Selecting all the filtered descendants of a parent selects the parent automatically.
871
+ * - Deselecting a descendant of a selected parent deselects the parent automatically.
872
+ *
873
+ * Works with tree data and row grouping on the client-side only.
874
+ * @default { parents: false, descendants: false }
875
+ */
876
+ rowSelectionPropagation: PropTypes.shape({
877
+ descendants: PropTypes.bool,
878
+ parents: PropTypes.bool
879
+ }),
852
880
  /**
853
881
  * Loading rows can be processed on the server or client-side.
854
882
  * Set it to 'client' if you would like enable infnite loading.
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { useThemeProps } from '@mui/material/styles';
4
4
  import { GRID_DEFAULT_LOCALE_TEXT, DATA_GRID_PROPS_DEFAULT_VALUES } from '@mui/x-data-grid';
5
- import { computeSlots, useProps } from '@mui/x-data-grid/internals';
5
+ import { computeSlots, useProps, ROW_SELECTION_PROPAGATION_DEFAULT } from '@mui/x-data-grid/internals';
6
6
  import { DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS } from "../constants/dataGridProDefaultSlotsComponents.js";
7
7
  const getDataGridProForcedProps = themedProps => _extends({
8
8
  signature: 'DataGridPro'
@@ -25,6 +25,7 @@ export const DATA_GRID_PRO_PROPS_DEFAULT_VALUES = _extends({}, DATA_GRID_PROPS_D
25
25
  getDetailPanelHeight: () => 500,
26
26
  headerFilters: false,
27
27
  keepColumnPositionIfDraggedOutside: false,
28
+ rowSelectionPropagation: ROW_SELECTION_PROPAGATION_DEFAULT,
28
29
  rowReordering: false,
29
30
  rowsLoadingMode: 'client',
30
31
  scrollEndThreshold: 80,
@@ -206,6 +206,11 @@ export const useGridColumnReorder = (apiRef, props) => {
206
206
  // For more information check here https://github.com/mui/mui-x/issues/2680.
207
207
  event.stopPropagation();
208
208
  clearTimeout(removeDnDStylesTimeout.current);
209
+
210
+ // For more information check here https://github.com/mui/mui-x/issues/14678
211
+ if (dragColNode.current.classList.contains(classes.columnHeaderDragging)) {
212
+ dragColNode.current.classList.remove(classes.columnHeaderDragging);
213
+ }
209
214
  dragColNode.current = null;
210
215
 
211
216
  // Check if the column was dropped outside the grid.
@@ -228,7 +233,7 @@ export const useGridColumnReorder = (apiRef, props) => {
228
233
  })
229
234
  }));
230
235
  apiRef.current.forceUpdate();
231
- }, [props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, apiRef]);
236
+ }, [apiRef, props.disableColumnReorder, props.keepColumnPositionIfDraggedOutside, logger, classes.columnHeaderDragging]);
232
237
  useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleDragStart);
233
238
  useGridApiEventHandler(apiRef, 'columnHeaderDragEnter', handleDragEnter);
234
239
  useGridApiEventHandler(apiRef, 'columnHeaderDragOver', handleDragOver);
@@ -128,9 +128,9 @@ export const useGridDataSource = (apiRef, props) => {
128
128
  apiRef.current.updateServerRows(getRowsResponse.rows, rowNode.path);
129
129
  apiRef.current.setRowChildrenExpansion(id, true);
130
130
  } catch (error) {
131
- const e = error;
132
- apiRef.current.unstable_dataSource.setChildrenFetchError(id, e);
133
- onError?.(e, fetchParams);
131
+ const childrenFetchError = error;
132
+ apiRef.current.unstable_dataSource.setChildrenFetchError(id, childrenFetchError);
133
+ onError?.(childrenFetchError, fetchParams);
134
134
  } finally {
135
135
  apiRef.current.unstable_dataSource.setChildrenLoading(id, false);
136
136
  nestedDataManager.setRequestSettled(id);
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useGridSelector, useGridApiOptionHandler, gridVisibleColumnDefinitionsSelector, useGridApiMethod, gridDimensionsSelector } from '@mui/x-data-grid';
3
- import { useGridVisibleRows } from '@mui/x-data-grid/internals';
3
+ import { useGridVisibleRows, useTimeout } from '@mui/x-data-grid/internals';
4
4
  import useEventCallback from '@mui/utils/useEventCallback';
5
5
  import { styled } from '@mui/system';
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -20,6 +20,7 @@ export const useGridInfiniteLoader = (apiRef, props) => {
20
20
  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
21
21
  const currentPage = useGridVisibleRows(apiRef, props);
22
22
  const observer = React.useRef();
23
+ const updateTargetTimeout = useTimeout();
23
24
  const triggerElement = React.useRef(null);
24
25
  const isEnabled = props.rowsLoadingMode === 'client' && !!props.onRowsScrollEnd;
25
26
  const handleLoadMoreRows = useEventCallback(([entry]) => {
@@ -58,11 +59,7 @@ export const useGridInfiniteLoader = (apiRef, props) => {
58
59
  observer.current.observe(triggerElement.current);
59
60
  }
60
61
  }, [virtualScroller, handleLoadMoreRows, isEnabled, marginBottom]);
61
- const triggerRef = React.useCallback(node => {
62
- // Prevent the infite loading working in combination with lazy loading
63
- if (!isEnabled) {
64
- return;
65
- }
62
+ const updateTarget = node => {
66
63
  if (triggerElement.current !== node) {
67
64
  observer.current?.disconnect();
68
65
  triggerElement.current = node;
@@ -70,7 +67,23 @@ export const useGridInfiniteLoader = (apiRef, props) => {
70
67
  observer.current?.observe(triggerElement.current);
71
68
  }
72
69
  }
73
- }, [isEnabled]);
70
+ };
71
+ const triggerRef = React.useCallback(node => {
72
+ // Prevent the infite loading working in combination with lazy loading
73
+ if (!isEnabled) {
74
+ return;
75
+ }
76
+
77
+ // If the user scrolls through the grid too fast it might happen that the observer is connected to the trigger element
78
+ // that will be intersecting the root inside the same render cycle (but not intersecting at the time of the connection).
79
+ // This will cause the observer to not call the callback with `isIntersecting` set to `true`.
80
+ // https://www.w3.org/TR/intersection-observer/#event-loop
81
+ // Delaying the connection to the next cycle helps since the observer will always call the callback the first time it is connected.
82
+ // https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/observe
83
+ // Related to
84
+ // https://github.com/mui/mui-x/issues/14116
85
+ updateTargetTimeout.start(0, () => updateTarget(node));
86
+ }, [isEnabled, updateTargetTimeout]);
74
87
  const getInfiniteLoadingTriggerElement = React.useCallback(({
75
88
  lastRowId
76
89
  }) => {
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-pro v7.18.0
2
+ * @mui/x-data-grid-pro v7.20.0
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -7,9 +7,9 @@ export { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
7
7
  */
8
8
 
9
9
  /**
10
- * The state of `DataGridPro`.
10
+ * The state of Data Grid Pro.
11
11
  */
12
12
 
13
13
  /**
14
- * The initial state of `DataGridPro`.
14
+ * The initial state of Data Grid Pro.
15
15
  */
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTcyNjc4NjgwMDAwMA==";
3
+ const releaseInfo = "MTcyODU5NzYwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid-pro",
3
- "version": "7.18.0",
3
+ "version": "7.20.0",
4
4
  "description": "The Pro plan edition of the Data Grid components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./index.js",
@@ -33,15 +33,15 @@
33
33
  "directory": "packages/x-data-grid-pro"
34
34
  },
35
35
  "dependencies": {
36
- "@babel/runtime": "^7.25.6",
37
- "@mui/utils": "^5.16.6",
36
+ "@babel/runtime": "^7.25.7",
37
+ "@mui/utils": "^5.16.6 || ^6.0.0",
38
38
  "@types/format-util": "^1.0.4",
39
39
  "clsx": "^2.1.1",
40
40
  "prop-types": "^15.8.1",
41
41
  "reselect": "^5.1.1",
42
- "@mui/x-data-grid": "7.18.0",
43
- "@mui/x-internals": "7.18.0",
44
- "@mui/x-license": "7.18.0"
42
+ "@mui/x-data-grid": "7.20.0",
43
+ "@mui/x-internals": "7.20.0",
44
+ "@mui/x-license": "7.20.0"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@emotion/react": "^11.9.0",
@@ -8,10 +8,10 @@ export { useGridRootProps } from '../hooks/utils/useGridRootProps';
8
8
  */
9
9
  export type GridApi = GridApiPro;
10
10
  /**
11
- * The state of `DataGridPro`.
11
+ * The state of Data Grid Pro.
12
12
  */
13
13
  export type GridState = GridStatePro;
14
14
  /**
15
- * The initial state of `DataGridPro`.
15
+ * The initial state of Data Grid Pro.
16
16
  */
17
17
  export type GridInitialState = GridInitialStatePro;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getReleaseInfo = void 0;
7
7
  var _utils = require("@mui/utils");
8
8
  const getReleaseInfo = () => {
9
- const releaseInfo = "MTcyNjc4NjgwMDAwMA==";
9
+ const releaseInfo = "MTcyODU5NzYwMDAwMA==";
10
10
  if (process.env.NODE_ENV !== 'production') {
11
11
  // A simple hack to set the value in the test environment (has no build step).
12
12
  // eslint-disable-next-line no-useless-concat