@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
  var _prevRenderContext$cu, _prevRenderContext$cu2;
53
87
 
54
88
  if (!innerRef.current) {
@@ -61,15 +95,32 @@ export const useGridColumnHeaders = props => {
61
95
  return;
62
96
  }
63
97
 
64
- prevScrollLeft.current = left;
98
+ prevScrollLeft.current = left; // We can only update the position when we guarantee that the render context has been
99
+ // rendered. This is achieved using ReactDOM.flushSync or when the context doesn't change.
100
+
101
+ let canUpdateInnerPosition = false;
65
102
 
66
103
  if (nextRenderContext !== prevRenderContext.current || !prevRenderContext.current) {
67
- setRenderContext(nextRenderContext);
104
+ // ReactDOM.flushSync cannot be called on `scroll` events fired inside effects
105
+ if (isUIEvent(event)) {
106
+ // To prevent flickering, the inner position can only be updated after the new context has
107
+ // been rendered. ReactDOM.flushSync ensures that the state changes will happen before
108
+ // updating the position.
109
+ ReactDOM.flushSync(() => {
110
+ setRenderContext(nextRenderContext);
111
+ });
112
+ canUpdateInnerPosition = true;
113
+ } else {
114
+ setRenderContext(nextRenderContext);
115
+ }
116
+
68
117
  prevRenderContext.current = nextRenderContext;
118
+ } else {
119
+ canUpdateInnerPosition = true;
69
120
  } // Pass directly the render context to avoid waiting for the next render
70
121
 
71
122
 
72
- if (nextRenderContext) {
123
+ if (nextRenderContext && canUpdateInnerPosition) {
73
124
  updateInnerPosition(nextRenderContext);
74
125
  }
75
126
  }, [updateInnerPosition]);
@@ -77,11 +128,11 @@ export const useGridColumnHeaders = props => {
77
128
  const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
78
129
  const handleColumnReorderStart = React.useCallback(params => setDragCol(params.field), []);
79
130
  const handleColumnReorderStop = React.useCallback(() => setDragCol(''), []);
80
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStart, handleColumnResizeStart);
81
- useGridApiEventHandler(apiRef, GridEvents.columnResizeStop, handleColumnResizeStop);
82
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragStart, handleColumnReorderStart);
83
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderDragEnd, handleColumnReorderStop);
84
- useGridApiEventHandler(apiRef, GridEvents.rowsScroll, handleScroll);
131
+ useGridApiEventHandler(apiRef, 'columnResizeStart', handleColumnResizeStart);
132
+ useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);
133
+ useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
134
+ useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
135
+ useGridApiEventHandler(apiRef, 'rowsScroll', handleScroll);
85
136
 
86
137
  const getColumns = (params, other = {}) => {
87
138
  const {
@@ -95,7 +146,22 @@ export const useGridColumnHeaders = props => {
95
146
  }
96
147
 
97
148
  const columns = [];
98
- const firstColumnToRender = Math.max(nextRenderContext.firstColumnIndex - rootProps.columnBuffer, minFirstColumn);
149
+ const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
150
+ firstIndex: nextRenderContext.firstRowIndex,
151
+ lastIndex: nextRenderContext.lastRowIndex,
152
+ minFirstIndex: 0,
153
+ maxLastIndex: currentPage.rows.length,
154
+ buffer: rootProps.rowBuffer
155
+ });
156
+ const firstColumnToRender = getFirstColumnIndexToRenderRef.current({
157
+ firstColumnIndex: nextRenderContext.firstColumnIndex,
158
+ minColumnIndex: minFirstColumn,
159
+ columnBuffer: rootProps.columnBuffer,
160
+ apiRef,
161
+ firstRowToRender,
162
+ lastRowToRender,
163
+ visibleRows: currentPage.rows
164
+ });
99
165
  const lastColumnToRender = Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
100
166
  const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
101
167
 
@@ -119,7 +185,7 @@ export const useGridColumnHeaders = props => {
119
185
  extendRowFullWidth: !rootProps.disableExtendRowFullWidth,
120
186
  hasFocus: hasFocus,
121
187
  tabIndex: tabIndex
122
- }, other), i));
188
+ }, other), column.field));
123
189
  }
124
190
 
125
191
  return columns;
@@ -134,7 +200,6 @@ export const useGridColumnHeaders = props => {
134
200
  renderContext,
135
201
  getColumns,
136
202
  isDragging: !!dragCol,
137
- updateInnerPosition,
138
203
  getRootProps: (other = {}) => _extends({
139
204
  style: rootStyle
140
205
  }, 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
  };
@@ -15,7 +15,9 @@ export interface GridColumnsState {
15
15
  lookup: GridColumnLookup;
16
16
  columnVisibilityModel: GridColumnVisibilityModel;
17
17
  }
18
- export declare type GridColumnDimensions = Pick<GridStateColDef, GridColumnDimensionProperties>;
18
+ export declare type GridColumnDimensions = {
19
+ [key in GridColumnDimensionProperties]?: number;
20
+ };
19
21
  export interface GridColumnsInitialState {
20
22
  columnVisibilityModel?: GridColumnVisibilityModel;
21
23
  orderedFields?: string[];
@@ -4,6 +4,8 @@ import { GridColType, GridColumnTypesRecord } from '../../../models';
4
4
  import { GridStateCommunity } from '../../../models/gridStateCommunity';
5
5
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
6
6
  import { GridColDef } from '../../../models/colDef/gridColDef';
7
+ import { GridApiCommon } from '../../../models/api/gridApiCommon';
8
+ import { GridRowEntry } from '../../../models/gridRows';
7
9
  export declare const COLUMNS_DIMENSION_PROPERTIES: readonly ["maxWidth", "minWidth", "width", "flex"];
8
10
  export declare type GridColumnDimensionProperties = typeof COLUMNS_DIMENSION_PROPERTIES[number];
9
11
  export declare const computeColumnTypes: (customColumnTypes?: GridColumnTypesRecord) => GridColumnTypesRecord;
@@ -17,7 +19,7 @@ export declare function computeFlexColumnsWidth({ initialFreeSpace, totalFlexUni
17
19
  totalFlexUnits: number;
18
20
  flexColumns: {
19
21
  field: GridColDef['field'];
20
- flex?: number;
22
+ flex?: number | null;
21
23
  minWidth?: number;
22
24
  maxWidth?: number;
23
25
  }[];
@@ -52,3 +54,19 @@ export declare const createColumnsState: ({ apiRef, columnsToUpsert, initialStat
52
54
  apiRef: React.MutableRefObject<GridApiCommunity>;
53
55
  }) => GridColumnsState;
54
56
  export declare const mergeColumnsState: (columnsState: GridColumnsState) => (state: GridStateCommunity) => GridStateCommunity;
57
+ export declare function getFirstNonSpannedColumnToRender({ firstColumnToRender, apiRef, firstRowToRender, lastRowToRender, visibleRows, }: {
58
+ firstColumnToRender: number;
59
+ apiRef: React.MutableRefObject<GridApiCommon>;
60
+ firstRowToRender: number;
61
+ lastRowToRender: number;
62
+ visibleRows: GridRowEntry[];
63
+ }): number;
64
+ export declare function getFirstColumnIndexToRender({ firstColumnIndex, minColumnIndex, columnBuffer, firstRowToRender, lastRowToRender, apiRef, visibleRows, }: {
65
+ firstColumnIndex: number;
66
+ minColumnIndex: number;
67
+ columnBuffer: number;
68
+ apiRef: React.MutableRefObject<GridApiCommon>;
69
+ firstRowToRender: number;
70
+ lastRowToRender: number;
71
+ visibleRows: GridRowEntry[];
72
+ }): number;
@@ -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 = {
@@ -296,16 +302,20 @@ export const createColumnsState = ({
296
302
  columnsStateWithoutColumnVisibilityModel.all.push(field);
297
303
  }
298
304
 
299
- let hasValidDimension = false;
300
-
301
- if (!existingState.hasBeenResized) {
302
- hasValidDimension = COLUMNS_DIMENSION_PROPERTIES.some(key => newColumn[key] !== undefined);
303
- }
305
+ let hasBeenResized = existingState.hasBeenResized;
306
+ COLUMNS_DIMENSION_PROPERTIES.forEach(key => {
307
+ if (newColumn[key] !== undefined) {
308
+ hasBeenResized = true;
304
309
 
310
+ if (newColumn[key] === -1) {
311
+ newColumn[key] = Infinity;
312
+ }
313
+ }
314
+ });
305
315
  columnsStateWithoutColumnVisibilityModel.lookup[field] = _extends({}, existingState, {
306
316
  hide: newColumn.hide == null ? false : newColumn.hide
307
317
  }, newColumn, {
308
- hasBeenResized: existingState.hasBeenResized || hasValidDimension
318
+ hasBeenResized
309
319
  });
310
320
  });
311
321
 
@@ -394,4 +404,47 @@ export const createColumnsState = ({
394
404
  };
395
405
  export const mergeColumnsState = columnsState => state => _extends({}, state, {
396
406
  columns: columnsState
397
- });
407
+ });
408
+ export function getFirstNonSpannedColumnToRender({
409
+ firstColumnToRender,
410
+ apiRef,
411
+ firstRowToRender,
412
+ lastRowToRender,
413
+ visibleRows
414
+ }) {
415
+ let firstNonSpannedColumnToRender = firstColumnToRender;
416
+
417
+ for (let i = firstRowToRender; i < lastRowToRender; i += 1) {
418
+ const row = visibleRows[i];
419
+
420
+ if (row) {
421
+ const rowId = visibleRows[i].id;
422
+ const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, firstColumnToRender);
423
+
424
+ if (cellColSpanInfo && cellColSpanInfo.spannedByColSpan) {
425
+ firstNonSpannedColumnToRender = cellColSpanInfo.leftVisibleCellIndex;
426
+ }
427
+ }
428
+ }
429
+
430
+ return firstNonSpannedColumnToRender;
431
+ }
432
+ export function getFirstColumnIndexToRender({
433
+ firstColumnIndex,
434
+ minColumnIndex,
435
+ columnBuffer,
436
+ firstRowToRender,
437
+ lastRowToRender,
438
+ apiRef,
439
+ visibleRows
440
+ }) {
441
+ const initialFirstColumnToRender = Math.max(firstColumnIndex - columnBuffer, minColumnIndex);
442
+ const firstColumnToRender = getFirstNonSpannedColumnToRender({
443
+ firstColumnToRender: initialFirstColumnToRender,
444
+ apiRef,
445
+ firstRowToRender,
446
+ lastRowToRender,
447
+ visibleRows
448
+ });
449
+ return firstColumnToRender;
450
+ }
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
+ /**
4
+ * @requires useGridColumns (method, event)
5
+ * @requires useGridParamsApi (method)
6
+ */
7
+ export declare const useGridColumnSpanning: (apiRef: React.MutableRefObject<GridApiCommunity>) => void;
@@ -0,0 +1,108 @@
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
+ var _lookup$current$rowId;
22
+
23
+ return (_lookup$current$rowId = lookup.current[rowId]) == null ? void 0 : _lookup$current$rowId[columnIndex];
24
+ }, []); // Calculate `colSpan` for the cell.
25
+
26
+ const calculateCellColSpan = React.useCallback(params => {
27
+ const {
28
+ columnIndex,
29
+ rowId,
30
+ minFirstColumnIndex,
31
+ maxLastColumnIndex
32
+ } = params;
33
+ const visibleColumns = apiRef.current.getVisibleColumns();
34
+ const columnsLength = visibleColumns.length;
35
+ const column = visibleColumns[columnIndex];
36
+ const colSpan = typeof column.colSpan === 'function' ? column.colSpan(apiRef.current.getCellParams(rowId, column.field)) : column.colSpan;
37
+
38
+ if (!colSpan || colSpan === 1) {
39
+ setCellColSpanInfo(rowId, columnIndex, {
40
+ spannedByColSpan: false,
41
+ cellProps: {
42
+ colSpan: 1,
43
+ width: column.computedWidth
44
+ }
45
+ });
46
+ return {
47
+ colSpan: 1
48
+ };
49
+ }
50
+
51
+ let width = column.computedWidth;
52
+
53
+ for (let j = 1; j < colSpan; j += 1) {
54
+ const nextColumnIndex = columnIndex + j; // Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
55
+
56
+ if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
57
+ const nextColumn = visibleColumns[nextColumnIndex];
58
+ width += nextColumn.computedWidth;
59
+ setCellColSpanInfo(rowId, columnIndex + j, {
60
+ spannedByColSpan: true,
61
+ rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
62
+ leftVisibleCellIndex: columnIndex
63
+ });
64
+ }
65
+
66
+ setCellColSpanInfo(rowId, columnIndex, {
67
+ spannedByColSpan: false,
68
+ cellProps: {
69
+ colSpan,
70
+ width
71
+ }
72
+ });
73
+ }
74
+
75
+ return {
76
+ colSpan
77
+ };
78
+ }, [apiRef, setCellColSpanInfo]); // Calculate `colSpan` for each cell in the row
79
+
80
+ const calculateColSpan = React.useCallback(({
81
+ rowId,
82
+ minFirstColumn,
83
+ maxLastColumn
84
+ }) => {
85
+ for (let i = minFirstColumn; i < maxLastColumn; i += 1) {
86
+ const cellProps = calculateCellColSpan({
87
+ columnIndex: i,
88
+ rowId,
89
+ minFirstColumnIndex: minFirstColumn,
90
+ maxLastColumnIndex: maxLastColumn
91
+ });
92
+
93
+ if (cellProps.colSpan > 1) {
94
+ i += cellProps.colSpan - 1;
95
+ }
96
+ }
97
+ }, [calculateCellColSpan]);
98
+ const columnSpanningApi = {
99
+ unstable_getCellColSpanInfo: getCellColSpanInfo,
100
+ unstable_calculateColSpan: calculateColSpan
101
+ };
102
+ useGridApiMethod(apiRef, columnSpanningApi, 'GridColumnSpanningAPI');
103
+ const handleColumnReorderChange = React.useCallback(() => {
104
+ // `colSpan` needs to be recalculated after column reordering
105
+ lookup.current = {};
106
+ }, []);
107
+ useGridApiEventHandler(apiRef, 'columnOrderChange', handleColumnReorderChange);
108
+ };
@@ -8,4 +8,4 @@ export declare const columnsStateInitializer: GridStateInitializer<Pick<DataGrid
8
8
  * @requires useGridDimensions (method, event) - can be after
9
9
  * TODO: Impossible priority - useGridParamsApi also needs to be after useGridColumns
10
10
  */
11
- export declare function useGridColumns(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'onColumnVisibilityChange' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'columnTypes' | 'checkboxSelection' | 'classes' | 'components' | 'componentsProps'>): void;
11
+ export declare function useGridColumns(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'initialState' | 'columns' | 'onColumnVisibilityChange' | 'columnVisibilityModel' | 'onColumnVisibilityModelChange' | 'columnTypes' | 'classes' | 'components' | 'componentsProps'>): void;
@@ -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";
@@ -51,13 +50,13 @@ export function useGridColumns(apiRef, props) {
51
50
  propModel: props.columnVisibilityModel,
52
51
  propOnChange: props.onColumnVisibilityModelChange,
53
52
  stateSelector: gridColumnVisibilityModelSelector,
54
- changeEvent: GridEvents.columnVisibilityModelChange
53
+ changeEvent: 'columnVisibilityModelChange'
55
54
  });
56
55
  const setGridColumnsState = React.useCallback(columnsState => {
57
56
  logger.debug('Updating columns state.');
58
57
  apiRef.current.setState(mergeColumnsState(columnsState));
59
58
  apiRef.current.forceUpdate();
60
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
59
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
61
60
  }, [logger, apiRef]);
62
61
  /**
63
62
  * API METHODS
@@ -135,7 +134,7 @@ export function useGridColumns(apiRef, props) {
135
134
  colDef: newColumn,
136
135
  isVisible
137
136
  };
138
- apiRef.current.publishEvent(GridEvents.columnVisibilityChange, params);
137
+ apiRef.current.publishEvent('columnVisibilityChange', params);
139
138
  }
140
139
  }, [apiRef]);
141
140
  const setColumnIndex = React.useCallback((field, targetIndexPosition) => {
@@ -159,7 +158,7 @@ export function useGridColumns(apiRef, props) {
159
158
  targetIndex: targetIndexPosition,
160
159
  oldIndex: oldIndexPosition
161
160
  };
162
- apiRef.current.publishEvent(GridEvents.columnOrderChange, params);
161
+ apiRef.current.publishEvent('columnOrderChange', params);
163
162
  }, [apiRef, logger, setGridColumnsState]);
164
163
  const setColumnWidth = React.useCallback((field, width) => {
165
164
  logger.debug(`Updating column ${field} width to ${width}`);
@@ -170,7 +169,7 @@ export function useGridColumns(apiRef, props) {
170
169
  });
171
170
 
172
171
  apiRef.current.updateColumns([newColumn]);
173
- apiRef.current.publishEvent(GridEvents.columnWidthChange, {
172
+ apiRef.current.publishEvent('columnWidthChange', {
174
173
  element: apiRef.current.getColumnHeaderElement(field),
175
174
  colDef: newColumn,
176
175
  width
@@ -214,7 +213,13 @@ export function useGridColumns(apiRef, props) {
214
213
  if (colDef.hasBeenResized) {
215
214
  const colDefDimensions = {};
216
215
  COLUMNS_DIMENSION_PROPERTIES.forEach(propertyName => {
217
- colDefDimensions[propertyName] = colDef[propertyName];
216
+ let propertyValue = colDef[propertyName];
217
+
218
+ if (propertyValue === Infinity) {
219
+ propertyValue = -1;
220
+ }
221
+
222
+ colDefDimensions[propertyName] = propertyValue;
218
223
  });
219
224
  dimensions[colDef.field] = colDefDimensions;
220
225
  }
@@ -250,7 +255,7 @@ export function useGridColumns(apiRef, props) {
250
255
  apiRef.current.setState(mergeColumnsState(columnsState));
251
256
 
252
257
  if (initialState != null) {
253
- apiRef.current.publishEvent(GridEvents.columnsChange, columnsState.all);
258
+ apiRef.current.publishEvent('columnsChange', columnsState.all);
254
259
  }
255
260
 
256
261
  return params;
@@ -272,12 +277,23 @@ export function useGridColumns(apiRef, props) {
272
277
  * EVENTS
273
278
  */
274
279
 
275
- const handlepipeProcessorRegister = React.useCallback(name => {
276
- if (name !== 'hydrateColumns') {
277
- return;
280
+ const prevInnerWidth = React.useRef(null);
281
+
282
+ const handleGridSizeChange = viewportInnerSize => {
283
+ if (prevInnerWidth.current !== viewportInnerSize.width) {
284
+ prevInnerWidth.current = viewportInnerSize.width;
285
+ setGridColumnsState(hydrateColumnsWidth(gridColumnsSelector(apiRef.current.state), viewportInnerSize.width));
278
286
  }
287
+ };
288
+
289
+ useGridApiEventHandler(apiRef, 'viewportInnerSizeChange', handleGridSizeChange);
290
+ useGridApiOptionHandler(apiRef, 'columnVisibilityChange', props.onColumnVisibilityChange);
291
+ /**
292
+ * APPLIERS
293
+ */
279
294
 
280
- logger.info(`Columns pre-processing have changed, regenerating the columns`);
295
+ const hydrateColumns = React.useCallback(() => {
296
+ logger.info(`Columns pipe processing have changed, regenerating the columns`);
281
297
  const columnsState = createColumnsState({
282
298
  apiRef,
283
299
  columnTypes,
@@ -288,18 +304,7 @@ export function useGridColumns(apiRef, props) {
288
304
  });
289
305
  setGridColumnsState(columnsState);
290
306
  }, [apiRef, logger, setGridColumnsState, columnTypes]);
291
- const prevInnerWidth = React.useRef(null);
292
-
293
- const handleGridSizeChange = viewportInnerSize => {
294
- if (prevInnerWidth.current !== viewportInnerSize.width) {
295
- prevInnerWidth.current = viewportInnerSize.width;
296
- setGridColumnsState(hydrateColumnsWidth(gridColumnsSelector(apiRef.current.state), viewportInnerSize.width));
297
- }
298
- };
299
-
300
- useGridApiEventHandler(apiRef, GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
301
- useGridApiEventHandler(apiRef, GridEvents.viewportInnerSizeChange, handleGridSizeChange);
302
- useGridApiOptionHandler(apiRef, GridEvents.columnVisibilityChange, props.onColumnVisibilityChange);
307
+ useGridRegisterPipeApplier(apiRef, 'hydrateColumns', hydrateColumns);
303
308
  /**
304
309
  * EFFECTS
305
310
  */
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
- export declare function useGridDimensions(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'rows' | 'onResize' | 'scrollbarSize' | 'pagination' | 'paginationMode' | 'autoHeight' | 'getRowHeight'>): void;
4
+ export declare function useGridDimensions(apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'onResize' | 'scrollbarSize' | 'pagination' | 'paginationMode' | 'autoHeight' | 'getRowHeight'>): void;
@@ -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';
@@ -101,12 +100,12 @@ export function useGridDimensions(apiRef, props) {
101
100
  fullDimensionsRef.current = newFullDimensions;
102
101
 
103
102
  if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
104
- apiRef.current.publishEvent(GridEvents.viewportInnerSizeChange, newFullDimensions.viewportInnerSize);
103
+ apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
105
104
  }
106
105
  }, [apiRef, props.scrollbarSize, props.autoHeight, headerHeight, rowsMeta.currentPageTotalHeight]);
107
106
  const resize = React.useCallback(() => {
108
107
  updateGridDimensionsRef();
109
- apiRef.current.publishEvent(GridEvents.debouncedResize, rootDimensionsRef.current);
108
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
110
109
  }, [apiRef, updateGridDimensionsRef]);
111
110
  const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
112
111
  const getViewportPageSize = React.useCallback(() => {
@@ -146,12 +145,12 @@ export function useGridDimensions(apiRef, props) {
146
145
  const isJSDOM = /jsdom/.test(window.navigator.userAgent);
147
146
 
148
147
  if (size.height === 0 && !warningShown.current && !props.autoHeight && !isJSDOM) {
149
- 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'));
148
+ 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'));
150
149
  warningShown.current = true;
151
150
  }
152
151
 
153
152
  if (size.width === 0 && !warningShown.current && !isJSDOM) {
154
- 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'));
153
+ 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'));
155
154
  warningShown.current = true;
156
155
  }
157
156
 
@@ -172,10 +171,10 @@ export function useGridDimensions(apiRef, props) {
172
171
  debounceResize();
173
172
  }, [props.autoHeight, debounceResize, logger, resize]);
174
173
  useEnhancedEffect(() => updateGridDimensionsRef(), [updateGridDimensionsRef]);
175
- useGridApiOptionHandler(apiRef, GridEvents.visibleRowsSet, updateGridDimensionsRef);
176
- useGridApiOptionHandler(apiRef, GridEvents.pageChange, updateGridDimensionsRef);
177
- useGridApiOptionHandler(apiRef, GridEvents.pageSizeChange, updateGridDimensionsRef);
178
- useGridApiOptionHandler(apiRef, GridEvents.columnsChange, updateGridDimensionsRef);
179
- useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
180
- useGridApiOptionHandler(apiRef, GridEvents.debouncedResize, props.onResize);
174
+ useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateGridDimensionsRef);
175
+ useGridApiOptionHandler(apiRef, 'pageChange', updateGridDimensionsRef);
176
+ useGridApiOptionHandler(apiRef, 'pageSizeChange', updateGridDimensionsRef);
177
+ useGridApiOptionHandler(apiRef, 'columnsChange', updateGridDimensionsRef);
178
+ useGridApiEventHandler(apiRef, 'resize', handleResize);
179
+ useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
181
180
  }
@@ -1,4 +1,4 @@
1
1
  import * as React from 'react';
2
2
  import { GridApiCommunity } from '../../../models/api/gridApiCommunity';
3
3
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
4
- export declare const useGridCellEditing: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editMode' | 'processRowUpdate' | 'onCellEditStart' | 'onCellEditStop' | 'onProcessRowUpdateError'>) => void;
4
+ export declare const useGridCellEditing: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'editMode' | 'processRowUpdate' | 'onCellEditStart' | 'onCellEditStop' | 'cellModesModel' | 'onCellModesModelChange' | 'onProcessRowUpdateError' | 'signature'>) => void;