@mui/x-data-grid 7.0.0-alpha.7 → 7.0.0-alpha.9

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 (501) hide show
  1. package/CHANGELOG.md +554 -51
  2. package/DataGrid/DataGrid.js +15 -27
  3. package/DataGrid/useDataGridComponent.js +2 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/README.md +1 -1
  6. package/colDef/gridDateColDef.js +1 -1
  7. package/components/GridColumnHeaders.d.ts +3 -2
  8. package/components/GridColumnHeaders.js +3 -11
  9. package/components/GridDetailPanels.d.ts +5 -0
  10. package/components/GridDetailPanels.js +4 -0
  11. package/components/GridHeaders.d.ts +4 -0
  12. package/components/GridHeaders.js +53 -0
  13. package/components/GridPagination.d.ts +4 -4
  14. package/components/GridPagination.js +1 -1
  15. package/components/GridPinnedRows.d.ts +7 -0
  16. package/components/GridPinnedRows.js +4 -0
  17. package/components/GridRow.d.ts +7 -4
  18. package/components/GridRow.js +260 -97
  19. package/components/GridScrollbarFillerCell.d.ts +7 -0
  20. package/components/GridScrollbarFillerCell.js +39 -0
  21. package/components/base/GridBody.d.ts +2 -13
  22. package/components/base/GridBody.js +2 -116
  23. package/components/base/GridOverlays.js +10 -21
  24. package/components/cell/GridActionsCell.js +1 -1
  25. package/components/cell/GridActionsCellItem.d.ts +6 -6
  26. package/components/cell/GridCell.d.ts +15 -21
  27. package/components/cell/GridCell.js +68 -373
  28. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  29. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
  30. package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  31. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  32. package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  33. package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  34. package/components/containers/GridRoot.js +18 -15
  35. package/components/containers/GridRootStyles.js +307 -204
  36. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  37. package/components/panel/GridPanel.d.ts +3 -3
  38. package/components/panel/GridPanel.js +3 -4
  39. package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
  40. package/components/panel/filterPanel/GridFilterForm.js +32 -15
  41. package/components/panel/filterPanel/GridFilterPanel.js +46 -20
  42. package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
  43. package/components/toolbar/GridToolbarColumnsButton.js +40 -22
  44. package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
  45. package/components/toolbar/GridToolbarDensitySelector.js +40 -22
  46. package/components/toolbar/GridToolbarExport.d.ts +10 -1
  47. package/components/toolbar/GridToolbarExport.js +6 -1
  48. package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
  49. package/components/toolbar/GridToolbarExportContainer.js +41 -23
  50. package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
  51. package/components/toolbar/GridToolbarFilterButton.js +6 -10
  52. package/components/toolbar/GridToolbarQuickFilter.d.ts +4 -0
  53. package/components/toolbar/GridToolbarQuickFilter.js +4 -0
  54. package/components/virtualization/GridBottomContainer.d.ts +2 -0
  55. package/components/virtualization/GridBottomContainer.js +25 -0
  56. package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
  57. package/components/virtualization/GridMainContainer.js +20 -0
  58. package/components/virtualization/GridTopContainer.d.ts +2 -0
  59. package/components/virtualization/GridTopContainer.js +35 -0
  60. package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
  61. package/components/virtualization/GridVirtualScrollbar.js +131 -0
  62. package/components/virtualization/GridVirtualScroller.d.ts +4 -4
  63. package/components/virtualization/GridVirtualScroller.js +69 -16
  64. package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
  65. package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  66. package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  67. package/constants/defaultGridSlotsComponents.js +6 -2
  68. package/constants/gridClasses.d.ts +60 -8
  69. package/constants/gridClasses.js +1 -1
  70. package/hooks/core/gridCoreSelector.d.ts +6 -0
  71. package/hooks/core/gridCoreSelector.js +5 -0
  72. package/hooks/core/useGridInitialization.js +4 -0
  73. package/hooks/core/useGridLoggerFactory.js +2 -2
  74. package/hooks/core/useGridRefs.d.ts +3 -0
  75. package/hooks/core/useGridRefs.js +13 -0
  76. package/hooks/core/useGridTheme.d.ts +3 -0
  77. package/hooks/core/useGridTheme.js +19 -0
  78. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  79. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  80. package/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
  81. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
  82. package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
  83. package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  84. package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
  85. package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  86. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
  87. package/hooks/features/columns/gridColumnsSelector.js +52 -0
  88. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
  89. package/hooks/features/columns/gridColumnsUtils.js +10 -12
  90. package/hooks/features/columns/index.d.ts +2 -2
  91. package/hooks/features/columns/index.js +2 -1
  92. package/hooks/features/columns/useGridColumnSpanning.js +62 -61
  93. package/hooks/features/columns/useGridColumns.js +20 -23
  94. package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
  95. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
  96. package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  97. package/hooks/features/dimensions/index.d.ts +2 -0
  98. package/hooks/features/dimensions/index.js +1 -0
  99. package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
  100. package/hooks/features/dimensions/useGridDimensions.js +216 -148
  101. package/hooks/features/editing/useGridCellEditing.js +4 -4
  102. package/hooks/features/editing/useGridRowEditing.js +4 -4
  103. package/hooks/features/export/serializers/csvSerializer.js +3 -3
  104. package/hooks/features/export/useGridPrintExport.js +1 -1
  105. package/hooks/features/filter/gridFilterUtils.js +5 -5
  106. package/hooks/features/filter/useGridFilter.js +3 -3
  107. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
  108. package/hooks/features/focus/gridFocusStateSelector.js +2 -6
  109. package/hooks/features/focus/useGridFocus.js +3 -3
  110. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  111. package/hooks/features/pagination/gridPaginationUtils.js +2 -2
  112. package/hooks/features/pagination/useGridPagination.js +3 -5
  113. package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  114. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
  115. package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
  116. package/hooks/features/rows/gridRowsSelector.js +5 -5
  117. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  118. package/hooks/features/rows/gridRowsUtils.js +6 -6
  119. package/hooks/features/rows/useGridRows.js +7 -7
  120. package/hooks/features/rows/useGridRowsMeta.js +9 -6
  121. package/hooks/features/scroll/useGridScroll.js +8 -10
  122. package/hooks/features/sorting/gridSortingUtils.js +5 -3
  123. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  124. package/hooks/features/sorting/useGridSorting.js +15 -10
  125. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
  126. package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  127. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
  128. package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
  129. package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
  130. package/hooks/features/virtualization/useGridVirtualization.js +8 -1
  131. package/hooks/utils/index.d.ts +3 -0
  132. package/hooks/utils/index.js +4 -1
  133. package/hooks/utils/useGridApiContext.js +1 -1
  134. package/hooks/utils/useGridAriaAttributes.js +1 -2
  135. package/hooks/utils/useGridNativeEventListener.js +4 -9
  136. package/hooks/utils/useGridPrivateApiContext.js +1 -1
  137. package/hooks/utils/useGridRootProps.js +1 -1
  138. package/hooks/utils/useGridSelector.js +1 -1
  139. package/hooks/utils/useResizeObserver.d.ts +2 -0
  140. package/hooks/utils/useResizeObserver.js +36 -0
  141. package/hooks/utils/useRunOnce.d.ts +5 -0
  142. package/hooks/utils/useRunOnce.js +18 -0
  143. package/index.d.ts +0 -1
  144. package/index.js +1 -2
  145. package/internals/index.d.ts +13 -9
  146. package/internals/index.js +9 -7
  147. package/internals/utils/index.d.ts +1 -0
  148. package/internals/utils/index.js +2 -1
  149. package/internals/utils/propValidation.d.ts +4 -0
  150. package/internals/utils/propValidation.js +19 -0
  151. package/legacy/DataGrid/DataGrid.js +20 -29
  152. package/legacy/DataGrid/useDataGridComponent.js +2 -1
  153. package/legacy/DataGrid/useDataGridProps.js +1 -0
  154. package/legacy/colDef/gridDateColDef.js +1 -1
  155. package/legacy/components/GridColumnHeaders.js +3 -11
  156. package/legacy/components/GridDetailPanels.js +4 -0
  157. package/legacy/components/GridHeaders.js +53 -0
  158. package/legacy/components/GridPagination.js +1 -1
  159. package/legacy/components/GridPinnedRows.js +4 -0
  160. package/legacy/components/GridRow.js +258 -98
  161. package/legacy/components/GridScrollbarFillerCell.js +36 -0
  162. package/legacy/components/base/GridBody.js +2 -114
  163. package/legacy/components/base/GridOverlays.js +10 -25
  164. package/legacy/components/cell/GridActionsCell.js +1 -1
  165. package/legacy/components/cell/GridCell.js +70 -378
  166. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  167. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  168. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  169. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  170. package/legacy/components/containers/GridRoot.js +18 -15
  171. package/legacy/components/containers/GridRootStyles.js +215 -137
  172. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  173. package/legacy/components/panel/GridPanel.js +3 -4
  174. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -14
  175. package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
  176. package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
  177. package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
  178. package/legacy/components/toolbar/GridToolbarExport.js +6 -1
  179. package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
  180. package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
  181. package/legacy/components/toolbar/GridToolbarQuickFilter.js +4 -0
  182. package/legacy/components/virtualization/GridBottomContainer.js +25 -0
  183. package/legacy/components/virtualization/GridMainContainer.js +20 -0
  184. package/legacy/components/virtualization/GridTopContainer.js +35 -0
  185. package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
  186. package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
  187. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
  188. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  189. package/legacy/constants/defaultGridSlotsComponents.js +6 -2
  190. package/legacy/constants/gridClasses.js +1 -1
  191. package/legacy/hooks/core/gridCoreSelector.js +7 -0
  192. package/legacy/hooks/core/useGridInitialization.js +4 -0
  193. package/legacy/hooks/core/useGridLoggerFactory.js +2 -2
  194. package/legacy/hooks/core/useGridRefs.js +13 -0
  195. package/legacy/hooks/core/useGridTheme.js +21 -0
  196. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  197. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
  198. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
  199. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  200. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  201. package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
  202. package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
  203. package/legacy/hooks/features/columns/index.js +2 -1
  204. package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
  205. package/legacy/hooks/features/columns/useGridColumns.js +22 -23
  206. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
  207. package/legacy/hooks/features/dimensions/index.js +1 -0
  208. package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
  209. package/legacy/hooks/features/editing/useGridCellEditing.js +4 -4
  210. package/legacy/hooks/features/editing/useGridRowEditing.js +4 -4
  211. package/legacy/hooks/features/export/serializers/csvSerializer.js +3 -3
  212. package/legacy/hooks/features/export/useGridPrintExport.js +1 -1
  213. package/legacy/hooks/features/filter/gridFilterUtils.js +5 -5
  214. package/legacy/hooks/features/filter/useGridFilter.js +3 -3
  215. package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
  216. package/legacy/hooks/features/focus/useGridFocus.js +3 -3
  217. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  218. package/legacy/hooks/features/pagination/gridPaginationUtils.js +2 -2
  219. package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
  220. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  221. package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
  222. package/legacy/hooks/features/rows/gridRowsUtils.js +6 -6
  223. package/legacy/hooks/features/rows/useGridParamsApi.js +4 -5
  224. package/legacy/hooks/features/rows/useGridRows.js +7 -7
  225. package/legacy/hooks/features/rows/useGridRowsMeta.js +9 -6
  226. package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
  227. package/legacy/hooks/features/sorting/gridSortingUtils.js +5 -3
  228. package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
  229. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
  230. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
  231. package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
  232. package/legacy/hooks/utils/index.js +4 -1
  233. package/legacy/hooks/utils/useGridApiContext.js +1 -1
  234. package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
  235. package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
  236. package/legacy/hooks/utils/useGridPrivateApiContext.js +1 -1
  237. package/legacy/hooks/utils/useGridRootProps.js +1 -1
  238. package/legacy/hooks/utils/useGridSelector.js +1 -1
  239. package/legacy/hooks/utils/useResizeObserver.js +36 -0
  240. package/legacy/hooks/utils/useRunOnce.js +18 -0
  241. package/legacy/index.js +1 -2
  242. package/legacy/internals/index.js +9 -7
  243. package/legacy/internals/utils/index.js +2 -1
  244. package/legacy/internals/utils/propValidation.js +21 -0
  245. package/legacy/locales/hrHR.js +161 -0
  246. package/legacy/locales/index.js +4 -1
  247. package/legacy/locales/ptPT.js +161 -0
  248. package/legacy/locales/zhHK.js +161 -0
  249. package/legacy/models/index.js +0 -1
  250. package/legacy/models/params/index.js +1 -2
  251. package/legacy/utils/createSelector.js +1 -1
  252. package/legacy/utils/exportAs.js +1 -1
  253. package/legacy/utils/utils.js +10 -1
  254. package/locales/hrHR.d.ts +1 -0
  255. package/locales/hrHR.js +149 -0
  256. package/locales/index.d.ts +3 -0
  257. package/locales/index.js +4 -1
  258. package/locales/ptPT.d.ts +1 -0
  259. package/locales/ptPT.js +149 -0
  260. package/locales/zhHK.d.ts +1 -0
  261. package/locales/zhHK.js +149 -0
  262. package/models/api/gridColumnGroupingApi.d.ts +2 -2
  263. package/models/api/gridCoreApi.d.ts +16 -16
  264. package/models/api/gridRowsMetaApi.d.ts +1 -1
  265. package/models/api/gridVirtualizationApi.d.ts +2 -3
  266. package/models/events/gridEventLookup.d.ts +3 -3
  267. package/models/gridFilterModel.d.ts +1 -1
  268. package/models/gridSlotsComponent.d.ts +16 -2
  269. package/models/gridStateCommunity.d.ts +5 -1
  270. package/models/index.d.ts +0 -1
  271. package/models/index.js +0 -1
  272. package/models/params/index.d.ts +0 -1
  273. package/models/params/index.js +1 -2
  274. package/models/props/DataGridProps.d.ts +7 -12
  275. package/modern/DataGrid/DataGrid.js +15 -27
  276. package/modern/DataGrid/useDataGridComponent.js +2 -1
  277. package/modern/DataGrid/useDataGridProps.js +1 -0
  278. package/modern/colDef/gridDateColDef.js +1 -1
  279. package/modern/components/GridColumnHeaders.js +3 -11
  280. package/modern/components/GridDetailPanels.js +4 -0
  281. package/modern/components/GridHeaders.js +53 -0
  282. package/modern/components/GridPagination.js +1 -1
  283. package/modern/components/GridPinnedRows.js +4 -0
  284. package/modern/components/GridRow.js +258 -96
  285. package/modern/components/GridScrollbarFillerCell.js +39 -0
  286. package/modern/components/base/GridBody.js +2 -116
  287. package/modern/components/base/GridOverlays.js +10 -16
  288. package/modern/components/cell/GridActionsCell.js +1 -1
  289. package/modern/components/cell/GridCell.js +66 -370
  290. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  291. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  292. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  293. package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  294. package/modern/components/containers/GridRoot.js +18 -14
  295. package/modern/components/containers/GridRootStyles.js +307 -204
  296. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  297. package/modern/components/panel/GridPanel.js +3 -4
  298. package/modern/components/panel/filterPanel/GridFilterForm.js +31 -14
  299. package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
  300. package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
  301. package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
  302. package/modern/components/toolbar/GridToolbarExport.js +6 -1
  303. package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
  304. package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
  305. package/modern/components/toolbar/GridToolbarQuickFilter.js +4 -0
  306. package/modern/components/virtualization/GridBottomContainer.js +25 -0
  307. package/modern/components/virtualization/GridMainContainer.js +20 -0
  308. package/modern/components/virtualization/GridTopContainer.js +35 -0
  309. package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
  310. package/modern/components/virtualization/GridVirtualScroller.js +69 -16
  311. package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  312. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  313. package/modern/constants/defaultGridSlotsComponents.js +6 -2
  314. package/modern/constants/gridClasses.js +1 -1
  315. package/modern/hooks/core/gridCoreSelector.js +5 -0
  316. package/modern/hooks/core/useGridInitialization.js +4 -0
  317. package/modern/hooks/core/useGridLoggerFactory.js +2 -2
  318. package/modern/hooks/core/useGridRefs.js +13 -0
  319. package/modern/hooks/core/useGridTheme.js +19 -0
  320. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  321. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
  322. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
  323. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  324. package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  325. package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
  326. package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
  327. package/modern/hooks/features/columns/index.js +2 -1
  328. package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
  329. package/modern/hooks/features/columns/useGridColumns.js +19 -21
  330. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  331. package/modern/hooks/features/dimensions/index.js +1 -0
  332. package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
  333. package/modern/hooks/features/editing/useGridCellEditing.js +4 -4
  334. package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
  335. package/modern/hooks/features/export/serializers/csvSerializer.js +3 -3
  336. package/modern/hooks/features/export/useGridPrintExport.js +1 -1
  337. package/modern/hooks/features/filter/gridFilterUtils.js +5 -5
  338. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  339. package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
  340. package/modern/hooks/features/focus/useGridFocus.js +3 -3
  341. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  342. package/modern/hooks/features/pagination/gridPaginationUtils.js +2 -2
  343. package/modern/hooks/features/pagination/useGridPagination.js +3 -5
  344. package/modern/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  345. package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
  346. package/modern/hooks/features/rows/gridRowsUtils.js +6 -6
  347. package/modern/hooks/features/rows/useGridRows.js +7 -7
  348. package/modern/hooks/features/rows/useGridRowsMeta.js +9 -6
  349. package/modern/hooks/features/scroll/useGridScroll.js +8 -9
  350. package/modern/hooks/features/sorting/gridSortingUtils.js +5 -3
  351. package/modern/hooks/features/sorting/useGridSorting.js +15 -10
  352. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  353. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
  354. package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
  355. package/modern/hooks/utils/index.js +4 -1
  356. package/modern/hooks/utils/useGridApiContext.js +1 -1
  357. package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
  358. package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
  359. package/modern/hooks/utils/useGridPrivateApiContext.js +1 -1
  360. package/modern/hooks/utils/useGridRootProps.js +1 -1
  361. package/modern/hooks/utils/useGridSelector.js +1 -1
  362. package/modern/hooks/utils/useResizeObserver.js +36 -0
  363. package/modern/hooks/utils/useRunOnce.js +18 -0
  364. package/modern/index.js +1 -2
  365. package/modern/internals/index.js +9 -7
  366. package/modern/internals/utils/index.js +2 -1
  367. package/modern/internals/utils/propValidation.js +19 -0
  368. package/modern/locales/hrHR.js +149 -0
  369. package/modern/locales/index.js +4 -1
  370. package/modern/locales/ptPT.js +149 -0
  371. package/modern/locales/zhHK.js +149 -0
  372. package/modern/models/index.js +0 -1
  373. package/modern/models/params/index.js +1 -2
  374. package/modern/utils/createSelector.js +1 -1
  375. package/modern/utils/exportAs.js +1 -1
  376. package/modern/utils/utils.js +10 -1
  377. package/node/DataGrid/DataGrid.js +15 -27
  378. package/node/DataGrid/useDataGridComponent.js +1 -0
  379. package/node/DataGrid/useDataGridProps.js +1 -0
  380. package/node/colDef/gridDateColDef.js +1 -1
  381. package/node/components/GridColumnHeaders.js +3 -11
  382. package/node/components/GridDetailPanels.js +10 -0
  383. package/node/components/GridHeaders.js +60 -0
  384. package/node/components/GridPagination.js +1 -1
  385. package/node/components/GridPinnedRows.js +10 -0
  386. package/node/components/GridRow.js +256 -94
  387. package/node/components/GridScrollbarFillerCell.js +47 -0
  388. package/node/components/base/GridBody.js +7 -118
  389. package/node/components/base/GridOverlays.js +9 -15
  390. package/node/components/cell/GridActionsCell.js +1 -1
  391. package/node/components/cell/GridCell.js +67 -370
  392. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  393. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
  394. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  395. package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  396. package/node/components/containers/GridRoot.js +17 -14
  397. package/node/components/containers/GridRootStyles.js +175 -72
  398. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  399. package/node/components/panel/GridPanel.js +3 -4
  400. package/node/components/panel/filterPanel/GridFilterForm.js +30 -13
  401. package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
  402. package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
  403. package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
  404. package/node/components/toolbar/GridToolbarExport.js +6 -1
  405. package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
  406. package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
  407. package/node/components/toolbar/GridToolbarQuickFilter.js +4 -0
  408. package/node/components/virtualization/GridBottomContainer.js +34 -0
  409. package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
  410. package/node/components/virtualization/GridTopContainer.js +44 -0
  411. package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
  412. package/node/components/virtualization/GridVirtualScroller.js +69 -17
  413. package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
  414. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  415. package/node/constants/defaultGridSlotsComponents.js +5 -1
  416. package/node/constants/gridClasses.js +1 -1
  417. package/node/hooks/core/gridCoreSelector.js +12 -0
  418. package/node/hooks/core/useGridInitialization.js +4 -0
  419. package/node/hooks/core/useGridLoggerFactory.js +2 -2
  420. package/node/hooks/core/useGridRefs.js +22 -0
  421. package/node/hooks/core/useGridTheme.js +29 -0
  422. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  423. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
  424. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
  425. package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  426. package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
  427. package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
  428. package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
  429. package/node/hooks/features/columns/index.js +22 -61
  430. package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
  431. package/node/hooks/features/columns/useGridColumns.js +20 -22
  432. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
  433. package/node/hooks/features/dimensions/index.js +11 -0
  434. package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
  435. package/node/hooks/features/editing/useGridCellEditing.js +4 -4
  436. package/node/hooks/features/editing/useGridRowEditing.js +4 -4
  437. package/node/hooks/features/export/serializers/csvSerializer.js +3 -3
  438. package/node/hooks/features/export/useGridPrintExport.js +1 -1
  439. package/node/hooks/features/filter/gridFilterUtils.js +5 -5
  440. package/node/hooks/features/filter/useGridFilter.js +2 -2
  441. package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
  442. package/node/hooks/features/focus/useGridFocus.js +2 -2
  443. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
  444. package/node/hooks/features/pagination/gridPaginationUtils.js +2 -2
  445. package/node/hooks/features/pagination/useGridPagination.js +3 -5
  446. package/node/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  447. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  448. package/node/hooks/features/rows/gridRowsUtils.js +6 -6
  449. package/node/hooks/features/rows/useGridRows.js +7 -7
  450. package/node/hooks/features/rows/useGridRowsMeta.js +7 -5
  451. package/node/hooks/features/scroll/useGridScroll.js +8 -9
  452. package/node/hooks/features/sorting/gridSortingUtils.js +5 -3
  453. package/node/hooks/features/sorting/useGridSorting.js +15 -10
  454. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  455. package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
  456. package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
  457. package/node/hooks/utils/index.js +36 -0
  458. package/node/hooks/utils/useGridApiContext.js +1 -1
  459. package/node/hooks/utils/useGridAriaAttributes.js +1 -1
  460. package/node/hooks/utils/useGridNativeEventListener.js +3 -9
  461. package/node/hooks/utils/useGridPrivateApiContext.js +1 -1
  462. package/node/hooks/utils/useGridRootProps.js +1 -1
  463. package/node/hooks/utils/useGridSelector.js +1 -1
  464. package/node/hooks/utils/useResizeObserver.js +44 -0
  465. package/node/hooks/utils/useRunOnce.js +27 -0
  466. package/node/index.js +1 -13
  467. package/node/internals/index.js +86 -71
  468. package/node/internals/utils/index.js +11 -0
  469. package/node/internals/utils/propValidation.js +26 -0
  470. package/node/locales/hrHR.js +155 -0
  471. package/node/locales/index.js +33 -0
  472. package/node/locales/ptPT.js +155 -0
  473. package/node/locales/zhHK.js +155 -0
  474. package/node/models/index.js +0 -11
  475. package/node/models/params/index.js +0 -11
  476. package/node/utils/createSelector.js +1 -1
  477. package/node/utils/exportAs.js +1 -1
  478. package/node/utils/utils.js +11 -1
  479. package/package.json +6 -6
  480. package/utils/createSelector.js +1 -1
  481. package/utils/exportAs.js +1 -1
  482. package/utils/utils.d.ts +6 -0
  483. package/utils/utils.js +10 -1
  484. package/components/DataGridVirtualScroller.d.ts +0 -3
  485. package/components/DataGridVirtualScroller.js +0 -35
  486. package/components/containers/GridMainContainer.js +0 -43
  487. package/legacy/components/DataGridVirtualScroller.js +0 -32
  488. package/legacy/components/containers/GridMainContainer.js +0 -45
  489. package/legacy/models/gridRootContainerRef.js +0 -1
  490. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  491. package/models/gridRootContainerRef.d.ts +0 -5
  492. package/models/gridRootContainerRef.js +0 -1
  493. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
  494. package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  495. package/modern/components/DataGridVirtualScroller.js +0 -35
  496. package/modern/components/containers/GridMainContainer.js +0 -42
  497. package/modern/models/gridRootContainerRef.js +0 -1
  498. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  499. package/node/components/DataGridVirtualScroller.js +0 -42
  500. package/node/models/gridRootContainerRef.js +0 -5
  501. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +0 -5
@@ -1,119 +1,68 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
3
  import * as React from 'react';
3
- import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';
4
+ import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';
4
5
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
5
6
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
7
  import { useGridLogger } from '../../utils/useGridLogger';
7
- import { gridColumnsTotalWidthSelector } from '../columns';
8
+ import { gridColumnsTotalWidthSelector, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
9
+ import { gridDimensionsSelector } from './gridDimensionsSelectors';
8
10
  import { gridDensityFactorSelector } from '../density';
11
+ import { gridRenderContextSelector } from '../virtualization';
9
12
  import { useGridSelector } from '../../utils';
10
13
  import { getVisibleRows } from '../../utils/useGridVisibleRows';
11
14
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
12
15
  import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
13
16
  import { getTotalHeaderHeight } from '../columns/gridColumnsUtils';
14
- var isTestEnvironment = process.env.NODE_ENV === 'test';
15
- var hasScroll = function hasScroll(_ref) {
16
- var content = _ref.content,
17
- container = _ref.container,
18
- scrollBarSize = _ref.scrollBarSize;
19
- var hasScrollXIfNoYScrollBar = content.width > container.width;
20
- var hasScrollYIfNoXScrollBar = content.height > container.height;
21
- var hasScrollX = false;
22
- var hasScrollY = false;
23
- if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
24
- hasScrollX = hasScrollXIfNoYScrollBar;
25
- hasScrollY = content.height + (hasScrollX ? scrollBarSize : 0) > container.height;
26
-
27
- // We recalculate the scroll x to consider the size of the y scrollbar.
28
- if (hasScrollY) {
29
- hasScrollX = content.width + scrollBarSize > container.width;
30
- }
31
- }
32
- return {
33
- hasScrollX: hasScrollX,
34
- hasScrollY: hasScrollY
35
- };
17
+ var EMPTY_SIZE = {
18
+ width: 0,
19
+ height: 0
20
+ };
21
+ var EMPTY_DIMENSIONS = {
22
+ isReady: false,
23
+ root: EMPTY_SIZE,
24
+ viewportOuterSize: EMPTY_SIZE,
25
+ viewportInnerSize: EMPTY_SIZE,
26
+ contentSize: EMPTY_SIZE,
27
+ minimumSize: EMPTY_SIZE,
28
+ hasScrollX: false,
29
+ hasScrollY: false,
30
+ scrollbarSize: 0,
31
+ headerHeight: 0,
32
+ rowWidth: 0,
33
+ rowHeight: 0,
34
+ columnsTotalWidth: 0,
35
+ leftPinnedWidth: 0,
36
+ rightPinnedWidth: 0,
37
+ headersTotalHeight: 0,
38
+ topContainerHeight: 0,
39
+ bottomContainerHeight: 0
40
+ };
41
+ export var dimensionsStateInitializer = function dimensionsStateInitializer(state) {
42
+ var dimensions = EMPTY_DIMENSIONS;
43
+ return _extends({}, state, {
44
+ dimensions: dimensions
45
+ });
36
46
  };
37
47
  export function useGridDimensions(apiRef, props) {
38
48
  var logger = useGridLogger(apiRef, 'useResizeContainer');
39
49
  var errorShown = React.useRef(false);
40
- var rootDimensionsRef = React.useRef(null);
41
- var fullDimensionsRef = React.useRef(null);
50
+ var rootDimensionsRef = React.useRef(EMPTY_SIZE);
42
51
  var rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
52
+ var pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
43
53
  var densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
44
54
  var rowHeight = Math.floor(props.rowHeight * densityFactor);
45
- var totalHeaderHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight);
46
- var updateGridDimensionsRef = React.useCallback(function () {
47
- var _apiRef$current$rootE;
48
- var rootElement = (_apiRef$current$rootE = apiRef.current.rootElementRef) == null ? void 0 : _apiRef$current$rootE.current;
49
- var columnsTotalWidth = gridColumnsTotalWidthSelector(apiRef);
50
- var pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
51
- if (!rootDimensionsRef.current) {
52
- return;
53
- }
54
- var scrollBarSize;
55
- if (props.scrollbarSize != null) {
56
- scrollBarSize = props.scrollbarSize;
57
- } else if (!columnsTotalWidth || !rootElement) {
58
- scrollBarSize = 0;
59
- } else {
60
- var doc = ownerDocument(rootElement);
61
- var scrollDiv = doc.createElement('div');
62
- scrollDiv.style.width = '99px';
63
- scrollDiv.style.height = '99px';
64
- scrollDiv.style.position = 'absolute';
65
- scrollDiv.style.overflow = 'scroll';
66
- scrollDiv.className = 'scrollDiv';
67
- rootElement.appendChild(scrollDiv);
68
- scrollBarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
69
- rootElement.removeChild(scrollDiv);
70
- }
71
- var viewportOuterSize;
72
- var hasScrollX;
73
- var hasScrollY;
74
- if (props.autoHeight) {
75
- hasScrollY = false;
76
- hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
77
- viewportOuterSize = {
78
- width: rootDimensionsRef.current.width,
79
- height: rowsMeta.currentPageTotalHeight + (hasScrollX ? scrollBarSize : 0)
80
- };
81
- } else {
82
- viewportOuterSize = {
83
- width: rootDimensionsRef.current.width,
84
- height: Math.max(rootDimensionsRef.current.height - totalHeaderHeight, 0)
85
- };
86
- var scrollInformation = hasScroll({
87
- content: {
88
- width: Math.round(columnsTotalWidth),
89
- height: rowsMeta.currentPageTotalHeight
90
- },
91
- container: {
92
- width: Math.round(viewportOuterSize.width),
93
- height: viewportOuterSize.height - pinnedRowsHeight.top - pinnedRowsHeight.bottom
94
- },
95
- scrollBarSize: scrollBarSize
96
- });
97
- hasScrollY = scrollInformation.hasScrollY;
98
- hasScrollX = scrollInformation.hasScrollX;
99
- }
100
- var viewportInnerSize = {
101
- width: viewportOuterSize.width - (hasScrollY ? scrollBarSize : 0),
102
- height: viewportOuterSize.height - (hasScrollX ? scrollBarSize : 0)
103
- };
104
- var newFullDimensions = {
105
- viewportOuterSize: viewportOuterSize,
106
- viewportInnerSize: viewportInnerSize,
107
- hasScrollX: hasScrollX,
108
- hasScrollY: hasScrollY,
109
- scrollBarSize: scrollBarSize
110
- };
111
- var prevDimensions = fullDimensionsRef.current;
112
- fullDimensionsRef.current = newFullDimensions;
113
- if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
114
- apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
115
- }
116
- }, [apiRef, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, totalHeaderHeight]);
55
+ var headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
56
+ var columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6);
57
+ // XXX: The `props as any` below is not resilient to change.
58
+ var hasHeaderFilters = Boolean(props.headerFilters);
59
+ var headersTotalHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
60
+ var leftPinnedWidth = pinnedColumns.left.reduce(function (w, col) {
61
+ return w + col.computedWidth;
62
+ }, 0);
63
+ var rightPinnedWidth = pinnedColumns.right.reduce(function (w, col) {
64
+ return w + col.computedWidth;
65
+ }, 0);
117
66
  var _React$useState = React.useState(),
118
67
  _React$useState2 = _slicedToArray(_React$useState, 2),
119
68
  savedSize = _React$useState2[0],
@@ -122,23 +71,39 @@ export function useGridDimensions(apiRef, props) {
122
71
  return debounce(setSavedSize, 60);
123
72
  }, []);
124
73
  var previousSize = React.useRef();
125
- useEnhancedEffect(function () {
126
- if (savedSize) {
127
- updateGridDimensionsRef();
128
- apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
129
- }
130
- }, [apiRef, savedSize, updateGridDimensionsRef]);
131
-
132
- // This is the function called by apiRef.current.resize()
74
+ var getRootDimensions = function getRootDimensions() {
75
+ return apiRef.current.state.dimensions;
76
+ };
77
+ var setDimensions = useEventCallback(function (dimensions) {
78
+ apiRef.current.setState(function (state) {
79
+ return _extends({}, state, {
80
+ dimensions: dimensions
81
+ });
82
+ });
83
+ });
133
84
  var resize = React.useCallback(function () {
134
- apiRef.current.computeSizeAndPublishResizeEvent();
85
+ var _previousSize$current, _previousSize$current2;
86
+ var element = apiRef.current.mainElementRef.current;
87
+ if (!element) {
88
+ return;
89
+ }
90
+ var computedStyle = ownerWindow(element).getComputedStyle(element);
91
+ var height = parseFloat(computedStyle.height) || 0;
92
+ var width = parseFloat(computedStyle.width) || 0;
93
+ var hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
94
+ var hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
95
+ if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
96
+ var size = {
97
+ width: width,
98
+ height: height
99
+ };
100
+ apiRef.current.publishEvent('resize', size);
101
+ previousSize.current = size;
102
+ }
135
103
  }, [apiRef]);
136
- var getRootDimensions = React.useCallback(function () {
137
- return fullDimensionsRef.current;
138
- }, []);
139
104
  var getViewportPageSize = React.useCallback(function () {
140
- var dimensions = apiRef.current.getRootDimensions();
141
- if (!dimensions) {
105
+ var dimensions = gridDimensionsSelector(apiRef.current.state);
106
+ if (!dimensions.isReady) {
142
107
  return 0;
143
108
  }
144
109
  var currentPage = getVisibleRows(apiRef, {
@@ -149,45 +114,138 @@ export function useGridDimensions(apiRef, props) {
149
114
  // TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
150
115
  // to find out the maximum number of rows that can fit in the visible part of the grid
151
116
  if (props.getRowHeight) {
152
- var renderContext = apiRef.current.getRenderContext();
117
+ var renderContext = gridRenderContextSelector(apiRef);
153
118
  var viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
154
119
  return Math.min(viewportPageSize - 1, currentPage.rows.length);
155
120
  }
156
121
  var maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
157
122
  return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
158
123
  }, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
159
- var computeSizeAndPublishResizeEvent = React.useCallback(function () {
160
- var _apiRef$current$mainE, _previousSize$current, _previousSize$current2;
161
- var mainEl = (_apiRef$current$mainE = apiRef.current.mainElementRef) == null ? void 0 : _apiRef$current$mainE.current;
162
- if (!mainEl) {
163
- return;
164
- }
165
- var win = ownerWindow(mainEl);
166
- var computedStyle = win.getComputedStyle(mainEl);
167
- var height = parseFloat(computedStyle.height) || 0;
168
- var width = parseFloat(computedStyle.width) || 0;
169
- var hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
170
- var hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
171
- if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
172
- var size = {
173
- width: width,
174
- height: height
124
+ var updateDimensions = React.useCallback(function () {
125
+ var _apiRef$current$updat, _apiRef$current;
126
+ var rootElement = apiRef.current.rootElementRef.current;
127
+ var pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
128
+ var scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
129
+ var topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
130
+ var bottomContainerHeight = pinnedRowsHeight.bottom;
131
+ var contentSize = {
132
+ width: columnsTotalWidth,
133
+ height: rowsMeta.currentPageTotalHeight
134
+ };
135
+ var viewportOuterSize;
136
+ var viewportInnerSize;
137
+ var hasScrollX = false;
138
+ var hasScrollY = false;
139
+ if (props.autoHeight) {
140
+ hasScrollY = false;
141
+ hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
142
+ viewportOuterSize = {
143
+ width: rootDimensionsRef.current.width,
144
+ height: topContainerHeight + bottomContainerHeight + contentSize.height
175
145
  };
176
- apiRef.current.publishEvent('resize', size);
177
- previousSize.current = size;
146
+ viewportInnerSize = {
147
+ width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
148
+ height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
149
+ };
150
+ } else {
151
+ viewportOuterSize = {
152
+ width: rootDimensionsRef.current.width,
153
+ height: rootDimensionsRef.current.height
154
+ };
155
+ viewportInnerSize = {
156
+ width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),
157
+ height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
158
+ };
159
+ var content = contentSize;
160
+ var container = viewportInnerSize;
161
+ var hasScrollXIfNoYScrollBar = content.width > container.width;
162
+ var hasScrollYIfNoXScrollBar = content.height > container.height;
163
+ if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
164
+ hasScrollY = hasScrollYIfNoXScrollBar;
165
+ hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
166
+
167
+ // We recalculate the scroll y to consider the size of the x scrollbar.
168
+ if (hasScrollX) {
169
+ hasScrollY = content.height + scrollbarSize > container.height;
170
+ }
171
+ }
172
+ if (hasScrollY) {
173
+ viewportInnerSize.width -= scrollbarSize;
174
+ }
175
+ if (hasScrollX) {
176
+ viewportInnerSize.height -= scrollbarSize;
177
+ }
178
178
  }
179
- }, [apiRef]);
180
- var dimensionsApi = {
179
+ var rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
180
+ var minimumSize = {
181
+ width: contentSize.width,
182
+ height: topContainerHeight + contentSize.height + bottomContainerHeight
183
+ };
184
+ var newDimensions = {
185
+ isReady: true,
186
+ root: rootDimensionsRef.current,
187
+ viewportOuterSize: viewportOuterSize,
188
+ viewportInnerSize: viewportInnerSize,
189
+ contentSize: contentSize,
190
+ minimumSize: minimumSize,
191
+ hasScrollX: hasScrollX,
192
+ hasScrollY: hasScrollY,
193
+ scrollbarSize: scrollbarSize,
194
+ headerHeight: headerHeight,
195
+ rowWidth: rowWidth,
196
+ rowHeight: rowHeight,
197
+ columnsTotalWidth: columnsTotalWidth,
198
+ leftPinnedWidth: leftPinnedWidth,
199
+ rightPinnedWidth: rightPinnedWidth,
200
+ headersTotalHeight: headersTotalHeight,
201
+ topContainerHeight: topContainerHeight,
202
+ bottomContainerHeight: bottomContainerHeight
203
+ };
204
+ var prevDimensions = apiRef.current.state.dimensions;
205
+ setDimensions(newDimensions);
206
+ if (newDimensions.viewportInnerSize.width !== prevDimensions.viewportInnerSize.width || newDimensions.viewportInnerSize.height !== prevDimensions.viewportInnerSize.height) {
207
+ apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
208
+ }
209
+ (_apiRef$current$updat = (_apiRef$current = apiRef.current).updateRenderContext) == null || _apiRef$current$updat.call(_apiRef$current);
210
+ }, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
211
+ var apiPublic = {
181
212
  resize: resize,
182
213
  getRootDimensions: getRootDimensions
183
214
  };
184
- var dimensionsPrivateApi = {
185
- getViewportPageSize: getViewportPageSize,
186
- updateGridDimensionsRef: updateGridDimensionsRef,
187
- computeSizeAndPublishResizeEvent: computeSizeAndPublishResizeEvent
215
+ var apiPrivate = {
216
+ updateDimensions: updateDimensions,
217
+ getViewportPageSize: getViewportPageSize
188
218
  };
189
- useGridApiMethod(apiRef, dimensionsApi, 'public');
190
- useGridApiMethod(apiRef, dimensionsPrivateApi, 'private');
219
+ useGridApiMethod(apiRef, apiPublic, 'public');
220
+ useGridApiMethod(apiRef, apiPrivate, 'private');
221
+ useEnhancedEffect(function () {
222
+ if (savedSize) {
223
+ updateDimensions();
224
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
225
+ }
226
+ }, [apiRef, savedSize, updateDimensions]);
227
+ var root = apiRef.current.rootElementRef.current;
228
+ var dimensions = apiRef.current.state.dimensions;
229
+ useEnhancedEffect(function () {
230
+ if (!root) {
231
+ return;
232
+ }
233
+ var set = function set(k, v) {
234
+ return root.style.setProperty(k, v);
235
+ };
236
+ set('--DataGrid-width', "".concat(dimensions.viewportOuterSize.width, "px"));
237
+ set('--DataGrid-hasScrollX', "".concat(Number(dimensions.hasScrollX)));
238
+ set('--DataGrid-hasScrollY', "".concat(Number(dimensions.hasScrollY)));
239
+ set('--DataGrid-scrollbarSize', "".concat(dimensions.scrollbarSize, "px"));
240
+ set('--DataGrid-rowWidth', "".concat(dimensions.rowWidth, "px"));
241
+ set('--DataGrid-columnsTotalWidth', "".concat(dimensions.columnsTotalWidth, "px"));
242
+ set('--DataGrid-leftPinnedWidth', "".concat(dimensions.leftPinnedWidth, "px"));
243
+ set('--DataGrid-rightPinnedWidth', "".concat(dimensions.rightPinnedWidth, "px"));
244
+ set('--DataGrid-headerHeight', "".concat(dimensions.headerHeight, "px"));
245
+ set('--DataGrid-headersTotalHeight', "".concat(dimensions.headersTotalHeight, "px"));
246
+ set('--DataGrid-topContainerHeight', "".concat(dimensions.topContainerHeight, "px"));
247
+ set('--DataGrid-bottomContainerHeight', "".concat(dimensions.bottomContainerHeight, "px"));
248
+ }, [root, dimensions]);
191
249
  var isFirstSizing = React.useRef(true);
192
250
  var handleResize = React.useCallback(function (size) {
193
251
  rootDimensionsRef.current = size;
@@ -202,12 +260,6 @@ export function useGridDimensions(apiRef, props) {
202
260
  logger.error(['The parent DOM element of the data grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
203
261
  errorShown.current = true;
204
262
  }
205
- if (isTestEnvironment) {
206
- // We don't need to debounce the resize for tests.
207
- setSavedSize(size);
208
- isFirstSizing.current = false;
209
- return;
210
- }
211
263
  if (isFirstSizing.current) {
212
264
  // We want to initialize the grid dimensions as soon as possible to avoid flickering
213
265
  setSavedSize(size);
@@ -216,12 +268,35 @@ export function useGridDimensions(apiRef, props) {
216
268
  }
217
269
  debouncedSetSavedSize(size);
218
270
  }, [props.autoHeight, debouncedSetSavedSize, logger]);
219
- useEnhancedEffect(function () {
220
- return updateGridDimensionsRef();
221
- }, [updateGridDimensionsRef]);
222
- useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateGridDimensionsRef);
223
- useGridApiOptionHandler(apiRef, 'paginationModelChange', updateGridDimensionsRef);
224
- useGridApiOptionHandler(apiRef, 'columnsChange', updateGridDimensionsRef);
271
+ useEnhancedEffect(updateDimensions, [updateDimensions]);
272
+ useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateDimensions);
273
+ useGridApiOptionHandler(apiRef, 'paginationModelChange', updateDimensions);
274
+ useGridApiOptionHandler(apiRef, 'columnsChange', updateDimensions);
225
275
  useGridApiEventHandler(apiRef, 'resize', handleResize);
226
276
  useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
277
+ }
278
+ function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
279
+ if (scrollbarSize !== undefined) {
280
+ return scrollbarSize;
281
+ }
282
+ if (rootElement === null || columnsTotalWidth === 0) {
283
+ return 0;
284
+ }
285
+ var doc = ownerDocument(rootElement);
286
+ var scrollDiv = doc.createElement('div');
287
+ scrollDiv.style.width = '99px';
288
+ scrollDiv.style.height = '99px';
289
+ scrollDiv.style.position = 'absolute';
290
+ scrollDiv.style.overflow = 'scroll';
291
+ scrollDiv.className = 'scrollDiv';
292
+ rootElement.appendChild(scrollDiv);
293
+ var size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
294
+ rootElement.removeChild(scrollDiv);
295
+ return size;
296
+ }
297
+
298
+ // Get rid of floating point imprecision errors
299
+ // https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
300
+ function roundToDecimalPlaces(value, decimals) {
301
+ return Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
227
302
  }
@@ -18,7 +18,7 @@ import { buildWarning } from '../../../utils/warning';
18
18
  import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
19
19
  import { deepClone } from '../../../utils/utils';
20
20
  import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
21
- var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence.'], 'error');
21
+ var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
22
22
  export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
23
23
  var _React$useState = React.useState({}),
24
24
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -40,12 +40,12 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
40
40
  var throwIfNotEditable = React.useCallback(function (id, field) {
41
41
  var params = apiRef.current.getCellParams(id, field);
42
42
  if (!apiRef.current.isCellEditable(params)) {
43
- throw new Error("MUI: The cell with id=".concat(id, " and field=").concat(field, " is not editable."));
43
+ throw new Error("MUI X: The cell with id=".concat(id, " and field=").concat(field, " is not editable."));
44
44
  }
45
45
  }, [apiRef]);
46
46
  var throwIfNotInMode = React.useCallback(function (id, field, mode) {
47
47
  if (apiRef.current.getCellMode(id, field) !== mode) {
48
- throw new Error("MUI: The cell with id=".concat(id, " and field=").concat(field, " is not in ").concat(mode, " mode."));
48
+ throw new Error("MUI X: The cell with id=".concat(id, " and field=").concat(field, " is not in ").concat(mode, " mode."));
49
49
  }
50
50
  }, [apiRef]);
51
51
  var handleCellDoubleClick = React.useCallback(function (params, event) {
@@ -299,7 +299,7 @@ export var useGridCellEditing = function useGridCellEditing(apiRef, props) {
299
299
  });
300
300
  if (onProcessRowUpdateError) {
301
301
  onProcessRowUpdateError(errorThrown);
302
- } else {
302
+ } else if (process.env.NODE_ENV !== 'production') {
303
303
  missingOnProcessRowUpdateErrorWarning();
304
304
  }
305
305
  };
@@ -18,7 +18,7 @@ import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
18
18
  import { deepClone } from '../../../utils/utils';
19
19
  import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
20
20
  import { GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
21
- var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see http://mui.com/components/data-grid/editing/#server-side-persistence.'], 'error');
21
+ var missingOnProcessRowUpdateErrorWarning = buildWarning(['MUI X: A call to `processRowUpdate` threw an error which was not handled because `onProcessRowUpdateError` is missing.', 'To handle the error pass a callback to the `onProcessRowUpdateError` prop, e.g. `<DataGrid onProcessRowUpdateError={(error) => ...} />`.', 'For more detail, see https://mui.com/x/react-data-grid/editing/#server-side-persistence.'], 'error');
22
22
  export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
23
23
  var _React$useState = React.useState({}),
24
24
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -42,12 +42,12 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
42
42
  var throwIfNotEditable = React.useCallback(function (id, field) {
43
43
  var params = apiRef.current.getCellParams(id, field);
44
44
  if (!apiRef.current.isCellEditable(params)) {
45
- throw new Error("MUI: The cell with id=".concat(id, " and field=").concat(field, " is not editable."));
45
+ throw new Error("MUI X: The cell with id=".concat(id, " and field=").concat(field, " is not editable."));
46
46
  }
47
47
  }, [apiRef]);
48
48
  var throwIfNotInMode = React.useCallback(function (id, mode) {
49
49
  if (apiRef.current.getRowMode(id) !== mode) {
50
- throw new Error("MUI: The row with id=".concat(id, " is not in ").concat(mode, " mode."));
50
+ throw new Error("MUI X: The row with id=".concat(id, " is not in ").concat(mode, " mode."));
51
51
  }
52
52
  }, [apiRef]);
53
53
  var handleCellDoubleClick = React.useCallback(function (params, event) {
@@ -378,7 +378,7 @@ export var useGridRowEditing = function useGridRowEditing(apiRef, props) {
378
378
  });
379
379
  if (onProcessRowUpdateError) {
380
380
  onProcessRowUpdateError(errorThrown);
381
- } else {
381
+ } else if (process.env.NODE_ENV !== 'production') {
382
382
  missingOnProcessRowUpdateErrorWarning();
383
383
  }
384
384
  };
@@ -36,7 +36,7 @@ export var serializeCellValue = function serializeCellValue(cellParams, options)
36
36
  }
37
37
  return sanitizeCellValue(value, delimiterCharacter);
38
38
  };
39
- var objectFormattedValueWarning = buildWarning(['MUI: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
39
+ var objectFormattedValueWarning = buildWarning(['MUI X: When the value of a field is an object or a `renderCell` is provided, the CSV export might not display the value correctly.', 'You can provide a `valueFormatter` with a string representation to be used.']);
40
40
  var CSVRow = /*#__PURE__*/function () {
41
41
  function CSVRow(options) {
42
42
  _classCallCheck(this, CSVRow);
@@ -116,10 +116,10 @@ export function buildCSV(options) {
116
116
  });
117
117
  var headerRows = [];
118
118
  if (includeColumnGroupsHeaders) {
119
- var columnGroupLookup = apiRef.current.unstable_getAllGroupDetails();
119
+ var columnGroupLookup = apiRef.current.getAllGroupDetails();
120
120
  var maxColumnGroupsDepth = 0;
121
121
  var columnGroupPathsLookup = filteredColumns.reduce(function (acc, column) {
122
- var columnGroupPath = apiRef.current.unstable_getColumnGroupPath(column.field);
122
+ var columnGroupPath = apiRef.current.getColumnGroupPath(column.field);
123
123
  acc[column.field] = columnGroupPath;
124
124
  maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);
125
125
  return acc;
@@ -234,7 +234,7 @@ export var useGridPrintExport = function useGridPrintExport(apiRef, props) {
234
234
  _context.next = 3;
235
235
  break;
236
236
  }
237
- throw new Error('MUI: No grid root element available.');
237
+ throw new Error('MUI X: No grid root element available.');
238
238
  case 3:
239
239
  previousGridState.current = apiRef.current.exportState();
240
240
  // It appends that the visibility model is not exported, especially if columnVisibility is not controlled
@@ -36,9 +36,9 @@ export var cleanFilterItem = function cleanFilterItem(item, apiRef) {
36
36
  }
37
37
  return cleanItem;
38
38
  };
39
- var filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
40
- var filterModelMissingItemIdWarning = buildWarning('MUI: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
41
- var filterModelMissingItemOperatorWarning = buildWarning('MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
39
+ var filterModelDisableMultiColumnsFilteringWarning = buildWarning(['MUI X: The `filterModel` can only contain a single item when the `disableMultipleColumnsFiltering` prop is set to `true`.', 'If you are using the community version of the `DataGrid`, this prop is always `true`.'], 'error');
40
+ var filterModelMissingItemIdWarning = buildWarning('MUI X: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
41
+ var filterModelMissingItemOperatorWarning = buildWarning('MUI X: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
42
42
  export var sanitizeFilterModel = function sanitizeFilterModel(model, disableMultipleColumnsFiltering, apiRef) {
43
43
  var hasSeveralItems = model.items.length > 1;
44
44
  var items;
@@ -114,13 +114,13 @@ var getFilterCallbackFromItem = function getFilterCallbackFromItem(filterItem, a
114
114
  });
115
115
  var filterOperators = column.filterOperators;
116
116
  if (!(filterOperators != null && filterOperators.length)) {
117
- throw new Error("MUI: No filter operators found for column '".concat(column.field, "'."));
117
+ throw new Error("MUI X: No filter operators found for column '".concat(column.field, "'."));
118
118
  }
119
119
  var filterOperator = filterOperators.find(function (operator) {
120
120
  return operator.value === newFilterItem.operator;
121
121
  });
122
122
  if (!filterOperator) {
123
- throw new Error("MUI: No filter operator found for column '".concat(column.field, "' and operator value '").concat(newFilterItem.operator, "'."));
123
+ throw new Error("MUI X: No filter operator found for column '".concat(column.field, "' and operator value '").concat(newFilterItem.operator, "'."));
124
124
  }
125
125
  var publicApiRef = getPublicApiRef(apiRef);
126
126
  var applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);
@@ -7,7 +7,7 @@ import { useLazyRef } from '../../utils/useLazyRef';
7
7
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
8
8
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
9
9
  import { useGridLogger } from '../../utils/useGridLogger';
10
- import { gridFilterableColumnLookupSelector } from '../columns/gridColumnsSelector';
10
+ import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
11
11
  import { GridPreferencePanelsValue } from '../preferencesPanel/gridPreferencePanelsValue';
12
12
  import { getDefaultGridFilterModel } from './gridFilterState';
13
13
  import { gridFilterModelSelector } from './gridFilterSelector';
@@ -322,9 +322,9 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
322
322
  var handleColumnsChange = React.useCallback(function () {
323
323
  logger.debug('onColUpdated - GridColumns changed, applying filters');
324
324
  var filterModel = gridFilterModelSelector(apiRef);
325
- var filterableColumnsLookup = gridFilterableColumnLookupSelector(apiRef);
325
+ var columnsLookup = gridColumnLookupSelector(apiRef);
326
326
  var newFilterItems = filterModel.items.filter(function (item) {
327
- return item.field && filterableColumnsLookup[item.field];
327
+ return item.field && columnsLookup[item.field];
328
328
  });
329
329
  if (newFilterItems.length < filterModel.items.length) {
330
330
  apiRef.current.setFilterModel(_extends({}, filterModel, {
@@ -11,9 +11,7 @@ export var gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector
11
11
  export var gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, function (focusState) {
12
12
  return focusState.columnHeaderFilter;
13
13
  });
14
-
15
- // eslint-disable-next-line @typescript-eslint/naming-convention
16
- export var unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, function (focusState) {
14
+ export var gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, function (focusState) {
17
15
  return focusState.columnGroupHeader;
18
16
  });
19
17
  export var gridTabIndexStateSelector = function gridTabIndexStateSelector(state) {
@@ -28,8 +26,6 @@ export var gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSe
28
26
  export var gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, function (state) {
29
27
  return state.columnHeaderFilter;
30
28
  });
31
-
32
- // eslint-disable-next-line @typescript-eslint/naming-convention
33
- export var unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, function (state) {
29
+ export var gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, function (state) {
34
30
  return state.columnGroupHeader;
35
31
  });
@@ -6,7 +6,7 @@ import { useGridApiMethod } from '../../utils/useGridApiMethod';
6
6
  import { useGridLogger } from '../../utils/useGridLogger';
7
7
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
8
8
  import { isNavigationKey } from '../../../utils/keyboardUtils';
9
- import { gridFocusCellSelector, unstable_gridFocusColumnGroupHeaderSelector } from './gridFocusStateSelector';
9
+ import { gridFocusCellSelector, gridFocusColumnGroupHeaderSelector } from './gridFocusStateSelector';
10
10
  import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSelector';
11
11
  import { getVisibleRows } from '../../utils/useGridVisibleRows';
12
12
  import { clamp } from '../../../utils/utils';
@@ -170,7 +170,7 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
170
170
  apiRef.current.forceUpdate();
171
171
  }, [apiRef]);
172
172
  var getColumnGroupHeaderFocus = React.useCallback(function () {
173
- return unstable_gridFocusColumnGroupHeaderSelector(apiRef);
173
+ return gridFocusColumnGroupHeaderSelector(apiRef);
174
174
  }, [apiRef]);
175
175
  var moveFocusToRelativeCell = React.useCallback(function (id, field, direction) {
176
176
  var columnIndexToFocus = apiRef.current.getColumnIndex(field);
@@ -250,7 +250,7 @@ export var useGridFocus = function useGridFocus(apiRef, props) {
250
250
  if (event.target !== event.currentTarget) {
251
251
  return;
252
252
  }
253
- var focusedColumnGroup = unstable_gridFocusColumnGroupHeaderSelector(apiRef);
253
+ var focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
254
254
  if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
255
255
  // This group cell has already been focused
256
256
  return;