@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
@@ -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 const preferencePanelStateInitializer = (state, props) => {
8
10
  var _props$initialState$p, _props$initialState;
9
11
 
@@ -19,6 +21,7 @@ export const preferencePanelStateInitializer = (state, props) => {
19
21
 
20
22
  export const useGridPreferencesPanel = apiRef => {
21
23
  const logger = useGridLogger(apiRef, 'useGridPreferencesPanel');
24
+ const preferencePanelState = useGridSelector(apiRef, gridPreferencePanelStateSelector);
22
25
  const hideTimeout = React.useRef();
23
26
  const immediateTimeout = React.useRef();
24
27
  /**
@@ -27,13 +30,20 @@ export const useGridPreferencesPanel = apiRef => {
27
30
 
28
31
  const hidePreferences = React.useCallback(() => {
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(state => _extends({}, state, {
31
41
  preferencePanel: {
32
42
  open: false
33
43
  }
34
44
  }));
35
45
  apiRef.current.forceUpdate();
36
- }, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
46
+ }, [apiRef, logger, preferencePanelState.openedPanelValue]); // This is to prevent the preferences from closing when you open a select box or another panel,
37
47
  // The issue is in MUI core V4 => Fixed in V5
38
48
 
39
49
  const doNotHidePanel = React.useCallback(() => {
@@ -53,8 +63,11 @@ export const useGridPreferencesPanel = apiRef => {
53
63
  openedPanelValue: newValue
54
64
  })
55
65
  }));
66
+ apiRef.current.publishEvent(GridEvents.preferencePanelOpen, {
67
+ openedPanelValue: newValue
68
+ });
56
69
  apiRef.current.forceUpdate();
57
- }, [doNotHidePanel, apiRef, logger]);
70
+ }, [logger, doNotHidePanel, apiRef]);
58
71
  useGridApiMethod(apiRef, {
59
72
  showPreferences,
60
73
  hidePreferences: hidePreferencesDelayed
@@ -85,8 +98,8 @@ export const useGridPreferencesPanel = apiRef => {
85
98
 
86
99
  return params;
87
100
  }, [apiRef]);
88
- useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
89
- useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
101
+ useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
102
+ useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
90
103
  /**
91
104
  * EFFECTS
92
105
  */
@@ -1,8 +1,9 @@
1
1
  import { GridStateCommunity } from '../../../models/gridStateCommunity';
2
2
  export declare const gridRowsStateSelector: (state: GridStateCommunity) => import("./gridRowsState").GridRowsState;
3
3
  export declare const gridRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
4
+ export declare const gridRowsLoadingSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, boolean | undefined>;
4
5
  export declare const gridTopLevelRowCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
5
- export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowsLookup>;
6
+ export declare const gridRowsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowsLookup<any>>;
6
7
  export declare const gridRowTreeSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridRowTreeConfig>;
7
8
  export declare const gridRowGroupingNameSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, string>;
8
9
  export declare const gridRowTreeDepthSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
@@ -1,6 +1,7 @@
1
1
  import { createSelector } from '../../../utils/createSelector';
2
2
  export const gridRowsStateSelector = state => state.rows;
3
3
  export const gridRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalRowCount);
4
+ export const gridRowsLoadingSelector = createSelector(gridRowsStateSelector, rows => rows.loading);
4
5
  export const gridTopLevelRowCountSelector = createSelector(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);
5
6
  export const gridRowsLookupSelector = createSelector(gridRowsStateSelector, rows => rows.idRowsLookup);
6
7
  export const gridRowTreeSelector = createSelector(gridRowsStateSelector, rows => rows.tree);
@@ -31,6 +31,10 @@ export interface GridRowsInternalCache {
31
31
  lastUpdateMs: number;
32
32
  }
33
33
  export interface GridRowsState extends GridRowTreeCreationValue {
34
+ /**
35
+ * Matches the value of the `loading` prop.
36
+ */
37
+ loading?: boolean;
34
38
  /**
35
39
  * Amount of rows before applying the filtering.
36
40
  * It also counts the expanded and collapsed children rows.
@@ -0,0 +1,8 @@
1
+ import { GridRowId, GridRowModel } from '../../../models';
2
+ /**
3
+ * A helper function to check if the id provided is valid.
4
+ * @param {GridRowId} id Id as [[GridRowId]].
5
+ * @param {GridRowModel | Partial<GridRowModel>} row Row as [[GridRowModel]].
6
+ * @param {string} detailErrorMessage A custom error message to display for invalid IDs
7
+ */
8
+ export declare function checkGridRowIdIsValid(id: GridRowId, row: GridRowModel | Partial<GridRowModel>, detailErrorMessage?: string): void;
@@ -0,0 +1,11 @@
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, detailErrorMessage = 'A row was provided without id in the rows prop:') {
8
+ if (id == null) {
9
+ 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'));
10
+ }
11
+ }
@@ -2,3 +2,4 @@ export * from './gridRowsMetaSelector';
2
2
  export * from './gridRowsMetaState';
3
3
  export * from './gridRowsSelector';
4
4
  export type { GridRowsState } from './gridRowsState';
5
+ export { checkGridRowIdIsValid } from './gridRowsUtils';
@@ -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';
@@ -2,5 +2,5 @@ import * as React from 'react';
2
2
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
3
3
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
- export declare const rowsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'rows' | 'rowCount' | 'getRowId'>>;
6
- export declare const useGridRows: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'getRowId' | 'rowCount' | 'throttleRowsMs' | 'signature' | 'pagination' | 'paginationMode'>) => void;
5
+ export declare const rowsStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'rows' | 'rowCount' | 'getRowId' | 'loading'>>;
6
+ export declare const useGridRows: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'getRowId' | 'rowCount' | 'throttleRowsMs' | 'signature' | 'pagination' | 'paginationMode' | 'loading'>) => void;
@@ -1,12 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { GridEvents } from '../../../models/events';
4
- import { checkGridRowIdIsValid } from '../../../models/gridRows';
5
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
5
  import { useGridLogger } from '../../utils/useGridLogger';
7
6
  import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector } from './gridRowsSelector';
8
7
  import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
9
8
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
9
+ import { checkGridRowIdIsValid } from './gridRowsUtils';
10
10
 
11
11
  function getGridRowId(rowModel, getRowId, detailErrorMessage) {
12
12
  const id = getRowId ? getRowId(rowModel) : rowModel.id;
@@ -43,7 +43,7 @@ const convertGridRowsPropToState = ({
43
43
  };
44
44
  };
45
45
 
46
- const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp) => {
46
+ const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp, loadingProp) => {
47
47
  const {
48
48
  value
49
49
  } = rowsCache.state;
@@ -53,6 +53,7 @@ const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp) =>
53
53
  }));
54
54
  const dataTopLevelRowCount = groupingResponse.treeDepth === 1 ? groupingResponse.ids.length : Object.values(groupingResponse.tree).filter(node => node.parent == null).length;
55
55
  return _extends({}, groupingResponse, {
56
+ loading: loadingProp,
56
57
  totalRowCount: Math.max(rowCount, groupingResponse.ids.length),
57
58
  totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
58
59
  });
@@ -75,7 +76,7 @@ export const rowsStateInitializer = (state, props, apiRef) => {
75
76
  lastUpdateMs: Date.now()
76
77
  };
77
78
  return _extends({}, state, {
78
- rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount),
79
+ rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount, props.loading),
79
80
  rowsCache // TODO remove from state
80
81
 
81
82
  });
@@ -91,9 +92,9 @@ export const useGridRows = (apiRef, props) => {
91
92
 
92
93
  const currentPage = useGridVisibleRows(apiRef, props);
93
94
  const getRow = React.useCallback(id => {
94
- var _gridRowsLookupSelect;
95
+ var _ref;
95
96
 
96
- return (_gridRowsLookupSelect = gridRowsLookupSelector(apiRef)[id]) != null ? _gridRowsLookupSelect : null;
97
+ return (_ref = gridRowsLookupSelector(apiRef)[id]) != null ? _ref : null;
97
98
  }, [apiRef]);
98
99
  const lookup = React.useMemo(() => currentPage.rows.reduce((acc, {
99
100
  id
@@ -106,7 +107,7 @@ export const useGridRows = (apiRef, props) => {
106
107
  rowsCache.current.timeout = null;
107
108
  rowsCache.current.lastUpdateMs = Date.now();
108
109
  apiRef.current.setState(state => _extends({}, state, {
109
- rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount)
110
+ rows: getRowsStateFromCache(rowsCache.current, gridRowTreeSelector(apiRef), apiRef, props.rowCount, props.loading)
110
111
  }));
111
112
  apiRef.current.publishEvent(GridEvents.rowsSet);
112
113
  apiRef.current.forceUpdate();
@@ -132,7 +133,7 @@ export const useGridRows = (apiRef, props) => {
132
133
  }
133
134
 
134
135
  run();
135
- }, [props.throttleRowsMs, props.rowCount, apiRef]);
136
+ }, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);
136
137
  /**
137
138
  * API METHODS
138
139
  */
@@ -232,12 +233,31 @@ export const useGridRows = (apiRef, props) => {
232
233
 
233
234
  return (_gridRowTreeSelector$ = gridRowTreeSelector(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
234
235
  }, [apiRef]);
236
+ const setRowIndex = React.useCallback((rowId, targetIndex) => {
237
+ const allRows = gridRowIdsSelector(apiRef);
238
+ const oldIndex = allRows.findIndex(row => row === rowId);
239
+
240
+ if (oldIndex === targetIndex) {
241
+ return;
242
+ }
243
+
244
+ logger.debug(`Moving row ${rowId} to index ${targetIndex}`);
245
+ const updatedRows = [...allRows];
246
+ updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
247
+ apiRef.current.setState(state => _extends({}, state, {
248
+ rows: _extends({}, state.rows, {
249
+ ids: updatedRows
250
+ })
251
+ }));
252
+ apiRef.current.applySorting();
253
+ }, [apiRef, logger]);
235
254
  const rowApi = {
236
255
  getRow,
237
256
  getRowModels,
238
257
  getRowsCount,
239
258
  getAllRowIds,
240
259
  setRows,
260
+ setRowIndex,
241
261
  updateRows,
242
262
  setRowChildrenExpansion,
243
263
  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 const rowsMetaStateInitializer = state => _extends({}, state, {
13
12
  rowsMeta: {
14
13
  currentPageTotalHeight: 0,
@@ -65,16 +64,17 @@ export const useGridRowsMeta = (apiRef, props) => {
65
64
  if (getRowSpacing) {
66
65
  var _spacing$top, _spacing$bottom;
67
66
 
68
- const index = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
67
+ const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
69
68
  const 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
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
- const sizes = apiRef.current.unstable_applyPreProcessors('rowHeight', initialHeights, row);
77
+ const sizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
78
78
  const finalRowHeight = Object.values(sizes).reduce((acc2, value) => acc2 + value, 0);
79
79
  rowsHeightLookup.current[row.id] = {
80
80
  value: baseRowHeight,
@@ -120,14 +120,7 @@ export const useGridRowsMeta = (apiRef, props) => {
120
120
  React.useEffect(() => {
121
121
  hydrateRowsMeta();
122
122
  }, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
123
- const handlePreProcessorRegister = React.useCallback(name => {
124
- if (name !== 'rowHeight') {
125
- return;
126
- }
127
-
128
- hydrateRowsMeta();
129
- }, [hydrateRowsMeta]);
130
- useGridApiEventHandler(apiRef, GridEvents.preProcessorRegister, handlePreProcessorRegister);
123
+ useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
131
124
  const rowsMetaApi = {
132
125
  unstable_getRowHeight: getTargetRowHeight,
133
126
  unstable_getRowInternalSizes: getRowInternalSizes,
@@ -6,5 +6,7 @@ import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
6
6
  * @requires useGridColumns (state) - can be after, async only
7
7
  * @requires useGridRows (state) - can be after, async only
8
8
  * @requires useGridRowsMeta (state) - can be after, async only
9
+ * @requires useGridFilter (state)
10
+ * @requires useGridColumnSpanning (method)
9
11
  */
10
12
  export declare const useGridScroll: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'pagination'>) => void;
@@ -1,11 +1,12 @@
1
1
  import * as React from 'react';
2
2
  import { useGridLogger } from '../../utils/useGridLogger';
3
3
  import { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
4
+ import { useGridSelector } from '../../utils/useGridSelector';
4
5
  import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPaginationSelector';
5
6
  import { gridRowCountSelector } from '../rows/gridRowsSelector';
6
7
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
7
8
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
8
- import { useGridNativeEventListener } from '../../utils/useGridNativeEventListener'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
9
+ import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
9
10
  // Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
10
11
 
11
12
  function scrollIntoView(dimensions) {
@@ -32,6 +33,8 @@ function scrollIntoView(dimensions) {
32
33
  * @requires useGridColumns (state) - can be after, async only
33
34
  * @requires useGridRows (state) - can be after, async only
34
35
  * @requires useGridRowsMeta (state) - can be after, async only
36
+ * @requires useGridFilter (state)
37
+ * @requires useGridColumnSpanning (method)
35
38
  */
36
39
 
37
40
 
@@ -39,11 +42,13 @@ export const useGridScroll = (apiRef, props) => {
39
42
  const logger = useGridLogger(apiRef, 'useGridScroll');
40
43
  const colRef = apiRef.current.columnHeadersElementRef;
41
44
  const windowRef = apiRef.current.windowRef;
45
+ const visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
42
46
  const scrollToIndexes = React.useCallback(params => {
43
47
  const totalRowCount = gridRowCountSelector(apiRef);
44
48
  const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
49
+ const scrollToHeader = params.rowIndex == null;
45
50
 
46
- if (totalRowCount === 0 || visibleColumns.length === 0) {
51
+ if (!scrollToHeader && totalRowCount === 0 || visibleColumns.length === 0) {
47
52
  return false;
48
53
  }
49
54
 
@@ -52,10 +57,27 @@ export const useGridScroll = (apiRef, props) => {
52
57
 
53
58
  if (params.colIndex != null) {
54
59
  const columnPositions = gridColumnPositionsSelector(apiRef);
60
+ let cellWidth;
61
+
62
+ if (typeof params.rowIndex !== 'undefined') {
63
+ var _visibleSortedRows$pa;
64
+
65
+ const rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
66
+ const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
67
+
68
+ if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
69
+ cellWidth = cellColSpanInfo.cellProps.width;
70
+ }
71
+ }
72
+
73
+ if (typeof cellWidth === 'undefined') {
74
+ cellWidth = visibleColumns[params.colIndex].computedWidth;
75
+ }
76
+
55
77
  scrollCoordinates.left = scrollIntoView({
56
78
  clientHeight: windowRef.current.clientWidth,
57
79
  scrollTop: windowRef.current.scrollLeft,
58
- offsetHeight: visibleColumns[params.colIndex].computedWidth,
80
+ offsetHeight: cellWidth,
59
81
  offsetTop: columnPositions[params.colIndex]
60
82
  });
61
83
  }
@@ -74,7 +96,7 @@ export const useGridScroll = (apiRef, props) => {
74
96
  });
75
97
  }
76
98
 
77
- scrollCoordinates = apiRef.current.unstable_applyPreProcessors('scrollToIndexes', scrollCoordinates, params);
99
+ scrollCoordinates = apiRef.current.unstable_applyPipeProcessors('scrollToIndexes', scrollCoordinates, params);
78
100
 
79
101
  if (typeof scrollCoordinates.left !== undefined || typeof scrollCoordinates.top !== undefined) {
80
102
  apiRef.current.scroll(scrollCoordinates);
@@ -82,7 +104,7 @@ export const useGridScroll = (apiRef, props) => {
82
104
  }
83
105
 
84
106
  return false;
85
- }, [logger, apiRef, windowRef, props.pagination]);
107
+ }, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
86
108
  const scroll = React.useCallback(params => {
87
109
  if (windowRef.current && params.left != null && colRef.current) {
88
110
  colRef.current.scrollLeft = params.left;
@@ -116,13 +138,4 @@ export const useGridScroll = (apiRef, props) => {
116
138
  getScrollPosition
117
139
  };
118
140
  useGridApiMethod(apiRef, scrollApi, 'GridScrollApi');
119
- const preventScroll = React.useCallback(event => {
120
- event.target.scrollLeft = 0;
121
- event.target.scrollTop = 0;
122
- }, []);
123
- useGridNativeEventListener(apiRef, () => {
124
- var _apiRef$current, _apiRef$current$rende, _apiRef$current$rende2;
125
-
126
- 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;
127
- }, 'scroll', preventScroll);
128
141
  };
@@ -2,7 +2,5 @@ import { GridStateCommunity } from '../../../models/gridStateCommunity';
2
2
  import { GridRowId } from '../../../models/gridRows';
3
3
  export declare const gridSelectionStateSelector: (state: GridStateCommunity) => import("../../..").GridSelectionModel;
4
4
  export declare const selectedGridRowsCountSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, number>;
5
- export declare const selectedGridRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Map<GridRowId, {
6
- [key: string]: any;
7
- }>>;
5
+ export declare const selectedGridRowsSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Map<GridRowId, any>>;
8
6
  export declare const selectedIdsLookupSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, Record<GridRowId, GridRowId>>;
@@ -4,7 +4,9 @@ import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
4
4
  import { GridStateInitializer } from '../../utils/useGridInitializeState';
5
5
  export declare const selectionStateInitializer: GridStateInitializer<Pick<DataGridProcessedProps, 'selectionModel'>>;
6
6
  /**
7
- * @requires useGridRows (state, method)
8
- * @requires useGridParamsApi (method)
7
+ * @requires useGridRows (state, method) - can be after
8
+ * @requires useGridParamsApi (method) - can be after
9
+ * @requires useGridFocus (state) - can be after
10
+ * @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
9
11
  */
10
12
  export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes'>) => void;
@@ -5,14 +5,15 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
5
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
6
  import { useGridLogger } from '../../utils/useGridLogger';
7
7
  import { gridRowsLookupSelector } from '../rows/gridRowsSelector';
8
- import { isGridCellRoot } from '../../../utils/domUtils';
9
8
  import { gridSelectionStateSelector, selectedGridRowsSelector, selectedIdsLookupSelector } from './gridSelectionSelector';
10
9
  import { gridPaginatedVisibleSortedGridRowIdsSelector } from '../pagination';
10
+ import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
11
11
  import { gridVisibleSortedRowIdsSelector } from '../filter/gridFilterSelector';
12
12
  import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
13
13
  import { GridCellModes } from '../../../models/gridEditRowModel';
14
- import { isKeyboardEvent } from '../../../utils/keyboardUtils';
15
- import { getVisibleRows } from '../../utils/useGridVisibleRows';
14
+ import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
15
+ import { getVisibleRows, useGridVisibleRows } from '../../utils/useGridVisibleRows';
16
+ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
16
17
 
17
18
  const getSelectionModelPropValue = (selectionModelProp, prevSelectionModel) => {
18
19
  if (selectionModelProp == null) {
@@ -38,8 +39,10 @@ export const selectionStateInitializer = (state, props) => {
38
39
  });
39
40
  };
40
41
  /**
41
- * @requires useGridRows (state, method)
42
- * @requires useGridParamsApi (method)
42
+ * @requires useGridRows (state, method) - can be after
43
+ * @requires useGridParamsApi (method) - can be after
44
+ * @requires useGridFocus (state) - can be after
45
+ * @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
43
46
  */
44
47
 
45
48
  export const useGridSelection = (apiRef, props) => {
@@ -64,7 +67,8 @@ export const useGridSelection = (apiRef, props) => {
64
67
  paginationMode
65
68
  } = props;
66
69
  const canHaveMultipleSelection = !disableMultipleSelection || checkboxSelection;
67
- const expandRowRangeSelection = React.useCallback(id => {
70
+ const visibleRows = useGridVisibleRows(apiRef, props);
71
+ const expandMouseRowRangeSelection = React.useCallback(id => {
68
72
  var _lastRowToggled$curre;
69
73
 
70
74
  let endId = id;
@@ -171,12 +175,13 @@ export const useGridSelection = (apiRef, props) => {
171
175
  return;
172
176
  }
173
177
 
174
- logger.debug(`Expanding selection from row ${startId} to row ${endId}`);
175
- const visibleRowIds = gridVisibleSortedRowIdsSelector(apiRef);
176
- const startIndex = visibleRowIds.indexOf(startId);
177
- const endIndex = visibleRowIds.indexOf(endId);
178
+ logger.debug(`Expanding selection from row ${startId} to row ${endId}`); // Using rows from all pages allow to select a range across several pages
179
+
180
+ const allPagesRowIds = gridVisibleSortedRowIdsSelector(apiRef);
181
+ const startIndex = allPagesRowIds.indexOf(startId);
182
+ const endIndex = allPagesRowIds.indexOf(endId);
178
183
  const [start, end] = startIndex > endIndex ? [endIndex, startIndex] : [startIndex, endIndex];
179
- const rowsBetweenStartAndEnd = visibleRowIds.slice(start, end + 1);
184
+ const rowsBetweenStartAndEnd = allPagesRowIds.slice(start, end + 1);
180
185
  apiRef.current.selectRows(rowsBetweenStartAndEnd, isSelected, resetSelection);
181
186
  }, [apiRef, logger]);
182
187
  const selectionApi = {
@@ -236,7 +241,7 @@ export const useGridSelection = (apiRef, props) => {
236
241
  return;
237
242
  }
238
243
 
239
- if (params.field === '__detail_panel_toggle__') {
244
+ if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
240
245
  // click to open the detail panel should not select the row
241
246
  return;
242
247
  }
@@ -250,11 +255,11 @@ export const useGridSelection = (apiRef, props) => {
250
255
  }
251
256
 
252
257
  if (event.shiftKey && (canHaveMultipleSelection || checkboxSelection)) {
253
- expandRowRangeSelection(params.id);
258
+ expandMouseRowRangeSelection(params.id);
254
259
  } else {
255
260
  handleSingleRowSelection(params.id, event);
256
261
  }
257
- }, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef, expandRowRangeSelection, handleSingleRowSelection]);
262
+ }, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef, expandMouseRowRangeSelection, handleSingleRowSelection]);
258
263
  const preventSelectionOnShift = React.useCallback((params, event) => {
259
264
  if (canHaveMultipleSelection && event.shiftKey) {
260
265
  var _window$getSelection;
@@ -264,35 +269,78 @@ export const useGridSelection = (apiRef, props) => {
264
269
  }, [canHaveMultipleSelection]);
265
270
  const handleRowSelectionCheckboxChange = React.useCallback((params, event) => {
266
271
  if (event.nativeEvent.shiftKey) {
267
- expandRowRangeSelection(params.id);
272
+ expandMouseRowRangeSelection(params.id);
268
273
  } else {
269
274
  apiRef.current.selectRow(params.id, params.value);
270
275
  }
271
- }, [apiRef, expandRowRangeSelection]);
276
+ }, [apiRef, expandMouseRowRangeSelection]);
272
277
  const handleHeaderSelectionCheckboxChange = React.useCallback(params => {
273
278
  const shouldLimitSelectionToCurrentPage = props.checkboxSelectionVisibleOnly && props.pagination;
274
279
  const rowsToBeSelected = shouldLimitSelectionToCurrentPage ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) : gridVisibleSortedRowIdsSelector(apiRef);
275
280
  apiRef.current.selectRows(rowsToBeSelected, params.value);
276
281
  }, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination]);
277
282
  const handleCellKeyDown = React.useCallback((params, event) => {
278
- // Ignore portal
283
+ // Get the most recent cell mode because it may have been changed by another listener
284
+ if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.Edit) {
285
+ return;
286
+ } // Ignore portal
279
287
  // Do not apply shortcuts if the focus is not on the cell root component
280
- // TODO replace with !event.currentTarget.contains(event.target as Element)
281
- if (!isGridCellRoot(event.target)) {
288
+
289
+
290
+ if (!event.currentTarget.contains(event.target)) {
282
291
  return;
283
- } // Get the most recent params because the cell mode may have changed by another listener
292
+ }
284
293
 
294
+ if (isNavigationKey(event.key) && event.shiftKey) {
295
+ // The cell that has focus after the keyboard navigation
296
+ const focusCell = gridFocusCellSelector(apiRef);
285
297
 
286
- const cellParams = apiRef.current.getCellParams(params.id, params.field);
287
- const isEditMode = cellParams.cellMode === GridCellModes.Edit;
298
+ if (focusCell && focusCell.id !== params.id) {
299
+ event.preventDefault();
300
+ const isNextRowSelected = apiRef.current.isRowSelected(focusCell.id);
288
301
 
289
- if (isEditMode) {
290
- return;
302
+ if (!canHaveMultipleSelection) {
303
+ apiRef.current.selectRow(focusCell.id, !isNextRowSelected, true);
304
+ return;
305
+ }
306
+
307
+ const newRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(focusCell.id);
308
+ const previousRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(params.id);
309
+ let start;
310
+ let end;
311
+
312
+ if (newRowIndex > previousRowIndex) {
313
+ if (isNextRowSelected) {
314
+ // We are navigating to the bottom of the page and adding selected rows
315
+ start = previousRowIndex;
316
+ end = newRowIndex - 1;
317
+ } else {
318
+ // We are navigating to the bottom of the page and removing selected rows
319
+ start = previousRowIndex;
320
+ end = newRowIndex;
321
+ }
322
+ } else {
323
+ // eslint-disable-next-line no-lonely-if
324
+ if (isNextRowSelected) {
325
+ // We are navigating to the top of the page and removing selected rows
326
+ start = newRowIndex + 1;
327
+ end = previousRowIndex;
328
+ } else {
329
+ // We are navigating to the top of the page and adding selected rows
330
+ start = newRowIndex;
331
+ end = previousRowIndex;
332
+ }
333
+ }
334
+
335
+ const rowsBetweenStartAndEnd = visibleRows.rows.slice(start, end + 1).map(row => row.id);
336
+ apiRef.current.selectRows(rowsBetweenStartAndEnd, !isNextRowSelected);
337
+ return;
338
+ }
291
339
  }
292
340
 
293
341
  if (event.key === ' ' && event.shiftKey) {
294
342
  event.preventDefault();
295
- handleSingleRowSelection(cellParams.id, event);
343
+ handleSingleRowSelection(params.id, event);
296
344
  return;
297
345
  }
298
346
 
@@ -300,8 +348,8 @@ export const useGridSelection = (apiRef, props) => {
300
348
  event.preventDefault();
301
349
  selectRows(apiRef.current.getAllRowIds(), true);
302
350
  }
303
- }, [apiRef, handleSingleRowSelection, selectRows]);
304
- useGridApiEventHandler(apiRef, GridEvents.visibleRowsSet, removeOutdatedSelection);
351
+ }, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
352
+ useGridApiEventHandler(apiRef, GridEvents.sortedRowsSet, removeOutdatedSelection);
305
353
  useGridApiEventHandler(apiRef, GridEvents.cellClick, handleCellClick);
306
354
  useGridApiEventHandler(apiRef, GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
307
355
  useGridApiEventHandler(apiRef, GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { unstable_composeClasses as composeClasses } from '@mui/material';
4
- import { useGridRegisterPreProcessor } from '../../core/preProcessing';
4
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
5
5
  import { getDataGridUtilityClass } from '../../../constants';
6
6
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef';
7
7
 
@@ -43,5 +43,5 @@ export const useGridSelectionPreProcessors = (apiRef, props) => {
43
43
 
44
44
  return columnsState;
45
45
  }, [apiRef, classes, props.checkboxSelection]);
46
- useGridRegisterPreProcessor(apiRef, 'hydrateColumns', updateSelectionColumn);
46
+ useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', updateSelectionColumn);
47
47
  };
@@ -16,9 +16,7 @@ export declare const gridSortedRowIdsSelector: import("../../../utils/createSele
16
16
  */
17
17
  export declare const gridSortedRowEntriesSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, {
18
18
  id: import("../../..").GridRowId;
19
- model: {
20
- [key: string]: any;
21
- };
19
+ model: any;
22
20
  }[]>;
23
21
  /**
24
22
  * Get the current sorting model.