@mui/x-data-grid 5.8.0 → 5.11.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 (626) hide show
  1. package/CHANGELOG.md +333 -66
  2. package/DataGrid/DataGrid.js +36 -2
  3. package/DataGrid/useDataGridComponent.js +3 -1
  4. package/DataGrid/useDataGridProps.js +2 -1
  5. package/LICENSE +21 -0
  6. package/README.md +7 -5
  7. package/colDef/gridActionsColDef.js +2 -1
  8. package/colDef/gridBooleanColDef.js +2 -1
  9. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  10. package/colDef/gridDateColDef.js +4 -2
  11. package/colDef/gridNumericColDef.js +3 -2
  12. package/colDef/gridNumericOperators.d.ts +2 -0
  13. package/colDef/gridNumericOperators.js +11 -0
  14. package/colDef/gridSingleSelectColDef.js +3 -2
  15. package/colDef/gridSingleSelectOperators.d.ts +3 -0
  16. package/colDef/gridSingleSelectOperators.js +52 -0
  17. package/colDef/gridStringColDef.js +3 -2
  18. package/colDef/gridStringOperators.d.ts +2 -0
  19. package/colDef/gridStringOperators.js +12 -0
  20. package/components/GridFooter.d.ts +4 -2
  21. package/components/GridFooter.js +11 -2
  22. package/components/GridRow.d.ts +4 -0
  23. package/components/GridRow.js +58 -28
  24. package/components/GridRowCount.d.ts +4 -1
  25. package/components/GridRowCount.js +1 -0
  26. package/components/GridScrollArea.js +3 -4
  27. package/components/GridSelectedRowCount.d.ts +4 -1
  28. package/components/GridSelectedRowCount.js +2 -1
  29. package/components/base/GridBody.js +1 -2
  30. package/components/base/GridOverlays.js +5 -5
  31. package/components/cell/GridActionsCell.d.ts +5 -1
  32. package/components/cell/GridActionsCell.js +179 -21
  33. package/components/cell/GridActionsCellItem.d.ts +66 -4
  34. package/components/cell/GridActionsCellItem.js +7 -5
  35. package/components/cell/GridCell.d.ts +1 -0
  36. package/components/cell/GridCell.js +36 -15
  37. package/components/cell/GridEditBooleanCell.d.ts +15 -3
  38. package/components/cell/GridEditBooleanCell.js +101 -6
  39. package/components/cell/GridEditDateCell.d.ts +16 -4
  40. package/components/cell/GridEditDateCell.js +99 -5
  41. package/components/cell/GridEditInputCell.d.ts +11 -5
  42. package/components/cell/GridEditInputCell.js +30 -6
  43. package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
  44. package/components/cell/GridEditSingleSelectCell.js +50 -18
  45. package/components/cell/index.d.ts +2 -0
  46. package/components/cell/index.js +2 -0
  47. package/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  48. package/components/columnHeaders/GridColumnHeaders.d.ts +2 -1
  49. package/components/columnHeaders/GridColumnHeaders.js +1 -1
  50. package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
  51. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +3 -3
  52. package/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
  53. package/components/columnSelection/GridHeaderCheckbox.js +4 -5
  54. package/components/containers/GridFooterContainer.d.ts +8 -2
  55. package/components/containers/GridFooterContainer.js +11 -2
  56. package/components/containers/GridRootStyles.js +36 -1
  57. package/components/containers/GridToolbarContainer.d.ts +8 -2
  58. package/components/containers/GridToolbarContainer.js +12 -2
  59. package/components/menu/GridMenu.js +1 -0
  60. package/components/panel/GridPanel.js +1 -0
  61. package/components/panel/GridPanelContent.d.ts +8 -1
  62. package/components/panel/GridPanelContent.js +13 -2
  63. package/components/panel/GridPanelFooter.d.ts +8 -1
  64. package/components/panel/GridPanelFooter.js +13 -2
  65. package/components/panel/GridPanelHeader.d.ts +8 -1
  66. package/components/panel/GridPanelHeader.js +13 -2
  67. package/components/panel/filterPanel/GridFilterForm.js +14 -10
  68. package/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  69. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -15
  70. package/components/panel/filterPanel/GridFilterInputValue.js +22 -15
  71. package/components/toolbar/GridToolbar.d.ts +12 -2
  72. package/components/toolbar/GridToolbar.js +30 -7
  73. package/components/toolbar/GridToolbarDensitySelector.js +1 -1
  74. package/components/toolbar/GridToolbarExport.d.ts +5 -4
  75. package/components/toolbar/GridToolbarExport.js +15 -20
  76. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  77. package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
  78. package/components/toolbar/GridToolbarQuickFilter.js +88 -0
  79. package/components/toolbar/index.d.ts +3 -1
  80. package/components/toolbar/index.js +3 -2
  81. package/components/virtualization/GridVirtualScroller.d.ts +4 -1
  82. package/components/virtualization/GridVirtualScroller.js +2 -0
  83. package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
  84. package/components/virtualization/GridVirtualScrollerContent.js +1 -3
  85. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
  86. package/constants/defaultGridSlotsComponents.js +3 -2
  87. package/constants/gridClasses.d.ts +20 -0
  88. package/constants/gridClasses.js +1 -1
  89. package/constants/gridDetailPanelToggleField.d.ts +1 -0
  90. package/constants/gridDetailPanelToggleField.js +2 -0
  91. package/constants/localeTextConstants.js +8 -1
  92. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +39 -15
  93. package/hooks/core/pipeProcessing/index.d.ts +1 -0
  94. package/hooks/core/pipeProcessing/index.js +2 -1
  95. package/hooks/core/pipeProcessing/useGridPipeProcessing.d.ts +8 -3
  96. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
  97. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +3 -0
  98. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  99. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +0 -3
  100. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  101. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
  102. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  103. package/hooks/core/useGridApiInitialization.js +3 -3
  104. package/hooks/core/useGridErrorHandler.js +1 -2
  105. package/hooks/core/useGridStateInitialization.js +1 -2
  106. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +0 -1
  107. package/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
  108. package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  109. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -1
  110. package/hooks/features/columns/gridColumnsUtils.d.ts +19 -1
  111. package/hooks/features/columns/gridColumnsUtils.js +61 -8
  112. package/hooks/features/columns/useGridColumnSpanning.d.ts +7 -0
  113. package/hooks/features/columns/useGridColumnSpanning.js +108 -0
  114. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  115. package/hooks/features/columns/useGridColumns.js +30 -25
  116. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  117. package/hooks/features/dimensions/useGridDimensions.js +10 -11
  118. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  119. package/hooks/features/editRows/useGridCellEditing.new.js +151 -42
  120. package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  121. package/hooks/features/editRows/useGridEditing.new.js +7 -3
  122. package/hooks/features/editRows/useGridEditing.old.js +4 -5
  123. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  124. package/hooks/features/editRows/useGridRowEditing.new.js +145 -57
  125. package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  126. package/hooks/features/events/useGridEvents.js +17 -18
  127. package/hooks/features/export/serializers/csvSerializer.js +5 -5
  128. package/hooks/features/export/useGridCsvExport.js +23 -16
  129. package/hooks/features/export/useGridPrintExport.js +22 -0
  130. package/hooks/features/export/utils.d.ts +3 -1
  131. package/hooks/features/export/utils.js +13 -0
  132. package/hooks/features/filter/gridFilterState.d.ts +1 -2
  133. package/hooks/features/filter/gridFilterState.js +3 -1
  134. package/hooks/features/filter/gridFilterUtils.d.ts +8 -0
  135. package/hooks/features/filter/gridFilterUtils.js +84 -2
  136. package/hooks/features/filter/useGridFilter.js +32 -15
  137. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  138. package/hooks/features/focus/useGridFocus.js +48 -42
  139. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -0
  140. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -12
  141. package/hooks/features/pagination/useGridPage.js +3 -4
  142. package/hooks/features/pagination/useGridPageSize.js +2 -3
  143. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  144. package/hooks/features/rows/gridRowsSelector.d.ts +2 -0
  145. package/hooks/features/rows/gridRowsSelector.js +2 -0
  146. package/hooks/features/rows/gridRowsState.d.ts +7 -7
  147. package/hooks/features/rows/gridRowsUtils.d.ts +2 -1
  148. package/hooks/features/rows/gridRowsUtils.js +25 -1
  149. package/hooks/features/rows/useGridRows.d.ts +2 -2
  150. package/hooks/features/rows/useGridRows.js +121 -61
  151. package/hooks/features/rows/useGridRowsMeta.js +6 -13
  152. package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  153. package/hooks/features/scroll/useGridScroll.d.ts +2 -0
  154. package/hooks/features/scroll/useGridScroll.js +31 -4
  155. package/hooks/features/selection/useGridSelection.d.ts +1 -1
  156. package/hooks/features/selection/useGridSelection.js +15 -11
  157. package/hooks/features/sorting/useGridSorting.js +17 -18
  158. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +9 -0
  159. package/hooks/features/virtualization/useGridVirtualScroller.js +68 -32
  160. package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
  161. package/hooks/utils/useGridApiEventHandler.js +22 -9
  162. package/hooks/utils/useGridNativeEventListener.js +1 -2
  163. package/hooks/utils/useGridSelector.js +1 -1
  164. package/index.d.ts +2 -0
  165. package/index.js +1 -1
  166. package/internals/index.d.ts +5 -1
  167. package/internals/index.js +6 -2
  168. package/legacy/DataGrid/DataGrid.js +36 -2
  169. package/legacy/DataGrid/useDataGridComponent.js +3 -1
  170. package/legacy/DataGrid/useDataGridProps.js +2 -1
  171. package/legacy/colDef/gridActionsColDef.js +2 -1
  172. package/legacy/colDef/gridBooleanColDef.js +2 -1
  173. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
  174. package/legacy/colDef/gridDateColDef.js +4 -2
  175. package/legacy/colDef/gridNumericColDef.js +3 -2
  176. package/legacy/colDef/gridNumericOperators.js +28 -18
  177. package/legacy/colDef/gridSingleSelectColDef.js +3 -2
  178. package/legacy/colDef/gridSingleSelectOperators.js +55 -6
  179. package/legacy/colDef/gridStringColDef.js +3 -2
  180. package/legacy/colDef/gridStringOperators.js +25 -14
  181. package/legacy/components/GridFooter.js +11 -2
  182. package/legacy/components/GridRow.js +56 -28
  183. package/legacy/components/GridRowCount.js +1 -0
  184. package/legacy/components/GridScrollArea.js +3 -4
  185. package/legacy/components/GridSelectedRowCount.js +2 -1
  186. package/legacy/components/base/GridBody.js +1 -2
  187. package/legacy/components/base/GridOverlays.js +5 -5
  188. package/legacy/components/cell/GridActionsCell.js +197 -27
  189. package/legacy/components/cell/GridActionsCellItem.js +7 -5
  190. package/legacy/components/cell/GridCell.js +37 -15
  191. package/legacy/components/cell/GridEditBooleanCell.js +132 -11
  192. package/legacy/components/cell/GridEditDateCell.js +148 -42
  193. package/legacy/components/cell/GridEditInputCell.js +62 -13
  194. package/legacy/components/cell/GridEditSingleSelectCell.js +65 -28
  195. package/legacy/components/cell/index.js +2 -0
  196. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  197. package/legacy/components/columnHeaders/GridColumnHeaders.js +2 -3
  198. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +23 -6
  199. package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
  200. package/legacy/components/containers/GridFooterContainer.js +11 -2
  201. package/legacy/components/containers/GridRootStyles.js +26 -5
  202. package/legacy/components/containers/GridToolbarContainer.js +12 -2
  203. package/legacy/components/menu/GridMenu.js +1 -0
  204. package/legacy/components/panel/GridPanel.js +1 -0
  205. package/legacy/components/panel/GridPanelContent.js +13 -2
  206. package/legacy/components/panel/GridPanelFooter.js +13 -2
  207. package/legacy/components/panel/GridPanelHeader.js +13 -2
  208. package/legacy/components/panel/filterPanel/GridFilterForm.js +14 -10
  209. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +13 -8
  210. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +22 -17
  211. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +22 -17
  212. package/legacy/components/toolbar/GridToolbar.js +31 -6
  213. package/legacy/components/toolbar/GridToolbarDensitySelector.js +1 -1
  214. package/legacy/components/toolbar/GridToolbarExport.js +18 -19
  215. package/legacy/components/toolbar/GridToolbarQuickFilter.js +103 -0
  216. package/legacy/components/toolbar/index.js +3 -2
  217. package/legacy/components/virtualization/GridVirtualScroller.js +2 -0
  218. package/legacy/components/virtualization/GridVirtualScrollerContent.js +1 -3
  219. package/legacy/constants/defaultGridSlotsComponents.js +3 -2
  220. package/legacy/constants/gridClasses.js +1 -1
  221. package/legacy/constants/gridDetailPanelToggleField.js +2 -0
  222. package/legacy/constants/localeTextConstants.js +8 -1
  223. package/legacy/hooks/core/pipeProcessing/index.js +2 -1
  224. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +60 -24
  225. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  226. package/legacy/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  227. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  228. package/legacy/hooks/core/useGridApiInitialization.js +3 -3
  229. package/legacy/hooks/core/useGridErrorHandler.js +1 -2
  230. package/legacy/hooks/core/useGridStateInitialization.js +1 -2
  231. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +94 -16
  232. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  233. package/legacy/hooks/features/columns/gridColumnsUtils.js +79 -22
  234. package/legacy/hooks/features/columns/useGridColumnSpanning.js +106 -0
  235. package/legacy/hooks/features/columns/useGridColumns.js +30 -25
  236. package/legacy/hooks/features/dimensions/useGridDimensions.js +10 -11
  237. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +225 -89
  238. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  239. package/legacy/hooks/features/editRows/useGridEditing.new.js +7 -3
  240. package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
  241. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +157 -65
  242. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
  243. package/legacy/hooks/features/events/useGridEvents.js +17 -18
  244. package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
  245. package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
  246. package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
  247. package/legacy/hooks/features/export/utils.js +14 -0
  248. package/legacy/hooks/features/filter/gridFilterState.js +3 -1
  249. package/legacy/hooks/features/filter/gridFilterUtils.js +96 -2
  250. package/legacy/hooks/features/filter/useGridFilter.js +32 -15
  251. package/legacy/hooks/features/focus/useGridFocus.js +50 -44
  252. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +43 -11
  253. package/legacy/hooks/features/pagination/useGridPage.js +3 -4
  254. package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
  255. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  256. package/legacy/hooks/features/rows/gridRowsSelector.js +6 -0
  257. package/legacy/hooks/features/rows/gridRowsUtils.js +27 -1
  258. package/legacy/hooks/features/rows/useGridRows.js +131 -61
  259. package/legacy/hooks/features/rows/useGridRowsMeta.js +6 -13
  260. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  261. package/legacy/hooks/features/scroll/useGridScroll.js +31 -4
  262. package/legacy/hooks/features/selection/useGridSelection.js +15 -11
  263. package/legacy/hooks/features/sorting/useGridSorting.js +12 -15
  264. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +79 -42
  265. package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
  266. package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
  267. package/legacy/hooks/utils/useGridSelector.js +1 -1
  268. package/legacy/index.js +1 -1
  269. package/legacy/internals/index.js +6 -2
  270. package/legacy/locales/arSD.js +8 -1
  271. package/legacy/locales/bgBG.js +8 -1
  272. package/legacy/locales/csCZ.js +7 -0
  273. package/legacy/locales/daDK.js +8 -1
  274. package/legacy/locales/deDE.js +10 -3
  275. package/legacy/locales/elGR.js +7 -0
  276. package/legacy/locales/esES.js +7 -0
  277. package/legacy/locales/faIR.js +8 -1
  278. package/legacy/locales/fiFI.js +7 -0
  279. package/legacy/locales/frFR.js +7 -0
  280. package/legacy/locales/heIL.js +8 -1
  281. package/legacy/locales/huHU.js +127 -0
  282. package/legacy/locales/index.js +1 -0
  283. package/legacy/locales/itIT.js +7 -0
  284. package/legacy/locales/jaJP.js +7 -0
  285. package/legacy/locales/koKR.js +7 -0
  286. package/legacy/locales/nlNL.js +7 -0
  287. package/legacy/locales/plPL.js +8 -1
  288. package/legacy/locales/ptBR.js +8 -1
  289. package/legacy/locales/ruRU.js +7 -0
  290. package/legacy/locales/skSK.js +7 -0
  291. package/legacy/locales/trTR.js +8 -1
  292. package/legacy/locales/ukUA.js +7 -0
  293. package/legacy/locales/viVN.js +7 -0
  294. package/legacy/locales/zhCN.js +7 -0
  295. package/legacy/models/api/gridColumnSpanning.js +1 -0
  296. package/legacy/models/events/gridEvents.js +10 -3
  297. package/legacy/models/gridColumnSpanning.js +1 -0
  298. package/legacy/models/index.js +4 -3
  299. package/legacy/utils/createSelector.js +18 -2
  300. package/legacy/utils/exportAs.js +1 -1
  301. package/locales/arSD.js +8 -1
  302. package/locales/bgBG.js +8 -1
  303. package/locales/csCZ.js +7 -0
  304. package/locales/daDK.js +8 -1
  305. package/locales/deDE.js +10 -3
  306. package/locales/elGR.js +7 -0
  307. package/locales/esES.js +7 -0
  308. package/locales/faIR.js +8 -1
  309. package/locales/fiFI.js +7 -0
  310. package/locales/frFR.js +7 -0
  311. package/locales/heIL.js +8 -1
  312. package/locales/huHU.d.ts +2 -0
  313. package/locales/huHU.js +115 -0
  314. package/locales/index.d.ts +1 -0
  315. package/locales/index.js +1 -0
  316. package/locales/itIT.js +7 -0
  317. package/locales/jaJP.js +7 -0
  318. package/locales/koKR.js +7 -0
  319. package/locales/nlNL.js +7 -0
  320. package/locales/plPL.js +8 -1
  321. package/locales/ptBR.js +8 -1
  322. package/locales/ruRU.js +7 -0
  323. package/locales/skSK.js +7 -0
  324. package/locales/trTR.js +8 -1
  325. package/locales/ukUA.js +7 -0
  326. package/locales/viVN.js +7 -0
  327. package/locales/zhCN.js +7 -0
  328. package/models/api/gridApiCommon.d.ts +2 -1
  329. package/models/api/gridColumnSpanning.d.ts +28 -0
  330. package/models/api/gridColumnSpanning.js +1 -0
  331. package/models/api/gridCoreApi.d.ts +10 -0
  332. package/models/api/gridEditingApi.d.ts +72 -7
  333. package/models/api/gridFilterApi.d.ts +5 -0
  334. package/models/api/gridFocusApi.d.ts +1 -0
  335. package/models/api/gridLocaleTextApi.d.ts +5 -0
  336. package/models/api/gridRowApi.d.ts +34 -0
  337. package/models/api/index.d.ts +1 -1
  338. package/models/colDef/gridColDef.d.ts +18 -0
  339. package/models/events/gridEventLookup.d.ts +296 -11
  340. package/models/events/gridEvents.d.ts +10 -258
  341. package/models/events/gridEvents.js +10 -3
  342. package/models/gridColumnSpanning.d.ts +12 -0
  343. package/models/gridColumnSpanning.js +1 -0
  344. package/models/gridEditRowModel.d.ts +1 -1
  345. package/models/gridExport.d.ts +29 -2
  346. package/models/gridFilterModel.d.ts +11 -0
  347. package/models/gridFilterOperator.d.ts +1 -1
  348. package/models/gridIconSlotsComponent.d.ts +5 -0
  349. package/models/gridStateCommunity.d.ts +0 -2
  350. package/models/index.d.ts +1 -1
  351. package/models/index.js +4 -3
  352. package/models/params/gridCellParams.d.ts +12 -2
  353. package/models/params/gridRowParams.d.ts +5 -0
  354. package/models/props/DataGridProps.d.ts +57 -29
  355. package/modern/DataGrid/DataGrid.js +36 -2
  356. package/modern/DataGrid/useDataGridComponent.js +3 -1
  357. package/modern/DataGrid/useDataGridProps.js +2 -1
  358. package/modern/colDef/gridActionsColDef.js +2 -1
  359. package/modern/colDef/gridBooleanColDef.js +2 -1
  360. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  361. package/modern/colDef/gridDateColDef.js +4 -2
  362. package/modern/colDef/gridNumericColDef.js +3 -2
  363. package/modern/colDef/gridNumericOperators.js +11 -0
  364. package/modern/colDef/gridSingleSelectColDef.js +3 -2
  365. package/modern/colDef/gridSingleSelectOperators.js +52 -0
  366. package/modern/colDef/gridStringColDef.js +3 -2
  367. package/modern/colDef/gridStringOperators.js +12 -0
  368. package/modern/components/GridFooter.js +11 -2
  369. package/modern/components/GridRow.js +56 -26
  370. package/modern/components/GridRowCount.js +1 -0
  371. package/modern/components/GridScrollArea.js +3 -4
  372. package/modern/components/GridSelectedRowCount.js +2 -1
  373. package/modern/components/base/GridBody.js +1 -2
  374. package/modern/components/base/GridOverlays.js +5 -5
  375. package/modern/components/cell/GridActionsCell.js +179 -21
  376. package/modern/components/cell/GridActionsCellItem.js +7 -5
  377. package/modern/components/cell/GridCell.js +36 -15
  378. package/modern/components/cell/GridEditBooleanCell.js +101 -6
  379. package/modern/components/cell/GridEditDateCell.js +99 -5
  380. package/modern/components/cell/GridEditInputCell.js +30 -6
  381. package/modern/components/cell/GridEditSingleSelectCell.js +48 -16
  382. package/modern/components/cell/index.js +2 -0
  383. package/modern/components/columnHeaders/GridColumnHeaderItem.js +19 -23
  384. package/modern/components/columnHeaders/GridColumnHeaders.js +1 -1
  385. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +22 -6
  386. package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
  387. package/modern/components/containers/GridFooterContainer.js +11 -2
  388. package/modern/components/containers/GridRootStyles.js +36 -1
  389. package/modern/components/containers/GridToolbarContainer.js +12 -2
  390. package/modern/components/menu/GridMenu.js +1 -0
  391. package/modern/components/panel/GridPanel.js +1 -0
  392. package/modern/components/panel/GridPanelContent.js +13 -2
  393. package/modern/components/panel/GridPanelFooter.js +13 -2
  394. package/modern/components/panel/GridPanelHeader.js +13 -2
  395. package/modern/components/panel/filterPanel/GridFilterForm.js +10 -6
  396. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +11 -6
  397. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +20 -13
  398. package/modern/components/panel/filterPanel/GridFilterInputValue.js +20 -13
  399. package/modern/components/toolbar/GridToolbar.js +30 -7
  400. package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
  401. package/modern/components/toolbar/GridToolbarExport.js +15 -20
  402. package/modern/components/toolbar/GridToolbarQuickFilter.js +86 -0
  403. package/modern/components/toolbar/index.js +3 -2
  404. package/modern/components/virtualization/GridVirtualScroller.js +2 -0
  405. package/modern/components/virtualization/GridVirtualScrollerContent.js +1 -3
  406. package/modern/constants/defaultGridSlotsComponents.js +3 -2
  407. package/modern/constants/gridClasses.js +1 -1
  408. package/modern/constants/gridDetailPanelToggleField.js +2 -0
  409. package/modern/constants/localeTextConstants.js +8 -1
  410. package/modern/hooks/core/pipeProcessing/index.js +2 -1
  411. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +53 -19
  412. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +27 -0
  413. package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -4
  414. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  415. package/modern/hooks/core/useGridApiInitialization.js +3 -3
  416. package/modern/hooks/core/useGridErrorHandler.js +1 -2
  417. package/modern/hooks/core/useGridStateInitialization.js +1 -2
  418. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +81 -16
  419. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  420. package/modern/hooks/features/columns/gridColumnsUtils.js +61 -8
  421. package/modern/hooks/features/columns/useGridColumnSpanning.js +106 -0
  422. package/modern/hooks/features/columns/useGridColumns.js +30 -25
  423. package/modern/hooks/features/dimensions/useGridDimensions.js +10 -11
  424. package/modern/hooks/features/editRows/useGridCellEditing.new.js +149 -42
  425. package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  426. package/modern/hooks/features/editRows/useGridEditing.new.js +7 -3
  427. package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
  428. package/modern/hooks/features/editRows/useGridRowEditing.new.js +143 -57
  429. package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  430. package/modern/hooks/features/events/useGridEvents.js +17 -18
  431. package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
  432. package/modern/hooks/features/export/useGridCsvExport.js +21 -16
  433. package/modern/hooks/features/export/useGridPrintExport.js +20 -0
  434. package/modern/hooks/features/export/utils.js +13 -0
  435. package/modern/hooks/features/filter/gridFilterState.js +3 -1
  436. package/modern/hooks/features/filter/gridFilterUtils.js +80 -2
  437. package/modern/hooks/features/filter/useGridFilter.js +32 -15
  438. package/modern/hooks/features/focus/useGridFocus.js +48 -42
  439. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +41 -12
  440. package/modern/hooks/features/pagination/useGridPage.js +3 -4
  441. package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
  442. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  443. package/modern/hooks/features/rows/gridRowsSelector.js +2 -0
  444. package/modern/hooks/features/rows/gridRowsUtils.js +23 -1
  445. package/modern/hooks/features/rows/useGridRows.js +121 -61
  446. package/modern/hooks/features/rows/useGridRowsMeta.js +6 -13
  447. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  448. package/modern/hooks/features/scroll/useGridScroll.js +29 -4
  449. package/modern/hooks/features/selection/useGridSelection.js +15 -11
  450. package/modern/hooks/features/sorting/useGridSorting.js +17 -18
  451. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +68 -28
  452. package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
  453. package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
  454. package/modern/hooks/utils/useGridSelector.js +1 -1
  455. package/modern/index.js +1 -1
  456. package/modern/internals/index.js +6 -2
  457. package/modern/locales/arSD.js +8 -1
  458. package/modern/locales/bgBG.js +8 -1
  459. package/modern/locales/csCZ.js +7 -0
  460. package/modern/locales/daDK.js +8 -1
  461. package/modern/locales/deDE.js +10 -3
  462. package/modern/locales/elGR.js +7 -0
  463. package/modern/locales/esES.js +7 -0
  464. package/modern/locales/faIR.js +8 -1
  465. package/modern/locales/fiFI.js +7 -0
  466. package/modern/locales/frFR.js +7 -0
  467. package/modern/locales/heIL.js +8 -1
  468. package/modern/locales/huHU.js +115 -0
  469. package/modern/locales/index.js +1 -0
  470. package/modern/locales/itIT.js +7 -0
  471. package/modern/locales/jaJP.js +7 -0
  472. package/modern/locales/koKR.js +7 -0
  473. package/modern/locales/nlNL.js +7 -0
  474. package/modern/locales/plPL.js +8 -1
  475. package/modern/locales/ptBR.js +8 -1
  476. package/modern/locales/ruRU.js +7 -0
  477. package/modern/locales/skSK.js +7 -0
  478. package/modern/locales/trTR.js +8 -1
  479. package/modern/locales/ukUA.js +7 -0
  480. package/modern/locales/viVN.js +7 -0
  481. package/modern/locales/zhCN.js +7 -0
  482. package/modern/models/api/gridColumnSpanning.js +1 -0
  483. package/modern/models/events/gridEvents.js +10 -3
  484. package/modern/models/gridColumnSpanning.js +1 -0
  485. package/modern/models/index.js +4 -3
  486. package/modern/utils/createSelector.js +20 -2
  487. package/modern/utils/exportAs.js +1 -1
  488. package/node/DataGrid/DataGrid.js +36 -2
  489. package/node/DataGrid/useDataGridComponent.js +4 -1
  490. package/node/DataGrid/useDataGridProps.js +2 -1
  491. package/node/colDef/gridActionsColDef.js +2 -1
  492. package/node/colDef/gridBooleanColDef.js +2 -1
  493. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  494. package/node/colDef/gridDateColDef.js +4 -2
  495. package/node/colDef/gridNumericColDef.js +2 -1
  496. package/node/colDef/gridNumericOperators.js +15 -1
  497. package/node/colDef/gridSingleSelectColDef.js +2 -1
  498. package/node/colDef/gridSingleSelectOperators.js +56 -1
  499. package/node/colDef/gridStringColDef.js +2 -1
  500. package/node/colDef/gridStringOperators.js +16 -1
  501. package/node/components/GridFooter.js +10 -1
  502. package/node/components/GridRow.js +59 -29
  503. package/node/components/GridRowCount.js +1 -0
  504. package/node/components/GridScrollArea.js +3 -5
  505. package/node/components/GridSelectedRowCount.js +2 -1
  506. package/node/components/base/GridBody.js +1 -3
  507. package/node/components/base/GridOverlays.js +4 -5
  508. package/node/components/cell/GridActionsCell.js +181 -21
  509. package/node/components/cell/GridActionsCellItem.js +7 -4
  510. package/node/components/cell/GridCell.js +35 -14
  511. package/node/components/cell/GridEditBooleanCell.js +100 -5
  512. package/node/components/cell/GridEditDateCell.js +98 -4
  513. package/node/components/cell/GridEditInputCell.js +30 -6
  514. package/node/components/cell/GridEditSingleSelectCell.js +50 -18
  515. package/node/components/cell/index.js +26 -0
  516. package/node/components/columnHeaders/GridColumnHeaderItem.js +19 -24
  517. package/node/components/columnHeaders/GridColumnHeaders.js +1 -1
  518. package/node/components/columnSelection/GridCellCheckboxRenderer.js +22 -7
  519. package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
  520. package/node/components/containers/GridFooterContainer.js +10 -1
  521. package/node/components/containers/GridRootStyles.js +36 -1
  522. package/node/components/containers/GridToolbarContainer.js +11 -1
  523. package/node/components/menu/GridMenu.js +1 -0
  524. package/node/components/panel/GridPanel.js +1 -0
  525. package/node/components/panel/GridPanelContent.js +11 -1
  526. package/node/components/panel/GridPanelFooter.js +11 -1
  527. package/node/components/panel/GridPanelHeader.js +11 -1
  528. package/node/components/panel/filterPanel/GridFilterForm.js +15 -10
  529. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +14 -8
  530. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +23 -15
  531. package/node/components/panel/filterPanel/GridFilterInputValue.js +23 -15
  532. package/node/components/toolbar/GridToolbar.js +32 -7
  533. package/node/components/toolbar/GridToolbarDensitySelector.js +1 -1
  534. package/node/components/toolbar/GridToolbarExport.js +14 -19
  535. package/node/components/toolbar/GridToolbarQuickFilter.js +111 -0
  536. package/node/components/toolbar/index.js +42 -11
  537. package/node/components/virtualization/GridVirtualScroller.js +2 -0
  538. package/node/components/virtualization/GridVirtualScrollerContent.js +1 -3
  539. package/node/constants/defaultGridSlotsComponents.js +2 -1
  540. package/node/constants/gridClasses.js +1 -1
  541. package/node/constants/gridDetailPanelToggleField.js +9 -0
  542. package/node/constants/localeTextConstants.js +8 -1
  543. package/node/hooks/core/pipeProcessing/index.js +13 -0
  544. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +51 -20
  545. package/node/hooks/core/pipeProcessing/useGridRegisterPipeApplier.js +42 -0
  546. package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +0 -3
  547. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
  548. package/node/hooks/core/useGridApiInitialization.js +3 -4
  549. package/node/hooks/core/useGridErrorHandler.js +1 -3
  550. package/node/hooks/core/useGridStateInitialization.js +1 -3
  551. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +85 -17
  552. package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  553. package/node/hooks/features/columns/gridColumnsUtils.js +65 -9
  554. package/node/hooks/features/columns/useGridColumnSpanning.js +128 -0
  555. package/node/hooks/features/columns/useGridColumns.js +29 -25
  556. package/node/hooks/features/dimensions/useGridDimensions.js +10 -12
  557. package/node/hooks/features/editRows/useGridCellEditing.new.js +151 -42
  558. package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
  559. package/node/hooks/features/editRows/useGridEditing.new.js +6 -2
  560. package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
  561. package/node/hooks/features/editRows/useGridRowEditing.new.js +143 -57
  562. package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
  563. package/node/hooks/features/events/useGridEvents.js +17 -19
  564. package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
  565. package/node/hooks/features/export/useGridCsvExport.js +26 -17
  566. package/node/hooks/features/export/useGridPrintExport.js +25 -0
  567. package/node/hooks/features/export/utils.js +19 -2
  568. package/node/hooks/features/filter/gridFilterState.js +3 -1
  569. package/node/hooks/features/filter/gridFilterUtils.js +92 -3
  570. package/node/hooks/features/filter/useGridFilter.js +33 -16
  571. package/node/hooks/features/focus/useGridFocus.js +48 -43
  572. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +44 -13
  573. package/node/hooks/features/pagination/useGridPage.js +3 -5
  574. package/node/hooks/features/pagination/useGridPageSize.js +2 -4
  575. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
  576. package/node/hooks/features/rows/gridRowsSelector.js +5 -1
  577. package/node/hooks/features/rows/gridRowsUtils.js +29 -1
  578. package/node/hooks/features/rows/useGridRows.js +122 -61
  579. package/node/hooks/features/rows/useGridRowsMeta.js +6 -14
  580. package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  581. package/node/hooks/features/scroll/useGridScroll.js +32 -3
  582. package/node/hooks/features/selection/useGridSelection.js +16 -12
  583. package/node/hooks/features/sorting/useGridSorting.js +17 -19
  584. package/node/hooks/features/virtualization/useGridVirtualScroller.js +73 -33
  585. package/node/hooks/utils/useGridApiEventHandler.js +22 -10
  586. package/node/hooks/utils/useGridNativeEventListener.js +1 -3
  587. package/node/hooks/utils/useGridSelector.js +1 -1
  588. package/node/index.js +1 -1
  589. package/node/internals/index.js +47 -3
  590. package/node/locales/arSD.js +8 -1
  591. package/node/locales/bgBG.js +8 -1
  592. package/node/locales/csCZ.js +7 -0
  593. package/node/locales/daDK.js +8 -1
  594. package/node/locales/deDE.js +10 -3
  595. package/node/locales/elGR.js +7 -0
  596. package/node/locales/esES.js +7 -0
  597. package/node/locales/faIR.js +8 -1
  598. package/node/locales/fiFI.js +7 -0
  599. package/node/locales/frFR.js +7 -0
  600. package/node/locales/heIL.js +8 -1
  601. package/node/locales/huHU.js +125 -0
  602. package/node/locales/index.js +13 -0
  603. package/node/locales/itIT.js +7 -0
  604. package/node/locales/jaJP.js +7 -0
  605. package/node/locales/koKR.js +7 -0
  606. package/node/locales/nlNL.js +7 -0
  607. package/node/locales/plPL.js +8 -1
  608. package/node/locales/ptBR.js +8 -1
  609. package/node/locales/ruRU.js +7 -0
  610. package/node/locales/skSK.js +7 -0
  611. package/node/locales/trTR.js +8 -1
  612. package/node/locales/ukUA.js +7 -0
  613. package/node/locales/viVN.js +7 -0
  614. package/node/locales/zhCN.js +7 -0
  615. package/node/models/api/gridColumnSpanning.js +5 -0
  616. package/node/models/events/gridEvents.js +10 -3
  617. package/node/models/gridColumnSpanning.js +5 -0
  618. package/node/models/index.js +0 -13
  619. package/node/utils/createSelector.js +25 -4
  620. package/node/utils/exportAs.js +1 -1
  621. package/package.json +4 -4
  622. package/utils/createSelector.d.ts +2 -1
  623. package/utils/createSelector.js +20 -2
  624. package/utils/domUtils.d.ts +2 -2
  625. package/utils/exportAs.d.ts +2 -2
  626. package/utils/exportAs.js +1 -1
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
 
14
- var _events = require("../../../models/events");
15
-
16
14
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
17
15
 
18
16
  var _useGridLogger = require("../../utils/useGridLogger");
@@ -21,8 +19,6 @@ var _pipeProcessing = require("../../core/pipeProcessing");
21
19
 
22
20
  var _gridPreferencePanelSelector = require("./gridPreferencePanelSelector");
23
21
 
24
- var _useGridSelector = require("../../utils/useGridSelector");
25
-
26
22
  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); }
27
23
 
28
24
  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; }
@@ -45,7 +41,6 @@ exports.preferencePanelStateInitializer = preferencePanelStateInitializer;
45
41
 
46
42
  const useGridPreferencesPanel = apiRef => {
47
43
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridPreferencesPanel');
48
- const preferencePanelState = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
49
44
  const hideTimeout = React.useRef();
50
45
  const immediateTimeout = React.useRef();
51
46
  /**
@@ -54,9 +49,10 @@ const useGridPreferencesPanel = apiRef => {
54
49
 
55
50
  const hidePreferences = React.useCallback(() => {
56
51
  logger.debug('Hiding Preferences Panel');
52
+ const preferencePanelState = (0, _gridPreferencePanelSelector.gridPreferencePanelStateSelector)(apiRef.current.state);
57
53
 
58
54
  if (preferencePanelState.openedPanelValue) {
59
- apiRef.current.publishEvent(_events.GridEvents.preferencePanelClose, {
55
+ apiRef.current.publishEvent('preferencePanelClose', {
60
56
  openedPanelValue: preferencePanelState.openedPanelValue
61
57
  });
62
58
  }
@@ -67,7 +63,7 @@ const useGridPreferencesPanel = apiRef => {
67
63
  }
68
64
  }));
69
65
  apiRef.current.forceUpdate();
70
- }, [apiRef, logger, preferencePanelState.openedPanelValue]); // This is to prevent the preferences from closing when you open a select box or another panel,
66
+ }, [apiRef, logger]); // This is to prevent the preferences from closing when you open a select box or another panel,
71
67
  // The issue is in MUI core V4 => Fixed in V5
72
68
 
73
69
  const doNotHidePanel = React.useCallback(() => {
@@ -87,7 +83,7 @@ const useGridPreferencesPanel = apiRef => {
87
83
  openedPanelValue: newValue
88
84
  })
89
85
  }));
90
- apiRef.current.publishEvent(_events.GridEvents.preferencePanelOpen, {
86
+ apiRef.current.publishEvent('preferencePanelOpen', {
91
87
  openedPanelValue: newValue
92
88
  });
93
89
  apiRef.current.forceUpdate();
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.gridTopLevelRowCountSelector = exports.gridRowsStateSelector = exports.gridRowsLookupSelector = exports.gridRowTreeSelector = exports.gridRowTreeDepthSelector = exports.gridRowIdsSelector = exports.gridRowGroupingNameSelector = exports.gridRowCountSelector = void 0;
6
+ exports.gridTopLevelRowCountSelector = exports.gridRowsStateSelector = exports.gridRowsLookupSelector = exports.gridRowsLoadingSelector = exports.gridRowsIdToIdLookupSelector = exports.gridRowTreeSelector = exports.gridRowTreeDepthSelector = exports.gridRowIdsSelector = exports.gridRowGroupingNameSelector = exports.gridRowCountSelector = void 0;
7
7
 
8
8
  var _createSelector = require("../../../utils/createSelector");
9
9
 
@@ -12,10 +12,14 @@ const gridRowsStateSelector = state => state.rows;
12
12
  exports.gridRowsStateSelector = gridRowsStateSelector;
13
13
  const gridRowCountSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.totalRowCount);
14
14
  exports.gridRowCountSelector = gridRowCountSelector;
15
+ const gridRowsLoadingSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.loading);
16
+ exports.gridRowsLoadingSelector = gridRowsLoadingSelector;
15
17
  const gridTopLevelRowCountSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.totalTopLevelRowCount);
16
18
  exports.gridTopLevelRowCountSelector = gridTopLevelRowCountSelector;
17
19
  const gridRowsLookupSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.idRowsLookup);
18
20
  exports.gridRowsLookupSelector = gridRowsLookupSelector;
21
+ const gridRowsIdToIdLookupSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.idToIdLookup);
22
+ exports.gridRowsIdToIdLookupSelector = gridRowsIdToIdLookupSelector;
19
23
  const gridRowTreeSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.tree);
20
24
  exports.gridRowTreeSelector = gridRowTreeSelector;
21
25
  const gridRowGroupingNameSelector = (0, _createSelector.createSelector)(gridRowsStateSelector, rows => rows.groupingName);
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.checkGridRowIdIsValid = checkGridRowIdIsValid;
7
+ exports.getTreeNodeDescendants = void 0;
7
8
 
8
9
  /**
9
10
  * A helper function to check if the id provided is valid.
@@ -15,4 +16,31 @@ function checkGridRowIdIsValid(id, row, detailErrorMessage = 'A row was provided
15
16
  if (id == null) {
16
17
  throw new Error(['MUI: The data grid component requires all rows to have a unique `id` property.', 'Alternatively, you can use the `getRowId` prop to specify a custom id for each row.', detailErrorMessage, JSON.stringify(row)].join('\n'));
17
18
  }
18
- }
19
+ }
20
+
21
+ const getTreeNodeDescendants = (tree, parentId, skipAutoGeneratedRows) => {
22
+ var _tree$parentId;
23
+
24
+ const children = (_tree$parentId = tree[parentId]) == null ? void 0 : _tree$parentId.children;
25
+
26
+ if (children == null) {
27
+ return [];
28
+ }
29
+
30
+ const validDescendants = [];
31
+
32
+ for (let i = 0; i < children.length; i += 1) {
33
+ const child = children[i];
34
+ const childNode = tree[child];
35
+
36
+ if (!skipAutoGeneratedRows || !childNode.isAutoGenerated) {
37
+ validDescendants.push(child);
38
+ }
39
+
40
+ validDescendants.push(...getTreeNodeDescendants(tree, childNode.id, skipAutoGeneratedRows));
41
+ }
42
+
43
+ return validDescendants;
44
+ };
45
+
46
+ exports.getTreeNodeDescendants = getTreeNodeDescendants;
@@ -11,8 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
 
14
- var _events = require("../../../models/events");
15
-
16
14
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
17
15
 
18
16
  var _useGridLogger = require("../../utils/useGridLogger");
@@ -23,6 +21,10 @@ var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
23
21
 
24
22
  var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
25
23
 
24
+ var _gridSortingSelector = require("../sorting/gridSortingSelector");
25
+
26
+ var _gridFilterSelector = require("../filter/gridFilterSelector");
27
+
26
28
  var _gridRowsUtils = require("./gridRowsUtils");
27
29
 
28
30
  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); }
@@ -35,8 +37,8 @@ function getGridRowId(rowModel, getRowId, detailErrorMessage) {
35
37
  return id;
36
38
  }
37
39
 
38
- const convertGridRowsPropToState = ({
39
- prevState,
40
+ const convertRowsPropToState = ({
41
+ prevCache: prevState,
40
42
  rows,
41
43
  getRowId
42
44
  }) => {
@@ -45,6 +47,7 @@ const convertGridRowsPropToState = ({
45
47
  if (rows) {
46
48
  value = {
47
49
  idRowsLookup: {},
50
+ idToIdLookup: {},
48
51
  ids: []
49
52
  };
50
53
 
@@ -52,6 +55,7 @@ const convertGridRowsPropToState = ({
52
55
  const row = rows[i];
53
56
  const id = getGridRowId(row, getRowId);
54
57
  value.idRowsLookup[id] = row;
58
+ value.idToIdLookup[id] = id;
55
59
  value.ids.push(id);
56
60
  }
57
61
  } else {
@@ -64,41 +68,37 @@ const convertGridRowsPropToState = ({
64
68
  };
65
69
  };
66
70
 
67
- const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp) => {
71
+ const getRowsStateFromCache = (rowsCache, previousTree, apiRef, rowCountProp, loadingProp) => {
68
72
  const {
69
73
  value
70
- } = rowsCache.state;
74
+ } = rowsCache;
71
75
  const rowCount = rowCountProp != null ? rowCountProp : 0;
72
76
  const groupingResponse = apiRef.current.unstable_applyStrategyProcessor('rowTreeCreation', (0, _extends2.default)({}, value, {
73
77
  previousTree
74
78
  }));
75
79
  const dataTopLevelRowCount = groupingResponse.treeDepth === 1 ? groupingResponse.ids.length : Object.values(groupingResponse.tree).filter(node => node.parent == null).length;
76
80
  return (0, _extends2.default)({}, groupingResponse, {
81
+ loading: loadingProp,
77
82
  totalRowCount: Math.max(rowCount, groupingResponse.ids.length),
78
83
  totalTopLevelRowCount: Math.max(rowCount, dataTopLevelRowCount)
79
84
  });
80
85
  };
81
86
 
82
87
  const rowsStateInitializer = (state, props, apiRef) => {
83
- const rowsCache = {
84
- state: convertGridRowsPropToState({
85
- rows: props.rows,
86
- getRowId: props.getRowId,
87
- prevState: {
88
- value: {
89
- idRowsLookup: {},
90
- ids: []
91
- },
92
- rowsBeforePartialUpdates: []
93
- }
94
- }),
95
- timeout: null,
96
- lastUpdateMs: Date.now()
97
- };
88
+ apiRef.current.unstable_caches.rows = convertRowsPropToState({
89
+ rows: props.rows,
90
+ getRowId: props.getRowId,
91
+ prevCache: {
92
+ value: {
93
+ idRowsLookup: {},
94
+ idToIdLookup: {},
95
+ ids: []
96
+ },
97
+ rowsBeforePartialUpdates: []
98
+ }
99
+ });
98
100
  return (0, _extends2.default)({}, state, {
99
- rows: getRowsStateFromCache(rowsCache, null, apiRef, props.rowCount),
100
- rowsCache // TODO remove from state
101
-
101
+ rows: getRowsStateFromCache(apiRef.current.unstable_caches.rows, null, apiRef, props.rowCount, props.loading)
102
102
  });
103
103
  };
104
104
 
@@ -111,9 +111,9 @@ const useGridRows = (apiRef, props) => {
111
111
  }
112
112
 
113
113
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridRows');
114
- const rowsCache = React.useRef(apiRef.current.state.rowsCache); // To avoid listing rowsCache as useEffect dep
115
-
116
114
  const currentPage = (0, _useGridVisibleRows.useGridVisibleRows)(apiRef, props);
115
+ const lastUpdateMs = React.useRef(Date.now());
116
+ const timeout = React.useRef(null);
117
117
  const getRow = React.useCallback(id => {
118
118
  var _ref;
119
119
 
@@ -125,50 +125,50 @@ const useGridRows = (apiRef, props) => {
125
125
  acc[id] = index;
126
126
  return acc;
127
127
  }, {}), [currentPage.rows]);
128
- const throttledRowsChange = React.useCallback((newState, throttle) => {
128
+ const throttledRowsChange = React.useCallback((newCache, throttle) => {
129
129
  const run = () => {
130
- rowsCache.current.timeout = null;
131
- rowsCache.current.lastUpdateMs = Date.now();
130
+ timeout.current = null;
131
+ lastUpdateMs.current = Date.now();
132
132
  apiRef.current.setState(state => (0, _extends2.default)({}, state, {
133
- rows: getRowsStateFromCache(rowsCache.current, (0, _gridRowsSelector.gridRowTreeSelector)(apiRef), apiRef, props.rowCount)
133
+ rows: getRowsStateFromCache(apiRef.current.unstable_caches.rows, (0, _gridRowsSelector.gridRowTreeSelector)(apiRef), apiRef, props.rowCount, props.loading)
134
134
  }));
135
- apiRef.current.publishEvent(_events.GridEvents.rowsSet);
135
+ apiRef.current.publishEvent('rowsSet');
136
136
  apiRef.current.forceUpdate();
137
137
  };
138
138
 
139
- if (rowsCache.current.timeout) {
140
- clearTimeout(rowsCache.current.timeout);
139
+ if (timeout.current) {
140
+ clearTimeout(timeout.current);
141
+ timeout.current = null;
141
142
  }
142
143
 
143
- rowsCache.current.state = newState;
144
- rowsCache.current.timeout = null;
144
+ apiRef.current.unstable_caches.rows = newCache;
145
145
 
146
146
  if (!throttle) {
147
147
  run();
148
148
  return;
149
149
  }
150
150
 
151
- const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - rowsCache.current.lastUpdateMs);
151
+ const throttleRemainingTimeMs = props.throttleRowsMs - (Date.now() - lastUpdateMs.current);
152
152
 
153
153
  if (throttleRemainingTimeMs > 0) {
154
- rowsCache.current.timeout = setTimeout(run, throttleRemainingTimeMs);
154
+ timeout.current = setTimeout(run, throttleRemainingTimeMs);
155
155
  return;
156
156
  }
157
157
 
158
158
  run();
159
- }, [props.throttleRowsMs, props.rowCount, apiRef]);
159
+ }, [props.throttleRowsMs, props.rowCount, props.loading, apiRef]);
160
160
  /**
161
161
  * API METHODS
162
162
  */
163
163
 
164
164
  const setRows = React.useCallback(rows => {
165
165
  logger.debug(`Updating all rows, new length ${rows.length}`);
166
- throttledRowsChange(convertGridRowsPropToState({
166
+ throttledRowsChange(convertRowsPropToState({
167
167
  rows,
168
- prevState: rowsCache.current.state,
168
+ prevCache: apiRef.current.unstable_caches.rows,
169
169
  getRowId: props.getRowId
170
170
  }), true);
171
- }, [logger, props.getRowId, throttledRowsChange]);
171
+ }, [apiRef, logger, props.getRowId, throttledRowsChange]);
172
172
  const updateRows = React.useCallback(updates => {
173
173
  if (props.signature === _useGridApiEventHandler.GridSignature.DataGrid && updates.length > 1) {
174
174
  // TODO: Add test with direct call to `apiRef.current.updateRows` in DataGrid after enabling the `apiRef` on the free plan.
@@ -188,13 +188,15 @@ const useGridRows = (apiRef, props) => {
188
188
  });
189
189
  const deletedRowIds = [];
190
190
  const newStateValue = {
191
- idRowsLookup: (0, _extends2.default)({}, rowsCache.current.state.value.idRowsLookup),
192
- ids: [...rowsCache.current.state.value.ids]
191
+ idRowsLookup: (0, _extends2.default)({}, apiRef.current.unstable_caches.rows.value.idRowsLookup),
192
+ idToIdLookup: (0, _extends2.default)({}, apiRef.current.unstable_caches.rows.value.idToIdLookup),
193
+ ids: [...apiRef.current.unstable_caches.rows.value.ids]
193
194
  };
194
195
  uniqUpdates.forEach((partialRow, id) => {
195
196
  // eslint-disable-next-line no-underscore-dangle
196
197
  if (partialRow._action === 'delete') {
197
198
  delete newStateValue.idRowsLookup[id];
199
+ delete newStateValue.idToIdLookup[id];
198
200
  deletedRowIds.push(id);
199
201
  return;
200
202
  }
@@ -203,6 +205,7 @@ const useGridRows = (apiRef, props) => {
203
205
 
204
206
  if (!oldRow) {
205
207
  newStateValue.idRowsLookup[id] = partialRow;
208
+ newStateValue.idToIdLookup[id] = id;
206
209
  newStateValue.ids.push(id);
207
210
  return;
208
211
  }
@@ -214,11 +217,11 @@ const useGridRows = (apiRef, props) => {
214
217
  newStateValue.ids = newStateValue.ids.filter(id => !deletedRowIds.includes(id));
215
218
  }
216
219
 
217
- const state = (0, _extends2.default)({}, rowsCache.current.state, {
220
+ const state = (0, _extends2.default)({}, apiRef.current.unstable_caches.rows, {
218
221
  value: newStateValue
219
222
  });
220
223
  throttledRowsChange(state, true);
221
- }, [apiRef, props.getRowId, throttledRowsChange, props.signature]);
224
+ }, [props.signature, props.getRowId, throttledRowsChange, apiRef]);
222
225
  const getRowModels = React.useCallback(() => {
223
226
  const allRows = (0, _gridRowsSelector.gridRowIdsSelector)(apiRef);
224
227
  const idRowsLookup = (0, _gridRowsSelector.gridRowsLookupSelector)(apiRef);
@@ -247,23 +250,82 @@ const useGridRows = (apiRef, props) => {
247
250
  });
248
251
  });
249
252
  apiRef.current.forceUpdate();
250
- apiRef.current.publishEvent(_events.GridEvents.rowExpansionChange, newNode);
253
+ apiRef.current.publishEvent('rowExpansionChange', newNode);
251
254
  }, [apiRef]);
252
255
  const getRowNode = React.useCallback(id => {
253
256
  var _gridRowTreeSelector$;
254
257
 
255
258
  return (_gridRowTreeSelector$ = (0, _gridRowsSelector.gridRowTreeSelector)(apiRef)[id]) != null ? _gridRowTreeSelector$ : null;
256
259
  }, [apiRef]);
260
+ const getRowGroupChildren = React.useCallback(({
261
+ skipAutoGeneratedRows = true,
262
+ groupId,
263
+ applySorting,
264
+ applyFiltering
265
+ }) => {
266
+ const tree = (0, _gridRowsSelector.gridRowTreeSelector)(apiRef);
267
+ let children;
268
+
269
+ if (applySorting) {
270
+ const groupNode = tree[groupId];
271
+
272
+ if (!groupNode) {
273
+ return [];
274
+ }
275
+
276
+ const sortedRowIds = (0, _gridSortingSelector.gridSortedRowIdsSelector)(apiRef);
277
+ children = [];
278
+ const startIndex = sortedRowIds.findIndex(id => id === groupId) + 1;
279
+
280
+ for (let index = startIndex; index < sortedRowIds.length && tree[sortedRowIds[index]].depth > groupNode.depth; index += 1) {
281
+ const id = sortedRowIds[index];
282
+ const node = tree[id];
283
+
284
+ if (!skipAutoGeneratedRows || !node.isAutoGenerated) {
285
+ children.push(id);
286
+ }
287
+ }
288
+ } else {
289
+ children = (0, _gridRowsUtils.getTreeNodeDescendants)(tree, groupId, skipAutoGeneratedRows);
290
+ }
291
+
292
+ if (applyFiltering) {
293
+ const filteredRowsLookup = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
294
+ children = children.filter(childId => filteredRowsLookup[childId] !== false);
295
+ }
296
+
297
+ return children;
298
+ }, [apiRef]);
299
+ const setRowIndex = React.useCallback((rowId, targetIndex) => {
300
+ const allRows = (0, _gridRowsSelector.gridRowIdsSelector)(apiRef);
301
+ const oldIndex = allRows.findIndex(row => row === rowId);
302
+
303
+ if (oldIndex === -1 || oldIndex === targetIndex) {
304
+ return;
305
+ }
306
+
307
+ logger.debug(`Moving row ${rowId} to index ${targetIndex}`);
308
+ const updatedRows = [...allRows];
309
+ updatedRows.splice(targetIndex, 0, updatedRows.splice(oldIndex, 1)[0]);
310
+ apiRef.current.setState(state => (0, _extends2.default)({}, state, {
311
+ rows: (0, _extends2.default)({}, state.rows, {
312
+ ids: updatedRows
313
+ })
314
+ }));
315
+ apiRef.current.applySorting();
316
+ }, [apiRef, logger]);
257
317
  const rowApi = {
258
318
  getRow,
259
319
  getRowModels,
260
320
  getRowsCount,
261
321
  getAllRowIds,
262
322
  setRows,
323
+ setRowIndex,
263
324
  updateRows,
264
325
  setRowChildrenExpansion,
265
326
  getRowNode,
266
- getRowIndexRelativeToVisibleRows
327
+ getRowIndexRelativeToVisibleRows,
328
+ getRowGroupChildren
267
329
  };
268
330
  /**
269
331
  * EVENTS
@@ -273,7 +335,7 @@ const useGridRows = (apiRef, props) => {
273
335
  logger.info(`Row grouping pre-processing have changed, regenerating the row tree`);
274
336
  let rows;
275
337
 
276
- if (rowsCache.current.state.rowsBeforePartialUpdates === props.rows) {
338
+ if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {
277
339
  // The `props.rows` has not changed since the last row grouping
278
340
  // We can keep the potential updates stored in `inputRowsAfterUpdates` on the new grouping
279
341
  rows = undefined;
@@ -284,12 +346,12 @@ const useGridRows = (apiRef, props) => {
284
346
  rows = props.rows;
285
347
  }
286
348
 
287
- throttledRowsChange(convertGridRowsPropToState({
349
+ throttledRowsChange(convertRowsPropToState({
288
350
  rows,
289
351
  getRowId: props.getRowId,
290
- prevState: rowsCache.current.state
352
+ prevCache: apiRef.current.unstable_caches.rows
291
353
  }), false);
292
- }, [logger, throttledRowsChange, props.getRowId, props.rows]);
354
+ }, [logger, apiRef, props.rows, props.getRowId, throttledRowsChange]);
293
355
  const handleStrategyProcessorChange = React.useCallback(methodName => {
294
356
  if (methodName === 'rowTreeCreation') {
295
357
  groupRows();
@@ -302,8 +364,8 @@ const useGridRows = (apiRef, props) => {
302
364
  groupRows();
303
365
  }
304
366
  }, [apiRef, groupRows]);
305
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
306
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _events.GridEvents.strategyAvailabilityChange, handleStrategyActivityChange);
367
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
368
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'strategyAvailabilityChange', handleStrategyActivityChange);
307
369
  (0, _useGridApiMethod.useGridApiMethod)(apiRef, rowApi, 'GridRowApi');
308
370
  /**
309
371
  * EFFECTS
@@ -311,9 +373,8 @@ const useGridRows = (apiRef, props) => {
311
373
 
312
374
  React.useEffect(() => {
313
375
  return () => {
314
- if (rowsCache.current.timeout !== null) {
315
- // eslint-disable-next-line react-hooks/exhaustive-deps
316
- clearTimeout(rowsCache.current.timeout);
376
+ if (timeout.current !== null) {
377
+ clearTimeout(timeout.current);
317
378
  }
318
379
  };
319
380
  }, []); // The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`
@@ -324,20 +385,20 @@ const useGridRows = (apiRef, props) => {
324
385
  if (isFirstRender.current) {
325
386
  isFirstRender.current = false;
326
387
  return;
327
- } // The new rows have already been applied (most likely in the `GridEvents.rowGroupsPreProcessingChange` listener)
388
+ } // The new rows have already been applied (most likely in the `'rowGroupsPreProcessingChange'` listener)
328
389
 
329
390
 
330
- if (rowsCache.current.state.rowsBeforePartialUpdates === props.rows) {
391
+ if (apiRef.current.unstable_caches.rows.rowsBeforePartialUpdates === props.rows) {
331
392
  return;
332
393
  }
333
394
 
334
395
  logger.debug(`Updating all rows, new length ${props.rows.length}`);
335
- throttledRowsChange(convertGridRowsPropToState({
396
+ throttledRowsChange(convertRowsPropToState({
336
397
  rows: props.rows,
337
398
  getRowId: props.getRowId,
338
- prevState: rowsCache.current.state
399
+ prevCache: apiRef.current.unstable_caches.rows
339
400
  }), false);
340
- }, [props.rows, props.rowCount, props.getRowId, logger, throttledRowsChange]);
401
+ }, [props.rows, props.rowCount, props.getRowId, logger, throttledRowsChange, apiRef]);
341
402
  };
342
403
 
343
404
  exports.useGridRows = useGridRows;
@@ -25,9 +25,7 @@ var _gridPaginationSelector = require("../pagination/gridPaginationSelector");
25
25
 
26
26
  var _gridSortingSelector = require("../sorting/gridSortingSelector");
27
27
 
28
- var _gridEvents = require("../../../models/events/gridEvents");
29
-
30
- var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
28
+ var _pipeProcessing = require("../../core/pipeProcessing");
31
29
 
32
30
  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); }
33
31
 
@@ -92,10 +90,11 @@ const useGridRowsMeta = (apiRef, props) => {
92
90
  if (getRowSpacing) {
93
91
  var _spacing$top, _spacing$bottom;
94
92
 
95
- const index = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
93
+ const indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
96
94
  const spacing = getRowSpacing((0, _extends2.default)({}, row, {
97
- isFirstVisible: index === 0,
98
- isLastVisible: index === currentPage.rows.length - 1
95
+ isFirstVisible: indexRelativeToCurrentPage === 0,
96
+ isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
97
+ indexRelativeToCurrentPage
99
98
  }));
100
99
  initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
101
100
  initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
@@ -147,14 +146,7 @@ const useGridRowsMeta = (apiRef, props) => {
147
146
  React.useEffect(() => {
148
147
  hydrateRowsMeta();
149
148
  }, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
150
- const handlepipeProcessorRegister = React.useCallback(name => {
151
- if (name !== 'rowHeight') {
152
- return;
153
- }
154
-
155
- hydrateRowsMeta();
156
- }, [hydrateRowsMeta]);
157
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, _gridEvents.GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
149
+ (0, _pipeProcessing.useGridRegisterPipeApplier)(apiRef, 'rowHeight', hydrateRowsMeta);
158
150
  const rowsMetaApi = {
159
151
  unstable_getRowHeight: getTargetRowHeight,
160
152
  unstable_getRowInternalSizes: getRowInternalSizes,
@@ -10,6 +10,7 @@ var _strategyProcessing = require("../../core/strategyProcessing");
10
10
  const flatRowTreeCreationMethod = ({
11
11
  ids,
12
12
  idRowsLookup,
13
+ idToIdLookup,
13
14
  previousTree
14
15
  }) => {
15
16
  const tree = {};
@@ -35,6 +36,7 @@ const flatRowTreeCreationMethod = ({
35
36
  tree,
36
37
  treeDepth: 1,
37
38
  idRowsLookup,
39
+ idToIdLookup,
38
40
  ids
39
41
  };
40
42
  };
@@ -11,6 +11,8 @@ var _useGridLogger = require("../../utils/useGridLogger");
11
11
 
12
12
  var _gridColumnsSelector = require("../columns/gridColumnsSelector");
13
13
 
14
+ var _useGridSelector = require("../../utils/useGridSelector");
15
+
14
16
  var _gridPaginationSelector = require("../pagination/gridPaginationSelector");
15
17
 
16
18
  var _gridRowsSelector = require("../rows/gridRowsSelector");
@@ -19,6 +21,8 @@ var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
19
21
 
20
22
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
21
23
 
24
+ var _gridFilterSelector = require("../filter/gridFilterSelector");
25
+
22
26
  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); }
23
27
 
24
28
  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; }
@@ -32,7 +36,12 @@ function scrollIntoView(dimensions) {
32
36
  offsetHeight,
33
37
  offsetTop
34
38
  } = dimensions;
35
- const elementBottom = offsetTop + offsetHeight;
39
+ const elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
40
+ // See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
41
+
42
+ if (offsetHeight > clientHeight) {
43
+ return offsetTop;
44
+ }
36
45
 
37
46
  if (elementBottom - clientHeight > scrollTop) {
38
47
  return elementBottom - clientHeight;
@@ -49,6 +58,8 @@ function scrollIntoView(dimensions) {
49
58
  * @requires useGridColumns (state) - can be after, async only
50
59
  * @requires useGridRows (state) - can be after, async only
51
60
  * @requires useGridRowsMeta (state) - can be after, async only
61
+ * @requires useGridFilter (state)
62
+ * @requires useGridColumnSpanning (method)
52
63
  */
53
64
 
54
65
 
@@ -56,6 +67,7 @@ const useGridScroll = (apiRef, props) => {
56
67
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridScroll');
57
68
  const colRef = apiRef.current.columnHeadersElementRef;
58
69
  const windowRef = apiRef.current.windowRef;
70
+ const visibleSortedRows = (0, _useGridSelector.useGridSelector)(apiRef, _gridFilterSelector.gridVisibleSortedRowEntriesSelector);
59
71
  const scrollToIndexes = React.useCallback(params => {
60
72
  const totalRowCount = (0, _gridRowsSelector.gridRowCountSelector)(apiRef);
61
73
  const visibleColumns = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef);
@@ -70,10 +82,27 @@ const useGridScroll = (apiRef, props) => {
70
82
 
71
83
  if (params.colIndex != null) {
72
84
  const columnPositions = (0, _gridColumnsSelector.gridColumnPositionsSelector)(apiRef);
85
+ let cellWidth;
86
+
87
+ if (typeof params.rowIndex !== 'undefined') {
88
+ var _visibleSortedRows$pa;
89
+
90
+ const rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
91
+ const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
92
+
93
+ if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
94
+ cellWidth = cellColSpanInfo.cellProps.width;
95
+ }
96
+ }
97
+
98
+ if (typeof cellWidth === 'undefined') {
99
+ cellWidth = visibleColumns[params.colIndex].computedWidth;
100
+ }
101
+
73
102
  scrollCoordinates.left = scrollIntoView({
74
103
  clientHeight: windowRef.current.clientWidth,
75
104
  scrollTop: windowRef.current.scrollLeft,
76
- offsetHeight: visibleColumns[params.colIndex].computedWidth,
105
+ offsetHeight: cellWidth,
77
106
  offsetTop: columnPositions[params.colIndex]
78
107
  });
79
108
  }
@@ -100,7 +129,7 @@ const useGridScroll = (apiRef, props) => {
100
129
  }
101
130
 
102
131
  return false;
103
- }, [logger, apiRef, windowRef, props.pagination]);
132
+ }, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
104
133
  const scroll = React.useCallback(params => {
105
134
  if (windowRef.current && params.left != null && colRef.current) {
106
135
  colRef.current.scrollLeft = params.left;