@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
@@ -2,7 +2,7 @@ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
- var _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"];
5
+ var _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"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import clsx from 'clsx';
@@ -12,7 +12,7 @@ import { GridEditModes, GridRowModes, GridCellModes } from '../models/gridEditRo
12
12
  import { useGridApiContext } from '../hooks/utils/useGridApiContext';
13
13
  import { getDataGridUtilityClass, gridClasses } from '../constants/gridClasses';
14
14
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
15
- import { gridColumnsTotalWidthSelector } from '../hooks/features/columns/gridColumnsSelector';
15
+ import { gridColumnPositionsSelector } from '../hooks/features/columns/gridColumnsSelector';
16
16
  import { useGridSelector, objectShallowCompare } from '../hooks/utils/useGridSelector';
17
17
  import { useGridVisibleRows } from '../hooks/utils/useGridVisibleRows';
18
18
  import { findParentElementFromClassName, isEventTargetInPortal } from '../utils/domUtils';
@@ -22,20 +22,24 @@ import { GRID_DETAIL_PANEL_TOGGLE_FIELD } from '../constants/gridDetailPanelTogg
22
22
  import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSelector';
23
23
  import { gridRowMaximumTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';
24
24
  import { gridColumnGroupsHeaderMaxDepthSelector } from '../hooks/features/columnGrouping/gridColumnGroupsSelector';
25
- import { randomNumberBetween } from '../utils/utils';
26
- import { GridCellWrapper, GridCellV7 } from './cell/GridCell';
27
25
  import { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors';
26
+ import { randomNumberBetween } from '../utils/utils';
27
+ import { PinnedPosition } from './cell/GridCell';
28
+ import { GridScrollbarFillerCell as ScrollbarFiller } from './GridScrollbarFillerCell';
28
29
  import { jsx as _jsx } from "react/jsx-runtime";
29
30
  import { jsxs as _jsxs } from "react/jsx-runtime";
30
31
  var useUtilityClasses = function useUtilityClasses(ownerState) {
31
32
  var editable = ownerState.editable,
32
33
  editing = ownerState.editing,
33
34
  selected = ownerState.selected,
35
+ isFirstVisible = ownerState.isFirstVisible,
34
36
  isLastVisible = ownerState.isLastVisible,
35
37
  rowHeight = ownerState.rowHeight,
36
38
  classes = ownerState.classes;
37
39
  var 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
  };
@@ -44,31 +48,30 @@ function EmptyCell(_ref) {
44
48
  if (!width) {
45
49
  return null;
46
50
  }
47
- var style = {
48
- width: width
49
- };
50
51
  return /*#__PURE__*/_jsx("div", {
51
- className: "".concat(gridClasses.cell, " ").concat(gridClasses.withBorderColor),
52
- style: style
53
- }); // TODO change to .MuiDataGrid-emptyCell or .MuiDataGrid-rowFiller
52
+ role: "presentation",
53
+ className: clsx(gridClasses.cell, gridClasses.cellEmpty),
54
+ style: {
55
+ '--width': "".concat(width, "px")
56
+ }
57
+ });
54
58
  }
55
59
  var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
56
60
  var selected = props.selected,
57
- hovered = props.hovered,
58
61
  rowId = props.rowId,
59
62
  row = props.row,
60
63
  index = props.index,
61
64
  styleProp = props.style,
62
- position = props.position,
63
65
  rowHeight = props.rowHeight,
64
66
  className = props.className,
65
67
  visibleColumns = props.visibleColumns,
66
68
  renderedColumns = props.renderedColumns,
67
- containerWidth = props.containerWidth,
69
+ pinnedColumns = props.pinnedColumns,
70
+ dimensions = props.dimensions,
68
71
  firstColumnToRender = props.firstColumnToRender,
69
72
  lastColumnToRender = props.lastColumnToRender,
70
- _props$isLastVisible = props.isLastVisible,
71
- isLastVisible = _props$isLastVisible === void 0 ? false : _props$isLastVisible,
73
+ isFirstVisible = props.isFirstVisible,
74
+ isLastVisible = props.isLastVisible,
72
75
  focusedCellColumnIndexNotInRange = props.focusedCellColumnIndexNotInRange,
73
76
  isNotVisible = props.isNotVisible,
74
77
  focusedCell = props.focusedCell,
@@ -84,17 +87,19 @@ var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
84
87
  var ref = React.useRef(null);
85
88
  var rootProps = useGridRootProps();
86
89
  var currentPage = useGridVisibleRows(apiRef, rootProps);
87
- var columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
88
90
  var sortModel = useGridSelector(apiRef, gridSortModelSelector);
89
91
  var treeDepth = useGridSelector(apiRef, gridRowMaximumTreeDepthSelector);
90
92
  var headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
93
+ var columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
91
94
  var editRowsState = useGridSelector(apiRef, gridEditRowsStateSelector);
92
95
  var handleRef = useForkRef(ref, refProp);
96
+ var rowNode = apiRef.current.getRowNode(rowId);
97
+ var scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
93
98
  var ariaRowIndex = index + headerGroupingMaxDepth + 2; // 1 for the header row and 1 as it's 1-based
94
99
 
95
100
  var ownerState = {
96
101
  selected: selected,
97
- hovered: hovered,
102
+ isFirstVisible: isFirstVisible,
98
103
  isLastVisible: isLastVisible,
99
104
  classes: rootProps.classes,
100
105
  editing: apiRef.current.getRowMode(rowId) === GridRowModes.Edit,
@@ -105,9 +110,9 @@ var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
105
110
  React.useLayoutEffect(function () {
106
111
  if (rowHeight === 'auto' && ref.current && typeof ResizeObserver === 'undefined') {
107
112
  // Fallback for IE
108
- apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight, position);
113
+ apiRef.current.unstable_storeRowHeightMeasurement(rowId, ref.current.clientHeight);
109
114
  }
110
- }, [apiRef, rowHeight, rowId, position]);
115
+ }, [apiRef, rowHeight, rowId]);
111
116
  React.useLayoutEffect(function () {
112
117
  if (currentPage.range) {
113
118
  // The index prop is relative to the rows from all pages. As example, the index prop of the
@@ -130,13 +135,13 @@ var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
130
135
  var _entries = _slicedToArray(entries, 1),
131
136
  entry = _entries[0];
132
137
  var height = entry.borderBoxSize && entry.borderBoxSize.length > 0 ? entry.borderBoxSize[0].blockSize : entry.contentRect.height;
133
- apiRef.current.unstable_storeRowHeightMeasurement(rowId, height, position);
138
+ apiRef.current.unstable_storeRowHeightMeasurement(rowId, height);
134
139
  });
135
140
  resizeObserver.observe(rootElement);
136
141
  return function () {
137
142
  return resizeObserver.disconnect();
138
143
  };
139
- }, [apiRef, currentPage.range, index, rowHeight, rowId, position]);
144
+ }, [apiRef, currentPage.range, index, rowHeight, rowId]);
140
145
  var publish = React.useCallback(function (eventName, propHandler) {
141
146
  return function (event) {
142
147
  // Ignore portal
@@ -192,56 +197,15 @@ var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
192
197
  var slots = rootProps.slots,
193
198
  slotProps = rootProps.slotProps,
194
199
  disableColumnReorder = rootProps.disableColumnReorder;
195
- var CellComponent = slots.cell === GridCellV7 ? GridCellV7 : GridCellWrapper;
196
200
  var rowReordering = rootProps.rowReordering;
197
- var getCell = function getCell(column, cellProps) {
198
- var _editRowsState$rowId$, _editRowsState$rowId;
199
- // when the cell is a reorder cell we are not allowing to reorder the col
200
- // fixes https://github.com/mui/mui-x/issues/11126
201
- var isReorderCell = column.field === '__reorder__';
202
- var isEditingRows = Object.keys(editRowsState).length > 0;
203
- var canReorderColumn = !(disableColumnReorder || column.disableReorder);
204
- var canReorderRow = rowReordering && !sortModel.length && treeDepth <= 1 && !isEditingRows;
205
- var disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow);
206
- var editCellState = (_editRowsState$rowId$ = (_editRowsState$rowId = editRowsState[rowId]) == null ? void 0 : _editRowsState$rowId[column.field]) != null ? _editRowsState$rowId$ : null;
207
- var cellIsNotVisible = false;
208
- if (focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {
209
- cellIsNotVisible = true;
210
- }
211
- return /*#__PURE__*/_jsx(CellComponent, _extends({
212
- column: column,
213
- width: cellProps.width,
214
- rowId: rowId,
215
- height: rowHeight,
216
- showRightBorder: cellProps.showRightBorder,
217
- align: column.align || 'left',
218
- colIndex: cellProps.indexRelativeToAllColumns,
219
- colSpan: cellProps.colSpan,
220
- disableDragEvents: disableDragEvents,
221
- editCellState: editCellState,
222
- isNotVisible: cellIsNotVisible
223
- }, slotProps == null ? void 0 : slotProps.cell), column.field);
224
- };
225
201
  var sizes = useGridSelector(apiRef, function () {
226
202
  return _extends({}, apiRef.current.unstable_getRowInternalSizes(rowId));
227
203
  }, objectShallowCompare);
228
204
  var minHeight = rowHeight;
229
205
  if (minHeight === 'auto' && sizes) {
230
- var numberOfBaseSizes = 0;
231
- var maximumSize = Object.entries(sizes).reduce(function (acc, _ref2) {
232
- var _ref3 = _slicedToArray(_ref2, 2),
233
- key = _ref3[0],
234
- size = _ref3[1];
235
- var isBaseHeight = /^base[A-Z]/.test(key);
236
- if (!isBaseHeight) {
237
- return acc;
238
- }
239
- numberOfBaseSizes += 1;
240
- if (size > acc) {
241
- return size;
242
- }
243
- return acc;
244
- }, 0);
206
+ var _sizes$baseCenter;
207
+ var numberOfBaseSizes = 1;
208
+ var maximumSize = (_sizes$baseCenter = sizes.baseCenter) != null ? _sizes$baseCenter : 0;
245
209
  if (maximumSize > 0 && numberOfBaseSizes > 1) {
246
210
  minHeight = maximumSize;
247
211
  }
@@ -287,11 +251,87 @@ var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
287
251
  rowClassNames.push(rootProps.getRowClassName(rowParams));
288
252
  }
289
253
  var randomNumber = randomNumberBetween(10000, 20, 80);
290
- var rowNode = apiRef.current.getRowNode(rowId);
254
+ var getCell = function getCell(column, indexInSection, indexRelativeToAllColumns, sectionLength) {
255
+ var _editRowsState$rowId$, _editRowsState$rowId;
256
+ var pinnedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : PinnedPosition.NONE;
257
+ var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
258
+ if (!cellColSpanInfo || cellColSpanInfo.spannedByColSpan) {
259
+ return null;
260
+ }
261
+ var pinnedOffset;
262
+ // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
263
+ // eslint-disable-next-line default-case
264
+ switch (pinnedPosition) {
265
+ case PinnedPosition.LEFT:
266
+ pinnedOffset = columnPositions[indexRelativeToAllColumns];
267
+ break;
268
+ case PinnedPosition.RIGHT:
269
+ pinnedOffset = dimensions.columnsTotalWidth - columnPositions[indexRelativeToAllColumns] - column.computedWidth + scrollbarWidth;
270
+ break;
271
+ case PinnedPosition.NONE:
272
+ pinnedOffset = 0;
273
+ break;
274
+ }
275
+ if ((rowNode == null ? void 0 : rowNode.type) === 'skeletonRow') {
276
+ var _width = cellColSpanInfo.cellProps.width;
277
+ var contentWidth = Math.round(randomNumber());
278
+ return /*#__PURE__*/_jsx(slots.skeletonCell, {
279
+ width: _width,
280
+ contentWidth: contentWidth,
281
+ field: column.field,
282
+ align: column.align
283
+ }, column.field);
284
+ }
285
+ var _cellColSpanInfo$cell = cellColSpanInfo.cellProps,
286
+ colSpan = _cellColSpanInfo$cell.colSpan,
287
+ width = _cellColSpanInfo$cell.width;
288
+ var editCellState = (_editRowsState$rowId$ = (_editRowsState$rowId = editRowsState[rowId]) == null ? void 0 : _editRowsState$rowId[column.field]) != null ? _editRowsState$rowId$ : null;
289
+
290
+ // when the cell is a reorder cell we are not allowing to reorder the col
291
+ // fixes https://github.com/mui/mui-x/issues/11126
292
+ var isReorderCell = column.field === '__reorder__';
293
+ var isEditingRows = Object.keys(editRowsState).length > 0;
294
+ var canReorderColumn = !(disableColumnReorder || column.disableReorder);
295
+ var canReorderRow = rowReordering && !sortModel.length && treeDepth <= 1 && !isEditingRows;
296
+ var disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow);
297
+ var cellIsNotVisible = false;
298
+ if (focusedCellColumnIndexNotInRange !== undefined && visibleColumns[focusedCellColumnIndexNotInRange].field === column.field) {
299
+ cellIsNotVisible = true;
300
+ }
301
+ return /*#__PURE__*/_jsx(slots.cell, _extends({
302
+ column: column,
303
+ width: width,
304
+ rowId: rowId,
305
+ height: rowHeight,
306
+ align: column.align || 'left',
307
+ colIndex: indexRelativeToAllColumns,
308
+ colSpan: colSpan,
309
+ disableDragEvents: disableDragEvents,
310
+ editCellState: editCellState,
311
+ isNotVisible: cellIsNotVisible
312
+ }, slotProps == null ? void 0 : slotProps.cell, {
313
+ pinnedOffset: pinnedOffset,
314
+ pinnedPosition: pinnedPosition,
315
+ sectionIndex: indexInSection,
316
+ sectionLength: sectionLength,
317
+ gridHasScrollX: dimensions.hasScrollX
318
+ }), column.field);
319
+ };
320
+
321
+ /* Start of rendering */
322
+
291
323
  if (!rowNode) {
292
324
  return null;
293
325
  }
294
- var rowType = rowNode.type;
326
+ var leftCells = pinnedColumns.left.map(function (column, i) {
327
+ var indexRelativeToAllColumns = i;
328
+ return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.left.length, PinnedPosition.LEFT);
329
+ });
330
+ var rightCells = pinnedColumns.right.map(function (column, i) {
331
+ var indexRelativeToAllColumns = visibleColumns.length - pinnedColumns.right.length + i;
332
+ return getCell(column, i, indexRelativeToAllColumns, pinnedColumns.right.length, PinnedPosition.RIGHT);
333
+ });
334
+ var middleColumnsLength = visibleColumns.length - pinnedColumns.left.length - pinnedColumns.right.length;
295
335
  var cells = [];
296
336
  for (var i = 0; i < renderedColumns.length; i += 1) {
297
337
  var column = renderedColumns[i];
@@ -303,32 +343,9 @@ var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
303
343
  indexRelativeToAllColumns -= 1;
304
344
  }
305
345
  }
306
- var cellColSpanInfo = apiRef.current.unstable_getCellColSpanInfo(rowId, indexRelativeToAllColumns);
307
- if (cellColSpanInfo && !cellColSpanInfo.spannedByColSpan) {
308
- if (rowType !== 'skeletonRow') {
309
- var _cellColSpanInfo$cell = cellColSpanInfo.cellProps,
310
- colSpan = _cellColSpanInfo$cell.colSpan,
311
- width = _cellColSpanInfo$cell.width;
312
- var cellProps = {
313
- width: width,
314
- colSpan: colSpan,
315
- showRightBorder: rootProps.showCellVerticalBorder,
316
- indexRelativeToAllColumns: indexRelativeToAllColumns
317
- };
318
- cells.push(getCell(column, cellProps));
319
- } else {
320
- var _width = cellColSpanInfo.cellProps.width;
321
- var contentWidth = Math.round(randomNumber());
322
- cells.push( /*#__PURE__*/_jsx(slots.skeletonCell, {
323
- width: _width,
324
- contentWidth: contentWidth,
325
- field: column.field,
326
- align: column.align
327
- }, column.field));
328
- }
329
- }
346
+ var indexInSection = indexRelativeToAllColumns - pinnedColumns.left.length;
347
+ cells.push(getCell(column, indexInSection, indexRelativeToAllColumns, middleColumnsLength));
330
348
  }
331
- var emptyCellWidth = containerWidth - columnsTotalWidth;
332
349
  var eventHandlers = row ? {
333
350
  onClick: publishClick,
334
351
  onDoubleClick: publish('rowDoubleClick', onDoubleClick),
@@ -337,18 +354,27 @@ var GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
337
354
  onMouseOut: publish('rowMouseOut', onMouseOut),
338
355
  onMouseOver: publish('rowMouseOver', onMouseOver)
339
356
  } : null;
357
+ var expandedWidth = dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth - scrollbarWidth;
358
+ var emptyCellWidth = Math.max(0, expandedWidth);
340
359
  return /*#__PURE__*/_jsxs("div", _extends({
341
360
  ref: handleRef,
342
361
  "data-id": rowId,
343
362
  "data-rowindex": index,
344
363
  role: "row",
345
- className: clsx.apply(void 0, _toConsumableArray(rowClassNames).concat([classes.root, className, hovered && 'Mui-hovered'])),
364
+ className: clsx.apply(void 0, _toConsumableArray(rowClassNames).concat([classes.root, className])),
346
365
  "aria-rowindex": ariaRowIndex,
347
366
  "aria-selected": selected,
348
367
  style: style
349
368
  }, eventHandlers, other, {
350
- children: [cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {
369
+ children: [leftCells, cells, emptyCellWidth > 0 && /*#__PURE__*/_jsx(EmptyCell, {
351
370
  width: emptyCellWidth
371
+ }), rightCells.length > 0 && /*#__PURE__*/_jsx("div", {
372
+ role: "presentation",
373
+ style: {
374
+ flex: '1'
375
+ }
376
+ }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/_jsx(ScrollbarFiller, {
377
+ pinnedRight: pinnedColumns.right.length > 0
352
378
  })]
353
379
  }));
354
380
  });
@@ -357,7 +383,41 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
357
383
  // | These PropTypes are generated from the TypeScript type definitions |
358
384
  // | To update them edit the TypeScript types and run "yarn proptypes" |
359
385
  // ----------------------------------------------------------------------
360
- containerWidth: PropTypes.number.isRequired,
386
+ dimensions: PropTypes.shape({
387
+ bottomContainerHeight: PropTypes.number.isRequired,
388
+ columnsTotalWidth: PropTypes.number.isRequired,
389
+ contentSize: PropTypes.shape({
390
+ height: PropTypes.number.isRequired,
391
+ width: PropTypes.number.isRequired
392
+ }).isRequired,
393
+ hasScrollX: PropTypes.bool.isRequired,
394
+ hasScrollY: PropTypes.bool.isRequired,
395
+ headerHeight: PropTypes.number.isRequired,
396
+ headersTotalHeight: PropTypes.number.isRequired,
397
+ isReady: PropTypes.bool.isRequired,
398
+ leftPinnedWidth: PropTypes.number.isRequired,
399
+ minimumSize: PropTypes.shape({
400
+ height: PropTypes.number.isRequired,
401
+ width: PropTypes.number.isRequired
402
+ }).isRequired,
403
+ rightPinnedWidth: PropTypes.number.isRequired,
404
+ root: PropTypes.shape({
405
+ height: PropTypes.number.isRequired,
406
+ width: PropTypes.number.isRequired
407
+ }).isRequired,
408
+ rowHeight: PropTypes.number.isRequired,
409
+ rowWidth: PropTypes.number.isRequired,
410
+ scrollbarSize: PropTypes.number.isRequired,
411
+ topContainerHeight: PropTypes.number.isRequired,
412
+ viewportInnerSize: PropTypes.shape({
413
+ height: PropTypes.number.isRequired,
414
+ width: PropTypes.number.isRequired
415
+ }).isRequired,
416
+ viewportOuterSize: PropTypes.shape({
417
+ height: PropTypes.number.isRequired,
418
+ width: PropTypes.number.isRequired
419
+ }).isRequired
420
+ }).isRequired,
361
421
  firstColumnToRender: PropTypes.number.isRequired,
362
422
  /**
363
423
  * Determines which cell has focus.
@@ -370,14 +430,15 @@ process.env.NODE_ENV !== "production" ? GridRow.propTypes = {
370
430
  * If some rows above have expanded children, this index also take those children into account.
371
431
  */
372
432
  index: PropTypes.number.isRequired,
373
- isLastVisible: PropTypes.bool,
433
+ isFirstVisible: PropTypes.bool.isRequired,
434
+ isLastVisible: PropTypes.bool.isRequired,
374
435
  isNotVisible: PropTypes.bool,
375
436
  lastColumnToRender: PropTypes.number.isRequired,
376
437
  onClick: PropTypes.func,
377
438
  onDoubleClick: PropTypes.func,
378
439
  onMouseEnter: PropTypes.func,
379
440
  onMouseLeave: PropTypes.func,
380
- position: PropTypes.oneOf(['center', 'left', 'right']).isRequired,
441
+ pinnedColumns: PropTypes.object.isRequired,
381
442
  renderedColumns: PropTypes.arrayOf(PropTypes.object).isRequired,
382
443
  row: PropTypes.object,
383
444
  rowHeight: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
@@ -0,0 +1,36 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import * as React from 'react';
3
+ import clsx from 'clsx';
4
+ import { styled } from '@mui/material/styles';
5
+ import { getDataGridUtilityClass as getClassName } from '../constants';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ var classes = {
8
+ root: getClassName('scrollbarFiller'),
9
+ header: getClassName('scrollbarFiller--header'),
10
+ borderTop: getClassName('scrollbarFiller--borderTop'),
11
+ pinnedRight: getClassName('scrollbarFiller--pinnedRight')
12
+ };
13
+ var Style = styled('div')(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
14
+ minWidth: 'calc(var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize))',
15
+ alignSelf: 'stretch'
16
+ }, "&.".concat(classes.borderTop), {
17
+ borderTop: '1px solid var(--DataGrid-rowBorderColor)'
18
+ }), "&.".concat(classes.pinnedRight), {
19
+ backgroundColor: 'var(--DataGrid-pinnedBackground)'
20
+ }), "&.".concat(classes.pinnedRight, ":not(.").concat(classes.header, ")"), {
21
+ position: 'sticky',
22
+ right: 0
23
+ }), "&:not(.".concat(classes.header, "):not(.").concat(classes.pinnedRight, ")"), {
24
+ transform: 'translate3d(var(--DataGrid-offsetLeft), 0, 0)'
25
+ }));
26
+ function GridScrollbarFillerCell(_ref) {
27
+ var header = _ref.header,
28
+ _ref$borderTop = _ref.borderTop,
29
+ borderTop = _ref$borderTop === void 0 ? true : _ref$borderTop,
30
+ pinnedRight = _ref.pinnedRight;
31
+ return /*#__PURE__*/_jsx(Style, {
32
+ role: "presentation",
33
+ className: clsx(classes.root, header && classes.header, borderTop && classes.borderTop, pinnedRight && classes.pinnedRight)
34
+ });
35
+ }
36
+ export { GridScrollbarFillerCell };
@@ -1,114 +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
- var VirtualScrollerComponent = props.VirtualScrollerComponent,
20
- ColumnHeadersProps = props.ColumnHeadersProps,
21
- children = props.children;
22
- var apiRef = useGridPrivateApiContext();
23
- var rootProps = useGridRootProps();
24
- var rootRef = React.useRef(null);
25
- var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
26
- var filterColumnLookup = useGridSelector(apiRef, gridFilterActiveItemsLookupSelector);
27
- var sortColumnLookup = useGridSelector(apiRef, gridSortColumnLookupSelector);
28
- var columnPositions = useGridSelector(apiRef, gridColumnPositionsSelector);
29
- var columnHeaderTabIndexState = useGridSelector(apiRef, gridTabIndexColumnHeaderSelector);
30
- var cellTabIndexState = useGridSelector(apiRef, gridTabIndexCellSelector);
31
- var columnGroupHeaderTabIndexState = useGridSelector(apiRef, unstable_gridTabIndexColumnGroupHeaderSelector);
32
- var columnHeaderFocus = useGridSelector(apiRef, gridFocusColumnHeaderSelector);
33
- var columnGroupHeaderFocus = useGridSelector(apiRef, unstable_gridFocusColumnGroupHeaderSelector);
34
- var densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
35
- var headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
36
- var columnMenuState = useGridSelector(apiRef, gridColumnMenuSelector);
37
- var columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
38
- var columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
39
- var hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
40
- useEnhancedEffect(function () {
41
- apiRef.current.computeSizeAndPublishResizeEvent();
42
- var elementToObserve = rootRef.current;
43
- if (typeof ResizeObserver === 'undefined') {
44
- return function () {};
45
- }
46
- var animationFrame;
47
- var observer = new ResizeObserver(function () {
48
- // See https://github.com/mui/mui-x/issues/8733
49
- animationFrame = requestAnimationFrame(function () {
50
- apiRef.current.computeSizeAndPublishResizeEvent();
51
- });
52
- });
53
- if (elementToObserve) {
54
- observer.observe(elementToObserve);
55
- }
56
- return function () {
57
- if (animationFrame) {
58
- window.cancelAnimationFrame(animationFrame);
59
- }
60
- if (elementToObserve) {
61
- observer.unobserve(elementToObserve);
62
- }
63
- };
64
- }, [apiRef]);
65
- var columnHeadersRef = React.useRef(null);
66
- var columnsContainerRef = React.useRef(null);
67
- var virtualScrollerRef = React.useRef(null);
68
- apiRef.current.register('private', {
69
- columnHeadersContainerElementRef: columnsContainerRef,
70
- columnHeadersElementRef: columnHeadersRef,
71
- virtualScrollerRef: virtualScrollerRef,
72
- mainElementRef: rootRef
73
- });
74
- var hasDimensions = !!apiRef.current.getRootDimensions();
75
- return /*#__PURE__*/_jsxs(GridMainContainer, {
76
- ref: rootRef,
77
- children: [/*#__PURE__*/_jsx(rootProps.slots.columnHeaders, _extends({
78
- ref: columnsContainerRef,
79
- innerRef: columnHeadersRef,
80
- visibleColumns: visibleColumns,
81
- filterColumnLookup: filterColumnLookup,
82
- sortColumnLookup: sortColumnLookup,
83
- columnPositions: columnPositions,
84
- columnHeaderTabIndexState: columnHeaderTabIndexState,
85
- columnGroupHeaderTabIndexState: columnGroupHeaderTabIndexState,
86
- columnHeaderFocus: columnHeaderFocus,
87
- columnGroupHeaderFocus: columnGroupHeaderFocus,
88
- densityFactor: densityFactor,
89
- headerGroupingMaxDepth: headerGroupingMaxDepth,
90
- columnMenuState: columnMenuState,
91
- columnVisibility: columnVisibility,
92
- columnGroupsHeaderStructure: columnGroupsHeaderStructure,
93
- hasOtherElementInTabSequence: hasOtherElementInTabSequence
94
- }, ColumnHeadersProps)), hasDimensions && /*#__PURE__*/_jsx(VirtualScrollerComponent
95
- // The content is only rendered after dimensions are computed because
96
- // the lazy-loading hook is listening to `renderedRowsIntervalChange`,
97
- // but only does something if the dimensions are also available.
98
- // If this event is published while dimensions haven't been computed,
99
- // the `onFetchRows` prop won't be called during mount.
100
- , {
101
- ref: virtualScrollerRef
102
- }), children]
103
- });
104
- }
105
- process.env.NODE_ENV !== "production" ? GridBody.propTypes = {
106
- // ----------------------------- Warning --------------------------------
107
- // | These PropTypes are generated from the TypeScript type definitions |
108
- // | To update them edit the TypeScript types and run "yarn proptypes" |
109
- // ----------------------------------------------------------------------
110
- children: PropTypes.node,
111
- ColumnHeadersProps: PropTypes.object,
112
- VirtualScrollerComponent: PropTypes.elementType.isRequired
113
- } : void 0;
114
- export { GridBody };
1
+ import { GridVirtualScroller } from '../virtualization/GridVirtualScroller';
2
+ export { GridVirtualScroller as GridBody };
@@ -1,15 +1,16 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
2
  import * as React from 'react';
4
3
  import PropTypes from 'prop-types';
5
4
  import { styled } from '@mui/system';
6
- import { unstable_composeClasses as composeClasses, unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
5
+ import { unstable_composeClasses as composeClasses } from '@mui/utils';
7
6
  import clsx from 'clsx';
8
7
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
9
8
  import { gridExpandedRowCountSelector } from '../../hooks/features/filter/gridFilterSelector';
10
9
  import { gridRowCountSelector, gridRowsLoadingSelector } from '../../hooks/features/rows/gridRowsSelector';
10
+ import { gridDimensionsSelector } from '../../hooks/features/dimensions';
11
11
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
12
12
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
13
+ import { useGridVisibleRows } from '../../hooks/utils/useGridVisibleRows';
13
14
  import { getMinimalContentHeight } from '../../hooks/features/rows/gridRowsUtils';
14
15
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
15
16
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -27,7 +28,7 @@ var GridOverlayWrapperRoot = styled('div', {
27
28
  return {
28
29
  position: 'sticky',
29
30
  // To stay in place while scrolling
30
- top: 0,
31
+ top: 'var(--DataGrid-headersTotalHeight)',
31
32
  left: 0,
32
33
  width: 0,
33
34
  // To stay above the content instead of shifting it down
@@ -56,33 +57,17 @@ var useUtilityClasses = function useUtilityClasses(ownerState) {
56
57
  return composeClasses(slots, getDataGridUtilityClass, classes);
57
58
  };
58
59
  function GridOverlayWrapper(props) {
59
- var _viewportInnerSize$he, _viewportInnerSize$wi;
60
60
  var apiRef = useGridApiContext();
61
61
  var rootProps = useGridRootProps();
62
- var _React$useState = React.useState(function () {
63
- var _apiRef$current$getRo, _apiRef$current$getRo2;
64
- return (_apiRef$current$getRo = (_apiRef$current$getRo2 = apiRef.current.getRootDimensions()) == null ? void 0 : _apiRef$current$getRo2.viewportInnerSize) != null ? _apiRef$current$getRo : null;
65
- }),
66
- _React$useState2 = _slicedToArray(_React$useState, 2),
67
- viewportInnerSize = _React$useState2[0],
68
- setViewportInnerSize = _React$useState2[1];
69
- var handleViewportSizeChange = React.useCallback(function () {
70
- var _apiRef$current$getRo3, _apiRef$current$getRo4;
71
- setViewportInnerSize((_apiRef$current$getRo3 = (_apiRef$current$getRo4 = apiRef.current.getRootDimensions()) == null ? void 0 : _apiRef$current$getRo4.viewportInnerSize) != null ? _apiRef$current$getRo3 : null);
72
- }, [apiRef]);
73
- useEnhancedEffect(function () {
74
- return apiRef.current.subscribeEvent('viewportInnerSizeChange', handleViewportSizeChange);
75
- }, [apiRef, handleViewportSizeChange]);
76
- var height = (_viewportInnerSize$he = viewportInnerSize == null ? void 0 : viewportInnerSize.height) != null ? _viewportInnerSize$he : 0;
77
- if (rootProps.autoHeight && height === 0) {
78
- height = getMinimalContentHeight(apiRef, rootProps.rowHeight); // Give room to show the overlay when there no rows.
62
+ var currentPage = useGridVisibleRows(apiRef, rootProps);
63
+ var dimensions = useGridSelector(apiRef, gridDimensionsSelector);
64
+ var height = dimensions.viewportOuterSize.height - dimensions.headersTotalHeight - (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
65
+ if (rootProps.autoHeight && currentPage.rows.length === 0 || height === 0) {
66
+ height = getMinimalContentHeight(apiRef);
79
67
  }
80
68
  var classes = useUtilityClasses(_extends({}, props, {
81
69
  classes: rootProps.classes
82
70
  }));
83
- if (!viewportInnerSize) {
84
- return null;
85
- }
86
71
  return /*#__PURE__*/_jsx(GridOverlayWrapperRoot, {
87
72
  className: clsx(classes.root),
88
73
  overlayType: props.overlayType,
@@ -90,7 +75,7 @@ function GridOverlayWrapper(props) {
90
75
  className: clsx(classes.inner),
91
76
  style: {
92
77
  height: height,
93
- width: (_viewportInnerSize$wi = viewportInnerSize == null ? void 0 : viewportInnerSize.width) != null ? _viewportInnerSize$wi : 0
78
+ width: dimensions.viewportOuterSize.width
94
79
  }
95
80
  }, props))
96
81
  });