@mui/x-data-grid 5.10.0 → 5.12.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 (573) hide show
  1. package/CHANGELOG.md +325 -10
  2. package/DataGrid/DataGrid.js +61 -2
  3. package/DataGrid/useDataGridProps.js +2 -1
  4. package/README.md +4 -5
  5. package/colDef/gridActionsColDef.js +2 -1
  6. package/colDef/gridBooleanColDef.js +2 -1
  7. package/colDef/gridCheckboxSelectionColDef.js +1 -0
  8. package/colDef/gridDateColDef.js +4 -2
  9. package/colDef/gridNumericColDef.js +3 -2
  10. package/colDef/gridNumericOperators.d.ts +2 -0
  11. package/colDef/gridNumericOperators.js +11 -0
  12. package/colDef/gridSingleSelectColDef.js +3 -2
  13. package/colDef/gridSingleSelectOperators.d.ts +3 -0
  14. package/colDef/gridSingleSelectOperators.js +52 -0
  15. package/colDef/gridStringColDef.js +3 -2
  16. package/colDef/gridStringOperators.d.ts +2 -0
  17. package/colDef/gridStringOperators.js +12 -0
  18. package/components/GridFooter.d.ts +4 -2
  19. package/components/GridFooter.js +11 -2
  20. package/components/GridRow.d.ts +1 -1
  21. package/components/GridRow.js +55 -17
  22. package/components/GridRowCount.d.ts +4 -1
  23. package/components/GridRowCount.js +1 -0
  24. package/components/GridScrollArea.js +3 -4
  25. package/components/GridSelectedRowCount.d.ts +4 -1
  26. package/components/GridSelectedRowCount.js +2 -1
  27. package/components/base/GridBody.js +1 -2
  28. package/components/base/GridOverlays.js +2 -3
  29. package/components/cell/GridActionsCell.js +13 -4
  30. package/components/cell/GridActionsCellItem.d.ts +1 -1
  31. package/components/cell/GridCell.d.ts +2 -1
  32. package/components/cell/GridCell.js +17 -12
  33. package/components/cell/GridEditBooleanCell.d.ts +15 -3
  34. package/components/cell/GridEditBooleanCell.js +101 -6
  35. package/components/cell/GridEditDateCell.d.ts +16 -4
  36. package/components/cell/GridEditDateCell.js +99 -5
  37. package/components/cell/GridEditInputCell.d.ts +11 -5
  38. package/components/cell/GridEditInputCell.js +29 -5
  39. package/components/cell/GridEditSingleSelectCell.d.ts +12 -4
  40. package/components/cell/GridEditSingleSelectCell.js +28 -5
  41. package/components/cell/index.d.ts +2 -0
  42. package/components/cell/index.js +2 -0
  43. package/components/columnHeaders/GridColumnHeaderItem.js +19 -19
  44. package/components/columnHeaders/GridColumnHeaders.d.ts +2 -0
  45. package/components/columnHeaders/GridColumnHeadersInner.d.ts +2 -0
  46. package/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  47. package/components/columnSelection/GridHeaderCheckbox.js +4 -5
  48. package/components/containers/GridFooterContainer.d.ts +8 -2
  49. package/components/containers/GridFooterContainer.js +11 -2
  50. package/components/containers/GridRoot.js +25 -5
  51. package/components/containers/GridRootStyles.js +4 -2
  52. package/components/containers/GridToolbarContainer.d.ts +8 -2
  53. package/components/containers/GridToolbarContainer.js +12 -2
  54. package/components/menu/GridMenu.js +9 -2
  55. package/components/panel/GridColumnsPanel.js +10 -2
  56. package/components/panel/GridPanelContent.d.ts +8 -1
  57. package/components/panel/GridPanelContent.js +13 -2
  58. package/components/panel/GridPanelFooter.d.ts +8 -1
  59. package/components/panel/GridPanelFooter.js +13 -2
  60. package/components/panel/GridPanelHeader.d.ts +8 -1
  61. package/components/panel/GridPanelHeader.js +13 -2
  62. package/components/panel/GridPanelWrapper.d.ts +1 -1
  63. package/components/panel/GridPanelWrapper.js +3 -3
  64. package/components/panel/filterPanel/GridFilterForm.d.ts +61 -4
  65. package/components/panel/filterPanel/GridFilterForm.js +88 -8
  66. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  67. package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -5
  68. package/components/panel/filterPanel/GridFilterPanel.js +24 -6
  69. package/components/toolbar/GridToolbar.d.ts +12 -2
  70. package/components/toolbar/GridToolbar.js +30 -7
  71. package/components/toolbar/GridToolbarExport.d.ts +5 -4
  72. package/components/toolbar/GridToolbarExport.js +15 -20
  73. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  74. package/components/toolbar/GridToolbarQuickFilter.d.ts +20 -0
  75. package/components/toolbar/GridToolbarQuickFilter.js +87 -0
  76. package/components/toolbar/index.d.ts +3 -1
  77. package/components/toolbar/index.js +3 -2
  78. package/components/virtualization/GridVirtualScroller.d.ts +4 -1
  79. package/components/virtualization/GridVirtualScrollerContent.d.ts +4 -1
  80. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +4 -1
  81. package/constants/defaultGridSlotsComponents.js +3 -2
  82. package/constants/gridClasses.d.ts +16 -0
  83. package/constants/gridClasses.js +1 -1
  84. package/constants/localeTextConstants.js +5 -0
  85. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +11 -0
  86. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
  87. package/hooks/core/strategyProcessing/useGridStrategyProcessing.d.ts +4 -4
  88. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  89. package/hooks/core/useGridApiInitialization.js +3 -3
  90. package/hooks/core/useGridErrorHandler.js +1 -2
  91. package/hooks/core/useGridStateInitialization.js +1 -2
  92. package/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  93. package/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  94. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -0
  95. package/hooks/features/columns/useGridColumnSpanning.js +1 -2
  96. package/hooks/features/columns/useGridColumns.js +20 -23
  97. package/hooks/features/dimensions/useGridDimensions.d.ts +1 -1
  98. package/hooks/features/dimensions/useGridDimensions.js +8 -9
  99. package/hooks/features/editRows/useGridCellEditing.new.d.ts +1 -1
  100. package/hooks/features/editRows/useGridCellEditing.new.js +140 -32
  101. package/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  102. package/hooks/features/editRows/useGridEditing.old.js +4 -5
  103. package/hooks/features/editRows/useGridRowEditing.new.d.ts +1 -1
  104. package/hooks/features/editRows/useGridRowEditing.new.js +128 -42
  105. package/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  106. package/hooks/features/events/useGridEvents.d.ts +1 -1
  107. package/hooks/features/events/useGridEvents.js +19 -18
  108. package/hooks/features/export/serializers/csvSerializer.js +5 -5
  109. package/hooks/features/export/useGridCsvExport.js +23 -16
  110. package/hooks/features/export/useGridPrintExport.js +22 -0
  111. package/hooks/features/export/utils.d.ts +3 -1
  112. package/hooks/features/export/utils.js +13 -0
  113. package/hooks/features/filter/gridFilterState.d.ts +1 -2
  114. package/hooks/features/filter/gridFilterState.js +3 -1
  115. package/hooks/features/filter/gridFilterUtils.d.ts +17 -1
  116. package/hooks/features/filter/gridFilterUtils.js +85 -4
  117. package/hooks/features/filter/useGridFilter.js +25 -13
  118. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  119. package/hooks/features/focus/useGridFocus.js +29 -33
  120. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  121. package/hooks/features/pagination/useGridPage.js +3 -4
  122. package/hooks/features/pagination/useGridPageSize.js +2 -3
  123. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  124. package/hooks/features/rows/gridRowsSelector.d.ts +1 -0
  125. package/hooks/features/rows/gridRowsSelector.js +1 -0
  126. package/hooks/features/rows/gridRowsState.d.ts +16 -11
  127. package/hooks/features/rows/gridRowsUtils.d.ts +14 -1
  128. package/hooks/features/rows/gridRowsUtils.js +79 -1
  129. package/hooks/features/rows/useGridRows.js +130 -129
  130. package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  131. package/hooks/features/rows/useGridRowsMeta.js +107 -43
  132. package/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  133. package/hooks/features/scroll/useGridScroll.js +6 -1
  134. package/hooks/features/selection/useGridSelection.d.ts +1 -1
  135. package/hooks/features/selection/useGridSelection.js +13 -10
  136. package/hooks/features/sorting/useGridSorting.js +8 -9
  137. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +1 -0
  138. package/hooks/features/virtualization/useGridVirtualScroller.js +33 -14
  139. package/hooks/utils/useGridApiEventHandler.d.ts +4 -1
  140. package/hooks/utils/useGridApiEventHandler.js +22 -9
  141. package/hooks/utils/useGridNativeEventListener.js +1 -2
  142. package/hooks/utils/useGridSelector.js +1 -1
  143. package/index.d.ts +2 -0
  144. package/index.js +1 -1
  145. package/internals/index.d.ts +5 -1
  146. package/internals/index.js +5 -2
  147. package/legacy/DataGrid/DataGrid.js +61 -2
  148. package/legacy/DataGrid/useDataGridProps.js +2 -1
  149. package/legacy/colDef/gridActionsColDef.js +2 -1
  150. package/legacy/colDef/gridBooleanColDef.js +2 -1
  151. package/legacy/colDef/gridCheckboxSelectionColDef.js +1 -0
  152. package/legacy/colDef/gridDateColDef.js +4 -2
  153. package/legacy/colDef/gridNumericColDef.js +3 -2
  154. package/legacy/colDef/gridNumericOperators.js +28 -18
  155. package/legacy/colDef/gridSingleSelectColDef.js +3 -2
  156. package/legacy/colDef/gridSingleSelectOperators.js +55 -6
  157. package/legacy/colDef/gridStringColDef.js +3 -2
  158. package/legacy/colDef/gridStringOperators.js +25 -14
  159. package/legacy/components/GridFooter.js +11 -2
  160. package/legacy/components/GridRow.js +60 -17
  161. package/legacy/components/GridRowCount.js +1 -0
  162. package/legacy/components/GridScrollArea.js +3 -4
  163. package/legacy/components/GridSelectedRowCount.js +2 -1
  164. package/legacy/components/base/GridBody.js +1 -2
  165. package/legacy/components/base/GridOverlays.js +2 -3
  166. package/legacy/components/cell/GridActionsCell.js +13 -4
  167. package/legacy/components/cell/GridCell.js +17 -12
  168. package/legacy/components/cell/GridEditBooleanCell.js +132 -11
  169. package/legacy/components/cell/GridEditDateCell.js +148 -42
  170. package/legacy/components/cell/GridEditInputCell.js +61 -12
  171. package/legacy/components/cell/GridEditSingleSelectCell.js +41 -13
  172. package/legacy/components/cell/index.js +2 -0
  173. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +21 -19
  174. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  175. package/legacy/components/columnSelection/GridHeaderCheckbox.js +4 -5
  176. package/legacy/components/containers/GridFooterContainer.js +11 -2
  177. package/legacy/components/containers/GridRoot.js +23 -5
  178. package/legacy/components/containers/GridRootStyles.js +3 -2
  179. package/legacy/components/containers/GridToolbarContainer.js +12 -2
  180. package/legacy/components/menu/GridMenu.js +9 -2
  181. package/legacy/components/panel/GridColumnsPanel.js +12 -2
  182. package/legacy/components/panel/GridPanelContent.js +13 -2
  183. package/legacy/components/panel/GridPanelFooter.js +13 -2
  184. package/legacy/components/panel/GridPanelHeader.js +13 -2
  185. package/legacy/components/panel/GridPanelWrapper.js +3 -3
  186. package/legacy/components/panel/filterPanel/GridFilterForm.js +89 -8
  187. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  188. package/legacy/components/panel/filterPanel/GridFilterPanel.js +25 -6
  189. package/legacy/components/toolbar/GridToolbar.js +31 -6
  190. package/legacy/components/toolbar/GridToolbarExport.js +18 -19
  191. package/legacy/components/toolbar/GridToolbarQuickFilter.js +102 -0
  192. package/legacy/components/toolbar/index.js +3 -2
  193. package/legacy/constants/defaultGridSlotsComponents.js +3 -2
  194. package/legacy/constants/gridClasses.js +1 -1
  195. package/legacy/constants/localeTextConstants.js +5 -0
  196. package/legacy/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -10
  197. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  198. package/legacy/hooks/core/useGridApiInitialization.js +3 -3
  199. package/legacy/hooks/core/useGridErrorHandler.js +1 -2
  200. package/legacy/hooks/core/useGridStateInitialization.js +1 -2
  201. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  202. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  203. package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -2
  204. package/legacy/hooks/features/columns/useGridColumns.js +20 -23
  205. package/legacy/hooks/features/dimensions/useGridDimensions.js +8 -9
  206. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +220 -83
  207. package/legacy/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  208. package/legacy/hooks/features/editRows/useGridEditing.old.js +4 -5
  209. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +132 -42
  210. package/legacy/hooks/features/editRows/useGridRowEditing.old.js +20 -21
  211. package/legacy/hooks/features/events/useGridEvents.js +19 -18
  212. package/legacy/hooks/features/export/serializers/csvSerializer.js +5 -5
  213. package/legacy/hooks/features/export/useGridCsvExport.js +24 -17
  214. package/legacy/hooks/features/export/useGridPrintExport.js +22 -0
  215. package/legacy/hooks/features/export/utils.js +14 -0
  216. package/legacy/hooks/features/filter/gridFilterState.js +3 -1
  217. package/legacy/hooks/features/filter/gridFilterUtils.js +97 -4
  218. package/legacy/hooks/features/filter/useGridFilter.js +25 -13
  219. package/legacy/hooks/features/focus/useGridFocus.js +31 -35
  220. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  221. package/legacy/hooks/features/pagination/useGridPage.js +3 -4
  222. package/legacy/hooks/features/pagination/useGridPageSize.js +2 -3
  223. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  224. package/legacy/hooks/features/rows/gridRowsSelector.js +3 -0
  225. package/legacy/hooks/features/rows/gridRowsUtils.js +82 -1
  226. package/legacy/hooks/features/rows/useGridRows.js +140 -132
  227. package/legacy/hooks/features/rows/useGridRowsMeta.js +104 -41
  228. package/legacy/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  229. package/legacy/hooks/features/scroll/useGridScroll.js +6 -1
  230. package/legacy/hooks/features/selection/useGridSelection.js +13 -10
  231. package/legacy/hooks/features/sorting/useGridSorting.js +8 -9
  232. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +52 -29
  233. package/legacy/hooks/utils/useGridApiEventHandler.js +20 -9
  234. package/legacy/hooks/utils/useGridNativeEventListener.js +1 -2
  235. package/legacy/hooks/utils/useGridSelector.js +1 -1
  236. package/legacy/index.js +1 -1
  237. package/legacy/internals/index.js +5 -2
  238. package/legacy/locales/arSD.js +5 -0
  239. package/legacy/locales/bgBG.js +5 -0
  240. package/legacy/locales/csCZ.js +5 -0
  241. package/legacy/locales/daDK.js +5 -0
  242. package/legacy/locales/deDE.js +10 -5
  243. package/legacy/locales/elGR.js +5 -0
  244. package/legacy/locales/esES.js +5 -0
  245. package/legacy/locales/faIR.js +5 -0
  246. package/legacy/locales/fiFI.js +5 -0
  247. package/legacy/locales/frFR.js +5 -0
  248. package/legacy/locales/heIL.js +10 -5
  249. package/legacy/locales/huHU.js +5 -0
  250. package/legacy/locales/itIT.js +5 -0
  251. package/legacy/locales/jaJP.js +5 -0
  252. package/legacy/locales/koKR.js +5 -0
  253. package/legacy/locales/nbNO.js +127 -0
  254. package/legacy/locales/nlNL.js +5 -0
  255. package/legacy/locales/plPL.js +5 -0
  256. package/legacy/locales/ptBR.js +5 -0
  257. package/legacy/locales/ruRU.js +5 -0
  258. package/legacy/locales/skSK.js +5 -0
  259. package/legacy/locales/trTR.js +8 -3
  260. package/legacy/locales/ukUA.js +5 -0
  261. package/legacy/locales/viVN.js +5 -0
  262. package/legacy/locales/zhCN.js +5 -0
  263. package/legacy/models/events/gridEvents.js +4 -0
  264. package/legacy/models/gridApiCaches.js +1 -0
  265. package/legacy/models/index.js +4 -3
  266. package/legacy/models/params/gridMenuParams.js +1 -0
  267. package/legacy/models/params/index.js +2 -1
  268. package/legacy/utils/createSelector.js +18 -2
  269. package/legacy/utils/exportAs.js +1 -1
  270. package/locales/arSD.js +5 -0
  271. package/locales/bgBG.js +5 -0
  272. package/locales/csCZ.js +5 -0
  273. package/locales/daDK.js +5 -0
  274. package/locales/deDE.js +10 -5
  275. package/locales/elGR.js +5 -0
  276. package/locales/esES.js +5 -0
  277. package/locales/faIR.js +5 -0
  278. package/locales/fiFI.js +5 -0
  279. package/locales/frFR.js +5 -0
  280. package/locales/heIL.js +10 -5
  281. package/locales/huHU.js +5 -0
  282. package/locales/itIT.js +5 -0
  283. package/locales/jaJP.js +5 -0
  284. package/locales/koKR.js +5 -0
  285. package/locales/nbNO.d.ts +2 -0
  286. package/locales/nbNO.js +115 -0
  287. package/locales/nlNL.js +5 -0
  288. package/locales/plPL.js +5 -0
  289. package/locales/ptBR.js +5 -0
  290. package/locales/ruRU.js +5 -0
  291. package/locales/skSK.js +5 -0
  292. package/locales/trTR.js +8 -3
  293. package/locales/ukUA.js +5 -0
  294. package/locales/viVN.js +5 -0
  295. package/locales/zhCN.js +5 -0
  296. package/models/api/gridCoreApi.d.ts +6 -0
  297. package/models/api/gridEditingApi.d.ts +23 -4
  298. package/models/api/gridFilterApi.d.ts +5 -0
  299. package/models/api/gridFocusApi.d.ts +1 -0
  300. package/models/api/gridLocaleTextApi.d.ts +4 -0
  301. package/models/api/gridRowApi.d.ts +28 -0
  302. package/models/api/gridRowsMetaApi.d.ts +24 -0
  303. package/models/api/index.d.ts +1 -1
  304. package/models/colDef/gridColDef.d.ts +16 -3
  305. package/models/events/gridEventLookup.d.ts +286 -4
  306. package/models/events/gridEvents.d.ts +5 -278
  307. package/models/events/gridEvents.js +4 -0
  308. package/models/gridApiCaches.d.ts +6 -0
  309. package/models/gridApiCaches.js +1 -0
  310. package/models/gridExport.d.ts +29 -2
  311. package/models/gridFilterModel.d.ts +11 -0
  312. package/models/gridFilterOperator.d.ts +1 -1
  313. package/models/gridIconSlotsComponent.d.ts +5 -0
  314. package/models/gridStateCommunity.d.ts +0 -2
  315. package/models/index.d.ts +1 -1
  316. package/models/index.js +4 -3
  317. package/models/params/gridMenuParams.d.ts +7 -0
  318. package/models/params/gridMenuParams.js +1 -0
  319. package/models/params/gridRowParams.d.ts +1 -1
  320. package/models/params/index.d.ts +1 -0
  321. package/models/params/index.js +2 -1
  322. package/models/props/DataGridProps.d.ts +79 -29
  323. package/modern/DataGrid/DataGrid.js +61 -2
  324. package/modern/DataGrid/useDataGridProps.js +2 -1
  325. package/modern/colDef/gridActionsColDef.js +2 -1
  326. package/modern/colDef/gridBooleanColDef.js +2 -1
  327. package/modern/colDef/gridCheckboxSelectionColDef.js +1 -0
  328. package/modern/colDef/gridDateColDef.js +4 -2
  329. package/modern/colDef/gridNumericColDef.js +3 -2
  330. package/modern/colDef/gridNumericOperators.js +11 -0
  331. package/modern/colDef/gridSingleSelectColDef.js +3 -2
  332. package/modern/colDef/gridSingleSelectOperators.js +52 -0
  333. package/modern/colDef/gridStringColDef.js +3 -2
  334. package/modern/colDef/gridStringOperators.js +12 -0
  335. package/modern/components/GridFooter.js +11 -2
  336. package/modern/components/GridRow.js +55 -17
  337. package/modern/components/GridRowCount.js +1 -0
  338. package/modern/components/GridScrollArea.js +3 -4
  339. package/modern/components/GridSelectedRowCount.js +2 -1
  340. package/modern/components/base/GridBody.js +1 -2
  341. package/modern/components/base/GridOverlays.js +2 -3
  342. package/modern/components/cell/GridActionsCell.js +14 -3
  343. package/modern/components/cell/GridCell.js +17 -12
  344. package/modern/components/cell/GridEditBooleanCell.js +101 -6
  345. package/modern/components/cell/GridEditDateCell.js +99 -5
  346. package/modern/components/cell/GridEditInputCell.js +29 -5
  347. package/modern/components/cell/GridEditSingleSelectCell.js +28 -5
  348. package/modern/components/cell/index.js +2 -0
  349. package/modern/components/columnHeaders/GridColumnHeaderItem.js +19 -19
  350. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -3
  351. package/modern/components/columnSelection/GridHeaderCheckbox.js +4 -5
  352. package/modern/components/containers/GridFooterContainer.js +11 -2
  353. package/modern/components/containers/GridRoot.js +25 -3
  354. package/modern/components/containers/GridRootStyles.js +4 -2
  355. package/modern/components/containers/GridToolbarContainer.js +12 -2
  356. package/modern/components/menu/GridMenu.js +9 -2
  357. package/modern/components/panel/GridColumnsPanel.js +10 -2
  358. package/modern/components/panel/GridPanelContent.js +13 -2
  359. package/modern/components/panel/GridPanelFooter.js +13 -2
  360. package/modern/components/panel/GridPanelHeader.js +13 -2
  361. package/modern/components/panel/GridPanelWrapper.js +3 -3
  362. package/modern/components/panel/filterPanel/GridFilterForm.js +88 -8
  363. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  364. package/modern/components/panel/filterPanel/GridFilterPanel.js +24 -6
  365. package/modern/components/toolbar/GridToolbar.js +30 -7
  366. package/modern/components/toolbar/GridToolbarExport.js +15 -20
  367. package/modern/components/toolbar/GridToolbarQuickFilter.js +85 -0
  368. package/modern/components/toolbar/index.js +3 -2
  369. package/modern/constants/defaultGridSlotsComponents.js +3 -2
  370. package/modern/constants/gridClasses.js +1 -1
  371. package/modern/constants/localeTextConstants.js +5 -0
  372. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -9
  373. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -7
  374. package/modern/hooks/core/useGridApiInitialization.js +3 -3
  375. package/modern/hooks/core/useGridErrorHandler.js +1 -2
  376. package/modern/hooks/core/useGridStateInitialization.js +1 -2
  377. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -6
  378. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +3 -4
  379. package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -2
  380. package/modern/hooks/features/columns/useGridColumns.js +19 -22
  381. package/modern/hooks/features/dimensions/useGridDimensions.js +8 -9
  382. package/modern/hooks/features/editRows/useGridCellEditing.new.js +138 -32
  383. package/modern/hooks/features/editRows/useGridCellEditing.old.js +20 -21
  384. package/modern/hooks/features/editRows/useGridEditing.old.js +4 -5
  385. package/modern/hooks/features/editRows/useGridRowEditing.new.js +126 -42
  386. package/modern/hooks/features/editRows/useGridRowEditing.old.js +21 -22
  387. package/modern/hooks/features/events/useGridEvents.js +19 -18
  388. package/modern/hooks/features/export/serializers/csvSerializer.js +5 -5
  389. package/modern/hooks/features/export/useGridCsvExport.js +21 -16
  390. package/modern/hooks/features/export/useGridPrintExport.js +20 -0
  391. package/modern/hooks/features/export/utils.js +13 -0
  392. package/modern/hooks/features/filter/gridFilterState.js +3 -1
  393. package/modern/hooks/features/filter/gridFilterUtils.js +81 -4
  394. package/modern/hooks/features/filter/useGridFilter.js +25 -13
  395. package/modern/hooks/features/focus/useGridFocus.js +29 -33
  396. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -5
  397. package/modern/hooks/features/pagination/useGridPage.js +3 -4
  398. package/modern/hooks/features/pagination/useGridPageSize.js +2 -3
  399. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -6
  400. package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
  401. package/modern/hooks/features/rows/gridRowsUtils.js +77 -1
  402. package/modern/hooks/features/rows/useGridRows.js +130 -129
  403. package/modern/hooks/features/rows/useGridRowsMeta.js +105 -37
  404. package/modern/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  405. package/modern/hooks/features/scroll/useGridScroll.js +6 -1
  406. package/modern/hooks/features/selection/useGridSelection.js +13 -10
  407. package/modern/hooks/features/sorting/useGridSorting.js +8 -9
  408. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +33 -14
  409. package/modern/hooks/utils/useGridApiEventHandler.js +20 -9
  410. package/modern/hooks/utils/useGridNativeEventListener.js +1 -2
  411. package/modern/hooks/utils/useGridSelector.js +1 -1
  412. package/modern/index.js +1 -1
  413. package/modern/internals/index.js +5 -2
  414. package/modern/locales/arSD.js +5 -0
  415. package/modern/locales/bgBG.js +5 -0
  416. package/modern/locales/csCZ.js +5 -0
  417. package/modern/locales/daDK.js +5 -0
  418. package/modern/locales/deDE.js +10 -5
  419. package/modern/locales/elGR.js +5 -0
  420. package/modern/locales/esES.js +5 -0
  421. package/modern/locales/faIR.js +5 -0
  422. package/modern/locales/fiFI.js +5 -0
  423. package/modern/locales/frFR.js +5 -0
  424. package/modern/locales/heIL.js +10 -5
  425. package/modern/locales/huHU.js +5 -0
  426. package/modern/locales/itIT.js +5 -0
  427. package/modern/locales/jaJP.js +5 -0
  428. package/modern/locales/koKR.js +5 -0
  429. package/modern/locales/nbNO.js +115 -0
  430. package/modern/locales/nlNL.js +5 -0
  431. package/modern/locales/plPL.js +5 -0
  432. package/modern/locales/ptBR.js +5 -0
  433. package/modern/locales/ruRU.js +5 -0
  434. package/modern/locales/skSK.js +5 -0
  435. package/modern/locales/trTR.js +8 -3
  436. package/modern/locales/ukUA.js +5 -0
  437. package/modern/locales/viVN.js +5 -0
  438. package/modern/locales/zhCN.js +5 -0
  439. package/modern/models/events/gridEvents.js +4 -0
  440. package/modern/models/gridApiCaches.js +1 -0
  441. package/modern/models/index.js +4 -3
  442. package/modern/models/params/gridMenuParams.js +1 -0
  443. package/modern/models/params/index.js +2 -1
  444. package/modern/utils/createSelector.js +20 -2
  445. package/modern/utils/exportAs.js +1 -1
  446. package/node/DataGrid/DataGrid.js +61 -2
  447. package/node/DataGrid/useDataGridProps.js +2 -1
  448. package/node/colDef/gridActionsColDef.js +2 -1
  449. package/node/colDef/gridBooleanColDef.js +2 -1
  450. package/node/colDef/gridCheckboxSelectionColDef.js +1 -0
  451. package/node/colDef/gridDateColDef.js +4 -2
  452. package/node/colDef/gridNumericColDef.js +2 -1
  453. package/node/colDef/gridNumericOperators.js +15 -1
  454. package/node/colDef/gridSingleSelectColDef.js +2 -1
  455. package/node/colDef/gridSingleSelectOperators.js +56 -1
  456. package/node/colDef/gridStringColDef.js +2 -1
  457. package/node/colDef/gridStringOperators.js +16 -1
  458. package/node/components/GridFooter.js +10 -1
  459. package/node/components/GridRow.js +57 -18
  460. package/node/components/GridRowCount.js +1 -0
  461. package/node/components/GridScrollArea.js +3 -5
  462. package/node/components/GridSelectedRowCount.js +2 -1
  463. package/node/components/base/GridBody.js +1 -3
  464. package/node/components/base/GridOverlays.js +2 -4
  465. package/node/components/cell/GridActionsCell.js +13 -4
  466. package/node/components/cell/GridCell.js +16 -11
  467. package/node/components/cell/GridEditBooleanCell.js +100 -5
  468. package/node/components/cell/GridEditDateCell.js +98 -4
  469. package/node/components/cell/GridEditInputCell.js +29 -5
  470. package/node/components/cell/GridEditSingleSelectCell.js +28 -6
  471. package/node/components/cell/index.js +26 -0
  472. package/node/components/columnHeaders/GridColumnHeaderItem.js +19 -20
  473. package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -4
  474. package/node/components/columnSelection/GridHeaderCheckbox.js +4 -6
  475. package/node/components/containers/GridFooterContainer.js +10 -1
  476. package/node/components/containers/GridRoot.js +24 -3
  477. package/node/components/containers/GridRootStyles.js +4 -2
  478. package/node/components/containers/GridToolbarContainer.js +11 -1
  479. package/node/components/menu/GridMenu.js +10 -2
  480. package/node/components/panel/GridColumnsPanel.js +10 -2
  481. package/node/components/panel/GridPanelContent.js +11 -1
  482. package/node/components/panel/GridPanelFooter.js +11 -1
  483. package/node/components/panel/GridPanelHeader.js +11 -1
  484. package/node/components/panel/GridPanelWrapper.js +5 -3
  485. package/node/components/panel/filterPanel/GridFilterForm.js +91 -9
  486. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  487. package/node/components/panel/filterPanel/GridFilterPanel.js +26 -6
  488. package/node/components/toolbar/GridToolbar.js +32 -7
  489. package/node/components/toolbar/GridToolbarExport.js +14 -19
  490. package/node/components/toolbar/GridToolbarQuickFilter.js +109 -0
  491. package/node/components/toolbar/index.js +42 -11
  492. package/node/constants/defaultGridSlotsComponents.js +2 -1
  493. package/node/constants/gridClasses.js +1 -1
  494. package/node/constants/localeTextConstants.js +5 -0
  495. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +10 -8
  496. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +6 -8
  497. package/node/hooks/core/useGridApiInitialization.js +3 -4
  498. package/node/hooks/core/useGridErrorHandler.js +1 -3
  499. package/node/hooks/core/useGridStateInitialization.js +1 -3
  500. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -7
  501. package/node/hooks/features/columnMenu/useGridColumnMenu.js +3 -5
  502. package/node/hooks/features/columns/useGridColumnSpanning.js +1 -3
  503. package/node/hooks/features/columns/useGridColumns.js +20 -24
  504. package/node/hooks/features/dimensions/useGridDimensions.js +8 -10
  505. package/node/hooks/features/editRows/useGridCellEditing.new.js +140 -32
  506. package/node/hooks/features/editRows/useGridCellEditing.old.js +20 -22
  507. package/node/hooks/features/editRows/useGridEditing.old.js +4 -6
  508. package/node/hooks/features/editRows/useGridRowEditing.new.js +128 -43
  509. package/node/hooks/features/editRows/useGridRowEditing.old.js +21 -23
  510. package/node/hooks/features/events/useGridEvents.js +19 -19
  511. package/node/hooks/features/export/serializers/csvSerializer.js +5 -5
  512. package/node/hooks/features/export/useGridCsvExport.js +26 -17
  513. package/node/hooks/features/export/useGridPrintExport.js +25 -0
  514. package/node/hooks/features/export/utils.js +19 -2
  515. package/node/hooks/features/filter/gridFilterState.js +3 -1
  516. package/node/hooks/features/filter/gridFilterUtils.js +93 -3
  517. package/node/hooks/features/filter/useGridFilter.js +25 -13
  518. package/node/hooks/features/focus/useGridFocus.js +29 -34
  519. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +4 -6
  520. package/node/hooks/features/pagination/useGridPage.js +3 -5
  521. package/node/hooks/features/pagination/useGridPageSize.js +2 -4
  522. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -8
  523. package/node/hooks/features/rows/gridRowsSelector.js +3 -1
  524. package/node/hooks/features/rows/gridRowsUtils.js +95 -1
  525. package/node/hooks/features/rows/useGridRows.js +132 -127
  526. package/node/hooks/features/rows/useGridRowsMeta.js +107 -43
  527. package/node/hooks/features/rows/useGridRowsPreProcessors.js +2 -0
  528. package/node/hooks/features/scroll/useGridScroll.js +6 -1
  529. package/node/hooks/features/selection/useGridSelection.js +13 -11
  530. package/node/hooks/features/sorting/useGridSorting.js +8 -10
  531. package/node/hooks/features/virtualization/useGridVirtualScroller.js +33 -15
  532. package/node/hooks/utils/useGridApiEventHandler.js +22 -10
  533. package/node/hooks/utils/useGridNativeEventListener.js +1 -3
  534. package/node/hooks/utils/useGridSelector.js +1 -1
  535. package/node/index.js +1 -1
  536. package/node/internals/index.js +39 -3
  537. package/node/locales/arSD.js +5 -0
  538. package/node/locales/bgBG.js +5 -0
  539. package/node/locales/csCZ.js +5 -0
  540. package/node/locales/daDK.js +5 -0
  541. package/node/locales/deDE.js +10 -5
  542. package/node/locales/elGR.js +5 -0
  543. package/node/locales/esES.js +5 -0
  544. package/node/locales/faIR.js +5 -0
  545. package/node/locales/fiFI.js +5 -0
  546. package/node/locales/frFR.js +5 -0
  547. package/node/locales/heIL.js +10 -5
  548. package/node/locales/huHU.js +5 -0
  549. package/node/locales/itIT.js +5 -0
  550. package/node/locales/jaJP.js +5 -0
  551. package/node/locales/koKR.js +5 -0
  552. package/node/locales/nbNO.js +125 -0
  553. package/node/locales/nlNL.js +5 -0
  554. package/node/locales/plPL.js +5 -0
  555. package/node/locales/ptBR.js +5 -0
  556. package/node/locales/ruRU.js +5 -0
  557. package/node/locales/skSK.js +5 -0
  558. package/node/locales/trTR.js +8 -3
  559. package/node/locales/ukUA.js +5 -0
  560. package/node/locales/viVN.js +5 -0
  561. package/node/locales/zhCN.js +5 -0
  562. package/node/models/events/gridEvents.js +4 -0
  563. package/node/models/gridApiCaches.js +5 -0
  564. package/node/models/index.js +0 -13
  565. package/node/models/params/gridMenuParams.js +5 -0
  566. package/node/models/params/index.js +13 -0
  567. package/node/utils/createSelector.js +25 -4
  568. package/node/utils/exportAs.js +1 -1
  569. package/package.json +5 -4
  570. package/utils/createSelector.d.ts +2 -1
  571. package/utils/createSelector.js +20 -2
  572. package/utils/exportAs.d.ts +2 -2
  573. package/utils/exportAs.js +1 -1
@@ -21,39 +21,76 @@ export const rowsMetaStateInitializer = state => _extends({}, state, {
21
21
 
22
22
  export const useGridRowsMeta = (apiRef, props) => {
23
23
  const {
24
- getRowHeight,
25
- getRowSpacing
24
+ getRowHeight: getRowHeightProp,
25
+ getRowSpacing,
26
+ getEstimatedRowHeight
26
27
  } = props;
27
- const rowsHeightLookup = React.useRef({});
28
- const rowHeight = useGridSelector(apiRef, gridDensityRowHeightSelector);
28
+ const rowsHeightLookup = React.useRef({}); // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
29
+
30
+ const lastMeasuredRowIndex = React.useRef(-1);
31
+ const hasRowWithAutoHeight = React.useRef(false);
32
+ const rowHeightFromDensity = useGridSelector(apiRef, gridDensityRowHeightSelector);
29
33
  const filterState = useGridSelector(apiRef, gridFilterStateSelector);
30
34
  const paginationState = useGridSelector(apiRef, gridPaginationSelector);
31
35
  const sortingState = useGridSelector(apiRef, gridSortingStateSelector);
32
36
  const currentPage = useGridVisibleRows(apiRef, props);
33
37
  const hydrateRowsMeta = React.useCallback(() => {
38
+ hasRowWithAutoHeight.current = false;
34
39
  apiRef.current.setState(state => {
35
- const positions = [];
36
40
  const densityFactor = gridDensityFactorSelector(state, apiRef.current.instanceId);
37
- const currentRowHeight = gridDensityRowHeightSelector(state, apiRef.current.instanceId);
41
+ const positions = [];
38
42
  const currentPageTotalHeight = currentPage.rows.reduce((acc, row) => {
39
43
  positions.push(acc);
40
- let baseRowHeight;
41
- const isResized = rowsHeightLookup.current[row.id] && rowsHeightLookup.current[row.id].isResized || false;
44
+
45
+ if (!rowsHeightLookup.current[row.id]) {
46
+ rowsHeightLookup.current[row.id] = {
47
+ sizes: {
48
+ base: rowHeightFromDensity
49
+ },
50
+ isResized: false,
51
+ autoHeight: false,
52
+ needsFirstMeasurement: true // Assume all rows will need to be measured by default
53
+
54
+ };
55
+ }
56
+
57
+ const {
58
+ isResized,
59
+ needsFirstMeasurement,
60
+ sizes
61
+ } = rowsHeightLookup.current[row.id];
62
+ let baseRowHeight = rowHeightFromDensity;
63
+ const existingBaseRowHeight = sizes.base;
42
64
 
43
65
  if (isResized) {
44
- // do not recalculate resized row height and use the value from the lookup
45
- baseRowHeight = rowsHeightLookup.current[row.id].value;
46
- } else {
47
- baseRowHeight = currentRowHeight;
66
+ // Do not recalculate resized row height and use the value from the lookup
67
+ baseRowHeight = existingBaseRowHeight;
68
+ } else if (getRowHeightProp) {
69
+ const rowHeightFromUser = getRowHeightProp(_extends({}, row, {
70
+ densityFactor
71
+ }));
48
72
 
49
- if (getRowHeight) {
50
- var _getRowHeight;
73
+ if (rowHeightFromUser === 'auto') {
74
+ if (needsFirstMeasurement) {
75
+ const estimatedRowHeight = getEstimatedRowHeight ? getEstimatedRowHeight(_extends({}, row, {
76
+ densityFactor
77
+ })) : rowHeightFromDensity; // If the row was not measured yet use the estimated row height
51
78
 
79
+ baseRowHeight = estimatedRowHeight != null ? estimatedRowHeight : rowHeightFromDensity;
80
+ } else {
81
+ baseRowHeight = existingBaseRowHeight;
82
+ }
83
+
84
+ hasRowWithAutoHeight.current = true;
85
+ rowsHeightLookup.current[row.id].autoHeight = true;
86
+ } else {
52
87
  // Default back to base rowHeight if getRowHeight returns null or undefined.
53
- baseRowHeight = (_getRowHeight = getRowHeight(_extends({}, row, {
54
- densityFactor
55
- }))) != null ? _getRowHeight : currentRowHeight;
88
+ baseRowHeight = rowHeightFromUser != null ? rowHeightFromUser : rowHeightFromDensity;
89
+ rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
90
+ rowsHeightLookup.current[row.id].autoHeight = false;
56
91
  }
92
+ } else {
93
+ rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
57
94
  } // We use an object to make simple to check if a height is already added or not
58
95
 
59
96
 
@@ -74,13 +111,9 @@ export const useGridRowsMeta = (apiRef, props) => {
74
111
  initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
75
112
  }
76
113
 
77
- const sizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
78
- const finalRowHeight = Object.values(sizes).reduce((acc2, value) => acc2 + value, 0);
79
- rowsHeightLookup.current[row.id] = {
80
- value: baseRowHeight,
81
- sizes,
82
- isResized
83
- };
114
+ const processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
115
+ rowsHeightLookup.current[row.id].sizes = processedSizes;
116
+ const finalRowHeight = Object.values(processedSizes).reduce((acc2, value) => acc2 + value, 0);
84
117
  return acc + finalRowHeight;
85
118
  }, 0);
86
119
  return _extends({}, state, {
@@ -90,41 +123,72 @@ export const useGridRowsMeta = (apiRef, props) => {
90
123
  }
91
124
  });
92
125
  });
93
- apiRef.current.forceUpdate();
94
- }, [apiRef, currentPage.rows, getRowSpacing, getRowHeight]);
95
126
 
96
- const getTargetRowHeight = rowId => {
97
- var _rowsHeightLookup$cur;
127
+ if (!hasRowWithAutoHeight.current) {
128
+ // No row has height=auto, so all rows are already measured
129
+ lastMeasuredRowIndex.current = Infinity;
130
+ }
98
131
 
99
- return ((_rowsHeightLookup$cur = rowsHeightLookup.current[rowId]) == null ? void 0 : _rowsHeightLookup$cur.value) || rowHeight;
100
- };
132
+ apiRef.current.forceUpdate();
133
+ }, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
134
+ const getRowHeight = React.useCallback(rowId => {
135
+ const height = rowsHeightLookup.current[rowId];
136
+ return height ? height.sizes.base : rowHeightFromDensity;
137
+ }, [rowHeightFromDensity]);
101
138
 
102
139
  const getRowInternalSizes = rowId => {
103
- var _rowsHeightLookup$cur2;
140
+ var _rowsHeightLookup$cur;
104
141
 
105
- return (_rowsHeightLookup$cur2 = rowsHeightLookup.current[rowId]) == null ? void 0 : _rowsHeightLookup$cur2.sizes;
142
+ return (_rowsHeightLookup$cur = rowsHeightLookup.current[rowId]) == null ? void 0 : _rowsHeightLookup$cur.sizes;
106
143
  };
107
144
 
108
145
  const setRowHeight = React.useCallback((id, height) => {
109
- rowsHeightLookup.current[id] = {
110
- value: height,
111
- isResized: true,
112
- sizes: _extends({}, rowsHeightLookup.current[id].sizes, {
113
- base: height
114
- })
115
- };
146
+ rowsHeightLookup.current[id].sizes.base = height;
147
+ rowsHeightLookup.current[id].isResized = true;
148
+ rowsHeightLookup.current[id].needsFirstMeasurement = false;
116
149
  hydrateRowsMeta();
117
- }, [hydrateRowsMeta]); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
150
+ }, [hydrateRowsMeta]);
151
+ const storeMeasuredRowHeight = React.useCallback((id, height) => {
152
+ if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
153
+ return;
154
+ } // Only trigger hydration if the value is different, otherwise we trigger a loop
155
+
156
+
157
+ const needsHydration = rowsHeightLookup.current[id].sizes.base !== height;
158
+ rowsHeightLookup.current[id].needsFirstMeasurement = false;
159
+ rowsHeightLookup.current[id].sizes.base = height;
160
+
161
+ if (needsHydration) {
162
+ hydrateRowsMeta();
163
+ }
164
+ }, [hydrateRowsMeta]);
165
+ const rowHasAutoHeight = React.useCallback(id => {
166
+ var _rowsHeightLookup$cur2;
167
+
168
+ return ((_rowsHeightLookup$cur2 = rowsHeightLookup.current[id]) == null ? void 0 : _rowsHeightLookup$cur2.autoHeight) || false;
169
+ }, []);
170
+ const getLastMeasuredRowIndex = React.useCallback(() => {
171
+ return lastMeasuredRowIndex.current;
172
+ }, []);
173
+ const setLastMeasuredRowIndex = React.useCallback(index => {
174
+ if (hasRowWithAutoHeight.current) {
175
+ lastMeasuredRowIndex.current = index;
176
+ }
177
+ }, []); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
118
178
  // Because of variable row height this is needed for the virtualization
119
179
 
120
180
  React.useEffect(() => {
121
181
  hydrateRowsMeta();
122
- }, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
182
+ }, [rowHeightFromDensity, filterState, paginationState, sortingState, hydrateRowsMeta]);
123
183
  useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
124
184
  const rowsMetaApi = {
125
- unstable_getRowHeight: getTargetRowHeight,
185
+ unstable_getLastMeasuredRowIndex: getLastMeasuredRowIndex,
186
+ unstable_setLastMeasuredRowIndex: setLastMeasuredRowIndex,
187
+ unstable_rowHasAutoHeight: rowHasAutoHeight,
188
+ unstable_getRowHeight: getRowHeight,
126
189
  unstable_getRowInternalSizes: getRowInternalSizes,
127
- unstable_setRowHeight: setRowHeight
190
+ unstable_setRowHeight: setRowHeight,
191
+ unstable_storeRowHeightMeasurement: storeMeasuredRowHeight
128
192
  };
129
193
  useGridApiMethod(apiRef, rowsMetaApi, 'GridRowsMetaApi');
130
194
  };
@@ -3,6 +3,7 @@ import { GRID_DEFAULT_STRATEGY, useGridRegisterStrategyProcessor } from '../../c
3
3
  const flatRowTreeCreationMethod = ({
4
4
  ids,
5
5
  idRowsLookup,
6
+ idToIdLookup,
6
7
  previousTree
7
8
  }) => {
8
9
  const tree = {};
@@ -28,6 +29,7 @@ const flatRowTreeCreationMethod = ({
28
29
  tree,
29
30
  treeDepth: 1,
30
31
  idRowsLookup,
32
+ idToIdLookup,
31
33
  ids
32
34
  };
33
35
  };
@@ -16,7 +16,12 @@ function scrollIntoView(dimensions) {
16
16
  offsetHeight,
17
17
  offsetTop
18
18
  } = dimensions;
19
- const elementBottom = offsetTop + offsetHeight;
19
+ const elementBottom = offsetTop + offsetHeight; // Always scroll to top when cell is higher than viewport to avoid scroll jump
20
+ // See https://github.com/mui/mui-x/issues/4513 and https://github.com/mui/mui-x/issues/4514
21
+
22
+ if (offsetHeight > clientHeight) {
23
+ return offsetTop;
24
+ }
20
25
 
21
26
  if (elementBottom - clientHeight > scrollTop) {
22
27
  return elementBottom - clientHeight;
@@ -9,4 +9,4 @@ export declare const selectionStateInitializer: GridStateInitializer<Pick<DataGr
9
9
  * @requires useGridFocus (state) - can be after
10
10
  * @requires useGridKeyboardNavigation (`cellKeyDown` event must first be consumed by it)
11
11
  */
12
- export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes'>) => void;
12
+ export declare const useGridSelection: (apiRef: React.MutableRefObject<GridApiCommunity>, props: Pick<DataGridProcessedProps, 'checkboxSelection' | 'selectionModel' | 'onSelectionModelChange' | 'disableMultipleSelection' | 'disableSelectionOnClick' | 'isRowSelectable' | 'checkboxSelectionVisibleOnly' | 'pagination' | 'paginationMode' | 'classes' | 'keepNonExistentRowsSelected'>) => void;
@@ -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 { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
5
4
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
5
  import { useGridLogger } from '../../utils/useGridLogger';
@@ -56,7 +55,7 @@ export const useGridSelection = (apiRef, props) => {
56
55
  propModel: propSelectionModel,
57
56
  propOnChange: props.onSelectionModelChange,
58
57
  stateSelector: gridSelectionStateSelector,
59
- changeEvent: GridEvents.selectionChange
58
+ changeEvent: 'selectionChange'
60
59
  });
61
60
  const {
62
61
  checkboxSelection,
@@ -198,6 +197,10 @@ export const useGridSelection = (apiRef, props) => {
198
197
  */
199
198
 
200
199
  const removeOutdatedSelection = React.useCallback(() => {
200
+ if (props.keepNonExistentRowsSelected) {
201
+ return;
202
+ }
203
+
201
204
  const currentSelection = gridSelectionStateSelector(apiRef.current.state);
202
205
  const rowsLookup = gridRowsLookupSelector(apiRef); // We clone the existing object to avoid mutating the same object returned by the selector to others part of the project
203
206
 
@@ -214,12 +217,12 @@ export const useGridSelection = (apiRef, props) => {
214
217
  if (hasChanged) {
215
218
  apiRef.current.setSelectionModel(Object.values(selectionLookup));
216
219
  }
217
- }, [apiRef]);
220
+ }, [apiRef, props.keepNonExistentRowsSelected]);
218
221
  const handleSingleRowSelection = React.useCallback((id, event) => {
219
222
  const hasCtrlKey = event.metaKey || event.ctrlKey; // multiple selection is only allowed if:
220
223
  // - it is a checkboxSelection
221
224
  // - it is a keyboard selection
222
- // - CTRL is pressed
225
+ // - Ctrl is pressed
223
226
 
224
227
  const isMultipleSelectionDisabled = !checkboxSelection && !hasCtrlKey && !isKeyboardEvent(event);
225
228
  const resetSelection = !canHaveMultipleSelection || isMultipleSelectionDisabled;
@@ -349,12 +352,12 @@ export const useGridSelection = (apiRef, props) => {
349
352
  selectRows(apiRef.current.getAllRowIds(), true);
350
353
  }
351
354
  }, [apiRef, handleSingleRowSelection, selectRows, visibleRows.rows, canHaveMultipleSelection]);
352
- useGridApiEventHandler(apiRef, GridEvents.sortedRowsSet, removeOutdatedSelection);
353
- useGridApiEventHandler(apiRef, GridEvents.cellClick, handleCellClick);
354
- useGridApiEventHandler(apiRef, GridEvents.rowSelectionCheckboxChange, handleRowSelectionCheckboxChange);
355
- useGridApiEventHandler(apiRef, GridEvents.headerSelectionCheckboxChange, handleHeaderSelectionCheckboxChange);
356
- useGridApiEventHandler(apiRef, GridEvents.cellMouseDown, preventSelectionOnShift);
357
- useGridApiEventHandler(apiRef, GridEvents.cellKeyDown, handleCellKeyDown);
355
+ useGridApiEventHandler(apiRef, 'sortedRowsSet', removeOutdatedSelection);
356
+ useGridApiEventHandler(apiRef, 'cellClick', handleCellClick);
357
+ useGridApiEventHandler(apiRef, 'rowSelectionCheckboxChange', handleRowSelectionCheckboxChange);
358
+ useGridApiEventHandler(apiRef, 'headerSelectionCheckboxChange', handleHeaderSelectionCheckboxChange);
359
+ useGridApiEventHandler(apiRef, 'cellMouseDown', preventSelectionOnShift);
360
+ useGridApiEventHandler(apiRef, 'cellKeyDown', handleCellKeyDown);
358
361
  /**
359
362
  * EFFECTS
360
363
  */
@@ -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 { GridFeatureModeConstant } from '../../../models/gridFeatureMode';
5
4
  import { isEnterKey } from '../../../utils/keyboardUtils';
6
5
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
@@ -36,7 +35,7 @@ export const useGridSorting = (apiRef, props) => {
36
35
  propModel: props.sortModel,
37
36
  propOnChange: props.onSortModelChange,
38
37
  stateSelector: gridSortModelSelector,
39
- changeEvent: GridEvents.sortModelChange
38
+ changeEvent: 'sortModelChange'
40
39
  });
41
40
  const upsertSortModel = React.useCallback((field, sortItem) => {
42
41
  const sortModel = gridSortModelSelector(apiRef);
@@ -101,7 +100,7 @@ export const useGridSorting = (apiRef, props) => {
101
100
  })
102
101
  });
103
102
  });
104
- apiRef.current.publishEvent(GridEvents.sortedRowsSet);
103
+ apiRef.current.publishEvent('sortedRowsSet');
105
104
  apiRef.current.forceUpdate();
106
105
  }, [apiRef, logger, props.sortingMode]);
107
106
  const setSortModel = React.useCallback(model => {
@@ -204,7 +203,7 @@ export const useGridSorting = (apiRef, props) => {
204
203
  const handleColumnHeaderKeyDown = React.useCallback(({
205
204
  colDef
206
205
  }, event) => {
207
- // CTRL + Enter opens the column menu
206
+ // Ctrl + Enter opens the column menu
208
207
  if (isEnterKey(event.key) && !event.ctrlKey && !event.metaKey) {
209
208
  sortColumn(colDef, undefined, event.shiftKey);
210
209
  }
@@ -227,11 +226,11 @@ export const useGridSorting = (apiRef, props) => {
227
226
  apiRef.current.applySorting();
228
227
  }
229
228
  }, [apiRef]);
230
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderClick, handleColumnHeaderClick);
231
- useGridApiEventHandler(apiRef, GridEvents.columnHeaderKeyDown, handleColumnHeaderKeyDown);
232
- useGridApiEventHandler(apiRef, GridEvents.rowsSet, apiRef.current.applySorting);
233
- useGridApiEventHandler(apiRef, GridEvents.columnsChange, handleColumnsChange);
234
- useGridApiEventHandler(apiRef, GridEvents.activeStrategyProcessorChange, handleStrategyProcessorChange);
229
+ useGridApiEventHandler(apiRef, 'columnHeaderClick', handleColumnHeaderClick);
230
+ useGridApiEventHandler(apiRef, 'columnHeaderKeyDown', handleColumnHeaderKeyDown);
231
+ useGridApiEventHandler(apiRef, 'rowsSet', apiRef.current.applySorting);
232
+ useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
233
+ useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
235
234
  /**
236
235
  * 1ST RENDER
237
236
  */
@@ -28,6 +28,7 @@ export declare const useGridVirtualScroller: (props: UseGridVirtualScrollerProps
28
28
  minFirstColumn?: number | undefined;
29
29
  maxLastColumn?: number | undefined;
30
30
  availableSpace?: number | null | undefined;
31
+ ignoreAutoHeight?: boolean | undefined;
31
32
  }) => JSX.Element[] | null;
32
33
  getRootProps: ({ style, ...other }?: {
33
34
  style?: {} | undefined;
@@ -12,7 +12,6 @@ import { gridDensityRowHeightSelector } from '../density/densitySelector';
12
12
  import { gridFocusCellSelector, gridTabIndexCellSelector } from '../focus/gridFocusStateSelector';
13
13
  import { gridEditRowsStateSelector } from '../editRows/gridEditRowsSelector';
14
14
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
15
- import { GridEvents } from '../../../models/events';
16
15
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
17
16
  import { clamp } from '../../../utils/utils';
18
17
  import { selectedIdsLookupSelector } from '../selection/gridSelectionSelector';
@@ -88,17 +87,36 @@ export const useGridVirtualScroller = props => {
88
87
  top,
89
88
  left
90
89
  } = scrollPosition.current;
91
- const firstRowIndex = getIndexFromScroll(top, rowsMeta.positions);
90
+ const firstRowIndex = Math.min(Math.max(0, apiRef.current.unstable_getLastMeasuredRowIndex()), getIndexFromScroll(top, rowsMeta.positions));
92
91
  const lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getIndexFromScroll(top + rootRef.current.clientHeight, rowsMeta.positions);
93
- const firstColumnIndex = getIndexFromScroll(left, columnPositions);
94
- const lastColumnIndex = getIndexFromScroll(left + containerWidth, columnPositions);
92
+ let hasRowWithAutoHeight = false;
93
+ let firstColumnIndex = 0;
94
+ let lastColumnIndex = columnPositions.length;
95
+ const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
96
+ firstIndex: firstRowIndex,
97
+ lastIndex: lastRowIndex,
98
+ minFirstIndex: 0,
99
+ maxLastIndex: currentPage.rows.length,
100
+ buffer: rootProps.rowBuffer
101
+ });
102
+
103
+ for (let i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
104
+ const row = currentPage.rows[i];
105
+ hasRowWithAutoHeight = apiRef.current.unstable_rowHasAutoHeight(row.id);
106
+ }
107
+
108
+ if (!hasRowWithAutoHeight) {
109
+ firstColumnIndex = getIndexFromScroll(left, columnPositions);
110
+ lastColumnIndex = getIndexFromScroll(left + containerWidth, columnPositions);
111
+ }
112
+
95
113
  return {
96
114
  firstRowIndex,
97
115
  lastRowIndex,
98
116
  firstColumnIndex,
99
117
  lastColumnIndex
100
118
  };
101
- }, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, currentPage.rows.length, columnPositions, containerWidth, visibleColumns.length]);
119
+ }, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, rootProps.rowBuffer, currentPage.rows, columnPositions, visibleColumns.length, apiRef, containerWidth]);
102
120
  React.useEffect(() => {
103
121
  if (disableVirtualization) {
104
122
  renderZoneRef.current.style.transform = `translate3d(0px, 0px, 0px)`;
@@ -116,7 +134,7 @@ export const useGridVirtualScroller = props => {
116
134
  setContainerWidth(rootRef.current.clientWidth);
117
135
  }
118
136
  }, []);
119
- useGridApiEventHandler(apiRef, GridEvents.resize, handleResize);
137
+ useGridApiEventHandler(apiRef, 'resize', handleResize);
120
138
  const updateRenderZonePosition = React.useCallback(nextRenderContext => {
121
139
  const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
122
140
  firstIndex: nextRenderContext.firstRowIndex,
@@ -176,7 +194,7 @@ export const useGridVirtualScroller = props => {
176
194
  left,
177
195
  renderContext: initialRenderContext
178
196
  };
179
- apiRef.current.publishEvent(GridEvents.rowsScroll, params);
197
+ apiRef.current.publishEvent('rowsScroll', params);
180
198
  }, [apiRef, computeRenderContext, containerWidth, updateRenderContext]);
181
199
 
182
200
  const handleScroll = event => {
@@ -199,7 +217,7 @@ export const useGridVirtualScroller = props => {
199
217
  const bottomColumnsScrolledSincePreviousRender = Math.abs(nextRenderContext.lastColumnIndex - prevRenderContext.current.lastColumnIndex);
200
218
  const 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
201
219
 
202
- apiRef.current.publishEvent(GridEvents.rowsScroll, {
220
+ apiRef.current.publishEvent('rowsScroll', {
203
221
  top: scrollTop,
204
222
  left: scrollLeft,
205
223
  renderContext: shouldSetState ? nextRenderContext : prevRenderContext.current
@@ -215,11 +233,11 @@ export const useGridVirtualScroller = props => {
215
233
  };
216
234
 
217
235
  const handleWheel = event => {
218
- apiRef.current.publishEvent(GridEvents.virtualScrollerWheel, {}, event);
236
+ apiRef.current.publishEvent('virtualScrollerWheel', {}, event);
219
237
  };
220
238
 
221
239
  const handleTouchMove = event => {
222
- apiRef.current.publishEvent(GridEvents.virtualScrollerTouchMove, {}, event);
240
+ apiRef.current.publishEvent('virtualScrollerTouchMove', {}, event);
223
241
  };
224
242
 
225
243
  const getRows = (params = {
@@ -229,7 +247,8 @@ export const useGridVirtualScroller = props => {
229
247
  renderContext: nextRenderContext,
230
248
  minFirstColumn = renderZoneMinColumnIndex,
231
249
  maxLastColumn = renderZoneMaxColumnIndex,
232
- availableSpace = containerWidth
250
+ availableSpace = containerWidth,
251
+ ignoreAutoHeight
233
252
  } = params;
234
253
 
235
254
  if (!currentPage.range || !nextRenderContext || availableSpace == null) {
@@ -282,7 +301,7 @@ export const useGridVirtualScroller = props => {
282
301
  model
283
302
  } = renderedRows[i];
284
303
  const lastVisibleRowIndex = firstRowToRender + i === currentPage.rows.length - 1;
285
- const targetRowHeight = apiRef.current.unstable_getRowHeight(id);
304
+ const baseRowHeight = !apiRef.current.unstable_rowHasAutoHeight(id) || ignoreAutoHeight ? apiRef.current.unstable_getRowHeight(id) : 'auto';
286
305
  let isSelected;
287
306
 
288
307
  if (selectedRowsLookup[id] == null) {
@@ -296,7 +315,7 @@ export const useGridVirtualScroller = props => {
296
315
  rows.push( /*#__PURE__*/_jsx(rootProps.components.Row, _extends({
297
316
  row: model,
298
317
  rowId: id,
299
- rowHeight: targetRowHeight,
318
+ rowHeight: baseRowHeight,
300
319
  cellFocus: cellFocus // TODO move to inside the row
301
320
  ,
302
321
  cellTabIndex: cellTabIndex // TODO move to inside the row
@@ -342,7 +361,7 @@ export const useGridVirtualScroller = props => {
342
361
  return size;
343
362
  }, [rootRef, columnsTotalWidth, rowsMeta.currentPageTotalHeight, currentPage.rows.length, needsHorizontalScrollbar, rootProps.autoHeight, rowHeight]);
344
363
  React.useEffect(() => {
345
- apiRef.current.publishEvent(GridEvents.virtualScrollerContentSizeChange);
364
+ apiRef.current.publishEvent('virtualScrollerContentSizeChange');
346
365
  }, [apiRef, contentSize]);
347
366
 
348
367
  if (rootProps.autoHeight && currentPage.rows.length === 0) {
@@ -11,7 +11,10 @@ declare enum GridSignature {
11
11
  DataGrid = "DataGrid",
12
12
  DataGridPro = "DataGridPro"
13
13
  }
14
- export declare function createUseGridApiEventHandler(registry: CleanupTracking): <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
14
+ interface RegistryContainer {
15
+ registry: CleanupTracking | null;
16
+ }
17
+ export declare function createUseGridApiEventHandler(registryContainer: RegistryContainer): <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
15
18
  export declare const unstable_resetCleanupTracking: () => void;
16
19
  export declare const useGridApiEventHandler: <Api extends GridApiCommon, E extends keyof import("../../models").GridEventLookup>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E> | undefined, options?: EventListenerOptions | undefined) => void;
17
20
  export declare function useGridApiOptionHandler<Api extends GridApiCommon, E extends GridEventsStr>(apiRef: React.MutableRefObject<Api>, eventName: E, handler?: GridEventListener<E>): void;
@@ -6,20 +6,25 @@ import { FinalizationRegistryBasedCleanupTracking } from '../../utils/cleanupTra
6
6
  * Signal to the underlying logic what version of the public component API
7
7
  * of the data grid is exposed.
8
8
  */
9
- var GridSignature; // We use class to make it easier to detect in heap snapshots by name
9
+ var GridSignature;
10
10
 
11
11
  (function (GridSignature) {
12
12
  GridSignature["DataGrid"] = "DataGrid";
13
13
  GridSignature["DataGridPro"] = "DataGridPro";
14
14
  })(GridSignature || (GridSignature = {}));
15
15
 
16
+ // We use class to make it easier to detect in heap snapshots by name
16
17
  class ObjectToBeRetainedByReact {} // Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts
17
18
  // Check https://github.com/facebook/react/issues/15317 to get more information
18
19
 
19
20
 
20
- export function createUseGridApiEventHandler(registry) {
21
+ export function createUseGridApiEventHandler(registryContainer) {
21
22
  let cleanupTokensCounter = 0;
22
23
  return function useGridApiEventHandler(apiRef, eventName, handler, options) {
24
+ if (registryContainer.registry === null) {
25
+ registryContainer.registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking();
26
+ }
27
+
23
28
  const [objectRetainedByReact] = React.useState(new ObjectToBeRetainedByReact());
24
29
  const subscription = React.useRef(null);
25
30
  const handlerRef = React.useRef();
@@ -40,7 +45,7 @@ export function createUseGridApiEventHandler(registry) {
40
45
  cleanupTokenRef.current = {
41
46
  cleanupToken: cleanupTokensCounter
42
47
  };
43
- registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
48
+ registryContainer.registry.register(objectRetainedByReact, // The callback below will be called once this reference stops being retained
44
49
  () => {
45
50
  var _subscription$current;
46
51
 
@@ -53,7 +58,7 @@ export function createUseGridApiEventHandler(registry) {
53
58
  subscription.current = null;
54
59
 
55
60
  if (cleanupTokenRef.current) {
56
- registry.unregister(cleanupTokenRef.current);
61
+ registryContainer.registry.unregister(cleanupTokenRef.current);
57
62
  cleanupTokenRef.current = null;
58
63
  }
59
64
  }
@@ -71,10 +76,10 @@ export function createUseGridApiEventHandler(registry) {
71
76
  subscription.current = apiRef.current.subscribeEvent(eventName, enhancedHandler, options);
72
77
  }
73
78
 
74
- if (cleanupTokenRef.current && registry) {
79
+ if (cleanupTokenRef.current && registryContainer.registry) {
75
80
  // If the effect was called, it means that this render was committed
76
81
  // so we can trust the cleanup function to remove the listener.
77
- registry.unregister(cleanupTokenRef.current);
82
+ registryContainer.registry.unregister(cleanupTokenRef.current);
78
83
  cleanupTokenRef.current = null;
79
84
  }
80
85
 
@@ -87,10 +92,18 @@ export function createUseGridApiEventHandler(registry) {
87
92
  }, [apiRef, eventName, options]);
88
93
  };
89
94
  }
90
- const registry = typeof FinalizationRegistry !== 'undefined' ? new FinalizationRegistryBasedCleanupTracking() : new TimerBasedCleanupTracking(); // eslint-disable-next-line @typescript-eslint/naming-convention
95
+ const registryContainer = {
96
+ registry: null
97
+ }; // TODO: move to @mui/x-data-grid/internals
98
+ // eslint-disable-next-line @typescript-eslint/naming-convention
91
99
 
92
- export const unstable_resetCleanupTracking = () => registry.reset();
93
- export const useGridApiEventHandler = createUseGridApiEventHandler(registry);
100
+ export const unstable_resetCleanupTracking = () => {
101
+ var _registryContainer$re;
102
+
103
+ (_registryContainer$re = registryContainer.registry) == null ? void 0 : _registryContainer$re.reset();
104
+ registryContainer.registry = null;
105
+ };
106
+ export const useGridApiEventHandler = createUseGridApiEventHandler(registryContainer);
94
107
  const optionsSubscriberOptions = {
95
108
  isFirst: true
96
109
  };
@@ -1,5 +1,4 @@
1
1
  import * as React from 'react';
2
- import { GridEvents } from '../../models/events';
3
2
  import { isFunction } from '../../utils/utils';
4
3
  import { useGridLogger } from './useGridLogger';
5
4
  export const useGridNativeEventListener = (apiRef, ref, eventName, handler, options) => {
@@ -32,7 +31,7 @@ export const useGridNativeEventListener = (apiRef, ref, eventName, handler, opti
32
31
  boundElem.removeEventListener(eventName, wrapHandler, options);
33
32
  };
34
33
 
35
- apiRef.current.subscribeEvent(GridEvents.unmount, unsubscribe);
34
+ apiRef.current.subscribeEvent('unmount', unsubscribe);
36
35
  }
37
36
  }, [ref, wrapHandler, eventName, added, logger, options, apiRef]);
38
37
  };
@@ -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
  const 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.']);
package/index.d.ts CHANGED
@@ -14,6 +14,8 @@ export * from './context';
14
14
  export * from './colDef';
15
15
  export * from './utils';
16
16
  export type { DataGridProps, GridExperimentalFeatures } from './models/props/DataGridProps';
17
+ export type { GridToolbarExportProps } from './components/toolbar/GridToolbarExport';
18
+ export type { GridExportFormat, GridExportExtension } from './models/gridExport';
17
19
  /**
18
20
  * The full grid API.
19
21
  */
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.10.0
1
+ /** @license MUI v5.12.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -44,8 +44,12 @@ export { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
44
44
  export { useGridInitializeState } from '../hooks/utils/useGridInitializeState';
45
45
  export type { GridStateInitializer } from '../hooks/utils/useGridInitializeState';
46
46
  export type { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, } from '../models/props/DataGridProps';
47
- export { createSelector } from '../utils/createSelector';
47
+ export { getColumnsToExport, defaultGetRowsToExport } from '../hooks/features/export/utils';
48
+ export { createSelector, unstable_resetCreateSelectorCache } from '../utils/createSelector';
48
49
  export { findParentElementFromClassName } from '../utils/domUtils';
49
50
  export { isNavigationKey } from '../utils/keyboardUtils';
50
51
  export { clamp, isDeepEqual } from '../utils/utils';
52
+ export { buildWarning } from '../utils/warning';
53
+ export { exportAs } from '../utils/exportAs';
51
54
  export type { GridApiCommunity } from '../models/api/gridApiCommunity';
55
+ export type { GridApiCaches } from '../models/gridApiCaches';