@mui/x-data-grid 5.7.0 → 5.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/CHANGELOG.md +241 -53
  2. package/DataGrid/DataGrid.d.ts +8 -3
  3. package/DataGrid/DataGrid.js +28 -5
  4. package/DataGrid/useDataGridComponent.js +5 -5
  5. package/DataGrid/useDataGridProps.d.ts +2 -1
  6. package/LICENSE +21 -0
  7. package/README.md +6 -4
  8. package/colDef/gridBooleanColDef.d.ts +1 -1
  9. package/colDef/gridBooleanOperators.d.ts +1 -1
  10. package/colDef/gridDateColDef.d.ts +5 -9
  11. package/colDef/gridDateColDef.js +2 -2
  12. package/colDef/gridDateOperators.d.ts +1 -1
  13. package/{models/colDef → colDef}/gridDefaultColumnTypes.d.ts +1 -1
  14. package/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  15. package/colDef/gridNumericColDef.d.ts +1 -1
  16. package/colDef/gridNumericOperators.d.ts +2 -2
  17. package/colDef/gridStringColDef.d.ts +1 -1
  18. package/colDef/gridStringOperators.d.ts +1 -1
  19. package/colDef/index.d.ts +1 -0
  20. package/colDef/index.js +2 -1
  21. package/components/GridRow.d.ts +4 -0
  22. package/components/GridRow.js +55 -24
  23. package/components/base/GridOverlays.js +4 -3
  24. package/components/cell/GridActionsCell.d.ts +5 -1
  25. package/components/cell/GridActionsCell.js +170 -21
  26. package/components/cell/GridActionsCellItem.d.ts +66 -4
  27. package/components/cell/GridActionsCellItem.js +7 -5
  28. package/components/cell/GridCell.d.ts +5 -4
  29. package/components/cell/GridCell.js +30 -9
  30. package/components/cell/GridEditInputCell.js +3 -3
  31. package/components/cell/GridEditSingleSelectCell.js +24 -15
  32. package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +12 -0
  33. package/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  34. package/components/columnHeaders/GridColumnHeaderItem.js +9 -12
  35. package/components/columnHeaders/GridColumnHeaders.d.ts +0 -1
  36. package/components/columnHeaders/GridColumnHeaders.js +1 -1
  37. package/components/columnHeaders/index.d.ts +1 -0
  38. package/components/columnHeaders/index.js +1 -0
  39. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
  40. package/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
  41. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  42. package/components/containers/GridRoot.js +29 -17
  43. package/components/containers/GridRootStyles.js +36 -1
  44. package/components/menu/GridMenu.js +1 -0
  45. package/components/menu/columnMenu/GridColumnMenu.js +1 -1
  46. package/components/panel/GridPanel.d.ts +2 -2
  47. package/components/panel/GridPanel.js +1 -0
  48. package/components/panel/GridPreferencesPanel.js +1 -1
  49. package/components/panel/filterPanel/GridFilterForm.js +14 -10
  50. package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  51. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
  52. package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
  53. package/components/toolbar/GridToolbarDensitySelector.js +1 -1
  54. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  55. package/components/virtualization/GridVirtualScroller.js +2 -0
  56. package/components/virtualization/GridVirtualScrollerContent.js +1 -3
  57. package/constants/defaultGridSlotsComponents.js +4 -2
  58. package/constants/gridClasses.d.ts +35 -3
  59. package/constants/gridClasses.js +1 -1
  60. package/constants/gridDetailPanelToggleField.d.ts +1 -0
  61. package/constants/gridDetailPanelToggleField.js +2 -0
  62. package/constants/localeTextConstants.js +3 -1
  63. package/hooks/core/index.d.ts +1 -1
  64. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +85 -0
  65. package/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  66. package/hooks/core/pipeProcessing/index.d.ts +4 -0
  67. package/hooks/core/pipeProcessing/index.js +4 -0
  68. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +32 -0
  69. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
  70. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
  71. package/{modern/hooks/core/preProcessing/useGridRegisterPreProcessor.js → hooks/core/pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
  72. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +4 -0
  73. package/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeProcessor.js} +2 -6
  74. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +27 -16
  75. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  76. package/hooks/core/useGridInitialization.js +2 -2
  77. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
  78. package/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
  79. package/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  80. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
  81. package/hooks/features/columns/gridColumnsSelector.d.ts +6 -6
  82. package/hooks/features/columns/gridColumnsUtils.d.ts +22 -4
  83. package/hooks/features/columns/gridColumnsUtils.js +105 -20
  84. package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
  85. package/hooks/features/columns/useGridColumnSpanning.js +109 -0
  86. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  87. package/hooks/features/columns/useGridColumns.js +55 -40
  88. package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
  89. package/hooks/features/dimensions/useGridDimensions.js +5 -4
  90. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  91. package/hooks/features/editRows/useGridCellEditing.new.js +40 -17
  92. package/hooks/features/editRows/useGridEditing.new.js +7 -3
  93. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  94. package/hooks/features/editRows/useGridRowEditing.new.js +44 -21
  95. package/hooks/features/events/useGridEvents.d.ts +1 -1
  96. package/hooks/features/events/useGridEvents.js +2 -0
  97. package/hooks/features/filter/gridFilterSelector.d.ts +3 -9
  98. package/hooks/features/filter/useGridFilter.js +18 -13
  99. package/hooks/features/focus/useGridFocus.js +19 -9
  100. package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.d.ts +3 -5
  101. package/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -13
  102. package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -3
  103. package/hooks/features/pagination/useGridPage.js +9 -4
  104. package/hooks/features/pagination/useGridPageSize.js +3 -3
  105. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  106. package/hooks/features/rows/gridRowsSelector.d.ts +2 -1
  107. package/hooks/features/rows/gridRowsSelector.js +1 -0
  108. package/hooks/features/rows/gridRowsState.d.ts +4 -0
  109. package/hooks/features/rows/gridRowsUtils.d.ts +8 -0
  110. package/hooks/features/rows/gridRowsUtils.js +11 -0
  111. package/hooks/features/rows/index.d.ts +1 -0
  112. package/hooks/features/rows/index.js +1 -1
  113. package/hooks/features/rows/useGridRows.d.ts +2 -2
  114. package/hooks/features/rows/useGridRows.js +27 -7
  115. package/hooks/features/rows/useGridRowsMeta.js +7 -14
  116. package/hooks/features/scroll/useGridScroll.d.ts +2 -0
  117. package/hooks/features/scroll/useGridScroll.js +27 -14
  118. package/hooks/features/selection/gridSelectionSelector.d.ts +1 -3
  119. package/hooks/features/selection/useGridSelection.d.ts +4 -2
  120. package/hooks/features/selection/useGridSelection.js +75 -27
  121. package/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  122. package/hooks/features/sorting/gridSortingSelector.d.ts +1 -3
  123. package/hooks/features/sorting/gridSortingUtils.d.ts +1 -2
  124. package/hooks/features/sorting/useGridSorting.js +13 -13
  125. package/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  126. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
  127. package/hooks/features/virtualization/useGridVirtualScroller.js +64 -27
  128. package/hooks/utils/useGridRootProps.d.ts +1 -1
  129. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  130. package/index.js +1 -1
  131. package/internals/index.d.ts +4 -6
  132. package/internals/index.js +3 -3
  133. package/legacy/DataGrid/DataGrid.js +28 -5
  134. package/legacy/DataGrid/useDataGridComponent.js +5 -5
  135. package/legacy/colDef/gridDateColDef.js +2 -2
  136. package/legacy/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  137. package/legacy/colDef/index.js +2 -1
  138. package/legacy/components/GridRow.js +53 -24
  139. package/legacy/components/base/GridOverlays.js +4 -3
  140. package/legacy/components/cell/GridActionsCell.js +188 -27
  141. package/legacy/components/cell/GridActionsCellItem.js +7 -5
  142. package/legacy/components/cell/GridCell.js +31 -9
  143. package/legacy/components/cell/GridEditInputCell.js +3 -3
  144. package/legacy/components/cell/GridEditSingleSelectCell.js +35 -26
  145. package/legacy/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  146. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +9 -12
  147. package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
  148. package/legacy/components/columnHeaders/index.js +1 -0
  149. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -5
  150. package/legacy/components/containers/GridRoot.js +34 -17
  151. package/legacy/components/containers/GridRootStyles.js +26 -5
  152. package/legacy/components/menu/GridMenu.js +1 -0
  153. package/legacy/components/menu/columnMenu/GridColumnMenu.js +1 -1
  154. package/legacy/components/panel/GridPanel.js +1 -0
  155. package/legacy/components/panel/GridPreferencesPanel.js +1 -1
  156. package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
  157. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  158. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
  159. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
  160. package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
  161. package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
  162. package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
  163. package/legacy/constants/defaultGridSlotsComponents.js +4 -2
  164. package/legacy/constants/gridClasses.js +1 -1
  165. package/legacy/constants/gridDetailPanelToggleField.js +2 -0
  166. package/legacy/constants/localeTextConstants.js +3 -1
  167. package/legacy/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  168. package/legacy/hooks/core/pipeProcessing/index.js +4 -0
  169. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +119 -0
  170. package/legacy/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +2 -6
  171. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
  172. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  173. package/legacy/hooks/core/useGridInitialization.js +2 -2
  174. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +90 -11
  175. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  176. package/legacy/hooks/features/columns/gridColumnsUtils.js +120 -32
  177. package/legacy/hooks/features/columns/useGridColumnSpanning.js +107 -0
  178. package/legacy/hooks/features/columns/useGridColumns.js +55 -40
  179. package/legacy/hooks/features/dimensions/useGridDimensions.js +5 -4
  180. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +36 -15
  181. package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
  182. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +53 -30
  183. package/legacy/hooks/features/events/useGridEvents.js +2 -0
  184. package/legacy/hooks/features/filter/useGridFilter.js +18 -13
  185. package/legacy/hooks/features/focus/useGridFocus.js +19 -9
  186. package/legacy/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +66 -12
  187. package/legacy/hooks/features/pagination/useGridPage.js +11 -4
  188. package/legacy/hooks/features/pagination/useGridPageSize.js +3 -3
  189. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  190. package/legacy/hooks/features/rows/gridRowsSelector.js +3 -0
  191. package/legacy/hooks/features/rows/gridRowsUtils.js +13 -0
  192. package/legacy/hooks/features/rows/index.js +1 -1
  193. package/legacy/hooks/features/rows/useGridRows.js +35 -9
  194. package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -14
  195. package/legacy/hooks/features/scroll/useGridScroll.js +27 -14
  196. package/legacy/hooks/features/selection/useGridSelection.js +77 -27
  197. package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  198. package/legacy/hooks/features/sorting/useGridSorting.js +8 -10
  199. package/legacy/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  200. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +75 -37
  201. package/legacy/index.js +1 -1
  202. package/legacy/internals/index.js +3 -3
  203. package/legacy/locales/arSD.js +3 -1
  204. package/legacy/locales/bgBG.js +3 -1
  205. package/legacy/locales/csCZ.js +2 -0
  206. package/legacy/locales/daDK.js +37 -31
  207. package/legacy/locales/deDE.js +3 -1
  208. package/legacy/locales/elGR.js +2 -0
  209. package/legacy/locales/esES.js +2 -0
  210. package/legacy/locales/faIR.js +3 -1
  211. package/legacy/locales/fiFI.js +2 -0
  212. package/legacy/locales/frFR.js +2 -0
  213. package/legacy/locales/heIL.js +3 -1
  214. package/legacy/locales/huHU.js +122 -0
  215. package/legacy/locales/index.js +1 -0
  216. package/legacy/locales/itIT.js +2 -0
  217. package/legacy/locales/jaJP.js +2 -0
  218. package/legacy/locales/koKR.js +2 -0
  219. package/legacy/locales/nlNL.js +2 -0
  220. package/legacy/locales/plPL.js +3 -1
  221. package/legacy/locales/ptBR.js +3 -1
  222. package/legacy/locales/ruRU.js +2 -0
  223. package/legacy/locales/skSK.js +2 -0
  224. package/legacy/locales/trTR.js +3 -1
  225. package/legacy/locales/ukUA.js +2 -0
  226. package/legacy/locales/viVN.js +2 -0
  227. package/legacy/locales/zhCN.js +2 -0
  228. package/{modern/hooks/core/preProcessing/gridPreProcessingApi.js → legacy/models/api/gridColumnSpanning.js} +0 -0
  229. package/legacy/models/colDef/index.js +1 -2
  230. package/legacy/models/events/gridEvents.js +10 -3
  231. package/legacy/models/gridColumnSpanning.js +1 -0
  232. package/legacy/models/gridRows.js +1 -33
  233. package/legacy/models/index.js +2 -2
  234. package/legacy/models/params/gridPreferencePanelParams.js +1 -0
  235. package/legacy/models/params/index.js +2 -1
  236. package/locales/arSD.js +3 -1
  237. package/locales/bgBG.js +3 -1
  238. package/locales/csCZ.js +2 -0
  239. package/locales/daDK.js +33 -31
  240. package/locales/deDE.js +3 -1
  241. package/locales/elGR.js +2 -0
  242. package/locales/esES.js +2 -0
  243. package/locales/faIR.js +3 -1
  244. package/locales/fiFI.js +2 -0
  245. package/locales/frFR.js +2 -0
  246. package/locales/heIL.js +3 -1
  247. package/locales/huHU.d.ts +2 -0
  248. package/locales/huHU.js +110 -0
  249. package/locales/index.d.ts +1 -0
  250. package/locales/index.js +1 -0
  251. package/locales/itIT.js +2 -0
  252. package/locales/jaJP.js +2 -0
  253. package/locales/koKR.js +2 -0
  254. package/locales/nlNL.js +2 -0
  255. package/locales/plPL.js +3 -1
  256. package/locales/ptBR.js +3 -1
  257. package/locales/ruRU.js +2 -0
  258. package/locales/skSK.js +2 -0
  259. package/locales/trTR.js +3 -1
  260. package/locales/ukUA.js +2 -0
  261. package/locales/viVN.js +2 -0
  262. package/locales/zhCN.js +2 -0
  263. package/models/api/gridApiCommon.d.ts +3 -2
  264. package/models/api/gridColumnSpanning.d.ts +28 -0
  265. package/models/api/gridColumnSpanning.js +1 -0
  266. package/models/api/gridEditingApi.d.ts +51 -5
  267. package/models/api/gridLocaleTextApi.d.ts +1 -0
  268. package/models/api/gridParamsApi.d.ts +5 -5
  269. package/models/api/gridRowApi.d.ts +8 -2
  270. package/models/colDef/gridColDef.d.ts +38 -28
  271. package/models/colDef/index.d.ts +0 -1
  272. package/models/colDef/index.js +1 -2
  273. package/models/events/gridEventLookup.d.ts +30 -9
  274. package/models/events/gridEvents.d.ts +50 -17
  275. package/models/events/gridEvents.js +10 -3
  276. package/models/gridCell.d.ts +1 -0
  277. package/models/gridColumnSpanning.d.ts +12 -0
  278. package/models/gridColumnSpanning.js +1 -0
  279. package/models/gridEditRowModel.d.ts +1 -1
  280. package/models/gridFilterOperator.d.ts +3 -2
  281. package/models/gridIconSlotsComponent.d.ts +5 -0
  282. package/models/gridRows.d.ts +10 -18
  283. package/models/gridRows.js +1 -31
  284. package/models/gridSlotsComponent.d.ts +5 -0
  285. package/models/gridSlotsComponentsProps.d.ts +1 -0
  286. package/models/gridSortModel.d.ts +3 -4
  287. package/models/index.d.ts +1 -1
  288. package/models/index.js +2 -2
  289. package/models/params/gridCellParams.d.ts +25 -15
  290. package/models/params/gridColumnHeaderParams.d.ts +3 -2
  291. package/models/params/gridEditCellParams.d.ts +2 -3
  292. package/models/params/gridPreferencePanelParams.d.ts +3 -0
  293. package/models/params/gridPreferencePanelParams.js +1 -0
  294. package/models/params/gridRowParams.d.ts +12 -8
  295. package/models/params/gridValueOptionsParams.d.ts +3 -3
  296. package/models/params/index.d.ts +1 -0
  297. package/models/params/index.js +2 -1
  298. package/models/props/DataGridProps.d.ts +37 -17
  299. package/modern/DataGrid/DataGrid.js +28 -5
  300. package/modern/DataGrid/useDataGridComponent.js +5 -5
  301. package/modern/colDef/gridDateColDef.js +2 -2
  302. package/modern/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  303. package/modern/colDef/index.js +2 -1
  304. package/modern/components/GridRow.js +53 -22
  305. package/modern/components/base/GridOverlays.js +4 -3
  306. package/modern/components/cell/GridActionsCell.js +168 -21
  307. package/modern/components/cell/GridActionsCellItem.js +7 -5
  308. package/modern/components/cell/GridCell.js +30 -9
  309. package/modern/components/cell/GridEditInputCell.js +3 -3
  310. package/modern/components/cell/GridEditSingleSelectCell.js +22 -13
  311. package/modern/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +22 -4
  312. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -10
  313. package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
  314. package/modern/components/columnHeaders/index.js +1 -0
  315. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
  316. package/modern/components/containers/GridRoot.js +29 -17
  317. package/modern/components/containers/GridRootStyles.js +36 -1
  318. package/modern/components/menu/GridMenu.js +1 -0
  319. package/modern/components/menu/columnMenu/GridColumnMenu.js +1 -1
  320. package/modern/components/panel/GridPanel.js +1 -0
  321. package/modern/components/panel/GridPreferencesPanel.js +1 -1
  322. package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
  323. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
  324. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
  325. package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
  326. package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
  327. package/modern/components/virtualization/GridVirtualScroller.js +2 -0
  328. package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
  329. package/modern/constants/defaultGridSlotsComponents.js +4 -2
  330. package/modern/constants/gridClasses.js +1 -1
  331. package/modern/constants/gridDetailPanelToggleField.js +2 -0
  332. package/modern/constants/localeTextConstants.js +3 -1
  333. package/modern/hooks/core/pipeProcessing/gridPipeProcessingApi.js +1 -0
  334. package/modern/hooks/core/pipeProcessing/index.js +4 -0
  335. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +108 -0
  336. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  337. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +27 -0
  338. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  339. package/modern/hooks/core/useGridInitialization.js +2 -2
  340. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +77 -11
  341. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  342. package/modern/hooks/features/columns/gridColumnsUtils.js +105 -20
  343. package/modern/hooks/features/columns/useGridColumnSpanning.js +107 -0
  344. package/modern/hooks/features/columns/useGridColumns.js +55 -40
  345. package/modern/hooks/features/dimensions/useGridDimensions.js +5 -4
  346. package/modern/hooks/features/editRows/useGridCellEditing.new.js +40 -17
  347. package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
  348. package/modern/hooks/features/editRows/useGridRowEditing.new.js +44 -21
  349. package/modern/hooks/features/events/useGridEvents.js +2 -0
  350. package/modern/hooks/features/filter/useGridFilter.js +18 -13
  351. package/modern/hooks/features/focus/useGridFocus.js +19 -9
  352. package/modern/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +64 -13
  353. package/modern/hooks/features/pagination/useGridPage.js +9 -4
  354. package/modern/hooks/features/pagination/useGridPageSize.js +3 -3
  355. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +18 -5
  356. package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
  357. package/modern/hooks/features/rows/gridRowsUtils.js +11 -0
  358. package/modern/hooks/features/rows/index.js +1 -1
  359. package/modern/hooks/features/rows/useGridRows.js +25 -5
  360. package/modern/hooks/features/rows/useGridRowsMeta.js +7 -14
  361. package/modern/hooks/features/scroll/useGridScroll.js +25 -10
  362. package/modern/hooks/features/selection/useGridSelection.js +75 -27
  363. package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  364. package/modern/hooks/features/sorting/useGridSorting.js +13 -13
  365. package/modern/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  366. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +64 -23
  367. package/modern/index.js +1 -1
  368. package/modern/internals/index.js +3 -3
  369. package/modern/locales/arSD.js +3 -1
  370. package/modern/locales/bgBG.js +3 -1
  371. package/modern/locales/csCZ.js +2 -0
  372. package/modern/locales/daDK.js +33 -31
  373. package/modern/locales/deDE.js +3 -1
  374. package/modern/locales/elGR.js +2 -0
  375. package/modern/locales/esES.js +2 -0
  376. package/modern/locales/faIR.js +3 -1
  377. package/modern/locales/fiFI.js +2 -0
  378. package/modern/locales/frFR.js +2 -0
  379. package/modern/locales/heIL.js +3 -1
  380. package/modern/locales/huHU.js +110 -0
  381. package/modern/locales/index.js +1 -0
  382. package/modern/locales/itIT.js +2 -0
  383. package/modern/locales/jaJP.js +2 -0
  384. package/modern/locales/koKR.js +2 -0
  385. package/modern/locales/nlNL.js +2 -0
  386. package/modern/locales/plPL.js +3 -1
  387. package/modern/locales/ptBR.js +3 -1
  388. package/modern/locales/ruRU.js +2 -0
  389. package/modern/locales/skSK.js +2 -0
  390. package/modern/locales/trTR.js +3 -1
  391. package/modern/locales/ukUA.js +2 -0
  392. package/modern/locales/viVN.js +2 -0
  393. package/modern/locales/zhCN.js +2 -0
  394. package/modern/models/api/gridColumnSpanning.js +1 -0
  395. package/modern/models/colDef/index.js +1 -2
  396. package/modern/models/events/gridEvents.js +10 -3
  397. package/modern/models/gridColumnSpanning.js +1 -0
  398. package/modern/models/gridRows.js +1 -31
  399. package/modern/models/index.js +2 -2
  400. package/modern/models/params/gridPreferencePanelParams.js +1 -0
  401. package/modern/models/params/index.js +2 -1
  402. package/node/DataGrid/DataGrid.js +28 -5
  403. package/node/DataGrid/useDataGridComponent.js +6 -6
  404. package/node/colDef/gridDateColDef.js +2 -2
  405. package/node/{models/colDef → colDef}/gridDefaultColumnTypes.js +6 -6
  406. package/node/colDef/index.js +13 -0
  407. package/node/components/GridRow.js +56 -24
  408. package/node/components/base/GridOverlays.js +3 -2
  409. package/node/components/cell/GridActionsCell.js +172 -21
  410. package/node/components/cell/GridActionsCellItem.js +7 -4
  411. package/node/components/cell/GridCell.js +30 -9
  412. package/node/components/cell/GridEditInputCell.js +3 -3
  413. package/node/components/cell/GridEditSingleSelectCell.js +25 -15
  414. package/node/components/columnHeaders/{ColumnHeaderFilterIcon.js → GridColumnHeaderFilterIconButton.js} +23 -5
  415. package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -13
  416. package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
  417. package/node/components/columnHeaders/index.js +13 -0
  418. package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -5
  419. package/node/components/containers/GridRoot.js +28 -17
  420. package/node/components/containers/GridRootStyles.js +36 -1
  421. package/node/components/menu/GridMenu.js +1 -0
  422. package/node/components/menu/columnMenu/GridColumnMenu.js +1 -1
  423. package/node/components/panel/GridPanel.js +1 -0
  424. package/node/components/panel/GridPreferencesPanel.js +1 -1
  425. package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
  426. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
  427. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
  428. package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
  429. package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
  430. package/node/components/virtualization/GridVirtualScroller.js +2 -0
  431. package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
  432. package/node/constants/defaultGridSlotsComponents.js +3 -1
  433. package/node/constants/gridClasses.js +1 -1
  434. package/node/constants/gridDetailPanelToggleField.js +9 -0
  435. package/node/constants/localeTextConstants.js +3 -1
  436. package/node/hooks/core/{preProcessing/gridPreProcessingApi.js → pipeProcessing/gridPipeProcessingApi.js} +0 -0
  437. package/node/hooks/core/pipeProcessing/index.js +57 -0
  438. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +124 -0
  439. package/node/hooks/core/{preProcessing/useGridRegisterPreProcessor.js → pipeProcessing/useGridRegisterPipeApplier.js} +4 -7
  440. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +42 -0
  441. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +26 -15
  442. package/node/hooks/core/useGridInitialization.js +2 -2
  443. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -11
  444. package/node/hooks/features/columnMenu/useGridColumnMenu.js +2 -1
  445. package/node/hooks/features/columns/gridColumnsUtils.js +114 -25
  446. package/node/hooks/features/columns/useGridColumnSpanning.js +130 -0
  447. package/node/hooks/features/columns/useGridColumns.js +55 -40
  448. package/node/hooks/features/dimensions/useGridDimensions.js +5 -4
  449. package/node/hooks/features/editRows/useGridCellEditing.new.js +42 -17
  450. package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
  451. package/node/hooks/features/editRows/useGridRowEditing.new.js +45 -21
  452. package/node/hooks/features/events/useGridEvents.js +2 -0
  453. package/node/hooks/features/filter/useGridFilter.js +18 -13
  454. package/node/hooks/features/focus/useGridFocus.js +19 -9
  455. package/node/hooks/features/{keyboard → keyboardNavigation}/useGridKeyboardNavigation.js +69 -13
  456. package/node/hooks/features/pagination/useGridPage.js +8 -3
  457. package/node/hooks/features/pagination/useGridPageSize.js +3 -3
  458. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +20 -5
  459. package/node/hooks/features/rows/gridRowsSelector.js +3 -1
  460. package/node/hooks/features/rows/gridRowsUtils.js +18 -0
  461. package/node/hooks/features/rows/index.js +15 -1
  462. package/node/hooks/features/rows/useGridRows.js +29 -9
  463. package/node/hooks/features/rows/useGridRowsMeta.js +7 -15
  464. package/node/hooks/features/scroll/useGridScroll.js +28 -14
  465. package/node/hooks/features/selection/useGridSelection.js +75 -26
  466. package/node/hooks/features/selection/useGridSelectionPreProcessors.js +2 -2
  467. package/node/hooks/features/sorting/useGridSorting.js +13 -13
  468. package/node/hooks/features/statePersistence/useGridStatePersistence.js +2 -2
  469. package/node/hooks/features/virtualization/useGridVirtualScroller.js +69 -27
  470. package/node/index.js +1 -1
  471. package/node/internals/index.js +12 -12
  472. package/node/locales/arSD.js +3 -1
  473. package/node/locales/bgBG.js +3 -1
  474. package/node/locales/csCZ.js +2 -0
  475. package/node/locales/daDK.js +33 -31
  476. package/node/locales/deDE.js +3 -1
  477. package/node/locales/elGR.js +2 -0
  478. package/node/locales/esES.js +2 -0
  479. package/node/locales/faIR.js +3 -1
  480. package/node/locales/fiFI.js +2 -0
  481. package/node/locales/frFR.js +2 -0
  482. package/node/locales/heIL.js +3 -1
  483. package/node/locales/huHU.js +120 -0
  484. package/node/locales/index.js +13 -0
  485. package/node/locales/itIT.js +2 -0
  486. package/node/locales/jaJP.js +2 -0
  487. package/node/locales/koKR.js +2 -0
  488. package/node/locales/nlNL.js +2 -0
  489. package/node/locales/plPL.js +3 -1
  490. package/node/locales/ptBR.js +3 -1
  491. package/node/locales/ruRU.js +2 -0
  492. package/node/locales/skSK.js +2 -0
  493. package/node/locales/trTR.js +3 -1
  494. package/node/locales/ukUA.js +2 -0
  495. package/node/locales/viVN.js +2 -0
  496. package/node/locales/zhCN.js +2 -0
  497. package/node/models/api/gridColumnSpanning.js +5 -0
  498. package/node/models/colDef/index.js +0 -13
  499. package/node/models/events/gridEvents.js +10 -3
  500. package/node/models/gridColumnSpanning.js +5 -0
  501. package/node/models/gridRows.js +1 -34
  502. package/node/models/index.js +13 -13
  503. package/node/models/params/gridPreferencePanelParams.js +5 -0
  504. package/node/models/params/index.js +13 -0
  505. package/package.json +4 -4
  506. package/utils/domUtils.d.ts +2 -2
  507. package/components/columnHeaders/ColumnHeaderFilterIcon.d.ts +0 -5
  508. package/hooks/core/preProcessing/gridPreProcessingApi.d.ts +0 -67
  509. package/hooks/core/preProcessing/index.d.ts +0 -3
  510. package/hooks/core/preProcessing/index.js +0 -3
  511. package/hooks/core/preProcessing/useGridPreProcessing.d.ts +0 -6
  512. package/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
  513. package/hooks/core/preProcessing/useGridRegisterPreProcessor.d.ts +0 -7
  514. package/hooks/features/keyboard/useGridKeyboard.d.ts +0 -10
  515. package/hooks/features/keyboard/useGridKeyboard.js +0 -70
  516. package/legacy/hooks/core/preProcessing/index.js +0 -3
  517. package/legacy/hooks/core/preProcessing/useGridPreProcessing.js +0 -62
  518. package/legacy/hooks/features/keyboard/useGridKeyboard.js +0 -70
  519. package/modern/hooks/core/preProcessing/index.js +0 -3
  520. package/modern/hooks/core/preProcessing/useGridPreProcessing.js +0 -53
  521. package/modern/hooks/features/keyboard/useGridKeyboard.js +0 -70
  522. package/node/hooks/core/preProcessing/index.js +0 -44
  523. package/node/hooks/core/preProcessing/useGridPreProcessing.js +0 -72
  524. package/node/hooks/features/keyboard/useGridKeyboard.js +0 -91
@@ -7,31 +7,51 @@ import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelecto
7
7
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
8
8
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef/gridCheckboxSelectionColDef';
9
9
  import { gridClasses } from '../../../constants/gridClasses';
10
+ import { GridCellModes } from '../../../models/gridEditRowModel';
11
+ import { isNavigationKey } from '../../../utils/keyboardUtils';
12
+ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
10
13
  /**
11
- * @requires useGridPage (state)
12
- * @requires useGridPageSize (state)
13
- * @requires useGridFilter (state)
14
- * @requires useGridColumns (state, method)
15
- * @requires useGridRows (state, method)
16
14
  * @requires useGridSorting (method) - can be after
15
+ * @requires useGridFilter (state) - can be after
16
+ * @requires useGridColumns (state, method) - can be after
17
17
  * @requires useGridDimensions (method) - can be after
18
18
  * @requires useGridFocus (method) - can be after
19
19
  * @requires useGridScroll (method) - can be after
20
+ * @requires useGridColumnSpanning (method) - can be after
20
21
  */
21
22
 
22
23
  export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef, props) {
23
24
  var logger = useGridLogger(apiRef, 'useGridKeyboardNavigation');
24
25
  var currentPage = useGridVisibleRows(apiRef, props);
26
+ /**
27
+ * @param {number} colIndex Index of the column to focus
28
+ * @param {number} rowIndex index of the row to focus
29
+ * @param {string} closestColumnToUse Which closest column cell to use when the cell is spanned by `colSpan`.
30
+ */
31
+
25
32
  var goToCell = React.useCallback(function (colIndex, rowIndex) {
33
+ var _visibleSortedRows$ro;
34
+
35
+ var closestColumnToUse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'left';
36
+ var visibleSortedRows = gridVisibleSortedRowEntriesSelector(apiRef);
37
+ var rowId = (_visibleSortedRows$ro = visibleSortedRows[rowIndex]) == null ? void 0 : _visibleSortedRows$ro.id;
38
+ var nextCellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, colIndex);
39
+
40
+ if (nextCellColSpanInfo && nextCellColSpanInfo.spannedByColSpan) {
41
+ if (closestColumnToUse === 'left') {
42
+ colIndex = nextCellColSpanInfo.leftVisibleCellIndex;
43
+ } else if (closestColumnToUse === 'right') {
44
+ colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
45
+ }
46
+ }
47
+
26
48
  logger.debug("Navigating to cell row ".concat(rowIndex, ", col ").concat(colIndex));
27
49
  apiRef.current.scrollToIndexes({
28
50
  colIndex: colIndex,
29
51
  rowIndex: rowIndex
30
52
  });
31
53
  var field = apiRef.current.getVisibleColumns()[colIndex].field;
32
- var visibleSortedRows = gridVisibleSortedRowEntriesSelector(apiRef);
33
- var node = visibleSortedRows[rowIndex];
34
- apiRef.current.setCellFocus(node.id, field);
54
+ apiRef.current.setCellFocus(rowId, field);
35
55
  }, [apiRef, logger]);
36
56
  var goToHeader = React.useCallback(function (colIndex, event) {
37
57
  logger.debug("Navigating to header col ".concat(colIndex));
@@ -86,7 +106,7 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
86
106
  case 'ArrowRight':
87
107
  {
88
108
  if (colIndexBefore < lastColIndex) {
89
- goToCell(colIndexBefore + 1, rowIndexBefore);
109
+ goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
90
110
  }
91
111
 
92
112
  break;
@@ -105,16 +125,36 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
105
125
  {
106
126
  // "Tab" is only triggered by the row / cell editing feature
107
127
  if (event.shiftKey && colIndexBefore > firstColIndex) {
108
- goToCell(colIndexBefore - 1, rowIndexBefore);
128
+ goToCell(colIndexBefore - 1, rowIndexBefore, 'left');
109
129
  } else if (!event.shiftKey && colIndexBefore < lastColIndex) {
110
- goToCell(colIndexBefore + 1, rowIndexBefore);
130
+ goToCell(colIndexBefore + 1, rowIndexBefore, 'right');
111
131
  }
112
132
 
113
133
  break;
114
134
  }
115
135
 
116
- case 'PageDown':
117
136
  case ' ':
137
+ {
138
+ var field = params.field;
139
+
140
+ if (field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
141
+ break;
142
+ }
143
+
144
+ var colDef = params.colDef;
145
+
146
+ if (colDef && colDef.type === 'treeDataGroup') {
147
+ break;
148
+ }
149
+
150
+ if (!event.shiftKey && rowIndexBefore < lastRowIndexInPage) {
151
+ goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
152
+ }
153
+
154
+ break;
155
+ }
156
+
157
+ case 'PageDown':
118
158
  {
119
159
  if (rowIndexBefore < lastRowIndexInPage) {
120
160
  goToCell(colIndexBefore, Math.min(rowIndexBefore + viewportPageSize, lastRowIndexInPage));
@@ -269,6 +309,20 @@ export var useGridKeyboardNavigation = function useGridKeyboardNavigation(apiRef
269
309
  event.preventDefault();
270
310
  }
271
311
  }, [apiRef, currentPage, goToCell, goToHeader]);
312
+ var handleCellKeyDown = React.useCallback(function (params, event) {
313
+ // Ignore portal
314
+ if (!event.currentTarget.contains(event.target)) {
315
+ return;
316
+ } // Get the most recent params because the cell mode may have changed by another listener
317
+
318
+
319
+ var cellParams = apiRef.current.getCellParams(params.id, params.field);
320
+
321
+ if (cellParams.cellMode !== GridCellModes.Edit && isNavigationKey(event.key)) {
322
+ apiRef.current.publishEvent(GridEvents.cellNavigationKeyDown, cellParams, event);
323
+ }
324
+ }, [apiRef]);
272
325
  useGridApiEventHandler(apiRef, GridEvents.cellNavigationKeyDown, handleCellNavigationKeyDown);
273
326
  useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
327
+ useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
274
328
  };
@@ -3,8 +3,8 @@ import * as React from 'react';
3
3
  import { useGridLogger, useGridSelector, useGridApiMethod, useGridApiEventHandler } from '../../utils';
4
4
  import { GridEvents } from '../../../models/events';
5
5
  import { gridVisibleTopLevelRowCountSelector } from '../filter';
6
- import { gridPageSelector } from './gridPaginationSelector';
7
- import { useGridRegisterPreProcessor } from '../../core/preProcessing';
6
+ import { gridPageSelector, gridPageSizeSelector } from './gridPaginationSelector';
7
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
8
8
  import { buildWarning } from '../../../utils/warning';
9
9
  export var getPageCount = function getPageCount(rowCount, pageSize) {
10
10
  if (pageSize > 0 && rowCount > 0) {
@@ -95,8 +95,8 @@ export var useGridPage = function useGridPage(apiRef, props) {
95
95
  apiRef.current.setState(mergeStateWithPage(page));
96
96
  return params;
97
97
  }, [apiRef]);
98
- useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
99
- useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
98
+ useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
99
+ useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
100
100
  /**
101
101
  * EVENTS
102
102
  */
@@ -114,7 +114,14 @@ export var useGridPage = function useGridPage(apiRef, props) {
114
114
  apiRef.current.forceUpdate();
115
115
  };
116
116
 
117
+ var handlePageChange = function handlePageChange() {
118
+ return apiRef.current.scrollToIndexes({
119
+ rowIndex: gridPageSelector(apiRef) * gridPageSizeSelector(apiRef)
120
+ });
121
+ };
122
+
117
123
  useGridApiEventHandler(apiRef, GridEvents.pageSizeChange, handlePageSizeChange);
124
+ useGridApiEventHandler(apiRef, GridEvents.pageChange, handlePageChange);
118
125
  /**
119
126
  * EFFECTS
120
127
  */
@@ -4,7 +4,7 @@ import { GridEvents } from '../../../models/events';
4
4
  import { useGridLogger, useGridApiMethod, useGridApiEventHandler, useGridSelector } from '../../utils';
5
5
  import { gridPageSizeSelector } from './gridPaginationSelector';
6
6
  import { gridDensityRowHeightSelector } from '../density';
7
- import { useGridRegisterPreProcessor } from '../../core/preProcessing';
7
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
8
8
  export var defaultPageSize = function defaultPageSize(autoPageSize) {
9
9
  return autoPageSize ? 0 : 100;
10
10
  };
@@ -90,8 +90,8 @@ export var useGridPageSize = function useGridPageSize(apiRef, props) {
90
90
 
91
91
  return params;
92
92
  }, [apiRef]);
93
- useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
94
- useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
93
+ useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
94
+ useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
95
95
  /**
96
96
  * EVENTS
97
97
  */
@@ -1,9 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import { GridEvents } from '../../../models/events';
3
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
4
5
  import { useGridLogger } from '../../utils/useGridLogger';
5
- import { useGridRegisterPreProcessor } from '../../core/preProcessing';
6
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
6
7
  import { gridPreferencePanelStateSelector } from './gridPreferencePanelSelector';
8
+ import { useGridSelector } from '../../utils/useGridSelector';
7
9
  export var preferencePanelStateInitializer = function preferencePanelStateInitializer(state, props) {
8
10
  var _props$initialState$p, _props$initialState;
9
11
 
@@ -19,6 +21,7 @@ export var preferencePanelStateInitializer = function preferencePanelStateInitia
19
21
 
20
22
  export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
21
23
  var logger = useGridLogger(apiRef, 'useGridPreferencesPanel');
24
+ var preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
22
25
  var hideTimeout = React.useRef();
23
26
  var immediateTimeout = React.useRef();
24
27
  /**
@@ -27,6 +30,13 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
27
30
 
28
31
  var hidePreferences = React.useCallback(function () {
29
32
  logger.debug('Hiding Preferences Panel');
33
+
34
+ if (preferencePanelState.openedPanelValue) {
35
+ apiRef.current.publishEvent(GridEvents.preferencePanelClose, {
36
+ openedPanelValue: preferencePanelState.openedPanelValue
37
+ });
38
+ }
39
+
30
40
  apiRef.current.setState(function (state) {
31
41
  return _extends({}, state, {
32
42
  preferencePanel: {
@@ -35,7 +45,7 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
35
45
  });
36
46
  });
37
47
  apiRef.current.forceUpdate();
38
- }, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
48
+ }, [apiRef, logger, preferencePanelState.openedPanelValue]); // This is to prevent the preferences from closing when you open a select box or another panel,
39
49
  // The issue is in MUI core V4 => Fixed in V5
40
50
 
41
51
  var doNotHidePanel = React.useCallback(function () {
@@ -59,8 +69,11 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
59
69
  })
60
70
  });
61
71
  });
72
+ apiRef.current.publishEvent(GridEvents.preferencePanelOpen, {
73
+ openedPanelValue: newValue
74
+ });
62
75
  apiRef.current.forceUpdate();
63
- }, [doNotHidePanel, apiRef, logger]);
76
+ }, [logger, doNotHidePanel, apiRef]);
64
77
  useGridApiMethod(apiRef, {
65
78
  showPreferences: showPreferences,
66
79
  hidePreferences: hidePreferencesDelayed
@@ -93,8 +106,8 @@ export var useGridPreferencesPanel = function useGridPreferencesPanel(apiRef) {
93
106
 
94
107
  return params;
95
108
  }, [apiRef]);
96
- useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
97
- useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
109
+ useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
110
+ useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
98
111
  /**
99
112
  * EFFECTS
100
113
  */
@@ -5,6 +5,9 @@ export var gridRowsStateSelector = function gridRowsStateSelector(state) {
5
5
  export var gridRowCountSelector = createSelector(gridRowsStateSelector, function (rows) {
6
6
  return rows.totalRowCount;
7
7
  });
8
+ export var gridRowsLoadingSelector = createSelector(gridRowsStateSelector, function (rows) {
9
+ return rows.loading;
10
+ });
8
11
  export var gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, function (rows) {
9
12
  return rows.totalTopLevelRowCount;
10
13
  });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * A helper function to check if the id provided is valid.
3
+ * @param {GridRowId} id Id as [[GridRowId]].
4
+ * @param {GridRowModel | Partial<GridRowModel>} row Row as [[GridRowModel]].
5
+ * @param {string} detailErrorMessage A custom error message to display for invalid IDs
6
+ */
7
+ export function checkGridRowIdIsValid(id, row) {
8
+ var detailErrorMessage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'A row was provided without id in the rows prop:';
9
+
10
+ if (id == null) {
11
+ throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
12
+ }
13
+ }
@@ -1,4 +1,4 @@
1
1
  export * from './gridRowsMetaSelector';
2
2
  export * from './gridRowsMetaState';
3
3
  export * from './gridRowsSelector';
4
- export {};
4
+ export { checkGridRowIdIsValid } from './gridRowsUtils';
@@ -3,12 +3,12 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import { GridEvents } from '../../../models/events';
6
- import { checkGridRowIdIsValid } from '../../../models/gridRows';
7
6
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
8
7
  import { useGridLogger } from '../../utils/useGridLogger';
9
8
  import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector } from './gridRowsSelector';
10
9
  import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
11
10
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
11
+ import { checkGridRowIdIsValid } from './gridRowsUtils';
12
12
 
13
13
  function getGridRowId(rowModel, getRowId, detailErrorMessage) {
14
14
  var id = getRowId ? getRowId(rowModel) : rowModel.id;
@@ -44,7 +44,7 @@ var convertGridRowsPropToState = function convertGridRowsPropToState(_ref) {
44
44
  };
45
45
  };
46
46
 
47
- var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTree, apiRef, rowCountProp) {
47
+ var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTree, apiRef, rowCountProp, loadingProp) {
48
48
  var value = rowsCache.state.value;
49
49
  var rowCount = rowCountProp != null ? rowCountProp : 0;
50
50
  var groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', _extends({}, value, {
@@ -54,6 +54,7 @@ var getRowsStateFromCache = function getRowsStateFromCache(rowsCache, previousTr
54
54
  return node.parent == null;
55
55
  }).length;
56
56
  return _extends({}, groupingResponse, {
57
+ loading: loadingProp,
57
58
  totalRowCount: Math.max(rowCount, groupingResponse.ids.length),
58
59
  totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
59
60
  });
@@ -76,7 +77,7 @@ export var rowsStateInitializer = function rowsStateInitializer(state, props, ap
76
77
  lastUpdateMs: Date.now()
77
78
  };
78
79
  return _extends({}, state, {
79
- rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount),
80
+ rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount, props.loading),
80
81
  rowsCache: rowsCache // TODO remove from state
81
82
 
82
83
  });
@@ -92,13 +93,13 @@ export var useGridRows = function useGridRows(apiRef, props) {
92
93
 
93
94
  var currentPage = useGridVisibleRows(apiRef, props);
94
95
  var getRow = React.useCallback(function (id) {
95
- var _gridRowsLookupSelect;
96
+ var _ref2;
96
97
 
97
- return (_gridRowsLookupSelect = gridRowsLookupSelector(apiRef)[id]) != null ? _gridRowsLookupSelect : null;
98
+ return (_ref2 = gridRowsLookupSelector(apiRef)[id]) != null ? _ref2 : null;
98
99
  }, [apiRef]);
99
100
  var lookup = React.useMemo(function () {
100
- return currentPage.rows.reduce(function (acc, _ref2, index) {
101
- var id = _ref2.id;
101
+ return currentPage.rows.reduce(function (acc, _ref3, index) {
102
+ var id = _ref3.id;
102
103
  acc[id] = index;
103
104
  return acc;
104
105
  }, {});
@@ -109,7 +110,7 @@ export var useGridRows = function useGridRows(apiRef, props) {
109
110
  rowsCache.current.lastUpdateMs = Date.now();
110
111
  apiRef.current.setState(function (state) {
111
112
  return _extends({}, state, {
112
- rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount)
113
+ rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount, props.loading)
113
114
  });
114
115
  });
115
116
  apiRef.current.publishEvent(GridEvents.rowsSet);
@@ -136,7 +137,7 @@ export var useGridRows = function useGridRows(apiRef, props) {
136
137
  }
137
138
 
138
139
  run();
139
- }, [props.throttleRowsMs, props.rowCount, apiRef]);
140
+ }, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);
140
141
  /**
141
142
  * API METHODS
142
143
  */
@@ -244,12 +245,37 @@ export var useGridRows = function useGridRows(apiRef, props) {
244
245
 
245
246
  return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
246
247
  }, [apiRef]);
248
+ var setRowIndex = React.useCallback(function (rowId, targetIndex) {
249
+ var allRows = gridRowIdsSelector(apiRef);
250
+ var oldIndex = allRows.findIndex(function (row) {
251
+ return row === rowId;
252
+ });
253
+
254
+ if (oldIndex === targetIndex) {
255
+ return;
256
+ }
257
+
258
+ logger.debug("Moving row ".concat(rowId, " to index ").concat(targetIndex));
259
+
260
+ var updatedRows = _toConsumableArray(allRows);
261
+
262
+ updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
263
+ apiRef.current.setState(function (state) {
264
+ return _extends({}, state, {
265
+ rows: _extends({}, state.rows, {
266
+ ids: updatedRows
267
+ })
268
+ });
269
+ });
270
+ apiRef.current.applySorting();
271
+ }, [apiRef, logger]);
247
272
  var rowApi = {
248
273
  getRow: getRow,
249
274
  getRowModels: getRowModels,
250
275
  getRowsCount: getRowsCount,
251
276
  getAllRowIds: getAllRowIds,
252
277
  setRows: setRows,
278
+ setRowIndex: setRowIndex,
253
279
  updateRows: updateRows,
254
280
  setRowChildrenExpansion: setRowChildrenExpansion,
255
281
  getRowNode: getRowNode,
@@ -7,8 +7,7 @@ import { gridDensityRowHeightSelector, gridDensityFactorSelector } from '../dens
7
7
  import { gridFilterStateSelector } from '../filter/gridFilterSelector';
8
8
  import { gridPaginationSelector } from '../pagination/gridPaginationSelector';
9
9
  import { gridSortingStateSelector } from '../sorting/gridSortingSelector';
10
- import { GridEvents } from '../../../models/events/gridEvents';
11
- import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
10
+ import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
12
11
  export var rowsMetaStateInitializer = function rowsMetaStateInitializer(state) {
13
12
  return _extends({}, state, {
14
13
  rowsMeta: {
@@ -65,16 +64,17 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
65
64
  if (getRowSpacing) {
66
65
  var _spacing$top, _spacing$bottom;
67
66
 
68
- var index = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
67
+ var indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
69
68
  var spacing = getRowSpacing(_extends({}, row, {
70
- isFirstVisible: index === 0,
71
- isLastVisible: index === currentPage.rows.length - 1
69
+ isFirstVisible: indexRelativeToCurrentPage === 0,
70
+ isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
71
+ indexRelativeToCurrentPage: indexRelativeToCurrentPage
72
72
  }));
73
73
  initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
74
74
  initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
75
75
  }
76
76
 
77
- var sizes = apiRef.current.unstable_applyPreProcessors('rowHeight', initialHeights, row);
77
+ var sizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
78
78
  var finalRowHeight = Object.values(sizes).reduce(function (acc2, value) {
79
79
  return acc2 + value;
80
80
  }, 0);
@@ -122,14 +122,7 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
122
122
  React.useEffect(function () {
123
123
  hydrateRowsMeta();
124
124
  }, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
125
- var handlePreProcessorRegister = React.useCallback(function (name) {
126
- if (name !== 'rowHeight') {
127
- return;
128
- }
129
-
130
- hydrateRowsMeta();
131
- }, [hydrateRowsMeta]);
132
- useGridApiEventHandler(apiRef, GridEvents.preProcessorRegister, handlePreProcessorRegister);
125
+ useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
133
126
  var rowsMetaApi = {
134
127
  unstable_getRowHeight: getTargetRowHeight,
135
128
  unstable_getRowInternalSizes: getRowInternalSizes,
@@ -2,11 +2,12 @@ import _typeof from "@babel/runtime/helpers/esm/typeof";
2
2
  import * as React from 'react';
3
3
  import { useGridLogger } from '../../utils/useGridLogger';
4
4
  import { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
5
+ import { useGridSelector } from '../../utils/useGridSelector';
5
6
  import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPaginationSelector';
6
7
  import { gridRowCountSelector } from '../rows/gridRowsSelector';
7
8
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
8
9
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
9
- import { useGridNativeEventListener } from '../../utils/useGridNativeEventListener'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
10
+ import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
10
11
  // Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
11
12
 
12
13
  function scrollIntoView(dimensions) {
@@ -31,6 +32,8 @@ function scrollIntoView(dimensions) {
31
32
  * @requires useGridColumns (state) - can be after, async only
32
33
  * @requires useGridRows (state) - can be after, async only
33
34
  * @requires useGridRowsMeta (state) - can be after, async only
35
+ * @requires useGridFilter (state)
36
+ * @requires useGridColumnSpanning (method)
34
37
  */
35
38
 
36
39
 
@@ -38,11 +41,13 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
38
41
  var logger = useGridLogger(apiRef, 'useGridScroll');
39
42
  var colRef = apiRef.current.columnHeadersElementRef;
40
43
  var windowRef = apiRef.current.windowRef;
44
+ var visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
41
45
  var scrollToIndexes = React.useCallback(function (params) {
42
46
  var totalRowCount = gridRowCountSelector(apiRef);
43
47
  var visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
48
+ var scrollToHeader = params.rowIndex == null;
44
49
 
45
- if (totalRowCount === 0 || visibleColumns.length === 0) {
50
+ if (!scrollToHeader && totalRowCount === 0 || visibleColumns.length === 0) {
46
51
  return false;
47
52
  }
48
53
 
@@ -51,10 +56,27 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
51
56
 
52
57
  if (params.colIndex != null) {
53
58
  var columnPositions = gridColumnPositionsSelector(apiRef);
59
+ var cellWidth;
60
+
61
+ if (typeof params.rowIndex !== 'undefined') {
62
+ var _visibleSortedRows$pa;
63
+
64
+ var rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
65
+ var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
66
+
67
+ if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
68
+ cellWidth = cellColSpanInfo.cellProps.width;
69
+ }
70
+ }
71
+
72
+ if (typeof cellWidth === 'undefined') {
73
+ cellWidth = visibleColumns[params.colIndex].computedWidth;
74
+ }
75
+
54
76
  scrollCoordinates.left = scrollIntoView({
55
77
  clientHeight: windowRef.current.clientWidth,
56
78
  scrollTop: windowRef.current.scrollLeft,
57
- offsetHeight: visibleColumns[params.colIndex].computedWidth,
79
+ offsetHeight: cellWidth,
58
80
  offsetTop: columnPositions[params.colIndex]
59
81
  });
60
82
  }
@@ -73,7 +95,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
73
95
  });
74
96
  }
75
97
 
76
- scrollCoordinates = apiRef.current.unstable_applyPreProcessors('scrollToIndexes', scrollCoordinates, params);
98
+ scrollCoordinates = apiRef.current.unstable_applyPipeProcessors('scrollToIndexes', scrollCoordinates, params);
77
99
 
78
100
  if (_typeof(scrollCoordinates.left) !== undefined || _typeof(scrollCoordinates.top) !== undefined) {
79
101
  apiRef.current.scroll(scrollCoordinates);
@@ -81,7 +103,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
81
103
  }
82
104
 
83
105
  return false;
84
- }, [logger, apiRef, windowRef, props.pagination]);
106
+ }, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
85
107
  var scroll = React.useCallback(function (params) {
86
108
  if (windowRef.current && params.left != null && colRef.current) {
87
109
  colRef.current.scrollLeft = params.left;
@@ -115,13 +137,4 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
115
137
  getScrollPosition: getScrollPosition
116
138
  };
117
139
  useGridApiMethod(apiRef, scrollApi, 'GridScrollApi');
118
- var preventScroll = React.useCallback(function (event) {
119
- event.target.scrollLeft = 0;
120
- event.target.scrollTop = 0;
121
- }, []);
122
- useGridNativeEventListener(apiRef, function () {
123
- var _apiRef$current, _apiRef$current$rende, _apiRef$current$rende2;
124
-
125
- return (_apiRef$current = apiRef.current) == null ? void 0 : (_apiRef$current$rende = _apiRef$current.renderingZoneRef) == null ? void 0 : (_apiRef$current$rende2 = _apiRef$current$rende.current) == null ? void 0 : _apiRef$current$rende2.parentElement;
126
- }, 'scroll', preventScroll);
127
140
  };