@mui/x-data-grid 5.15.1 → 5.16.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 (225) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/DataGrid/DataGrid.js +4 -2
  3. package/DataGrid/useDataGridComponent.js +5 -0
  4. package/README.md +2 -1
  5. package/components/DataGridColumnHeaders.js +4 -3
  6. package/components/ErrorBoundary.d.ts +1 -0
  7. package/components/GridAutoSizer.js +7 -0
  8. package/components/GridRow.js +5 -3
  9. package/components/base/GridBody.js +8 -5
  10. package/components/base/GridOverlays.js +4 -7
  11. package/components/cell/GridActionsCellItem.d.ts +2 -2
  12. package/components/cell/GridEditDateCell.js +1 -1
  13. package/components/cell/GridEditSingleSelectCell.js +9 -1
  14. package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
  15. package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
  16. package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
  17. package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  18. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
  19. package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  20. package/components/containers/GridOverlay.js +7 -1
  21. package/components/containers/GridRoot.js +3 -3
  22. package/components/containers/GridRootStyles.js +14 -2
  23. package/components/menu/GridMenu.d.ts +3 -2
  24. package/components/menu/GridMenu.js +1 -0
  25. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  26. package/components/panel/GridPanel.d.ts +1 -1
  27. package/components/panel/GridPanel.js +1 -0
  28. package/components/panel/filterPanel/GridFilterForm.d.ts +4 -0
  29. package/components/panel/filterPanel/GridFilterForm.js +5 -0
  30. package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +1 -1
  31. package/components/panel/filterPanel/GridFilterPanel.d.ts +4 -0
  32. package/components/panel/filterPanel/GridFilterPanel.js +5 -0
  33. package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
  34. package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
  35. package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
  36. package/constants/gridClasses.d.ts +16 -0
  37. package/constants/gridClasses.js +1 -1
  38. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
  39. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  40. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
  41. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  42. package/hooks/features/columnGrouping/index.d.ts +2 -0
  43. package/hooks/features/columnGrouping/index.js +2 -0
  44. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
  45. package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
  46. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
  47. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  48. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
  49. package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
  50. package/hooks/features/density/densitySelector.d.ts +2 -0
  51. package/hooks/features/density/densitySelector.js +3 -1
  52. package/hooks/features/density/densityState.d.ts +1 -0
  53. package/hooks/features/density/useGridDensity.d.ts +1 -1
  54. package/hooks/features/density/useGridDensity.js +45 -9
  55. package/hooks/features/dimensions/useGridDimensions.js +4 -4
  56. package/hooks/features/editRows/useGridCellEditing.new.js +15 -7
  57. package/hooks/features/editRows/useGridRowEditing.new.js +9 -2
  58. package/hooks/features/export/useGridPrintExport.js +3 -3
  59. package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
  60. package/hooks/features/filter/gridFilterState.d.ts +12 -1
  61. package/hooks/features/filter/gridFilterUtils.d.ts +8 -5
  62. package/hooks/features/filter/gridFilterUtils.js +74 -43
  63. package/hooks/features/filter/useGridFilter.js +16 -3
  64. package/hooks/features/focus/useGridFocus.js +11 -6
  65. package/hooks/features/index.d.ts +1 -0
  66. package/hooks/features/index.js +1 -0
  67. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
  68. package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
  69. package/hooks/features/rows/useGridRows.js +5 -2
  70. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
  71. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
  72. package/hooks/features/statePersistence/gridStatePersistenceInterface.d.ts +3 -0
  73. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  74. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  75. package/hooks/utils/useGridNativeEventListener.js +2 -2
  76. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  77. package/index.js +1 -1
  78. package/internals/index.d.ts +3 -0
  79. package/internals/index.js +3 -0
  80. package/legacy/DataGrid/DataGrid.js +4 -2
  81. package/legacy/DataGrid/useDataGridComponent.js +5 -0
  82. package/legacy/components/DataGridColumnHeaders.js +4 -3
  83. package/legacy/components/GridAutoSizer.js +7 -0
  84. package/legacy/components/GridRow.js +4 -3
  85. package/legacy/components/base/GridBody.js +8 -5
  86. package/legacy/components/base/GridOverlays.js +4 -7
  87. package/legacy/components/cell/GridEditDateCell.js +1 -1
  88. package/legacy/components/cell/GridEditSingleSelectCell.js +9 -1
  89. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  90. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
  91. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  92. package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
  93. package/legacy/components/containers/GridOverlay.js +7 -1
  94. package/legacy/components/containers/GridRoot.js +3 -3
  95. package/legacy/components/containers/GridRootStyles.js +11 -2
  96. package/legacy/components/menu/GridMenu.js +1 -0
  97. package/legacy/components/panel/GridPanel.js +1 -0
  98. package/legacy/components/panel/filterPanel/GridFilterForm.js +5 -0
  99. package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -0
  100. package/legacy/constants/gridClasses.js +1 -1
  101. package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  102. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
  103. package/legacy/hooks/features/columnGrouping/index.js +2 -0
  104. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
  105. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  106. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
  107. package/legacy/hooks/features/density/densitySelector.js +6 -0
  108. package/legacy/hooks/features/density/useGridDensity.js +44 -6
  109. package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
  110. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +16 -8
  111. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +9 -2
  112. package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
  113. package/legacy/hooks/features/filter/gridFilterUtils.js +84 -55
  114. package/legacy/hooks/features/filter/useGridFilter.js +16 -3
  115. package/legacy/hooks/features/focus/useGridFocus.js +11 -6
  116. package/legacy/hooks/features/index.js +1 -0
  117. package/legacy/hooks/features/rows/useGridRows.js +5 -2
  118. package/legacy/hooks/utils/useGridNativeEventListener.js +2 -2
  119. package/legacy/index.js +1 -1
  120. package/legacy/internals/index.js +3 -0
  121. package/legacy/models/api/gridColumnGroupingApi.js +1 -0
  122. package/legacy/models/gridColumnGrouping.js +6 -0
  123. package/legacy/models/index.js +2 -1
  124. package/models/api/gridApiCommon.d.ts +2 -1
  125. package/models/api/gridColumnGroupingApi.d.ts +19 -0
  126. package/models/api/gridColumnGroupingApi.js +1 -0
  127. package/models/api/gridDensityApi.d.ts +2 -1
  128. package/models/colDef/gridColDef.d.ts +15 -1
  129. package/models/gridColumnGrouping.d.ts +67 -0
  130. package/models/gridColumnGrouping.js +6 -0
  131. package/models/gridRows.d.ts +5 -5
  132. package/models/gridStateCommunity.d.ts +2 -1
  133. package/models/index.d.ts +1 -0
  134. package/models/index.js +2 -1
  135. package/models/params/gridMenuParams.d.ts +1 -2
  136. package/models/props/DataGridProps.d.ts +10 -4
  137. package/modern/DataGrid/DataGrid.js +4 -2
  138. package/modern/DataGrid/useDataGridComponent.js +5 -0
  139. package/modern/components/DataGridColumnHeaders.js +4 -3
  140. package/modern/components/GridAutoSizer.js +7 -0
  141. package/modern/components/GridRow.js +5 -3
  142. package/modern/components/base/GridBody.js +8 -5
  143. package/modern/components/base/GridOverlays.js +4 -7
  144. package/modern/components/cell/GridEditDateCell.js +1 -1
  145. package/modern/components/cell/GridEditSingleSelectCell.js +9 -1
  146. package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  147. package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
  148. package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  149. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  150. package/modern/components/containers/GridOverlay.js +7 -1
  151. package/modern/components/containers/GridRoot.js +3 -3
  152. package/modern/components/containers/GridRootStyles.js +14 -2
  153. package/modern/components/menu/GridMenu.js +1 -0
  154. package/modern/components/panel/GridPanel.js +1 -0
  155. package/modern/components/panel/filterPanel/GridFilterForm.js +5 -0
  156. package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -0
  157. package/modern/constants/gridClasses.js +1 -1
  158. package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  159. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  160. package/modern/hooks/features/columnGrouping/index.js +2 -0
  161. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
  162. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
  163. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
  164. package/modern/hooks/features/density/densitySelector.js +3 -1
  165. package/modern/hooks/features/density/useGridDensity.js +37 -9
  166. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
  167. package/modern/hooks/features/editRows/useGridCellEditing.new.js +15 -7
  168. package/modern/hooks/features/editRows/useGridRowEditing.new.js +9 -2
  169. package/modern/hooks/features/export/useGridPrintExport.js +3 -3
  170. package/modern/hooks/features/filter/gridFilterUtils.js +73 -42
  171. package/modern/hooks/features/filter/useGridFilter.js +16 -3
  172. package/modern/hooks/features/focus/useGridFocus.js +11 -6
  173. package/modern/hooks/features/index.js +1 -0
  174. package/modern/hooks/features/rows/useGridRows.js +5 -2
  175. package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
  176. package/modern/index.js +1 -1
  177. package/modern/internals/index.js +3 -0
  178. package/modern/models/api/gridColumnGroupingApi.js +1 -0
  179. package/modern/models/gridColumnGrouping.js +6 -0
  180. package/modern/models/index.js +2 -1
  181. package/node/DataGrid/DataGrid.js +4 -2
  182. package/node/DataGrid/useDataGridComponent.js +7 -0
  183. package/node/components/DataGridColumnHeaders.js +4 -3
  184. package/node/components/GridAutoSizer.js +7 -0
  185. package/node/components/GridRow.js +6 -3
  186. package/node/components/base/GridBody.js +7 -4
  187. package/node/components/base/GridOverlays.js +3 -6
  188. package/node/components/cell/GridEditDateCell.js +1 -1
  189. package/node/components/cell/GridEditSingleSelectCell.js +9 -1
  190. package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
  191. package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
  192. package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  193. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
  194. package/node/components/containers/GridOverlay.js +7 -1
  195. package/node/components/containers/GridRoot.js +4 -4
  196. package/node/components/containers/GridRootStyles.js +14 -2
  197. package/node/components/menu/GridMenu.js +1 -0
  198. package/node/components/panel/GridPanel.js +1 -0
  199. package/node/components/panel/filterPanel/GridFilterForm.js +5 -0
  200. package/node/components/panel/filterPanel/GridFilterPanel.js +5 -0
  201. package/node/constants/gridClasses.js +1 -1
  202. package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
  203. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
  204. package/node/hooks/features/columnGrouping/index.js +18 -0
  205. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
  206. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
  207. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
  208. package/node/hooks/features/density/densitySelector.js +6 -2
  209. package/node/hooks/features/density/useGridDensity.js +48 -9
  210. package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
  211. package/node/hooks/features/editRows/useGridCellEditing.new.js +15 -7
  212. package/node/hooks/features/editRows/useGridRowEditing.new.js +9 -2
  213. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  214. package/node/hooks/features/filter/gridFilterUtils.js +81 -47
  215. package/node/hooks/features/filter/useGridFilter.js +15 -2
  216. package/node/hooks/features/focus/useGridFocus.js +11 -6
  217. package/node/hooks/features/index.js +13 -0
  218. package/node/hooks/features/rows/useGridRows.js +5 -2
  219. package/node/hooks/utils/useGridNativeEventListener.js +2 -2
  220. package/node/index.js +1 -1
  221. package/node/internals/index.js +30 -0
  222. package/node/models/api/gridColumnGroupingApi.js +5 -0
  223. package/node/models/gridColumnGrouping.js +13 -0
  224. package/node/models/index.js +13 -0
  225. package/package.json +3 -3
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.16.0
7
+
8
+ _Aug 25, 2022_
9
+
10
+ We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 🎁 Introduce column grouping for data grid (#5133) @alexfauquette
13
+
14
+ You can now group columns using the `columnGroupingModel` prop. This lets you to display more structured data.
15
+
16
+ <img src="https://user-images.githubusercontent.com/45398769/186178366-4fba66b2-bf90-4c7a-9d83-940a7fc78704.png" width="800" />
17
+
18
+ To enable this feature, add `experimentalFeatures={{ columnGrouping: true }}`.
19
+ The grouping header can be fully customized.
20
+ See the [documentation](https://mui.com/x/react-data-grid/column-groups/) to explore everything it has to offer.
21
+
22
+ - 🐞 Bugfixes
23
+ - 🌏 New locales for pickers thanks to @tesseractjh and @drastus
24
+
25
+ ### `@mui/x-data-grid@v5.16.0` / `@mui/x-data-grid-pro@v5.16.0` / `@mui/x-data-grid-premium@v5.16.0`
26
+
27
+ #### Changes
28
+
29
+ - [DataGrid] Implement column grouping (#5133) @alexfauquette
30
+ - [DataGrid] Handle `disableVirtualization` prop change (#5889) @cherniavskii
31
+ - [DataGrid] Improve `GridRowModel` typing (#5734) @cherniavskii
32
+ - [DataGrid] Update deprecation note for `GridColDef` `hide` property (#5886) @cherniavskii
33
+
34
+ ### `@mui/x-date-pickers@v5.0.0-beta.7` / `@mui/x-date-pickers-pro@v5.0.0-beta.7`
35
+
36
+ #### Changes
37
+
38
+ - [DatePicker] Fix to pass down `className` prop provided on DatePicker to `renderInput` (#5471) @CruseCtrl
39
+ - [DatePicker] Improve `a11y` support (#5809) @LukasTy
40
+ - [pickers] Add `PaperContent` component slot (#5801) @LukasTy
41
+ - [pickers] Add a breaking change section in the migration guide (#5805) @alexfauquette
42
+ - [pickers] Add new translations to `localeText` (#5143) @alexfauquette
43
+ - [pickers] Document components slots (#4657) @flaviendelangle
44
+ - [pickers] Add new unstable field components (#5504) @flaviendelangle
45
+ - [pickers] Fallback to default `minDate` / `maxDate` when `null` value is passed (#5397) @flaviendelangle
46
+ - [l10n] Add Korean (ko-KR) locale (#5854) @tesseractjh
47
+ - [l10n] Add Polish (pl-PL) locale (#5833) @drastus
48
+
49
+ ### Docs
50
+
51
+ - [docs] Fix typo in `migration from lab` (#5277) @chuckwired
52
+ - [docs] Use `dayjs` instead of `date-fns` in doc examples (#5481) @flaviendelangle
53
+
54
+ ### Core
55
+
56
+ - [core] Clarify the scope of the license key used for tests and documentation (#5824) @oliviertassinari
57
+ - [core] Fix Typescript error on field hooks (#5892) @flaviendelangle
58
+ - [core] Memoize `columns` in `useDemoData` hook (#5848) @cherniavskii
59
+ - [core] Remove Firefox from the BrowserStack list (#5874) @DanailH
60
+ - [core] Small changes to the release script (#5840) @m4theushw
61
+
62
+ ## 5.15.3
63
+
64
+ _Aug 18, 2022_
65
+
66
+ We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
67
+
68
+ - 📚 Documentation improvements
69
+ - 🐞 Bugfixes
70
+
71
+ ### `@mui/x-data-grid@v5.15.3` / `@mui/x-data-grid-pro@v5.15.3` / `@mui/x-data-grid-premium@v5.15.3`
72
+
73
+ #### Changes
74
+
75
+ - [DataGrid] Fix <kbd>Enter</kbd> causing Select to re-open when commiting value (#5756) @m4theushw
76
+ - [DataGrid] Fix `GridOverlays` bypassing pointer events (#5674) @philjones88
77
+
78
+ ### `@mui/x-date-pickers@v5.0.0-beta.6` / `@mui/x-date-picker-pro@v5.0.0-beta.6`
79
+
80
+ #### Changes
81
+
82
+ - [DatePicker] Support click on day outside of current month (#5768) @alexfauquette
83
+ - [pickers] Extend `PickersActionBarProps` with `DialogActionProps` (#5798) @LukasTy
84
+
85
+ ### Docs
86
+
87
+ - [docs] Fix API anchor link scroll top (#5795) @oliviertassinari
88
+ - [docs] Fix contradiction in the free trial clause (#5732) @oliviertassinari
89
+ - [docs] Fix default value of the DataGrid `logLevel` prop to false (#5784) @HwangTaehyun
90
+ - [docs] Fix typo on the row height page (#5772) @flaviendelangle
91
+ - [docs] Improve "upgrading plans" documentation. (#5683) @joserodolfofreitas
92
+ - [docs] Link the license docs before pricing (#5726) @oliviertassinari
93
+ - [docs] Update packages README files (#5835) @cherniavskii
94
+ - [docs] Use `InputBase` for pickers inputs (#5597) @cherniavskii
95
+
96
+ ### Core
97
+
98
+ - [core] Upgrade monorepo (#5771, #5797) @cherniavskii
99
+ - [core] Various TS improvements (#5556) @flaviendelangle
100
+ - [license] Give more context in the missing license (#5731) @oliviertassinari
101
+ - [license] Only log an error type once (#5730) @oliviertassinari
102
+ - [test] Increase timeout to take print screenshot (#5799) @m4theushw
103
+
104
+ ## 5.15.2
105
+
106
+ _Aug 11, 2022_
107
+
108
+ We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights ✨:
109
+
110
+ - ✨ Improve quick filtering with row grouping (#5701) @alexfauquette
111
+ - 📚 Documentation improvements
112
+ - 🐞 Bugfixes
113
+
114
+ ### `@mui/x-data-grid@v5.15.2` / `@mui/x-data-grid-pro@v5.15.2` / `@mui/x-data-grid-premium@v5.15.2`
115
+
116
+ #### Changes
117
+
118
+ - [DataGrid] Catch errors if rows freezing is not supported (#5711) @cherniavskii
119
+ - [DataGrid] Preserve cell mode when entering edit mode while commiting (#5686) @m4theushw
120
+ - [DataGridPremium] Let quick filter search in row grouping children (#5701) @alexfauquette
121
+
122
+ ### `@mui/x-date-pickers@v5.0.0-beta.5` / `@mui/x-date-picker-pro@5.0.0-beta.5`
123
+
124
+ #### Changes
125
+
126
+ - [pickers] Add `react-dom` to peerDependencies (#5752) @cherniavskii
127
+ - [TimePicker] Set clock focus outline to `none` (#5758) @LukasTy
128
+ - [pickers] Fix theme augmentation with TypeScript (#5596) @alexfauquette
129
+ - [pickers] Reset input value when locale is modified (#5310) @alexfauquette
130
+ - [pickers] Support `disableHighlightToday` on `MonthPicker` and `YearPicker` (#5562) @flaviendelangle
131
+ - [pickers] Fallback to desktop mode when `matchMedia` is unavailable (#5684) @LukasTy
132
+ - [pickers] Trigger `onChange` when clearing or accepting `Invalid date` (#5740) @LukasTy
133
+
134
+ ### Docs
135
+
136
+ - [docs] Add RFC GH issue template (#5739) @bytasv
137
+ - [docs] Add description to the `GridExportStateParams` page (#5654) @oliviertassinari
138
+ - [docs] Improve the Events page (#5413) @flaviendelangle
139
+ - [docs] Use new editing API in the introduction demos (#5728) @oliviertassinari
140
+
141
+ ### Core
142
+
143
+ - [core] Remove duplicated `FUNDING.yml` file (#5656) @oliviertassinari
144
+ - [core] Remove outdated Next.js options (#5727) @oliviertassinari
145
+ - [core] Update tooling to run with React 18 (#4155) @m4theushw
146
+ - [test] Fix failing dynamic row height tests on Edge (#5707) @m4theushw
147
+
6
148
  ## 5.15.1
7
149
 
8
150
  _Aug 4, 2022_
@@ -79,6 +79,7 @@ DataGridRaw.propTypes = {
79
79
  * @default 3
80
80
  */
81
81
  columnBuffer: PropTypes.number,
82
+ columnGroupingModel: PropTypes.arrayOf(PropTypes.object),
82
83
 
83
84
  /**
84
85
  * Set of columns of type [[GridColumns]].
@@ -194,6 +195,7 @@ DataGridRaw.propTypes = {
194
195
  * 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.
195
196
  */
196
197
  experimentalFeatures: PropTypes.shape({
198
+ columnGrouping: PropTypes.bool,
197
199
  newEditingApi: PropTypes.bool,
198
200
  preventCommitWhileValidating: PropTypes.bool,
199
201
  warnIfFocusStateIsNotSynced: PropTypes.bool
@@ -347,7 +349,7 @@ DataGridRaw.propTypes = {
347
349
 
348
350
  /**
349
351
  * Allows to pass the logging level or false to turn off logging.
350
- * @default "debug"
352
+ * @default "error" ("warn" in dev mode)
351
353
  */
352
354
  logLevel: PropTypes.oneOf(['debug', 'error', 'info', 'warn', false]),
353
355
 
@@ -645,7 +647,7 @@ DataGridRaw.propTypes = {
645
647
  * @param {GridState} state The new state.
646
648
  * @param {MuiEvent<{}>} event The event object.
647
649
  * @param {GridCallbackDetails} details Additional details for this callback.
648
- * @internal
650
+ * @ignore - do not document.
649
651
  */
650
652
  onStateChange: PropTypes.func,
651
653
 
@@ -25,6 +25,8 @@ import { useGridDimensions } from '../hooks/features/dimensions/useGridDimension
25
25
  import { rowsMetaStateInitializer, useGridRowsMeta } from '../hooks/features/rows/useGridRowsMeta';
26
26
  import { useGridStatePersistence } from '../hooks/features/statePersistence/useGridStatePersistence';
27
27
  import { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
28
+ import { useGridColumnGrouping, columnGroupsStateInitializer } from '../hooks/features/columnGrouping/useGridColumnGrouping';
29
+ import { useGridColumnGroupingPreProcessors } from '../hooks/features/columnGrouping/useGridColumnGroupingPreProcessors';
28
30
  export const useDataGridComponent = props => {
29
31
  var _props$experimentalFe, _props$experimentalFe2;
30
32
 
@@ -33,6 +35,7 @@ export const useDataGridComponent = props => {
33
35
  * Register all pre-processors called during state initialization here.
34
36
  */
35
37
 
38
+ useGridColumnGroupingPreProcessors(apiRef, props);
36
39
  useGridSelectionPreProcessors(apiRef, props);
37
40
  useGridRowsPreProcessors(apiRef);
38
41
  /**
@@ -41,6 +44,7 @@ export const useDataGridComponent = props => {
41
44
 
42
45
  useGridInitializeState(selectionStateInitializer, apiRef, props);
43
46
  useGridInitializeState(columnsStateInitializer, apiRef, props);
47
+ useGridInitializeState(columnGroupsStateInitializer, apiRef, props);
44
48
  useGridInitializeState(rowsStateInitializer, apiRef, props);
45
49
  useGridInitializeState((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.newEditingApi ? editingStateInitializer_new : editingStateInitializer_old, apiRef, props);
46
50
  useGridInitializeState(focusStateInitializer, apiRef, props);
@@ -57,6 +61,7 @@ export const useDataGridComponent = props => {
57
61
  useGridRows(apiRef, props);
58
62
  useGridParamsApi(apiRef);
59
63
  useGridColumnSpanning(apiRef);
64
+ useGridColumnGrouping(apiRef, props);
60
65
  const useGridEditing = (_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.newEditingApi ? useGridEditing_new : useGridEditing_old;
61
66
  useGridEditing(apiRef, props);
62
67
  useGridFocus(apiRef, props);
package/README.md CHANGED
@@ -21,7 +21,8 @@ This component has the following peer dependencies that you will need to install
21
21
  "peerDependencies": {
22
22
  "@mui/material": "^5.4.1",
23
23
  "@mui/system": "^5.4.1",
24
- "react": "^17.0.2 || ^18.0.0"
24
+ "react": "^17.0.2 || ^18.0.0",
25
+ "react-dom": "^17.0.2 || ^18.0.0"
25
26
  },
26
27
  ```
27
28
 
@@ -18,7 +18,8 @@ export const DataGridColumnHeaders = /*#__PURE__*/React.forwardRef(function Grid
18
18
  isDragging,
19
19
  getRootProps,
20
20
  getInnerProps,
21
- getColumns
21
+ getColumnHeaders,
22
+ getColumnGroupHeaders
22
23
  } = useGridColumnHeaders({
23
24
  innerRef
24
25
  });
@@ -27,10 +28,10 @@ export const DataGridColumnHeaders = /*#__PURE__*/React.forwardRef(function Grid
27
28
  }, getRootProps(other), {
28
29
  children: [/*#__PURE__*/_jsx(GridScrollArea, {
29
30
  scrollDirection: "left"
30
- }), /*#__PURE__*/_jsx(GridColumnHeadersInner, _extends({
31
+ }), /*#__PURE__*/_jsxs(GridColumnHeadersInner, _extends({
31
32
  isDragging: isDragging
32
33
  }, getInnerProps(), {
33
- children: getColumns()
34
+ children: [getColumnGroupHeaders(), getColumnHeaders()]
34
35
  })), /*#__PURE__*/_jsx(GridScrollArea, {
35
36
  scrollDirection: "right"
36
37
  })]
@@ -8,6 +8,7 @@ export interface ErrorBoundaryProps {
8
8
  api: React.MutableRefObject<GridApiCommunity>;
9
9
  hasError: boolean;
10
10
  componentProps?: any[];
11
+ children?: React.ReactNode;
11
12
  }
12
13
  export declare class ErrorBoundary extends React.Component<ErrorBoundaryProps, any> {
13
14
  static getDerivedStateFromError(error: Error): {
@@ -106,6 +106,13 @@ process.env.NODE_ENV !== "production" ? GridAutoSizer.propTypes = {
106
106
  // | To update them edit the TypeScript types and run "yarn proptypes" |
107
107
  // ----------------------------------------------------------------------
108
108
 
109
+ /**
110
+ * Function responsible for rendering children.
111
+ * @param {AutoSizerSize} size The grid's size.
112
+ * @returns {React.ReactNode} The children to render.
113
+ */
114
+ children: PropTypes.func.isRequired,
115
+
109
116
  /**
110
117
  * Default height to use for initial render; useful for SSR.
111
118
  * @default null
@@ -22,6 +22,7 @@ import { GRID_ACTIONS_COLUMN_TYPE } from '../colDef/gridActionsColDef';
22
22
  import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelToggleField';
23
23
  import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector';
24
24
  import { gridRowTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';
25
+ import { gridDensityHeaderGroupingMaxDepthSelector } from '../hooks/features/density/densitySelector';
25
26
  import { jsx as _jsx } from "react/jsx-runtime";
26
27
  import { jsxs as _jsxs } from "react/jsx-runtime";
27
28
 
@@ -82,8 +83,6 @@ function GridRow(props) {
82
83
  } = props,
83
84
  other = _objectWithoutPropertiesLoose(props, _excluded);
84
85
 
85
- const ariaRowIndex = index + 2; // 1 for the header row and 1 as it's 1-based
86
-
87
86
  const apiRef = useGridApiContext();
88
87
  const ref = React.useRef(null);
89
88
  const rootProps = useGridRootProps();
@@ -91,6 +90,9 @@ function GridRow(props) {
91
90
  const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
92
91
  const sortModel = useGridSelector(apiRef, gridSortModelSelector);
93
92
  const treeDepth = useGridSelector(apiRef, gridRowTreeDepthSelector);
93
+ const headerGroupingMaxDepth = useGridSelector(apiRef, gridDensityHeaderGroupingMaxDepthSelector);
94
+ const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based
95
+
94
96
  const {
95
97
  hasScrollX,
96
98
  hasScrollY
@@ -359,7 +361,7 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
359
361
  isLastVisible: PropTypes.bool,
360
362
  lastColumnToRender: PropTypes.number.isRequired,
361
363
  renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,
362
- row: PropTypes.any.isRequired,
364
+ row: PropTypes.object.isRequired,
363
365
  rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
364
366
  rowId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
365
367
  selected: PropTypes.bool.isRequired,
@@ -6,7 +6,7 @@ import { GridAutoSizer } from '../GridAutoSizer';
6
6
  import { GridOverlays } from './GridOverlays';
7
7
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
8
8
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
9
- import { gridDensityHeaderHeightSelector } from '../../hooks/features/density/densitySelector';
9
+ import { gridDensityTotalHeaderHeightSelector } from '../../hooks/features/density/densitySelector';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
12
 
@@ -18,14 +18,17 @@ function GridBody(props) {
18
18
  } = props;
19
19
  const apiRef = useGridApiContext();
20
20
  const rootProps = useGridRootProps();
21
- const headerHeight = useGridSelector(apiRef, gridDensityHeaderHeightSelector);
21
+ const totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
22
22
  const [isVirtualizationDisabled, setIsVirtualizationDisabled] = React.useState(rootProps.disableVirtualization);
23
23
  const disableVirtualization = React.useCallback(() => {
24
24
  setIsVirtualizationDisabled(true);
25
25
  }, []);
26
26
  const enableVirtualization = React.useCallback(() => {
27
27
  setIsVirtualizationDisabled(false);
28
- }, []); // The `useGridApiMethod` hook can't be used here, because it only installs the
28
+ }, []);
29
+ React.useEffect(() => {
30
+ setIsVirtualizationDisabled(rootProps.disableVirtualization);
31
+ }, [rootProps.disableVirtualization]); // The `useGridApiMethod` hook can't be used here, because it only installs the
29
32
  // method if it doesn't exist yet. Once installed, it's never updated again.
30
33
  // This break the methods above, since their closure comes from the first time
31
34
  // they were installed. Which means that calling `setIsVirtualizationDisabled`
@@ -60,8 +63,8 @@ function GridBody(props) {
60
63
  width: size.width,
61
64
  // If `autoHeight` is on, there will be no height value.
62
65
  // In this case, let the container to grow whatever it needs.
63
- height: size.height ? size.height - headerHeight : 'auto',
64
- marginTop: headerHeight
66
+ height: size.height ? size.height - totalHeaderHeight : 'auto',
67
+ marginTop: totalHeaderHeight
65
68
  };
66
69
  return /*#__PURE__*/_jsx(VirtualScrollerComponent, {
67
70
  ref: windowRef,
@@ -6,7 +6,7 @@ import { gridVisibleRowCountSelector } from '../../hooks/features/filter/gridFil
6
6
  import { gridRowCountSelector, gridRowsLoadingSelector } from '../../hooks/features/rows/gridRowsSelector';
7
7
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
8
8
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
9
- import { gridDensityHeaderHeightSelector } from '../../hooks/features/density/densitySelector';
9
+ import { gridDensityTotalHeaderHeightSelector } from '../../hooks/features/density/densitySelector';
10
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
11
 
12
12
  function GridOverlayWrapper(props) {
@@ -14,7 +14,7 @@ function GridOverlayWrapper(props) {
14
14
 
15
15
  const apiRef = useGridApiContext();
16
16
  const rootProps = useGridRootProps();
17
- const headerHeight = useGridSelector(apiRef, gridDensityHeaderHeightSelector);
17
+ const totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
18
18
  const [viewportInnerSize, setViewportInnerSize] = React.useState(() => {
19
19
  var _apiRef$current$getRo, _apiRef$current$getRo2;
20
20
 
@@ -43,11 +43,8 @@ function GridOverlayWrapper(props) {
43
43
  height,
44
44
  width: (_viewportInnerSize$wi = viewportInnerSize == null ? void 0 : viewportInnerSize.width) != null ? _viewportInnerSize$wi : 0,
45
45
  position: 'absolute',
46
- top: headerHeight,
47
- bottom: height === 'auto' ? 0 : undefined,
48
- zIndex: 4,
49
- // should be above pinned columns, pinned rows and detail panel
50
- pointerEvents: 'none'
46
+ top: totalHeaderHeight,
47
+ bottom: height === 'auto' ? 0 : undefined
51
48
  }
52
49
  }, props));
53
50
  }
@@ -43,7 +43,7 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<(Pick<{
43
43
  touchRippleRef?: React.Ref<import("@mui/material/ButtonBase/TouchRipple").TouchRippleActions> | undefined;
44
44
  }, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>> & {
45
45
  ref?: ((instance: HTMLButtonElement | null) => void) | React.RefObject<HTMLButtonElement> | null | undefined;
46
- }, "color" | "size" | "disabled" | "children" | "action" | "tabIndex" | "sx" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge">, "hidden" | "color" | "size" | "icon" | "translate" | "disabled" | "form" | "label" | "slot" | "title" | "children" | "key" | "action" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "type" | "value" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "showInMenu"> | Pick<{
46
+ }, "color" | "size" | "disabled" | "action" | "tabIndex" | "children" | "sx" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge">, "hidden" | "color" | "size" | "icon" | "translate" | "disabled" | "form" | "label" | "slot" | "title" | "key" | "action" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "type" | "value" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "showInMenu"> | Pick<{
47
47
  label: string;
48
48
  icon?: React.ReactElement<any, string | React.JSXElementConstructor<any>> | undefined;
49
49
  } & {
@@ -75,5 +75,5 @@ declare const GridActionsCellItem: React.ForwardRefExoticComponent<(Pick<{
75
75
  touchRippleRef?: React.Ref<import("@mui/material/ButtonBase/TouchRipple").TouchRippleActions> | undefined;
76
76
  }, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "key" | keyof React.LiHTMLAttributes<HTMLLIElement>> & {
77
77
  ref?: ((instance: HTMLLIElement | null) => void) | React.RefObject<HTMLLIElement> | null | undefined;
78
- }, "dense" | "disabled" | "children" | "action" | "autoFocus" | "tabIndex" | "selected" | "sx" | "disableGutters" | "divider" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef">, "hidden" | "color" | "dense" | "icon" | "translate" | "disabled" | "label" | "slot" | "title" | "children" | "key" | "action" | "autoFocus" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "selected" | "value" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | "disableGutters" | "divider" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "showInMenu">) & React.RefAttributes<HTMLButtonElement>>;
78
+ }, "dense" | "disabled" | "action" | "autoFocus" | "tabIndex" | "selected" | "children" | "sx" | "disableGutters" | "divider" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef">, "hidden" | "color" | "dense" | "icon" | "translate" | "disabled" | "label" | "slot" | "title" | "key" | "action" | "autoFocus" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "selected" | "value" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "sx" | "disableGutters" | "divider" | keyof import("@mui/material/OverridableComponent").CommonProps | "onFocusVisible" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "TouchRippleProps" | "touchRippleRef" | "showInMenu">) & React.RefAttributes<HTMLButtonElement>>;
79
79
  export { GridActionsCellItem };
@@ -81,7 +81,7 @@ function GridEditDateCell(props) {
81
81
  const [date, time] = newFormattedDate.split('T');
82
82
  const [year, month, day] = date.split('-');
83
83
  newParsedDate = new Date();
84
- newParsedDate.setFullYear(year, Number(month) - 1, day);
84
+ newParsedDate.setFullYear(Number(year), Number(month) - 1, Number(day));
85
85
  newParsedDate.setHours(0, 0, 0, 0);
86
86
 
87
87
  if (time) {
@@ -23,6 +23,10 @@ const renderSingleSelectOptions = (option, OptionComponent) => {
23
23
  }, key);
24
24
  };
25
25
 
26
+ function isKeyboardEvent(event) {
27
+ return !!event.key;
28
+ }
29
+
26
30
  function GridEditSingleSelectCell(props) {
27
31
  var _rootProps$components, _baseSelectProps$nati, _rootProps$components2;
28
32
 
@@ -142,7 +146,11 @@ function GridEditSingleSelectCell(props) {
142
146
  }
143
147
  };
144
148
 
145
- const handleOpen = () => {
149
+ const handleOpen = event => {
150
+ if (isKeyboardEvent(event) && event.key === 'Enter') {
151
+ return;
152
+ }
153
+
146
154
  setOpen(true);
147
155
  };
148
156
 
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ interface GridColumnGroupHeaderProps {
3
+ groupId: string | null;
4
+ width: number;
5
+ fields: string[];
6
+ colIndex: number;
7
+ isLastColumn: boolean;
8
+ extendRowFullWidth: boolean;
9
+ depth: number;
10
+ maxDepth: number;
11
+ height: number;
12
+ }
13
+ declare function GridColumnGroupHeader(props: GridColumnGroupHeaderProps): JSX.Element;
14
+ export { GridColumnGroupHeader };
@@ -0,0 +1,122 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { unstable_useId as useId } from '@mui/utils';
4
+ import { unstable_composeClasses as composeClasses } from '@mui/material';
5
+ import { getDataGridUtilityClass } from '../../constants/gridClasses';
6
+ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
7
+ import { gridColumnGroupsLookupSelector } from '../../hooks/features/columnGrouping/gridColumnGroupsSelector';
8
+ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
9
+ import { useGridSelector } from '../../hooks/utils/useGridSelector';
10
+ import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+
13
+ const useUtilityClasses = ownerState => {
14
+ const {
15
+ classes,
16
+ headerAlign,
17
+ isDragging,
18
+ showRightBorder,
19
+ showColumnBorder,
20
+ groupId
21
+ } = ownerState;
22
+ const slots = {
23
+ root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'withBorder', showColumnBorder && 'columnHeader--showColumnBorder', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup'],
24
+ draggableContainer: ['columnHeaderDraggableContainer'],
25
+ titleContainer: ['columnHeaderTitleContainer'],
26
+ titleContainerContent: ['columnHeaderTitleContainerContent']
27
+ };
28
+ return composeClasses(slots, getDataGridUtilityClass, classes);
29
+ };
30
+
31
+ function GridColumnGroupHeader(props) {
32
+ var _apiRef$current$getRo, _columnGroupsLookup$g;
33
+
34
+ const {
35
+ groupId,
36
+ width,
37
+ depth,
38
+ maxDepth,
39
+ fields,
40
+ height,
41
+ colIndex,
42
+ isLastColumn,
43
+ extendRowFullWidth
44
+ } = props;
45
+ const rootProps = useGridRootProps();
46
+ const apiRef = useGridApiContext();
47
+ const columnGroupsLookup = useGridSelector(apiRef, gridColumnGroupsLookupSelector);
48
+ const {
49
+ hasScrollX,
50
+ hasScrollY
51
+ } = (_apiRef$current$getRo = apiRef.current.getRootDimensions()) != null ? _apiRef$current$getRo : {
52
+ hasScrollX: false,
53
+ hasScrollY: false
54
+ };
55
+ const group = groupId ? columnGroupsLookup[groupId] : {};
56
+ const {
57
+ headerName = groupId != null ? groupId : '',
58
+ description = '',
59
+ headerAlign = undefined
60
+ } = group;
61
+ let headerComponent;
62
+ const render = groupId && ((_columnGroupsLookup$g = columnGroupsLookup[groupId]) == null ? void 0 : _columnGroupsLookup$g.renderHeaderGroup);
63
+ const renderParams = {
64
+ groupId,
65
+ headerName,
66
+ description,
67
+ depth,
68
+ maxDepth,
69
+ fields,
70
+ colIndex,
71
+ isLastColumn
72
+ };
73
+
74
+ if (groupId && render) {
75
+ headerComponent = render(renderParams);
76
+ }
77
+
78
+ const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
79
+ const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
80
+ const showColumnBorder = rootProps.showColumnRightBorder;
81
+
82
+ const ownerState = _extends({}, props, {
83
+ classes: rootProps.classes,
84
+ showRightBorder,
85
+ showColumnBorder,
86
+ headerAlign,
87
+ depth,
88
+ isDragging: false
89
+ });
90
+
91
+ const label = headerName != null ? headerName : groupId;
92
+ const id = useId();
93
+ const elementId = groupId === null ? `empty-group-cell-${id}` : groupId;
94
+ const classes = useUtilityClasses(ownerState);
95
+ const headerClassName = typeof group.headerClassName === 'function' ? group.headerClassName(renderParams) : group.headerClassName;
96
+ return /*#__PURE__*/_jsx(GridGenericColumnHeaderItem, {
97
+ classes: classes,
98
+ columnMenuOpen: false,
99
+ colIndex: colIndex,
100
+ height: height,
101
+ isResizing: false,
102
+ sortDirection: null,
103
+ hasFocus: false,
104
+ tabIndex: -1,
105
+ isDraggable: false,
106
+ headerComponent: headerComponent,
107
+ headerClassName: headerClassName,
108
+ description: description,
109
+ elementId: elementId,
110
+ width: width,
111
+ columnMenuIconButton: null,
112
+ columnTitleIconButtons: null,
113
+ resizable: false,
114
+ label: label,
115
+ "aria-colspan": fields.length // The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
116
+ ,
117
+ "data-fields": `|-${fields.join('-|-')}-|`,
118
+ disableHeaderSeparator: true
119
+ });
120
+ }
121
+
122
+ export { GridColumnGroupHeader };