@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
@@ -21,12 +21,12 @@ var _useGridLogger = require("../../utils/useGridLogger");
21
21
 
22
22
  var _gridRowsSelector = require("../rows/gridRowsSelector");
23
23
 
24
- var _domUtils = require("../../../utils/domUtils");
25
-
26
24
  var _gridSelectionSelector = require("./gridSelectionSelector");
27
25
 
28
26
  var _pagination = require("../pagination");
29
27
 
28
+ var _gridFocusStateSelector = require("../focus/gridFocusStateSelector");
29
+
30
30
  var _gridFilterSelector = require("../filter/gridFilterSelector");
31
31
 
32
32
  var _colDef = require("../../../colDef");
@@ -37,6 +37,8 @@ var _keyboardUtils = require("../../../utils/keyboardUtils");
37
37
 
38
38
  var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
39
39
 
40
+ var _gridDetailPanelToggleField = require("../../../constants/gridDetailPanelToggleField");
41
+
40
42
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
43
 
42
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -65,8 +67,10 @@ const selectionStateInitializer = (state, props) => {
65
67
  });
66
68
  };
67
69
  /**
68
- * @requires useGridRows (state, method)
69
- * @requires useGridParamsApi (method)
70
+ * @requires useGridRows (state, method) - can be after
71
+ * @requires useGridParamsApi (method) - can be after
72
+ * @requires useGridFocus (state) - can be after
73
+ * @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
70
74
  */
71
75
 
72
76
 
@@ -94,7 +98,8 @@ const useGridSelection = (apiRef, props) => {
94
98
  paginationMode
95
99
  } = props;
96
100
  const canHaveMultipleSelection = !disableMultipleSelection || checkboxSelection;
97
- const expandRowRangeSelection = React.useCallback(id => {
101
+ const visibleRows = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props);
102
+ const expandMouseRowRangeSelection = React.useCallback(id => {
98
103
  var _lastRowToggled$curre;
99
104
 
100
105
  let endId = id;
@@ -200,12 +205,13 @@ const useGridSelection = (apiRef, props) => {
200
205
  return;
201
206
  }
202
207
 
203
- logger.debug(`Expanding selection from row ${startId} to row ${endId}`);
204
- const visibleRowIds = (0, _gridFilterSelector.gridVisibleSortedRowIdsSelector)(apiRef);
205
- const startIndex = visibleRowIds.indexOf(startId);
206
- const endIndex = visibleRowIds.indexOf(endId);
208
+ logger.debug(`Expanding selection from row ${startId} to row ${endId}`); // Using rows from all pages allow to select a range across several pages
209
+
210
+ const allPagesRowIds = (0, _gridFilterSelector.gridVisibleSortedRowIdsSelector)(apiRef);
211
+ const startIndex = allPagesRowIds.indexOf(startId);
212
+ const endIndex = allPagesRowIds.indexOf(endId);
207
213
  const [start, end] = startIndex > endIndex ? [endIndex, startIndex] : [startIndex, endIndex];
208
- const rowsBetweenStartAndEnd = visibleRowIds.slice(start, end + 1);
214
+ const rowsBetweenStartAndEnd = allPagesRowIds.slice(start, end + 1);
209
215
  apiRef.current.selectRows(rowsBetweenStartAndEnd, isSelected, resetSelection);
210
216
  }, [apiRef, logger]);
211
217
  const selectionApi = {
@@ -264,7 +270,7 @@ const useGridSelection = (apiRef, props) => {
264
270
  return;
265
271
  }
266
272
 
267
- if (params.field === '__detail_panel_toggle__') {
273
+ if (params.field === _gridDetailPanelToggleField.GRID_DETAIL_PANEL_TOGGLE_FIELD) {
268
274
  // click to open the detail panel should not select the row
269
275
  return;
270
276
  }
@@ -278,11 +284,11 @@ const useGridSelection = (apiRef, props) => {
278
284
  }
279
285
 
280
286
  if (event.shiftKey && (canHaveMultipleSelection || checkboxSelection)) {
281
- expandRowRangeSelection(params.id);
287
+ expandMouseRowRangeSelection(params.id);
282
288
  } else {
283
289
  handleSingleRowSelection(params.id, event);
284
290
  }
285
- }, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef, expandRowRangeSelection, handleSingleRowSelection]);
291
+ }, [disableSelectionOnClick, canHaveMultipleSelection, checkboxSelection, apiRef, expandMouseRowRangeSelection, handleSingleRowSelection]);
286
292
  const preventSelectionOnShift = React.useCallback((params, event) => {
287
293
  if (canHaveMultipleSelection && event.shiftKey) {
288
294
  var _window$getSelection;
@@ -292,35 +298,78 @@ const useGridSelection = (apiRef, props) => {
292
298
  }, [canHaveMultipleSelection]);
293
299
  const handleRowSelectionCheckboxChange = React.useCallback((params, event) => {
294
300
  if (event.nativeEvent.shiftKey) {
295
- expandRowRangeSelection(params.id);
301
+ expandMouseRowRangeSelection(params.id);
296
302
  } else {
297
303
  apiRef.current.selectRow(params.id, params.value);
298
304
  }
299
- }, [apiRef, expandRowRangeSelection]);
305
+ }, [apiRef, expandMouseRowRangeSelection]);
300
306
  const handleHeaderSelectionCheckboxChange = React.useCallback(params => {
301
307
  const shouldLimitSelectionToCurrentPage = props.checkboxSelectionVisibleOnly && props.pagination;
302
308
  const rowsToBeSelected = shouldLimitSelectionToCurrentPage ? (0, _pagination.gridPaginatedVisibleSortedGridRowIdsSelector)(apiRef) : (0, _gridFilterSelector.gridVisibleSortedRowIdsSelector)(apiRef);
303
309
  apiRef.current.selectRows(rowsToBeSelected, params.value);
304
310
  }, [apiRef, props.checkboxSelectionVisibleOnly, props.pagination]);
305
311
  const handleCellKeyDown = React.useCallback((params, event) => {
306
- // Ignore portal
312
+ // Get the most recent cell mode because it may have been changed by another listener
313
+ if (apiRef.current.getCellMode(params.id, params.field) === _gridEditRowModel.GridCellModes.Edit) {
314
+ return;
315
+ } // Ignore portal
307
316
  // Do not apply shortcuts if the focus is not on the cell root component
308
- // TODO replace with !event.currentTarget.contains(event.target as Element)
309
- if (!(0, _domUtils.isGridCellRoot)(event.target)) {
317
+
318
+
319
+ if (!event.currentTarget.contains(event.target)) {
310
320
  return;
311
- } // Get the most recent params because the cell mode may have changed by another listener
321
+ }
312
322
 
323
+ if ((0, _keyboardUtils.isNavigationKey)(event.key) && event.shiftKey) {
324
+ // The cell that has focus after the keyboard navigation
325
+ const focusCell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
313
326
 
314
- const cellParams = apiRef.current.getCellParams(params.id, params.field);
315
- const isEditMode = cellParams.cellMode === _gridEditRowModel.GridCellModes.Edit;
327
+ if (focusCell && focusCell.id !== params.id) {
328
+ event.preventDefault();
329
+ const isNextRowSelected = apiRef.current.isRowSelected(focusCell.id);
316
330
 
317
- if (isEditMode) {
318
- return;
331
+ if (!canHaveMultipleSelection) {
332
+ apiRef.current.selectRow(focusCell.id, !isNextRowSelected, true);
333
+ return;
334
+ }
335
+
336
+ const newRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(focusCell.id);
337
+ const previousRowIndex = apiRef.current.getRowIndexRelativeToVisibleRows(params.id);
338
+ let start;
339
+ let end;
340
+
341
+ if (newRowIndex > previousRowIndex) {
342
+ if (isNextRowSelected) {
343
+ // We are navigating to the bottom of the page and adding selected rows
344
+ start = previousRowIndex;
345
+ end = newRowIndex - 1;
346
+ } else {
347
+ // We are navigating to the bottom of the page and removing selected rows
348
+ start = previousRowIndex;
349
+ end = newRowIndex;
350
+ }
351
+ } else {
352
+ // eslint-disable-next-line no-lonely-if
353
+ if (isNextRowSelected) {
354
+ // We are navigating to the top of the page and removing selected rows
355
+ start = newRowIndex + 1;
356
+ end = previousRowIndex;
357
+ } else {
358
+ // We are navigating to the top of the page and adding selected rows
359
+ start = newRowIndex;
360
+ end = previousRowIndex;
361
+ }
362
+ }
363
+
364
+ const rowsBetweenStartAndEnd = visibleRows.rows.slice(start, end + 1).map(row => row.id);
365
+ apiRef.current.selectRows(rowsBetweenStartAndEnd, !isNextRowSelected);
366
+ return;
367
+ }
319
368
  }
320
369
 
321
370
  if (event.key === ' ' && event.shiftKey) {
322
371
  event.preventDefault();
323
- handleSingleRowSelection(cellParams.id, event);
372
+ handleSingleRowSelection(params.id, event);
324
373
  return;
325
374
  }
326
375
 
@@ -328,8 +377,8 @@ const useGridSelection = (apiRef, props) => {
328
377
  event.preventDefault();
329
378
  selectRows(apiRef.current.getAllRowIds(), true);
330
379
  }
331
- }, [apiRef, handleSingleRowSelection, selectRows]);
332
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.visibleRowsSet, removeOutdatedSelection);
380
+ }, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
381
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.sortedRowsSet, removeOutdatedSelection);
333
382
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.cellClick, handleCellClick);
334
383
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
335
384
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
@@ -13,7 +13,7 @@ var React = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _material = require("@mui/material");
15
15
 
16
- var _preProcessing = require("../../core/preProcessing");
16
+ var _pipeProcessing = require("../../core/pipeProcessing");
17
17
 
18
18
  var _constants = require("../../../constants");
19
19
 
@@ -60,7 +60,7 @@ const useGridSelectionPreProcessors = (apiRef, props) => {
60
60
 
61
61
  return columnsState;
62
62
  }, [apiRef, classes, props.checkboxSelection]);
63
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'hydrateColumns', updateSelectionColumn);
63
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'hydrateColumns', updateSelectionColumn);
64
64
  };
65
65
 
66
66
  exports.useGridSelectionPreProcessors = useGridSelectionPreProcessors;
@@ -35,7 +35,7 @@ var _strategyProcessing = require("../../core/strategyProcessing");
35
35
 
36
36
  var _gridSortingUtils = require("./gridSortingUtils");
37
37
 
38
- var _preProcessing = require("../../core/preProcessing");
38
+ var _pipeProcessing = require("../../core/pipeProcessing");
39
39
 
40
40
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41
41
 
@@ -111,17 +111,16 @@ const useGridSorting = (apiRef, props) => {
111
111
  */
112
112
 
113
113
  const applySorting = React.useCallback(() => {
114
- if (props.sortingMode === _gridFeatureMode.GridFeatureModeConstant.server) {
115
- logger.debug('Skipping sorting rows as sortingMode = server');
116
- apiRef.current.setState(state => (0, _extends2.default)({}, state, {
117
- sorting: (0, _extends2.default)({}, state.sorting, {
118
- sortedRows: (0, _rows.gridRowIdsSelector)(state, apiRef.current.instanceId)
119
- })
120
- }));
121
- return;
122
- }
123
-
124
114
  apiRef.current.setState(state => {
115
+ if (props.sortingMode === _gridFeatureMode.GridFeatureModeConstant.server) {
116
+ logger.debug('Skipping sorting rows as sortingMode = server');
117
+ return (0, _extends2.default)({}, state, {
118
+ sorting: (0, _extends2.default)({}, state.sorting, {
119
+ sortedRows: (0, _rows.gridRowIdsSelector)(state, apiRef.current.instanceId)
120
+ })
121
+ });
122
+ }
123
+
125
124
  const sortModel = (0, _gridSortingSelector.gridSortModelSelector)(state, apiRef.current.instanceId);
126
125
  const sortRowList = (0, _gridSortingUtils.buildAggregatedSortingApplier)(sortModel, apiRef);
127
126
  const sortedRows = apiRef.current.unstable_applyStrategyProcessor('sorting', {
@@ -133,6 +132,7 @@ const useGridSorting = (apiRef, props) => {
133
132
  })
134
133
  });
135
134
  });
135
+ apiRef.current.publishEvent(_events.GridEvents.sortedRowsSet);
136
136
  apiRef.current.forceUpdate();
137
137
  }, [apiRef, logger, props.sortingMode]);
138
138
  const setSortModel = React.useCallback(model => {
@@ -219,8 +219,8 @@ const useGridSorting = (apiRef, props) => {
219
219
  const rowTree = (0, _rows.gridRowTreeSelector)(apiRef);
220
220
  return params.sortRowList(Object.values(rowTree));
221
221
  }, [apiRef]);
222
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'exportState', stateExportPreProcessing);
223
- (0, _preProcessing.useGridRegisterPreProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
222
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
223
+ (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
224
224
  (0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'sorting', flatSortingMethod);
225
225
  /**
226
226
  * EVENTS
@@ -15,11 +15,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
15
15
 
16
16
  const useGridStatePersistence = apiRef => {
17
17
  const exportState = React.useCallback(() => {
18
- const stateToExport = apiRef.current.unstable_applyPreProcessors('exportState', {});
18
+ const stateToExport = apiRef.current.unstable_applyPipeProcessors('exportState', {});
19
19
  return stateToExport;
20
20
  }, [apiRef]);
21
21
  const restoreState = React.useCallback(stateToRestore => {
22
- const response = apiRef.current.unstable_applyPreProcessors('restoreState', {
22
+ const response = apiRef.current.unstable_applyPipeProcessors('restoreState', {
23
23
  callbacks: []
24
24
  }, {
25
25
  stateToRestore
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.getIndexFromScroll = getIndexFromScroll;
9
- exports.useGridVirtualScroller = void 0;
9
+ exports.useGridVirtualScroller = exports.getRenderableIndexes = void 0;
10
10
 
11
11
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
12
 
@@ -14,6 +14,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
14
14
 
15
15
  var React = _interopRequireWildcard(require("react"));
16
16
 
17
+ var ReactDOM = _interopRequireWildcard(require("react-dom"));
18
+
17
19
  var _utils = require("@mui/material/utils");
18
20
 
19
21
  var _useGridApiContext = require("../../utils/useGridApiContext");
@@ -42,6 +44,8 @@ var _gridSelectionSelector = require("../selection/gridSelectionSelector");
42
44
 
43
45
  var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
44
46
 
47
+ var _gridColumnsUtils = require("../columns/gridColumnsUtils");
48
+
45
49
  var _jsxRuntime = require("react/jsx-runtime");
46
50
 
47
51
  const _excluded = ["style"];
@@ -65,9 +69,19 @@ function getIndexFromScroll(offset, positions, sliceStart = 0, sliceEnd = positi
65
69
  return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
66
70
  }
67
71
 
68
- const useGridVirtualScroller = props => {
69
- var _currentPage$range2;
72
+ const getRenderableIndexes = ({
73
+ firstIndex,
74
+ lastIndex,
75
+ buffer,
76
+ minFirstIndex,
77
+ maxLastIndex
78
+ }) => {
79
+ return [(0, _utils2.clamp)(firstIndex - buffer, minFirstIndex, maxLastIndex), (0, _utils2.clamp)(lastIndex + buffer, minFirstIndex, maxLastIndex)];
80
+ };
70
81
 
82
+ exports.getRenderableIndexes = getRenderableIndexes;
83
+
84
+ const useGridVirtualScroller = props => {
71
85
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
72
86
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
73
87
  const visibleColumns = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector);
@@ -142,34 +156,28 @@ const useGridVirtualScroller = props => {
142
156
  }
143
157
  }, []);
144
158
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.resize, handleResize);
145
-
146
- const getRenderableIndexes = ({
147
- firstIndex,
148
- lastIndex,
149
- buffer,
150
- minFirstIndex,
151
- maxLastIndex
152
- }) => {
153
- return [(0, _utils2.clamp)(firstIndex - buffer, minFirstIndex, maxLastIndex), (0, _utils2.clamp)(lastIndex + buffer, minFirstIndex, maxLastIndex)];
154
- };
155
-
156
159
  const updateRenderZonePosition = React.useCallback(nextRenderContext => {
157
- var _currentPage$range;
158
-
159
- const [firstRowToRender] = getRenderableIndexes({
160
+ const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
160
161
  firstIndex: nextRenderContext.firstRowIndex,
161
162
  lastIndex: nextRenderContext.lastRowIndex,
162
163
  minFirstIndex: 0,
163
- maxLastIndex: ((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.lastRowIndex) || 0,
164
+ maxLastIndex: currentPage.rows.length,
164
165
  buffer: rootProps.rowBuffer
165
166
  });
166
- const [firstColumnToRender] = getRenderableIndexes({
167
+ const [initialFirstColumnToRender] = getRenderableIndexes({
167
168
  firstIndex: nextRenderContext.firstColumnIndex,
168
169
  lastIndex: nextRenderContext.lastColumnIndex,
169
170
  minFirstIndex: renderZoneMinColumnIndex,
170
171
  maxLastIndex: renderZoneMaxColumnIndex,
171
172
  buffer: rootProps.columnBuffer
172
173
  });
174
+ const firstColumnToRender = (0, _gridColumnsUtils.getFirstNonSpannedColumnToRender)({
175
+ firstColumnToRender: initialFirstColumnToRender,
176
+ apiRef,
177
+ firstRowToRender,
178
+ lastRowToRender,
179
+ visibleRows: currentPage.rows
180
+ });
173
181
  const top = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef.current.state).positions[firstRowToRender];
174
182
  const left = (0, _gridColumnsSelector.gridColumnPositionsSelector)(apiRef)[firstColumnToRender]; // Call directly the selector because it might be outdated when this method is called
175
183
 
@@ -181,19 +189,22 @@ const useGridVirtualScroller = props => {
181
189
  left
182
190
  });
183
191
  }
184
- }, [apiRef, (_currentPage$range2 = currentPage.range) == null ? void 0 : _currentPage$range2.lastRowIndex, onRenderZonePositioning, renderZoneMaxColumnIndex, renderZoneMinColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
192
+ }, [apiRef, currentPage.rows, onRenderZonePositioning, renderZoneMinColumnIndex, renderZoneMaxColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
193
+ React.useLayoutEffect(() => {
194
+ if (renderContext) {
195
+ updateRenderZonePosition(renderContext);
196
+ }
197
+ }, [renderContext, updateRenderZonePosition]);
185
198
  const updateRenderContext = React.useCallback(nextRenderContext => {
186
199
  setRenderContext(nextRenderContext);
187
- updateRenderZonePosition(nextRenderContext);
188
200
  prevRenderContext.current = nextRenderContext;
189
- }, [setRenderContext, prevRenderContext, updateRenderZonePosition]);
201
+ }, [setRenderContext, prevRenderContext]);
190
202
  React.useEffect(() => {
191
203
  if (containerWidth == null) {
192
204
  return;
193
205
  }
194
206
 
195
207
  const initialRenderContext = computeRenderContext();
196
- prevRenderContext.current = initialRenderContext;
197
208
  updateRenderContext(initialRenderContext);
198
209
  const {
199
210
  top,
@@ -231,14 +242,25 @@ const useGridVirtualScroller = props => {
231
242
  top: scrollTop,
232
243
  left: scrollLeft,
233
244
  renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
234
- });
245
+ }, event);
235
246
 
236
247
  if (shouldSetState) {
237
- updateRenderContext(nextRenderContext);
248
+ // Prevents batching render context changes
249
+ ReactDOM.flushSync(() => {
250
+ updateRenderContext(nextRenderContext);
251
+ });
238
252
  prevTotalWidth.current = columnsTotalWidth;
239
253
  }
240
254
  };
241
255
 
256
+ const handleWheel = event => {
257
+ apiRef.current.publishEvent(_events.GridEvents.virtualScrollerWheel, {}, event);
258
+ };
259
+
260
+ const handleTouchMove = event => {
261
+ apiRef.current.publishEvent(_events.GridEvents.virtualScrollerTouchMove, {}, event);
262
+ };
263
+
242
264
  const getRows = (params = {
243
265
  renderContext
244
266
  }) => {
@@ -262,14 +284,32 @@ const useGridVirtualScroller = props => {
262
284
  maxLastIndex: currentPage.rows.length,
263
285
  buffer: rowBuffer
264
286
  });
265
- const [firstColumnToRender, lastColumnToRender] = getRenderableIndexes({
287
+ const renderedRows = [];
288
+
289
+ for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
290
+ const row = currentPage.rows[i];
291
+ renderedRows.push(row);
292
+ apiRef.current.unstable_calculateColSpan({
293
+ rowId: row.id,
294
+ minFirstColumn,
295
+ maxLastColumn
296
+ });
297
+ }
298
+
299
+ const [initialFirstColumnToRender, lastColumnToRender] = getRenderableIndexes({
266
300
  firstIndex: nextRenderContext.firstColumnIndex,
267
301
  lastIndex: nextRenderContext.lastColumnIndex,
268
302
  minFirstIndex: minFirstColumn,
269
303
  maxLastIndex: maxLastColumn,
270
304
  buffer: columnBuffer
271
305
  });
272
- const renderedRows = currentPage.rows.slice(firstRowToRender, lastRowToRender);
306
+ const firstColumnToRender = (0, _gridColumnsUtils.getFirstNonSpannedColumnToRender)({
307
+ firstColumnToRender: initialFirstColumnToRender,
308
+ apiRef,
309
+ firstRowToRender,
310
+ lastRowToRender,
311
+ visibleRows: currentPage.rows
312
+ });
273
313
  const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
274
314
  const rows = [];
275
315
 
@@ -370,6 +410,8 @@ const useGridVirtualScroller = props => {
370
410
  return (0, _extends2.default)({
371
411
  ref: handleRef,
372
412
  onScroll: handleScroll,
413
+ onWheel: handleWheel,
414
+ onTouchMove: handleTouchMove,
373
415
  style: (0, _extends2.default)({}, style, rootStyle)
374
416
  }, other);
375
417
  },
package/node/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.
@@ -159,6 +159,12 @@ Object.defineProperty(exports, "useGridColumnMenu", {
159
159
  return _useGridColumnMenu.useGridColumnMenu;
160
160
  }
161
161
  });
162
+ Object.defineProperty(exports, "useGridColumnSpanning", {
163
+ enumerable: true,
164
+ get: function () {
165
+ return _useGridColumnSpanning.useGridColumnSpanning;
166
+ }
167
+ });
162
168
  Object.defineProperty(exports, "useGridColumns", {
163
169
  enumerable: true,
164
170
  get: function () {
@@ -225,12 +231,6 @@ Object.defineProperty(exports, "useGridInitializeState", {
225
231
  return _useGridInitializeState.useGridInitializeState;
226
232
  }
227
233
  });
228
- Object.defineProperty(exports, "useGridKeyboard", {
229
- enumerable: true,
230
- get: function () {
231
- return _useGridKeyboard.useGridKeyboard;
232
- }
233
- });
234
234
  Object.defineProperty(exports, "useGridKeyboardNavigation", {
235
235
  enumerable: true,
236
236
  get: function () {
@@ -261,10 +261,10 @@ Object.defineProperty(exports, "useGridPrintExport", {
261
261
  return _useGridPrintExport.useGridPrintExport;
262
262
  }
263
263
  });
264
- Object.defineProperty(exports, "useGridRegisterPreProcessor", {
264
+ Object.defineProperty(exports, "useGridRegisterPipeProcessor", {
265
265
  enumerable: true,
266
266
  get: function () {
267
- return _preProcessing.useGridRegisterPreProcessor;
267
+ return _pipeProcessing.useGridRegisterPipeProcessor;
268
268
  }
269
269
  });
270
270
  Object.defineProperty(exports, "useGridRegisterStrategyProcessor", {
@@ -344,7 +344,7 @@ var _GridColumnHeaders = require("../components/columnHeaders/GridColumnHeaders"
344
344
 
345
345
  var _GridColumnHeadersInner = require("../components/columnHeaders/GridColumnHeadersInner");
346
346
 
347
- var _preProcessing = require("../hooks/core/preProcessing");
347
+ var _pipeProcessing = require("../hooks/core/pipeProcessing");
348
348
 
349
349
  var _strategyProcessing = require("../hooks/core/strategyProcessing");
350
350
 
@@ -358,6 +358,8 @@ var _useGridColumnMenu = require("../hooks/features/columnMenu/useGridColumnMenu
358
358
 
359
359
  var _useGridColumns = require("../hooks/features/columns/useGridColumns");
360
360
 
361
+ var _useGridColumnSpanning = require("../hooks/features/columns/useGridColumnSpanning");
362
+
361
363
  var _useGridDensity = require("../hooks/features/density/useGridDensity");
362
364
 
363
365
  var _useGridCsvExport = require("../hooks/features/export/useGridCsvExport");
@@ -368,9 +370,7 @@ var _useGridFilter = require("../hooks/features/filter/useGridFilter");
368
370
 
369
371
  var _useGridFocus = require("../hooks/features/focus/useGridFocus");
370
372
 
371
- var _useGridKeyboard = require("../hooks/features/keyboard/useGridKeyboard");
372
-
373
- var _useGridKeyboardNavigation = require("../hooks/features/keyboard/useGridKeyboardNavigation");
373
+ var _useGridKeyboardNavigation = require("../hooks/features/keyboardNavigation/useGridKeyboardNavigation");
374
374
 
375
375
  var _useGridPagination = require("../hooks/features/pagination/useGridPagination");
376
376
 
@@ -112,7 +112,9 @@ const arSDGrid = {
112
112
  unGroupColumn: name => `إيقاف التجميع حسب ${name}`,
113
113
  // Master/detail
114
114
  expandDetailPanel: 'توسيع',
115
- collapseDetailPanel: 'طوي'
115
+ collapseDetailPanel: 'طوي' // Row reordering text
116
+ // rowReorderingHeaderName: 'Row reordering',
117
+
116
118
  };
117
119
  const arSD = (0, _getGridLocalization.getGridLocalization)(arSDGrid, _locale.arSD);
118
120
  exports.arSD = arSD;
@@ -112,7 +112,9 @@ const bgBGGrid = {
112
112
  unGroupColumn: name => `Спри групиране по ${name}`,
113
113
  // Master/detail
114
114
  expandDetailPanel: 'Разгъване',
115
- collapseDetailPanel: 'Свиване'
115
+ collapseDetailPanel: 'Свиване' // Row reordering text
116
+ // rowReorderingHeaderName: 'Row reordering',
117
+
116
118
  };
117
119
  const bgBG = (0, _getGridLocalization.getGridLocalization)(bgBGGrid, _locale.bgBG);
118
120
  exports.bgBG = bgBG;
@@ -147,6 +147,8 @@ const csCZGrid = {
147
147
  unGroupColumn: name => `Přestat zoskupovat podle ${name}` // Master/detail
148
148
  // expandDetailPanel: 'Expand',
149
149
  // collapseDetailPanel: 'Collapse',
150
+ // Row reordering text
151
+ // rowReorderingHeaderName: 'Row reordering',
150
152
 
151
153
  };
152
154
  const csCZ = (0, _getGridLocalization.getGridLocalization)(csCZGrid, _locale.csCZ);