@mui/x-data-grid 5.15.2 → 5.17.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 (286) hide show
  1. package/CHANGELOG.md +177 -2
  2. package/DataGrid/DataGrid.js +3 -1
  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.d.ts +2 -1
  9. package/components/GridRow.js +136 -85
  10. package/components/base/GridBody.js +8 -5
  11. package/components/base/GridOverlays.js +4 -7
  12. package/components/cell/GridActionsCellItem.d.ts +2 -2
  13. package/components/cell/GridBooleanCell.js +2 -1
  14. package/components/cell/GridEditBooleanCell.js +2 -1
  15. package/components/cell/GridEditDateCell.js +3 -2
  16. package/components/cell/GridEditInputCell.js +2 -1
  17. package/components/cell/GridEditSingleSelectCell.js +11 -2
  18. package/components/cell/GridSkeletonCell.d.ts +12 -0
  19. package/components/cell/GridSkeletonCell.js +60 -0
  20. package/components/cell/index.d.ts +1 -0
  21. package/components/cell/index.js +2 -1
  22. package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
  23. package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
  24. package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
  25. package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  26. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
  27. package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  28. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  29. package/components/containers/GridOverlay.js +7 -1
  30. package/components/containers/GridRoot.js +3 -3
  31. package/components/containers/GridRootStyles.js +16 -2
  32. package/components/menu/GridMenu.d.ts +3 -2
  33. package/components/menu/GridMenu.js +1 -0
  34. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  35. package/components/panel/GridColumnsPanel.d.ts +6 -1
  36. package/components/panel/GridColumnsPanel.js +38 -6
  37. package/components/panel/GridPanel.d.ts +1 -1
  38. package/components/panel/GridPanel.js +1 -0
  39. package/components/panel/filterPanel/GridFilterForm.d.ts +4 -0
  40. package/components/panel/filterPanel/GridFilterForm.js +5 -0
  41. package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +1 -1
  42. package/components/panel/filterPanel/GridFilterPanel.d.ts +4 -0
  43. package/components/panel/filterPanel/GridFilterPanel.js +5 -0
  44. package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
  45. package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
  46. package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
  47. package/constants/defaultGridSlotsComponents.js +2 -1
  48. package/constants/gridClasses.d.ts +24 -0
  49. package/constants/gridClasses.js +1 -1
  50. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  51. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
  52. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  53. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
  54. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  55. package/hooks/features/columnGrouping/index.d.ts +2 -0
  56. package/hooks/features/columnGrouping/index.js +2 -0
  57. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
  58. package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
  59. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
  60. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  61. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
  62. package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
  63. package/hooks/features/density/densitySelector.d.ts +2 -0
  64. package/hooks/features/density/densitySelector.js +3 -1
  65. package/hooks/features/density/densityState.d.ts +1 -0
  66. package/hooks/features/density/useGridDensity.d.ts +1 -1
  67. package/hooks/features/density/useGridDensity.js +45 -9
  68. package/hooks/features/dimensions/useGridDimensions.js +4 -4
  69. package/hooks/features/export/useGridPrintExport.js +3 -3
  70. package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
  71. package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
  72. package/hooks/features/filter/gridFilterUtils.js +55 -54
  73. package/hooks/features/filter/useGridFilter.js +1 -1
  74. package/hooks/features/index.d.ts +1 -0
  75. package/hooks/features/index.js +1 -0
  76. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
  77. package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
  78. package/hooks/features/rows/useGridParamsApi.js +1 -1
  79. package/hooks/features/rows/useGridRows.js +65 -8
  80. package/hooks/features/rows/useGridRowsMeta.js +36 -16
  81. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
  82. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
  83. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  84. package/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  85. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  86. package/hooks/utils/useGridNativeEventListener.js +2 -2
  87. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  88. package/index.js +1 -1
  89. package/internals/index.d.ts +2 -0
  90. package/internals/index.js +2 -0
  91. package/legacy/DataGrid/DataGrid.js +3 -1
  92. package/legacy/DataGrid/useDataGridComponent.js +5 -0
  93. package/legacy/components/DataGridColumnHeaders.js +4 -3
  94. package/legacy/components/GridAutoSizer.js +7 -0
  95. package/legacy/components/GridRow.js +138 -85
  96. package/legacy/components/base/GridBody.js +8 -5
  97. package/legacy/components/base/GridOverlays.js +4 -7
  98. package/legacy/components/cell/GridBooleanCell.js +2 -1
  99. package/legacy/components/cell/GridEditBooleanCell.js +2 -1
  100. package/legacy/components/cell/GridEditDateCell.js +3 -2
  101. package/legacy/components/cell/GridEditInputCell.js +2 -1
  102. package/legacy/components/cell/GridEditSingleSelectCell.js +11 -2
  103. package/legacy/components/cell/GridSkeletonCell.js +57 -0
  104. package/legacy/components/cell/index.js +2 -1
  105. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  106. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
  107. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  108. package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
  109. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  110. package/legacy/components/containers/GridOverlay.js +7 -1
  111. package/legacy/components/containers/GridRoot.js +3 -3
  112. package/legacy/components/containers/GridRootStyles.js +14 -5
  113. package/legacy/components/menu/GridMenu.js +1 -0
  114. package/legacy/components/panel/GridColumnsPanel.js +41 -6
  115. package/legacy/components/panel/GridPanel.js +1 -0
  116. package/legacy/components/panel/filterPanel/GridFilterForm.js +5 -0
  117. package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -0
  118. package/legacy/constants/defaultGridSlotsComponents.js +2 -1
  119. package/legacy/constants/gridClasses.js +1 -1
  120. package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  121. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
  122. package/legacy/hooks/features/columnGrouping/index.js +2 -0
  123. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
  124. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
  125. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
  126. package/legacy/hooks/features/density/densitySelector.js +6 -0
  127. package/legacy/hooks/features/density/useGridDensity.js +44 -6
  128. package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
  129. package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
  130. package/legacy/hooks/features/filter/gridFilterUtils.js +61 -56
  131. package/legacy/hooks/features/filter/useGridFilter.js +1 -1
  132. package/legacy/hooks/features/index.js +1 -0
  133. package/legacy/hooks/features/rows/useGridParamsApi.js +1 -1
  134. package/legacy/hooks/features/rows/useGridRows.js +73 -8
  135. package/legacy/hooks/features/rows/useGridRowsMeta.js +45 -18
  136. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +31 -13
  137. package/legacy/hooks/utils/useGridNativeEventListener.js +2 -2
  138. package/legacy/index.js +1 -1
  139. package/legacy/internals/index.js +2 -0
  140. package/legacy/models/api/gridColumnGroupingApi.js +1 -0
  141. package/legacy/models/events/gridEvents.js +2 -0
  142. package/legacy/models/gridColumnGrouping.js +6 -0
  143. package/legacy/models/index.js +2 -1
  144. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  145. package/legacy/models/params/index.js +2 -1
  146. package/legacy/utils/utils.js +18 -0
  147. package/models/api/gridApiCommon.d.ts +2 -1
  148. package/models/api/gridColumnGroupingApi.d.ts +19 -0
  149. package/models/api/gridColumnGroupingApi.js +1 -0
  150. package/models/api/gridDensityApi.d.ts +2 -1
  151. package/models/api/gridParamsApi.d.ts +1 -1
  152. package/models/api/gridRowApi.d.ts +6 -0
  153. package/models/api/gridRowsMetaApi.d.ts +6 -1
  154. package/models/colDef/gridColDef.d.ts +15 -1
  155. package/models/events/gridEventLookup.d.ts +7 -1
  156. package/models/events/gridEvents.d.ts +3 -1
  157. package/models/events/gridEvents.js +2 -0
  158. package/models/gridColumnGrouping.d.ts +67 -0
  159. package/models/gridColumnGrouping.js +6 -0
  160. package/models/gridRows.d.ts +5 -5
  161. package/models/gridSlotsComponent.d.ts +5 -0
  162. package/models/gridStateCommunity.d.ts +2 -1
  163. package/models/index.d.ts +1 -0
  164. package/models/index.js +2 -1
  165. package/models/params/gridCellParams.d.ts +7 -2
  166. package/models/params/gridMenuParams.d.ts +1 -2
  167. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +10 -0
  168. package/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  169. package/models/params/index.d.ts +1 -0
  170. package/models/params/index.js +2 -1
  171. package/models/props/DataGridProps.d.ts +7 -1
  172. package/modern/DataGrid/DataGrid.js +3 -1
  173. package/modern/DataGrid/useDataGridComponent.js +5 -0
  174. package/modern/components/DataGridColumnHeaders.js +4 -3
  175. package/modern/components/GridAutoSizer.js +7 -0
  176. package/modern/components/GridRow.js +133 -84
  177. package/modern/components/base/GridBody.js +8 -5
  178. package/modern/components/base/GridOverlays.js +4 -7
  179. package/modern/components/cell/GridBooleanCell.js +2 -1
  180. package/modern/components/cell/GridEditBooleanCell.js +2 -1
  181. package/modern/components/cell/GridEditDateCell.js +3 -2
  182. package/modern/components/cell/GridEditInputCell.js +2 -1
  183. package/modern/components/cell/GridEditSingleSelectCell.js +11 -2
  184. package/modern/components/cell/GridSkeletonCell.js +60 -0
  185. package/modern/components/cell/index.js +2 -1
  186. package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
  187. package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
  188. package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  189. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
  190. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  191. package/modern/components/containers/GridOverlay.js +7 -1
  192. package/modern/components/containers/GridRoot.js +3 -3
  193. package/modern/components/containers/GridRootStyles.js +16 -2
  194. package/modern/components/menu/GridMenu.js +1 -0
  195. package/modern/components/panel/GridColumnsPanel.js +38 -6
  196. package/modern/components/panel/GridPanel.js +1 -0
  197. package/modern/components/panel/filterPanel/GridFilterForm.js +5 -0
  198. package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -0
  199. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  200. package/modern/constants/gridClasses.js +1 -1
  201. package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
  202. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
  203. package/modern/hooks/features/columnGrouping/index.js +2 -0
  204. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
  205. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
  206. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
  207. package/modern/hooks/features/density/densitySelector.js +3 -1
  208. package/modern/hooks/features/density/useGridDensity.js +37 -9
  209. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
  210. package/modern/hooks/features/export/useGridPrintExport.js +3 -3
  211. package/modern/hooks/features/filter/gridFilterUtils.js +54 -53
  212. package/modern/hooks/features/filter/useGridFilter.js +1 -1
  213. package/modern/hooks/features/index.js +1 -0
  214. package/modern/hooks/features/rows/useGridParamsApi.js +1 -1
  215. package/modern/hooks/features/rows/useGridRows.js +65 -8
  216. package/modern/hooks/features/rows/useGridRowsMeta.js +36 -16
  217. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  218. package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
  219. package/modern/index.js +1 -1
  220. package/modern/internals/index.js +2 -0
  221. package/modern/models/api/gridColumnGroupingApi.js +1 -0
  222. package/modern/models/events/gridEvents.js +2 -0
  223. package/modern/models/gridColumnGrouping.js +6 -0
  224. package/modern/models/index.js +2 -1
  225. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
  226. package/modern/models/params/index.js +2 -1
  227. package/modern/utils/utils.js +16 -0
  228. package/node/DataGrid/DataGrid.js +3 -1
  229. package/node/DataGrid/useDataGridComponent.js +7 -0
  230. package/node/components/DataGridColumnHeaders.js +4 -3
  231. package/node/components/GridAutoSizer.js +7 -0
  232. package/node/components/GridRow.js +136 -77
  233. package/node/components/base/GridBody.js +7 -4
  234. package/node/components/base/GridOverlays.js +3 -6
  235. package/node/components/cell/GridBooleanCell.js +2 -1
  236. package/node/components/cell/GridEditBooleanCell.js +2 -1
  237. package/node/components/cell/GridEditDateCell.js +3 -2
  238. package/node/components/cell/GridEditInputCell.js +2 -1
  239. package/node/components/cell/GridEditSingleSelectCell.js +11 -2
  240. package/node/components/cell/GridSkeletonCell.js +81 -0
  241. package/node/components/cell/index.js +13 -0
  242. package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
  243. package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
  244. package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
  245. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
  246. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
  247. package/node/components/containers/GridOverlay.js +7 -1
  248. package/node/components/containers/GridRoot.js +4 -4
  249. package/node/components/containers/GridRootStyles.js +16 -2
  250. package/node/components/menu/GridMenu.js +1 -0
  251. package/node/components/panel/GridColumnsPanel.js +36 -5
  252. package/node/components/panel/GridPanel.js +1 -0
  253. package/node/components/panel/filterPanel/GridFilterForm.js +5 -0
  254. package/node/components/panel/filterPanel/GridFilterPanel.js +5 -0
  255. package/node/constants/defaultGridSlotsComponents.js +1 -0
  256. package/node/constants/gridClasses.js +1 -1
  257. package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
  258. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
  259. package/node/hooks/features/columnGrouping/index.js +18 -0
  260. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
  261. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
  262. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
  263. package/node/hooks/features/density/densitySelector.js +6 -2
  264. package/node/hooks/features/density/useGridDensity.js +48 -9
  265. package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
  266. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  267. package/node/hooks/features/filter/gridFilterUtils.js +55 -55
  268. package/node/hooks/features/filter/useGridFilter.js +1 -1
  269. package/node/hooks/features/index.js +13 -0
  270. package/node/hooks/features/rows/useGridParamsApi.js +1 -1
  271. package/node/hooks/features/rows/useGridRows.js +60 -7
  272. package/node/hooks/features/rows/useGridRowsMeta.js +35 -15
  273. package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
  274. package/node/hooks/utils/useGridNativeEventListener.js +2 -2
  275. package/node/index.js +1 -1
  276. package/node/internals/index.js +22 -0
  277. package/node/models/api/gridColumnGroupingApi.js +5 -0
  278. package/node/models/events/gridEvents.js +2 -0
  279. package/node/models/gridColumnGrouping.js +13 -0
  280. package/node/models/index.js +13 -0
  281. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +5 -0
  282. package/node/models/params/index.js +13 -0
  283. package/node/utils/utils.js +18 -0
  284. package/package.json +3 -3
  285. package/utils/utils.d.ts +1 -0
  286. package/utils/utils.js +16 -0
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.GridColumnGroupHeader = GridColumnGroupHeader;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var React = _interopRequireWildcard(require("react"));
13
+
14
+ var _utils = require("@mui/utils");
15
+
16
+ var _material = require("@mui/material");
17
+
18
+ var _gridClasses = require("../../constants/gridClasses");
19
+
20
+ var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
21
+
22
+ var _gridColumnGroupsSelector = require("../../hooks/features/columnGrouping/gridColumnGroupsSelector");
23
+
24
+ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
25
+
26
+ var _useGridSelector = require("../../hooks/utils/useGridSelector");
27
+
28
+ var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
29
+
30
+ var _jsxRuntime = require("react/jsx-runtime");
31
+
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+
36
+ const useUtilityClasses = ownerState => {
37
+ const {
38
+ classes,
39
+ headerAlign,
40
+ isDragging,
41
+ showRightBorder,
42
+ showColumnBorder,
43
+ groupId
44
+ } = ownerState;
45
+ const slots = {
46
+ 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'],
47
+ draggableContainer: ['columnHeaderDraggableContainer'],
48
+ titleContainer: ['columnHeaderTitleContainer'],
49
+ titleContainerContent: ['columnHeaderTitleContainerContent']
50
+ };
51
+ return (0, _material.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
52
+ };
53
+
54
+ function GridColumnGroupHeader(props) {
55
+ var _apiRef$current$getRo, _columnGroupsLookup$g;
56
+
57
+ const {
58
+ groupId,
59
+ width,
60
+ depth,
61
+ maxDepth,
62
+ fields,
63
+ height,
64
+ colIndex,
65
+ isLastColumn,
66
+ extendRowFullWidth
67
+ } = props;
68
+ const rootProps = (0, _useGridRootProps.useGridRootProps)();
69
+ const apiRef = (0, _useGridApiContext.useGridApiContext)();
70
+ const columnGroupsLookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridColumnGroupsLookupSelector);
71
+ const {
72
+ hasScrollX,
73
+ hasScrollY
74
+ } = (_apiRef$current$getRo = apiRef.current.getRootDimensions()) != null ? _apiRef$current$getRo : {
75
+ hasScrollX: false,
76
+ hasScrollY: false
77
+ };
78
+ const group = groupId ? columnGroupsLookup[groupId] : {};
79
+ const {
80
+ headerName = groupId != null ? groupId : '',
81
+ description = '',
82
+ headerAlign = undefined
83
+ } = group;
84
+ let headerComponent;
85
+ const render = groupId && ((_columnGroupsLookup$g = columnGroupsLookup[groupId]) == null ? void 0 : _columnGroupsLookup$g.renderHeaderGroup);
86
+ const renderParams = {
87
+ groupId,
88
+ headerName,
89
+ description,
90
+ depth,
91
+ maxDepth,
92
+ fields,
93
+ colIndex,
94
+ isLastColumn
95
+ };
96
+
97
+ if (groupId && render) {
98
+ headerComponent = render(renderParams);
99
+ }
100
+
101
+ const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
102
+ const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
103
+ const showColumnBorder = rootProps.showColumnRightBorder;
104
+ const ownerState = (0, _extends2.default)({}, props, {
105
+ classes: rootProps.classes,
106
+ showRightBorder,
107
+ showColumnBorder,
108
+ headerAlign,
109
+ depth,
110
+ isDragging: false
111
+ });
112
+ const label = headerName != null ? headerName : groupId;
113
+ const id = (0, _utils.unstable_useId)();
114
+ const elementId = groupId === null ? `empty-group-cell-${id}` : groupId;
115
+ const classes = useUtilityClasses(ownerState);
116
+ const headerClassName = typeof group.headerClassName === 'function' ? group.headerClassName(renderParams) : group.headerClassName;
117
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridGenericColumnHeaderItem.GridGenericColumnHeaderItem, {
118
+ classes: classes,
119
+ columnMenuOpen: false,
120
+ colIndex: colIndex,
121
+ height: height,
122
+ isResizing: false,
123
+ sortDirection: null,
124
+ hasFocus: false,
125
+ tabIndex: -1,
126
+ isDraggable: false,
127
+ headerComponent: headerComponent,
128
+ headerClassName: headerClassName,
129
+ description: description,
130
+ elementId: elementId,
131
+ width: width,
132
+ columnMenuIconButton: null,
133
+ columnTitleIconButtons: null,
134
+ resizable: false,
135
+ label: label,
136
+ "aria-colspan": fields.length // The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
137
+ ,
138
+ "data-fields": `|-${fields.join('-|-')}-|`,
139
+ disableHeaderSeparator: true
140
+ });
141
+ }
@@ -13,8 +13,6 @@ var React = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
 
16
- var _clsx = _interopRequireDefault(require("clsx"));
17
-
18
16
  var _material = require("@mui/material");
19
17
 
20
18
  var _utils = require("@mui/material/utils");
@@ -23,10 +21,6 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
23
21
 
24
22
  var _GridColumnHeaderSortIcon = require("./GridColumnHeaderSortIcon");
25
23
 
26
- var _GridColumnHeaderTitle = require("./GridColumnHeaderTitle");
27
-
28
- var _GridColumnHeaderSeparator = require("./GridColumnHeaderSeparator");
29
-
30
24
  var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
31
25
 
32
26
  var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
@@ -35,6 +29,8 @@ var _gridClasses = require("../../constants/gridClasses");
35
29
 
36
30
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
37
31
 
32
+ var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
33
+
38
34
  var _jsxRuntime = require("react/jsx-runtime");
39
35
 
40
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -64,7 +60,7 @@ const useUtilityClasses = ownerState => {
64
60
  };
65
61
 
66
62
  function GridColumnHeaderItem(props) {
67
- var _apiRef$current$getRo, _column$sortingOrder, _rootProps$components, _column$headerName, _rootProps$components2;
63
+ var _apiRef$current$getRo, _rootProps$components, _column$sortingOrder, _rootProps$components2, _column$headerName;
68
64
 
69
65
  const {
70
66
  column,
@@ -97,12 +93,19 @@ function GridColumnHeaderItem(props) {
97
93
  hasScrollY: false
98
94
  };
99
95
  const isDraggable = React.useMemo(() => !rootProps.disableColumnReorder && !disableReorder && !column.disableReorder, [rootProps.disableColumnReorder, disableReorder, column.disableReorder]);
100
- let headerComponent = null;
96
+ let headerComponent;
101
97
 
102
98
  if (column.renderHeader) {
103
99
  headerComponent = column.renderHeader(apiRef.current.getColumnHeaderParams(column.field));
104
100
  }
105
101
 
102
+ const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
103
+ const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
104
+ const ownerState = (0, _extends2.default)({}, props, {
105
+ classes: rootProps.classes,
106
+ showRightBorder
107
+ });
108
+ const classes = useUtilityClasses(ownerState);
106
109
  const publish = React.useCallback(eventName => event => {
107
110
  // Ignore portal
108
111
  // See https://github.com/mui/mui-x/issues/1721
@@ -112,7 +115,7 @@ function GridColumnHeaderItem(props) {
112
115
 
113
116
  apiRef.current.publishEvent(eventName, apiRef.current.getColumnHeaderParams(column.field), event);
114
117
  }, [apiRef, column.field]);
115
- const mouseEventsHandlers = {
118
+ const mouseEventsHandlers = React.useMemo(() => ({
116
119
  onClick: publish('columnHeaderClick'),
117
120
  onDoubleClick: publish('columnHeaderDoubleClick'),
118
121
  onMouseOver: publish('columnHeaderOver'),
@@ -126,27 +129,16 @@ function GridColumnHeaderItem(props) {
126
129
  onKeyDown: publish('columnHeaderKeyDown'),
127
130
  onFocus: publish('columnHeaderFocus'),
128
131
  onBlur: publish('columnHeaderBlur')
129
- };
130
- const draggableEventHandlers = isDraggable ? {
132
+ }), [publish]);
133
+ const draggableEventHandlers = React.useMemo(() => isDraggable ? {
131
134
  onDragStart: publish('columnHeaderDragStart'),
132
135
  onDragEnter: publish('columnHeaderDragEnter'),
133
136
  onDragOver: publish('columnHeaderDragOver'),
134
137
  onDragEnd: publish('columnHeaderDragEnd')
135
- } : null;
136
- const removeLastBorderRight = isLastColumn && hasScrollX && !hasScrollY;
137
- const showRightBorder = !isLastColumn ? rootProps.showColumnRightBorder : !removeLastBorderRight && !extendRowFullWidth;
138
- const ownerState = (0, _extends2.default)({}, props, {
139
- classes: rootProps.classes,
140
- showRightBorder
141
- });
142
- const classes = useUtilityClasses(ownerState);
143
- const width = column.computedWidth;
144
- let ariaSort = 'none';
145
-
146
- if (sortDirection != null) {
147
- ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';
148
- }
149
-
138
+ } : {}, [isDraggable, publish]);
139
+ const columnHeaderSeparatorProps = React.useMemo(() => ({
140
+ onMouseDown: publish('columnSeparatorMouseDown')
141
+ }), [publish]);
150
142
  React.useEffect(() => {
151
143
  if (!showColumnMenuIcon) {
152
144
  setShowColumnMenuIcon(columnMenuOpen);
@@ -162,12 +154,22 @@ function GridColumnHeaderItem(props) {
162
154
  open: showColumnMenuIcon,
163
155
  iconButtonRef: iconButtonRef
164
156
  });
157
+ const columnMenu = /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderMenu.GridColumnHeaderMenu, {
158
+ columnMenuId: columnMenuId,
159
+ columnMenuButtonId: columnMenuButtonId,
160
+ field: column.field,
161
+ open: columnMenuOpen,
162
+ target: iconButtonRef.current,
163
+ ContentComponent: rootProps.components.ColumnMenu,
164
+ contentComponentProps: (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.columnMenu,
165
+ onExited: handleExited
166
+ });
165
167
  const sortingOrder = (_column$sortingOrder = column.sortingOrder) != null ? _column$sortingOrder : rootProps.sortingOrder;
166
168
  const columnTitleIconButtons = /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
167
169
  children: [!rootProps.disableColumnFilter && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.components.ColumnHeaderFilterIconButton, (0, _extends2.default)({
168
170
  field: column.field,
169
171
  counter: filterItemsCounter
170
- }, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.columnHeaderFilterIconButton)), column.sortable && !column.hideSortIcons && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderSortIcon.GridColumnHeaderSortIcon, {
172
+ }, (_rootProps$components2 = rootProps.componentsProps) == null ? void 0 : _rootProps$components2.columnHeaderFilterIconButton)), column.sortable && !column.hideSortIcons && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderSortIcon.GridColumnHeaderSortIcon, {
171
173
  direction: sortDirection,
172
174
  index: sortIndex,
173
175
  sortingOrder: sortingOrder
@@ -188,53 +190,32 @@ function GridColumnHeaderItem(props) {
188
190
  colDef: column
189
191
  }) : column.headerClassName;
190
192
  const label = (_column$headerName = column.headerName) != null ? _column$headerName : column.field;
191
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
193
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridGenericColumnHeaderItem.GridGenericColumnHeaderItem, (0, _extends2.default)({
192
194
  ref: headerCellRef,
193
- className: (0, _clsx.default)(classes.root, headerClassName),
194
- "data-field": column.field,
195
- style: {
196
- width,
197
- minWidth: width,
198
- maxWidth: width
199
- },
200
- role: "columnheader",
195
+ classes: classes,
196
+ columnMenuOpen: columnMenuOpen,
197
+ colIndex: colIndex,
198
+ height: headerHeight,
199
+ isResizing: isResizing,
200
+ sortDirection: sortDirection,
201
+ hasFocus: hasFocus,
201
202
  tabIndex: tabIndex,
202
- "aria-colindex": colIndex + 1,
203
- "aria-sort": ariaSort,
204
- "aria-label": column.renderHeader && headerComponent == null ? label : undefined
205
- }, mouseEventsHandlers, {
206
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
207
- className: classes.draggableContainer,
208
- draggable: isDraggable
209
- }, draggableEventHandlers, {
210
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
211
- className: classes.titleContainer,
212
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
213
- className: classes.titleContainerContent,
214
- children: column.renderHeader ? headerComponent : /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderTitle.GridColumnHeaderTitle, {
215
- label: label,
216
- description: column.description,
217
- columnWidth: width
218
- })
219
- }), columnTitleIconButtons]
220
- }), columnMenuIconButton]
221
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderSeparator.GridColumnHeaderSeparator, {
222
- resizable: !rootProps.disableColumnResize && !!column.resizable,
223
- resizing: isResizing,
224
- height: headerHeight,
225
- onMouseDown: publish('columnSeparatorMouseDown'),
226
- side: separatorSide
227
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderMenu.GridColumnHeaderMenu, {
228
- columnMenuId: columnMenuId,
229
- columnMenuButtonId: columnMenuButtonId,
230
- field: column.field,
231
- open: columnMenuOpen,
232
- target: iconButtonRef.current,
233
- ContentComponent: rootProps.components.ColumnMenu,
234
- contentComponentProps: (_rootProps$components2 = rootProps.componentsProps) == null ? void 0 : _rootProps$components2.columnMenu,
235
- onExited: handleExited
236
- })]
237
- }));
203
+ separatorSide: separatorSide,
204
+ isDraggable: isDraggable,
205
+ headerComponent: headerComponent,
206
+ description: column.description,
207
+ elementId: column.field,
208
+ width: column.computedWidth,
209
+ columnMenuIconButton: columnMenuIconButton,
210
+ columnTitleIconButtons: columnTitleIconButtons,
211
+ headerClassName: headerClassName,
212
+ label: label,
213
+ resizable: !rootProps.disableColumnResize && !!column.resizable,
214
+ "data-field": column.field,
215
+ columnMenu: columnMenu,
216
+ draggableContainerProps: draggableEventHandlers,
217
+ columnHeaderSeparatorProps: columnHeaderSeparatorProps
218
+ }, mouseEventsHandlers));
238
219
  }
239
220
 
240
221
  process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
@@ -53,7 +53,8 @@ const GridColumnHeadersInnerRoot = (0, _styles.styled)('div', {
53
53
  }, styles.columnHeadersInner]
54
54
  })(() => ({
55
55
  display: 'flex',
56
- alignItems: 'center',
56
+ alignItems: 'flex-start',
57
+ flexDirection: 'column',
57
58
  [`&.${_gridClasses.gridClasses.columnHeaderDropZone} .${_gridClasses.gridClasses.columnHeaderDraggableContainer}`]: {
58
59
  cursor: 'move'
59
60
  },
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.GridGenericColumnHeaderItem = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
+
14
+ var React = _interopRequireWildcard(require("react"));
15
+
16
+ var _clsx = _interopRequireDefault(require("clsx"));
17
+
18
+ var _utils = require("@mui/material/utils");
19
+
20
+ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
21
+
22
+ var _GridColumnHeaderTitle = require("./GridColumnHeaderTitle");
23
+
24
+ var _GridColumnHeaderSeparator = require("./GridColumnHeaderSeparator");
25
+
26
+ var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
27
+
28
+ var _jsxRuntime = require("react/jsx-runtime");
29
+
30
+ const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "disableHeaderSeparator"];
31
+
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+
36
+ const GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {
37
+ const {
38
+ classes,
39
+ columnMenuOpen,
40
+ colIndex,
41
+ height,
42
+ isResizing,
43
+ sortDirection,
44
+ hasFocus,
45
+ tabIndex,
46
+ separatorSide,
47
+ isDraggable,
48
+ headerComponent,
49
+ description,
50
+ width,
51
+ columnMenuIconButton = null,
52
+ columnMenu = null,
53
+ columnTitleIconButtons = null,
54
+ headerClassName,
55
+ label,
56
+ resizable,
57
+ draggableContainerProps,
58
+ columnHeaderSeparatorProps,
59
+ disableHeaderSeparator
60
+ } = props,
61
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
62
+ const apiRef = (0, _useGridApiContext.useGridApiContext)();
63
+ const rootProps = (0, _useGridRootProps.useGridRootProps)();
64
+ const headerCellRef = React.useRef(null);
65
+ const [showColumnMenuIcon, setShowColumnMenuIcon] = React.useState(columnMenuOpen);
66
+ const handleRef = (0, _utils.useForkRef)(headerCellRef, ref);
67
+ let ariaSort = 'none';
68
+
69
+ if (sortDirection != null) {
70
+ ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';
71
+ }
72
+
73
+ React.useEffect(() => {
74
+ if (!showColumnMenuIcon) {
75
+ setShowColumnMenuIcon(columnMenuOpen);
76
+ }
77
+ }, [showColumnMenuIcon, columnMenuOpen]);
78
+ React.useLayoutEffect(() => {
79
+ const columnMenuState = apiRef.current.state.columnMenu;
80
+
81
+ if (hasFocus && !columnMenuState.open) {
82
+ const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
83
+ const elementToFocus = focusableElement || headerCellRef.current;
84
+ elementToFocus == null ? void 0 : elementToFocus.focus();
85
+ apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
86
+ }
87
+ }, [apiRef, hasFocus]);
88
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
89
+ ref: handleRef,
90
+ className: (0, _clsx.default)(classes.root, headerClassName),
91
+ style: {
92
+ height,
93
+ width,
94
+ minWidth: width,
95
+ maxWidth: width
96
+ },
97
+ role: "columnheader",
98
+ tabIndex: tabIndex,
99
+ "aria-colindex": colIndex + 1,
100
+ "aria-sort": ariaSort,
101
+ "aria-label": headerComponent == null ? label : undefined
102
+ }, other, {
103
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
104
+ className: classes.draggableContainer,
105
+ draggable: isDraggable
106
+ }, draggableContainerProps, {
107
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
108
+ className: classes.titleContainer,
109
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
110
+ className: classes.titleContainerContent,
111
+ children: headerComponent !== undefined ? headerComponent : /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderTitle.GridColumnHeaderTitle, {
112
+ label: label,
113
+ description: description,
114
+ columnWidth: width
115
+ })
116
+ }), columnTitleIconButtons]
117
+ }), columnMenuIconButton]
118
+ })), !disableHeaderSeparator && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderSeparator.GridColumnHeaderSeparator, (0, _extends2.default)({
119
+ resizable: !rootProps.disableColumnResize && !!resizable,
120
+ resizing: isResizing,
121
+ height: height,
122
+ side: separatorSide
123
+ }, columnHeaderSeparatorProps)), columnMenu]
124
+ }));
125
+ });
126
+ exports.GridGenericColumnHeaderItem = GridGenericColumnHeaderItem;
@@ -211,7 +211,8 @@ process.env.NODE_ENV !== "production" ? GridCellCheckboxForwardRef.propTypes = {
211
211
  tabIndex: _propTypes.default.oneOf([-1, 0]).isRequired,
212
212
 
213
213
  /**
214
- * The cell value, but if the column has valueGetter, use getValue.
214
+ * The cell value.
215
+ * If the column has `valueGetter`, use `params.row` to directly access the fields.
215
216
  */
216
217
  value: _propTypes.default.any
217
218
  } : void 0;
@@ -50,8 +50,14 @@ const GridOverlayRoot = (0, _styles.styled)('div', {
50
50
  })(({
51
51
  theme
52
52
  }) => ({
53
- display: 'flex',
53
+ position: 'absolute',
54
+ top: 0,
55
+ zIndex: 4,
56
+ // should be above pinned columns, pinned rows and detail panel
57
+ width: '100%',
54
58
  height: '100%',
59
+ pointerEvents: 'none',
60
+ display: 'flex',
55
61
  alignSelf: 'center',
56
62
  alignItems: 'center',
57
63
  justifyContent: 'center',
@@ -33,10 +33,10 @@ var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
33
33
 
34
34
  var _gridClasses = require("../../constants/gridClasses");
35
35
 
36
- var _gridRowsSelector = require("../../hooks/features/rows/gridRowsSelector");
37
-
38
36
  var _densitySelector = require("../../hooks/features/density/densitySelector");
39
37
 
38
+ var _gridRowsSelector = require("../../hooks/features/rows/gridRowsSelector");
39
+
40
40
  var _jsxRuntime = require("react/jsx-runtime");
41
41
 
42
42
  const _excluded = ["children", "className"];
@@ -68,6 +68,7 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
68
68
  const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector);
69
69
  const totalRowCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowCountSelector);
70
70
  const densityValue = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityValueSelector);
71
+ const headerGroupingMaxDepth = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderGroupingMaxDepthSelector);
71
72
  const rootContainerRef = React.useRef(null);
72
73
  const handleRef = (0, _utils.useForkRef)(rootContainerRef, ref);
73
74
  const pinnedRowsCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridPinnedRowsCountSelector);
@@ -98,8 +99,7 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
98
99
  className: (0, _clsx.default)(className, classes.root),
99
100
  role: "grid",
100
101
  "aria-colcount": visibleColumns.length,
101
- "aria-rowcount": totalRowCount + pinnedRowsCount + 1 // +1 for the header row
102
- ,
102
+ "aria-rowcount": headerGroupingMaxDepth + 1 + pinnedRowsCount + totalRowCount,
103
103
  "aria-multiselectable": !rootProps.disableMultipleSelection,
104
104
  "aria-label": rootProps['aria-label'],
105
105
  "aria-labelledby": rootProps['aria-labelledby']
@@ -47,6 +47,8 @@ const GridRootStyles = (0, _styles.styled)('div', {
47
47
  [`& .${_gridClasses.gridClasses.cellContent}`]: styles.cellContent
48
48
  }, {
49
49
  [`& .${_gridClasses.gridClasses.cellCheckbox}`]: styles.cellCheckbox
50
+ }, {
51
+ [`& .${_gridClasses.gridClasses.cellSkeleton}`]: styles.cellSkeleton
50
52
  }, {
51
53
  [`& .${_gridClasses.gridClasses.checkboxInput}`]: styles.checkboxInput
52
54
  }, {
@@ -186,13 +188,24 @@ const GridRootStyles = (0, _styles.styled)('div', {
186
188
  minWidth: 0,
187
189
  flex: 1,
188
190
  whiteSpace: 'nowrap',
189
- overflowX: 'hidden'
191
+ overflow: 'hidden'
190
192
  },
191
193
  [`& .${_gridClasses.gridClasses.columnHeaderTitleContainerContent}`]: {
192
194
  overflow: 'hidden',
193
195
  display: 'flex',
194
196
  alignItems: 'center'
195
197
  },
198
+ [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']} .${_gridClasses.gridClasses.columnHeaderTitleContainer}`]: {
199
+ borderBottom: `solid ${borderColor} 1px`,
200
+ boxSizing: 'border-box'
201
+ },
202
+ [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']} .${_gridClasses.gridClasses.columnHeaderTitleContainer}`]: {
203
+ borderBottom: `none`
204
+ },
205
+ [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']}`]: {
206
+ borderBottom: `solid ${borderColor} 1px`,
207
+ boxSizing: 'border-box'
208
+ },
196
209
  [`& .${_gridClasses.gridClasses.sortIcon}, & .${_gridClasses.gridClasses.filterIcon}`]: {
197
210
  fontSize: 'inherit'
198
211
  },
@@ -372,7 +385,8 @@ const GridRootStyles = (0, _styles.styled)('div', {
372
385
  },
373
386
  [`& .${_gridClasses.gridClasses.columnHeaderDraggableContainer}`]: {
374
387
  display: 'flex',
375
- width: '100%'
388
+ width: '100%',
389
+ height: '100%'
376
390
  },
377
391
  [`& .${_gridClasses.gridClasses.rowReorderCellPlaceholder}`]: {
378
392
  display: 'none'
@@ -150,6 +150,7 @@ process.env.NODE_ENV !== "production" ? GridMenu.propTypes = {
150
150
  // | These PropTypes are generated from the TypeScript type definitions |
151
151
  // | To update them edit the TypeScript types and run "yarn proptypes" |
152
152
  // ----------------------------------------------------------------------
153
+ children: _propTypes.default.node,
153
154
  onClickAway: _propTypes.default.func.isRequired,
154
155
  onExited: _propTypes.default.func,
155
156