@mui/x-data-grid-premium 5.14.0 → 5.15.2

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 (75) hide show
  1. package/CHANGELOG.md +147 -5
  2. package/DataGridPremium/DataGridPremium.js +54 -45
  3. package/DataGridPremium/useDataGridPremiumComponent.js +4 -1
  4. package/DataGridPremium/useDataGridPremiumProps.js +6 -6
  5. package/components/GridAggregationColumnMenuItem.js +4 -4
  6. package/hooks/features/aggregation/createAggregationLookup.d.ts +2 -2
  7. package/hooks/features/aggregation/gridAggregationFunctions.d.ts +1 -1
  8. package/hooks/features/aggregation/gridAggregationFunctions.js +1 -1
  9. package/hooks/features/aggregation/gridAggregationInterfaces.d.ts +1 -2
  10. package/hooks/features/aggregation/gridAggregationSelectors.d.ts +1 -1
  11. package/hooks/features/aggregation/gridAggregationSelectors.js +3 -4
  12. package/hooks/features/aggregation/gridAggregationUtils.d.ts +5 -4
  13. package/hooks/features/aggregation/gridAggregationUtils.js +27 -16
  14. package/hooks/features/aggregation/index.d.ts +1 -1
  15. package/hooks/features/aggregation/index.js +1 -1
  16. package/hooks/features/aggregation/useGridAggregation.d.ts +2 -2
  17. package/hooks/features/aggregation/useGridAggregation.js +17 -17
  18. package/hooks/features/aggregation/useGridAggregationPreProcessors.d.ts +1 -1
  19. package/hooks/features/aggregation/useGridAggregationPreProcessors.js +17 -16
  20. package/hooks/features/rowGrouping/createGroupingColDef.js +0 -10
  21. package/hooks/features/rowGrouping/gridRowGroupingUtils.d.ts +2 -1
  22. package/hooks/features/rowGrouping/gridRowGroupingUtils.js +30 -21
  23. package/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +2 -1
  24. package/index.js +1 -1
  25. package/legacy/DataGridPremium/DataGridPremium.js +54 -45
  26. package/legacy/DataGridPremium/useDataGridPremiumComponent.js +4 -1
  27. package/legacy/DataGridPremium/useDataGridPremiumProps.js +6 -6
  28. package/legacy/components/GridAggregationColumnMenuItem.js +4 -4
  29. package/legacy/hooks/features/aggregation/gridAggregationFunctions.js +1 -1
  30. package/legacy/hooks/features/aggregation/gridAggregationSelectors.js +4 -5
  31. package/legacy/hooks/features/aggregation/gridAggregationUtils.js +27 -16
  32. package/legacy/hooks/features/aggregation/index.js +1 -1
  33. package/legacy/hooks/features/aggregation/useGridAggregation.js +17 -17
  34. package/legacy/hooks/features/aggregation/useGridAggregationPreProcessors.js +17 -16
  35. package/legacy/hooks/features/rowGrouping/createGroupingColDef.js +0 -10
  36. package/legacy/hooks/features/rowGrouping/gridRowGroupingUtils.js +35 -21
  37. package/legacy/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +2 -1
  38. package/legacy/index.js +1 -1
  39. package/legacy/utils/releaseInfo.js +1 -1
  40. package/models/dataGridPremiumProps.d.ts +7 -13
  41. package/models/gridApiPremium.d.ts +2 -2
  42. package/models/gridStatePremium.d.ts +2 -2
  43. package/modern/DataGridPremium/DataGridPremium.js +54 -45
  44. package/modern/DataGridPremium/useDataGridPremiumComponent.js +4 -1
  45. package/modern/DataGridPremium/useDataGridPremiumProps.js +6 -6
  46. package/modern/components/GridAggregationColumnMenuItem.js +4 -4
  47. package/modern/hooks/features/aggregation/gridAggregationFunctions.js +1 -1
  48. package/modern/hooks/features/aggregation/gridAggregationSelectors.js +3 -4
  49. package/modern/hooks/features/aggregation/gridAggregationUtils.js +27 -16
  50. package/modern/hooks/features/aggregation/index.js +1 -1
  51. package/modern/hooks/features/aggregation/useGridAggregation.js +16 -16
  52. package/modern/hooks/features/aggregation/useGridAggregationPreProcessors.js +17 -16
  53. package/modern/hooks/features/rowGrouping/createGroupingColDef.js +0 -10
  54. package/modern/hooks/features/rowGrouping/gridRowGroupingUtils.js +27 -20
  55. package/modern/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +2 -1
  56. package/modern/index.js +1 -1
  57. package/modern/utils/releaseInfo.js +1 -1
  58. package/node/DataGridPremium/DataGridPremium.js +54 -45
  59. package/node/DataGridPremium/useDataGridPremiumComponent.js +3 -0
  60. package/node/DataGridPremium/useDataGridPremiumProps.js +5 -5
  61. package/node/components/GridAggregationColumnMenuItem.js +4 -4
  62. package/node/hooks/features/aggregation/gridAggregationFunctions.js +3 -3
  63. package/node/hooks/features/aggregation/gridAggregationSelectors.js +5 -6
  64. package/node/hooks/features/aggregation/gridAggregationUtils.js +29 -18
  65. package/node/hooks/features/aggregation/index.js +6 -6
  66. package/node/hooks/features/aggregation/useGridAggregation.js +17 -17
  67. package/node/hooks/features/aggregation/useGridAggregationPreProcessors.js +17 -16
  68. package/node/hooks/features/rowGrouping/createGroupingColDef.js +0 -10
  69. package/node/hooks/features/rowGrouping/gridRowGroupingUtils.js +31 -21
  70. package/node/hooks/features/rowGrouping/useGridRowGroupingPreProcessors.js +2 -1
  71. package/node/index.js +1 -1
  72. package/node/utils/releaseInfo.js +1 -1
  73. package/package.json +4 -4
  74. package/typeOverloads/modules.d.ts +2 -2
  75. package/utils/releaseInfo.js +1 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,148 @@
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
+ ## 5.15.2
7
+
8
+ _Aug 11, 2022_
9
+
10
+ We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - ✨ Improve quick filtering with row grouping (#5701) @alexfauquette
13
+ - 📚 Documentation improvements
14
+ - 🐞 Bugfixes
15
+
16
+ ### `@mui/x-data-grid@5.15.2` / `@mui/x-data-grid-pro@5.15.2` / `@mui/x-data-grid-premium@5.15.2`
17
+
18
+ #### Changes
19
+
20
+ - [DataGrid] Catch errors if rows freezing is not supported (#5711) @cherniavskii
21
+ - [DataGrid] Preserve cell mode when entering edit mode while commiting (#5686) @m4theushw
22
+ - [DataGridPremium] Let quick filter search in row grouping children (#5701) @alexfauquette
23
+
24
+ ### `@mui/x-date-pickers@v5.0.0-beta.5` / `@mui/x-date-picker-pro@5.0.0-beta.5`
25
+
26
+ #### Changes
27
+
28
+ - [pickers] Add `react-dom` to peerDependencies (#5752) @cherniavskii
29
+ - [TimePicker] Set clock focus outline to `none` (#5758) @LukasTy
30
+ - [pickers] Fix theme augmentation with TypeScript (#5596) @alexfauquette
31
+ - [pickers] Reset input value when locale is modified (#5310) @alexfauquette
32
+ - [pickers] Support `disableHighlightToday` on `MonthPicker` and `YearPicker` (#5562) @flaviendelangle
33
+ - [pickers] Fallback to desktop mode when `matchMedia` is unavailable (#5684) @LukasTy
34
+ - [pickers] Trigger `onChange` when clearing or accepting `Invalid date` (#5740) @LukasTy
35
+
36
+ ### Docs
37
+
38
+ - [docs] Add RFC GH issue template (#5739) @bytasv
39
+ - [docs] Add description to the `GridExportStateParams` page (#5654) @oliviertassinari
40
+ - [docs] Improve the Events page (#5413) @flaviendelangle
41
+ - [docs] Use new editing API in the introduction demos (#5728) @oliviertassinari
42
+
43
+ ### Core
44
+
45
+ - [core] Remove duplicated `FUNDING.yml` file (#5656) @oliviertassinari
46
+ - [core] Remove outdated Next.js options (#5727) @oliviertassinari
47
+ - [core] Update tooling to run with React 18 (#4155) @m4theushw
48
+ - [test] Fix failing dynamic row height tests on Edge (#5707) @m4theushw
49
+
50
+ ## 5.15.1
51
+
52
+ _Aug 4, 2022_
53
+
54
+ We'd like to offer a big thanks to the 10 contributors who made this release possible. Here are some highlights ✨:
55
+
56
+ - 📚 New [page presenting the `apiRef`](https://mui.com/x/react-data-grid/api-object/) (#5273) @flaviendelangle
57
+ - ✨ Better keyboard support for start editing cells (#5511) @oliviertassinari
58
+ - 🌍 Improvements to different locales
59
+ - 🐞 Bugfixes
60
+
61
+ ### `@mui/x-data-grid@v5.15.1` / `@mui/x-data-grid-pro@v5.15.1` / `@mui/x-data-grid-premium@v5.15.1`
62
+
63
+ #### Changes
64
+
65
+ - [DataGrid] Improve start edit UX (#5511) @oliviertassinari
66
+ - [DataGrid] Add `initialOpen` prop to `GridEditSingleSelectCell` to allow overriding initial open state (#5645) @shapaaa
67
+ - [DataGrid] Forward `ref` to root element in `GridEditInputCell` (#5631) @Zenoo
68
+ - [DataGrid] Toggle open state when clicking on buttons in the `GridToolbar` (#5503) @cherniavskii
69
+ - [DataGrid] Improve German (de-DE) locale (#5586) @sebastianfrey
70
+ - [DataGrid] Improve Korean (ko-KR) locale (#5668) @Einere
71
+ - [DataGrid] Complete Italian (it-IT) locale (#5487) @mamodev
72
+
73
+ ### `@mui/x-date-pickers@v5.0.0-beta.4` / `@mui/x-date-picker-pro@5.0.0-beta.4`
74
+
75
+ #### Changes
76
+
77
+ - [DatePicker] Customize day formatter in the calendar (#5373) @alexfauquette
78
+
79
+ ### Docs
80
+
81
+ - [docs] New location for the legal content (#5595) @oliviertassinari
82
+ - [docs] Update description of `maxDateTime` prop (#5639) @jurecuhalev
83
+ - [docs] Add missing `date-fns` dependency when opening Codesandbox demo (#5692) @cherniavskii
84
+
85
+ ### Core
86
+
87
+ - [core] Drop usage of `GRID_EXPERIMENTAL_ENABLED` env variable (#5669) @ar7casper
88
+ - [core] Isolate asset loading under /x/ (#5594) @oliviertassinari
89
+ - [core] Upgrade node to v14 (#4999) @cherniavskii
90
+
91
+ ## 5.15.0
92
+
93
+ _Jul 29, 2022_
94
+
95
+ We'd like to offer a big thanks to the 6 contributors who made this release possible. Here are some highlights ✨:
96
+
97
+ - 🎁 Introduce aggregation (#5592) @flaviendelangle
98
+
99
+ Premium users can now aggregate data in the grid.
100
+ Extract information like sum, average, count, and others with a couple of clicks.
101
+
102
+ https://user-images.githubusercontent.com/45398769/181581503-77cc412e-9d9e-4de1-8bc3-c3bccc54cdaa.mp4
103
+
104
+ To enable this feature, add `experimentalFeatures={{ aggregation: true }}`.
105
+ Aggregation functions are customizable and they combine well with row grouping.
106
+ See the [documentation](https://mui.com/x/react-data-grid/aggregation/) to explore everything it has to offer.
107
+
108
+ - 🚀 Introduce row pinning (#4863) @cherniavskii
109
+
110
+ Pro users can now pin rows on top or bottom of the grid.
111
+
112
+ https://user-images.githubusercontent.com/45398769/181581493-56c733a3-6dd5-4546-bf8d-3f2dff72b14a.mp4
113
+
114
+ To do so, enable the feature with `experimentalFeatures={{ rowPinning: true }}` and provide the pinned rows data to the `pinnedRows` prop.
115
+ For more details, see the [documentation](https://mui.com/x/react-data-grid/row-pinning/).
116
+
117
+ - 🌍 Add simplified Chinese (zh-CN) locale to pickers (#5584) @gamecss
118
+ - 📚 Documentation improvements
119
+
120
+ ### `@mui/x-data-grid@v5.15.0` / `@mui/x-data-grid-pro@v5.15.0` / `@mui/x-data-grid-premium@v5.15.0`
121
+
122
+ #### Changes
123
+
124
+ - [DataGrid] Add prop to keep modifications while processing props (#5309) @m4theushw
125
+ - [DataGrid] Fix container width change on React 18 (#5566) @m4theushw
126
+ - [DataGrid] Fix ellipsis style convention (#5587) @oliviertassinari
127
+ - [DataGridPro] Implement row pinning (#4863) @cherniavskii
128
+ - [DataGridPremium] Make aggregation public (#5592) @cherniavskii
129
+ - [l10n] Improve simplified Chinese (zh-CN) locale (#5584) @gamecss
130
+
131
+ ### `@mui/x-date-pickers@v5.0.0-beta.3` / `@mui/x-date-picker-pro@5.0.0-beta.3`
132
+
133
+ #### Changes
134
+
135
+ - [l10n] Add simplified Chinese (zh-CN) locale (#5584) @gamecss
136
+
137
+ ### Docs
138
+
139
+ - [docs] Split docs page about rows (#5195) @flaviendelangle
140
+ - [docs] Add warning clarifications (#5399) @alexfauquette
141
+ - [docs] Correct slot CSS classes for Pro and Premium components (#5452) @alexfauquette
142
+ - [docs] Fix internal link to `valueParser` (#5450) @alexfauquette
143
+
144
+ ### Core
145
+
146
+ - [core] Upgrade monorepo (#5560) @m4theushw
147
+
6
148
  ## 5.14.0
7
149
 
8
150
  _Jul 21, 2022_
@@ -306,7 +448,7 @@ _May 31, 2022_
306
448
 
307
449
  We'd like to offer a big thanks to the 15 contributors who made this release possible. Here are some highlights ✨:
308
450
 
309
- - 🎁 Introduce support for [dynamic row height](https://mui.com/x/react-data-grid/rows/#dynamic-row-height) (#4859) @m4theushw
451
+ - 🎁 Introduce support for [dynamic row height](https://mui.com/x/react-data-grid/row-height/#dynamic-row-height) (#4859) @m4theushw
310
452
 
311
453
  <img src="https://user-images.githubusercontent.com/42154031/171183167-718d7bcd-ec0f-459e-97fe-0f650abb4a99.gif" width="800">
312
454
 
@@ -623,7 +765,7 @@ _Apr 25, 2022_
623
765
 
624
766
  We'd like to offer a big thanks to the 6 contributors who made this release possible. Here are some highlights ✨:
625
767
 
626
- - 🎁 Introduce [Row reorder](https://mui.com/x/react-data-grid/rows/#row-reorder) (#4034) @DanailH
768
+ - 🎁 Introduce [Row reorder](https://mui.com/x/react-data-grid/row-ordering/) (#4034) @DanailH
627
769
 
628
770
  <img src="https://user-images.githubusercontent.com/5858539/165091263-23472fbb-a989-44b8-849a-d2185adfe13b.gif" width="800">
629
771
 
@@ -887,7 +1029,7 @@ We'd like to offer a big thanks to the 8 contributors who made this release poss
887
1029
  <DataGrid getRowSpacing={() => ({ top: 10, bottom: 10 })} />
888
1030
  ```
889
1031
 
890
- Check the [documentation](https://mui.com/x/react-data-grid/rows/#row-spacing) for more information.
1032
+ Check the [documentation](https://mui.com/x/react-data-grid/row-height/#row-spacing) for more information.
891
1033
 
892
1034
  ### `@mui/x-data-grid@v5.6.1` / `@mui/x-data-grid-pro@v5.6.1`
893
1035
 
@@ -1141,7 +1283,7 @@ _Jan 28, 2022_
1141
1283
 
1142
1284
  A big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
1143
1285
 
1144
- - 🚣 Introduce [variable row height](https://mui.com/x/react-data-grid/rows/#variable-row-height) (#438) @DanailH
1286
+ - 🚣 Introduce [variable row height](https://mui.com/x/react-data-grid/row-height/#variable-row-height) (#438) @DanailH
1145
1287
 
1146
1288
  Allows for setting a row-specific height.
1147
1289
  By default, all rows have the same height, but now you can set the height on a per-row basis.
@@ -3793,7 +3935,7 @@ Big thanks to the 7 contributors who made this release possible. Here are some h
3793
3935
  - 🎁 Add `onRowsScrollEnd` to support infinite loading (#1199) @DanailH
3794
3936
  This is an XGrid feature. Provides the ability to tap into the `onRowsScrollEnd` which is called when the scroll reaches the bottom of the grid viewport allowing developers to load additional data. It can be used with a combination of `scrollBottomThreshold` to control the area in which the `onRowsScrollEnd` is called.
3795
3937
 
3796
- See the documentation for [more details](https://mui.com/x/react-data-grid/rows/#infinite-loading).
3938
+ See the documentation for [more details](https://mui.com/x/react-data-grid/row-updates/#infinite-loading).
3797
3939
 
3798
3940
  - 🕹 Provide the ability to sort by multiple columns using Shift+click (#1203) @dtassone
3799
3941
  - 🇵🇱 Added pl-PL locale (#1117) @LarsKumbier
@@ -42,6 +42,25 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
42
42
  // | To update them edit the TypeScript types and run "yarn proptypes" |
43
43
  // ----------------------------------------------------------------------
44
44
 
45
+ /**
46
+ * Aggregation functions available on the grid.
47
+ * @default GRID_AGGREGATION_FUNCTIONS
48
+ */
49
+ aggregationFunctions: PropTypes.object,
50
+
51
+ /**
52
+ * Set the aggregation model of the grid.
53
+ */
54
+ aggregationModel: PropTypes.object,
55
+
56
+ /**
57
+ * Rows used to generate the aggregated value.
58
+ * If `filtered`, the aggregated values will be generated using only the rows currently passing the filtering process.
59
+ * If `all`, the aggregated values will be generated using all the rows.
60
+ * @default "filtered"
61
+ */
62
+ aggregationRowsScope: PropTypes.oneOf(['all', 'filtered']),
63
+
45
64
  /**
46
65
  * The ref object that allows grid manipulation. Can be instantiated with [[useGridApiRef()]].
47
66
  */
@@ -156,6 +175,12 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
156
175
  */
157
176
  detailPanelExpandedRowIds: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired),
158
177
 
178
+ /**
179
+ * If `true`, aggregation is disabled.
180
+ * @default false
181
+ */
182
+ disableAggregation: PropTypes.bool,
183
+
159
184
  /**
160
185
  * If `true`, the filtering will only be applied to the top level rows when grouping rows with the `treeData` prop.
161
186
  * @default false
@@ -216,6 +241,12 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
216
241
  */
217
242
  disableExtendRowFullWidth: PropTypes.bool,
218
243
 
244
+ /**
245
+ * If `true`, modification to a cell will not be discarded if the mode is changed from "edit" to "view" while processing props.
246
+ * @default false
247
+ */
248
+ disableIgnoreModificationsIfProcessingProps: PropTypes.bool,
249
+
219
250
  /**
220
251
  * If `true`, filtering with multiple columns is disabled.
221
252
  * @default false
@@ -273,9 +304,10 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
273
304
  * 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.
274
305
  */
275
306
  experimentalFeatures: PropTypes.shape({
307
+ aggregation: PropTypes.bool,
276
308
  newEditingApi: PropTypes.bool,
277
309
  preventCommitWhileValidating: PropTypes.bool,
278
- private_aggregation: PropTypes.bool,
310
+ rowPinning: PropTypes.bool,
279
311
  warnIfFocusStateIsNotSynced: PropTypes.bool
280
312
  }),
281
313
 
@@ -307,6 +339,14 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
307
339
  quickFilterValues: PropTypes.array
308
340
  }),
309
341
 
342
+ /**
343
+ * Determines the position of an aggregated value.
344
+ * @param {GridRowTreeNodeConfig | null} groupNode The current group (`null` being the top level group).
345
+ * @returns {GridAggregationPosition | null} Position of the aggregated value (if `null`, the group will not be aggregated).
346
+ * @default `(groupNode) => groupNode == null ? 'footer' : 'inline'`
347
+ */
348
+ getAggregationPosition: PropTypes.func,
349
+
310
350
  /**
311
351
  * Function that applies CSS classes dynamically on cells.
312
352
  * @param {GridCellParams} params With all properties from [[GridCellParams]].
@@ -486,6 +526,13 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
486
526
  */
487
527
  nonce: PropTypes.string,
488
528
 
529
+ /**
530
+ * Callback fired when the row grouping model changes.
531
+ * @param {GridAggregationModel} model The aggregated columns.
532
+ * @param {GridCallbackDetails} details Additional details for this callback.
533
+ */
534
+ onAggregationModelChange: PropTypes.func,
535
+
489
536
  /**
490
537
  * Callback fired when any cell is clicked.
491
538
  * @param {GridCellParams} params With all properties from [[GridCellParams]].
@@ -828,7 +875,7 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
828
875
  * @param {GridState} state The new state.
829
876
  * @param {MuiEvent<{}>} event The event object.
830
877
  * @param {GridCallbackDetails} details Additional details for this callback.
831
- * @internal
878
+ * @ignore - do not document.
832
879
  */
833
880
  onStateChange: PropTypes.func,
834
881
 
@@ -868,50 +915,12 @@ process.env.NODE_ENV !== "production" ? DataGridPremiumRaw.propTypes = {
868
915
  }),
869
916
 
870
917
  /**
871
- * Aggregation functions available on the grid.
872
- * @default GRID_AGGREGATION_FUNCTIONS
873
- * @ignore - do not document.
874
- */
875
- private_aggregationFunctions: PropTypes.object,
876
-
877
- /**
878
- * Set the aggregation model of the grid.
879
- * @ignore - do not document.
880
- */
881
- private_aggregationModel: PropTypes.object,
882
-
883
- /**
884
- * Rows used to generate the aggregated value.
885
- * If `filtered`, the aggregated values will be generated using only the rows currently passing the filtering process.
886
- * If `all`, the aggregated values will be generated using all the rows.
887
- * @default "filtered"
888
- * @ignore - do not document.
889
- */
890
- private_aggregationRowsScope: PropTypes.oneOf(['all', 'filtered']),
891
-
892
- /**
893
- * If `true`, aggregation is disabled.
894
- * @default false
895
- * @ignore - do not document.
918
+ * Rows data to pin on top or bottom.
896
919
  */
897
- private_disableAggregation: PropTypes.bool,
898
-
899
- /**
900
- * Determines the position of an aggregated value.
901
- * @param {GridRowTreeNodeConfig | null} groupNode The current group (`null` being the top level group).
902
- * @returns {GridAggregationPosition | null} Position of the aggregated value (if `null`, the group will not be aggregated).
903
- * @default `(groupNode) => groupNode == null ? 'footer' : 'inline'`
904
- * @ignore - do not document.
905
- */
906
- private_getAggregationPosition: PropTypes.func,
907
-
908
- /**
909
- * Callback fired when the row grouping model changes.
910
- * @param {GridAggregationModel} model The aggregated columns.
911
- * @param {GridCallbackDetails} details Additional details for this callback.
912
- * @ignore - do not document.
913
- */
914
- private_onAggregationModelChange: PropTypes.func,
920
+ pinnedRows: PropTypes.shape({
921
+ bottom: PropTypes.array,
922
+ top: PropTypes.array
923
+ }),
915
924
 
916
925
  /**
917
926
  * Callback called before updating a row with new values in the row and cell editing.
@@ -1,4 +1,4 @@
1
- import { useGridInitialization, useGridInitializeState, useGridClipboard, useGridColumnMenu, useGridColumns, columnsStateInitializer, useGridDensity, useGridCsvExport, useGridPrintExport, useGridFilter, filterStateInitializer, useGridFocus, useGridKeyboardNavigation, useGridPagination, paginationStateInitializer, useGridPreferencesPanel, useGridEditing_new, useGridEditing_old, editingStateInitializer_old, editingStateInitializer_new, useGridRows, useGridRowsPreProcessors, rowsStateInitializer, useGridRowsMeta, useGridParamsApi, useGridSelection, useGridSorting, sortingStateInitializer, useGridScroll, useGridEvents, useGridDimensions, useGridStatePersistence, useGridSelectionPreProcessors, columnMenuStateInitializer, densityStateInitializer, focusStateInitializer, preferencePanelStateInitializer, rowsMetaStateInitializer, selectionStateInitializer, useGridColumnReorder, columnReorderStateInitializer, useGridColumnResize, columnResizeStateInitializer, useGridTreeData, useGridTreeDataPreProcessors, useGridColumnPinning, columnPinningStateInitializer, useGridColumnPinningPreProcessors, useGridDetailPanel, detailPanelStateInitializer, useGridDetailPanelPreProcessors, useGridInfiniteLoader, useGridColumnSpanning, useGridRowReorder, useGridRowReorderPreProcessors } from '@mui/x-data-grid-pro/internals';
1
+ import { useGridInitialization, useGridInitializeState, useGridClipboard, useGridColumnMenu, useGridColumns, columnsStateInitializer, useGridDensity, useGridCsvExport, useGridPrintExport, useGridFilter, filterStateInitializer, useGridFocus, useGridKeyboardNavigation, useGridPagination, paginationStateInitializer, useGridPreferencesPanel, useGridEditing_new, useGridEditing_old, editingStateInitializer_old, editingStateInitializer_new, useGridRows, useGridRowsPreProcessors, rowsStateInitializer, useGridRowsMeta, useGridParamsApi, useGridSelection, useGridSorting, sortingStateInitializer, useGridScroll, useGridEvents, useGridDimensions, useGridStatePersistence, useGridSelectionPreProcessors, columnMenuStateInitializer, densityStateInitializer, focusStateInitializer, preferencePanelStateInitializer, rowsMetaStateInitializer, selectionStateInitializer, useGridColumnReorder, columnReorderStateInitializer, useGridColumnResize, columnResizeStateInitializer, useGridTreeData, useGridTreeDataPreProcessors, useGridColumnPinning, columnPinningStateInitializer, useGridColumnPinningPreProcessors, useGridDetailPanel, detailPanelStateInitializer, useGridDetailPanelPreProcessors, useGridInfiniteLoader, useGridColumnSpanning, useGridRowReorder, useGridRowReorderPreProcessors, useGridRowPinning, useGridRowPinningPreProcessors, rowPinningStateInitializer } from '@mui/x-data-grid-pro/internals';
2
2
  // Premium-only features
3
3
  import { useGridAggregation, aggregationStateInitializer } from '../hooks/features/aggregation/useGridAggregation';
4
4
  import { useGridAggregationPreProcessors } from '../hooks/features/aggregation/useGridAggregationPreProcessors';
@@ -17,6 +17,7 @@ export const useDataGridPremiumComponent = (inputApiRef, props) => {
17
17
  useGridRowReorderPreProcessors(apiRef, props);
18
18
  useGridRowGroupingPreProcessors(apiRef, props);
19
19
  useGridTreeDataPreProcessors(apiRef, props);
20
+ useGridRowPinningPreProcessors(apiRef);
20
21
  useGridAggregationPreProcessors(apiRef, props);
21
22
  useGridDetailPanelPreProcessors(apiRef, props); // The column pinning `hydrateColumns` pre-processor must be after every other `hydrateColumns` pre-processors
22
23
  // Because it changes the order of the columns.
@@ -33,6 +34,7 @@ export const useDataGridPremiumComponent = (inputApiRef, props) => {
33
34
  useGridInitializeState(detailPanelStateInitializer, apiRef, props);
34
35
  useGridInitializeState(columnPinningStateInitializer, apiRef, props);
35
36
  useGridInitializeState(columnsStateInitializer, apiRef, props);
37
+ useGridInitializeState(rowPinningStateInitializer, apiRef, props);
36
38
  useGridInitializeState(rowsStateInitializer, apiRef, props);
37
39
  useGridInitializeState((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.newEditingApi ? editingStateInitializer_new : editingStateInitializer_old, apiRef, props);
38
40
  useGridInitializeState(focusStateInitializer, apiRef, props);
@@ -51,6 +53,7 @@ export const useDataGridPremiumComponent = (inputApiRef, props) => {
51
53
  useGridKeyboardNavigation(apiRef, props);
52
54
  useGridSelection(apiRef, props);
53
55
  useGridColumnPinning(apiRef, props);
56
+ useGridRowPinning(apiRef, props);
54
57
  useGridColumns(apiRef, props);
55
58
  useGridRows(apiRef, props);
56
59
  useGridParamsApi(apiRef);
@@ -2,18 +2,18 @@ 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 { DATA_GRID_PRO_PROPS_DEFAULT_VALUES, DATA_GRID_DEFAULT_SLOTS_COMPONENTS, GRID_DEFAULT_LOCALE_TEXT } from '@mui/x-data-grid-pro';
5
- import { PRIVATE_GRID_AGGREGATION_FUNCTIONS } from '../hooks/features/aggregation';
5
+ import { GRID_AGGREGATION_FUNCTIONS } from '../hooks/features/aggregation';
6
6
  /**
7
7
  * The default values of `DataGridPremiumPropsWithDefaultValue` to inject in the props of DataGridPremium.
8
8
  */
9
9
 
10
10
  export const DATA_GRID_PREMIUM_PROPS_DEFAULT_VALUES = _extends({}, DATA_GRID_PRO_PROPS_DEFAULT_VALUES, {
11
- private_disableAggregation: false,
11
+ disableAggregation: false,
12
12
  disableRowGrouping: false,
13
13
  rowGroupingColumnMode: 'single',
14
- private_aggregationFunctions: PRIVATE_GRID_AGGREGATION_FUNCTIONS,
15
- private_aggregationRowsScope: 'filtered',
16
- private_getAggregationPosition: groupNode => groupNode == null ? 'footer' : 'inline'
14
+ aggregationFunctions: GRID_AGGREGATION_FUNCTIONS,
15
+ aggregationRowsScope: 'filtered',
16
+ getAggregationPosition: groupNode => groupNode == null ? 'footer' : 'inline'
17
17
  });
18
18
  export const useDataGridPremiumProps = inProps => {
19
19
  const themedProps = useThemeProps({
@@ -38,7 +38,7 @@ export const useDataGridPremiumProps = inProps => {
38
38
  var _themedProps$experime;
39
39
 
40
40
  return _extends({}, DATA_GRID_PREMIUM_PROPS_DEFAULT_VALUES, themedProps, {
41
- private_disableAggregation: themedProps.private_disableAggregation || !((_themedProps$experime = themedProps.experimentalFeatures) != null && _themedProps$experime.private_aggregation),
41
+ disableAggregation: themedProps.disableAggregation || !((_themedProps$experime = themedProps.experimentalFeatures) != null && _themedProps$experime.aggregation),
42
42
  localeText,
43
43
  components,
44
44
  signature: 'DataGridPremium'
@@ -34,13 +34,13 @@ export const GridAggregationColumnMenuItem = props => {
34
34
  if (canColumnHaveAggregationFunction({
35
35
  column,
36
36
  aggregationFunctionName,
37
- aggregationFunction: rootProps.private_aggregationFunctions[aggregationFunctionName]
37
+ aggregationFunction: rootProps.aggregationFunctions[aggregationFunctionName]
38
38
  })) {
39
39
  return aggregationFunctionName;
40
40
  }
41
41
 
42
42
  return '';
43
- }, [rootProps.private_aggregationFunctions, aggregationModel, column]);
43
+ }, [rootProps.aggregationFunctions, aggregationModel, column]);
44
44
 
45
45
  const handleAggregationItemChange = event => {
46
46
  const newAggregationItem = event.target.value || undefined;
@@ -52,7 +52,7 @@ export const GridAggregationColumnMenuItem = props => {
52
52
  const newModel = newAggregationItem == null ? otherColumnItems : _extends({}, otherColumnItems, {
53
53
  [column.field]: newAggregationItem
54
54
  });
55
- apiRef.current.private_setAggregationModel(newModel);
55
+ apiRef.current.setAggregationModel(newModel);
56
56
  apiRef.current.hideColumnMenu();
57
57
  };
58
58
 
@@ -83,7 +83,7 @@ export const GridAggregationColumnMenuItem = props => {
83
83
  apiRef,
84
84
  aggregationRule: {
85
85
  aggregationFunctionName: aggFunc,
86
- aggregationFunction: rootProps.private_aggregationFunctions[aggFunc]
86
+ aggregationFunction: rootProps.aggregationFunctions[aggFunc]
87
87
  }
88
88
  })
89
89
  }, aggFunc))]
@@ -5,6 +5,6 @@ import { GridAggregationFunction, GridAggregationLookup } from './gridAggregatio
5
5
  export declare const createAggregationLookup: ({ apiRef, aggregationFunctions, aggregationRowsScope, getAggregationPosition, }: {
6
6
  apiRef: React.MutableRefObject<GridApiPremium>;
7
7
  aggregationFunctions: Record<string, GridAggregationFunction>;
8
- aggregationRowsScope: DataGridPremiumProcessedProps['private_aggregationRowsScope'];
9
- getAggregationPosition: DataGridPremiumProcessedProps['private_getAggregationPosition'];
8
+ aggregationRowsScope: DataGridPremiumProcessedProps['aggregationRowsScope'];
9
+ getAggregationPosition: DataGridPremiumProcessedProps['getAggregationPosition'];
10
10
  }) => GridAggregationLookup;
@@ -1,5 +1,5 @@
1
1
  import { GridAggregationFunction } from './gridAggregationInterfaces';
2
- export declare const PRIVATE_GRID_AGGREGATION_FUNCTIONS: {
2
+ export declare const GRID_AGGREGATION_FUNCTIONS: {
3
3
  sum: GridAggregationFunction<number, number, number>;
4
4
  avg: GridAggregationFunction<number, number, number>;
5
5
  min: GridAggregationFunction<number | Date, number | Date, number | Date>;
@@ -87,7 +87,7 @@ const sizeAgg = {
87
87
  },
88
88
  hasCellUnit: false
89
89
  };
90
- export const PRIVATE_GRID_AGGREGATION_FUNCTIONS = {
90
+ export const GRID_AGGREGATION_FUNCTIONS = {
91
91
  sum: sumAgg,
92
92
  avg: avgAgg,
93
93
  min: minAgg,
@@ -14,9 +14,8 @@ export interface GridAggregationApi {
14
14
  /**
15
15
  * Sets the aggregation model to the one given by `model`.
16
16
  * @param {GridAggregationModel} model The aggregation model.
17
- * @ignore - do not document.
18
17
  */
19
- private_setAggregationModel: (model: GridAggregationModel) => void;
18
+ setAggregationModel: (model: GridAggregationModel) => void;
20
19
  }
21
20
  /**
22
21
  * Grid aggregation function definition interface.
@@ -1,4 +1,4 @@
1
1
  import { GridStatePremium } from '../../../models/gridStatePremium';
2
- export declare const private_gridAggregationStateSelector: (state: GridStatePremium) => import("./gridAggregationInterfaces").GridAggregationState;
2
+ export declare const gridAggregationStateSelector: (state: GridStatePremium) => import("./gridAggregationInterfaces").GridAggregationState;
3
3
  export declare const gridAggregationModelSelector: import("@mui/x-data-grid").OutputSelector<GridStatePremium, import("./gridAggregationInterfaces").GridAggregationModel>;
4
4
  export declare const gridAggregationLookupSelector: import("@mui/x-data-grid").OutputSelector<GridStatePremium, import("./gridAggregationInterfaces").GridAggregationLookup>;
@@ -1,5 +1,4 @@
1
1
  import { createSelector } from '@mui/x-data-grid-pro/internals';
2
- // eslint-disable-next-line @typescript-eslint/naming-convention
3
- export const private_gridAggregationStateSelector = state => state.private_aggregation;
4
- export const gridAggregationModelSelector = createSelector(private_gridAggregationStateSelector, aggregationState => aggregationState.model);
5
- export const gridAggregationLookupSelector = createSelector(private_gridAggregationStateSelector, aggregationState => aggregationState.lookup);
2
+ export const gridAggregationStateSelector = state => state.aggregation;
3
+ export const gridAggregationModelSelector = createSelector(gridAggregationStateSelector, aggregationState => aggregationState.model);
4
+ export const gridAggregationLookupSelector = createSelector(gridAggregationStateSelector, aggregationState => aggregationState.lookup);
@@ -5,8 +5,8 @@ import { GridAggregationFunction, GridAggregationModel, GridAggregationRule, Gri
5
5
  import { GridStatePremium } from '../../../models/gridStatePremium';
6
6
  import { DataGridPremiumProcessedProps } from '../../../models/dataGridPremiumProps';
7
7
  import { GridApiPremium } from '../../../models/gridApiPremium';
8
- export declare const PRIVATE_GRID_AGGREGATION_ROOT_FOOTER_ROW_ID = "auto-generated-group-footer-root";
9
- export declare const private_getAggregationFooterRowIdFromGroupId: (groupId: GridRowId | null) => string;
8
+ export declare const GRID_AGGREGATION_ROOT_FOOTER_ROW_ID = "auto-generated-group-footer-root";
9
+ export declare const getAggregationFooterRowIdFromGroupId: (groupId: GridRowId | null) => string;
10
10
  export declare const canColumnHaveAggregationFunction: ({ column, aggregationFunctionName, aggregationFunction, }: {
11
11
  column: GridColDef | undefined;
12
12
  aggregationFunctionName: string;
@@ -25,10 +25,11 @@ export declare const getAggregationRules: ({ columnsLookup, aggregationModel, ag
25
25
  /**
26
26
  * Add a footer for each group that has at least one column with an aggregated value.
27
27
  */
28
- export declare const addFooterRows: ({ groupingParams, aggregationRules, getAggregationPosition, }: {
28
+ export declare const addFooterRows: ({ groupingParams, aggregationRules, getAggregationPosition, apiRef, }: {
29
29
  groupingParams: GridRowTreeCreationValue;
30
30
  aggregationRules: GridAggregationRules;
31
- getAggregationPosition: DataGridPremiumProcessedProps['private_getAggregationPosition'];
31
+ getAggregationPosition: DataGridPremiumProcessedProps['getAggregationPosition'];
32
+ apiRef: React.MutableRefObject<GridApiPremium>;
32
33
  }) => GridRowTreeCreationValue;
33
34
  /**
34
35
  * Compares two sets of aggregation rules to determine if they are equal or not.
@@ -1,11 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { capitalize } from '@mui/material';
3
- import { isDeepEqual } from '@mui/x-data-grid-pro/internals';
4
- export const PRIVATE_GRID_AGGREGATION_ROOT_FOOTER_ROW_ID = 'auto-generated-group-footer-root'; // eslint-disable-next-line @typescript-eslint/naming-convention
5
-
6
- export const private_getAggregationFooterRowIdFromGroupId = groupId => {
3
+ import { addPinnedRow, isDeepEqual } from '@mui/x-data-grid-pro/internals';
4
+ export const GRID_AGGREGATION_ROOT_FOOTER_ROW_ID = 'auto-generated-group-footer-root';
5
+ export const getAggregationFooterRowIdFromGroupId = groupId => {
7
6
  if (groupId == null) {
8
- return PRIVATE_GRID_AGGREGATION_ROOT_FOOTER_ROW_ID;
7
+ return GRID_AGGREGATION_ROOT_FOOTER_ROW_ID;
9
8
  }
10
9
 
11
10
  return `auto-generated-group-footer-${groupId}`;
@@ -15,7 +14,7 @@ export const canColumnHaveAggregationFunction = ({
15
14
  aggregationFunctionName,
16
15
  aggregationFunction
17
16
  }) => {
18
- if (!column || !column.private_aggregable) {
17
+ if (!column || !column.aggregable) {
19
18
  return false;
20
19
  }
21
20
 
@@ -23,8 +22,8 @@ export const canColumnHaveAggregationFunction = ({
23
22
  return false;
24
23
  }
25
24
 
26
- if (column.private_availableAggregationFunctions != null) {
27
- return column.private_availableAggregationFunctions.includes(aggregationFunctionName);
25
+ if (column.availableAggregationFunctions != null) {
26
+ return column.availableAggregationFunctions.includes(aggregationFunctionName);
28
27
  }
29
28
 
30
29
  if (!aggregationFunction.columnTypes) {
@@ -42,7 +41,7 @@ export const getAvailableAggregationFunctions = ({
42
41
  aggregationFunction: aggregationFunctions[aggregationFunctionName]
43
42
  }));
44
43
  export const mergeStateWithAggregationModel = aggregationModel => state => _extends({}, state, {
45
- private_aggregation: _extends({}, state.private_aggregation, {
44
+ aggregation: _extends({}, state.aggregation, {
46
45
  model: aggregationModel
47
46
  })
48
47
  });
@@ -73,7 +72,8 @@ export const getAggregationRules = ({
73
72
  export const addFooterRows = ({
74
73
  groupingParams,
75
74
  aggregationRules,
76
- getAggregationPosition
75
+ getAggregationPosition,
76
+ apiRef
77
77
  }) => {
78
78
  if (Object.keys(aggregationRules).length === 0) {
79
79
  return groupingParams;
@@ -94,7 +94,7 @@ export const addFooterRows = ({
94
94
  return;
95
95
  }
96
96
 
97
- const footerId = private_getAggregationFooterRowIdFromGroupId(groupId);
97
+ const footerId = getAggregationFooterRowIdFromGroupId(groupId);
98
98
  ids.push(footerId);
99
99
  idRowsLookup[footerId] = {};
100
100
  tree[footerId] = {
@@ -112,9 +112,8 @@ export const addFooterRows = ({
112
112
  footerId
113
113
  });
114
114
  }
115
- };
115
+ }; // If the tree is flat, we don't need to loop through the rows
116
116
 
117
- addGroupFooter(null); // If the tree is flat, we don't need to loop through the rows
118
117
 
119
118
  if (groupingParams.treeDepth > 1) {
120
119
  groupingParams.ids.forEach(parentId => {
@@ -128,11 +127,23 @@ export const addFooterRows = ({
128
127
  });
129
128
  }
130
129
 
131
- return _extends({}, groupingParams, {
132
- ids,
130
+ let newGroupingParams = _extends({}, groupingParams, {
131
+ tree,
133
132
  idRowsLookup,
134
- tree
133
+ ids
135
134
  });
135
+
136
+ if (getAggregationPosition(null) === 'footer') {
137
+ newGroupingParams = addPinnedRow({
138
+ groupingParams: newGroupingParams,
139
+ rowModel: {},
140
+ rowId: getAggregationFooterRowIdFromGroupId(null),
141
+ position: 'bottom',
142
+ apiRef
143
+ });
144
+ }
145
+
146
+ return _extends({}, groupingParams, newGroupingParams);
136
147
  };
137
148
  /**
138
149
  * Compares two sets of aggregation rules to determine if they are equal or not.
@@ -1,4 +1,4 @@
1
1
  export * from './gridAggregationInterfaces';
2
2
  export * from './gridAggregationSelectors';
3
3
  export * from './gridAggregationFunctions';
4
- export { PRIVATE_GRID_AGGREGATION_ROOT_FOOTER_ROW_ID, private_getAggregationFooterRowIdFromGroupId, } from './gridAggregationUtils';
4
+ export { GRID_AGGREGATION_ROOT_FOOTER_ROW_ID, getAggregationFooterRowIdFromGroupId, } from './gridAggregationUtils';
@@ -1,4 +1,4 @@
1
1
  export * from './gridAggregationInterfaces';
2
2
  export * from './gridAggregationSelectors';
3
3
  export * from './gridAggregationFunctions';
4
- export { PRIVATE_GRID_AGGREGATION_ROOT_FOOTER_ROW_ID, private_getAggregationFooterRowIdFromGroupId } from './gridAggregationUtils';
4
+ export { GRID_AGGREGATION_ROOT_FOOTER_ROW_ID, getAggregationFooterRowIdFromGroupId } from './gridAggregationUtils';