@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,5 +1,4 @@
1
1
  import { GridSortingModelApplier } from './gridSortingState';
2
- import type { GridCellValue } from '../../../models';
3
2
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
4
3
  import { GridStateCommunity } from '../../../models/gridStateCommunity';
5
4
  import { GridComparatorFn, GridSortDirection, GridSortModel } from '../../../models/gridSortModel';
@@ -15,4 +14,4 @@ export declare const buildAggregatedSortingApplier: (sortModel: GridSortModel, a
15
14
  export declare const getNextGridSortDirection: (sortingOrder: GridSortDirection[], current?: GridSortDirection) => GridSortDirection;
16
15
  export declare const gridStringOrNumberComparator: GridComparatorFn;
17
16
  export declare const gridNumberComparator: GridComparatorFn;
18
- export declare const gridDateComparator: (value1: GridCellValue, value2: GridCellValue) => number;
17
+ export declare const gridDateComparator: GridComparatorFn;
@@ -12,7 +12,7 @@ import { gridRowIdsSelector, gridRowTreeSelector } from '../rows';
12
12
  import { useFirstRender } from '../../utils/useFirstRender';
13
13
  import { useGridRegisterStrategyProcessor, GRID_DEFAULT_STRATEGY } from '../../core/strategyProcessing';
14
14
  import { buildAggregatedSortingApplier, mergeStateWithSortModel, getNextGridSortDirection, sanitizeSortModel } from './gridSortingUtils';
15
- import { useGridRegisterPreProcessor } from '../../core/preProcessing';
15
+ import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
16
16
  export const sortingStateInitializer = (state, props) => {
17
17
  var _ref, _props$sortModel, _props$initialState, _props$initialState$s;
18
18
 
@@ -80,17 +80,16 @@ export const useGridSorting = (apiRef, props) => {
80
80
  */
81
81
 
82
82
  const applySorting = React.useCallback(() => {
83
- if (props.sortingMode === GridFeatureModeConstant.server) {
84
- logger.debug('Skipping sorting rows as sortingMode = server');
85
- apiRef.current.setState(state => _extends({}, state, {
86
- sorting: _extends({}, state.sorting, {
87
- sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
88
- })
89
- }));
90
- return;
91
- }
92
-
93
83
  apiRef.current.setState(state => {
84
+ if (props.sortingMode === GridFeatureModeConstant.server) {
85
+ logger.debug('Skipping sorting rows as sortingMode = server');
86
+ return _extends({}, state, {
87
+ sorting: _extends({}, state.sorting, {
88
+ sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
89
+ })
90
+ });
91
+ }
92
+
94
93
  const sortModel = gridSortModelSelector(state, apiRef.current.instanceId);
95
94
  const sortRowList = buildAggregatedSortingApplier(sortModel, apiRef);
96
95
  const sortedRows = apiRef.current.unstable_applyStrategyProcessor('sorting', {
@@ -102,6 +101,7 @@ export const useGridSorting = (apiRef, props) => {
102
101
  })
103
102
  });
104
103
  });
104
+ apiRef.current.publishEvent(GridEvents.sortedRowsSet);
105
105
  apiRef.current.forceUpdate();
106
106
  }, [apiRef, logger, props.sortingMode]);
107
107
  const setSortModel = React.useCallback(model => {
@@ -188,8 +188,8 @@ export const useGridSorting = (apiRef, props) => {
188
188
  const rowTree = gridRowTreeSelector(apiRef);
189
189
  return params.sortRowList(Object.values(rowTree));
190
190
  }, [apiRef]);
191
- useGridRegisterPreProcessor(apiRef, 'exportState', stateExportPreProcessing);
192
- useGridRegisterPreProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
191
+ useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
192
+ useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
193
193
  useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'sorting', flatSortingMethod);
194
194
  /**
195
195
  * EVENTS
@@ -2,11 +2,11 @@ import * as React from 'react';
2
2
  import { useGridApiMethod } from '../../utils';
3
3
  export const useGridStatePersistence = apiRef => {
4
4
  const exportState = React.useCallback(() => {
5
- const stateToExport = apiRef.current.unstable_applyPreProcessors('exportState', {});
5
+ const stateToExport = apiRef.current.unstable_applyPipeProcessors('exportState', {});
6
6
  return stateToExport;
7
7
  }, [apiRef]);
8
8
  const restoreState = React.useCallback(stateToRestore => {
9
- const response = apiRef.current.unstable_applyPreProcessors('restoreState', {
9
+ const response = apiRef.current.unstable_applyPipeProcessors('restoreState', {
10
10
  callbacks: []
11
11
  }, {
12
12
  stateToRestore
@@ -2,6 +2,13 @@ import * as React from 'react';
2
2
  import { GridRenderContext } from '../../../models';
3
3
  import { GridRowId, GridRowModel } from '../../../models/gridRows';
4
4
  export declare function getIndexFromScroll(offset: number, positions: number[], sliceStart?: number, sliceEnd?: number): number;
5
+ export declare const getRenderableIndexes: ({ firstIndex, lastIndex, buffer, minFirstIndex, maxLastIndex, }: {
6
+ firstIndex: number;
7
+ lastIndex: number;
8
+ buffer: number;
9
+ minFirstIndex: number;
10
+ maxLastIndex: number;
11
+ }) => number[];
5
12
  interface UseGridVirtualScrollerProps {
6
13
  ref: React.Ref<HTMLDivElement>;
7
14
  disableVirtualization?: boolean;
@@ -27,6 +34,8 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
27
34
  }) => {
28
35
  ref: React.Ref<HTMLDivElement>;
29
36
  onScroll: (event: React.UIEvent) => void;
37
+ onWheel: (event: React.WheelEvent) => void;
38
+ onTouchMove: (event: React.TouchEvent) => void;
30
39
  style: {
31
40
  accentColor?: import("csstype").Property.AccentColor | undefined;
32
41
  alignContent?: import("csstype").Property.AlignContent | undefined;
@@ -2,6 +2,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  const _excluded = ["style"];
4
4
  import * as React from 'react';
5
+ import * as ReactDOM from 'react-dom';
5
6
  import { useForkRef } from '@mui/material/utils';
6
7
  import { useGridApiContext } from '../../utils/useGridApiContext';
7
8
  import { useGridRootProps } from '../../utils/useGridRootProps';
@@ -16,8 +17,9 @@ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
16
17
  import { clamp } from '../../../utils/utils';
17
18
  import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
18
19
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
20
+ import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
21
+
19
22
  import { jsx as _jsx } from "react/jsx-runtime";
20
- // Uses binary search to avoid looping through all possible positions
21
23
  export function getIndexFromScroll(offset, positions, sliceStart = 0, sliceEnd = positions.length) {
22
24
  if (positions.length <= 0) {
23
25
  return -1;
@@ -31,9 +33,16 @@ export function getIndexFromScroll(offset, positions, sliceStart = 0, sliceEnd =
31
33
  const itemOffset = positions[pivot];
32
34
  return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
33
35
  }
36
+ export const getRenderableIndexes = ({
37
+ firstIndex,
38
+ lastIndex,
39
+ buffer,
40
+ minFirstIndex,
41
+ maxLastIndex
42
+ }) => {
43
+ return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
44
+ };
34
45
  export const useGridVirtualScroller = props => {
35
- var _currentPage$range2;
36
-
37
46
  const apiRef = useGridApiContext();
38
47
  const rootProps = useGridRootProps();
39
48
  const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
@@ -108,34 +117,28 @@ export const useGridVirtualScroller = props => {
108
117
  }
109
118
  }, []);
110
119
  useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
111
-
112
- const getRenderableIndexes = ({
113
- firstIndex,
114
- lastIndex,
115
- buffer,
116
- minFirstIndex,
117
- maxLastIndex
118
- }) => {
119
- return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
120
- };
121
-
122
120
  const updateRenderZonePosition = React.useCallback(nextRenderContext => {
123
- var _currentPage$range;
124
-
125
- const [firstRowToRender] = getRenderableIndexes({
121
+ const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
126
122
  firstIndex: nextRenderContext.firstRowIndex,
127
123
  lastIndex: nextRenderContext.lastRowIndex,
128
124
  minFirstIndex: 0,
129
- maxLastIndex: ((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.lastRowIndex) || 0,
125
+ maxLastIndex: currentPage.rows.length,
130
126
  buffer: rootProps.rowBuffer
131
127
  });
132
- const [firstColumnToRender] = getRenderableIndexes({
128
+ const [initialFirstColumnToRender] = getRenderableIndexes({
133
129
  firstIndex: nextRenderContext.firstColumnIndex,
134
130
  lastIndex: nextRenderContext.lastColumnIndex,
135
131
  minFirstIndex: renderZoneMinColumnIndex,
136
132
  maxLastIndex: renderZoneMaxColumnIndex,
137
133
  buffer: rootProps.columnBuffer
138
134
  });
135
+ const firstColumnToRender = getFirstNonSpannedColumnToRender({
136
+ firstColumnToRender: initialFirstColumnToRender,
137
+ apiRef,
138
+ firstRowToRender,
139
+ lastRowToRender,
140
+ visibleRows: currentPage.rows
141
+ });
139
142
  const top = gridRowsMetaSelector(apiRef.current.state).positions[firstRowToRender];
140
143
  const left = gridColumnPositionsSelector(apiRef)[firstColumnToRender]; // Call directly the selector because it might be outdated when this method is called
141
144
 
@@ -147,19 +150,22 @@ export const useGridVirtualScroller = props => {
147
150
  left
148
151
  });
149
152
  }
150
- }, [apiRef, (_currentPage$range2 = currentPage.range) == null ? void 0 : _currentPage$range2.lastRowIndex, onRenderZonePositioning, renderZoneMaxColumnIndex, renderZoneMinColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
153
+ }, [apiRef, currentPage.rows, onRenderZonePositioning, renderZoneMinColumnIndex, renderZoneMaxColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
154
+ React.useLayoutEffect(() => {
155
+ if (renderContext) {
156
+ updateRenderZonePosition(renderContext);
157
+ }
158
+ }, [renderContext, updateRenderZonePosition]);
151
159
  const updateRenderContext = React.useCallback(nextRenderContext => {
152
160
  setRenderContext(nextRenderContext);
153
- updateRenderZonePosition(nextRenderContext);
154
161
  prevRenderContext.current = nextRenderContext;
155
- }, [setRenderContext, prevRenderContext, updateRenderZonePosition]);
162
+ }, [setRenderContext, prevRenderContext]);
156
163
  React.useEffect(() => {
157
164
  if (containerWidth == null) {
158
165
  return;
159
166
  }
160
167
 
161
168
  const initialRenderContext = computeRenderContext();
162
- prevRenderContext.current = initialRenderContext;
163
169
  updateRenderContext(initialRenderContext);
164
170
  const {
165
171
  top,
@@ -197,14 +203,25 @@ export const useGridVirtualScroller = props => {
197
203
  top: scrollTop,
198
204
  left: scrollLeft,
199
205
  renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
200
- });
206
+ }, event);
201
207
 
202
208
  if (shouldSetState) {
203
- updateRenderContext(nextRenderContext);
209
+ // Prevents batching render context changes
210
+ ReactDOM.flushSync(() => {
211
+ updateRenderContext(nextRenderContext);
212
+ });
204
213
  prevTotalWidth.current = columnsTotalWidth;
205
214
  }
206
215
  };
207
216
 
217
+ const handleWheel = event => {
218
+ apiRef.current.publishEvent(GridEvents.virtualScrollerWheel, {}, event);
219
+ };
220
+
221
+ const handleTouchMove = event => {
222
+ apiRef.current.publishEvent(GridEvents.virtualScrollerTouchMove, {}, event);
223
+ };
224
+
208
225
  const getRows = (params = {
209
226
  renderContext
210
227
  }) => {
@@ -228,14 +245,32 @@ export const useGridVirtualScroller = props => {
228
245
  maxLastIndex: currentPage.rows.length,
229
246
  buffer: rowBuffer
230
247
  });
231
- const [firstColumnToRender, lastColumnToRender] = getRenderableIndexes({
248
+ const renderedRows = [];
249
+
250
+ for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
251
+ const row = currentPage.rows[i];
252
+ renderedRows.push(row);
253
+ apiRef.current.unstable_calculateColSpan({
254
+ rowId: row.id,
255
+ minFirstColumn,
256
+ maxLastColumn
257
+ });
258
+ }
259
+
260
+ const [initialFirstColumnToRender, lastColumnToRender] = getRenderableIndexes({
232
261
  firstIndex: nextRenderContext.firstColumnIndex,
233
262
  lastIndex: nextRenderContext.lastColumnIndex,
234
263
  minFirstIndex: minFirstColumn,
235
264
  maxLastIndex: maxLastColumn,
236
265
  buffer: columnBuffer
237
266
  });
238
- const renderedRows = currentPage.rows.slice(firstRowToRender, lastRowToRender);
267
+ const firstColumnToRender = getFirstNonSpannedColumnToRender({
268
+ firstColumnToRender: initialFirstColumnToRender,
269
+ apiRef,
270
+ firstRowToRender,
271
+ lastRowToRender,
272
+ visibleRows: currentPage.rows
273
+ });
239
274
  const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
240
275
  const rows = [];
241
276
 
@@ -337,6 +372,8 @@ export const useGridVirtualScroller = props => {
337
372
  return _extends({
338
373
  ref: handleRef,
339
374
  onScroll: handleScroll,
375
+ onWheel: handleWheel,
376
+ onTouchMove: handleTouchMove,
340
377
  style: _extends({}, style, rootStyle)
341
378
  }, other);
342
379
  },
@@ -1,2 +1,2 @@
1
1
  import type { DataGridProcessedProps } from '../../models/props/DataGridProps';
2
- export declare const useGridRootProps: () => DataGridProcessedProps;
2
+ export declare const useGridRootProps: () => DataGridProcessedProps<any>;
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { DataGridProcessedProps } from '../../models/props/DataGridProps';
3
3
  import type { GridApiCommon, GridRowEntry } from '../../models';
4
4
  export declare const getVisibleRows: <Api extends GridApiCommon>(apiRef: React.MutableRefObject<Api>, props: Pick<DataGridProcessedProps, 'pagination' | 'paginationMode'>) => {
5
- rows: GridRowEntry[];
5
+ rows: GridRowEntry<any>[];
6
6
  range: {
7
7
  firstRowIndex: number;
8
8
  lastRowIndex: number;
@@ -16,7 +16,7 @@ export declare const getVisibleRows: <Api extends GridApiCommon>(apiRef: React.M
16
16
  * - If the row tree is flat, it only contains up to `state.pageSize` rows.
17
17
  */
18
18
  export declare const useGridVisibleRows: <Api extends GridApiCommon>(apiRef: React.MutableRefObject<Api>, props: Pick<DataGridProcessedProps, 'pagination' | 'paginationMode'>) => {
19
- rows: GridRowEntry[];
19
+ rows: GridRowEntry<any>[];
20
20
  range: {
21
21
  firstRowIndex: number;
22
22
  lastRowIndex: number;
package/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,8 +3,8 @@ 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';
7
- export type { GridPreProcessor } from '../hooks/core/preProcessing';
6
+ export { useGridRegisterPipeProcessor } from '../hooks/core/pipeProcessing';
7
+ export type { GridPipeProcessor } from '../hooks/core/pipeProcessing';
8
8
  export { useGridRegisterStrategyProcessor } from '../hooks/core/strategyProcessing';
9
9
  export type { GridStrategyProcessor } from '../hooks/core/strategyProcessing';
10
10
  export { useGridInitialization } from '../hooks/core/useGridInitialization';
@@ -12,6 +12,7 @@ export { useGridClipboard } from '../hooks/features/clipboard/useGridClipboard';
12
12
  export { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
13
13
  export { useGridColumnMenu, columnMenuStateInitializer, } from '../hooks/features/columnMenu/useGridColumnMenu';
14
14
  export { useGridColumns, columnsStateInitializer } from '../hooks/features/columns/useGridColumns';
15
+ export { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
15
16
  export type { GridColumnRawLookup, GridColumnsRawState, GridHydrateColumnsValue, } from '../hooks/features/columns/gridColumnsInterfaces';
16
17
  export { useGridDensity, densityStateInitializer } from '../hooks/features/density/useGridDensity';
17
18
  export { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
@@ -19,8 +20,7 @@ export { useGridPrintExport } from '../hooks/features/export/useGridPrintExport'
19
20
  export { useGridFilter, filterStateInitializer } from '../hooks/features/filter/useGridFilter';
20
21
  export type { GridAggregatedFilterItemApplier } from '../hooks/features/filter/gridFilterState';
21
22
  export { useGridFocus, focusStateInitializer } from '../hooks/features/focus/useGridFocus';
22
- export { useGridKeyboard } from '../hooks/features/keyboard/useGridKeyboard';
23
- export { useGridKeyboardNavigation } from '../hooks/features/keyboard/useGridKeyboardNavigation';
23
+ export { useGridKeyboardNavigation } from '../hooks/features/keyboardNavigation/useGridKeyboardNavigation';
24
24
  export { useGridPagination, paginationStateInitializer, } from '../hooks/features/pagination/useGridPagination';
25
25
  export { useGridPreferencesPanel, preferencePanelStateInitializer, } from '../hooks/features/preferencesPanel/useGridPreferencesPanel';
26
26
  export { useGridEditing as useGridEditing_new, editingStateInitializer as editingStateInitializer_new, } from '../hooks/features/editRows/useGridEditing.new';
@@ -43,8 +43,6 @@ export { useGridVirtualScroller } from '../hooks/features/virtualization/useGrid
43
43
  export { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
44
44
  export { useGridInitializeState } from '../hooks/utils/useGridInitializeState';
45
45
  export type { GridStateInitializer } from '../hooks/utils/useGridInitializeState';
46
- export type { GridComparatorFn, GridSortCellParams } from '../models/gridSortModel';
47
- export type { GridSortModelParams } from '../models/params/gridSortModelParams';
48
46
  export type { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, } from '../models/props/DataGridProps';
49
47
  export { createSelector } from '../utils/createSelector';
50
48
  export { findParentElementFromClassName } from '../utils/domUtils';
@@ -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';
@@ -460,7 +460,7 @@ DataGridRaw.propTypes = {
460
460
  * @param {GridEditCellPropsParams} params With all properties from [[GridEditCellPropsParams]].
461
461
  * @param {MuiEvent<React.SyntheticEvent>} event The event that caused this prop to be called.
462
462
  * @param {GridCallbackDetails} details Additional details for this callback.
463
- * @deprecated use `preProcessEditCellProps` from the [`GridColDef`](/api/data-grid/grid-col-def/)
463
+ * @deprecated use `preProcessEditCellProps` from the [`GridColDef`](/x/api/data-grid/grid-col-def/)
464
464
  */
465
465
  onEditCellPropsChange: PropTypes.func,
466
466
 
@@ -500,6 +500,28 @@ DataGridRaw.propTypes = {
500
500
  */
501
501
  onPageSizeChange: PropTypes.func,
502
502
 
503
+ /**
504
+ * Callback fired when the preferences panel is closed.
505
+ * @param {GridPreferencePanelParams} params With all properties from [[GridPreferencePanelParams]].
506
+ * @param {MuiEvent<{}>} event The event object.
507
+ * @param {GridCallbackDetails} details Additional details for this callback.
508
+ */
509
+ onPreferencePanelClose: PropTypes.func,
510
+
511
+ /**
512
+ * Callback fired when the preferences panel is opened.
513
+ * @param {GridPreferencePanelParams} params With all properties from [[GridPreferencePanelParams]].
514
+ * @param {MuiEvent<{}>} event The event object.
515
+ * @param {GridCallbackDetails} details Additional details for this callback.
516
+ */
517
+ onPreferencePanelOpen: PropTypes.func,
518
+
519
+ /**
520
+ * Callback called when `processRowUpdate` throws an error or rejects.
521
+ * @param {any} error The error thrown.
522
+ */
523
+ onProcessRowUpdateError: PropTypes.func,
524
+
503
525
  /**
504
526
  * Callback fired when the grid is resized.
505
527
  * @param {ElementSize} containerSize With all properties from [[ElementSize]].
@@ -606,9 +628,10 @@ DataGridRaw.propTypes = {
606
628
  /**
607
629
  * Callback called before updating a row with new values in the row and cell editing.
608
630
  * Only applied if `props.experimentalFeatures.newEditingApi: true`.
609
- * @param {GridRowModel} newRow Row object with the new values.
610
- * @param {GridRowModel} oldRow Row object with the old values.
611
- * @returns {Promise<GridRowModel> | GridRowModel} The final values to update the row.
631
+ * @template R
632
+ * @param {R} newRow Row object with the new values.
633
+ * @param {R} oldRow Row object with the old values.
634
+ * @returns {Promise<R> | R} The final values to update the row.
612
635
  */
613
636
  processRowUpdate: PropTypes.func,
614
637
 
@@ -633,7 +656,7 @@ DataGridRaw.propTypes = {
633
656
  /**
634
657
  * Set of rows of type [[GridRowsProp]].
635
658
  */
636
- rows: PropTypes.arrayOf(PropTypes.object).isRequired,
659
+ rows: PropTypes.array.isRequired,
637
660
 
638
661
  /**
639
662
  * Sets the type of space between rows added by `getRowSpacing`.
@@ -8,8 +8,7 @@ import { useGridCsvExport } from '../hooks/features/export/useGridCsvExport';
8
8
  import { useGridPrintExport } from '../hooks/features/export/useGridPrintExport';
9
9
  import { useGridFilter, filterStateInitializer } from '../hooks/features/filter/useGridFilter';
10
10
  import { focusStateInitializer, useGridFocus } from '../hooks/features/focus/useGridFocus';
11
- import { useGridKeyboard } from '../hooks/features/keyboard/useGridKeyboard';
12
- import { useGridKeyboardNavigation } from '../hooks/features/keyboard/useGridKeyboardNavigation';
11
+ import { useGridKeyboardNavigation } from '../hooks/features/keyboardNavigation/useGridKeyboardNavigation';
13
12
  import { useGridPagination, paginationStateInitializer } from '../hooks/features/pagination/useGridPagination';
14
13
  import { useGridPreferencesPanel, preferencePanelStateInitializer } from '../hooks/features/preferencesPanel/useGridPreferencesPanel';
15
14
  import { useGridEditing as useGridEditing_old, editingStateInitializer as editingStateInitializer_old } from '../hooks/features/editRows/useGridEditing.old';
@@ -25,6 +24,7 @@ import { useGridEvents } from '../hooks/features/events/useGridEvents';
25
24
  import { useGridDimensions } from '../hooks/features/dimensions/useGridDimensions';
26
25
  import { rowsMetaStateInitializer, useGridRowsMeta } from '../hooks/features/rows/useGridRowsMeta';
27
26
  import { useGridStatePersistence } from '../hooks/features/statePersistence/useGridStatePersistence';
27
+ import { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
28
28
  export var useDataGridComponent = function useDataGridComponent(props) {
29
29
  var _props$experimentalFe, _props$experimentalFe2;
30
30
 
@@ -51,23 +51,23 @@ export var useDataGridComponent = function useDataGridComponent(props) {
51
51
  useGridInitializeState(paginationStateInitializer, apiRef, props);
52
52
  useGridInitializeState(rowsMetaStateInitializer, apiRef, props);
53
53
  useGridInitializeState(columnMenuStateInitializer, apiRef, props);
54
+ useGridKeyboardNavigation(apiRef, props);
54
55
  useGridSelection(apiRef, props);
55
56
  useGridColumns(apiRef, props);
56
57
  useGridRows(apiRef, props);
57
58
  useGridParamsApi(apiRef);
59
+ useGridColumnSpanning(apiRef);
58
60
  var useGridEditing = (_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.newEditingApi ? useGridEditing_new : useGridEditing_old;
59
61
  useGridEditing(apiRef, props);
60
62
  useGridFocus(apiRef, props);
61
- useGridSorting(apiRef, props);
62
63
  useGridPreferencesPanel(apiRef);
63
64
  useGridFilter(apiRef, props);
65
+ useGridSorting(apiRef, props);
64
66
  useGridDensity(apiRef, props);
65
67
  useGridPagination(apiRef, props);
66
68
  useGridRowsMeta(apiRef, props);
67
69
  useGridScroll(apiRef, props);
68
70
  useGridColumnMenu(apiRef);
69
- useGridKeyboard(apiRef);
70
- useGridKeyboardNavigation(apiRef, props);
71
71
  useGridCsvExport(apiRef);
72
72
  useGridPrintExport(apiRef, props);
73
73
  useGridClipboard(apiRef);
@@ -10,7 +10,7 @@ export function gridDateFormatter(_ref) {
10
10
  return value.toLocaleDateString();
11
11
  }
12
12
 
13
- return value;
13
+ return value != null ? value : '';
14
14
  }
15
15
  export function gridDateTimeFormatter(_ref2) {
16
16
  var value = _ref2.value;
@@ -19,7 +19,7 @@ export function gridDateTimeFormatter(_ref2) {
19
19
  return value.toLocaleString();
20
20
  }
21
21
 
22
- return value;
22
+ return value != null ? value : '';
23
23
  }
24
24
  export var GRID_DATE_COL_DEF = _extends({}, GRID_STRING_COL_DEF, {
25
25
  type: 'date',
@@ -1,10 +1,10 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import { GRID_STRING_COL_DEF } from '../../colDef/gridStringColDef';
3
- import { GRID_NUMERIC_COL_DEF } from '../../colDef/gridNumericColDef';
4
- import { GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF } from '../../colDef/gridDateColDef';
5
- import { GRID_BOOLEAN_COL_DEF } from '../../colDef/gridBooleanColDef';
6
- import { GRID_SINGLE_SELECT_COL_DEF } from '../../colDef/gridSingleSelectColDef';
7
- import { GRID_ACTIONS_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../../colDef/gridActionsColDef';
2
+ import { GRID_STRING_COL_DEF } from './gridStringColDef';
3
+ import { GRID_NUMERIC_COL_DEF } from './gridNumericColDef';
4
+ import { GRID_DATE_COL_DEF, GRID_DATETIME_COL_DEF } from './gridDateColDef';
5
+ import { GRID_BOOLEAN_COL_DEF } from './gridBooleanColDef';
6
+ import { GRID_SINGLE_SELECT_COL_DEF } from './gridSingleSelectColDef';
7
+ import { GRID_ACTIONS_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from './gridActionsColDef';
8
8
  export var DEFAULT_GRID_COL_TYPE_KEY = '__default__';
9
9
  export var getGridDefaultColumnTypes = function getGridDefaultColumnTypes() {
10
10
  var _nativeColumnTypes;
@@ -9,4 +9,5 @@ export * from './gridBooleanOperators';
9
9
  export * from './gridDateOperators';
10
10
  export * from './gridNumericOperators';
11
11
  export * from './gridSingleSelectOperators';
12
- export * from './gridStringOperators';
12
+ export * from './gridStringOperators';
13
+ export * from './gridDefaultColumnTypes';