@mui/x-data-grid 5.11.1 → 5.12.2

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 (331) hide show
  1. package/CHANGELOG.md +199 -20
  2. package/DataGrid/DataGrid.js +26 -1
  3. package/README.md +2 -2
  4. package/colDef/gridCheckboxSelectionColDef.d.ts +1 -0
  5. package/colDef/gridCheckboxSelectionColDef.js +2 -1
  6. package/colDef/gridDateOperators.d.ts +1 -1
  7. package/colDef/gridNumericColDef.js +1 -1
  8. package/components/GridRow.d.ts +1 -1
  9. package/components/GridRow.js +51 -12
  10. package/components/cell/GridActionsCellItem.d.ts +1 -1
  11. package/components/cell/GridCell.d.ts +2 -1
  12. package/components/cell/GridCell.js +12 -7
  13. package/components/columnHeaders/GridColumnHeaderItem.js +9 -6
  14. package/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
  15. package/components/columnSelection/GridHeaderCheckbox.js +0 -1
  16. package/components/containers/GridRootStyles.js +8 -3
  17. package/components/menu/GridMenu.js +9 -2
  18. package/components/panel/GridColumnsPanel.js +12 -7
  19. package/components/panel/GridPanelWrapper.d.ts +1 -1
  20. package/components/panel/GridPanelWrapper.js +3 -3
  21. package/components/panel/filterPanel/GridFilterForm.d.ts +61 -4
  22. package/components/panel/filterPanel/GridFilterForm.js +88 -8
  23. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  24. package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -5
  25. package/components/panel/filterPanel/GridFilterPanel.js +26 -11
  26. package/components/toolbar/GridToolbarColumnsButton.js +0 -1
  27. package/components/toolbar/GridToolbarDensitySelector.js +0 -1
  28. package/components/toolbar/GridToolbarExportContainer.js +0 -1
  29. package/components/toolbar/GridToolbarFilterButton.d.ts +1 -1
  30. package/components/toolbar/GridToolbarFilterButton.js +0 -1
  31. package/components/toolbar/GridToolbarQuickFilter.d.ts +7 -0
  32. package/components/toolbar/GridToolbarQuickFilter.js +57 -4
  33. package/constants/defaultGridSlotsComponents.js +2 -1
  34. package/constants/gridClasses.d.ts +4 -0
  35. package/constants/gridClasses.js +1 -1
  36. package/constants/localeTextConstants.js +1 -0
  37. package/hooks/core/useGridStateInitialization.js +19 -6
  38. package/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
  39. package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -0
  40. package/hooks/features/columns/useGridColumnSpanning.d.ts +1 -1
  41. package/hooks/features/columns/useGridColumnSpanning.js +1 -1
  42. package/hooks/features/columns/useGridColumns.d.ts +1 -1
  43. package/hooks/features/columns/useGridColumns.js +13 -15
  44. package/hooks/features/dimensions/gridDimensionsApi.d.ts +5 -0
  45. package/hooks/features/dimensions/useGridDimensions.js +9 -8
  46. package/hooks/features/editRows/useGridCellEditing.new.js +11 -4
  47. package/hooks/features/editRows/useGridEditing.old.js +1 -1
  48. package/hooks/features/editRows/useGridRowEditing.new.js +10 -4
  49. package/hooks/features/events/useGridEvents.d.ts +1 -1
  50. package/hooks/features/events/useGridEvents.js +2 -0
  51. package/hooks/features/filter/gridFilterSelector.d.ts +5 -0
  52. package/hooks/features/filter/gridFilterSelector.js +6 -0
  53. package/hooks/features/filter/gridFilterState.d.ts +1 -1
  54. package/hooks/features/filter/gridFilterUtils.d.ts +10 -2
  55. package/hooks/features/filter/gridFilterUtils.js +3 -6
  56. package/hooks/features/filter/useGridFilter.d.ts +1 -1
  57. package/hooks/features/filter/useGridFilter.js +29 -12
  58. package/hooks/features/pagination/useGridPage.js +1 -1
  59. package/hooks/features/pagination/useGridPageSize.js +1 -1
  60. package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  61. package/hooks/features/rows/useGridRowsMeta.js +133 -67
  62. package/hooks/features/selection/useGridSelection.js +1 -1
  63. package/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
  64. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  65. package/hooks/features/sorting/useGridSorting.js +1 -1
  66. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -1
  67. package/hooks/features/virtualization/useGridVirtualScroller.js +65 -11
  68. package/index.js +1 -1
  69. package/internals/index.d.ts +1 -0
  70. package/legacy/DataGrid/DataGrid.js +26 -1
  71. package/legacy/colDef/gridCheckboxSelectionColDef.js +2 -1
  72. package/legacy/colDef/gridNumericColDef.js +1 -1
  73. package/legacy/components/GridRow.js +56 -12
  74. package/legacy/components/cell/GridCell.js +12 -7
  75. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +11 -6
  76. package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
  77. package/legacy/components/columnSelection/GridHeaderCheckbox.js +0 -1
  78. package/legacy/components/containers/GridRootStyles.js +10 -7
  79. package/legacy/components/menu/GridMenu.js +9 -2
  80. package/legacy/components/panel/GridColumnsPanel.js +14 -7
  81. package/legacy/components/panel/GridPanelWrapper.js +3 -3
  82. package/legacy/components/panel/filterPanel/GridFilterForm.js +89 -8
  83. package/legacy/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  84. package/legacy/components/panel/filterPanel/GridFilterPanel.js +28 -12
  85. package/legacy/components/toolbar/GridToolbarColumnsButton.js +0 -1
  86. package/legacy/components/toolbar/GridToolbarDensitySelector.js +0 -1
  87. package/legacy/components/toolbar/GridToolbarExportContainer.js +0 -1
  88. package/legacy/components/toolbar/GridToolbarFilterButton.js +0 -1
  89. package/legacy/components/toolbar/GridToolbarQuickFilter.js +67 -6
  90. package/legacy/constants/defaultGridSlotsComponents.js +2 -1
  91. package/legacy/constants/gridClasses.js +1 -1
  92. package/legacy/constants/localeTextConstants.js +1 -0
  93. package/legacy/hooks/core/useGridStateInitialization.js +18 -6
  94. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
  95. package/legacy/hooks/features/columns/useGridColumnSpanning.js +1 -1
  96. package/legacy/hooks/features/columns/useGridColumns.js +13 -15
  97. package/legacy/hooks/features/dimensions/useGridDimensions.js +9 -8
  98. package/legacy/hooks/features/editRows/useGridCellEditing.new.js +14 -7
  99. package/legacy/hooks/features/editRows/useGridEditing.old.js +1 -1
  100. package/legacy/hooks/features/editRows/useGridRowEditing.new.js +10 -4
  101. package/legacy/hooks/features/events/useGridEvents.js +2 -0
  102. package/legacy/hooks/features/filter/gridFilterSelector.js +8 -0
  103. package/legacy/hooks/features/filter/gridFilterUtils.js +4 -7
  104. package/legacy/hooks/features/filter/useGridFilter.js +33 -12
  105. package/legacy/hooks/features/pagination/useGridPage.js +1 -1
  106. package/legacy/hooks/features/pagination/useGridPageSize.js +1 -1
  107. package/legacy/hooks/features/rows/useGridRowsMeta.js +133 -66
  108. package/legacy/hooks/features/selection/useGridSelection.js +1 -1
  109. package/legacy/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
  110. package/legacy/hooks/features/sorting/useGridSorting.js +1 -1
  111. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +84 -26
  112. package/legacy/index.js +1 -1
  113. package/legacy/locales/arSD.js +1 -0
  114. package/legacy/locales/bgBG.js +1 -0
  115. package/legacy/locales/csCZ.js +1 -0
  116. package/legacy/locales/daDK.js +1 -0
  117. package/legacy/locales/deDE.js +1 -0
  118. package/legacy/locales/elGR.js +1 -0
  119. package/legacy/locales/esES.js +1 -0
  120. package/legacy/locales/faIR.js +1 -0
  121. package/legacy/locales/fiFI.js +1 -0
  122. package/legacy/locales/frFR.js +1 -0
  123. package/legacy/locales/heIL.js +10 -9
  124. package/legacy/locales/huHU.js +1 -0
  125. package/legacy/locales/itIT.js +1 -0
  126. package/legacy/locales/jaJP.js +29 -24
  127. package/legacy/locales/koKR.js +1 -0
  128. package/legacy/locales/nbNO.js +128 -0
  129. package/legacy/locales/nlNL.js +1 -0
  130. package/legacy/locales/plPL.js +1 -0
  131. package/legacy/locales/ptBR.js +1 -0
  132. package/legacy/locales/ruRU.js +7 -6
  133. package/legacy/locales/skSK.js +1 -0
  134. package/legacy/locales/trTR.js +8 -7
  135. package/legacy/locales/ukUA.js +1 -0
  136. package/legacy/locales/viVN.js +1 -0
  137. package/legacy/locales/zhCN.js +1 -0
  138. package/legacy/models/events/gridEvents.js +2 -0
  139. package/legacy/models/gridApiCaches.js +1 -0
  140. package/legacy/models/params/gridMenuParams.js +1 -0
  141. package/legacy/models/params/index.js +2 -1
  142. package/locales/arSD.js +1 -0
  143. package/locales/bgBG.js +1 -0
  144. package/locales/csCZ.js +1 -0
  145. package/locales/daDK.js +1 -0
  146. package/locales/deDE.js +1 -0
  147. package/locales/elGR.js +1 -0
  148. package/locales/esES.js +1 -0
  149. package/locales/faIR.js +1 -0
  150. package/locales/fiFI.js +1 -0
  151. package/locales/frFR.js +1 -0
  152. package/locales/heIL.js +10 -9
  153. package/locales/huHU.js +1 -0
  154. package/locales/itIT.js +1 -0
  155. package/locales/jaJP.js +25 -24
  156. package/locales/koKR.js +1 -0
  157. package/locales/nbNO.d.ts +2 -0
  158. package/locales/nbNO.js +116 -0
  159. package/locales/nlNL.js +1 -0
  160. package/locales/plPL.js +1 -0
  161. package/locales/ptBR.js +1 -0
  162. package/locales/ruRU.js +7 -6
  163. package/locales/skSK.js +1 -0
  164. package/locales/trTR.js +8 -7
  165. package/locales/ukUA.js +1 -0
  166. package/locales/viVN.js +1 -0
  167. package/locales/zhCN.js +1 -0
  168. package/models/api/gridCallbackDetails.d.ts +6 -1
  169. package/models/api/gridCoreApi.d.ts +2 -6
  170. package/models/api/gridFilterApi.d.ts +8 -1
  171. package/models/api/gridLocaleTextApi.d.ts +1 -0
  172. package/models/api/gridRowsMetaApi.d.ts +24 -0
  173. package/models/api/gridStateApi.d.ts +14 -3
  174. package/models/colDef/gridColDef.d.ts +4 -4
  175. package/models/events/gridEventLookup.d.ts +16 -1
  176. package/models/events/gridEvents.d.ts +3 -1
  177. package/models/events/gridEvents.js +2 -0
  178. package/models/gridApiCaches.d.ts +6 -0
  179. package/models/gridApiCaches.js +1 -0
  180. package/models/gridIconSlotsComponent.d.ts +5 -0
  181. package/models/params/gridMenuParams.d.ts +7 -0
  182. package/models/params/gridMenuParams.js +1 -0
  183. package/models/params/gridRowParams.d.ts +1 -1
  184. package/models/params/index.d.ts +1 -0
  185. package/models/params/index.js +2 -1
  186. package/models/props/DataGridProps.d.ts +24 -2
  187. package/modern/DataGrid/DataGrid.js +26 -1
  188. package/modern/colDef/gridCheckboxSelectionColDef.js +2 -1
  189. package/modern/colDef/gridNumericColDef.js +1 -1
  190. package/modern/components/GridRow.js +51 -12
  191. package/modern/components/cell/GridCell.js +12 -7
  192. package/modern/components/columnHeaders/GridColumnHeaderItem.js +9 -6
  193. package/modern/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
  194. package/modern/components/columnSelection/GridHeaderCheckbox.js +0 -1
  195. package/modern/components/containers/GridRootStyles.js +8 -3
  196. package/modern/components/menu/GridMenu.js +9 -2
  197. package/modern/components/panel/GridColumnsPanel.js +12 -7
  198. package/modern/components/panel/GridPanelWrapper.js +3 -3
  199. package/modern/components/panel/filterPanel/GridFilterForm.js +88 -8
  200. package/modern/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  201. package/modern/components/panel/filterPanel/GridFilterPanel.js +26 -11
  202. package/modern/components/toolbar/GridToolbarColumnsButton.js +0 -1
  203. package/modern/components/toolbar/GridToolbarDensitySelector.js +0 -1
  204. package/modern/components/toolbar/GridToolbarExportContainer.js +0 -1
  205. package/modern/components/toolbar/GridToolbarFilterButton.js +0 -1
  206. package/modern/components/toolbar/GridToolbarQuickFilter.js +57 -4
  207. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  208. package/modern/constants/gridClasses.js +1 -1
  209. package/modern/constants/localeTextConstants.js +1 -0
  210. package/modern/hooks/core/useGridStateInitialization.js +19 -6
  211. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +22 -0
  212. package/modern/hooks/features/columns/useGridColumnSpanning.js +1 -1
  213. package/modern/hooks/features/columns/useGridColumns.js +12 -14
  214. package/modern/hooks/features/dimensions/useGridDimensions.js +9 -8
  215. package/modern/hooks/features/editRows/useGridCellEditing.new.js +10 -3
  216. package/modern/hooks/features/editRows/useGridEditing.old.js +1 -1
  217. package/modern/hooks/features/editRows/useGridRowEditing.new.js +9 -3
  218. package/modern/hooks/features/events/useGridEvents.js +2 -0
  219. package/modern/hooks/features/filter/gridFilterSelector.js +6 -0
  220. package/modern/hooks/features/filter/gridFilterUtils.js +3 -6
  221. package/modern/hooks/features/filter/useGridFilter.js +29 -12
  222. package/modern/hooks/features/pagination/useGridPage.js +1 -1
  223. package/modern/hooks/features/pagination/useGridPageSize.js +1 -1
  224. package/modern/hooks/features/rows/useGridRowsMeta.js +129 -59
  225. package/modern/hooks/features/selection/useGridSelection.js +1 -1
  226. package/modern/hooks/features/selection/useGridSelectionPreProcessors.js +8 -6
  227. package/modern/hooks/features/sorting/useGridSorting.js +1 -1
  228. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +65 -11
  229. package/modern/index.js +1 -1
  230. package/modern/locales/arSD.js +1 -0
  231. package/modern/locales/bgBG.js +1 -0
  232. package/modern/locales/csCZ.js +1 -0
  233. package/modern/locales/daDK.js +1 -0
  234. package/modern/locales/deDE.js +1 -0
  235. package/modern/locales/elGR.js +1 -0
  236. package/modern/locales/esES.js +1 -0
  237. package/modern/locales/faIR.js +1 -0
  238. package/modern/locales/fiFI.js +1 -0
  239. package/modern/locales/frFR.js +1 -0
  240. package/modern/locales/heIL.js +10 -9
  241. package/modern/locales/huHU.js +1 -0
  242. package/modern/locales/itIT.js +1 -0
  243. package/modern/locales/jaJP.js +25 -24
  244. package/modern/locales/koKR.js +1 -0
  245. package/modern/locales/nbNO.js +116 -0
  246. package/modern/locales/nlNL.js +1 -0
  247. package/modern/locales/plPL.js +1 -0
  248. package/modern/locales/ptBR.js +1 -0
  249. package/modern/locales/ruRU.js +7 -6
  250. package/modern/locales/skSK.js +1 -0
  251. package/modern/locales/trTR.js +8 -7
  252. package/modern/locales/ukUA.js +1 -0
  253. package/modern/locales/viVN.js +1 -0
  254. package/modern/locales/zhCN.js +1 -0
  255. package/modern/models/events/gridEvents.js +2 -0
  256. package/modern/models/gridApiCaches.js +1 -0
  257. package/modern/models/params/gridMenuParams.js +1 -0
  258. package/modern/models/params/index.js +2 -1
  259. package/node/DataGrid/DataGrid.js +26 -1
  260. package/node/colDef/gridCheckboxSelectionColDef.js +4 -2
  261. package/node/colDef/gridNumericColDef.js +1 -1
  262. package/node/components/GridRow.js +53 -12
  263. package/node/components/cell/GridCell.js +12 -7
  264. package/node/components/columnHeaders/GridColumnHeaderItem.js +9 -6
  265. package/node/components/columnSelection/GridCellCheckboxRenderer.js +0 -1
  266. package/node/components/columnSelection/GridHeaderCheckbox.js +0 -1
  267. package/node/components/containers/GridRootStyles.js +8 -3
  268. package/node/components/menu/GridMenu.js +10 -2
  269. package/node/components/panel/GridColumnsPanel.js +12 -7
  270. package/node/components/panel/GridPanelWrapper.js +5 -3
  271. package/node/components/panel/filterPanel/GridFilterForm.js +91 -9
  272. package/node/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +0 -1
  273. package/node/components/panel/filterPanel/GridFilterPanel.js +28 -11
  274. package/node/components/toolbar/GridToolbarColumnsButton.js +0 -1
  275. package/node/components/toolbar/GridToolbarDensitySelector.js +0 -1
  276. package/node/components/toolbar/GridToolbarExportContainer.js +0 -1
  277. package/node/components/toolbar/GridToolbarFilterButton.js +0 -1
  278. package/node/components/toolbar/GridToolbarQuickFilter.js +61 -4
  279. package/node/constants/defaultGridSlotsComponents.js +2 -1
  280. package/node/constants/gridClasses.js +1 -1
  281. package/node/constants/localeTextConstants.js +1 -0
  282. package/node/hooks/core/useGridStateInitialization.js +19 -6
  283. package/node/hooks/features/columnMenu/useGridColumnMenu.js +23 -0
  284. package/node/hooks/features/columns/useGridColumnSpanning.js +11 -16
  285. package/node/hooks/features/columns/useGridColumns.js +13 -15
  286. package/node/hooks/features/dimensions/useGridDimensions.js +9 -8
  287. package/node/hooks/features/editRows/useGridCellEditing.new.js +11 -4
  288. package/node/hooks/features/editRows/useGridEditing.old.js +1 -1
  289. package/node/hooks/features/editRows/useGridRowEditing.new.js +10 -4
  290. package/node/hooks/features/events/useGridEvents.js +2 -0
  291. package/node/hooks/features/filter/gridFilterSelector.js +9 -2
  292. package/node/hooks/features/filter/gridFilterUtils.js +4 -5
  293. package/node/hooks/features/filter/useGridFilter.js +28 -11
  294. package/node/hooks/features/pagination/useGridPage.js +1 -1
  295. package/node/hooks/features/pagination/useGridPageSize.js +1 -1
  296. package/node/hooks/features/rows/useGridRowsMeta.js +136 -69
  297. package/node/hooks/features/selection/useGridSelection.js +1 -1
  298. package/node/hooks/features/selection/useGridSelectionPreProcessors.js +7 -5
  299. package/node/hooks/features/sorting/useGridSorting.js +1 -1
  300. package/node/hooks/features/virtualization/useGridVirtualScroller.js +65 -12
  301. package/node/index.js +1 -1
  302. package/node/locales/arSD.js +1 -0
  303. package/node/locales/bgBG.js +1 -0
  304. package/node/locales/csCZ.js +1 -0
  305. package/node/locales/daDK.js +1 -0
  306. package/node/locales/deDE.js +1 -0
  307. package/node/locales/elGR.js +1 -0
  308. package/node/locales/esES.js +1 -0
  309. package/node/locales/faIR.js +1 -0
  310. package/node/locales/fiFI.js +1 -0
  311. package/node/locales/frFR.js +1 -0
  312. package/node/locales/heIL.js +10 -9
  313. package/node/locales/huHU.js +1 -0
  314. package/node/locales/itIT.js +1 -0
  315. package/node/locales/jaJP.js +25 -24
  316. package/node/locales/koKR.js +1 -0
  317. package/node/locales/nbNO.js +126 -0
  318. package/node/locales/nlNL.js +1 -0
  319. package/node/locales/plPL.js +1 -0
  320. package/node/locales/ptBR.js +1 -0
  321. package/node/locales/ruRU.js +7 -6
  322. package/node/locales/skSK.js +1 -0
  323. package/node/locales/trTR.js +8 -7
  324. package/node/locales/ukUA.js +1 -0
  325. package/node/locales/viVN.js +1 -0
  326. package/node/locales/zhCN.js +1 -0
  327. package/node/models/events/gridEvents.js +2 -0
  328. package/node/models/gridApiCaches.js +5 -0
  329. package/node/models/params/gridMenuParams.js +5 -0
  330. package/node/models/params/index.js +13 -0
  331. package/package.json +6 -5
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import { debounce } from '@mui/material/utils';
3
4
  import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
4
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
6
  import { useGridSelector } from '../../utils/useGridSelector';
@@ -22,69 +23,101 @@ export var rowsMetaStateInitializer = function rowsMetaStateInitializer(state) {
22
23
  */
23
24
 
24
25
  export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
25
- var getRowHeight = props.getRowHeight,
26
- getRowSpacing = props.getRowSpacing;
27
- var rowsHeightLookup = React.useRef({});
28
- var rowHeight = useGridSelector(apiRef, gridDensityRowHeightSelector);
26
+ var getRowHeightProp = props.getRowHeight,
27
+ getRowSpacing = props.getRowSpacing,
28
+ getEstimatedRowHeight = props.getEstimatedRowHeight;
29
+ var rowsHeightLookup = React.useRef({}); // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
30
+
31
+ var lastMeasuredRowIndex = React.useRef(-1);
32
+ var hasRowWithAutoHeight = React.useRef(false);
33
+ var rowHeightFromDensity = useGridSelector(apiRef, gridDensityRowHeightSelector);
29
34
  var filterState = useGridSelector(apiRef, gridFilterStateSelector);
30
35
  var paginationState = useGridSelector(apiRef, gridPaginationSelector);
31
36
  var sortingState = useGridSelector(apiRef, gridSortingStateSelector);
32
37
  var currentPage = useGridVisibleRows(apiRef, props);
33
38
  var hydrateRowsMeta = React.useCallback(function () {
34
- apiRef.current.setState(function (state) {
35
- var positions = [];
36
- var densityFactor = gridDensityFactorSelector(state, apiRef.current.instanceId);
37
- var currentRowHeight = gridDensityRowHeightSelector(state, apiRef.current.instanceId);
38
- var currentPageTotalHeight = currentPage.rows.reduce(function (acc, row) {
39
- positions.push(acc);
40
- var baseRowHeight;
41
- var isResized = rowsHeightLookup.current[row.id] && rowsHeightLookup.current[row.id].isResized || false;
42
-
43
- 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;
39
+ hasRowWithAutoHeight.current = false;
40
+ var densityFactor = gridDensityFactorSelector(apiRef.current.state, apiRef.current.instanceId);
41
+ var positions = [];
42
+ var currentPageTotalHeight = currentPage.rows.reduce(function (acc, row) {
43
+ positions.push(acc);
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
+ }
48
56
 
49
- if (getRowHeight) {
50
- var _getRowHeight;
57
+ var _rowsHeightLookup$cur = rowsHeightLookup.current[row.id],
58
+ isResized = _rowsHeightLookup$cur.isResized,
59
+ needsFirstMeasurement = _rowsHeightLookup$cur.needsFirstMeasurement,
60
+ sizes = _rowsHeightLookup$cur.sizes;
61
+ var baseRowHeight = rowHeightFromDensity;
62
+ var existingBaseRowHeight = sizes.base;
51
63
 
52
- // Default back to base rowHeight if getRowHeight returns null or undefined.
53
- baseRowHeight = (_getRowHeight = getRowHeight(_extends({}, row, {
64
+ if (isResized) {
65
+ // Do not recalculate resized row height and use the value from the lookup
66
+ baseRowHeight = existingBaseRowHeight;
67
+ } else if (getRowHeightProp) {
68
+ var rowHeightFromUser = getRowHeightProp(_extends({}, row, {
69
+ densityFactor: densityFactor
70
+ }));
71
+
72
+ if (rowHeightFromUser === 'auto') {
73
+ if (needsFirstMeasurement) {
74
+ var estimatedRowHeight = getEstimatedRowHeight ? getEstimatedRowHeight(_extends({}, row, {
54
75
  densityFactor: densityFactor
55
- }))) != null ? _getRowHeight : currentRowHeight;
76
+ })) : rowHeightFromDensity; // If the row was not measured yet use the estimated row height
77
+
78
+ baseRowHeight = estimatedRowHeight != null ? estimatedRowHeight : rowHeightFromDensity;
79
+ } else {
80
+ baseRowHeight = existingBaseRowHeight;
56
81
  }
57
- } // We use an object to make simple to check if a height is already added or not
58
82
 
83
+ hasRowWithAutoHeight.current = true;
84
+ rowsHeightLookup.current[row.id].autoHeight = true;
85
+ } else {
86
+ // Default back to base rowHeight if getRowHeight returns null or undefined.
87
+ baseRowHeight = rowHeightFromUser != null ? rowHeightFromUser : rowHeightFromDensity;
88
+ rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
89
+ rowsHeightLookup.current[row.id].autoHeight = false;
90
+ }
91
+ } else {
92
+ rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
93
+ } // We use an object to make simple to check if a height is already added or not
59
94
 
60
- var initialHeights = {
61
- base: baseRowHeight
62
- };
63
95
 
64
- if (getRowSpacing) {
65
- var _spacing$top, _spacing$bottom;
66
-
67
- var indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
68
- var spacing = getRowSpacing(_extends({}, row, {
69
- isFirstVisible: indexRelativeToCurrentPage === 0,
70
- isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
71
- indexRelativeToCurrentPage: indexRelativeToCurrentPage
72
- }));
73
- initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
74
- initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
75
- }
96
+ var initialHeights = {
97
+ base: baseRowHeight
98
+ };
76
99
 
77
- var sizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
78
- var finalRowHeight = Object.values(sizes).reduce(function (acc2, value) {
79
- return acc2 + value;
80
- }, 0);
81
- rowsHeightLookup.current[row.id] = {
82
- value: baseRowHeight,
83
- sizes: sizes,
84
- isResized: isResized
85
- };
86
- return acc + finalRowHeight;
100
+ if (getRowSpacing) {
101
+ var _spacing$top, _spacing$bottom;
102
+
103
+ var indexRelativeToCurrentPage = apiRef.current.getRowIndexRelativeToVisibleRows(row.id);
104
+ var spacing = getRowSpacing(_extends({}, row, {
105
+ isFirstVisible: indexRelativeToCurrentPage === 0,
106
+ isLastVisible: indexRelativeToCurrentPage === currentPage.rows.length - 1,
107
+ indexRelativeToCurrentPage: indexRelativeToCurrentPage
108
+ }));
109
+ initialHeights.spacingTop = (_spacing$top = spacing.top) != null ? _spacing$top : 0;
110
+ initialHeights.spacingBottom = (_spacing$bottom = spacing.bottom) != null ? _spacing$bottom : 0;
111
+ }
112
+
113
+ var processedSizes = apiRef.current.unstable_applyPipeProcessors('rowHeight', initialHeights, row);
114
+ rowsHeightLookup.current[row.id].sizes = processedSizes;
115
+ var finalRowHeight = Object.values(processedSizes).reduce(function (acc2, value) {
116
+ return acc2 + value;
87
117
  }, 0);
118
+ return acc + finalRowHeight;
119
+ }, 0);
120
+ apiRef.current.setState(function (state) {
88
121
  return _extends({}, state, {
89
122
  rowsMeta: {
90
123
  currentPageTotalHeight: currentPageTotalHeight,
@@ -92,14 +125,18 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
92
125
  }
93
126
  });
94
127
  });
95
- apiRef.current.forceUpdate();
96
- }, [apiRef, currentPage.rows, getRowSpacing, getRowHeight]);
97
128
 
98
- var getTargetRowHeight = function getTargetRowHeight(rowId) {
99
- var _rowsHeightLookup$cur;
129
+ if (!hasRowWithAutoHeight.current) {
130
+ // No row has height=auto, so all rows are already measured
131
+ lastMeasuredRowIndex.current = Infinity;
132
+ }
100
133
 
101
- return ((_rowsHeightLookup$cur = rowsHeightLookup.current[rowId]) == null ? void 0 : _rowsHeightLookup$cur.value) || rowHeight;
102
- };
134
+ apiRef.current.forceUpdate();
135
+ }, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight]);
136
+ var getRowHeight = React.useCallback(function (rowId) {
137
+ var height = rowsHeightLookup.current[rowId];
138
+ return height ? height.sizes.base : rowHeightFromDensity;
139
+ }, [rowHeightFromDensity]);
103
140
 
104
141
  var getRowInternalSizes = function getRowInternalSizes(rowId) {
105
142
  var _rowsHeightLookup$cur2;
@@ -108,25 +145,55 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
108
145
  };
109
146
 
110
147
  var setRowHeight = React.useCallback(function (id, height) {
111
- rowsHeightLookup.current[id] = {
112
- value: height,
113
- isResized: true,
114
- sizes: _extends({}, rowsHeightLookup.current[id].sizes, {
115
- base: height
116
- })
117
- };
148
+ rowsHeightLookup.current[id].sizes.base = height;
149
+ rowsHeightLookup.current[id].isResized = true;
150
+ rowsHeightLookup.current[id].needsFirstMeasurement = false;
118
151
  hydrateRowsMeta();
119
- }, [hydrateRowsMeta]); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
152
+ }, [hydrateRowsMeta]);
153
+ var debouncedHydrateRowsMeta = React.useMemo(function () {
154
+ return debounce(hydrateRowsMeta);
155
+ }, [hydrateRowsMeta]);
156
+ var storeMeasuredRowHeight = React.useCallback(function (id, height) {
157
+ if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
158
+ return;
159
+ } // Only trigger hydration if the value is different, otherwise we trigger a loop
160
+
161
+
162
+ var needsHydration = rowsHeightLookup.current[id].sizes.base !== height;
163
+ rowsHeightLookup.current[id].needsFirstMeasurement = false;
164
+ rowsHeightLookup.current[id].sizes.base = height;
165
+
166
+ if (needsHydration) {
167
+ debouncedHydrateRowsMeta();
168
+ }
169
+ }, [debouncedHydrateRowsMeta]);
170
+ var rowHasAutoHeight = React.useCallback(function (id) {
171
+ var _rowsHeightLookup$cur3;
172
+
173
+ return ((_rowsHeightLookup$cur3 = rowsHeightLookup.current[id]) == null ? void 0 : _rowsHeightLookup$cur3.autoHeight) || false;
174
+ }, []);
175
+ var getLastMeasuredRowIndex = React.useCallback(function () {
176
+ return lastMeasuredRowIndex.current;
177
+ }, []);
178
+ var setLastMeasuredRowIndex = React.useCallback(function (index) {
179
+ if (hasRowWithAutoHeight.current && index > lastMeasuredRowIndex.current) {
180
+ lastMeasuredRowIndex.current = index;
181
+ }
182
+ }, []); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
120
183
  // Because of variable row height this is needed for the virtualization
121
184
 
122
185
  React.useEffect(function () {
123
186
  hydrateRowsMeta();
124
- }, [rowHeight, filterState, paginationState, sortingState, hydrateRowsMeta]);
187
+ }, [rowHeightFromDensity, filterState, paginationState, sortingState, hydrateRowsMeta]);
125
188
  useGridRegisterPipeApplier(apiRef, 'rowHeight', hydrateRowsMeta);
126
189
  var rowsMetaApi = {
127
- unstable_getRowHeight: getTargetRowHeight,
190
+ unstable_getLastMeasuredRowIndex: getLastMeasuredRowIndex,
191
+ unstable_setLastMeasuredRowIndex: setLastMeasuredRowIndex,
192
+ unstable_rowHasAutoHeight: rowHasAutoHeight,
193
+ unstable_getRowHeight: getRowHeight,
128
194
  unstable_getRowInternalSizes: getRowInternalSizes,
129
- unstable_setRowHeight: setRowHeight
195
+ unstable_setRowHeight: setRowHeight,
196
+ unstable_storeRowHeightMeasurement: storeMeasuredRowHeight
130
197
  };
131
198
  useGridApiMethod(apiRef, rowsMetaApi, 'GridRowsMetaApi');
132
199
  };
@@ -51,7 +51,7 @@ export var useGridSelection = function useGridSelection(apiRef, props) {
51
51
  return getSelectionModelPropValue(props.selectionModel, gridSelectionStateSelector(apiRef.current.state));
52
52
  }, [apiRef, props.selectionModel]);
53
53
  var lastRowToggled = React.useRef(null);
54
- apiRef.current.unstable_updateControlState({
54
+ apiRef.current.unstable_registerControlState({
55
55
  stateId: 'selection',
56
56
  propModel: propSelectionModel,
57
57
  propOnChange: props.onSelectionModelChange,
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { unstable_composeClasses as composeClasses } from '@mui/material';
5
5
  import { useGridRegisterPipeProcessor } from '../../core/pipeProcessing';
6
6
  import { getDataGridUtilityClass } from '../../../constants';
7
- import { GRID_CHECKBOX_SELECTION_COL_DEF } from '../../../colDef';
7
+ import { GRID_CHECKBOX_SELECTION_COL_DEF, GRID_CHECKBOX_SELECTION_FIELD } from '../../../colDef';
8
8
 
9
9
  var useUtilityClasses = function useUtilityClasses(ownerState) {
10
10
  var classes = ownerState.classes;
@@ -30,16 +30,18 @@ export var useGridSelectionPreProcessors = function useGridSelectionPreProcessor
30
30
  });
31
31
 
32
32
  var shouldHaveSelectionColumn = props.checkboxSelection;
33
- var haveSelectionColumn = columnsState.lookup[selectionColumn.field] != null;
33
+ var haveSelectionColumn = columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] != null;
34
34
 
35
35
  if (shouldHaveSelectionColumn && !haveSelectionColumn) {
36
- columnsState.lookup[selectionColumn.field] = selectionColumn;
37
- columnsState.all = [selectionColumn.field].concat(_toConsumableArray(columnsState.all));
36
+ columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = selectionColumn;
37
+ columnsState.all = [GRID_CHECKBOX_SELECTION_FIELD].concat(_toConsumableArray(columnsState.all));
38
38
  } else if (!shouldHaveSelectionColumn && haveSelectionColumn) {
39
- delete columnsState.lookup[selectionColumn.field];
39
+ delete columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD];
40
40
  columnsState.all = columnsState.all.filter(function (field) {
41
- return field !== selectionColumn.field;
41
+ return field !== GRID_CHECKBOX_SELECTION_FIELD;
42
42
  });
43
+ } else if (shouldHaveSelectionColumn && haveSelectionColumn) {
44
+ columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD] = _extends({}, selectionColumn, columnsState.lookup[GRID_CHECKBOX_SELECTION_FIELD]);
43
45
  }
44
46
 
45
47
  return columnsState;
@@ -31,7 +31,7 @@ export var sortingStateInitializer = function sortingStateInitializer(state, pro
31
31
 
32
32
  export var useGridSorting = function useGridSorting(apiRef, props) {
33
33
  var logger = useGridLogger(apiRef, 'useGridSorting');
34
- apiRef.current.unstable_updateControlState({
34
+ apiRef.current.unstable_registerControlState({
35
35
  stateId: 'sortModel',
36
36
  propModel: props.sortModel,
37
37
  propOnChange: props.onSortModelChange,
@@ -20,7 +20,7 @@ import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
20
20
  import { getFirstNonSpannedColumnToRender } from '../columns/gridColumnsUtils'; // Uses binary search to avoid looping through all possible positions
21
21
 
22
22
  import { jsx as _jsx } from "react/jsx-runtime";
23
- export function getIndexFromScroll(offset, positions) {
23
+ export function binarySearch(offset, positions) {
24
24
  var sliceStart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
25
25
  var sliceEnd = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : positions.length;
26
26
 
@@ -34,8 +34,20 @@ export function getIndexFromScroll(offset, positions) {
34
34
 
35
35
  var pivot = sliceStart + Math.floor((sliceEnd - sliceStart) / 2);
36
36
  var itemOffset = positions[pivot];
37
- return offset <= itemOffset ? getIndexFromScroll(offset, positions, sliceStart, pivot) : getIndexFromScroll(offset, positions, pivot + 1, sliceEnd);
37
+ return offset <= itemOffset ? binarySearch(offset, positions, sliceStart, pivot) : binarySearch(offset, positions, pivot + 1, sliceEnd);
38
38
  }
39
+
40
+ function exponentialSearch(offset, positions, index) {
41
+ var interval = 1;
42
+
43
+ while (index < positions.length && positions[index] < offset) {
44
+ index += interval;
45
+ interval *= 2;
46
+ }
47
+
48
+ return binarySearch(offset, positions, Math.floor(index / 2), Math.min(index, positions.length));
49
+ }
50
+
39
51
  export var getRenderableIndexes = function getRenderableIndexes(_ref) {
40
52
  var firstIndex = _ref.firstIndex,
41
53
  lastIndex = _ref.lastIndex,
@@ -86,6 +98,22 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
86
98
  setContainerWidth = _React$useState4[1];
87
99
 
88
100
  var prevTotalWidth = React.useRef(columnsTotalWidth);
101
+ var getNearestIndexToRender = React.useCallback(function (offset) {
102
+ var lastMeasuredIndex = Math.max(0, apiRef.current.unstable_getLastMeasuredRowIndex());
103
+ var allRowsMeasured = lastMeasuredIndex === Infinity;
104
+
105
+ if (allRowsMeasured || rowsMeta.positions[lastMeasuredIndex] >= offset) {
106
+ // If all rows were measured (when no row has "auto" as height) or all rows before the offset
107
+ // were measured, then use a binary search because it's faster.
108
+ return binarySearch(offset, rowsMeta.positions);
109
+ } // Otherwise, use an exponential search.
110
+ // If rows have "auto" as height, their positions will be based on estimated heights.
111
+ // In this case, we can skip several steps until we find a position higher than the offset.
112
+ // Inspired by https://github.com/bvaughn/react-virtualized/blob/master/source/Grid/utils/CellSizeAndPositionManager.js
113
+
114
+
115
+ return exponentialSearch(offset, rowsMeta.positions, lastMeasuredIndex);
116
+ }, [apiRef, rowsMeta.positions]);
89
117
  var computeRenderContext = React.useCallback(function () {
90
118
  if (disableVirtualization) {
91
119
  return {
@@ -98,18 +126,43 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
98
126
 
99
127
  var _ref2 = scrollPosition.current,
100
128
  top = _ref2.top,
101
- left = _ref2.left;
102
- var firstRowIndex = getIndexFromScroll(top, rowsMeta.positions);
103
- var lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getIndexFromScroll(top + rootRef.current.clientHeight, rowsMeta.positions);
104
- var firstColumnIndex = getIndexFromScroll(left, columnPositions);
105
- var lastColumnIndex = getIndexFromScroll(left + containerWidth, columnPositions);
129
+ left = _ref2.left; // Clamp the value because the search may return an index out of bounds.
130
+ // In the last index, this is not needed because Array.slice doesn't include it.
131
+
132
+ var firstRowIndex = Math.min(getNearestIndexToRender(top), rowsMeta.positions.length - 1);
133
+ var lastRowIndex = rootProps.autoHeight ? firstRowIndex + currentPage.rows.length : getNearestIndexToRender(top + rootRef.current.clientHeight);
134
+ var hasRowWithAutoHeight = false;
135
+ var firstColumnIndex = 0;
136
+ var lastColumnIndex = columnPositions.length;
137
+
138
+ var _getRenderableIndexes = getRenderableIndexes({
139
+ firstIndex: firstRowIndex,
140
+ lastIndex: lastRowIndex,
141
+ minFirstIndex: 0,
142
+ maxLastIndex: currentPage.rows.length,
143
+ buffer: rootProps.rowBuffer
144
+ }),
145
+ _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
146
+ firstRowToRender = _getRenderableIndexes2[0],
147
+ lastRowToRender = _getRenderableIndexes2[1];
148
+
149
+ for (var i = firstRowToRender; i < lastRowToRender && !hasRowWithAutoHeight; i += 1) {
150
+ var row = currentPage.rows[i];
151
+ hasRowWithAutoHeight = apiRef.current.unstable_rowHasAutoHeight(row.id);
152
+ }
153
+
154
+ if (!hasRowWithAutoHeight) {
155
+ firstColumnIndex = binarySearch(left, columnPositions);
156
+ lastColumnIndex = binarySearch(left + containerWidth, columnPositions);
157
+ }
158
+
106
159
  return {
107
160
  firstRowIndex: firstRowIndex,
108
161
  lastRowIndex: lastRowIndex,
109
162
  firstColumnIndex: firstColumnIndex,
110
163
  lastColumnIndex: lastColumnIndex
111
164
  };
112
- }, [disableVirtualization, rowsMeta.positions, rootProps.autoHeight, currentPage.rows.length, columnPositions, containerWidth, visibleColumns.length]);
165
+ }, [disableVirtualization, getNearestIndexToRender, rowsMeta.positions.length, rootProps.autoHeight, rootProps.rowBuffer, currentPage.rows, columnPositions, visibleColumns.length, apiRef, containerWidth]);
113
166
  React.useEffect(function () {
114
167
  if (disableVirtualization) {
115
168
  renderZoneRef.current.style.transform = "translate3d(0px, 0px, 0px)";
@@ -129,26 +182,26 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
129
182
  }, []);
130
183
  useGridApiEventHandler(apiRef, 'resize', handleResize);
131
184
  var updateRenderZonePosition = React.useCallback(function (nextRenderContext) {
132
- var _getRenderableIndexes = getRenderableIndexes({
185
+ var _getRenderableIndexes3 = getRenderableIndexes({
133
186
  firstIndex: nextRenderContext.firstRowIndex,
134
187
  lastIndex: nextRenderContext.lastRowIndex,
135
188
  minFirstIndex: 0,
136
189
  maxLastIndex: currentPage.rows.length,
137
190
  buffer: rootProps.rowBuffer
138
191
  }),
139
- _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
140
- firstRowToRender = _getRenderableIndexes2[0],
141
- lastRowToRender = _getRenderableIndexes2[1];
192
+ _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 2),
193
+ firstRowToRender = _getRenderableIndexes4[0],
194
+ lastRowToRender = _getRenderableIndexes4[1];
142
195
 
143
- var _getRenderableIndexes3 = getRenderableIndexes({
196
+ var _getRenderableIndexes5 = getRenderableIndexes({
144
197
  firstIndex: nextRenderContext.firstColumnIndex,
145
198
  lastIndex: nextRenderContext.lastColumnIndex,
146
199
  minFirstIndex: renderZoneMinColumnIndex,
147
200
  maxLastIndex: renderZoneMaxColumnIndex,
148
201
  buffer: rootProps.columnBuffer
149
202
  }),
150
- _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 1),
151
- initialFirstColumnToRender = _getRenderableIndexes4[0];
203
+ _getRenderableIndexes6 = _slicedToArray(_getRenderableIndexes5, 1),
204
+ initialFirstColumnToRender = _getRenderableIndexes6[0];
152
205
 
153
206
  var firstColumnToRender = getFirstNonSpannedColumnToRender({
154
207
  firstColumnToRender: initialFirstColumnToRender,
@@ -248,7 +301,8 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
248
301
  _params$maxLastColumn = params.maxLastColumn,
249
302
  maxLastColumn = _params$maxLastColumn === void 0 ? renderZoneMaxColumnIndex : _params$maxLastColumn,
250
303
  _params$availableSpac = params.availableSpace,
251
- availableSpace = _params$availableSpac === void 0 ? containerWidth : _params$availableSpac;
304
+ availableSpace = _params$availableSpac === void 0 ? containerWidth : _params$availableSpac,
305
+ ignoreAutoHeight = params.ignoreAutoHeight;
252
306
 
253
307
  if (!currentPage.range || !nextRenderContext || availableSpace == null) {
254
308
  return null;
@@ -257,16 +311,16 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
257
311
  var rowBuffer = !disableVirtualization ? rootProps.rowBuffer : 0;
258
312
  var columnBuffer = !disableVirtualization ? rootProps.columnBuffer : 0;
259
313
 
260
- var _getRenderableIndexes5 = getRenderableIndexes({
314
+ var _getRenderableIndexes7 = getRenderableIndexes({
261
315
  firstIndex: nextRenderContext.firstRowIndex,
262
316
  lastIndex: nextRenderContext.lastRowIndex,
263
317
  minFirstIndex: 0,
264
318
  maxLastIndex: currentPage.rows.length,
265
319
  buffer: rowBuffer
266
320
  }),
267
- _getRenderableIndexes6 = _slicedToArray(_getRenderableIndexes5, 2),
268
- firstRowToRender = _getRenderableIndexes6[0],
269
- lastRowToRender = _getRenderableIndexes6[1];
321
+ _getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
322
+ firstRowToRender = _getRenderableIndexes8[0],
323
+ lastRowToRender = _getRenderableIndexes8[1];
270
324
 
271
325
  var renderedRows = [];
272
326
 
@@ -280,16 +334,16 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
280
334
  });
281
335
  }
282
336
 
283
- var _getRenderableIndexes7 = getRenderableIndexes({
337
+ var _getRenderableIndexes9 = getRenderableIndexes({
284
338
  firstIndex: nextRenderContext.firstColumnIndex,
285
339
  lastIndex: nextRenderContext.lastColumnIndex,
286
340
  minFirstIndex: minFirstColumn,
287
341
  maxLastIndex: maxLastColumn,
288
342
  buffer: columnBuffer
289
343
  }),
290
- _getRenderableIndexes8 = _slicedToArray(_getRenderableIndexes7, 2),
291
- initialFirstColumnToRender = _getRenderableIndexes8[0],
292
- lastColumnToRender = _getRenderableIndexes8[1];
344
+ _getRenderableIndexes10 = _slicedToArray(_getRenderableIndexes9, 2),
345
+ initialFirstColumnToRender = _getRenderableIndexes10[0],
346
+ lastColumnToRender = _getRenderableIndexes10[1];
293
347
 
294
348
  var firstColumnToRender = getFirstNonSpannedColumnToRender({
295
349
  firstColumnToRender: initialFirstColumnToRender,
@@ -308,7 +362,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
308
362
  _id = _renderedRows$_i.id,
309
363
  _model = _renderedRows$_i.model;
310
364
  var lastVisibleRowIndex = firstRowToRender + _i === currentPage.rows.length - 1;
311
- var targetRowHeight = apiRef.current.unstable_getRowHeight(_id);
365
+ var baseRowHeight = !apiRef.current.unstable_rowHasAutoHeight(_id) || ignoreAutoHeight ? apiRef.current.unstable_getRowHeight(_id) : 'auto';
312
366
  var isSelected = void 0;
313
367
 
314
368
  if (selectedRowsLookup[_id] == null) {
@@ -322,7 +376,7 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
322
376
  rows.push( /*#__PURE__*/_jsx(rootProps.components.Row, _extends({
323
377
  row: _model,
324
378
  rowId: _id,
325
- rowHeight: targetRowHeight,
379
+ rowHeight: baseRowHeight,
326
380
  cellFocus: cellFocus // TODO move to inside the row
327
381
  ,
328
382
  cellTabIndex: cellTabIndex // TODO move to inside the row
@@ -381,6 +435,10 @@ export var useGridVirtualScroller = function useGridVirtualScroller(props) {
381
435
  rootStyle.overflowX = 'hidden';
382
436
  }
383
437
 
438
+ if (rootProps.autoHeight) {
439
+ rootStyle.overflowY = 'hidden';
440
+ }
441
+
384
442
  var getRenderContext = React.useCallback(function () {
385
443
  return prevRenderContext.current;
386
444
  }, []);
package/legacy/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MUI v5.11.1
1
+ /** @license MUI v5.12.2
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.
@@ -119,6 +119,7 @@ var arSDGrid = {
119
119
  return "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u062A\u062C\u0645\u064A\u0639 \u062D\u0633\u0628 ".concat(name);
120
120
  },
121
121
  // Master/detail
122
+ // detailPanelToggle: 'Detail panel toggle',
122
123
  expandDetailPanel: 'توسيع',
123
124
  collapseDetailPanel: 'طوي' // Row reordering text
124
125
  // rowReorderingHeaderName: 'Row reordering',
@@ -119,6 +119,7 @@ var bgBGGrid = {
119
119
  return "\u0421\u043F\u0440\u0438 \u0433\u0440\u0443\u043F\u0438\u0440\u0430\u043D\u0435 \u043F\u043E ".concat(name);
120
120
  },
121
121
  // Master/detail
122
+ // detailPanelToggle: 'Detail panel toggle',
122
123
  expandDetailPanel: 'Разгъване',
123
124
  collapseDetailPanel: 'Свиване' // Row reordering text
124
125
  // rowReorderingHeaderName: 'Row reordering',
@@ -145,6 +145,7 @@ var csCZGrid = {
145
145
  unGroupColumn: function unGroupColumn(name) {
146
146
  return "P\u0159estat zoskupovat podle ".concat(name);
147
147
  } // Master/detail
148
+ // detailPanelToggle: 'Detail panel toggle',
148
149
  // expandDetailPanel: 'Expand',
149
150
  // collapseDetailPanel: 'Collapse',
150
151
  // Row reordering text
@@ -119,6 +119,7 @@ var daDKGrid = {
119
119
  return "Fjern grupp\xE9ring efter ".concat(name);
120
120
  },
121
121
  // Master/detail
122
+ // detailPanelToggle: 'Detail panel toggle',
122
123
  expandDetailPanel: 'Udvid',
123
124
  collapseDetailPanel: 'Kollaps' // Row reordering text
124
125
  // rowReorderingHeaderName: 'Row reordering',
@@ -119,6 +119,7 @@ var deDEGrid = {
119
119
  return "Gruppierung nach ".concat(name, " aufheben");
120
120
  },
121
121
  // Master/detail
122
+ // detailPanelToggle: 'Detail panel toggle',
122
123
  expandDetailPanel: 'Aufklappen',
123
124
  collapseDetailPanel: 'Zuklappen',
124
125
  // Row reordering text
@@ -113,6 +113,7 @@ var elGRGrid = {
113
113
  // groupColumn: name => `Group by ${name}`,
114
114
  // unGroupColumn: name => `Stop grouping by ${name}`,
115
115
  // Master/detail
116
+ // detailPanelToggle: 'Detail panel toggle',
116
117
  // expandDetailPanel: 'Expand',
117
118
  // collapseDetailPanel: 'Collapse',
118
119
  // Row reordering text
@@ -114,6 +114,7 @@ var esESGrid = {
114
114
  // groupColumn: name => `Group by ${name}`,
115
115
  // unGroupColumn: name => `Stop grouping by ${name}`,
116
116
  // Master/detail
117
+ // detailPanelToggle: 'Detail panel toggle',
117
118
  // expandDetailPanel: 'Expand',
118
119
  // collapseDetailPanel: 'Collapse',
119
120
  // Row reordering text
@@ -119,6 +119,7 @@ var faIRGrid = {
119
119
  return "\u0644\u063A\u0648 \u06AF\u0631\u0648\u0647\u200C\u0628\u0646\u062F\u06CC \u0628\u0631\u0627\u0633\u0627\u0633 ".concat(name);
120
120
  },
121
121
  // Master/detail
122
+ // detailPanelToggle: 'Detail panel toggle',
122
123
  expandDetailPanel: 'بازکردن پنل جزئیات',
123
124
  collapseDetailPanel: 'بستن پنل جزئیات' // Row reordering text
124
125
  // rowReorderingHeaderName: 'Row reordering',
@@ -114,6 +114,7 @@ var fiFIGrid = {
114
114
  // groupColumn: name => `Group by ${name}`,
115
115
  // unGroupColumn: name => `Stop grouping by ${name}`,
116
116
  // Master/detail
117
+ // detailPanelToggle: 'Detail panel toggle',
117
118
  // expandDetailPanel: 'Expand',
118
119
  // collapseDetailPanel: 'Collapse',
119
120
  // Row reordering text
@@ -118,6 +118,7 @@ var frFRGrid = {
118
118
  unGroupColumn: function unGroupColumn(name) {
119
119
  return "Arr\xEAter de grouper par ".concat(name);
120
120
  } // Master/detail
121
+ // detailPanelToggle: 'Detail panel toggle',
121
122
  // expandDetailPanel: 'Expand',
122
123
  // collapseDetailPanel: 'Collapse',
123
124
  // Row reordering text