@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
@@ -1,6 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import * as ReactDOM from 'react-dom';
3
4
  import { useForkRef } from '@mui/material/utils';
5
+ import { defaultMemoize } from 'reselect';
4
6
  import { useGridApiContext } from '../../utils/useGridApiContext';
5
7
  import { useGridSelector } from '../../utils/useGridSelector';
6
8
  import { gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from '../columns/gridColumnsSelector';
@@ -11,9 +13,16 @@ import { gridSortColumnLookupSelector } from '../sorting/gridSortingSelector';
11
13
  import { gridColumnMenuSelector } from '../columnMenu/columnMenuSelector';
12
14
  import { useGridRootProps } from '../../utils/useGridRootProps';
13
15
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
14
- import { GridEvents } from '../../../models/events';
15
16
  import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
17
+ import { getFirstColumnIndexToRender } from '../columns/gridColumnsUtils';
18
+ import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
19
+ import { getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
16
20
  import { jsx as _jsx } from "react/jsx-runtime";
21
+
22
+ function isUIEvent(event) {
23
+ return !!event.target;
24
+ }
25
+
17
26
  export const useGridColumnHeaders = props => {
18
27
  const {
19
28
  innerRef: innerRefProp,
@@ -37,18 +46,43 @@ export const useGridColumnHeaders = props => {
37
46
  const [renderContext, setRenderContext] = React.useState(null);
38
47
  const prevRenderContext = React.useRef(renderContext);
39
48
  const prevScrollLeft = React.useRef(0);
49
+ const currentPage = useGridVisibleRows(apiRef, rootProps);
40
50
  React.useEffect(() => {
41
51
  apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
42
- }, [apiRef]);
52
+ }, [apiRef]); // memoize `getFirstColumnIndexToRender`, since it's called on scroll
53
+
54
+ const getFirstColumnIndexToRenderRef = React.useRef(defaultMemoize(getFirstColumnIndexToRender, {
55
+ equalityCheck: (a, b) => ['firstColumnIndex', 'minColumnIndex', 'columnBuffer'].every(key => a[key] === b[key])
56
+ }));
43
57
  const updateInnerPosition = React.useCallback(nextRenderContext => {
44
- const firstColumnToRender = Math.max(nextRenderContext.firstColumnIndex - rootProps.columnBuffer, minColumnIndex);
58
+ const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
59
+ firstIndex: nextRenderContext.firstRowIndex,
60
+ lastIndex: nextRenderContext.lastRowIndex,
61
+ minFirstIndex: 0,
62
+ maxLastIndex: currentPage.rows.length,
63
+ buffer: rootProps.rowBuffer
64
+ });
65
+ const firstColumnToRender = getFirstColumnIndexToRenderRef.current({
66
+ firstColumnIndex: nextRenderContext.firstColumnIndex,
67
+ minColumnIndex,
68
+ columnBuffer: rootProps.columnBuffer,
69
+ firstRowToRender,
70
+ lastRowToRender,
71
+ apiRef,
72
+ visibleRows: currentPage.rows
73
+ });
45
74
  const offset = firstColumnToRender > 0 ? prevScrollLeft.current - columnPositions[firstColumnToRender] : prevScrollLeft.current;
46
75
  innerRef.current.style.transform = `translate3d(${-offset}px, 0px, 0px)`;
47
- }, [columnPositions, minColumnIndex, rootProps.columnBuffer]);
76
+ }, [columnPositions, minColumnIndex, rootProps.columnBuffer, apiRef, currentPage.rows, rootProps.rowBuffer]);
77
+ React.useLayoutEffect(() => {
78
+ if (renderContext) {
79
+ updateInnerPosition(renderContext);
80
+ }
81
+ }, [renderContext, updateInnerPosition]);
48
82
  const handleScroll = React.useCallback(({
49
83
  left,
50
84
  renderContext: nextRenderContext = null
51
- }) => {
85
+ }, event) => {
52
86
  if (!innerRef.current) {
53
87
  return;
54
88
  } // Ignore vertical scroll.
@@ -59,15 +93,32 @@ export const useGridColumnHeaders = props => {
59
93
  return;
60
94
  }
61
95
 
62
- prevScrollLeft.current = left;
96
+ prevScrollLeft.current = left; // We can only update the position when we guarantee that the render context has been
97
+ // rendered. This is achieved using ReactDOM.flushSync or when the context doesn't change.
98
+
99
+ let canUpdateInnerPosition = false;
63
100
 
64
101
  if (nextRenderContext !== prevRenderContext.current || !prevRenderContext.current) {
65
- setRenderContext(nextRenderContext);
102
+ // ReactDOM.flushSync cannot be called on `scroll` events fired inside effects
103
+ if (isUIEvent(event)) {
104
+ // To prevent flickering, the inner position can only be updated after the new context has
105
+ // been rendered. ReactDOM.flushSync ensures that the state changes will happen before
106
+ // updating the position.
107
+ ReactDOM.flushSync(() => {
108
+ setRenderContext(nextRenderContext);
109
+ });
110
+ canUpdateInnerPosition = true;
111
+ } else {
112
+ setRenderContext(nextRenderContext);
113
+ }
114
+
66
115
  prevRenderContext.current = nextRenderContext;
116
+ } else {
117
+ canUpdateInnerPosition = true;
67
118
  } // Pass directly the render context to avoid waiting for the next render
68
119
 
69
120
 
70
- if (nextRenderContext) {
121
+ if (nextRenderContext && canUpdateInnerPosition) {
71
122
  updateInnerPosition(nextRenderContext);
72
123
  }
73
124
  }, [updateInnerPosition]);
@@ -75,11 +126,11 @@ export const useGridColumnHeaders = props => {
75
126
  const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
76
127
  const handleColumnReorderStart = React.useCallback(params => setDragCol(params.field), []);
77
128
  const handleColumnReorderStop = React.useCallback(() => setDragCol(''), []);
78
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, handleColumnResizeStart);
79
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStop, handleColumnResizeStop);
80
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, handleColumnReorderStart);
81
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnd, handleColumnReorderStop);
82
- useGridApiEventHandler(apiRef, GridEvents.rowsScroll, handleScroll);
129
+ useGridApiEventHandler(apiRef, 'columnResizeStart', handleColumnResizeStart);
130
+ useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);
131
+ useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
132
+ useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
133
+ useGridApiEventHandler(apiRef, 'rowsScroll', handleScroll);
83
134
 
84
135
  const getColumns = (params, other = {}) => {
85
136
  const {
@@ -93,7 +144,22 @@ export const useGridColumnHeaders = props => {
93
144
  }
94
145
 
95
146
  const columns = [];
96
- const firstColumnToRender = Math.max(nextRenderContext.firstColumnIndex - rootProps.columnBuffer, minFirstColumn);
147
+ const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
148
+ firstIndex: nextRenderContext.firstRowIndex,
149
+ lastIndex: nextRenderContext.lastRowIndex,
150
+ minFirstIndex: 0,
151
+ maxLastIndex: currentPage.rows.length,
152
+ buffer: rootProps.rowBuffer
153
+ });
154
+ const firstColumnToRender = getFirstColumnIndexToRenderRef.current({
155
+ firstColumnIndex: nextRenderContext.firstColumnIndex,
156
+ minColumnIndex: minFirstColumn,
157
+ columnBuffer: rootProps.columnBuffer,
158
+ apiRef,
159
+ firstRowToRender,
160
+ lastRowToRender,
161
+ visibleRows: currentPage.rows
162
+ });
97
163
  const lastColumnToRender = Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
98
164
  const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
99
165
 
@@ -117,7 +183,7 @@ export const useGridColumnHeaders = props => {
117
183
  extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
118
184
  hasFocus: hasFocus,
119
185
  tabIndex: tabIndex
120
- }, other), i));
186
+ }, other), column.field));
121
187
  }
122
188
 
123
189
  return columns;
@@ -132,7 +198,6 @@ export const useGridColumnHeaders = props => {
132
198
  renderContext,
133
199
  getColumns,
134
200
  isDragging: !!dragCol,
135
- updateInnerPosition,
136
201
  getRootProps: (other = {}) => _extends({
137
202
  style: rootStyle
138
203
  }, other),
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { useGridLogger, useGridApiMethod, useGridApiEventHandler } from '../../utils';
5
4
  import { gridColumnMenuSelector } from './columnMenuSelector';
6
5
  export const columnMenuStateInitializer = state => _extends({}, state, {
@@ -78,6 +77,7 @@ export const useGridColumnMenu = apiRef => {
78
77
  * EVENTS
79
78
  */
80
79
 
81
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, hideColumnMenu);
82
- useGridApiEventHandler(apiRef, GridEvents.rowsScroll, hideColumnMenu);
80
+ useGridApiEventHandler(apiRef, 'columnResizeStart', hideColumnMenu);
81
+ useGridApiEventHandler(apiRef, 'virtualScrollerWheel', apiRef.current.hideColumnMenu);
82
+ useGridApiEventHandler(apiRef, 'virtualScrollerTouchMove', apiRef.current.hideColumnMenu);
83
83
  };
@@ -206,9 +206,15 @@ export const applyInitialState = (columnsState, initialState) => {
206
206
 
207
207
  for (let i = 0; i < columnsWithUpdatedDimensions.length; i += 1) {
208
208
  const field = columnsWithUpdatedDimensions[i];
209
- newColumnLookup[field] = _extends({}, newColumnLookup[field], dimensions[field], {
209
+
210
+ const newColDef = _extends({}, newColumnLookup[field], {
210
211
  hasBeenResized: true
211
212
  });
213
+
214
+ Object.entries(dimensions[field]).forEach(([key, value]) => {
215
+ newColDef[key] = value === -1 ? Infinity : value;
216
+ });
217
+ newColumnLookup[field] = newColDef;
212
218
  }
213
219
 
214
220
  const newColumnsState = {
@@ -294,16 +300,20 @@ export const createColumnsState = ({
294
300
  columnsStateWithoutColumnVisibilityModel.all.push(field);
295
301
  }
296
302
 
297
- let hasValidDimension = false;
298
-
299
- if (!existingState.hasBeenResized) {
300
- hasValidDimension = COLUMNS_DIMENSION_PROPERTIES.some(key => newColumn[key] !== undefined);
301
- }
303
+ let hasBeenResized = existingState.hasBeenResized;
304
+ COLUMNS_DIMENSION_PROPERTIES.forEach(key => {
305
+ if (newColumn[key] !== undefined) {
306
+ hasBeenResized = true;
302
307
 
308
+ if (newColumn[key] === -1) {
309
+ newColumn[key] = Infinity;
310
+ }
311
+ }
312
+ });
303
313
  columnsStateWithoutColumnVisibilityModel.lookup[field] = _extends({}, existingState, {
304
314
  hide: newColumn.hide == null ? false : newColumn.hide
305
315
  }, newColumn, {
306
- hasBeenResized: existingState.hasBeenResized || hasValidDimension
316
+ hasBeenResized
307
317
  });
308
318
  });
309
319
 
@@ -392,4 +402,47 @@ export const createColumnsState = ({
392
402
  };
393
403
  export const mergeColumnsState = columnsState => state => _extends({}, state, {
394
404
  columns: columnsState
395
- });
405
+ });
406
+ export function getFirstNonSpannedColumnToRender({
407
+ firstColumnToRender,
408
+ apiRef,
409
+ firstRowToRender,
410
+ lastRowToRender,
411
+ visibleRows
412
+ }) {
413
+ let firstNonSpannedColumnToRender = firstColumnToRender;
414
+
415
+ for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
416
+ const row = visibleRows[i];
417
+
418
+ if (row) {
419
+ const rowId = visibleRows[i].id;
420
+ const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, firstColumnToRender);
421
+
422
+ if (cellColSpanInfo && cellColSpanInfo.spannedByColSpan) {
423
+ firstNonSpannedColumnToRender = cellColSpanInfo.leftVisibleCellIndex;
424
+ }
425
+ }
426
+ }
427
+
428
+ return firstNonSpannedColumnToRender;
429
+ }
430
+ export function getFirstColumnIndexToRender({
431
+ firstColumnIndex,
432
+ minColumnIndex,
433
+ columnBuffer,
434
+ firstRowToRender,
435
+ lastRowToRender,
436
+ apiRef,
437
+ visibleRows
438
+ }) {
439
+ const initialFirstColumnToRender = Math.max(firstColumnIndex - columnBuffer, minColumnIndex);
440
+ const firstColumnToRender = getFirstNonSpannedColumnToRender({
441
+ firstColumnToRender: initialFirstColumnToRender,
442
+ apiRef,
443
+ firstRowToRender,
444
+ lastRowToRender,
445
+ visibleRows
446
+ });
447
+ return firstColumnToRender;
448
+ }
@@ -0,0 +1,106 @@
1
+ import React from 'react';
2
+ import { useGridApiMethod } from '../../utils/useGridApiMethod';
3
+ import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
4
+
5
+ /**
6
+ * @requires useGridColumns (method, event)
7
+ * @requires useGridParamsApi (method)
8
+ */
9
+ export const useGridColumnSpanning = apiRef => {
10
+ const lookup = React.useRef({});
11
+ const setCellColSpanInfo = React.useCallback((rowId, columnIndex, cellColSpanInfo) => {
12
+ const sizes = lookup.current;
13
+
14
+ if (!sizes[rowId]) {
15
+ sizes[rowId] = {};
16
+ }
17
+
18
+ sizes[rowId][columnIndex] = cellColSpanInfo;
19
+ }, []);
20
+ const getCellColSpanInfo = React.useCallback((rowId, columnIndex) => {
21
+ return lookup.current[rowId]?.[columnIndex];
22
+ }, []); // Calculate `colSpan` for the cell.
23
+
24
+ const calculateCellColSpan = React.useCallback(params => {
25
+ const {
26
+ columnIndex,
27
+ rowId,
28
+ minFirstColumnIndex,
29
+ maxLastColumnIndex
30
+ } = params;
31
+ const visibleColumns = apiRef.current.getVisibleColumns();
32
+ const columnsLength = visibleColumns.length;
33
+ const column = visibleColumns[columnIndex];
34
+ const colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
35
+
36
+ if (!colSpan || colSpan === 1) {
37
+ setCellColSpanInfo(rowId, columnIndex, {
38
+ spannedByColSpan: false,
39
+ cellProps: {
40
+ colSpan: 1,
41
+ width: column.computedWidth
42
+ }
43
+ });
44
+ return {
45
+ colSpan: 1
46
+ };
47
+ }
48
+
49
+ let width = column.computedWidth;
50
+
51
+ for (let j = 1; j < colSpan; j += 1) {
52
+ const nextColumnIndex = columnIndex + j; // Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
53
+
54
+ if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
55
+ const nextColumn = visibleColumns[nextColumnIndex];
56
+ width += nextColumn.computedWidth;
57
+ setCellColSpanInfo(rowId, columnIndex + j, {
58
+ spannedByColSpan: true,
59
+ rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
60
+ leftVisibleCellIndex: columnIndex
61
+ });
62
+ }
63
+
64
+ setCellColSpanInfo(rowId, columnIndex, {
65
+ spannedByColSpan: false,
66
+ cellProps: {
67
+ colSpan,
68
+ width
69
+ }
70
+ });
71
+ }
72
+
73
+ return {
74
+ colSpan
75
+ };
76
+ }, [apiRef, setCellColSpanInfo]); // Calculate `colSpan` for each cell in the row
77
+
78
+ const calculateColSpan = React.useCallback(({
79
+ rowId,
80
+ minFirstColumn,
81
+ maxLastColumn
82
+ }) => {
83
+ for (let i = minFirstColumn; i < maxLastColumn; i += 1) {
84
+ const cellProps = calculateCellColSpan({
85
+ columnIndex: i,
86
+ rowId,
87
+ minFirstColumnIndex: minFirstColumn,
88
+ maxLastColumnIndex: maxLastColumn
89
+ });
90
+
91
+ if (cellProps.colSpan > 1) {
92
+ i += cellProps.colSpan - 1;
93
+ }
94
+ }
95
+ }, [calculateCellColSpan]);
96
+ const columnSpanningApi = {
97
+ unstable_getCellColSpanInfo: getCellColSpanInfo,
98
+ unstable_calculateColSpan: calculateColSpan
99
+ };
100
+ useGridApiMethod(apiRef, columnSpanningApi, 'GridColumnSpanningAPI');
101
+ const handleColumnReorderChange = React.useCallback(() => {
102
+ // `colSpan` needs to be recalculated after column reordering
103
+ lookup.current = {};
104
+ }, []);
105
+ useGridApiEventHandler(apiRef, 'columnOrderChange', handleColumnReorderChange);
106
+ };
@@ -1,11 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
4
  import { useGridLogger } from '../../utils/useGridLogger';
6
5
  import { gridColumnFieldsSelector, gridColumnDefinitionsSelector, gridColumnLookupSelector, gridColumnsMetaSelector, gridColumnsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridColumnPositionsSelector } from './gridColumnsSelector';
7
6
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
8
- import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
7
+ import { useGridRegisterPipeProcessor, useGridRegisterPipeApplier } from '../../core/pipeProcessing';
9
8
  import { hydrateColumnsWidth, computeColumnTypes, createColumnsState, mergeColumnsState, COLUMNS_DIMENSION_PROPERTIES } from './gridColumnsUtils';
10
9
  import { GridPreferencePanelsValue } from '../preferencesPanel';
11
10
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -47,13 +46,13 @@ export function useGridColumns(apiRef, props) {
47
46
  propModel: props.columnVisibilityModel,
48
47
  propOnChange: props.onColumnVisibilityModelChange,
49
48
  stateSelector: gridColumnVisibilityModelSelector,
50
- changeEvent: GridEvents.columnVisibilityModelChange
49
+ changeEvent: 'columnVisibilityModelChange'
51
50
  });
52
51
  const setGridColumnsState = React.useCallback(columnsState => {
53
52
  logger.debug('Updating columns state.');
54
53
  apiRef.current.setState(mergeColumnsState(columnsState));
55
54
  apiRef.current.forceUpdate();
56
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
55
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
57
56
  }, [logger, apiRef]);
58
57
  /**
59
58
  * API METHODS
@@ -129,7 +128,7 @@ export function useGridColumns(apiRef, props) {
129
128
  colDef: newColumn,
130
129
  isVisible
131
130
  };
132
- apiRef.current.publishEvent(GridEvents.columnVisibilityChange, params);
131
+ apiRef.current.publishEvent('columnVisibilityChange', params);
133
132
  }
134
133
  }, [apiRef]);
135
134
  const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
@@ -153,7 +152,7 @@ export function useGridColumns(apiRef, props) {
153
152
  targetIndex: targetIndexPosition,
154
153
  oldIndex: oldIndexPosition
155
154
  };
156
- apiRef.current.publishEvent(GridEvents.columnOrderChange, params);
155
+ apiRef.current.publishEvent('columnOrderChange', params);
157
156
  }, [apiRef, logger, setGridColumnsState]);
158
157
  const setColumnWidth = React.useCallback((field, width) => {
159
158
  logger.debug(`Updating column ${field} width to ${width}`);
@@ -164,7 +163,7 @@ export function useGridColumns(apiRef, props) {
164
163
  });
165
164
 
166
165
  apiRef.current.updateColumns([newColumn]);
167
- apiRef.current.publishEvent(GridEvents.columnWidthChange, {
166
+ apiRef.current.publishEvent('columnWidthChange', {
168
167
  element: apiRef.current.getColumnHeaderElement(field),
169
168
  colDef: newColumn,
170
169
  width
@@ -208,7 +207,13 @@ export function useGridColumns(apiRef, props) {
208
207
  if (colDef.hasBeenResized) {
209
208
  const colDefDimensions = {};
210
209
  COLUMNS_DIMENSION_PROPERTIES.forEach(propertyName => {
211
- colDefDimensions[propertyName] = colDef[propertyName];
210
+ let propertyValue = colDef[propertyName];
211
+
212
+ if (propertyValue === Infinity) {
213
+ propertyValue = -1;
214
+ }
215
+
216
+ colDefDimensions[propertyName] = propertyValue;
212
217
  });
213
218
  dimensions[colDef.field] = colDefDimensions;
214
219
  }
@@ -242,7 +247,7 @@ export function useGridColumns(apiRef, props) {
242
247
  apiRef.current.setState(mergeColumnsState(columnsState));
243
248
 
244
249
  if (initialState != null) {
245
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
250
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
246
251
  }
247
252
 
248
253
  return params;
@@ -262,12 +267,23 @@ export function useGridColumns(apiRef, props) {
262
267
  * EVENTS
263
268
  */
264
269
 
265
- const handlepipeProcessorRegister = React.useCallback(name => {
266
- if (name !== 'hydrateColumns') {
267
- return;
270
+ const prevInnerWidth = React.useRef(null);
271
+
272
+ const handleGridSizeChange = viewportInnerSize => {
273
+ if (prevInnerWidth.current !== viewportInnerSize.width) {
274
+ prevInnerWidth.current = viewportInnerSize.width;
275
+ setGridColumnsState(hydrateColumnsWidth(gridColumnsSelector(apiRef.current.state), viewportInnerSize.width));
268
276
  }
277
+ };
278
+
279
+ useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleGridSizeChange);
280
+ useGridApiOptionHandler(apiRef, 'columnVisibilityChange', props.onColumnVisibilityChange);
281
+ /**
282
+ * APPLIERS
283
+ */
269
284
 
270
- logger.info(`Columns pre-processing have changed, regenerating the columns`);
285
+ const hydrateColumns = React.useCallback(() => {
286
+ logger.info(`Columns pipe processing have changed, regenerating the columns`);
271
287
  const columnsState = createColumnsState({
272
288
  apiRef,
273
289
  columnTypes,
@@ -278,18 +294,7 @@ export function useGridColumns(apiRef, props) {
278
294
  });
279
295
  setGridColumnsState(columnsState);
280
296
  }, [apiRef, logger, setGridColumnsState, columnTypes]);
281
- const prevInnerWidth = React.useRef(null);
282
-
283
- const handleGridSizeChange = viewportInnerSize => {
284
- if (prevInnerWidth.current !== viewportInnerSize.width) {
285
- prevInnerWidth.current = viewportInnerSize.width;
286
- setGridColumnsState(hydrateColumnsWidth(gridColumnsSelector(apiRef.current.state), viewportInnerSize.width));
287
- }
288
- };
289
-
290
- useGridApiEventHandler(apiRef, GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
291
- useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleGridSizeChange);
292
- useGridApiOptionHandler(apiRef, GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
297
+ useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);
293
298
  /**
294
299
  * EFFECTS
295
300
  */
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { debounce, ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/material/utils';
3
- import { GridEvents } from '../../../models/events';
4
3
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
5
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
5
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -99,12 +98,12 @@ export function useGridDimensions(apiRef, props) {
99
98
  fullDimensionsRef.current = newFullDimensions;
100
99
 
101
100
  if (newFullDimensions.viewportInnerSize.width !== prevDimensions?.viewportInnerSize.width || newFullDimensions.viewportInnerSize.height !== prevDimensions?.viewportInnerSize.height) {
102
- apiRef.current.publishEvent(GridEvents.viewportInnerSizeChange, newFullDimensions.viewportInnerSize);
101
+ apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
103
102
  }
104
103
  }, [apiRef, props.scrollbarSize, props.autoHeight, headerHeight, rowsMeta.currentPageTotalHeight]);
105
104
  const resize = React.useCallback(() => {
106
105
  updateGridDimensionsRef();
107
- apiRef.current.publishEvent(GridEvents.debouncedResize, rootDimensionsRef.current);
106
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
108
107
  }, [apiRef, updateGridDimensionsRef]);
109
108
  const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
110
109
  const getViewportPageSize = React.useCallback(() => {
@@ -144,12 +143,12 @@ export function useGridDimensions(apiRef, props) {
144
143
  const isJSDOM = /jsdom/.test(window.navigator.userAgent);
145
144
 
146
145
  if (size.height === 0 && !warningShown.current && !props.autoHeight && !isJSDOM) {
147
- logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/components/data-grid/layout/'].join('\n'));
146
+ logger.warn(['The parent of the grid has an empty height.', 'You need to make sure the container has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
148
147
  warningShown.current = true;
149
148
  }
150
149
 
151
150
  if (size.width === 0 && !warningShown.current && !isJSDOM) {
152
- logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/components/data-grid/layout/'].join('\n'));
151
+ logger.warn(['The parent of the grid has an empty width.', 'You need to make sure the container has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'You can find a solution in the docs:', 'https://mui.com/x/react-data-grid/layout/'].join('\n'));
153
152
  warningShown.current = true;
154
153
  }
155
154
 
@@ -170,10 +169,10 @@ export function useGridDimensions(apiRef, props) {
170
169
  debounceResize();
171
170
  }, [props.autoHeight, debounceResize, logger, resize]);
172
171
  useEnhancedEffect(() => updateGridDimensionsRef(), [updateGridDimensionsRef]);
173
- useGridApiOptionHandler(apiRef, GridEvents.visibleRowsSet, updateGridDimensionsRef);
174
- useGridApiOptionHandler(apiRef, GridEvents.pageChange, updateGridDimensionsRef);
175
- useGridApiOptionHandler(apiRef, GridEvents.pageSizeChange, updateGridDimensionsRef);
176
- useGridApiOptionHandler(apiRef, GridEvents.columnsChange, updateGridDimensionsRef);
177
- useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
178
- useGridApiOptionHandler(apiRef, GridEvents.debouncedResize, props.onResize);
172
+ useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateGridDimensionsRef);
173
+ useGridApiOptionHandler(apiRef, 'pageChange', updateGridDimensionsRef);
174
+ useGridApiOptionHandler(apiRef, 'pageSizeChange', updateGridDimensionsRef);
175
+ useGridApiOptionHandler(apiRef, 'columnsChange', updateGridDimensionsRef);
176
+ useGridApiEventHandler(apiRef, 'resize', handleResize);
177
+ useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
179
178
  }