@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
@@ -6,14 +6,15 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
6
6
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
7
  import { useGridLogger } from '../../utils/useGridLogger';
8
8
  import { gridRowsLookupSelector } from '../rows/gridRowsSelector';
9
- import { isGridCellRoot } from '../../../utils/domUtils';
10
9
  import { gridSelectionStateSelector, selectedGridRowsSelector, selectedIdsLookupSelector } from './gridSelectionSelector';
11
10
  import { gridPaginatedVisibleSortedGridRowIdsSelector } from '../pagination';
11
+ import { gridFocusCellSelector } from '../focus/gridFocusStateSelector';
12
12
  import { gridVisibleSortedRowIdsSelector } from '../filter/gridFilterSelector';
13
13
  import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
14
14
  import { GridCellModes } from '../../../models/gridEditRowModel';
15
- import { isKeyboardEvent } from '../../../utils/keyboardUtils';
16
- import { getVisibleRows } from '../../utils/useGridVisibleRows';
15
+ import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
16
+ import { getVisibleRows, useGridVisibleRows } from '../../utils/useGridVisibleRows';
17
+ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
17
18
 
18
19
  var getSelectionModelPropValue = function getSelectionModelPropValue(selectionModelProp, prevSelectionModel) {
19
20
  if (selectionModelProp == null) {
@@ -39,8 +40,10 @@ export var selectionStateInitializer = function selectionStateInitializer(state,
39
40
  });
40
41
  };
41
42
  /**
42
- * @requires useGridRows (state, method)
43
- * @requires useGridParamsApi (method)
43
+ * @requires useGridRows (state, method) - can be after
44
+ * @requires useGridParamsApi (method) - can be after
45
+ * @requires useGridFocus (state) - can be after
46
+ * @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
44
47
  */
45
48
 
46
49
  export var useGridSelection = function useGridSelection(apiRef, props) {
@@ -63,7 +66,8 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
63
66
  pagination = props.pagination,
64
67
  paginationMode = props.paginationMode;
65
68
  var canHaveMultipleSelection = !disableMultipleSelection || checkboxSelection;
66
- var expandRowRangeSelection = React.useCallback(function (id) {
69
+ var visibleRows = useGridVisibleRows(apiRef, props);
70
+ var expandMouseRowRangeSelection = React.useCallback(function (id) {
67
71
  var _lastRowToggled$curre;
68
72
 
69
73
  var endId = id;
@@ -191,17 +195,18 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
191
195
  return;
192
196
  }
193
197
 
194
- logger.debug("Expanding selection from row ".concat(startId, " to row ").concat(endId));
195
- var visibleRowIds = gridVisibleSortedRowIdsSelector(apiRef);
196
- var startIndex = visibleRowIds.indexOf(startId);
197
- var endIndex = visibleRowIds.indexOf(endId);
198
+ logger.debug("Expanding selection from row ".concat(startId, " to row ").concat(endId)); // Using rows from all pages allow to select a range across several pages
199
+
200
+ var allPagesRowIds = gridVisibleSortedRowIdsSelector(apiRef);
201
+ var startIndex = allPagesRowIds.indexOf(startId);
202
+ var endIndex = allPagesRowIds.indexOf(endId);
198
203
 
199
204
  var _ref2 = startIndex > endIndex ? [endIndex, startIndex] : [startIndex, endIndex],
200
205
  _ref3 = _slicedToArray(_ref2, 2),
201
206
  start = _ref3[0],
202
207
  end = _ref3[1];
203
208
 
204
- var rowsBetweenStartAndEnd = visibleRowIds.slice(start, end + 1);
209
+ var rowsBetweenStartAndEnd = allPagesRowIds.slice(start, end + 1);
205
210
  apiRef.current.selectRows(rowsBetweenStartAndEnd, isSelected, resetSelection);
206
211
  }, [apiRef, logger]);
207
212
  var selectionApi = {
@@ -261,7 +266,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
261
266
  return;
262
267
  }
263
268
 
264
- if (params.field === '__detail_panel_toggle__') {
269
+ if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
265
270
  // click to open the detail panel should not select the row
266
271
  return;
267
272
  }
@@ -275,11 +280,11 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
275
280
  }
276
281
 
277
282
  if (event.shiftKey && (canHaveMultipleSelection || checkboxSelection)) {
278
- expandRowRangeSelection(params.id);
283
+ expandMouseRowRangeSelection(params.id);
279
284
  } else {
280
285
  handleSingleRowSelection(params.id, event);
281
286
  }
282
- }, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef, expandRowRangeSelection, handleSingleRowSelection]);
287
+ }, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef, expandMouseRowRangeSelection, handleSingleRowSelection]);
283
288
  var preventSelectionOnShift = React.useCallback(function (params, event) {
284
289
  if (canHaveMultipleSelection && event.shiftKey) {
285
290
  var _window$getSelection;
@@ -289,35 +294,80 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
289
294
  }, [canHaveMultipleSelection]);
290
295
  var handleRowSelectionCheckboxChange = React.useCallback(function (params, event) {
291
296
  if (event.nativeEvent.shiftKey) {
292
- expandRowRangeSelection(params.id);
297
+ expandMouseRowRangeSelection(params.id);
293
298
  } else {
294
299
  apiRef.current.selectRow(params.id, params.value);
295
300
  }
296
- }, [apiRef, expandRowRangeSelection]);
301
+ }, [apiRef, expandMouseRowRangeSelection]);
297
302
  var handleHeaderSelectionCheckboxChange = React.useCallback(function (params) {
298
303
  var shouldLimitSelectionToCurrentPage = props.checkboxSelectionVisibleOnly && props.pagination;
299
304
  var rowsToBeSelected = shouldLimitSelectionToCurrentPage ? gridPaginatedVisibleSortedGridRowIdsSelector(apiRef) : gridVisibleSortedRowIdsSelector(apiRef);
300
305
  apiRef.current.selectRows(rowsToBeSelected, params.value);
301
306
  }, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination]);
302
307
  var handleCellKeyDown = React.useCallback(function (params, event) {
303
- // Ignore portal
308
+ // Get the most recent cell mode because it may have been changed by another listener
309
+ if (apiRef.current.getCellMode(params.id, params.field) === GridCellModes.Edit) {
310
+ return;
311
+ } // Ignore portal
304
312
  // Do not apply shortcuts if the focus is not on the cell root component
305
- // TODO replace with !event.currentTarget.contains(event.target as Element)
306
- if (!isGridCellRoot(event.target)) {
313
+
314
+
315
+ if (!event.currentTarget.contains(event.target)) {
307
316
  return;
308
- } // Get the most recent params because the cell mode may have changed by another listener
317
+ }
309
318
 
319
+ if (isNavigationKey(event.key) && event.shiftKey) {
320
+ // The cell that has focus after the keyboard navigation
321
+ var focusCell = gridFocusCellSelector(apiRef);
310
322
 
311
- var cellParams = apiRef.current.getCellParams(params.id, params.field);
312
- var isEditMode = cellParams.cellMode === GridCellModes.Edit;
323
+ if (focusCell && focusCell.id !== params.id) {
324
+ event.preventDefault();
325
+ var isNextRowSelected = apiRef.current.isRowSelected(focusCell.id);
313
326
 
314
- if (isEditMode) {
315
- return;
327
+ if (!canHaveMultipleSelection) {
328
+ apiRef.current.selectRow(focusCell.id, !isNextRowSelected, true);
329
+ return;
330
+ }
331
+
332
+ var newRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(focusCell.id);
333
+ var previousRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(params.id);
334
+ var start;
335
+ var end;
336
+
337
+ if (newRowIndex > previousRowIndex) {
338
+ if (isNextRowSelected) {
339
+ // We are navigating to the bottom of the page and adding selected rows
340
+ start = previousRowIndex;
341
+ end = newRowIndex - 1;
342
+ } else {
343
+ // We are navigating to the bottom of the page and removing selected rows
344
+ start = previousRowIndex;
345
+ end = newRowIndex;
346
+ }
347
+ } else {
348
+ // eslint-disable-next-line no-lonely-if
349
+ if (isNextRowSelected) {
350
+ // We are navigating to the top of the page and removing selected rows
351
+ start = newRowIndex + 1;
352
+ end = previousRowIndex;
353
+ } else {
354
+ // We are navigating to the top of the page and adding selected rows
355
+ start = newRowIndex;
356
+ end = previousRowIndex;
357
+ }
358
+ }
359
+
360
+ var rowsBetweenStartAndEnd = visibleRows.rows.slice(start, end + 1).map(function (row) {
361
+ return row.id;
362
+ });
363
+ apiRef.current.selectRows(rowsBetweenStartAndEnd, !isNextRowSelected);
364
+ return;
365
+ }
316
366
  }
317
367
 
318
368
  if (event.key === ' ' && event.shiftKey) {
319
369
  event.preventDefault();
320
- handleSingleRowSelection(cellParams.id, event);
370
+ handleSingleRowSelection(params.id, event);
321
371
  return;
322
372
  }
323
373
 
@@ -325,8 +375,8 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
325
375
  event.preventDefault();
326
376
  selectRows(apiRef.current.getAllRowIds(), true);
327
377
  }
328
- }, [apiRef, handleSingleRowSelection, selectRows]);
329
- useGridApiEventHandler(apiRef, GridEvents.visibleRowsSet, removeOutdatedSelection);
378
+ }, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
379
+ useGridApiEventHandler(apiRef, GridEvents.sortedRowsSet, removeOutdatedSelection);
330
380
  useGridApiEventHandler(apiRef, GridEvents.cellClick, handleCellClick);
331
381
  useGridApiEventHandler(apiRef, GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
332
382
  useGridApiEventHandler(apiRef, GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
@@ -2,7 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import * as React from 'react';
4
4
  import { unstable_composeClasses as composeClasses } from '@mui/material';
5
- import { useGridRegisterPreProcessor } from '../../core/preProcessing';
5
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
6
6
  import { getDataGridUtilityClass } from '../../../constants';
7
7
  import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef';
8
8
 
@@ -44,5 +44,5 @@ export var useGridSelectionPreProcessors = function useGridSelectionPreProcessor
44
44
 
45
45
  return columnsState;
46
46
  }, [apiRef, classes, props.checkboxSelection]);
47
- useGridRegisterPreProcessor(apiRef, 'hydrateColumns', updateSelectionColumn);
47
+ useGridRegisterPipeProcessor(apiRef, 'hydrateColumns', updateSelectionColumn);
48
48
  };
@@ -13,7 +13,7 @@ import { gridRowIdsSelector, gridRowTreeSelector } from '../rows';
13
13
  import { useFirstRender } from '../../utils/useFirstRender';
14
14
  import { useGridRegisterStrategyProcessor, GRID_DEFAULT_STRATEGY } from '../../core/strategyProcessing';
15
15
  import { buildAggregatedSortingApplier, mergeStateWithSortModel, getNextGridSortDirection, sanitizeSortModel } from './gridSortingUtils';
16
- import { useGridRegisterPreProcessor } from '../../core/preProcessing';
16
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
17
17
  export var sortingStateInitializer = function sortingStateInitializer(state, props) {
18
18
  var _ref, _props$sortModel, _props$initialState, _props$initialState$s;
19
19
 
@@ -86,19 +86,16 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
86
86
  */
87
87
 
88
88
  var applySorting = React.useCallback(function () {
89
- if (props.sortingMode === GridFeatureModeConstant.server) {
90
- logger.debug('Skipping sorting rows as sortingMode = server');
91
- apiRef.current.setState(function (state) {
89
+ apiRef.current.setState(function (state) {
90
+ if (props.sortingMode === GridFeatureModeConstant.server) {
91
+ logger.debug('Skipping sorting rows as sortingMode = server');
92
92
  return _extends({}, state, {
93
93
  sorting: _extends({}, state.sorting, {
94
94
  sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
95
95
  })
96
96
  });
97
- });
98
- return;
99
- }
97
+ }
100
98
 
101
- apiRef.current.setState(function (state) {
102
99
  var sortModel = gridSortModelSelector(state, apiRef.current.instanceId);
103
100
  var sortRowList = buildAggregatedSortingApplier(sortModel, apiRef);
104
101
  var sortedRows = apiRef.current.unstable_applyStrategyProcessor('sorting', {
@@ -110,6 +107,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
110
107
  })
111
108
  });
112
109
  });
110
+ apiRef.current.publishEvent(GridEvents.sortedRowsSet);
113
111
  apiRef.current.forceUpdate();
114
112
  }, [apiRef, logger, props.sortingMode]);
115
113
  var setSortModel = React.useCallback(function (model) {
@@ -206,8 +204,8 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
206
204
  var rowTree = gridRowTreeSelector(apiRef);
207
205
  return params.sortRowList(Object.values(rowTree));
208
206
  }, [apiRef]);
209
- useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
210
- useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
207
+ useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
208
+ useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
211
209
  useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'sorting', flatSortingMethod);
212
210
  /**
213
211
  * EVENTS
@@ -2,11 +2,11 @@ import * as React from 'react';
2
2
  import { useGridApiMethod } from '../../utils';
3
3
  export var useGridStatePersistence = function useGridStatePersistence(apiRef) {
4
4
  var exportState = React.useCallback(function () {
5
- var stateToExport = apiRef.current.unstable_applyPreProcessors('exportState', {});
5
+ var stateToExport = apiRef.current.unstable_applyPipeProcessors('exportState', {});
6
6
  return stateToExport;
7
7
  }, [apiRef]);
8
8
  var restoreState = React.useCallback(function (stateToRestore) {
9
- var response = apiRef.current.unstable_applyPreProcessors('restoreState', {
9
+ var response = apiRef.current.unstable_applyPipeProcessors('restoreState', {
10
10
  callbacks: []
11
11
  }, {
12
12
  stateToRestore: stateToRestore
@@ -3,6 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  var _excluded = ["style"];
5
5
  import * as React from 'react';
6
+ import * as ReactDOM from 'react-dom';
6
7
  import { useForkRef } from '@mui/material/utils';
7
8
  import { useGridApiContext } from '../../utils/useGridApiContext';
8
9
  import { useGridRootProps } from '../../utils/useGridRootProps';
@@ -17,8 +18,9 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
17
18
  import { clamp } from '../../../utils/utils';
18
19
  import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
19
20
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
21
+ import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
22
+
20
23
  import { jsx as _jsx } from "react/jsx-runtime";
21
- // Uses binary search to avoid looping through all possible positions
22
24
  export function getIndexFromScroll(offset, positions) {
23
25
  var sliceStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
24
26
  var sliceEnd = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : positions.length;
@@ -35,9 +37,15 @@ export function getIndexFromScroll(offset, positions) {
35
37
  var itemOffset = positions[pivot];
36
38
  return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
37
39
  }
40
+ export var getRenderableIndexes = function getRenderableIndexes(_ref) {
41
+ var firstIndex = _ref.firstIndex,
42
+ lastIndex = _ref.lastIndex,
43
+ buffer = _ref.buffer,
44
+ minFirstIndex = _ref.minFirstIndex,
45
+ maxLastIndex = _ref.maxLastIndex;
46
+ return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
47
+ };
38
48
  export var useGridVirtualScroller = function useGridVirtualScroller(props) {
39
- var _currentPage$range2;
40
-
41
49
  var apiRef = useGridApiContext();
42
50
  var rootProps = useGridRootProps();
43
51
  var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
@@ -89,9 +97,9 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
89
97
  };
90
98
  }
91
99
 
92
- var _ref = scrollPosition.current,
93
- top = _ref.top,
94
- left = _ref.left;
100
+ var _ref2 = scrollPosition.current,
101
+ top = _ref2.top,
102
+ left = _ref2.left;
95
103
  var firstRowIndex = getIndexFromScroll(top, rowsMeta.positions);
96
104
  var lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getIndexFromScroll(top + rootRef.current.clientHeight, rowsMeta.positions);
97
105
  var firstColumnIndex = getIndexFromScroll(left, columnPositions);
@@ -121,28 +129,17 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
121
129
  }
122
130
  }, []);
123
131
  useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
124
-
125
- var getRenderableIndexes = function getRenderableIndexes(_ref2) {
126
- var firstIndex = _ref2.firstIndex,
127
- lastIndex = _ref2.lastIndex,
128
- buffer = _ref2.buffer,
129
- minFirstIndex = _ref2.minFirstIndex,
130
- maxLastIndex = _ref2.maxLastIndex;
131
- return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
132
- };
133
-
134
132
  var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
135
- var _currentPage$range;
136
-
137
133
  var _getRenderableIndexes = getRenderableIndexes({
138
134
  firstIndex: nextRenderContext.firstRowIndex,
139
135
  lastIndex: nextRenderContext.lastRowIndex,
140
136
  minFirstIndex: 0,
141
- maxLastIndex: ((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.lastRowIndex) || 0,
137
+ maxLastIndex: currentPage.rows.length,
142
138
  buffer: rootProps.rowBuffer
143
139
  }),
144
- _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 1),
145
- firstRowToRender = _getRenderableIndexes2[0];
140
+ _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
141
+ firstRowToRender = _getRenderableIndexes2[0],
142
+ lastRowToRender = _getRenderableIndexes2[1];
146
143
 
147
144
  var _getRenderableIndexes3 = getRenderableIndexes({
148
145
  firstIndex: nextRenderContext.firstColumnIndex,
@@ -152,8 +149,15 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
152
149
  buffer: rootProps.columnBuffer
153
150
  }),
154
151
  _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 1),
155
- firstColumnToRender = _getRenderableIndexes4[0];
156
-
152
+ initialFirstColumnToRender = _getRenderableIndexes4[0];
153
+
154
+ var firstColumnToRender = getFirstNonSpannedColumnToRender({
155
+ firstColumnToRender: initialFirstColumnToRender,
156
+ apiRef: apiRef,
157
+ firstRowToRender: firstRowToRender,
158
+ lastRowToRender: lastRowToRender,
159
+ visibleRows: currentPage.rows
160
+ });
157
161
  var top = gridRowsMetaSelector(apiRef.current.state).positions[firstRowToRender];
158
162
  var left = gridColumnPositionsSelector(apiRef)[firstColumnToRender]; // Call directly the selector because it might be outdated when this method is called
159
163
 
@@ -165,19 +169,22 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
165
169
  left: left
166
170
  });
167
171
  }
168
- }, [apiRef, (_currentPage$range2 = currentPage.range) == null ? void 0 : _currentPage$range2.lastRowIndex, onRenderZonePositioning, renderZoneMaxColumnIndex, renderZoneMinColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
172
+ }, [apiRef, currentPage.rows, onRenderZonePositioning, renderZoneMinColumnIndex, renderZoneMaxColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
173
+ React.useLayoutEffect(function () {
174
+ if (renderContext) {
175
+ updateRenderZonePosition(renderContext);
176
+ }
177
+ }, [renderContext, updateRenderZonePosition]);
169
178
  var updateRenderContext = React.useCallback(function (nextRenderContext) {
170
179
  setRenderContext(nextRenderContext);
171
- updateRenderZonePosition(nextRenderContext);
172
180
  prevRenderContext.current = nextRenderContext;
173
- }, [setRenderContext, prevRenderContext, updateRenderZonePosition]);
181
+ }, [setRenderContext, prevRenderContext]);
174
182
  React.useEffect(function () {
175
183
  if (containerWidth == null) {
176
184
  return;
177
185
  }
178
186
 
179
187
  var initialRenderContext = computeRenderContext();
180
- prevRenderContext.current = initialRenderContext;
181
188
  updateRenderContext(initialRenderContext);
182
189
  var _ref3 = scrollPosition.current,
183
190
  top = _ref3.top,
@@ -213,14 +220,25 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
213
220
  top: scrollTop,
214
221
  left: scrollLeft,
215
222
  renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
216
- });
223
+ }, event);
217
224
 
218
225
  if (shouldSetState) {
219
- updateRenderContext(nextRenderContext);
226
+ // Prevents batching render context changes
227
+ ReactDOM.flushSync(function () {
228
+ updateRenderContext(nextRenderContext);
229
+ });
220
230
  prevTotalWidth.current = columnsTotalWidth;
221
231
  }
222
232
  };
223
233
 
234
+ var handleWheel = function handleWheel(event) {
235
+ apiRef.current.publishEvent(GridEvents.virtualScrollerWheel, {}, event);
236
+ };
237
+
238
+ var handleTouchMove = function handleTouchMove(event) {
239
+ apiRef.current.publishEvent(GridEvents.virtualScrollerTouchMove, {}, event);
240
+ };
241
+
224
242
  var getRows = function getRows() {
225
243
  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
226
244
  renderContext: renderContext
@@ -251,6 +269,18 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
251
269
  firstRowToRender = _getRenderableIndexes6[0],
252
270
  lastRowToRender = _getRenderableIndexes6[1];
253
271
 
272
+ var renderedRows = [];
273
+
274
+ for (var i = firstRowToRender; i < lastRowToRender; i += 1) {
275
+ var row = currentPage.rows[i];
276
+ renderedRows.push(row);
277
+ apiRef.current.unstable_calculateColSpan({
278
+ rowId: row.id,
279
+ minFirstColumn: minFirstColumn,
280
+ maxLastColumn: maxLastColumn
281
+ });
282
+ }
283
+
254
284
  var _getRenderableIndexes7 = getRenderableIndexes({
255
285
  firstIndex: nextRenderContext.firstColumnIndex,
256
286
  lastIndex: nextRenderContext.lastColumnIndex,
@@ -259,20 +289,26 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
259
289
  buffer: columnBuffer
260
290
  }),
261
291
  _getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
262
- firstColumnToRender = _getRenderableIndexes8[0],
292
+ initialFirstColumnToRender = _getRenderableIndexes8[0],
263
293
  lastColumnToRender = _getRenderableIndexes8[1];
264
294
 
265
- var renderedRows = currentPage.rows.slice(firstRowToRender, lastRowToRender);
295
+ var firstColumnToRender = getFirstNonSpannedColumnToRender({
296
+ firstColumnToRender: initialFirstColumnToRender,
297
+ apiRef: apiRef,
298
+ firstRowToRender: firstRowToRender,
299
+ lastRowToRender: lastRowToRender,
300
+ visibleRows: currentPage.rows
301
+ });
266
302
  var renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
267
303
  var rows = [];
268
304
 
269
- for (var i = 0; i < renderedRows.length; i += 1) {
305
+ for (var _i = 0; _i < renderedRows.length; _i += 1) {
270
306
  var _rootProps$components;
271
307
 
272
- var _renderedRows$i = renderedRows[i],
273
- _id = _renderedRows$i.id,
274
- _model = _renderedRows$i.model;
275
- var lastVisibleRowIndex = firstRowToRender + i === currentPage.rows.length - 1;
308
+ var _renderedRows$_i = renderedRows[_i],
309
+ _id = _renderedRows$_i.id,
310
+ _model = _renderedRows$_i.model;
311
+ var lastVisibleRowIndex = firstRowToRender + _i === currentPage.rows.length - 1;
276
312
  var targetRowHeight = apiRef.current.unstable_getRowHeight(_id);
277
313
  var isSelected = void 0;
278
314
 
@@ -299,7 +335,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
299
335
  firstColumnToRender: firstColumnToRender,
300
336
  lastColumnToRender: lastColumnToRender,
301
337
  selected: isSelected,
302
- index: currentPage.range.firstRowIndex + firstRowToRender + i,
338
+ index: currentPage.range.firstRowIndex + firstRowToRender + _i,
303
339
  containerWidth: availableSpace,
304
340
  isLastVisible: lastVisibleRowIndex
305
341
  }, typeof getRowProps === 'function' ? getRowProps(_id, _model) : {}, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.row), _id));
@@ -364,6 +400,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
364
400
  return _extends({
365
401
  ref: handleRef,
366
402
  onScroll: handleScroll,
403
+ onWheel: handleWheel,
404
+ onTouchMove: handleTouchMove,
367
405
  style: _extends({}, style, rootStyle)
368
406
  }, other);
369
407
  },
package/legacy/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.7.0
1
+ /** @license MUI v5.10.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -3,20 +3,20 @@ export { GridVirtualScrollerContent } from '../components/virtualization/GridVir
3
3
  export { GridVirtualScrollerRenderZone } from '../components/virtualization/GridVirtualScrollerRenderZone';
4
4
  export { GridColumnHeaders } from '../components/columnHeaders/GridColumnHeaders';
5
5
  export { GridColumnHeadersInner } from '../components/columnHeaders/GridColumnHeadersInner';
6
- export { useGridRegisterPreProcessor } from '../hooks/core/preProcessing';
6
+ export { useGridRegisterPipeProcessor } from '../hooks/core/pipeProcessing';
7
7
  export { useGridRegisterStrategyProcessor } from '../hooks/core/strategyProcessing';
8
8
  export { useGridInitialization } from '../hooks/core/useGridInitialization';
9
9
  export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
10
10
  export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
11
11
  export { useGridColumnMenu, columnMenuStateInitializer } from '../hooks/features/columnMenu/useGridColumnMenu';
12
12
  export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
13
+ export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
13
14
  export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
14
15
  export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
15
16
  export { useGridPrintExport } from '../hooks/features/export/useGridPrintExport';
16
17
  export { useGridFilter, filterStateInitializer } from '../hooks/features/filter/useGridFilter';
17
18
  export { useGridFocus, focusStateInitializer } from '../hooks/features/focus/useGridFocus';
18
- export { useGridKeyboard } from '../hooks/features/keyboard/useGridKeyboard';
19
- export { useGridKeyboardNavigation } from '../hooks/features/keyboard/useGridKeyboardNavigation';
19
+ export { useGridKeyboardNavigation } from '../hooks/features/keyboardNavigation/useGridKeyboardNavigation';
20
20
  export { useGridPagination, paginationStateInitializer } from '../hooks/features/pagination/useGridPagination';
21
21
  export { useGridPreferencesPanel, preferencePanelStateInitializer } from '../hooks/features/preferencesPanel/useGridPreferencesPanel';
22
22
  export { useGridEditing as useGridEditing_new, editingStateInitializer as editingStateInitializer_new } from '../hooks/features/editRows/useGridEditing.new';
@@ -115,6 +115,8 @@ var arSDGrid = {
115
115
  },
116
116
  // Master/detail
117
117
  expandDetailPanel: 'توسيع',
118
- collapseDetailPanel: 'طوي'
118
+ collapseDetailPanel: 'طوي' // Row reordering text
119
+ // rowReorderingHeaderName: 'Row reordering',
120
+
119
121
  };
120
122
  export var arSD = getGridLocalization(arSDGrid, arSDCore);
@@ -115,6 +115,8 @@ var bgBGGrid = {
115
115
  },
116
116
  // Master/detail
117
117
  expandDetailPanel: 'Разгъване',
118
- collapseDetailPanel: 'Свиване'
118
+ collapseDetailPanel: 'Свиване' // Row reordering text
119
+ // rowReorderingHeaderName: 'Row reordering',
120
+
119
121
  };
120
122
  export var bgBG = getGridLocalization(bgBGGrid, bgBGCore);
@@ -142,6 +142,8 @@ var csCZGrid = {
142
142
  } // Master/detail
143
143
  // expandDetailPanel: 'Expand',
144
144
  // collapseDetailPanel: 'Collapse',
145
+ // Row reordering text
146
+ // rowReorderingHeaderName: 'Row reordering',
145
147
 
146
148
  };
147
149
  export var csCZ = getGridLocalization(csCZGrid, csCZCore);