@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
@@ -1,4 +1,3 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
1
  import _extends from "@babel/runtime/helpers/esm/extends";
3
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
3
  import * as React from 'react';
@@ -8,9 +7,9 @@ import { styled } from '@mui/material/styles';
8
7
  import { defaultMemoize } from 'reselect';
9
8
  import { useGridApiContext } from '../../utils/useGridApiContext';
10
9
  import { useGridSelector } from '../../utils/useGridSelector';
11
- import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
12
- import { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector } from '../focus/gridFocusStateSelector';
13
- import { gridDensityHeaderHeightSelector, gridDensityHeaderGroupingMaxDepthSelector, gridDensityTotalHeaderHeightSelector } from '../density/densitySelector';
10
+ import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector, gridColumnVisibilityModelSelector } from '../columns/gridColumnsSelector';
11
+ import { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector, unstable_gridFocusColumnGroupHeaderSelector, unstable_gridTabIndexColumnGroupHeaderSelector } from '../focus/gridFocusStateSelector';
12
+ import { gridDensityHeaderHeightSelector } from '../density/densitySelector';
14
13
  import { gridFilterActiveItemsLookupSelector } from '../filter/gridFilterSelector';
15
14
  import { gridSortColumnLookupSelector } from '../sorting/gridSortingSelector';
16
15
  import { gridColumnMenuSelector } from '../columnMenu/columnMenuSelector';
@@ -21,10 +20,8 @@ import { getFirstColumnIndexToRender } from '../columns/gridColumnsUtils';
21
20
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
22
21
  import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
23
22
  import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
24
- import { isDeepEqual } from '../../../utils/utils'; // TODO: add the possibility to switch this value if needed for customization
25
-
23
+ import { gridTotalHeaderHeightSelector, gridColumnGroupsHeaderMaxDepthSelector, gridColumnGroupsHeaderStructureSelector } from '../columnGrouping/gridColumnGroupsSelector';
26
24
  import { jsx as _jsx } from "react/jsx-runtime";
27
- var MERGE_EMPTY_CELLS = true;
28
25
  var GridColumnHeaderRow = styled('div', {
29
26
  name: 'MuiDataGrid',
30
27
  slot: 'ColumnHeaderRow',
@@ -59,15 +56,19 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
59
56
  var apiRef = useGridApiContext();
60
57
  var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
61
58
  var columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
62
- var tabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
59
+ var columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
63
60
  var cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);
61
+ var columnGroupHeaderTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnGroupHeaderSelector);
64
62
  var columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
63
+ var columnGroupHeaderFocus = useGridSelector(apiRef, unstable_gridFocusColumnGroupHeaderSelector);
65
64
  var headerHeight = useGridSelector(apiRef, gridDensityHeaderHeightSelector);
66
- var headerGroupingMaxDepth = useGridSelector(apiRef, gridDensityHeaderGroupingMaxDepthSelector);
67
- var totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
65
+ var headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
66
+ var totalHeaderHeight = useGridSelector(apiRef, gridTotalHeaderHeightSelector);
68
67
  var filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
69
68
  var sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
70
69
  var columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
70
+ var columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
71
+ var columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
71
72
  var rootProps = useGridRootProps();
72
73
  var innerRef = React.useRef(null);
73
74
  var handleInnerRef = useForkRef(innerRefProp, innerRef);
@@ -244,8 +245,8 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
244
245
  var column = renderedColumns[i];
245
246
  var columnIndex = firstColumnToRender + i;
246
247
  var isFirstColumn = columnIndex === 0;
247
- var hasTabbableElement = !(tabIndexState === null && cellTabIndexState === null);
248
- var tabIndex = tabIndexState !== null && tabIndexState.field === column.field || isFirstColumn && !hasTabbableElement ? 0 : -1;
248
+ var hasTabbableElement = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
249
+ var tabIndex = columnHeaderTabIndexState !== null && columnHeaderTabIndexState.field === column.field || isFirstColumn && !hasTabbableElement ? 0 : -1;
249
250
  var hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === column.field;
250
251
  var open = columnMenuState.open && columnMenuState.field === column.field;
251
252
  columns.push( /*#__PURE__*/_jsx(GridColumnHeaderItem, _extends({}, sortColumnLookup[column.field], {
@@ -270,12 +271,6 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
270
271
  });
271
272
  };
272
273
 
273
- var getParents = function getParents() {
274
- var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
275
- var depth = arguments.length > 1 ? arguments[1] : undefined;
276
- return path.slice(0, depth + 1);
277
- };
278
-
279
274
  var getColumnGroupHeaders = function getColumnGroupHeaders(params) {
280
275
  if (headerGroupingMaxDepth === 0) {
281
276
  return null;
@@ -287,114 +282,63 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
287
282
  return null;
288
283
  }
289
284
 
290
- var renderedColumns = columnsToRender.renderedColumns,
291
- firstColumnToRender = columnsToRender.firstColumnToRender,
292
- lastColumnToRender = columnsToRender.lastColumnToRender,
293
- maxLastColumn = columnsToRender.maxLastColumn;
285
+ var firstColumnToRender = columnsToRender.firstColumnToRender,
286
+ lastColumnToRender = columnsToRender.lastColumnToRender;
294
287
  var columns = [];
295
288
  var headerToRender = [];
296
289
 
297
290
  var _loop = function _loop(depth) {
298
- var _visibleColumns$first, _visibleColumns$first2, _visibleColumns$first3;
299
-
300
- // 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
301
- var initialHeader = [];
302
- var leftOverflow = 0;
303
- var columnIndex = firstColumnToRender - 1;
304
- var 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
305
- // When two empty grouping cell are next to each other, we merge them if the belong to the same group.
306
-
307
- var firstColumnToRenderGroupParents = getParents((_visibleColumns$first3 = visibleColumns[firstColumnToRender]) == null ? void 0 : _visibleColumns$first3.groupPath, depth);
308
-
309
- while (firstColumnToRenderGroup !== null && columnIndex >= minColumnIndex && (_visibleColumns$colum = visibleColumns[columnIndex]) != null && _visibleColumns$colum.groupPath && isDeepEqual(getParents((_visibleColumns$colum2 = visibleColumns[columnIndex]) == null ? void 0 : _visibleColumns$colum2.groupPath, depth), firstColumnToRenderGroupParents)) {
310
- var _visibleColumns$colum, _visibleColumns$colum2, _column$computedWidth;
311
-
312
- var column = visibleColumns[columnIndex];
313
- leftOverflow += (_column$computedWidth = column.computedWidth) != null ? _column$computedWidth : 0;
314
-
315
- if (initialHeader.length === 0) {
316
- var _column$computedWidth2;
317
-
318
- initialHeader.push({
319
- width: (_column$computedWidth2 = column.computedWidth) != null ? _column$computedWidth2 : 0,
320
- fields: [column.field],
321
- groupId: firstColumnToRenderGroup,
322
- groupParents: firstColumnToRenderGroupParents,
323
- colIndex: columnIndex
324
- });
325
- } else {
326
- var _column$computedWidth3;
327
-
328
- initialHeader[0].width += (_column$computedWidth3 = column.computedWidth) != null ? _column$computedWidth3 : 0;
329
- initialHeader[0].fields.push(column.field);
330
- initialHeader[0].colIndex = columnIndex;
331
- }
332
-
333
- columnIndex -= 1;
334
- }
335
-
336
- var depthInfo = renderedColumns.reduce(function (aggregated, column, i) {
337
- var _column$computedWidth7;
338
-
339
- var lastItem = aggregated[aggregated.length - 1];
340
-
341
- if (column.groupPath && column.groupPath.length > depth) {
342
- var _column$computedWidth5;
343
-
344
- if (lastItem && lastItem.groupId === column.groupPath[depth]) {
345
- var _column$computedWidth4;
346
-
347
- // Merge with the previous columns
348
- return [].concat(_toConsumableArray(aggregated.slice(0, aggregated.length - 1)), [_extends({}, lastItem, {
349
- width: lastItem.width + ((_column$computedWidth4 = column.computedWidth) != null ? _column$computedWidth4 : 0),
350
- fields: [].concat(_toConsumableArray(lastItem.fields), [column.field])
351
- })]);
352
- } // Create a new grouping
353
-
354
-
355
- return [].concat(_toConsumableArray(aggregated), [{
356
- groupId: column.groupPath[depth],
357
- groupParents: getParents(column.groupPath, depth),
358
- width: (_column$computedWidth5 = column.computedWidth) != null ? _column$computedWidth5 : 0,
359
- fields: [column.field],
360
- colIndex: firstColumnToRender + i
361
- }]);
362
- }
363
-
364
- if (MERGE_EMPTY_CELLS && lastItem && lastItem.groupId === null && isDeepEqual(getParents(column.groupPath, depth), lastItem.groupParents)) {
365
- var _column$computedWidth6;
366
-
367
- // We merge with previous column
368
- return [].concat(_toConsumableArray(aggregated.slice(0, aggregated.length - 1)), [_extends({}, lastItem, {
369
- width: lastItem.width + ((_column$computedWidth6 = column.computedWidth) != null ? _column$computedWidth6 : 0),
370
- fields: [].concat(_toConsumableArray(lastItem.fields), [column.field])
371
- })]);
372
- } // We create new empty cell
373
-
374
-
375
- return [].concat(_toConsumableArray(aggregated), [{
376
- groupId: null,
377
- groupParents: getParents(column.groupPath, depth),
378
- width: (_column$computedWidth7 = column.computedWidth) != null ? _column$computedWidth7 : 0,
379
- fields: [column.field],
380
- colIndex: firstColumnToRender + i
381
- }]);
382
- }, initialHeader);
383
- columnIndex = lastColumnToRender;
384
- var lastColumnToRenderGroup = depthInfo[depthInfo.length - 1].groupId;
385
-
386
- 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) {
387
- var _visibleColumns$colum3, _visibleColumns$colum4, _visibleColumns$colum5, _column$computedWidth8;
388
-
389
- var _column = visibleColumns[columnIndex];
390
- depthInfo[depthInfo.length - 1].width += (_column$computedWidth8 = _column.computedWidth) != null ? _column$computedWidth8 : 0;
391
- depthInfo[depthInfo.length - 1].fields.push(_column.field);
392
- columnIndex += 1;
393
- }
394
-
291
+ var _apiRef$current$unsta, _apiRef$current$unsta2;
292
+
293
+ var rowStructure = columnGroupsHeaderStructure[depth];
294
+ var firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
295
+ var firstGroupToRender = (_apiRef$current$unsta = apiRef.current.unstable_getColumnGroupPath(firstColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta : null;
296
+ var firstGroupIndex = rowStructure.findIndex(function (_ref4) {
297
+ var groupId = _ref4.groupId,
298
+ columnFields = _ref4.columnFields;
299
+ return groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender);
300
+ });
301
+ var lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
302
+ var lastGroupToRender = (_apiRef$current$unsta2 = apiRef.current.unstable_getColumnGroupPath(lastColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta2 : null;
303
+ var lastGroupIndex = rowStructure.findIndex(function (_ref5) {
304
+ var groupId = _ref5.groupId,
305
+ columnFields = _ref5.columnFields;
306
+ return groupId === lastGroupToRender && columnFields.includes(lastColumnFieldToRender);
307
+ });
308
+ var visibleColumnGroupHeader = rowStructure.slice(firstGroupIndex, lastGroupIndex + 1).map(function (groupStructure) {
309
+ return _extends({}, groupStructure, {
310
+ columnFields: groupStructure.columnFields.filter(function (field) {
311
+ return columnVisibility[field] !== false;
312
+ })
313
+ });
314
+ }).filter(function (groupStructure) {
315
+ return groupStructure.columnFields.length > 0;
316
+ });
317
+ var leftOverflow = visibleColumnGroupHeader[0].columnFields.indexOf(firstColumnFieldToRender);
318
+ var columnIndex = firstColumnToRender;
319
+ var elements = visibleColumnGroupHeader.map(function (_ref6) {
320
+ var groupId = _ref6.groupId,
321
+ columnFields = _ref6.columnFields;
322
+ var hasFocus = columnGroupHeaderFocus !== null && columnGroupHeaderFocus.depth === depth && columnFields.includes(columnGroupHeaderFocus.field);
323
+ var tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;
324
+ var headerInfo = {
325
+ groupId: groupId,
326
+ width: columnFields.map(function (field) {
327
+ return apiRef.current.getColumn(field).computedWidth;
328
+ }).reduce(function (acc, val) {
329
+ return acc + val;
330
+ }, 0),
331
+ fields: columnFields,
332
+ colIndex: columnIndex,
333
+ hasFocus: hasFocus,
334
+ tabIndex: tabIndex
335
+ };
336
+ columnIndex += columnFields.length;
337
+ return headerInfo;
338
+ });
395
339
  headerToRender.push({
396
340
  leftOverflow: leftOverflow,
397
- elements: _toConsumableArray(depthInfo)
341
+ elements: elements
398
342
  });
399
343
  };
400
344
 
@@ -414,7 +358,9 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
414
358
  var groupId = _ref3.groupId,
415
359
  width = _ref3.width,
416
360
  fields = _ref3.fields,
417
- colIndex = _ref3.colIndex;
361
+ colIndex = _ref3.colIndex,
362
+ hasFocus = _ref3.hasFocus,
363
+ tabIndex = _ref3.tabIndex;
418
364
  return /*#__PURE__*/_jsx(GridColumnGroupHeader, {
419
365
  groupId: groupId,
420
366
  width: width,
@@ -424,7 +370,9 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
424
370
  isLastColumn: colIndex === visibleColumns.length - fields.length,
425
371
  extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
426
372
  maxDepth: headerToRender.length,
427
- height: headerHeight
373
+ height: headerHeight,
374
+ hasFocus: hasFocus,
375
+ tabIndex: tabIndex
428
376
  }, groupIndex);
429
377
  })
430
378
  }, depthIndex));
@@ -11,12 +11,6 @@ export var gridDensityRowHeightSelector = createSelector(gridDensitySelector, fu
11
11
  export var gridDensityHeaderHeightSelector = createSelector(gridDensitySelector, function (density) {
12
12
  return density.headerHeight;
13
13
  });
14
- export var gridDensityHeaderGroupingMaxDepthSelector = createSelector(gridDensitySelector, function (density) {
15
- return density.headerGroupingMaxDepth;
16
- });
17
14
  export var gridDensityFactorSelector = createSelector(gridDensitySelector, function (density) {
18
15
  return density.factor;
19
- });
20
- export var gridDensityTotalHeaderHeightSelector = createSelector(gridDensitySelector, function (density) {
21
- return density.headerHeight * (1 + density.headerGroupingMaxDepth);
22
16
  });
@@ -1,25 +1,20 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
2
  import * as React from 'react';
4
3
  import { GridDensityTypes } from '../../../models/gridDensity';
5
4
  import { useGridLogger } from '../../utils/useGridLogger';
6
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
6
  import { gridDensitySelector } from './densitySelector';
8
7
  import { isDeepEqual } from '../../../utils/utils';
9
- import { useGridSelector } from '../../utils/useGridSelector';
10
- import { gridVisibleColumnDefinitionsSelector } from '../columns';
11
- import { unwrapGroupingColumnModel } from '../columnGrouping/useGridColumnGrouping';
12
8
  export var COMPACT_DENSITY_FACTOR = 0.7;
13
9
  export var COMFORTABLE_DENSITY_FACTOR = 1.3; // TODO v6: revise keeping headerHeight and rowHeight in state
14
10
 
15
- var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight, newMaxDepth) {
11
+ var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight) {
16
12
  switch (newDensity) {
17
13
  case GridDensityTypes.Compact:
18
14
  return {
19
15
  value: newDensity,
20
16
  headerHeight: Math.floor(newHeaderHeight * COMPACT_DENSITY_FACTOR),
21
17
  rowHeight: Math.floor(newRowHeight * COMPACT_DENSITY_FACTOR),
22
- headerGroupingMaxDepth: newMaxDepth,
23
18
  factor: COMPACT_DENSITY_FACTOR
24
19
  };
25
20
 
@@ -28,7 +23,6 @@ var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHead
28
23
  value: newDensity,
29
24
  headerHeight: Math.floor(newHeaderHeight * COMFORTABLE_DENSITY_FACTOR),
30
25
  rowHeight: Math.floor(newRowHeight * COMFORTABLE_DENSITY_FACTOR),
31
- headerGroupingMaxDepth: newMaxDepth,
32
26
  factor: COMFORTABLE_DENSITY_FACTOR
33
27
  };
34
28
 
@@ -37,57 +31,25 @@ var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHead
37
31
  value: newDensity,
38
32
  headerHeight: newHeaderHeight,
39
33
  rowHeight: newRowHeight,
40
- headerGroupingMaxDepth: newMaxDepth,
41
34
  factor: 1
42
35
  };
43
36
  }
44
37
  };
45
38
 
46
39
  export var densityStateInitializer = function densityStateInitializer(state, props) {
47
- // TODO: think about improving this initialization. Could it be done in the useColumn initializer?
48
- // TODO: manage to remove ts-ignore
49
- var maxDepth;
50
-
51
- if (props.columnGroupingModel == null || Object.keys(props.columnGroupingModel).length === 0) {
52
- maxDepth = 0;
53
- } else {
54
- var unwrappedGroupingColumnModel = unwrapGroupingColumnModel(props.columnGroupingModel);
55
- var columnsState = state.columns;
56
- var visibleColumns = columnsState.all.filter(function (field) {
57
- return columnsState.columnVisibilityModel[field] !== false;
58
- });
59
-
60
- if (visibleColumns.length === 0) {
61
- maxDepth = 0;
62
- } else {
63
- maxDepth = Math.max.apply(Math, _toConsumableArray(visibleColumns.map(function (field) {
64
- var _unwrappedGroupingCol, _unwrappedGroupingCol2;
65
-
66
- return (_unwrappedGroupingCol = (_unwrappedGroupingCol2 = unwrappedGroupingColumnModel[field]) == null ? void 0 : _unwrappedGroupingCol2.length) != null ? _unwrappedGroupingCol : 0;
67
- })));
68
- }
69
- }
70
-
71
40
  return _extends({}, state, {
72
- density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight, maxDepth)
41
+ density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight)
73
42
  });
74
43
  };
75
44
  export var useGridDensity = function useGridDensity(apiRef, props) {
76
- var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
77
- var maxDepth = visibleColumns.length > 0 ? Math.max.apply(Math, _toConsumableArray(visibleColumns.map(function (column) {
78
- var _column$groupPath$len, _column$groupPath;
79
-
80
- return (_column$groupPath$len = (_column$groupPath = column.groupPath) == null ? void 0 : _column$groupPath.length) != null ? _column$groupPath$len : 0;
81
- }))) : 0;
82
45
  var logger = useGridLogger(apiRef, 'useDensity');
83
46
  var setDensity = React.useCallback(function (newDensity) {
84
47
  var newHeaderHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.headerHeight;
85
48
  var newRowHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : props.rowHeight;
86
- var newMaxDepth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : maxDepth;
87
49
  logger.debug("Set grid density to ".concat(newDensity));
88
50
  apiRef.current.setState(function (state) {
89
51
  var currentDensityState = gridDensitySelector(state);
90
- var newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight, newMaxDepth);
52
+ var newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight);
91
53
 
92
54
  if (isDeepEqual(currentDensityState, newDensityState)) {
93
55
  return state;
@@ -98,10 +60,10 @@ export var useGridDensity = function useGridDensity(apiRef, props) {
98
60
  });
99
61
  });
100
62
  apiRef.current.forceUpdate();
101
- }, [logger, apiRef, props.headerHeight, props.rowHeight, maxDepth]);
63
+ }, [logger, apiRef, props.headerHeight, props.rowHeight]);
102
64
  React.useEffect(function () {
103
- apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight, maxDepth);
104
- }, [apiRef, props.density, props.rowHeight, props.headerHeight, maxDepth]);
65
+ apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight);
66
+ }, [apiRef, props.density, props.rowHeight, props.headerHeight]);
105
67
  var densityApi = {
106
68
  setDensity: setDensity
107
69
  };
@@ -4,11 +4,12 @@ import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/use
4
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
5
  import { useGridLogger } from '../../utils/useGridLogger';
6
6
  import { gridColumnsTotalWidthSelector } from '../columns';
7
- import { gridDensityTotalHeaderHeightSelector, gridDensityRowHeightSelector } from '../density';
7
+ import { gridDensityRowHeightSelector } from '../density';
8
8
  import { useGridSelector } from '../../utils';
9
9
  import { getVisibleRows } from '../../utils/useGridVisibleRows';
10
10
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
11
11
  import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
12
+ import { gridTotalHeaderHeightSelector } from '../columnGrouping/gridColumnGroupsSelector';
12
13
  var isTestEnvironment = process.env.NODE_ENV === 'test';
13
14
 
14
15
  var hasScroll = function hasScroll(_ref) {
@@ -41,7 +42,7 @@ export function useGridDimensions(apiRef, props) {
41
42
  var rootDimensionsRef = React.useRef(null);
42
43
  var fullDimensionsRef = React.useRef(null);
43
44
  var rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
44
- var totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
45
+ var totalHeaderHeight = useGridSelector(apiRef, gridTotalHeaderHeightSelector);
45
46
  var updateGridDimensionsRef = React.useCallback(function () {
46
47
  var _apiRef$current$rootE;
47
48
 
@@ -0,0 +1 @@
1
+ export * from './gridEditingSelectors';
@@ -12,7 +12,7 @@ import { unstable_useEventCallback as useEventCallback } from '@mui/utils';
12
12
  import { useGridApiEventHandler, useGridApiOptionHandler, GridSignature } from '../../utils/useGridApiEventHandler';
13
13
  import { GridEditModes, GridCellModes } from '../../../models/gridEditRowModel';
14
14
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
15
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
15
+ import { gridEditRowsStateSelector } from './gridEditingSelectors';
16
16
  import { isPrintableKey } from '../../../utils/keyboardUtils';
17
17
  import { buildWarning } from '../../../utils/warning';
18
18
  import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
@@ -129,7 +129,8 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
129
129
 
130
130
  if (_reason) {
131
131
  var _newParams = _extends({}, params, {
132
- reason: _reason
132
+ reason: _reason,
133
+ key: event.key
133
134
  });
134
135
 
135
136
  apiRef.current.publishEvent('cellEditStart', _newParams, event);
@@ -139,13 +140,20 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
139
140
  var handleCellEditStart = React.useCallback(function (params) {
140
141
  var id = params.id,
141
142
  field = params.field,
142
- reason = params.reason;
143
+ reason = params.reason,
144
+ key = params.key;
143
145
  var startCellEditModeParams = {
144
146
  id: id,
145
147
  field: field
146
148
  };
147
149
 
148
- if (reason === GridCellEditStartReasons.deleteKeyDown || reason === GridCellEditStartReasons.printableKeyDown) {
150
+ if (reason === GridCellEditStartReasons.printableKeyDown) {
151
+ if (React.version.startsWith('18')) {
152
+ startCellEditModeParams.initialValue = key; // In React 17, cleaning the input is enough
153
+ } else {
154
+ startCellEditModeParams.deleteValue = true;
155
+ }
156
+ } else if (reason === GridCellEditStartReasons.deleteKeyDown) {
149
157
  startCellEditModeParams.deleteValue = true;
150
158
  }
151
159
 
@@ -268,9 +276,16 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
268
276
  var updateStateToStartCellEditMode = useEventCallback(function (params) {
269
277
  var id = params.id,
270
278
  field = params.field,
271
- deleteValue = params.deleteValue;
279
+ deleteValue = params.deleteValue,
280
+ initialValue = params.initialValue;
281
+ var newValue = apiRef.current.getCellValue(id, field);
282
+
283
+ if (deleteValue || initialValue) {
284
+ newValue = deleteValue ? '' : initialValue;
285
+ }
286
+
272
287
  var newProps = {
273
- value: deleteValue ? '' : apiRef.current.getCellValue(id, field),
288
+ value: newValue,
274
289
  error: false,
275
290
  isProcessingProps: false
276
291
  };
@@ -4,10 +4,10 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _regeneratorRuntime from "@babel/runtime/regenerator";
5
5
  import * as React from 'react';
6
6
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
- import { useGridCellEditing } from './useGridCellEditing.new';
7
+ import { useGridCellEditing } from './useGridCellEditing';
8
8
  import { GridCellModes, GridEditModes } from '../../../models/gridEditRowModel';
9
- import { useGridRowEditing } from './useGridRowEditing.new';
10
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
9
+ import { useGridRowEditing } from './useGridRowEditing';
10
+ import { gridEditRowsStateSelector } from './gridEditingSelectors';
11
11
  import { isAutoGeneratedRow } from '../rows/gridRowsUtils';
12
12
  export var editingStateInitializer = function editingStateInitializer(state) {
13
13
  return _extends({}, state, {
@@ -10,7 +10,7 @@ import { unstable_useEventCallback as useEventCallback } from '@mui/utils';
10
10
  import { useGridApiEventHandler, useGridApiOptionHandler, GridSignature } from '../../utils/useGridApiEventHandler';
11
11
  import { GridEditModes, GridRowModes } from '../../../models/gridEditRowModel';
12
12
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
13
- import { gridEditRowsStateSelector } from './gridEditRowsSelector';
13
+ import { gridEditRowsStateSelector } from './gridEditingSelectors';
14
14
  import { isPrintableKey } from '../../../utils/keyboardUtils';
15
15
  import { gridColumnFieldsSelector } from '../columns/gridColumnsSelector';
16
16
  import { buildWarning } from '../../../utils/warning';
@@ -189,6 +189,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
189
189
 
190
190
  var _newParams = _extends({}, _rowParams, {
191
191
  field: params.field,
192
+ key: event.key,
192
193
  reason: _reason
193
194
  });
194
195
 
@@ -199,13 +200,20 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
199
200
  var handleRowEditStart = React.useCallback(function (params) {
200
201
  var id = params.id,
201
202
  field = params.field,
202
- reason = params.reason;
203
+ reason = params.reason,
204
+ key = params.key;
203
205
  var startRowEditModeParams = {
204
206
  id: id,
205
207
  fieldToFocus: field
206
208
  };
207
209
 
208
- if (reason === GridRowEditStartReasons.deleteKeyDown || reason === GridRowEditStartReasons.printableKeyDown) {
210
+ if (reason === GridRowEditStartReasons.printableKeyDown) {
211
+ if (React.version.startsWith('18')) {
212
+ startRowEditModeParams.initialValue = key; // In React 17, cleaning the input is enough
213
+ } else {
214
+ startRowEditModeParams.deleteValue = !!field;
215
+ }
216
+ } else if (reason === GridRowEditStartReasons.deleteKeyDown) {
209
217
  startRowEditModeParams.deleteValue = !!field;
210
218
  }
211
219
 
@@ -338,7 +346,8 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
338
346
  var updateStateToStartRowEditMode = useEventCallback(function (params) {
339
347
  var id = params.id,
340
348
  fieldToFocus = params.fieldToFocus,
341
- deleteValue = params.deleteValue;
349
+ deleteValue = params.deleteValue,
350
+ initialValue = params.initialValue;
342
351
  var columnFields = gridColumnFieldsSelector(apiRef);
343
352
  var newProps = columnFields.reduce(function (acc, field) {
344
353
  var cellParams = apiRef.current.getCellParams(id, field);
@@ -347,9 +356,14 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
347
356
  return acc;
348
357
  }
349
358
 
350
- var shouldDeleteValue = deleteValue && fieldToFocus === field;
359
+ var newValue = apiRef.current.getCellValue(id, field);
360
+
361
+ if (fieldToFocus === field && (deleteValue || initialValue)) {
362
+ newValue = deleteValue ? '' : initialValue;
363
+ }
364
+
351
365
  acc[field] = {
352
- value: shouldDeleteValue ? '' : apiRef.current.getCellValue(id, field),
366
+ value: newValue,
353
367
  error: false,
354
368
  isProcessingProps: false
355
369
  };
@@ -7,7 +7,7 @@ import { ownerDocument } from '@mui/material/utils';
7
7
  import { useGridLogger } from '../../utils/useGridLogger';
8
8
  import { gridVisibleRowCountSelector } from '../filter/gridFilterSelector';
9
9
  import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../columns/gridColumnsSelector';
10
- import { gridDensityTotalHeaderHeightSelector } from '../density/densitySelector';
10
+ import { gridTotalHeaderHeightSelector } from '../columnGrouping/gridColumnGroupsSelector';
11
11
  import { gridClasses } from '../../../constants/gridClasses';
12
12
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
13
13
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
@@ -90,7 +90,7 @@ export var useGridPrintExport = function useGridPrintExport(apiRef, props) {
90
90
  return;
91
91
  }
92
92
 
93
- var totalHeaderHeight = gridDensityTotalHeaderHeightSelector(apiRef);
93
+ var totalHeaderHeight = gridTotalHeaderHeightSelector(apiRef);
94
94
  var rowsMeta = gridRowsMetaSelector(apiRef.current.state);
95
95
  var gridRootElement = apiRef.current.rootElementRef.current;
96
96
  var gridClone = gridRootElement.cloneNode(true);
@@ -7,6 +7,10 @@ export var gridFocusCellSelector = createSelector(gridFocusStateSelector, functi
7
7
  });
8
8
  export var gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, function (focusState) {
9
9
  return focusState.columnHeader;
10
+ }); // eslint-disable-next-line @typescript-eslint/naming-convention
11
+
12
+ export var unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, function (focusState) {
13
+ return focusState.columnGroupHeader;
10
14
  });
11
15
  export var gridTabIndexStateSelector = function gridTabIndexStateSelector(state) {
12
16
  return state.tabIndex;
@@ -16,4 +20,8 @@ export var gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector,
16
20
  });
17
21
  export var gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, function (state) {
18
22
  return state.columnHeader;
23
+ }); // eslint-disable-next-line @typescript-eslint/naming-convention
24
+
25
+ export var unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, function (state) {
26
+ return state.columnGroupHeader;
19
27
  });