@mui/x-data-grid 7.0.0-alpha.8 → 7.0.0-beta.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 (566) hide show
  1. package/CHANGELOG.md +508 -30
  2. package/DataGrid/DataGrid.js +6 -6
  3. package/DataGrid/useDataGridComponent.js +2 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/README.md +3 -3
  6. package/components/GridColumnHeaders.d.ts +3 -2
  7. package/components/GridColumnHeaders.js +3 -11
  8. package/components/GridDetailPanels.d.ts +5 -0
  9. package/components/GridDetailPanels.js +4 -0
  10. package/components/GridHeaders.d.ts +4 -0
  11. package/components/GridHeaders.js +53 -0
  12. package/components/GridPinnedRows.d.ts +7 -0
  13. package/components/GridPinnedRows.js +4 -0
  14. package/components/GridRow.d.ts +7 -4
  15. package/components/GridRow.js +161 -97
  16. package/components/GridScrollbarFillerCell.d.ts +7 -0
  17. package/components/GridScrollbarFillerCell.js +39 -0
  18. package/components/base/GridBody.d.ts +2 -13
  19. package/components/base/GridBody.js +2 -116
  20. package/components/base/GridOverlays.js +10 -21
  21. package/components/cell/GridActionsCellItem.d.ts +2 -2
  22. package/components/cell/GridCell.d.ts +15 -21
  23. package/components/cell/GridCell.js +67 -372
  24. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  25. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
  26. package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  27. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  28. package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  29. package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  30. package/components/columnsManagement/GridColumnsManagement.d.ts +36 -0
  31. package/components/columnsManagement/GridColumnsManagement.js +260 -0
  32. package/components/columnsManagement/index.d.ts +1 -0
  33. package/components/columnsManagement/index.js +1 -0
  34. package/components/columnsManagement/utils.d.ts +4 -0
  35. package/components/columnsManagement/utils.js +16 -0
  36. package/components/containers/GridRoot.js +18 -15
  37. package/components/containers/GridRootStyles.js +307 -204
  38. package/components/index.d.ts +1 -0
  39. package/components/index.js +1 -0
  40. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  41. package/components/panel/GridColumnsPanel.d.ts +0 -28
  42. package/components/panel/GridColumnsPanel.js +5 -213
  43. package/components/panel/GridPanel.js +3 -4
  44. package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
  45. package/components/panel/filterPanel/GridFilterForm.js +31 -14
  46. package/components/panel/filterPanel/GridFilterPanel.js +46 -20
  47. package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
  48. package/components/toolbar/GridToolbarColumnsButton.js +40 -22
  49. package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
  50. package/components/toolbar/GridToolbarDensitySelector.js +40 -22
  51. package/components/toolbar/GridToolbarExport.d.ts +10 -1
  52. package/components/toolbar/GridToolbarExport.js +6 -1
  53. package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
  54. package/components/toolbar/GridToolbarExportContainer.js +41 -23
  55. package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
  56. package/components/toolbar/GridToolbarFilterButton.js +6 -10
  57. package/components/virtualization/GridBottomContainer.d.ts +2 -0
  58. package/components/virtualization/GridBottomContainer.js +25 -0
  59. package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
  60. package/components/virtualization/GridMainContainer.js +20 -0
  61. package/components/virtualization/GridTopContainer.d.ts +2 -0
  62. package/components/virtualization/GridTopContainer.js +35 -0
  63. package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
  64. package/components/virtualization/GridVirtualScrollbar.js +131 -0
  65. package/components/virtualization/GridVirtualScroller.d.ts +4 -4
  66. package/components/virtualization/GridVirtualScroller.js +69 -16
  67. package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
  68. package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  69. package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  70. package/constants/defaultGridSlotsComponents.js +8 -3
  71. package/constants/gridClasses.d.ts +72 -12
  72. package/constants/gridClasses.js +1 -1
  73. package/constants/localeTextConstants.js +4 -6
  74. package/hooks/core/gridCoreSelector.d.ts +6 -0
  75. package/hooks/core/gridCoreSelector.js +5 -0
  76. package/hooks/core/useGridApiInitialization.js +4 -0
  77. package/hooks/core/useGridInitialization.js +4 -0
  78. package/hooks/core/useGridRefs.d.ts +3 -0
  79. package/hooks/core/useGridRefs.js +13 -0
  80. package/hooks/core/useGridTheme.d.ts +3 -0
  81. package/hooks/core/useGridTheme.js +19 -0
  82. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  83. package/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  84. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
  85. package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
  86. package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  87. package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
  88. package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  89. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
  90. package/hooks/features/columns/gridColumnsSelector.js +52 -0
  91. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
  92. package/hooks/features/columns/gridColumnsUtils.js +10 -12
  93. package/hooks/features/columns/index.d.ts +2 -2
  94. package/hooks/features/columns/index.js +2 -1
  95. package/hooks/features/columns/useGridColumnSpanning.js +62 -61
  96. package/hooks/features/columns/useGridColumns.js +20 -23
  97. package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
  98. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
  99. package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  100. package/hooks/features/dimensions/index.d.ts +2 -0
  101. package/hooks/features/dimensions/index.js +1 -0
  102. package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
  103. package/hooks/features/dimensions/useGridDimensions.js +216 -148
  104. package/hooks/features/export/serializers/csvSerializer.js +2 -2
  105. package/hooks/features/filter/useGridFilter.js +3 -3
  106. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
  107. package/hooks/features/focus/gridFocusStateSelector.js +2 -6
  108. package/hooks/features/focus/useGridFocus.js +3 -3
  109. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  110. package/hooks/features/pagination/useGridPagination.js +3 -5
  111. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
  112. package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
  113. package/hooks/features/rows/gridRowsSelector.js +5 -5
  114. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  115. package/hooks/features/rows/gridRowsUtils.js +8 -5
  116. package/hooks/features/rows/useGridRowsMeta.js +7 -4
  117. package/hooks/features/scroll/useGridScroll.js +8 -10
  118. package/hooks/features/sorting/gridSortingUtils.js +1 -1
  119. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  120. package/hooks/features/sorting/useGridSorting.js +15 -10
  121. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
  122. package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  123. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
  124. package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
  125. package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
  126. package/hooks/features/virtualization/useGridVirtualization.js +8 -1
  127. package/hooks/utils/index.d.ts +3 -0
  128. package/hooks/utils/index.js +4 -1
  129. package/hooks/utils/useGridAriaAttributes.js +1 -2
  130. package/hooks/utils/useGridNativeEventListener.js +4 -9
  131. package/hooks/utils/useResizeObserver.d.ts +2 -0
  132. package/hooks/utils/useResizeObserver.js +36 -0
  133. package/hooks/utils/useRunOnce.d.ts +5 -0
  134. package/hooks/utils/useRunOnce.js +18 -0
  135. package/index.js +1 -1
  136. package/internals/index.d.ts +12 -9
  137. package/internals/index.js +9 -7
  138. package/legacy/DataGrid/DataGrid.js +6 -6
  139. package/legacy/DataGrid/useDataGridComponent.js +2 -1
  140. package/legacy/DataGrid/useDataGridProps.js +1 -0
  141. package/legacy/components/GridColumnHeaders.js +3 -11
  142. package/legacy/components/GridDetailPanels.js +4 -0
  143. package/legacy/components/GridHeaders.js +53 -0
  144. package/legacy/components/GridPinnedRows.js +4 -0
  145. package/legacy/components/GridRow.js +159 -98
  146. package/legacy/components/GridScrollbarFillerCell.js +36 -0
  147. package/legacy/components/base/GridBody.js +2 -114
  148. package/legacy/components/base/GridOverlays.js +10 -25
  149. package/legacy/components/cell/GridCell.js +69 -377
  150. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  151. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  152. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  153. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  154. package/legacy/components/columnsManagement/GridColumnsManagement.js +300 -0
  155. package/legacy/components/columnsManagement/index.js +1 -0
  156. package/legacy/components/columnsManagement/utils.js +22 -0
  157. package/legacy/components/containers/GridRoot.js +18 -15
  158. package/legacy/components/containers/GridRootStyles.js +215 -137
  159. package/legacy/components/index.js +1 -0
  160. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  161. package/legacy/components/panel/GridColumnsPanel.js +5 -233
  162. package/legacy/components/panel/GridPanel.js +3 -4
  163. package/legacy/components/panel/filterPanel/GridFilterForm.js +30 -13
  164. package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
  165. package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
  166. package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
  167. package/legacy/components/toolbar/GridToolbarExport.js +6 -1
  168. package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
  169. package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
  170. package/legacy/components/virtualization/GridBottomContainer.js +25 -0
  171. package/legacy/components/virtualization/GridMainContainer.js +20 -0
  172. package/legacy/components/virtualization/GridTopContainer.js +35 -0
  173. package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
  174. package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
  175. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
  176. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  177. package/legacy/constants/defaultGridSlotsComponents.js +8 -3
  178. package/legacy/constants/gridClasses.js +1 -1
  179. package/legacy/constants/localeTextConstants.js +4 -6
  180. package/legacy/hooks/core/gridCoreSelector.js +7 -0
  181. package/legacy/hooks/core/useGridApiInitialization.js +4 -0
  182. package/legacy/hooks/core/useGridInitialization.js +4 -0
  183. package/legacy/hooks/core/useGridRefs.js +13 -0
  184. package/legacy/hooks/core/useGridTheme.js +21 -0
  185. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  186. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
  187. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  188. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  189. package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
  190. package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
  191. package/legacy/hooks/features/columns/index.js +2 -1
  192. package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
  193. package/legacy/hooks/features/columns/useGridColumns.js +22 -23
  194. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
  195. package/legacy/hooks/features/dimensions/index.js +1 -0
  196. package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
  197. package/legacy/hooks/features/export/serializers/csvSerializer.js +2 -2
  198. package/legacy/hooks/features/filter/useGridFilter.js +3 -3
  199. package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
  200. package/legacy/hooks/features/focus/useGridFocus.js +3 -3
  201. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  202. package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
  203. package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
  204. package/legacy/hooks/features/rows/gridRowsUtils.js +8 -5
  205. package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -4
  206. package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
  207. package/legacy/hooks/features/sorting/gridSortingUtils.js +1 -1
  208. package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
  209. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
  210. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
  211. package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
  212. package/legacy/hooks/utils/index.js +4 -1
  213. package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
  214. package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
  215. package/legacy/hooks/utils/useResizeObserver.js +36 -0
  216. package/legacy/hooks/utils/useRunOnce.js +18 -0
  217. package/legacy/index.js +1 -1
  218. package/legacy/internals/index.js +9 -7
  219. package/legacy/locales/arSD.js +5 -6
  220. package/legacy/locales/beBY.js +5 -6
  221. package/legacy/locales/bgBG.js +5 -6
  222. package/legacy/locales/csCZ.js +5 -6
  223. package/legacy/locales/daDK.js +5 -6
  224. package/legacy/locales/deDE.js +5 -6
  225. package/legacy/locales/elGR.js +5 -6
  226. package/legacy/locales/esES.js +5 -6
  227. package/legacy/locales/faIR.js +5 -6
  228. package/legacy/locales/fiFI.js +5 -6
  229. package/legacy/locales/frFR.js +5 -6
  230. package/legacy/locales/heIL.js +5 -6
  231. package/legacy/locales/hrHR.js +160 -0
  232. package/legacy/locales/huHU.js +5 -6
  233. package/legacy/locales/index.js +4 -1
  234. package/legacy/locales/itIT.js +5 -6
  235. package/legacy/locales/jaJP.js +5 -6
  236. package/legacy/locales/koKR.js +5 -6
  237. package/legacy/locales/nbNO.js +5 -6
  238. package/legacy/locales/nlNL.js +5 -6
  239. package/legacy/locales/plPL.js +5 -6
  240. package/legacy/locales/ptBR.js +5 -6
  241. package/legacy/locales/ptPT.js +160 -0
  242. package/legacy/locales/roRO.js +5 -6
  243. package/legacy/locales/ruRU.js +5 -6
  244. package/legacy/locales/skSK.js +5 -6
  245. package/legacy/locales/svSE.js +5 -6
  246. package/legacy/locales/trTR.js +5 -6
  247. package/legacy/locales/ukUA.js +5 -6
  248. package/legacy/locales/urPK.js +5 -6
  249. package/legacy/locales/viVN.js +5 -6
  250. package/legacy/locales/zhCN.js +5 -6
  251. package/legacy/locales/zhHK.js +160 -0
  252. package/legacy/locales/zhTW.js +5 -6
  253. package/legacy/models/index.js +0 -1
  254. package/legacy/models/params/index.js +1 -2
  255. package/legacy/utils/utils.js +10 -1
  256. package/locales/arSD.js +5 -6
  257. package/locales/beBY.js +5 -6
  258. package/locales/bgBG.js +5 -6
  259. package/locales/csCZ.js +5 -6
  260. package/locales/daDK.js +5 -6
  261. package/locales/deDE.js +5 -6
  262. package/locales/elGR.js +5 -6
  263. package/locales/esES.js +5 -6
  264. package/locales/faIR.js +5 -6
  265. package/locales/fiFI.js +5 -6
  266. package/locales/frFR.js +5 -6
  267. package/locales/heIL.js +5 -6
  268. package/locales/hrHR.d.ts +1 -0
  269. package/locales/hrHR.js +148 -0
  270. package/locales/huHU.js +5 -6
  271. package/locales/index.d.ts +3 -0
  272. package/locales/index.js +4 -1
  273. package/locales/itIT.js +5 -6
  274. package/locales/jaJP.js +5 -6
  275. package/locales/koKR.js +5 -6
  276. package/locales/nbNO.js +5 -6
  277. package/locales/nlNL.js +5 -6
  278. package/locales/plPL.js +5 -6
  279. package/locales/ptBR.js +5 -6
  280. package/locales/ptPT.d.ts +1 -0
  281. package/locales/ptPT.js +148 -0
  282. package/locales/roRO.js +5 -6
  283. package/locales/ruRU.js +5 -6
  284. package/locales/skSK.js +5 -6
  285. package/locales/svSE.js +5 -6
  286. package/locales/trTR.js +5 -6
  287. package/locales/ukUA.js +5 -6
  288. package/locales/urPK.js +5 -6
  289. package/locales/viVN.js +5 -6
  290. package/locales/zhCN.js +5 -6
  291. package/locales/zhHK.d.ts +1 -0
  292. package/locales/zhHK.js +148 -0
  293. package/locales/zhTW.js +5 -6
  294. package/models/api/gridColumnGroupingApi.d.ts +2 -2
  295. package/models/api/gridCoreApi.d.ts +16 -16
  296. package/models/api/gridLocaleTextApi.d.ts +3 -5
  297. package/models/api/gridRowsMetaApi.d.ts +1 -1
  298. package/models/api/gridVirtualizationApi.d.ts +2 -3
  299. package/models/colDef/gridColType.d.ts +11 -2
  300. package/models/events/gridEventLookup.d.ts +3 -3
  301. package/models/gridFilterModel.d.ts +1 -1
  302. package/models/gridSlotsComponent.d.ts +21 -2
  303. package/models/gridSlotsComponentsProps.d.ts +4 -0
  304. package/models/gridStateCommunity.d.ts +5 -1
  305. package/models/index.d.ts +0 -1
  306. package/models/index.js +0 -1
  307. package/models/params/index.d.ts +0 -1
  308. package/models/params/index.js +1 -2
  309. package/models/props/DataGridProps.d.ts +6 -11
  310. package/modern/DataGrid/DataGrid.js +6 -6
  311. package/modern/DataGrid/useDataGridComponent.js +2 -1
  312. package/modern/DataGrid/useDataGridProps.js +1 -0
  313. package/modern/components/GridColumnHeaders.js +3 -11
  314. package/modern/components/GridDetailPanels.js +4 -0
  315. package/modern/components/GridHeaders.js +53 -0
  316. package/modern/components/GridPinnedRows.js +4 -0
  317. package/modern/components/GridRow.js +159 -96
  318. package/modern/components/GridScrollbarFillerCell.js +39 -0
  319. package/modern/components/base/GridBody.js +2 -116
  320. package/modern/components/base/GridOverlays.js +10 -16
  321. package/modern/components/cell/GridCell.js +65 -369
  322. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  323. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  324. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  325. package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  326. package/modern/components/columnsManagement/GridColumnsManagement.js +256 -0
  327. package/modern/components/columnsManagement/index.js +1 -0
  328. package/modern/components/columnsManagement/utils.js +16 -0
  329. package/modern/components/containers/GridRoot.js +18 -14
  330. package/modern/components/containers/GridRootStyles.js +307 -204
  331. package/modern/components/index.js +1 -0
  332. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  333. package/modern/components/panel/GridColumnsPanel.js +4 -209
  334. package/modern/components/panel/GridPanel.js +3 -4
  335. package/modern/components/panel/filterPanel/GridFilterForm.js +30 -13
  336. package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
  337. package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
  338. package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
  339. package/modern/components/toolbar/GridToolbarExport.js +6 -1
  340. package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
  341. package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
  342. package/modern/components/virtualization/GridBottomContainer.js +25 -0
  343. package/modern/components/virtualization/GridMainContainer.js +20 -0
  344. package/modern/components/virtualization/GridTopContainer.js +35 -0
  345. package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
  346. package/modern/components/virtualization/GridVirtualScroller.js +69 -16
  347. package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  348. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  349. package/modern/constants/defaultGridSlotsComponents.js +8 -3
  350. package/modern/constants/gridClasses.js +1 -1
  351. package/modern/constants/localeTextConstants.js +4 -6
  352. package/modern/hooks/core/gridCoreSelector.js +5 -0
  353. package/modern/hooks/core/useGridApiInitialization.js +3 -0
  354. package/modern/hooks/core/useGridInitialization.js +4 -0
  355. package/modern/hooks/core/useGridRefs.js +13 -0
  356. package/modern/hooks/core/useGridTheme.js +19 -0
  357. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  358. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
  359. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  360. package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  361. package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
  362. package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
  363. package/modern/hooks/features/columns/index.js +2 -1
  364. package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
  365. package/modern/hooks/features/columns/useGridColumns.js +19 -21
  366. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  367. package/modern/hooks/features/dimensions/index.js +1 -0
  368. package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
  369. package/modern/hooks/features/export/serializers/csvSerializer.js +2 -2
  370. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  371. package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
  372. package/modern/hooks/features/focus/useGridFocus.js +3 -3
  373. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  374. package/modern/hooks/features/pagination/useGridPagination.js +3 -5
  375. package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
  376. package/modern/hooks/features/rows/gridRowsUtils.js +8 -5
  377. package/modern/hooks/features/rows/useGridRowsMeta.js +7 -4
  378. package/modern/hooks/features/scroll/useGridScroll.js +8 -9
  379. package/modern/hooks/features/sorting/gridSortingUtils.js +1 -1
  380. package/modern/hooks/features/sorting/useGridSorting.js +15 -10
  381. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  382. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
  383. package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
  384. package/modern/hooks/utils/index.js +4 -1
  385. package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
  386. package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
  387. package/modern/hooks/utils/useResizeObserver.js +36 -0
  388. package/modern/hooks/utils/useRunOnce.js +18 -0
  389. package/modern/index.js +1 -1
  390. package/modern/internals/index.js +9 -7
  391. package/modern/locales/arSD.js +5 -6
  392. package/modern/locales/beBY.js +5 -6
  393. package/modern/locales/bgBG.js +5 -6
  394. package/modern/locales/csCZ.js +5 -6
  395. package/modern/locales/daDK.js +5 -6
  396. package/modern/locales/deDE.js +5 -6
  397. package/modern/locales/elGR.js +5 -6
  398. package/modern/locales/esES.js +5 -6
  399. package/modern/locales/faIR.js +5 -6
  400. package/modern/locales/fiFI.js +5 -6
  401. package/modern/locales/frFR.js +5 -6
  402. package/modern/locales/heIL.js +5 -6
  403. package/modern/locales/hrHR.js +148 -0
  404. package/modern/locales/huHU.js +5 -6
  405. package/modern/locales/index.js +4 -1
  406. package/modern/locales/itIT.js +5 -6
  407. package/modern/locales/jaJP.js +5 -6
  408. package/modern/locales/koKR.js +5 -6
  409. package/modern/locales/nbNO.js +5 -6
  410. package/modern/locales/nlNL.js +5 -6
  411. package/modern/locales/plPL.js +5 -6
  412. package/modern/locales/ptBR.js +5 -6
  413. package/modern/locales/ptPT.js +148 -0
  414. package/modern/locales/roRO.js +5 -6
  415. package/modern/locales/ruRU.js +5 -6
  416. package/modern/locales/skSK.js +5 -6
  417. package/modern/locales/svSE.js +5 -6
  418. package/modern/locales/trTR.js +5 -6
  419. package/modern/locales/ukUA.js +5 -6
  420. package/modern/locales/urPK.js +5 -6
  421. package/modern/locales/viVN.js +5 -6
  422. package/modern/locales/zhCN.js +5 -6
  423. package/modern/locales/zhHK.js +148 -0
  424. package/modern/locales/zhTW.js +5 -6
  425. package/modern/models/index.js +0 -1
  426. package/modern/models/params/index.js +1 -2
  427. package/modern/utils/utils.js +10 -1
  428. package/node/DataGrid/DataGrid.js +6 -6
  429. package/node/DataGrid/useDataGridComponent.js +1 -0
  430. package/node/DataGrid/useDataGridProps.js +1 -0
  431. package/node/components/GridColumnHeaders.js +3 -11
  432. package/node/components/GridDetailPanels.js +10 -0
  433. package/node/components/GridHeaders.js +60 -0
  434. package/node/components/GridPinnedRows.js +10 -0
  435. package/node/components/GridRow.js +157 -94
  436. package/node/components/GridScrollbarFillerCell.js +47 -0
  437. package/node/components/base/GridBody.js +7 -118
  438. package/node/components/base/GridOverlays.js +9 -15
  439. package/node/components/cell/GridCell.js +66 -369
  440. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  441. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
  442. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  443. package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  444. package/node/components/columnsManagement/GridColumnsManagement.js +264 -0
  445. package/node/components/columnsManagement/index.js +16 -0
  446. package/node/components/columnsManagement/utils.js +24 -0
  447. package/node/components/containers/GridRoot.js +17 -14
  448. package/node/components/containers/GridRootStyles.js +175 -72
  449. package/node/components/index.js +11 -0
  450. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  451. package/node/components/panel/GridColumnsPanel.js +4 -208
  452. package/node/components/panel/GridPanel.js +3 -4
  453. package/node/components/panel/filterPanel/GridFilterForm.js +29 -12
  454. package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
  455. package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
  456. package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
  457. package/node/components/toolbar/GridToolbarExport.js +6 -1
  458. package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
  459. package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
  460. package/node/components/virtualization/GridBottomContainer.js +34 -0
  461. package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
  462. package/node/components/virtualization/GridTopContainer.js +44 -0
  463. package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
  464. package/node/components/virtualization/GridVirtualScroller.js +69 -17
  465. package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
  466. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  467. package/node/constants/defaultGridSlotsComponents.js +6 -1
  468. package/node/constants/gridClasses.js +1 -1
  469. package/node/constants/localeTextConstants.js +4 -6
  470. package/node/hooks/core/gridCoreSelector.js +12 -0
  471. package/node/hooks/core/useGridApiInitialization.js +3 -0
  472. package/node/hooks/core/useGridInitialization.js +4 -0
  473. package/node/hooks/core/useGridRefs.js +22 -0
  474. package/node/hooks/core/useGridTheme.js +29 -0
  475. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  476. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
  477. package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  478. package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
  479. package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
  480. package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
  481. package/node/hooks/features/columns/index.js +22 -61
  482. package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
  483. package/node/hooks/features/columns/useGridColumns.js +20 -22
  484. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
  485. package/node/hooks/features/dimensions/index.js +11 -0
  486. package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
  487. package/node/hooks/features/export/serializers/csvSerializer.js +2 -2
  488. package/node/hooks/features/filter/useGridFilter.js +2 -2
  489. package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
  490. package/node/hooks/features/focus/useGridFocus.js +2 -2
  491. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
  492. package/node/hooks/features/pagination/useGridPagination.js +3 -5
  493. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  494. package/node/hooks/features/rows/gridRowsUtils.js +8 -5
  495. package/node/hooks/features/rows/useGridRowsMeta.js +5 -3
  496. package/node/hooks/features/scroll/useGridScroll.js +8 -9
  497. package/node/hooks/features/sorting/gridSortingUtils.js +1 -1
  498. package/node/hooks/features/sorting/useGridSorting.js +15 -10
  499. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  500. package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
  501. package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
  502. package/node/hooks/utils/index.js +36 -0
  503. package/node/hooks/utils/useGridAriaAttributes.js +1 -1
  504. package/node/hooks/utils/useGridNativeEventListener.js +3 -9
  505. package/node/hooks/utils/useResizeObserver.js +44 -0
  506. package/node/hooks/utils/useRunOnce.js +27 -0
  507. package/node/index.js +1 -1
  508. package/node/internals/index.js +86 -71
  509. package/node/locales/arSD.js +5 -6
  510. package/node/locales/beBY.js +5 -6
  511. package/node/locales/bgBG.js +5 -6
  512. package/node/locales/csCZ.js +5 -6
  513. package/node/locales/daDK.js +5 -6
  514. package/node/locales/deDE.js +5 -6
  515. package/node/locales/elGR.js +5 -6
  516. package/node/locales/esES.js +5 -6
  517. package/node/locales/faIR.js +5 -6
  518. package/node/locales/fiFI.js +5 -6
  519. package/node/locales/frFR.js +5 -6
  520. package/node/locales/heIL.js +5 -6
  521. package/node/locales/hrHR.js +154 -0
  522. package/node/locales/huHU.js +5 -6
  523. package/node/locales/index.js +33 -0
  524. package/node/locales/itIT.js +5 -6
  525. package/node/locales/jaJP.js +5 -6
  526. package/node/locales/koKR.js +5 -6
  527. package/node/locales/nbNO.js +5 -6
  528. package/node/locales/nlNL.js +5 -6
  529. package/node/locales/plPL.js +5 -6
  530. package/node/locales/ptBR.js +5 -6
  531. package/node/locales/ptPT.js +154 -0
  532. package/node/locales/roRO.js +5 -6
  533. package/node/locales/ruRU.js +5 -6
  534. package/node/locales/skSK.js +5 -6
  535. package/node/locales/svSE.js +5 -6
  536. package/node/locales/trTR.js +5 -6
  537. package/node/locales/ukUA.js +5 -6
  538. package/node/locales/urPK.js +5 -6
  539. package/node/locales/viVN.js +5 -6
  540. package/node/locales/zhCN.js +5 -6
  541. package/node/locales/zhHK.js +154 -0
  542. package/node/locales/zhTW.js +5 -6
  543. package/node/models/index.js +0 -11
  544. package/node/models/params/index.js +0 -11
  545. package/node/utils/utils.js +11 -1
  546. package/package.json +6 -6
  547. package/utils/utils.d.ts +6 -0
  548. package/utils/utils.js +10 -1
  549. package/components/DataGridVirtualScroller.d.ts +0 -3
  550. package/components/DataGridVirtualScroller.js +0 -35
  551. package/components/containers/GridMainContainer.js +0 -43
  552. package/legacy/components/DataGridVirtualScroller.js +0 -32
  553. package/legacy/components/containers/GridMainContainer.js +0 -45
  554. package/legacy/models/gridRootContainerRef.js +0 -1
  555. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  556. package/models/gridRootContainerRef.d.ts +0 -5
  557. package/models/gridRootContainerRef.js +0 -1
  558. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
  559. package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  560. package/modern/components/DataGridVirtualScroller.js +0 -35
  561. package/modern/components/containers/GridMainContainer.js +0 -42
  562. package/modern/models/gridRootContainerRef.js +0 -1
  563. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  564. package/node/components/DataGridVirtualScroller.js +0 -42
  565. package/node/models/gridRootContainerRef.js +0 -5
  566. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +0 -5
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["selected", "hovered", "rowId", "row", "index", "style", "position", "rowHeight", "className", "visibleColumns", "renderedColumns", "containerWidth", "firstColumnToRender", "lastColumnToRender", "isLastVisible", "focusedCellColumnIndexNotInRange", "isNotVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
3
+ const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "renderedColumns", "pinnedColumns", "dimensions", "firstColumnToRender", "lastColumnToRender", "isFirstVisible", "isLastVisible", "focusedCellColumnIndexNotInRange", "isNotVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
@@ -10,7 +10,7 @@ import { GridEditModes, GridRowModes, GridCellModes } from '../models/gridEditRo
10
10
  import { useGridApiContext } from '../hooks/utils/useGridApiContext';
11
11
  import { getDataGridUtilityClass, gridClasses } from '../constants/gridClasses';
12
12
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
13
- import { gridColumnsTotalWidthSelector } from '../hooks/features/columns/gridColumnsSelector';
13
+ import { gridColumnPositionsSelector } from '../hooks/features/columns/gridColumnsSelector';
14
14
  import { useGridSelector, objectShallowCompare } from '../hooks/utils/useGridSelector';
15
15
  import { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
16
16
  import { findParentElementFromClassName, isEventTargetInPortal } from '../utils/domUtils';
@@ -20,9 +20,10 @@ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelTogg
20
20
  import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector';
21
21
  import { gridRowMaximumTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';
22
22
  import { gridColumnGroupsHeaderMaxDepthSelector } from '../hooks/features/columnGrouping/gridColumnGroupsSelector';
23
- import { randomNumberBetween } from '../utils/utils';
24
- import { GridCellWrapper, GridCellV7 } from './cell/GridCell';
25
23
  import { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors';
24
+ import { randomNumberBetween } from '../utils/utils';
25
+ import { PinnedPosition } from './cell/GridCell';
26
+ import { GridScrollbarFillerCell as ScrollbarFiller } from './GridScrollbarFillerCell';
26
27
  import { jsx as _jsx } from "react/jsx-runtime";
27
28
  import { jsxs as _jsxs } from "react/jsx-runtime";
28
29
  const useUtilityClasses = ownerState => {
@@ -30,12 +31,15 @@ const useUtilityClasses = ownerState => {
30
31
  editable,
31
32
  editing,
32
33
  selected,
34
+ isFirstVisible,
33
35
  isLastVisible,
34
36
  rowHeight,
35
37
  classes
36
38
  } = ownerState;
37
39
  const slots = {
38
- root: ['row', selected && 'selected', editable && 'row--editable', editing && 'row--editing', isLastVisible && 'row--lastVisible', rowHeight === 'auto' && 'row--dynamicHeight']
40
+ root: ['row', selected && 'selected', editable && 'row--editable', editing && 'row--editing', isFirstVisible && 'row--firstVisible', isLastVisible && 'row--lastVisible', rowHeight === 'auto' && 'row--dynamicHeight'],
41
+ pinnedLeft: ['pinnedLeft'],
42
+ pinnedRight: ['pinnedRight']
39
43
  };
40
44
  return composeClasses(slots, getDataGridUtilityClass, classes);
41
45
  };
@@ -45,30 +49,30 @@ function EmptyCell({
45
49
  if (!width) {
46
50
  return null;
47
51
  }
48
- const style = {
49
- width
50
- };
51
52
  return /*#__PURE__*/_jsx("div", {
52
- className: `${gridClasses.cell} ${gridClasses.withBorderColor}`,
53
- style: style
54
- }); // TODO change to .MuiDataGrid-emptyCell or .MuiDataGrid-rowFiller
53
+ role: "presentation",
54
+ className: clsx(gridClasses.cell, gridClasses.cellEmpty),
55
+ style: {
56
+ '--width': `${width}px`
57
+ }
58
+ });
55
59
  }
56
60
  const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
57
61
  const {
58
62
  selected,
59
- hovered,
60
63
  rowId,
61
64
  row,
62
65
  index,
63
66
  style: styleProp,
64
- position,
65
67
  rowHeight,
66
68
  className,
67
69
  visibleColumns,
68
70
  renderedColumns,
69
- containerWidth,
71
+ pinnedColumns,
72
+ dimensions,
70
73
  firstColumnToRender,
71
- isLastVisible = false,
74
+ isFirstVisible,
75
+ isLastVisible,
72
76
  focusedCellColumnIndexNotInRange,
73
77
  isNotVisible,
74
78
  focusedCell,
@@ -84,17 +88,19 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
84
88
  const ref = React.useRef(null);
85
89
  const rootProps = useGridRootProps();
86
90
  const currentPage = useGridVisibleRows(apiRef, rootProps);
87
- const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
88
91
  const sortModel = useGridSelector(apiRef, gridSortModelSelector);
89
92
  const treeDepth = useGridSelector(apiRef, gridRowMaximumTreeDepthSelector);
90
93
  const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
94
+ const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
91
95
  const editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);
92
96
  const handleRef = useForkRef(ref, refProp);
97
+ const rowNode = apiRef.current.getRowNode(rowId);
98
+ const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
93
99
  const ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based
94
100
 
95
101
  const ownerState = {
96
102
  selected,
97
- hovered,
103
+ isFirstVisible,
98
104
  isLastVisible,
99
105
  classes: rootProps.classes,
100
106
  editing: apiRef.current.getRowMode(rowId) === GridRowModes.Edit,
@@ -105,9 +111,9 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
105
111
  React.useLayoutEffect(() => {
106
112
  if (rowHeight === 'auto' && ref.current && typeof ResizeObserver === 'undefined') {
107
113
  // Fallback for IE
108
- apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight, position);
114
+ apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight);
109
115
  }
110
- }, [apiRef, rowHeight, rowId, position]);
116
+ }, [apiRef, rowHeight, rowId]);
111
117
  React.useLayoutEffect(() => {
112
118
  if (currentPage.range) {
113
119
  // The index prop is relative to the rows from all pages. As example, the index prop of the
@@ -129,11 +135,11 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
129
135
  const resizeObserver = new ResizeObserver(entries => {
130
136
  const [entry] = entries;
131
137
  const height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;
132
- apiRef.current.unstable_storeRowHeightMeasurement(rowId, height, position);
138
+ apiRef.current.unstable_storeRowHeightMeasurement(rowId, height);
133
139
  });
134
140
  resizeObserver.observe(rootElement);
135
141
  return () => resizeObserver.disconnect();
136
- }, [apiRef, currentPage.range, index, rowHeight, rowId, position]);
142
+ }, [apiRef, currentPage.range, index, rowHeight, rowId]);
137
143
  const publish = React.useCallback((eventName, propHandler) => event => {
138
144
  // Ignore portal
139
145
  if (isEventTargetInPortal(event)) {
@@ -189,50 +195,12 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
189
195
  slotProps,
190
196
  disableColumnReorder
191
197
  } = rootProps;
192
- const CellComponent = slots.cell === GridCellV7 ? GridCellV7 : GridCellWrapper;
193
198
  const rowReordering = rootProps.rowReordering;
194
- const getCell = (column, cellProps) => {
195
- // when the cell is a reorder cell we are not allowing to reorder the col
196
- // fixes https://github.com/mui/mui-x/issues/11126
197
- const isReorderCell = column.field === '__reorder__';
198
- const isEditingRows = Object.keys(editRowsState).length > 0;
199
- const canReorderColumn = !(disableColumnReorder || column.disableReorder);
200
- const canReorderRow = rowReordering && !sortModel.length && treeDepth <= 1 && !isEditingRows;
201
- const disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow);
202
- const editCellState = editRowsState[rowId]?.[column.field] ?? null;
203
- let cellIsNotVisible = false;
204
- if (focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {
205
- cellIsNotVisible = true;
206
- }
207
- return /*#__PURE__*/_jsx(CellComponent, _extends({
208
- column: column,
209
- width: cellProps.width,
210
- rowId: rowId,
211
- height: rowHeight,
212
- showRightBorder: cellProps.showRightBorder,
213
- align: column.align || 'left',
214
- colIndex: cellProps.indexRelativeToAllColumns,
215
- colSpan: cellProps.colSpan,
216
- disableDragEvents: disableDragEvents,
217
- editCellState: editCellState,
218
- isNotVisible: cellIsNotVisible
219
- }, slotProps?.cell), column.field);
220
- };
221
199
  const sizes = useGridSelector(apiRef, () => _extends({}, apiRef.current.unstable_getRowInternalSizes(rowId)), objectShallowCompare);
222
200
  let minHeight = rowHeight;
223
201
  if (minHeight === 'auto' && sizes) {
224
- let numberOfBaseSizes = 0;
225
- const maximumSize = Object.entries(sizes).reduce((acc, [key, size]) => {
226
- const isBaseHeight = /^base[A-Z]/.test(key);
227
- if (!isBaseHeight) {
228
- return acc;
229
- }
230
- numberOfBaseSizes += 1;
231
- if (size > acc) {
232
- return size;
233
- }
234
- return acc;
235
- }, 0);
202
+ const numberOfBaseSizes = 1;
203
+ const maximumSize = sizes.baseCenter ?? 0;
236
204
  if (maximumSize > 0 && numberOfBaseSizes > 1) {
237
205
  minHeight = maximumSize;
238
206
  }
@@ -277,11 +245,88 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
277
245
  rowClassNames.push(rootProps.getRowClassName(rowParams));
278
246
  }
279
247
  const randomNumber = randomNumberBetween(10000, 20, 80);
280
- const rowNode = apiRef.current.getRowNode(rowId);
248
+ const getCell = (column, indexInSection, indexRelativeToAllColumns, sectionLength, pinnedPosition = PinnedPosition.NONE) => {
249
+ const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
250
+ if (!cellColSpanInfo || cellColSpanInfo.spannedByColSpan) {
251
+ return null;
252
+ }
253
+ let pinnedOffset;
254
+ // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
255
+ // eslint-disable-next-line default-case
256
+ switch (pinnedPosition) {
257
+ case PinnedPosition.LEFT:
258
+ pinnedOffset = columnPositions[indexRelativeToAllColumns];
259
+ break;
260
+ case PinnedPosition.RIGHT:
261
+ pinnedOffset = dimensions.columnsTotalWidth - columnPositions[indexRelativeToAllColumns] - column.computedWidth + scrollbarWidth;
262
+ break;
263
+ case PinnedPosition.NONE:
264
+ pinnedOffset = 0;
265
+ break;
266
+ }
267
+ if (rowNode?.type === 'skeletonRow') {
268
+ const {
269
+ width
270
+ } = cellColSpanInfo.cellProps;
271
+ const contentWidth = Math.round(randomNumber());
272
+ return /*#__PURE__*/_jsx(slots.skeletonCell, {
273
+ width: width,
274
+ contentWidth: contentWidth,
275
+ field: column.field,
276
+ align: column.align
277
+ }, column.field);
278
+ }
279
+ const {
280
+ colSpan,
281
+ width
282
+ } = cellColSpanInfo.cellProps;
283
+ const editCellState = editRowsState[rowId]?.[column.field] ?? null;
284
+
285
+ // when the cell is a reorder cell we are not allowing to reorder the col
286
+ // fixes https://github.com/mui/mui-x/issues/11126
287
+ const isReorderCell = column.field === '__reorder__';
288
+ const isEditingRows = Object.keys(editRowsState).length > 0;
289
+ const canReorderColumn = !(disableColumnReorder || column.disableReorder);
290
+ const canReorderRow = rowReordering && !sortModel.length && treeDepth <= 1 && !isEditingRows;
291
+ const disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow);
292
+ let cellIsNotVisible = false;
293
+ if (focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {
294
+ cellIsNotVisible = true;
295
+ }
296
+ return /*#__PURE__*/_jsx(slots.cell, _extends({
297
+ column: column,
298
+ width: width,
299
+ rowId: rowId,
300
+ height: rowHeight,
301
+ align: column.align || 'left',
302
+ colIndex: indexRelativeToAllColumns,
303
+ colSpan: colSpan,
304
+ disableDragEvents: disableDragEvents,
305
+ editCellState: editCellState,
306
+ isNotVisible: cellIsNotVisible
307
+ }, slotProps?.cell, {
308
+ pinnedOffset: pinnedOffset,
309
+ pinnedPosition: pinnedPosition,
310
+ sectionIndex: indexInSection,
311
+ sectionLength: sectionLength,
312
+ gridHasScrollX: dimensions.hasScrollX
313
+ }), column.field);
314
+ };
315
+
316
+ /* Start of rendering */
317
+
281
318
  if (!rowNode) {
282
319
  return null;
283
320
  }
284
- const rowType = rowNode.type;
321
+ const leftCells = pinnedColumns.left.map((column, i) => {
322
+ const indexRelativeToAllColumns = i;
323
+ return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.left.length, PinnedPosition.LEFT);
324
+ });
325
+ const rightCells = pinnedColumns.right.map((column, i) => {
326
+ const indexRelativeToAllColumns = visibleColumns.length - pinnedColumns.right.length + i;
327
+ return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.right.length, PinnedPosition.RIGHT);
328
+ });
329
+ const middleColumnsLength = visibleColumns.length - pinnedColumns.left.length - pinnedColumns.right.length;
285
330
  const cells = [];
286
331
  for (let i = 0; i < renderedColumns.length; i += 1) {
287
332
  const column = renderedColumns[i];
@@ -293,35 +338,9 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
293
338
  indexRelativeToAllColumns -= 1;
294
339
  }
295
340
  }
296
- const cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
297
- if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
298
- if (rowType !== 'skeletonRow') {
299
- const {
300
- colSpan,
301
- width
302
- } = cellColSpanInfo.cellProps;
303
- const cellProps = {
304
- width,
305
- colSpan,
306
- showRightBorder: rootProps.showCellVerticalBorder,
307
- indexRelativeToAllColumns
308
- };
309
- cells.push(getCell(column, cellProps));
310
- } else {
311
- const {
312
- width
313
- } = cellColSpanInfo.cellProps;
314
- const contentWidth = Math.round(randomNumber());
315
- cells.push( /*#__PURE__*/_jsx(slots.skeletonCell, {
316
- width: width,
317
- contentWidth: contentWidth,
318
- field: column.field,
319
- align: column.align
320
- }, column.field));
321
- }
322
- }
341
+ const indexInSection = indexRelativeToAllColumns - pinnedColumns.left.length;
342
+ cells.push(getCell(column, indexInSection, indexRelativeToAllColumns, middleColumnsLength));
323
343
  }
324
- const emptyCellWidth = containerWidth - columnsTotalWidth;
325
344
  const eventHandlers = row ? {
326
345
  onClick: publishClick,
327
346
  onDoubleClick: publish('rowDoubleClick', onDoubleClick),
@@ -330,18 +349,27 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
330
349
  onMouseOut: publish('rowMouseOut', onMouseOut),
331
350
  onMouseOver: publish('rowMouseOver', onMouseOver)
332
351
  } : null;
352
+ const expandedWidth = dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth - scrollbarWidth;
353
+ const emptyCellWidth = Math.max(0, expandedWidth);
333
354
  return /*#__PURE__*/_jsxs("div", _extends({
334
355
  ref: handleRef,
335
356
  "data-id": rowId,
336
357
  "data-rowindex": index,
337
358
  role: "row",
338
- className: clsx(...rowClassNames, classes.root, className, hovered && 'Mui-hovered'),
359
+ className: clsx(...rowClassNames, classes.root, className),
339
360
  "aria-rowindex": ariaRowIndex,
340
361
  "aria-selected": selected,
341
362
  style: style
342
363
  }, eventHandlers, other, {
343
- children: [cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {
364
+ children: [leftCells, cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {
344
365
  width: emptyCellWidth
366
+ }), rightCells.length > 0 && /*#__PURE__*/_jsx("div", {
367
+ role: "presentation",
368
+ style: {
369
+ flex: '1'
370
+ }
371
+ }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/_jsx(ScrollbarFiller, {
372
+ pinnedRight: pinnedColumns.right.length > 0
345
373
  })]
346
374
  }));
347
375
  });
@@ -350,7 +378,41 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
350
378
  // | These PropTypes are generated from the TypeScript type definitions |
351
379
  // | To update them edit the TypeScript types and run "yarn proptypes" |
352
380
  // ----------------------------------------------------------------------
353
- containerWidth: PropTypes.number.isRequired,
381
+ dimensions: PropTypes.shape({
382
+ bottomContainerHeight: PropTypes.number.isRequired,
383
+ columnsTotalWidth: PropTypes.number.isRequired,
384
+ contentSize: PropTypes.shape({
385
+ height: PropTypes.number.isRequired,
386
+ width: PropTypes.number.isRequired
387
+ }).isRequired,
388
+ hasScrollX: PropTypes.bool.isRequired,
389
+ hasScrollY: PropTypes.bool.isRequired,
390
+ headerHeight: PropTypes.number.isRequired,
391
+ headersTotalHeight: PropTypes.number.isRequired,
392
+ isReady: PropTypes.bool.isRequired,
393
+ leftPinnedWidth: PropTypes.number.isRequired,
394
+ minimumSize: PropTypes.shape({
395
+ height: PropTypes.number.isRequired,
396
+ width: PropTypes.number.isRequired
397
+ }).isRequired,
398
+ rightPinnedWidth: PropTypes.number.isRequired,
399
+ root: PropTypes.shape({
400
+ height: PropTypes.number.isRequired,
401
+ width: PropTypes.number.isRequired
402
+ }).isRequired,
403
+ rowHeight: PropTypes.number.isRequired,
404
+ rowWidth: PropTypes.number.isRequired,
405
+ scrollbarSize: PropTypes.number.isRequired,
406
+ topContainerHeight: PropTypes.number.isRequired,
407
+ viewportInnerSize: PropTypes.shape({
408
+ height: PropTypes.number.isRequired,
409
+ width: PropTypes.number.isRequired
410
+ }).isRequired,
411
+ viewportOuterSize: PropTypes.shape({
412
+ height: PropTypes.number.isRequired,
413
+ width: PropTypes.number.isRequired
414
+ }).isRequired
415
+ }).isRequired,
354
416
  firstColumnToRender: PropTypes.number.isRequired,
355
417
  /**
356
418
  * Determines which cell has focus.
@@ -363,14 +425,15 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
363
425
  * If some rows above have expanded children, this index also take those children into account.
364
426
  */
365
427
  index: PropTypes.number.isRequired,
366
- isLastVisible: PropTypes.bool,
428
+ isFirstVisible: PropTypes.bool.isRequired,
429
+ isLastVisible: PropTypes.bool.isRequired,
367
430
  isNotVisible: PropTypes.bool,
368
431
  lastColumnToRender: PropTypes.number.isRequired,
369
432
  onClick: PropTypes.func,
370
433
  onDoubleClick: PropTypes.func,
371
434
  onMouseEnter: PropTypes.func,
372
435
  onMouseLeave: PropTypes.func,
373
- position: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
436
+ pinnedColumns: PropTypes.object.isRequired,
374
437
  renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,
375
438
  row: PropTypes.object,
376
439
  rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
@@ -0,0 +1,39 @@
1
+ import * as React from 'react';
2
+ import clsx from 'clsx';
3
+ import { styled } from '@mui/material/styles';
4
+ import { getDataGridUtilityClass as getClassName } from '../constants';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const classes = {
7
+ root: getClassName('scrollbarFiller'),
8
+ header: getClassName('scrollbarFiller--header'),
9
+ borderTop: getClassName('scrollbarFiller--borderTop'),
10
+ pinnedRight: getClassName('scrollbarFiller--pinnedRight')
11
+ };
12
+ const Style = styled('div')({
13
+ minWidth: 'calc(var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize))',
14
+ alignSelf: 'stretch',
15
+ [`&.${classes.borderTop}`]: {
16
+ borderTop: '1px solid var(--DataGrid-rowBorderColor)'
17
+ },
18
+ [`&.${classes.pinnedRight}`]: {
19
+ backgroundColor: 'var(--DataGrid-pinnedBackground)'
20
+ },
21
+ [`&.${classes.pinnedRight}:not(.${classes.header})`]: {
22
+ position: 'sticky',
23
+ right: 0
24
+ },
25
+ [`&:not(.${classes.header}):not(.${classes.pinnedRight})`]: {
26
+ transform: 'translate3d(var(--DataGrid-offsetLeft), 0, 0)'
27
+ }
28
+ });
29
+ function GridScrollbarFillerCell({
30
+ header,
31
+ borderTop = true,
32
+ pinnedRight
33
+ }) {
34
+ return /*#__PURE__*/_jsx(Style, {
35
+ role: "presentation",
36
+ className: clsx(classes.root, header && classes.header, borderTop && classes.borderTop, pinnedRight && classes.pinnedRight)
37
+ });
38
+ }
39
+ export { GridScrollbarFillerCell };
@@ -1,116 +1,2 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import * as React from 'react';
3
- import PropTypes from 'prop-types';
4
- import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
5
- import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';
6
- import { useGridSelector } from '../../hooks/utils/useGridSelector';
7
- import { GridMainContainer } from '../containers/GridMainContainer';
8
- import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
9
- import { gridColumnPositionsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector } from '../../hooks/features/columns/gridColumnsSelector';
10
- import { gridFilterActiveItemsLookupSelector } from '../../hooks/features/filter/gridFilterSelector';
11
- import { gridSortColumnLookupSelector } from '../../hooks/features/sorting/gridSortingSelector';
12
- import { gridTabIndexColumnHeaderSelector, gridTabIndexCellSelector, gridFocusColumnHeaderSelector, unstable_gridTabIndexColumnGroupHeaderSelector, unstable_gridFocusColumnGroupHeaderSelector } from '../../hooks/features/focus/gridFocusStateSelector';
13
- import { gridDensityFactorSelector } from '../../hooks/features/density/densitySelector';
14
- import { gridColumnGroupsHeaderMaxDepthSelector, gridColumnGroupsHeaderStructureSelector } from '../../hooks/features/columnGrouping/gridColumnGroupsSelector';
15
- import { gridColumnMenuSelector } from '../../hooks/features/columnMenu/columnMenuSelector';
16
- import { jsx as _jsx } from "react/jsx-runtime";
17
- import { jsxs as _jsxs } from "react/jsx-runtime";
18
- function GridBody(props) {
19
- const {
20
- VirtualScrollerComponent,
21
- ColumnHeadersProps,
22
- children
23
- } = props;
24
- const apiRef = useGridPrivateApiContext();
25
- const rootProps = useGridRootProps();
26
- const rootRef = React.useRef(null);
27
- const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
28
- const filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
29
- const sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
30
- const columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
31
- const columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
32
- const cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);
33
- const columnGroupHeaderTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnGroupHeaderSelector);
34
- const columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
35
- const columnGroupHeaderFocus = useGridSelector(apiRef, unstable_gridFocusColumnGroupHeaderSelector);
36
- const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
37
- const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
38
- const columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
39
- const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
40
- const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
41
- const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
42
- useEnhancedEffect(() => {
43
- apiRef.current.computeSizeAndPublishResizeEvent();
44
- const elementToObserve = rootRef.current;
45
- if (typeof ResizeObserver === 'undefined') {
46
- return () => {};
47
- }
48
- let animationFrame;
49
- const observer = new ResizeObserver(() => {
50
- // See https://github.com/mui/mui-x/issues/8733
51
- animationFrame = requestAnimationFrame(() => {
52
- apiRef.current.computeSizeAndPublishResizeEvent();
53
- });
54
- });
55
- if (elementToObserve) {
56
- observer.observe(elementToObserve);
57
- }
58
- return () => {
59
- if (animationFrame) {
60
- window.cancelAnimationFrame(animationFrame);
61
- }
62
- if (elementToObserve) {
63
- observer.unobserve(elementToObserve);
64
- }
65
- };
66
- }, [apiRef]);
67
- const columnHeadersRef = React.useRef(null);
68
- const columnsContainerRef = React.useRef(null);
69
- const virtualScrollerRef = React.useRef(null);
70
- apiRef.current.register('private', {
71
- columnHeadersContainerElementRef: columnsContainerRef,
72
- columnHeadersElementRef: columnHeadersRef,
73
- virtualScrollerRef,
74
- mainElementRef: rootRef
75
- });
76
- const hasDimensions = !!apiRef.current.getRootDimensions();
77
- return /*#__PURE__*/_jsxs(GridMainContainer, {
78
- ref: rootRef,
79
- children: [/*#__PURE__*/_jsx(rootProps.slots.columnHeaders, _extends({
80
- ref: columnsContainerRef,
81
- innerRef: columnHeadersRef,
82
- visibleColumns: visibleColumns,
83
- filterColumnLookup: filterColumnLookup,
84
- sortColumnLookup: sortColumnLookup,
85
- columnPositions: columnPositions,
86
- columnHeaderTabIndexState: columnHeaderTabIndexState,
87
- columnGroupHeaderTabIndexState: columnGroupHeaderTabIndexState,
88
- columnHeaderFocus: columnHeaderFocus,
89
- columnGroupHeaderFocus: columnGroupHeaderFocus,
90
- densityFactor: densityFactor,
91
- headerGroupingMaxDepth: headerGroupingMaxDepth,
92
- columnMenuState: columnMenuState,
93
- columnVisibility: columnVisibility,
94
- columnGroupsHeaderStructure: columnGroupsHeaderStructure,
95
- hasOtherElementInTabSequence: hasOtherElementInTabSequence
96
- }, ColumnHeadersProps)), hasDimensions && /*#__PURE__*/_jsx(VirtualScrollerComponent
97
- // The content is only rendered after dimensions are computed because
98
- // the lazy-loading hook is listening to `renderedRowsIntervalChange`,
99
- // but only does something if the dimensions are also available.
100
- // If this event is published while dimensions haven't been computed,
101
- // the `onFetchRows` prop won't be called during mount.
102
- , {
103
- ref: virtualScrollerRef
104
- }), children]
105
- });
106
- }
107
- process.env.NODE_ENV !== "production" ? GridBody.propTypes = {
108
- // ----------------------------- Warning --------------------------------
109
- // | These PropTypes are generated from the TypeScript type definitions |
110
- // | To update them edit the TypeScript types and run "yarn proptypes" |
111
- // ----------------------------------------------------------------------
112
- children: PropTypes.node,
113
- ColumnHeadersProps: PropTypes.object,
114
- VirtualScrollerComponent: PropTypes.elementType.isRequired
115
- } : void 0;
116
- export { GridBody };
1
+ import { GridVirtualScroller } from '../virtualization/GridVirtualScroller';
2
+ export { GridVirtualScroller as GridBody };
@@ -2,13 +2,15 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { styled } from '@mui/system';
5
- import { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
5
+ import { unstable_composeClasses as composeClasses } from '@mui/utils';
6
6
  import clsx from 'clsx';
7
7
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
8
8
  import { gridExpandedRowCountSelector } from '../../hooks/features/filter/gridFilterSelector';
9
9
  import { gridRowCountSelector, gridRowsLoadingSelector } from '../../hooks/features/rows/gridRowsSelector';
10
+ import { gridDimensionsSelector } from '../../hooks/features/dimensions';
10
11
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
11
12
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
13
+ import { useGridVisibleRows } from '../../hooks/utils/useGridVisibleRows';
12
14
  import { getMinimalContentHeight } from '../../hooks/features/rows/gridRowsUtils';
13
15
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
14
16
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -22,7 +24,7 @@ const GridOverlayWrapperRoot = styled('div', {
22
24
  }) => ({
23
25
  position: 'sticky',
24
26
  // To stay in place while scrolling
25
- top: 0,
27
+ top: 'var(--DataGrid-headersTotalHeight)',
26
28
  left: 0,
27
29
  width: 0,
28
30
  // To stay above the content instead of shifting it down
@@ -50,23 +52,15 @@ const useUtilityClasses = ownerState => {
50
52
  function GridOverlayWrapper(props) {
51
53
  const apiRef = useGridApiContext();
52
54
  const rootProps = useGridRootProps();
53
- const [viewportInnerSize, setViewportInnerSize] = React.useState(() => apiRef.current.getRootDimensions()?.viewportInnerSize ?? null);
54
- const handleViewportSizeChange = React.useCallback(() => {
55
- setViewportInnerSize(apiRef.current.getRootDimensions()?.viewportInnerSize ?? null);
56
- }, [apiRef]);
57
- useEnhancedEffect(() => {
58
- return apiRef.current.subscribeEvent('viewportInnerSizeChange', handleViewportSizeChange);
59
- }, [apiRef, handleViewportSizeChange]);
60
- let height = viewportInnerSize?.height ?? 0;
61
- if (rootProps.autoHeight && height === 0) {
62
- height = getMinimalContentHeight(apiRef, rootProps.rowHeight); // Give room to show the overlay when there no rows.
55
+ const currentPage = useGridVisibleRows(apiRef, rootProps);
56
+ const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
57
+ let height = dimensions.viewportOuterSize.height - dimensions.headersTotalHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
58
+ if (rootProps.autoHeight && currentPage.rows.length === 0 || height === 0) {
59
+ height = getMinimalContentHeight(apiRef);
63
60
  }
64
61
  const classes = useUtilityClasses(_extends({}, props, {
65
62
  classes: rootProps.classes
66
63
  }));
67
- if (!viewportInnerSize) {
68
- return null;
69
- }
70
64
  return /*#__PURE__*/_jsx(GridOverlayWrapperRoot, {
71
65
  className: clsx(classes.root),
72
66
  overlayType: props.overlayType,
@@ -74,7 +68,7 @@ function GridOverlayWrapper(props) {
74
68
  className: clsx(classes.inner),
75
69
  style: {
76
70
  height,
77
- width: viewportInnerSize?.width ?? 0
71
+ width: dimensions.viewportOuterSize.width
78
72
  }
79
73
  }, props))
80
74
  });