@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
@@ -7,8 +7,7 @@ import { gridDensityRowHeightSelector, gridDensityFactorSelector } from '../dens
7
7
  import { gridFilterStateSelector } from '../filter/gridFilterSelector';
8
8
  import { gridPaginationSelector } from '../pagination/gridPaginationSelector';
9
9
  import { gridSortingStateSelector } from '../sorting/gridSortingSelector';
10
- import { GridEvents } from '../../../models/events/gridEvents';
11
- import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
10
+ import { useGridRegisterPipeApplier } from '../../core/pipeProcessing';
12
11
  export var rowsMetaStateInitializer = function rowsMetaStateInitializer(state) {
13
12
  return _extends({}, state, {
14
13
  rowsMeta: {
@@ -65,10 +64,11 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
65
64
  if (getRowSpacing) {
66
65
  var _spacing$top, _spacing$bottom;
67
66
 
68
- var index = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
67
+ var indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
69
68
  var spacing = getRowSpacing(_extends({}, row, {
70
- isFirstVisible: index === 0,
71
- isLastVisible: index === currentPage.rows.length - 1
69
+ isFirstVisible: indexRelativeToCurrentPage === 0,
70
+ isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
71
+ indexRelativeToCurrentPage: indexRelativeToCurrentPage
72
72
  }));
73
73
  initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
74
74
  initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
@@ -122,14 +122,7 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
122
122
  React.useEffect(function () {
123
123
  hydrateRowsMeta();
124
124
  }, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
125
- var handlepipeProcessorRegister = React.useCallback(function (name) {
126
- if (name !== 'rowHeight') {
127
- return;
128
- }
129
-
130
- hydrateRowsMeta();
131
- }, [hydrateRowsMeta]);
132
- useGridApiEventHandler(apiRef, GridEvents.pipeProcessorRegister, handlepipeProcessorRegister);
125
+ useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
133
126
  var rowsMetaApi = {
134
127
  unstable_getRowHeight: getTargetRowHeight,
135
128
  unstable_getRowInternalSizes: getRowInternalSizes,
@@ -3,6 +3,7 @@ import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../c
3
3
  var flatRowTreeCreationMethod = function flatRowTreeCreationMethod(_ref) {
4
4
  var ids = _ref.ids,
5
5
  idRowsLookup = _ref.idRowsLookup,
6
+ idToIdLookup = _ref.idToIdLookup,
6
7
  previousTree = _ref.previousTree;
7
8
  var tree = {};
8
9
 
@@ -27,6 +28,7 @@ var flatRowTreeCreationMethod = function flatRowTreeCreationMethod(_ref) {
27
28
  tree: tree,
28
29
  treeDepth: 1,
29
30
  idRowsLookup: idRowsLookup,
31
+ idToIdLookup: idToIdLookup,
30
32
  ids: ids
31
33
  };
32
34
  };
@@ -2,10 +2,12 @@ import _typeof from "@babel/runtime/helpers/esm/typeof";
2
2
  import * as React from 'react';
3
3
  import { useGridLogger } from '../../utils/useGridLogger';
4
4
  import { gridColumnPositionsSelector, gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
5
+ import { useGridSelector } from '../../utils/useGridSelector';
5
6
  import { gridPageSelector, gridPageSizeSelector } from '../pagination/gridPaginationSelector';
6
7
  import { gridRowCountSelector } from '../rows/gridRowsSelector';
7
8
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
8
- import { useGridApiMethod } from '../../utils/useGridApiMethod'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
9
+ import { useGridApiMethod } from '../../utils/useGridApiMethod';
10
+ import { gridVisibleSortedRowEntriesSelector } from '../filter/gridFilterSelector'; // Logic copied from https://www.w3.org/TR/wai-aria-practices/examples/listbox/js/listbox.js
9
11
  // Similar to https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
10
12
 
11
13
  function scrollIntoView(dimensions) {
@@ -13,7 +15,12 @@ function scrollIntoView(dimensions) {
13
15
  scrollTop = dimensions.scrollTop,
14
16
  offsetHeight = dimensions.offsetHeight,
15
17
  offsetTop = dimensions.offsetTop;
16
- var elementBottom = offsetTop + offsetHeight;
18
+ var elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
19
+ // See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
20
+
21
+ if (offsetHeight > clientHeight) {
22
+ return offsetTop;
23
+ }
17
24
 
18
25
  if (elementBottom - clientHeight > scrollTop) {
19
26
  return elementBottom - clientHeight;
@@ -30,6 +37,8 @@ function scrollIntoView(dimensions) {
30
37
  * @requires useGridColumns (state) - can be after, async only
31
38
  * @requires useGridRows (state) - can be after, async only
32
39
  * @requires useGridRowsMeta (state) - can be after, async only
40
+ * @requires useGridFilter (state)
41
+ * @requires useGridColumnSpanning (method)
33
42
  */
34
43
 
35
44
 
@@ -37,6 +46,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
37
46
  var logger = useGridLogger(apiRef, 'useGridScroll');
38
47
  var colRef = apiRef.current.columnHeadersElementRef;
39
48
  var windowRef = apiRef.current.windowRef;
49
+ var visibleSortedRows = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
40
50
  var scrollToIndexes = React.useCallback(function (params) {
41
51
  var totalRowCount = gridRowCountSelector(apiRef);
42
52
  var visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
@@ -51,10 +61,27 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
51
61
 
52
62
  if (params.colIndex != null) {
53
63
  var columnPositions = gridColumnPositionsSelector(apiRef);
64
+ var cellWidth;
65
+
66
+ if (typeof params.rowIndex !== 'undefined') {
67
+ var _visibleSortedRows$pa;
68
+
69
+ var rowId = (_visibleSortedRows$pa = visibleSortedRows[params.rowIndex]) == null ? void 0 : _visibleSortedRows$pa.id;
70
+ var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, params.colIndex);
71
+
72
+ if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
73
+ cellWidth = cellColSpanInfo.cellProps.width;
74
+ }
75
+ }
76
+
77
+ if (typeof cellWidth === 'undefined') {
78
+ cellWidth = visibleColumns[params.colIndex].computedWidth;
79
+ }
80
+
54
81
  scrollCoordinates.left = scrollIntoView({
55
82
  clientHeight: windowRef.current.clientWidth,
56
83
  scrollTop: windowRef.current.scrollLeft,
57
- offsetHeight: visibleColumns[params.colIndex].computedWidth,
84
+ offsetHeight: cellWidth,
58
85
  offsetTop: columnPositions[params.colIndex]
59
86
  });
60
87
  }
@@ -81,7 +108,7 @@ export var useGridScroll = function useGridScroll(apiRef, props) {
81
108
  }
82
109
 
83
110
  return false;
84
- }, [logger, apiRef, windowRef, props.pagination]);
111
+ }, [logger, apiRef, windowRef, props.pagination, visibleSortedRows]);
85
112
  var scroll = React.useCallback(function (params) {
86
113
  if (windowRef.current && params.left != null && colRef.current) {
87
114
  colRef.current.scrollLeft = params.left;
@@ -1,7 +1,6 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import * as React from 'react';
4
- import { GridEvents } from '../../../models/events';
5
4
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
6
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
7
6
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -14,6 +13,7 @@ import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_ACTIONS_COLUMN_TYPE } from '../..
14
13
  import { GridCellModes } from '../../../models/gridEditRowModel';
15
14
  import { isKeyboardEvent, isNavigationKey } from '../../../utils/keyboardUtils';
16
15
  import { getVisibleRows, useGridVisibleRows } from '../../utils/useGridVisibleRows';
16
+ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../../../constants/gridDetailPanelToggleField';
17
17
 
18
18
  var getSelectionModelPropValue = function getSelectionModelPropValue(selectionModelProp, prevSelectionModel) {
19
19
  if (selectionModelProp == null) {
@@ -56,7 +56,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
56
56
  propModel: propSelectionModel,
57
57
  propOnChange: props.onSelectionModelChange,
58
58
  stateSelector: gridSelectionStateSelector,
59
- changeEvent: GridEvents.selectionChange
59
+ changeEvent: 'selectionChange'
60
60
  });
61
61
  var checkboxSelection = props.checkboxSelection,
62
62
  disableMultipleSelection = props.disableMultipleSelection,
@@ -222,6 +222,10 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
222
222
  */
223
223
 
224
224
  var removeOutdatedSelection = React.useCallback(function () {
225
+ if (props.keepNonExistentRowsSelected) {
226
+ return;
227
+ }
228
+
225
229
  var currentSelection = gridSelectionStateSelector(apiRef.current.state);
226
230
  var rowsLookup = gridRowsLookupSelector(apiRef); // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project
227
231
 
@@ -238,12 +242,12 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
238
242
  if (hasChanged) {
239
243
  apiRef.current.setSelectionModel(Object.values(selectionLookup));
240
244
  }
241
- }, [apiRef]);
245
+ }, [apiRef, props.keepNonExistentRowsSelected]);
242
246
  var handleSingleRowSelection = React.useCallback(function (id, event) {
243
247
  var hasCtrlKey = event.metaKey || event.ctrlKey; // multiple selection is only allowed if:
244
248
  // - it is a checkboxSelection
245
249
  // - it is a keyboard selection
246
- // - CTRL is pressed
250
+ // - Ctrl is pressed
247
251
 
248
252
  var isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);
249
253
  var resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
@@ -265,7 +269,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
265
269
  return;
266
270
  }
267
271
 
268
- if (params.field === '__detail_panel_toggle__') {
272
+ if (params.field === GRID_DETAIL_PANEL_TOGGLE_FIELD) {
269
273
  // click to open the detail panel should not select the row
270
274
  return;
271
275
  }
@@ -375,12 +379,12 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
375
379
  selectRows(apiRef.current.getAllRowIds(), true);
376
380
  }
377
381
  }, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
378
- useGridApiEventHandler(apiRef, GridEvents.visibleRowsSet, removeOutdatedSelection);
379
- useGridApiEventHandler(apiRef, GridEvents.cellClick, handleCellClick);
380
- useGridApiEventHandler(apiRef, GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
381
- useGridApiEventHandler(apiRef, GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
382
- useGridApiEventHandler(apiRef, GridEvents.cellMouseDown, preventSelectionOnShift);
383
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
382
+ useGridApiEventHandler(apiRef, 'sortedRowsSet', removeOutdatedSelection);
383
+ useGridApiEventHandler(apiRef, 'cellClick', handleCellClick);
384
+ useGridApiEventHandler(apiRef, 'rowSelectionCheckboxChange', handleRowSelectionCheckboxChange);
385
+ useGridApiEventHandler(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
386
+ useGridApiEventHandler(apiRef, 'cellMouseDown', preventSelectionOnShift);
387
+ useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
384
388
  /**
385
389
  * EFFECTS
386
390
  */
@@ -1,7 +1,6 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import * as React from 'react';
4
- import { GridEvents } from '../../../models/events';
5
4
  import { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
6
5
  import { isEnterKey } from '../../../utils/keyboardUtils';
7
6
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
@@ -37,7 +36,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
37
36
  propModel: props.sortModel,
38
37
  propOnChange: props.onSortModelChange,
39
38
  stateSelector: gridSortModelSelector,
40
- changeEvent: GridEvents.sortModelChange
39
+ changeEvent: 'sortModelChange'
41
40
  });
42
41
  var upsertSortModel = React.useCallback(function (field, sortItem) {
43
42
  var sortModel = gridSortModelSelector(apiRef);
@@ -86,19 +85,16 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
86
85
  */
87
86
 
88
87
  var applySorting = React.useCallback(function () {
89
- if (props.sortingMode === GridFeatureModeConstant.server) {
90
- logger.debug('Skipping sorting rows as sortingMode = server');
91
- apiRef.current.setState(function (state) {
88
+ apiRef.current.setState(function (state) {
89
+ if (props.sortingMode === GridFeatureModeConstant.server) {
90
+ logger.debug('Skipping sorting rows as sortingMode = server');
92
91
  return _extends({}, state, {
93
92
  sorting: _extends({}, state.sorting, {
94
93
  sortedRows: gridRowIdsSelector(state, apiRef.current.instanceId)
95
94
  })
96
95
  });
97
- });
98
- return;
99
- }
96
+ }
100
97
 
101
- apiRef.current.setState(function (state) {
102
98
  var sortModel = gridSortModelSelector(state, apiRef.current.instanceId);
103
99
  var sortRowList = buildAggregatedSortingApplier(sortModel, apiRef);
104
100
  var sortedRows = apiRef.current.unstable_applyStrategyProcessor('sorting', {
@@ -110,6 +106,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
110
106
  })
111
107
  });
112
108
  });
109
+ apiRef.current.publishEvent('sortedRowsSet');
113
110
  apiRef.current.forceUpdate();
114
111
  }, [apiRef, logger, props.sortingMode]);
115
112
  var setSortModel = React.useCallback(function (model) {
@@ -221,7 +218,7 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
221
218
  var handleColumnHeaderKeyDown = React.useCallback(function (_ref3, event) {
222
219
  var colDef = _ref3.colDef;
223
220
 
224
- // CTRL + Enter opens the column menu
221
+ // Ctrl + Enter opens the column menu
225
222
  if (isEnterKey(event.key) && !event.ctrlKey && !event.metaKey) {
226
223
  sortColumn(colDef, undefined, event.shiftKey);
227
224
  }
@@ -246,11 +243,11 @@ export var useGridSorting = function useGridSorting(apiRef, props) {
246
243
  apiRef.current.applySorting();
247
244
  }
248
245
  }, [apiRef]);
249
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderClick, handleColumnHeaderClick);
250
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
251
- useGridApiEventHandler(apiRef, GridEvents.rowsSet, apiRef.current.applySorting);
252
- useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
253
- useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
246
+ useGridApiEventHandler(apiRef, 'columnHeaderClick', handleColumnHeaderClick);
247
+ useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
248
+ useGridApiEventHandler(apiRef, 'rowsSet', apiRef.current.applySorting);
249
+ useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
250
+ useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
254
251
  /**
255
252
  * 1ST RENDER
256
253
  */
@@ -3,6 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  var _excluded = ["style"];
5
5
  import * as React from 'react';
6
+ import * as ReactDOM from 'react-dom';
6
7
  import { useForkRef } from '@mui/material/utils';
7
8
  import { useGridApiContext } from '../../utils/useGridApiContext';
8
9
  import { useGridRootProps } from '../../utils/useGridRootProps';
@@ -12,13 +13,13 @@ import { gridDensityRowHeightSelector } from '../density/densitySelector';
12
13
  import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
13
14
  import { gridEditRowsStateSelector } from '../editRows/gridEditRowsSelector';
14
15
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
15
- import { GridEvents } from '../../../models/events';
16
16
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
17
17
  import { clamp } from '../../../utils/utils';
18
18
  import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
19
19
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
20
+ import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
21
+
20
22
  import { jsx as _jsx } from "react/jsx-runtime";
21
- // Uses binary search to avoid looping through all possible positions
22
23
  export function getIndexFromScroll(offset, positions) {
23
24
  var sliceStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
24
25
  var sliceEnd = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : positions.length;
@@ -35,9 +36,15 @@ export function getIndexFromScroll(offset, positions) {
35
36
  var itemOffset = positions[pivot];
36
37
  return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
37
38
  }
39
+ export var getRenderableIndexes = function getRenderableIndexes(_ref) {
40
+ var firstIndex = _ref.firstIndex,
41
+ lastIndex = _ref.lastIndex,
42
+ buffer = _ref.buffer,
43
+ minFirstIndex = _ref.minFirstIndex,
44
+ maxLastIndex = _ref.maxLastIndex;
45
+ return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
46
+ };
38
47
  export var useGridVirtualScroller = function useGridVirtualScroller(props) {
39
- var _currentPage$range2;
40
-
41
48
  var apiRef = useGridApiContext();
42
49
  var rootProps = useGridRootProps();
43
50
  var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
@@ -89,9 +96,9 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
89
96
  };
90
97
  }
91
98
 
92
- var _ref = scrollPosition.current,
93
- top = _ref.top,
94
- left = _ref.left;
99
+ var _ref2 = scrollPosition.current,
100
+ top = _ref2.top,
101
+ left = _ref2.left;
95
102
  var firstRowIndex = getIndexFromScroll(top, rowsMeta.positions);
96
103
  var lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getIndexFromScroll(top + rootRef.current.clientHeight, rowsMeta.positions);
97
104
  var firstColumnIndex = getIndexFromScroll(left, columnPositions);
@@ -120,29 +127,18 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
120
127
  setContainerWidth(rootRef.current.clientWidth);
121
128
  }
122
129
  }, []);
123
- useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
124
-
125
- var getRenderableIndexes = function getRenderableIndexes(_ref2) {
126
- var firstIndex = _ref2.firstIndex,
127
- lastIndex = _ref2.lastIndex,
128
- buffer = _ref2.buffer,
129
- minFirstIndex = _ref2.minFirstIndex,
130
- maxLastIndex = _ref2.maxLastIndex;
131
- return [clamp(firstIndex - buffer, minFirstIndex, maxLastIndex), clamp(lastIndex + buffer, minFirstIndex, maxLastIndex)];
132
- };
133
-
130
+ useGridApiEventHandler(apiRef, 'resize', handleResize);
134
131
  var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
135
- var _currentPage$range;
136
-
137
132
  var _getRenderableIndexes = getRenderableIndexes({
138
133
  firstIndex: nextRenderContext.firstRowIndex,
139
134
  lastIndex: nextRenderContext.lastRowIndex,
140
135
  minFirstIndex: 0,
141
- maxLastIndex: ((_currentPage$range = currentPage.range) == null ? void 0 : _currentPage$range.lastRowIndex) || 0,
136
+ maxLastIndex: currentPage.rows.length,
142
137
  buffer: rootProps.rowBuffer
143
138
  }),
144
- _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 1),
145
- firstRowToRender = _getRenderableIndexes2[0];
139
+ _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
140
+ firstRowToRender = _getRenderableIndexes2[0],
141
+ lastRowToRender = _getRenderableIndexes2[1];
146
142
 
147
143
  var _getRenderableIndexes3 = getRenderableIndexes({
148
144
  firstIndex: nextRenderContext.firstColumnIndex,
@@ -152,8 +148,15 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
152
148
  buffer: rootProps.columnBuffer
153
149
  }),
154
150
  _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 1),
155
- firstColumnToRender = _getRenderableIndexes4[0];
156
-
151
+ initialFirstColumnToRender = _getRenderableIndexes4[0];
152
+
153
+ var firstColumnToRender = getFirstNonSpannedColumnToRender({
154
+ firstColumnToRender: initialFirstColumnToRender,
155
+ apiRef: apiRef,
156
+ firstRowToRender: firstRowToRender,
157
+ lastRowToRender: lastRowToRender,
158
+ visibleRows: currentPage.rows
159
+ });
157
160
  var top = gridRowsMetaSelector(apiRef.current.state).positions[firstRowToRender];
158
161
  var left = gridColumnPositionsSelector(apiRef)[firstColumnToRender]; // Call directly the selector because it might be outdated when this method is called
159
162
 
@@ -165,19 +168,22 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
165
168
  left: left
166
169
  });
167
170
  }
168
- }, [apiRef, (_currentPage$range2 = currentPage.range) == null ? void 0 : _currentPage$range2.lastRowIndex, onRenderZonePositioning, renderZoneMaxColumnIndex, renderZoneMinColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
171
+ }, [apiRef, currentPage.rows, onRenderZonePositioning, renderZoneMinColumnIndex, renderZoneMaxColumnIndex, rootProps.columnBuffer, rootProps.rowBuffer]);
172
+ React.useLayoutEffect(function () {
173
+ if (renderContext) {
174
+ updateRenderZonePosition(renderContext);
175
+ }
176
+ }, [renderContext, updateRenderZonePosition]);
169
177
  var updateRenderContext = React.useCallback(function (nextRenderContext) {
170
178
  setRenderContext(nextRenderContext);
171
- updateRenderZonePosition(nextRenderContext);
172
179
  prevRenderContext.current = nextRenderContext;
173
- }, [setRenderContext, prevRenderContext, updateRenderZonePosition]);
180
+ }, [setRenderContext, prevRenderContext]);
174
181
  React.useEffect(function () {
175
182
  if (containerWidth == null) {
176
183
  return;
177
184
  }
178
185
 
179
186
  var initialRenderContext = computeRenderContext();
180
- prevRenderContext.current = initialRenderContext;
181
187
  updateRenderContext(initialRenderContext);
182
188
  var _ref3 = scrollPosition.current,
183
189
  top = _ref3.top,
@@ -187,7 +193,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
187
193
  left: left,
188
194
  renderContext: initialRenderContext
189
195
  };
190
- apiRef.current.publishEvent(GridEvents.rowsScroll, params);
196
+ apiRef.current.publishEvent('rowsScroll', params);
191
197
  }, [apiRef, computeRenderContext, containerWidth, updateRenderContext]);
192
198
 
193
199
  var handleScroll = function handleScroll(event) {
@@ -209,18 +215,29 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
209
215
  var bottomColumnsScrolledSincePreviousRender = Math.abs(nextRenderContext.lastColumnIndex - prevRenderContext.current.lastColumnIndex);
210
216
  var shouldSetState = topRowsScrolledSincePreviousRender >= rootProps.rowThreshold || bottomRowsScrolledSincePreviousRender >= rootProps.rowThreshold || topColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || bottomColumnsScrolledSincePreviousRender >= rootProps.columnThreshold || prevTotalWidth.current !== columnsTotalWidth; // TODO v6: rename event to a wider name, it's not only fired for row scrolling
211
217
 
212
- apiRef.current.publishEvent(GridEvents.rowsScroll, {
218
+ apiRef.current.publishEvent('rowsScroll', {
213
219
  top: scrollTop,
214
220
  left: scrollLeft,
215
221
  renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
216
- });
222
+ }, event);
217
223
 
218
224
  if (shouldSetState) {
219
- updateRenderContext(nextRenderContext);
225
+ // Prevents batching render context changes
226
+ ReactDOM.flushSync(function () {
227
+ updateRenderContext(nextRenderContext);
228
+ });
220
229
  prevTotalWidth.current = columnsTotalWidth;
221
230
  }
222
231
  };
223
232
 
233
+ var handleWheel = function handleWheel(event) {
234
+ apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
235
+ };
236
+
237
+ var handleTouchMove = function handleTouchMove(event) {
238
+ apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
239
+ };
240
+
224
241
  var getRows = function getRows() {
225
242
  var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
226
243
  renderContext: renderContext
@@ -251,6 +268,18 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
251
268
  firstRowToRender = _getRenderableIndexes6[0],
252
269
  lastRowToRender = _getRenderableIndexes6[1];
253
270
 
271
+ var renderedRows = [];
272
+
273
+ for (var i = firstRowToRender; i < lastRowToRender; i += 1) {
274
+ var row = currentPage.rows[i];
275
+ renderedRows.push(row);
276
+ apiRef.current.unstable_calculateColSpan({
277
+ rowId: row.id,
278
+ minFirstColumn: minFirstColumn,
279
+ maxLastColumn: maxLastColumn
280
+ });
281
+ }
282
+
254
283
  var _getRenderableIndexes7 = getRenderableIndexes({
255
284
  firstIndex: nextRenderContext.firstColumnIndex,
256
285
  lastIndex: nextRenderContext.lastColumnIndex,
@@ -259,20 +288,26 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
259
288
  buffer: columnBuffer
260
289
  }),
261
290
  _getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
262
- firstColumnToRender = _getRenderableIndexes8[0],
291
+ initialFirstColumnToRender = _getRenderableIndexes8[0],
263
292
  lastColumnToRender = _getRenderableIndexes8[1];
264
293
 
265
- var renderedRows = currentPage.rows.slice(firstRowToRender, lastRowToRender);
294
+ var firstColumnToRender = getFirstNonSpannedColumnToRender({
295
+ firstColumnToRender: initialFirstColumnToRender,
296
+ apiRef: apiRef,
297
+ firstRowToRender: firstRowToRender,
298
+ lastRowToRender: lastRowToRender,
299
+ visibleRows: currentPage.rows
300
+ });
266
301
  var renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
267
302
  var rows = [];
268
303
 
269
- for (var i = 0; i < renderedRows.length; i += 1) {
304
+ for (var _i = 0; _i < renderedRows.length; _i += 1) {
270
305
  var _rootProps$components;
271
306
 
272
- var _renderedRows$i = renderedRows[i],
273
- _id = _renderedRows$i.id,
274
- _model = _renderedRows$i.model;
275
- var lastVisibleRowIndex = firstRowToRender + i === currentPage.rows.length - 1;
307
+ var _renderedRows$_i = renderedRows[_i],
308
+ _id = _renderedRows$_i.id,
309
+ _model = _renderedRows$_i.model;
310
+ var lastVisibleRowIndex = firstRowToRender + _i === currentPage.rows.length - 1;
276
311
  var targetRowHeight = apiRef.current.unstable_getRowHeight(_id);
277
312
  var isSelected = void 0;
278
313
 
@@ -299,7 +334,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
299
334
  firstColumnToRender: firstColumnToRender,
300
335
  lastColumnToRender: lastColumnToRender,
301
336
  selected: isSelected,
302
- index: currentPage.range.firstRowIndex + firstRowToRender + i,
337
+ index: currentPage.range.firstRowIndex + firstRowToRender + _i,
303
338
  containerWidth: availableSpace,
304
339
  isLastVisible: lastVisibleRowIndex
305
340
  }, typeof getRowProps === 'function' ? getRowProps(_id, _model) : {}, (_rootProps$components = rootProps.componentsProps) == null ? void 0 : _rootProps$components.row), _id));
@@ -333,7 +368,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
333
368
  return size;
334
369
  }, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
335
370
  React.useEffect(function () {
336
- apiRef.current.publishEvent(GridEvents.virtualScrollerContentSizeChange);
371
+ apiRef.current.publishEvent('virtualScrollerContentSizeChange');
337
372
  }, [apiRef, contentSize]);
338
373
 
339
374
  if (rootProps.autoHeight && currentPage.rows.length === 0) {
@@ -364,6 +399,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
364
399
  return _extends({
365
400
  ref: handleRef,
366
401
  onScroll: handleScroll,
402
+ onWheel: handleWheel,
403
+ onTouchMove: handleTouchMove,
367
404
  style: _extends({}, style, rootStyle)
368
405
  }, other);
369
406
  },
@@ -9,22 +9,27 @@ import { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTra
9
9
  * Signal to the underlying logic what version of the public component API
10
10
  * of the data grid is exposed.
11
11
  */
12
- var GridSignature; // We use class to make it easier to detect in heap snapshots by name
12
+ var GridSignature;
13
13
 
14
14
  (function (GridSignature) {
15
15
  GridSignature["DataGrid"] = "DataGrid";
16
16
  GridSignature["DataGridPro"] = "DataGridPro";
17
17
  })(GridSignature || (GridSignature = {}));
18
18
 
19
+ // We use class to make it easier to detect in heap snapshots by name
19
20
  var ObjectToBeRetainedByReact = /*#__PURE__*/_createClass(function ObjectToBeRetainedByReact() {
20
21
  _classCallCheck(this, ObjectToBeRetainedByReact);
21
22
  }); // Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts
22
23
  // Check https://github.com/facebook/react/issues/15317 to get more information
23
24
 
24
25
 
25
- export function createUseGridApiEventHandler(registry) {
26
+ export function createUseGridApiEventHandler(registryContainer) {
26
27
  var cleanupTokensCounter = 0;
27
28
  return function useGridApiEventHandler(apiRef, eventName, handler, options) {
29
+ if (registryContainer.registry === null) {
30
+ registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();
31
+ }
32
+
28
33
  var _React$useState = React.useState(new ObjectToBeRetainedByReact()),
29
34
  _React$useState2 = _slicedToArray(_React$useState, 1),
30
35
  objectRetainedByReact = _React$useState2[0];
@@ -48,7 +53,7 @@ export function createUseGridApiEventHandler(registry) {
48
53
  cleanupTokenRef.current = {
49
54
  cleanupToken: cleanupTokensCounter
50
55
  };
51
- registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
56
+ registryContainer.registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
52
57
  function () {
53
58
  var _subscription$current;
54
59
 
@@ -61,7 +66,7 @@ export function createUseGridApiEventHandler(registry) {
61
66
  subscription.current = null;
62
67
 
63
68
  if (cleanupTokenRef.current) {
64
- registry.unregister(cleanupTokenRef.current);
69
+ registryContainer.registry.unregister(cleanupTokenRef.current);
65
70
  cleanupTokenRef.current = null;
66
71
  }
67
72
  }
@@ -79,10 +84,10 @@ export function createUseGridApiEventHandler(registry) {
79
84
  subscription.current = apiRef.current.subscribeEvent(eventName, _enhancedHandler, options);
80
85
  }
81
86
 
82
- if (cleanupTokenRef.current && registry) {
87
+ if (cleanupTokenRef.current && registryContainer.registry) {
83
88
  // If the effect was called, it means that this render was committed
84
89
  // so we can trust the cleanup function to remove the listener.
85
- registry.unregister(cleanupTokenRef.current);
90
+ registryContainer.registry.unregister(cleanupTokenRef.current);
86
91
  cleanupTokenRef.current = null;
87
92
  }
88
93
 
@@ -95,12 +100,18 @@ export function createUseGridApiEventHandler(registry) {
95
100
  }, [apiRef, eventName, options]);
96
101
  };
97
102
  }
98
- var registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking(); // eslint-disable-next-line @typescript-eslint/naming-convention
103
+ var registryContainer = {
104
+ registry: null
105
+ }; // TODO: move to @mui/x-data-grid/internals
106
+ // eslint-disable-next-line @typescript-eslint/naming-convention
99
107
 
100
108
  export var unstable_resetCleanupTracking = function unstable_resetCleanupTracking() {
101
- return registry.reset();
109
+ var _registryContainer$re;
110
+
111
+ (_registryContainer$re = registryContainer.registry) == null ? void 0 : _registryContainer$re.reset();
112
+ registryContainer.registry = null;
102
113
  };
103
- export var useGridApiEventHandler = createUseGridApiEventHandler(registry);
114
+ export var useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);
104
115
  var optionsSubscriberOptions = {
105
116
  isFirst: true
106
117
  };
@@ -1,6 +1,5 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import * as React from 'react';
3
- import { GridEvents } from '../../models/events';
4
3
  import { isFunction } from '../../utils/utils';
5
4
  import { useGridLogger } from './useGridLogger';
6
5
  export var useGridNativeEventListener = function useGridNativeEventListener(apiRef, ref, eventName, handler, options) {
@@ -38,7 +37,7 @@ export var useGridNativeEventListener = function useGridNativeEventListener(apiR
38
37
  boundElem.removeEventListener(eventName, wrapHandler, options);
39
38
  };
40
39
 
41
- apiRef.current.subscribeEvent(GridEvents.unmount, unsubscribe);
40
+ apiRef.current.subscribeEvent('unmount', unsubscribe);
42
41
  }
43
42
  }, [ref, wrapHandler, eventName, added, logger, options, apiRef]);
44
43
  };
@@ -1,7 +1,7 @@
1
1
  import { buildWarning } from '../../utils/warning';
2
2
 
3
3
  function isOutputSelector(selector) {
4
- return selector.cache;
4
+ return selector.acceptsApiRef;
5
5
  }
6
6
 
7
7
  var stateNotInitializedWarning = buildWarning(['MUI: `useGridSelector` has been called before the initialization of the state.', 'This hook can only be used inside the context of the grid.']);