@mui/x-data-grid 6.0.0-alpha.2 → 6.0.0-alpha.4

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 (293) hide show
  1. package/CHANGELOG.md +493 -141
  2. package/DataGrid/DataGrid.js +14 -34
  3. package/DataGrid/useDataGridComponent.js +8 -14
  4. package/DataGrid/useDataGridProps.js +3 -3
  5. package/colDef/gridCheckboxSelectionColDef.js +1 -1
  6. package/colDef/gridNumericOperators.d.ts +1 -1
  7. package/colDef/gridSingleSelectOperators.d.ts +1 -1
  8. package/colDef/gridStringOperators.d.ts +1 -1
  9. package/components/GridFooter.js +1 -1
  10. package/components/GridRow.js +2 -2
  11. package/components/base/GridBody.js +2 -2
  12. package/components/cell/GridEditInputCell.js +3 -8
  13. package/components/cell/GridEditSingleSelectCell.js +6 -38
  14. package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -0
  15. package/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  16. package/components/columnSelection/GridHeaderCheckbox.js +3 -3
  17. package/components/containers/GridRoot.js +4 -3
  18. package/components/panel/GridColumnsPanel.d.ts +2 -0
  19. package/components/panel/GridColumnsPanel.js +10 -4
  20. package/components/panel/filterPanel/GridFilterForm.d.ts +12 -0
  21. package/components/panel/filterPanel/GridFilterForm.js +29 -7
  22. package/components/panel/filterPanel/GridFilterPanel.d.ts +12 -0
  23. package/components/panel/filterPanel/GridFilterPanel.js +64 -19
  24. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +1 -1
  25. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
  26. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +1 -1
  27. package/hooks/core/useGridInitialization.d.ts +1 -1
  28. package/hooks/core/useGridStateInitialization.d.ts +1 -1
  29. package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +10 -1
  30. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +6 -0
  31. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +34 -1
  32. package/hooks/features/columnGrouping/gridColumnGroupsUtils.d.ts +15 -0
  33. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +89 -0
  34. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -15
  35. package/hooks/features/columnGrouping/useGridColumnGrouping.js +66 -66
  36. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  37. package/hooks/features/columnHeaders/useGridColumnHeaders.js +60 -116
  38. package/hooks/features/density/densitySelector.d.ts +0 -2
  39. package/hooks/features/density/densitySelector.js +1 -3
  40. package/hooks/features/density/densityState.d.ts +0 -1
  41. package/hooks/features/density/useGridDensity.d.ts +1 -1
  42. package/hooks/features/density/useGridDensity.js +9 -45
  43. package/hooks/features/dimensions/useGridDimensions.js +3 -2
  44. package/hooks/features/{editRows/gridEditRowsSelector.d.ts → editing/gridEditingSelectors.d.ts} +0 -0
  45. package/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  46. package/hooks/features/editing/index.d.ts +1 -0
  47. package/hooks/features/editing/index.js +1 -0
  48. package/hooks/features/{editRows/useGridCellEditing.new.d.ts → editing/useGridCellEditing.d.ts} +0 -0
  49. package/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  50. package/hooks/features/{editRows/useGridEditing.new.d.ts → editing/useGridEditing.d.ts} +0 -0
  51. package/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  52. package/hooks/features/{editRows/useGridRowEditing.new.d.ts → editing/useGridRowEditing.d.ts} +0 -0
  53. package/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  54. package/hooks/features/export/useGridPrintExport.js +2 -2
  55. package/hooks/features/focus/gridFocusState.d.ts +6 -0
  56. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
  57. package/hooks/features/focus/gridFocusStateSelector.js +6 -2
  58. package/hooks/features/focus/useGridFocus.js +69 -11
  59. package/hooks/features/index.d.ts +2 -2
  60. package/hooks/features/index.js +2 -2
  61. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  62. package/hooks/features/{selection/gridSelectionSelector.d.ts → rowSelection/gridRowSelectionSelector.d.ts} +1 -1
  63. package/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  64. package/hooks/features/rowSelection/index.d.ts +1 -0
  65. package/hooks/features/rowSelection/index.js +1 -0
  66. package/hooks/features/rowSelection/useGridRowSelection.d.ts +12 -0
  67. package/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  68. package/hooks/features/{selection/useGridSelectionPreProcessors.d.ts → rowSelection/useGridRowSelectionPreProcessors.d.ts} +1 -1
  69. package/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  70. package/hooks/features/rows/gridRowsInterfaces.d.ts +4 -0
  71. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  72. package/hooks/features/rows/gridRowsUtils.js +5 -2
  73. package/hooks/features/rows/useGridRows.js +23 -7
  74. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -1
  75. package/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  76. package/hooks/utils/useGridApi.d.ts +1 -1
  77. package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
  78. package/hooks/utils/useGridApiRef.d.ts +1 -1
  79. package/hooks/utils/useGridInitializeState.d.ts +1 -1
  80. package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
  81. package/hooks/utils/useGridSelector.d.ts +1 -1
  82. package/hooks/utils/useGridState.d.ts +1 -1
  83. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  84. package/index.js +1 -1
  85. package/internals/index.d.ts +3 -5
  86. package/internals/index.js +3 -5
  87. package/legacy/DataGrid/DataGrid.js +14 -34
  88. package/legacy/DataGrid/useDataGridComponent.js +8 -14
  89. package/legacy/DataGrid/useDataGridProps.js +3 -3
  90. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -1
  91. package/legacy/components/GridFooter.js +1 -1
  92. package/legacy/components/GridRow.js +2 -2
  93. package/legacy/components/base/GridBody.js +2 -2
  94. package/legacy/components/cell/GridEditInputCell.js +3 -8
  95. package/legacy/components/cell/GridEditSingleSelectCell.js +6 -52
  96. package/legacy/components/columnHeaders/GridColumnGroupHeader.js +46 -13
  97. package/legacy/components/columnSelection/GridHeaderCheckbox.js +3 -3
  98. package/legacy/components/containers/GridRoot.js +4 -3
  99. package/legacy/components/panel/GridColumnsPanel.js +10 -3
  100. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -7
  101. package/legacy/components/panel/filterPanel/GridFilterPanel.js +67 -18
  102. package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +33 -1
  103. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +96 -0
  104. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +64 -64
  105. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +70 -122
  106. package/legacy/hooks/features/density/densitySelector.js +0 -6
  107. package/legacy/hooks/features/density/useGridDensity.js +6 -44
  108. package/legacy/hooks/features/dimensions/useGridDimensions.js +3 -2
  109. package/legacy/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  110. package/legacy/hooks/features/editing/index.js +1 -0
  111. package/legacy/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  112. package/legacy/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  113. package/legacy/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  114. package/legacy/hooks/features/export/useGridPrintExport.js +2 -2
  115. package/legacy/hooks/features/focus/gridFocusStateSelector.js +8 -0
  116. package/legacy/hooks/features/focus/useGridFocus.js +72 -11
  117. package/legacy/hooks/features/index.js +2 -2
  118. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +129 -1
  119. package/legacy/hooks/features/rowSelection/gridRowSelectionSelector.js +19 -0
  120. package/legacy/hooks/features/rowSelection/index.js +1 -0
  121. package/legacy/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  122. package/legacy/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  123. package/legacy/hooks/features/rows/gridRowsUtils.js +5 -2
  124. package/legacy/hooks/features/rows/useGridRows.js +25 -7
  125. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  126. package/legacy/index.js +1 -1
  127. package/legacy/internals/index.js +3 -5
  128. package/legacy/locales/trTR.js +17 -17
  129. package/legacy/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  130. package/legacy/models/api/index.js +1 -1
  131. package/legacy/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  132. package/legacy/models/index.js +1 -1
  133. package/{models/api/gridSelectionApi.js → legacy/models/params/gridColumnGroupHeaderParams.js} +0 -0
  134. package/legacy/models/params/gridEditCellParams.js +0 -4
  135. package/legacy/models/params/index.js +1 -0
  136. package/locales/trTR.js +17 -17
  137. package/models/api/gridApiCommon.d.ts +3 -6
  138. package/models/api/gridApiCommunity.d.ts +1 -7
  139. package/models/api/gridEditingApi.d.ts +36 -121
  140. package/models/api/gridFocusApi.d.ts +13 -0
  141. package/models/api/{gridSelectionApi.d.ts → gridRowSelectionApi.d.ts} +2 -2
  142. package/models/{gridSelectionModel.js → api/gridRowSelectionApi.js} +0 -0
  143. package/models/api/index.d.ts +2 -2
  144. package/models/api/index.js +1 -1
  145. package/models/colDef/gridColDef.d.ts +0 -8
  146. package/models/events/gridEventLookup.d.ts +30 -19
  147. package/models/gridColumnGrouping.d.ts +1 -26
  148. package/models/gridRowSelectionModel.d.ts +3 -0
  149. package/{modern/models/api/gridSelectionApi.js → models/gridRowSelectionModel.js} +0 -0
  150. package/models/gridStateCommunity.d.ts +2 -2
  151. package/models/index.d.ts +1 -1
  152. package/models/index.js +1 -1
  153. package/models/params/gridColumnGroupHeaderParams.d.ts +30 -0
  154. package/{modern/models/gridSelectionModel.js → models/params/gridColumnGroupHeaderParams.js} +0 -0
  155. package/models/params/gridEditCellParams.d.ts +4 -17
  156. package/models/params/gridEditCellParams.js +0 -4
  157. package/models/params/gridRowParams.d.ts +4 -4
  158. package/models/params/index.d.ts +1 -0
  159. package/models/params/index.js +1 -0
  160. package/models/props/DataGridProps.d.ts +8 -32
  161. package/modern/DataGrid/DataGrid.js +14 -34
  162. package/modern/DataGrid/useDataGridComponent.js +8 -12
  163. package/modern/DataGrid/useDataGridProps.js +3 -3
  164. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -1
  165. package/modern/components/GridFooter.js +1 -1
  166. package/modern/components/GridRow.js +2 -2
  167. package/modern/components/base/GridBody.js +2 -2
  168. package/modern/components/cell/GridEditInputCell.js +3 -4
  169. package/modern/components/cell/GridEditSingleSelectCell.js +6 -34
  170. package/modern/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  171. package/modern/components/columnSelection/GridHeaderCheckbox.js +3 -3
  172. package/modern/components/containers/GridRoot.js +4 -3
  173. package/modern/components/panel/GridColumnsPanel.js +10 -4
  174. package/modern/components/panel/filterPanel/GridFilterForm.js +29 -7
  175. package/modern/components/panel/filterPanel/GridFilterPanel.js +62 -17
  176. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +14 -1
  177. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +83 -0
  178. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +50 -62
  179. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +58 -98
  180. package/modern/hooks/features/density/densitySelector.js +1 -3
  181. package/modern/hooks/features/density/useGridDensity.js +9 -37
  182. package/modern/hooks/features/dimensions/useGridDimensions.js +3 -2
  183. package/modern/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  184. package/modern/hooks/features/editing/index.js +1 -0
  185. package/modern/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +21 -6
  186. package/modern/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +3 -3
  187. package/modern/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +20 -6
  188. package/modern/hooks/features/export/useGridPrintExport.js +2 -2
  189. package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -2
  190. package/modern/hooks/features/focus/useGridFocus.js +69 -11
  191. package/modern/hooks/features/index.js +2 -2
  192. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +135 -1
  193. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.js +9 -0
  194. package/modern/hooks/features/rowSelection/index.js +1 -0
  195. package/modern/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +37 -37
  196. package/modern/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +1 -1
  197. package/modern/hooks/features/rows/gridRowsUtils.js +5 -2
  198. package/modern/hooks/features/rows/useGridRows.js +23 -7
  199. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  200. package/modern/index.js +1 -1
  201. package/modern/internals/index.js +3 -5
  202. package/modern/locales/trTR.js +17 -17
  203. package/modern/models/api/gridRowSelectionApi.js +1 -0
  204. package/modern/models/api/index.js +1 -1
  205. package/modern/models/gridRowSelectionModel.js +1 -0
  206. package/modern/models/index.js +1 -1
  207. package/modern/models/params/gridColumnGroupHeaderParams.js +1 -0
  208. package/modern/models/params/gridEditCellParams.js +0 -4
  209. package/modern/models/params/index.js +1 -0
  210. package/node/DataGrid/DataGrid.js +14 -34
  211. package/node/DataGrid/useDataGridComponent.js +9 -17
  212. package/node/DataGrid/useDataGridProps.js +3 -3
  213. package/node/colDef/gridCheckboxSelectionColDef.js +2 -2
  214. package/node/components/GridFooter.js +2 -2
  215. package/node/components/GridRow.js +2 -2
  216. package/node/components/base/GridBody.js +2 -2
  217. package/node/components/cell/GridEditInputCell.js +3 -9
  218. package/node/components/cell/GridEditSingleSelectCell.js +6 -38
  219. package/node/components/columnHeaders/GridColumnGroupHeader.js +32 -5
  220. package/node/components/columnSelection/GridHeaderCheckbox.js +3 -3
  221. package/node/components/containers/GridRoot.js +4 -2
  222. package/node/components/panel/GridColumnsPanel.js +10 -4
  223. package/node/components/panel/filterPanel/GridFilterForm.js +30 -7
  224. package/node/components/panel/filterPanel/GridFilterPanel.js +63 -19
  225. package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +40 -3
  226. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +102 -0
  227. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +68 -71
  228. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +57 -113
  229. package/node/hooks/features/density/densitySelector.js +2 -6
  230. package/node/hooks/features/density/useGridDensity.js +9 -48
  231. package/node/hooks/features/dimensions/useGridDimensions.js +3 -1
  232. package/node/hooks/features/{editRows/gridEditRowsSelector.js → editing/gridEditingSelectors.js} +0 -0
  233. package/node/hooks/features/{editRows → editing}/index.js +4 -4
  234. package/node/hooks/features/{editRows/useGridCellEditing.new.js → editing/useGridCellEditing.js} +28 -13
  235. package/node/hooks/features/{editRows/useGridEditing.new.js → editing/useGridEditing.js} +4 -4
  236. package/node/hooks/features/{editRows/useGridRowEditing.new.js → editing/useGridRowEditing.js} +28 -14
  237. package/node/hooks/features/export/useGridPrintExport.js +2 -2
  238. package/node/hooks/features/focus/gridFocusStateSelector.js +10 -4
  239. package/node/hooks/features/focus/useGridFocus.js +68 -10
  240. package/node/hooks/features/index.js +8 -8
  241. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +138 -1
  242. package/node/hooks/features/{selection/gridSelectionSelector.js → rowSelection/gridRowSelectionSelector.js} +6 -6
  243. package/node/hooks/features/rowSelection/index.js +18 -0
  244. package/node/hooks/features/{selection/useGridSelection.js → rowSelection/useGridRowSelection.js} +43 -43
  245. package/node/hooks/features/{selection/useGridSelectionPreProcessors.js → rowSelection/useGridRowSelectionPreProcessors.js} +3 -3
  246. package/node/hooks/features/rows/gridRowsUtils.js +5 -2
  247. package/node/hooks/features/rows/useGridRows.js +23 -7
  248. package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -4
  249. package/node/index.js +1 -1
  250. package/node/internals/index.js +23 -45
  251. package/node/locales/trTR.js +17 -17
  252. package/node/models/api/{gridSelectionApi.js → gridRowSelectionApi.js} +0 -0
  253. package/node/models/api/index.js +4 -4
  254. package/node/models/{gridSelectionModel.js → gridRowSelectionModel.js} +0 -0
  255. package/node/models/index.js +4 -4
  256. package/node/models/params/gridColumnGroupHeaderParams.js +5 -0
  257. package/node/models/params/gridEditCellParams.js +0 -3
  258. package/node/models/params/index.js +13 -0
  259. package/package.json +2 -2
  260. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +0 -4
  261. package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  262. package/hooks/features/editRows/index.d.ts +0 -1
  263. package/hooks/features/editRows/index.js +0 -1
  264. package/hooks/features/editRows/useGridCellEditing.old.d.ts +0 -4
  265. package/hooks/features/editRows/useGridCellEditing.old.js +0 -359
  266. package/hooks/features/editRows/useGridEditing.old.d.ts +0 -11
  267. package/hooks/features/editRows/useGridEditing.old.js +0 -167
  268. package/hooks/features/editRows/useGridRowEditing.old.d.ts +0 -4
  269. package/hooks/features/editRows/useGridRowEditing.old.js +0 -334
  270. package/hooks/features/selection/gridSelectionSelector.js +0 -9
  271. package/hooks/features/selection/index.d.ts +0 -1
  272. package/hooks/features/selection/index.js +0 -1
  273. package/hooks/features/selection/useGridSelection.d.ts +0 -12
  274. package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -35
  275. package/legacy/hooks/features/editRows/index.js +0 -1
  276. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +0 -411
  277. package/legacy/hooks/features/editRows/useGridEditing.old.js +0 -184
  278. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +0 -505
  279. package/legacy/hooks/features/selection/gridSelectionSelector.js +0 -19
  280. package/legacy/hooks/features/selection/index.js +0 -1
  281. package/models/gridSelectionModel.d.ts +0 -3
  282. package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -29
  283. package/modern/hooks/features/editRows/index.js +0 -1
  284. package/modern/hooks/features/editRows/useGridCellEditing.old.js +0 -355
  285. package/modern/hooks/features/editRows/useGridEditing.old.js +0 -163
  286. package/modern/hooks/features/editRows/useGridRowEditing.old.js +0 -326
  287. package/modern/hooks/features/selection/gridSelectionSelector.js +0 -9
  288. package/modern/hooks/features/selection/index.js +0 -1
  289. package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +0 -55
  290. package/node/hooks/features/editRows/useGridCellEditing.old.js +0 -380
  291. package/node/hooks/features/editRows/useGridEditing.old.js +0 -193
  292. package/node/hooks/features/editRows/useGridRowEditing.old.js +0 -358
  293. package/node/hooks/features/selection/index.js +0 -18
@@ -5,9 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.columnGroupsStateInitializer = void 0;
9
- exports.hasGroupPath = hasGroupPath;
10
- exports.useGridColumnGrouping = exports.unwrapGroupingColumnModel = void 0;
8
+ exports.useGridColumnGrouping = exports.columnGroupsStateInitializer = void 0;
11
9
 
12
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
11
 
@@ -19,60 +17,21 @@ var _gridColumnGrouping = require("../../../models/gridColumnGrouping");
19
17
 
20
18
  var _gridColumnGroupsSelector = require("./gridColumnGroupsSelector");
21
19
 
22
- var _gridColumnsSelector = require("../columns/gridColumnsSelector");
23
-
24
20
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
25
21
 
26
- const _excluded = ["groupId", "children"];
27
-
28
- 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); }
29
-
30
- 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; }
31
-
32
- function hasGroupPath(lookupElement) {
33
- return lookupElement.groupPath !== undefined;
34
- }
22
+ var _gridColumnGroupsUtils = require("./gridColumnGroupsUtils");
35
23
 
36
- // This is the recurrence function that help writing `unwrapGroupingColumnModel()`
37
- const recurrentUnwrapGroupingColumnModel = (columnGroupNode, parents, unwrappedGroupingModelToComplet) => {
38
- if ((0, _gridColumnGrouping.isLeaf)(columnGroupNode)) {
39
- if (unwrappedGroupingModelToComplet[columnGroupNode.field] !== undefined) {
40
- throw new Error([`MUI: columnGroupingModel contains duplicated field`, `column field ${columnGroupNode.field} occurrs two times in the grouping model:`, `- ${unwrappedGroupingModelToComplet[columnGroupNode.field].join(' > ')}`, `- ${parents.join(' > ')}`].join('\n'));
41
- }
42
-
43
- unwrappedGroupingModelToComplet[columnGroupNode.field] = parents;
44
- return;
45
- }
24
+ var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
46
25
 
47
- const {
48
- groupId,
49
- children
50
- } = columnGroupNode;
51
- children.forEach(child => {
52
- recurrentUnwrapGroupingColumnModel(child, [...parents, groupId], unwrappedGroupingModelToComplet);
53
- });
54
- };
55
- /**
56
- * This is a function that provide for each column the array of its parents.
57
- * Parents are ordered from the root to the leaf.
58
- * @param columnGroupingModel The model such as provided in DataGrid props
59
- * @returns An object `{[field]: groupIds}` where `groupIds` is the parents of the column `field`
60
- */
26
+ var _columns = require("../columns");
61
27
 
28
+ var _useGridSelector = require("../../utils/useGridSelector");
62
29
 
63
- const unwrapGroupingColumnModel = columnGroupingModel => {
64
- if (!columnGroupingModel) {
65
- return {};
66
- }
30
+ const _excluded = ["groupId", "children"];
67
31
 
68
- const unwrappedSubTree = {};
69
- columnGroupingModel.forEach(columnGroupNode => {
70
- recurrentUnwrapGroupingColumnModel(columnGroupNode, [], unwrappedSubTree);
71
- });
72
- return unwrappedSubTree;
73
- };
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); }
74
33
 
75
- exports.unwrapGroupingColumnModel = unwrapGroupingColumnModel;
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; }
76
35
 
77
36
  const createGroupLookup = columnGroupingModel => {
78
37
  let groupLookup = {};
@@ -111,14 +70,29 @@ const createGroupLookup = columnGroupingModel => {
111
70
  return (0, _extends2.default)({}, groupLookup);
112
71
  };
113
72
 
114
- const columnGroupsStateInitializer = (state, props) => {
115
- var _props$columnGrouping;
73
+ const columnGroupsStateInitializer = (state, props, apiRef) => {
74
+ var _props$experimentalFe, _props$columnGrouping, _props$columnGrouping2;
116
75
 
76
+ if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
77
+ return state;
78
+ }
79
+
80
+ const columnFields = (0, _columns.gridColumnFieldsSelector)(apiRef);
81
+ const visibleColumnFields = (0, _columns.gridVisibleColumnFieldsSelector)(apiRef);
117
82
  const groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
83
+ const unwrappedGroupingModel = (0, _gridColumnGroupsUtils.unwrapGroupingColumnModel)((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
84
+ const columnGroupsHeaderStructure = (0, _gridColumnGroupsUtils.getColumnGroupsHeaderStructure)(columnFields, unwrappedGroupingModel);
85
+ const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => {
86
+ var _unwrappedGroupingMod, _unwrappedGroupingMod2;
87
+
88
+ return (_unwrappedGroupingMod = (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod2.length) != null ? _unwrappedGroupingMod : 0;
89
+ }));
118
90
  return (0, _extends2.default)({}, state, {
119
91
  columnGrouping: {
120
92
  lookup: groupLookup,
121
- groupCollapsedModel: {}
93
+ unwrappedGroupingModel,
94
+ headerStructure: columnGroupsHeaderStructure,
95
+ maxDepth
122
96
  }
123
97
  });
124
98
  };
@@ -131,16 +105,16 @@ const columnGroupsStateInitializer = (state, props) => {
131
105
  exports.columnGroupsStateInitializer = columnGroupsStateInitializer;
132
106
 
133
107
  const useGridColumnGrouping = (apiRef, props) => {
134
- var _props$experimentalFe2;
108
+ var _props$experimentalFe3;
135
109
 
136
110
  /**
137
111
  * API METHODS
138
112
  */
139
113
  const getColumnGroupPath = React.useCallback(field => {
140
- var _columnLookup$field$g, _columnLookup$field;
114
+ var _unwrappedGroupingMod3;
141
115
 
142
- const columnLookup = (0, _gridColumnsSelector.gridColumnLookupSelector)(apiRef);
143
- return (_columnLookup$field$g = (_columnLookup$field = columnLookup[field]) == null ? void 0 : _columnLookup$field.groupPath) != null ? _columnLookup$field$g : [];
116
+ const unwrappedGroupingModel = (0, _gridColumnGroupsSelector.gridColumnGroupsUnwrappedModelSelector)(apiRef);
117
+ return (_unwrappedGroupingMod3 = unwrappedGroupingModel[field]) != null ? _unwrappedGroupingMod3 : [];
144
118
  }, [apiRef]);
145
119
  const getAllGroupDetails = React.useCallback(() => {
146
120
  const columnGroupLookup = (0, _gridColumnGroupsSelector.gridColumnGroupsLookupSelector)(apiRef);
@@ -151,32 +125,55 @@ const useGridColumnGrouping = (apiRef, props) => {
151
125
  unstable_getAllGroupDetails: getAllGroupDetails
152
126
  };
153
127
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, columnGroupingApi, 'GridColumnGroupingApi');
128
+ const handleColumnReorderChange = React.useCallback(() => {
129
+ var _props$columnGrouping3;
130
+
131
+ const unwrappedGroupingModel = (0, _gridColumnGroupsUtils.unwrapGroupingColumnModel)((_props$columnGrouping3 = props.columnGroupingModel) != null ? _props$columnGrouping3 : []);
132
+ apiRef.current.setState(state => {
133
+ var _state$columns$all, _state$columns;
134
+
135
+ const orderedFields = (_state$columns$all = (_state$columns = state.columns) == null ? void 0 : _state$columns.all) != null ? _state$columns$all : [];
136
+ const columnGroupsHeaderStructure = (0, _gridColumnGroupsUtils.getColumnGroupsHeaderStructure)(orderedFields, unwrappedGroupingModel);
137
+ return (0, _extends2.default)({}, state, {
138
+ columnGrouping: (0, _extends2.default)({}, state.columnGrouping, {
139
+ headerStructure: columnGroupsHeaderStructure
140
+ })
141
+ });
142
+ });
143
+ }, [apiRef, props.columnGroupingModel]);
144
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnOrderChange', handleColumnReorderChange);
145
+ const columnFields = (0, _useGridSelector.useGridSelector)(apiRef, _columns.gridColumnFieldsSelector);
146
+ const visibleColumnFields = (0, _useGridSelector.useGridSelector)(apiRef, _columns.gridVisibleColumnFieldsSelector);
154
147
  /**
155
148
  * EFFECTS
156
149
  */
157
- // The effect does not track any value defined synchronously during the 1st render by hooks called after `useGridColumns`
158
- // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one
159
150
 
160
- const isFirstRender = React.useRef(true);
161
151
  React.useEffect(() => {
162
- var _props$experimentalFe, _props$columnGrouping2;
152
+ var _props$experimentalFe2, _props$columnGrouping4, _props$columnGrouping5;
163
153
 
164
- if (isFirstRender.current) {
165
- isFirstRender.current = false;
154
+ if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
166
155
  return;
167
156
  }
168
157
 
169
- if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
170
- return;
171
- }
158
+ const groupLookup = createGroupLookup((_props$columnGrouping4 = props.columnGroupingModel) != null ? _props$columnGrouping4 : []);
159
+ const unwrappedGroupingModel = (0, _gridColumnGroupsUtils.unwrapGroupingColumnModel)((_props$columnGrouping5 = props.columnGroupingModel) != null ? _props$columnGrouping5 : []);
160
+ const columnGroupsHeaderStructure = (0, _gridColumnGroupsUtils.getColumnGroupsHeaderStructure)(columnFields, unwrappedGroupingModel);
161
+ const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => {
162
+ var _unwrappedGroupingMod4, _unwrappedGroupingMod5;
172
163
 
173
- const groupLookup = createGroupLookup((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
174
- apiRef.current.setState(state => (0, _extends2.default)({}, state, {
175
- columnGrouping: (0, _extends2.default)({}, state.columnGrouping, {
176
- lookup: groupLookup
177
- })
164
+ return (_unwrappedGroupingMod4 = (_unwrappedGroupingMod5 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod5.length) != null ? _unwrappedGroupingMod4 : 0;
178
165
  }));
179
- }, [apiRef, props.columnGroupingModel, (_props$experimentalFe2 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe2.columnGrouping]);
166
+ apiRef.current.setState(state => {
167
+ return (0, _extends2.default)({}, state, {
168
+ columnGrouping: {
169
+ lookup: groupLookup,
170
+ unwrappedGroupingModel,
171
+ headerStructure: columnGroupsHeaderStructure,
172
+ maxDepth
173
+ }
174
+ });
175
+ });
176
+ }, [apiRef, columnFields, visibleColumnFields, props.columnGroupingModel, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
180
177
  };
181
178
 
182
179
  exports.useGridColumnGrouping = useGridColumnGrouping;
@@ -49,7 +49,7 @@ var _useGridVirtualScroller = require("../virtualization/useGridVirtualScroller"
49
49
 
50
50
  var _GridColumnGroupHeader = require("../../../components/columnHeaders/GridColumnGroupHeader");
51
51
 
52
- var _utils2 = require("../../../utils/utils");
52
+ var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
53
53
 
54
54
  var _jsxRuntime = require("react/jsx-runtime");
55
55
 
@@ -57,8 +57,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
57
57
 
58
58
  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; }
59
59
 
60
- // TODO: add the possibility to switch this value if needed for customization
61
- const MERGE_EMPTY_CELLS = true;
62
60
  const GridColumnHeaderRow = (0, _styles.styled)('div', {
63
61
  name: 'MuiDataGrid',
64
62
  slot: 'ColumnHeaderRow',
@@ -81,15 +79,19 @@ const useGridColumnHeaders = props => {
81
79
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
82
80
  const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector);
83
81
  const columnPositions = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridColumnPositionsSelector);
84
- const tabIndexState = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridTabIndexColumnHeaderSelector);
82
+ const columnHeaderTabIndexState = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridTabIndexColumnHeaderSelector);
85
83
  const cellTabIndexState = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridTabIndexCellSelector);
84
+ const columnGroupHeaderTabIndexState = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.unstable_gridTabIndexColumnGroupHeaderSelector);
86
85
  const columnHeaderFocus = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.gridFocusColumnHeaderSelector);
86
+ const columnGroupHeaderFocus = (0, _useGridSelector.useGridSelector)(apiRef, _gridFocusStateSelector.unstable_gridFocusColumnGroupHeaderSelector);
87
87
  const headerHeight = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderHeightSelector);
88
- const headerGroupingMaxDepth = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityHeaderGroupingMaxDepthSelector);
89
- const totalHeaderHeight = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityTotalHeaderHeightSelector);
88
+ const headerGroupingMaxDepth = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridColumnGroupsHeaderMaxDepthSelector);
89
+ const totalHeaderHeight = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridTotalHeaderHeightSelector);
90
90
  const filterColumnLookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridFilterSelector.gridFilterActiveItemsLookupSelector);
91
91
  const sortColumnLookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridSortingSelector.gridSortColumnLookupSelector);
92
92
  const columnMenuState = (0, _useGridSelector.useGridSelector)(apiRef, _columnMenuSelector.gridColumnMenuSelector);
93
+ const columnVisibility = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridColumnVisibilityModelSelector);
94
+ const columnGroupsHeaderStructure = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridColumnGroupsHeaderStructureSelector);
93
95
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
94
96
  const innerRef = React.useRef(null);
95
97
  const handleInnerRef = (0, _utils.useForkRef)(innerRefProp, innerRef);
@@ -239,8 +241,8 @@ const useGridColumnHeaders = props => {
239
241
  const column = renderedColumns[i];
240
242
  const columnIndex = firstColumnToRender + i;
241
243
  const isFirstColumn = columnIndex === 0;
242
- const hasTabbableElement = !(tabIndexState === null && cellTabIndexState === null);
243
- const tabIndex = tabIndexState !== null && tabIndexState.field === column.field || isFirstColumn && !hasTabbableElement ? 0 : -1;
244
+ const hasTabbableElement = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
245
+ const tabIndex = columnHeaderTabIndexState !== null && columnHeaderTabIndexState.field === column.field || isFirstColumn && !hasTabbableElement ? 0 : -1;
244
246
  const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === column.field;
245
247
  const open = columnMenuState.open && columnMenuState.field === column.field;
246
248
  columns.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderItem.GridColumnHeaderItem, (0, _extends2.default)({}, sortColumnLookup[column.field], {
@@ -265,8 +267,6 @@ const useGridColumnHeaders = props => {
265
267
  });
266
268
  };
267
269
 
268
- const getParents = (path = [], depth) => path.slice(0, depth + 1);
269
-
270
270
  const getColumnGroupHeaders = params => {
271
271
  if (headerGroupingMaxDepth === 0) {
272
272
  return null;
@@ -279,115 +279,55 @@ const useGridColumnHeaders = props => {
279
279
  }
280
280
 
281
281
  const {
282
- renderedColumns,
283
282
  firstColumnToRender,
284
- lastColumnToRender,
285
- maxLastColumn
283
+ lastColumnToRender
286
284
  } = columnsToRender;
287
285
  const columns = [];
288
286
  const headerToRender = [];
289
287
 
290
288
  for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
291
- var _visibleColumns$first, _visibleColumns$first2, _visibleColumns$first3;
292
-
293
- // Initialize the header line with a grouping item containing all the columns on the left of the virtualization which are in the same group as the first group to render
294
- const initialHeader = [];
295
- let leftOverflow = 0;
296
- let columnIndex = firstColumnToRender - 1;
297
- const firstColumnToRenderGroup = (_visibleColumns$first = visibleColumns[firstColumnToRender]) == null ? void 0 : (_visibleColumns$first2 = _visibleColumns$first.groupPath) == null ? void 0 : _visibleColumns$first2[depth]; // The array of parent is used to manage empty grouping cell
298
- // When two empty grouping cell are next to each other, we merge them if the belong to the same group.
299
-
300
- const firstColumnToRenderGroupParents = getParents((_visibleColumns$first3 = visibleColumns[firstColumnToRender]) == null ? void 0 : _visibleColumns$first3.groupPath, depth);
301
-
302
- while (firstColumnToRenderGroup !== null && columnIndex >= minColumnIndex && (_visibleColumns$colum = visibleColumns[columnIndex]) != null && _visibleColumns$colum.groupPath && (0, _utils2.isDeepEqual)(getParents((_visibleColumns$colum2 = visibleColumns[columnIndex]) == null ? void 0 : _visibleColumns$colum2.groupPath, depth), firstColumnToRenderGroupParents)) {
303
- var _visibleColumns$colum, _visibleColumns$colum2, _column$computedWidth;
304
-
305
- const column = visibleColumns[columnIndex];
306
- leftOverflow += (_column$computedWidth = column.computedWidth) != null ? _column$computedWidth : 0;
307
-
308
- if (initialHeader.length === 0) {
309
- var _column$computedWidth2;
310
-
311
- initialHeader.push({
312
- width: (_column$computedWidth2 = column.computedWidth) != null ? _column$computedWidth2 : 0,
313
- fields: [column.field],
314
- groupId: firstColumnToRenderGroup,
315
- groupParents: firstColumnToRenderGroupParents,
316
- colIndex: columnIndex
317
- });
318
- } else {
319
- var _column$computedWidth3;
320
-
321
- initialHeader[0].width += (_column$computedWidth3 = column.computedWidth) != null ? _column$computedWidth3 : 0;
322
- initialHeader[0].fields.push(column.field);
323
- initialHeader[0].colIndex = columnIndex;
324
- }
325
-
326
- columnIndex -= 1;
327
- }
328
-
329
- const depthInfo = renderedColumns.reduce((aggregated, column, i) => {
330
- var _column$computedWidth7;
331
-
332
- const lastItem = aggregated[aggregated.length - 1];
333
-
334
- if (column.groupPath && column.groupPath.length > depth) {
335
- var _column$computedWidth5;
336
-
337
- if (lastItem && lastItem.groupId === column.groupPath[depth]) {
338
- var _column$computedWidth4;
339
-
340
- // Merge with the previous columns
341
- return [...aggregated.slice(0, aggregated.length - 1), (0, _extends2.default)({}, lastItem, {
342
- width: lastItem.width + ((_column$computedWidth4 = column.computedWidth) != null ? _column$computedWidth4 : 0),
343
- fields: [...lastItem.fields, column.field]
344
- })];
345
- } // Create a new grouping
346
-
347
-
348
- return [...aggregated, {
349
- groupId: column.groupPath[depth],
350
- groupParents: getParents(column.groupPath, depth),
351
- width: (_column$computedWidth5 = column.computedWidth) != null ? _column$computedWidth5 : 0,
352
- fields: [column.field],
353
- colIndex: firstColumnToRender + i
354
- }];
355
- }
356
-
357
- if (MERGE_EMPTY_CELLS && lastItem && lastItem.groupId === null && (0, _utils2.isDeepEqual)(getParents(column.groupPath, depth), lastItem.groupParents)) {
358
- var _column$computedWidth6;
359
-
360
- // We merge with previous column
361
- return [...aggregated.slice(0, aggregated.length - 1), (0, _extends2.default)({}, lastItem, {
362
- width: lastItem.width + ((_column$computedWidth6 = column.computedWidth) != null ? _column$computedWidth6 : 0),
363
- fields: [...lastItem.fields, column.field]
364
- })];
365
- } // We create new empty cell
366
-
367
-
368
- return [...aggregated, {
369
- groupId: null,
370
- groupParents: getParents(column.groupPath, depth),
371
- width: (_column$computedWidth7 = column.computedWidth) != null ? _column$computedWidth7 : 0,
372
- fields: [column.field],
373
- colIndex: firstColumnToRender + i
374
- }];
375
- }, initialHeader);
376
- columnIndex = lastColumnToRender;
377
- const lastColumnToRenderGroup = depthInfo[depthInfo.length - 1].groupId;
378
-
379
- while (lastColumnToRenderGroup !== null && columnIndex < maxLastColumn && (_visibleColumns$colum3 = visibleColumns[columnIndex]) != null && _visibleColumns$colum3.groupPath && ((_visibleColumns$colum4 = visibleColumns[columnIndex]) == null ? void 0 : (_visibleColumns$colum5 = _visibleColumns$colum4.groupPath) == null ? void 0 : _visibleColumns$colum5[depth]) === lastColumnToRenderGroup) {
380
- var _visibleColumns$colum3, _visibleColumns$colum4, _visibleColumns$colum5, _column$computedWidth8;
381
-
382
- const column = visibleColumns[columnIndex];
383
- depthInfo[depthInfo.length - 1].width += (_column$computedWidth8 = column.computedWidth) != null ? _column$computedWidth8 : 0;
384
- depthInfo[depthInfo.length - 1].fields.push(column.field);
385
- columnIndex += 1;
386
- }
387
-
289
+ var _apiRef$current$unsta, _apiRef$current$unsta2;
290
+
291
+ const rowStructure = columnGroupsHeaderStructure[depth];
292
+ const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
293
+ const firstGroupToRender = (_apiRef$current$unsta = apiRef.current.unstable_getColumnGroupPath(firstColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta : null;
294
+ const firstGroupIndex = rowStructure.findIndex(({
295
+ groupId,
296
+ columnFields
297
+ }) => groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender));
298
+ const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
299
+ const lastGroupToRender = (_apiRef$current$unsta2 = apiRef.current.unstable_getColumnGroupPath(lastColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta2 : null;
300
+ const lastGroupIndex = rowStructure.findIndex(({
301
+ groupId,
302
+ columnFields
303
+ }) => groupId === lastGroupToRender && columnFields.includes(lastColumnFieldToRender));
304
+ const visibleColumnGroupHeader = rowStructure.slice(firstGroupIndex, lastGroupIndex + 1).map(groupStructure => {
305
+ return (0, _extends2.default)({}, groupStructure, {
306
+ columnFields: groupStructure.columnFields.filter(field => columnVisibility[field] !== false)
307
+ });
308
+ }).filter(groupStructure => groupStructure.columnFields.length > 0);
309
+ const leftOverflow = visibleColumnGroupHeader[0].columnFields.indexOf(firstColumnFieldToRender);
310
+ let columnIndex = firstColumnToRender;
311
+ const elements = visibleColumnGroupHeader.map(({
312
+ groupId,
313
+ columnFields
314
+ }) => {
315
+ const hasFocus = columnGroupHeaderFocus !== null && columnGroupHeaderFocus.depth === depth && columnFields.includes(columnGroupHeaderFocus.field);
316
+ const tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;
317
+ const headerInfo = {
318
+ groupId,
319
+ width: columnFields.map(field => apiRef.current.getColumn(field).computedWidth).reduce((acc, val) => acc + val, 0),
320
+ fields: columnFields,
321
+ colIndex: columnIndex,
322
+ hasFocus,
323
+ tabIndex
324
+ };
325
+ columnIndex += columnFields.length;
326
+ return headerInfo;
327
+ });
388
328
  headerToRender.push({
389
329
  leftOverflow,
390
- elements: [...depthInfo]
330
+ elements
391
331
  });
392
332
  }
393
333
 
@@ -403,7 +343,9 @@ const useGridColumnHeaders = props => {
403
343
  groupId,
404
344
  width,
405
345
  fields,
406
- colIndex
346
+ colIndex,
347
+ hasFocus,
348
+ tabIndex
407
349
  }, groupIndex) => {
408
350
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnGroupHeader.GridColumnGroupHeader, {
409
351
  groupId: groupId,
@@ -414,7 +356,9 @@ const useGridColumnHeaders = props => {
414
356
  isLastColumn: colIndex === visibleColumns.length - fields.length,
415
357
  extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
416
358
  maxDepth: headerToRender.length,
417
- height: headerHeight
359
+ height: headerHeight,
360
+ hasFocus: hasFocus,
361
+ tabIndex: tabIndex
418
362
  }, groupIndex);
419
363
  })
420
364
  }, depthIndex));
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridDensityValueSelector = exports.gridDensityTotalHeaderHeightSelector = exports.gridDensitySelector = exports.gridDensityRowHeightSelector = exports.gridDensityHeaderHeightSelector = exports.gridDensityHeaderGroupingMaxDepthSelector = exports.gridDensityFactorSelector = void 0;
6
+ exports.gridDensityValueSelector = exports.gridDensitySelector = exports.gridDensityRowHeightSelector = exports.gridDensityHeaderHeightSelector = exports.gridDensityFactorSelector = void 0;
7
7
 
8
8
  var _createSelector = require("../../../utils/createSelector");
9
9
 
@@ -16,9 +16,5 @@ const gridDensityRowHeightSelector = (0, _createSelector.createSelector)(gridDen
16
16
  exports.gridDensityRowHeightSelector = gridDensityRowHeightSelector;
17
17
  const gridDensityHeaderHeightSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerHeight);
18
18
  exports.gridDensityHeaderHeightSelector = gridDensityHeaderHeightSelector;
19
- const gridDensityHeaderGroupingMaxDepthSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerGroupingMaxDepth);
20
- exports.gridDensityHeaderGroupingMaxDepthSelector = gridDensityHeaderGroupingMaxDepthSelector;
21
19
  const gridDensityFactorSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.factor);
22
- exports.gridDensityFactorSelector = gridDensityFactorSelector;
23
- const gridDensityTotalHeaderHeightSelector = (0, _createSelector.createSelector)(gridDensitySelector, density => density.headerHeight * (1 + density.headerGroupingMaxDepth));
24
- exports.gridDensityTotalHeaderHeightSelector = gridDensityTotalHeaderHeightSelector;
20
+ exports.gridDensityFactorSelector = gridDensityFactorSelector;
@@ -21,12 +21,6 @@ var _densitySelector = require("./densitySelector");
21
21
 
22
22
  var _utils = require("../../../utils/utils");
23
23
 
24
- var _useGridSelector = require("../../utils/useGridSelector");
25
-
26
- var _columns = require("../columns");
27
-
28
- var _useGridColumnGrouping = require("../columnGrouping/useGridColumnGrouping");
29
-
30
24
  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); }
31
25
 
32
26
  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; }
@@ -37,14 +31,13 @@ const COMFORTABLE_DENSITY_FACTOR = 1.3; // TODO v6: revise keeping headerHeight
37
31
 
38
32
  exports.COMFORTABLE_DENSITY_FACTOR = COMFORTABLE_DENSITY_FACTOR;
39
33
 
40
- const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight, newMaxDepth) => {
34
+ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight) => {
41
35
  switch (newDensity) {
42
36
  case _gridDensity.GridDensityTypes.Compact:
43
37
  return {
44
38
  value: newDensity,
45
39
  headerHeight: Math.floor(newHeaderHeight * COMPACT_DENSITY_FACTOR),
46
40
  rowHeight: Math.floor(newRowHeight * COMPACT_DENSITY_FACTOR),
47
- headerGroupingMaxDepth: newMaxDepth,
48
41
  factor: COMPACT_DENSITY_FACTOR
49
42
  };
50
43
 
@@ -53,7 +46,6 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight, newMa
53
46
  value: newDensity,
54
47
  headerHeight: Math.floor(newHeaderHeight * COMFORTABLE_DENSITY_FACTOR),
55
48
  rowHeight: Math.floor(newRowHeight * COMFORTABLE_DENSITY_FACTOR),
56
- headerGroupingMaxDepth: newMaxDepth,
57
49
  factor: COMFORTABLE_DENSITY_FACTOR
58
50
  };
59
51
 
@@ -62,55 +54,24 @@ const getUpdatedDensityState = (newDensity, newHeaderHeight, newRowHeight, newMa
62
54
  value: newDensity,
63
55
  headerHeight: newHeaderHeight,
64
56
  rowHeight: newRowHeight,
65
- headerGroupingMaxDepth: newMaxDepth,
66
57
  factor: 1
67
58
  };
68
59
  }
69
60
  };
70
61
 
71
- const densityStateInitializer = (state, props) => {
72
- // TODO: think about improving this initialization. Could it be done in the useColumn initializer?
73
- // TODO: manage to remove ts-ignore
74
- let maxDepth;
75
-
76
- if (props.columnGroupingModel == null || Object.keys(props.columnGroupingModel).length === 0) {
77
- maxDepth = 0;
78
- } else {
79
- const unwrappedGroupingColumnModel = (0, _useGridColumnGrouping.unwrapGroupingColumnModel)(props.columnGroupingModel);
80
- const columnsState = state.columns;
81
- const visibleColumns = columnsState.all.filter(field => columnsState.columnVisibilityModel[field] !== false);
82
-
83
- if (visibleColumns.length === 0) {
84
- maxDepth = 0;
85
- } else {
86
- maxDepth = Math.max(...visibleColumns.map(field => {
87
- var _unwrappedGroupingCol, _unwrappedGroupingCol2;
88
-
89
- return (_unwrappedGroupingCol = (_unwrappedGroupingCol2 = unwrappedGroupingColumnModel[field]) == null ? void 0 : _unwrappedGroupingCol2.length) != null ? _unwrappedGroupingCol : 0;
90
- }));
91
- }
92
- }
93
-
94
- return (0, _extends2.default)({}, state, {
95
- density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight, maxDepth)
96
- });
97
- };
62
+ const densityStateInitializer = (state, props) => (0, _extends2.default)({}, state, {
63
+ density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight)
64
+ });
98
65
 
99
66
  exports.densityStateInitializer = densityStateInitializer;
100
67
 
101
68
  const useGridDensity = (apiRef, props) => {
102
- const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _columns.gridVisibleColumnDefinitionsSelector);
103
- const maxDepth = visibleColumns.length > 0 ? Math.max(...visibleColumns.map(column => {
104
- var _column$groupPath$len, _column$groupPath;
105
-
106
- return (_column$groupPath$len = (_column$groupPath = column.groupPath) == null ? void 0 : _column$groupPath.length) != null ? _column$groupPath$len : 0;
107
- })) : 0;
108
69
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useDensity');
109
- const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight, newMaxDepth = maxDepth) => {
70
+ const setDensity = React.useCallback((newDensity, newHeaderHeight = props.headerHeight, newRowHeight = props.rowHeight) => {
110
71
  logger.debug(`Set grid density to ${newDensity}`);
111
72
  apiRef.current.setState(state => {
112
73
  const currentDensityState = (0, _densitySelector.gridDensitySelector)(state);
113
- const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight, newMaxDepth);
74
+ const newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight);
114
75
 
115
76
  if ((0, _utils.isDeepEqual)(currentDensityState, newDensityState)) {
116
77
  return state;
@@ -121,10 +82,10 @@ const useGridDensity = (apiRef, props) => {
121
82
  });
122
83
  });
123
84
  apiRef.current.forceUpdate();
124
- }, [logger, apiRef, props.headerHeight, props.rowHeight, maxDepth]);
85
+ }, [logger, apiRef, props.headerHeight, props.rowHeight]);
125
86
  React.useEffect(() => {
126
- apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight, maxDepth);
127
- }, [apiRef, props.density, props.rowHeight, props.headerHeight, maxDepth]);
87
+ apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight);
88
+ }, [apiRef, props.density, props.rowHeight, props.headerHeight]);
128
89
  const densityApi = {
129
90
  setDensity
130
91
  };
@@ -27,6 +27,8 @@ var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
27
27
 
28
28
  var _gridRowsUtils = require("../rows/gridRowsUtils");
29
29
 
30
+ var _gridColumnGroupsSelector = require("../columnGrouping/gridColumnGroupsSelector");
31
+
30
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); }
31
33
 
32
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; }
@@ -64,7 +66,7 @@ function useGridDimensions(apiRef, props) {
64
66
  const rootDimensionsRef = React.useRef(null);
65
67
  const fullDimensionsRef = React.useRef(null);
66
68
  const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
67
- const totalHeaderHeight = (0, _utils2.useGridSelector)(apiRef, _density.gridDensityTotalHeaderHeightSelector);
69
+ const totalHeaderHeight = (0, _utils2.useGridSelector)(apiRef, _gridColumnGroupsSelector.gridTotalHeaderHeightSelector);
68
70
  const updateGridDimensionsRef = React.useCallback(() => {
69
71
  var _apiRef$current$rootE;
70
72
 
@@ -4,15 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
- var _gridEditRowsSelector = require("./gridEditRowsSelector");
7
+ var _gridEditingSelectors = require("./gridEditingSelectors");
8
8
 
9
- Object.keys(_gridEditRowsSelector).forEach(function (key) {
9
+ Object.keys(_gridEditingSelectors).forEach(function (key) {
10
10
  if (key === "default" || key === "__esModule") return;
11
- if (key in exports && exports[key] === _gridEditRowsSelector[key]) return;
11
+ if (key in exports && exports[key] === _gridEditingSelectors[key]) return;
12
12
  Object.defineProperty(exports, key, {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _gridEditRowsSelector[key];
15
+ return _gridEditingSelectors[key];
16
16
  }
17
17
  });
18
18
  });