@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,137 +1,95 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import * as React from 'react';
2
- import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';
3
+ import { unstable_debounce as debounce, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useEventCallback as useEventCallback, unstable_ownerWindow as ownerWindow } from '@mui/utils';
3
4
  import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/useGridApiEventHandler';
4
5
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
5
6
  import { useGridLogger } from '../../utils/useGridLogger';
6
- import { gridColumnsTotalWidthSelector } from '../columns';
7
+ import { gridColumnsTotalWidthSelector, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
8
+ import { gridDimensionsSelector } from './gridDimensionsSelectors';
7
9
  import { gridDensityFactorSelector } from '../density';
10
+ import { gridRenderContextSelector } from '../virtualization';
8
11
  import { useGridSelector } from '../../utils';
9
12
  import { getVisibleRows } from '../../utils/useGridVisibleRows';
10
13
  import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
11
14
  import { calculatePinnedRowsHeight } from '../rows/gridRowsUtils';
12
15
  import { getTotalHeaderHeight } from '../columns/gridColumnsUtils';
13
- const isTestEnvironment = process.env.NODE_ENV === 'test';
14
- const hasScroll = ({
15
- content,
16
- container,
17
- scrollBarSize
18
- }) => {
19
- const hasScrollXIfNoYScrollBar = content.width > container.width;
20
- const hasScrollYIfNoXScrollBar = content.height > container.height;
21
- let hasScrollX = false;
22
- let 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,
34
- hasScrollY
35
- };
16
+ const EMPTY_SIZE = {
17
+ width: 0,
18
+ height: 0
19
+ };
20
+ const EMPTY_DIMENSIONS = {
21
+ isReady: false,
22
+ root: EMPTY_SIZE,
23
+ viewportOuterSize: EMPTY_SIZE,
24
+ viewportInnerSize: EMPTY_SIZE,
25
+ contentSize: EMPTY_SIZE,
26
+ minimumSize: EMPTY_SIZE,
27
+ hasScrollX: false,
28
+ hasScrollY: false,
29
+ scrollbarSize: 0,
30
+ headerHeight: 0,
31
+ rowWidth: 0,
32
+ rowHeight: 0,
33
+ columnsTotalWidth: 0,
34
+ leftPinnedWidth: 0,
35
+ rightPinnedWidth: 0,
36
+ headersTotalHeight: 0,
37
+ topContainerHeight: 0,
38
+ bottomContainerHeight: 0
39
+ };
40
+ export const dimensionsStateInitializer = state => {
41
+ const dimensions = EMPTY_DIMENSIONS;
42
+ return _extends({}, state, {
43
+ dimensions
44
+ });
36
45
  };
37
46
  export function useGridDimensions(apiRef, props) {
38
47
  const logger = useGridLogger(apiRef, 'useResizeContainer');
39
48
  const errorShown = React.useRef(false);
40
- const rootDimensionsRef = React.useRef(null);
41
- const fullDimensionsRef = React.useRef(null);
49
+ const rootDimensionsRef = React.useRef(EMPTY_SIZE);
42
50
  const rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
51
+ const pinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
43
52
  const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
44
53
  const rowHeight = Math.floor(props.rowHeight * densityFactor);
45
- const totalHeaderHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight);
46
- const updateGridDimensionsRef = React.useCallback(() => {
47
- var _apiRef$current$rootE;
48
- const rootElement = (_apiRef$current$rootE = apiRef.current.rootElementRef) == null ? void 0 : _apiRef$current$rootE.current;
49
- const columnsTotalWidth = gridColumnsTotalWidthSelector(apiRef);
50
- const pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
51
- if (!rootDimensionsRef.current) {
52
- return;
53
- }
54
- let scrollBarSize;
55
- if (props.scrollbarSize != null) {
56
- scrollBarSize = props.scrollbarSize;
57
- } else if (!columnsTotalWidth || !rootElement) {
58
- scrollBarSize = 0;
59
- } else {
60
- const doc = ownerDocument(rootElement);
61
- const 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
- let viewportOuterSize;
72
- let hasScrollX;
73
- let 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
- const 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
96
- });
97
- hasScrollY = scrollInformation.hasScrollY;
98
- hasScrollX = scrollInformation.hasScrollX;
99
- }
100
- const viewportInnerSize = {
101
- width: viewportOuterSize.width - (hasScrollY ? scrollBarSize : 0),
102
- height: viewportOuterSize.height - (hasScrollX ? scrollBarSize : 0)
103
- };
104
- const newFullDimensions = {
105
- viewportOuterSize,
106
- viewportInnerSize,
107
- hasScrollX,
108
- hasScrollY,
109
- scrollBarSize
110
- };
111
- const 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]);
54
+ const headerHeight = Math.floor(props.columnHeaderHeight * densityFactor);
55
+ const columnsTotalWidth = roundToDecimalPlaces(gridColumnsTotalWidthSelector(apiRef), 6);
56
+ // XXX: The `props as any` below is not resilient to change.
57
+ const hasHeaderFilters = Boolean(props.headerFilters);
58
+ const headersTotalHeight = getTotalHeaderHeight(apiRef, props.columnHeaderHeight) + Number(hasHeaderFilters) * headerHeight;
59
+ const leftPinnedWidth = pinnedColumns.left.reduce((w, col) => w + col.computedWidth, 0);
60
+ const rightPinnedWidth = pinnedColumns.right.reduce((w, col) => w + col.computedWidth, 0);
117
61
  const [savedSize, setSavedSize] = React.useState();
118
62
  const debouncedSetSavedSize = React.useMemo(() => debounce(setSavedSize, 60), []);
119
63
  const previousSize = React.useRef();
120
- useEnhancedEffect(() => {
121
- if (savedSize) {
122
- updateGridDimensionsRef();
123
- apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
124
- }
125
- }, [apiRef, savedSize, updateGridDimensionsRef]);
126
-
127
- // This is the function called by apiRef.current.resize()
64
+ const getRootDimensions = () => apiRef.current.state.dimensions;
65
+ const setDimensions = useEventCallback(dimensions => {
66
+ apiRef.current.setState(state => _extends({}, state, {
67
+ dimensions
68
+ }));
69
+ });
128
70
  const resize = React.useCallback(() => {
129
- apiRef.current.computeSizeAndPublishResizeEvent();
71
+ var _previousSize$current, _previousSize$current2;
72
+ const element = apiRef.current.mainElementRef.current;
73
+ if (!element) {
74
+ return;
75
+ }
76
+ const computedStyle = ownerWindow(element).getComputedStyle(element);
77
+ const height = parseFloat(computedStyle.height) || 0;
78
+ const width = parseFloat(computedStyle.width) || 0;
79
+ const hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
80
+ const hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
81
+ if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
82
+ const size = {
83
+ width,
84
+ height
85
+ };
86
+ apiRef.current.publishEvent('resize', size);
87
+ previousSize.current = size;
88
+ }
130
89
  }, [apiRef]);
131
- const getRootDimensions = React.useCallback(() => fullDimensionsRef.current, []);
132
90
  const getViewportPageSize = React.useCallback(() => {
133
- const dimensions = apiRef.current.getRootDimensions();
134
- if (!dimensions) {
91
+ const dimensions = gridDimensionsSelector(apiRef.current.state);
92
+ if (!dimensions.isReady) {
135
93
  return 0;
136
94
  }
137
95
  const currentPage = getVisibleRows(apiRef, {
@@ -142,45 +100,136 @@ export function useGridDimensions(apiRef, props) {
142
100
  // TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
143
101
  // to find out the maximum number of rows that can fit in the visible part of the grid
144
102
  if (props.getRowHeight) {
145
- const renderContext = apiRef.current.getRenderContext();
103
+ const renderContext = gridRenderContextSelector(apiRef);
146
104
  const viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
147
105
  return Math.min(viewportPageSize - 1, currentPage.rows.length);
148
106
  }
149
107
  const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
150
108
  return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
151
109
  }, [apiRef, props.pagination, props.paginationMode, props.getRowHeight, rowHeight]);
152
- const computeSizeAndPublishResizeEvent = React.useCallback(() => {
153
- var _apiRef$current$mainE, _previousSize$current, _previousSize$current2;
154
- const mainEl = (_apiRef$current$mainE = apiRef.current.mainElementRef) == null ? void 0 : _apiRef$current$mainE.current;
155
- if (!mainEl) {
156
- return;
157
- }
158
- const win = ownerWindow(mainEl);
159
- const computedStyle = win.getComputedStyle(mainEl);
160
- const height = parseFloat(computedStyle.height) || 0;
161
- const width = parseFloat(computedStyle.width) || 0;
162
- const hasHeightChanged = height !== ((_previousSize$current = previousSize.current) == null ? void 0 : _previousSize$current.height);
163
- const hasWidthChanged = width !== ((_previousSize$current2 = previousSize.current) == null ? void 0 : _previousSize$current2.width);
164
- if (!previousSize.current || hasHeightChanged || hasWidthChanged) {
165
- const size = {
166
- width,
167
- height
110
+ const updateDimensions = React.useCallback(() => {
111
+ var _apiRef$current$updat, _apiRef$current;
112
+ const rootElement = apiRef.current.rootElementRef.current;
113
+ const pinnedRowsHeight = calculatePinnedRowsHeight(apiRef);
114
+ const scrollbarSize = measureScrollbarSize(rootElement, columnsTotalWidth, props.scrollbarSize);
115
+ const topContainerHeight = headersTotalHeight + pinnedRowsHeight.top;
116
+ const bottomContainerHeight = pinnedRowsHeight.bottom;
117
+ const contentSize = {
118
+ width: columnsTotalWidth,
119
+ height: rowsMeta.currentPageTotalHeight
120
+ };
121
+ let viewportOuterSize;
122
+ let viewportInnerSize;
123
+ let hasScrollX = false;
124
+ let hasScrollY = false;
125
+ if (props.autoHeight) {
126
+ hasScrollY = false;
127
+ hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
128
+ viewportOuterSize = {
129
+ width: rootDimensionsRef.current.width,
130
+ height: topContainerHeight + bottomContainerHeight + contentSize.height
168
131
  };
169
- apiRef.current.publishEvent('resize', size);
170
- previousSize.current = size;
132
+ viewportInnerSize = {
133
+ width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
134
+ height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
135
+ };
136
+ } else {
137
+ viewportOuterSize = {
138
+ width: rootDimensionsRef.current.width,
139
+ height: rootDimensionsRef.current.height
140
+ };
141
+ viewportInnerSize = {
142
+ width: Math.max(0, viewportOuterSize.width - leftPinnedWidth - rightPinnedWidth),
143
+ height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
144
+ };
145
+ const content = contentSize;
146
+ const container = viewportInnerSize;
147
+ const hasScrollXIfNoYScrollBar = content.width > container.width;
148
+ const hasScrollYIfNoXScrollBar = content.height > container.height;
149
+ if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
150
+ hasScrollY = hasScrollYIfNoXScrollBar;
151
+ hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
152
+
153
+ // We recalculate the scroll y to consider the size of the x scrollbar.
154
+ if (hasScrollX) {
155
+ hasScrollY = content.height + scrollbarSize > container.height;
156
+ }
157
+ }
158
+ if (hasScrollY) {
159
+ viewportInnerSize.width -= scrollbarSize;
160
+ }
161
+ if (hasScrollX) {
162
+ viewportInnerSize.height -= scrollbarSize;
163
+ }
171
164
  }
172
- }, [apiRef]);
173
- const dimensionsApi = {
165
+ const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
166
+ const minimumSize = {
167
+ width: contentSize.width,
168
+ height: topContainerHeight + contentSize.height + bottomContainerHeight
169
+ };
170
+ const newDimensions = {
171
+ isReady: true,
172
+ root: rootDimensionsRef.current,
173
+ viewportOuterSize,
174
+ viewportInnerSize,
175
+ contentSize,
176
+ minimumSize,
177
+ hasScrollX,
178
+ hasScrollY,
179
+ scrollbarSize,
180
+ headerHeight,
181
+ rowWidth,
182
+ rowHeight,
183
+ columnsTotalWidth,
184
+ leftPinnedWidth,
185
+ rightPinnedWidth,
186
+ headersTotalHeight,
187
+ topContainerHeight,
188
+ bottomContainerHeight
189
+ };
190
+ const prevDimensions = apiRef.current.state.dimensions;
191
+ setDimensions(newDimensions);
192
+ if (newDimensions.viewportInnerSize.width !== prevDimensions.viewportInnerSize.width || newDimensions.viewportInnerSize.height !== prevDimensions.viewportInnerSize.height) {
193
+ apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
194
+ }
195
+ (_apiRef$current$updat = (_apiRef$current = apiRef.current).updateRenderContext) == null || _apiRef$current$updat.call(_apiRef$current);
196
+ }, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowsMeta.currentPageTotalHeight, rowHeight, headerHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
197
+ const apiPublic = {
174
198
  resize,
175
199
  getRootDimensions
176
200
  };
177
- const dimensionsPrivateApi = {
178
- getViewportPageSize,
179
- updateGridDimensionsRef,
180
- computeSizeAndPublishResizeEvent
201
+ const apiPrivate = {
202
+ updateDimensions,
203
+ getViewportPageSize
181
204
  };
182
- useGridApiMethod(apiRef, dimensionsApi, 'public');
183
- useGridApiMethod(apiRef, dimensionsPrivateApi, 'private');
205
+ useGridApiMethod(apiRef, apiPublic, 'public');
206
+ useGridApiMethod(apiRef, apiPrivate, 'private');
207
+ useEnhancedEffect(() => {
208
+ if (savedSize) {
209
+ updateDimensions();
210
+ apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
211
+ }
212
+ }, [apiRef, savedSize, updateDimensions]);
213
+ const root = apiRef.current.rootElementRef.current;
214
+ const dimensions = apiRef.current.state.dimensions;
215
+ useEnhancedEffect(() => {
216
+ if (!root) {
217
+ return;
218
+ }
219
+ const set = (k, v) => root.style.setProperty(k, v);
220
+ set('--DataGrid-width', `${dimensions.viewportOuterSize.width}px`);
221
+ set('--DataGrid-hasScrollX', `${Number(dimensions.hasScrollX)}`);
222
+ set('--DataGrid-hasScrollY', `${Number(dimensions.hasScrollY)}`);
223
+ set('--DataGrid-scrollbarSize', `${dimensions.scrollbarSize}px`);
224
+ set('--DataGrid-rowWidth', `${dimensions.rowWidth}px`);
225
+ set('--DataGrid-columnsTotalWidth', `${dimensions.columnsTotalWidth}px`);
226
+ set('--DataGrid-leftPinnedWidth', `${dimensions.leftPinnedWidth}px`);
227
+ set('--DataGrid-rightPinnedWidth', `${dimensions.rightPinnedWidth}px`);
228
+ set('--DataGrid-headerHeight', `${dimensions.headerHeight}px`);
229
+ set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
230
+ set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
231
+ set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
232
+ }, [root, dimensions]);
184
233
  const isFirstSizing = React.useRef(true);
185
234
  const handleResize = React.useCallback(size => {
186
235
  rootDimensionsRef.current = size;
@@ -195,12 +244,6 @@ export function useGridDimensions(apiRef, props) {
195
244
  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'));
196
245
  errorShown.current = true;
197
246
  }
198
- if (isTestEnvironment) {
199
- // We don't need to debounce the resize for tests.
200
- setSavedSize(size);
201
- isFirstSizing.current = false;
202
- return;
203
- }
204
247
  if (isFirstSizing.current) {
205
248
  // We want to initialize the grid dimensions as soon as possible to avoid flickering
206
249
  setSavedSize(size);
@@ -209,10 +252,35 @@ export function useGridDimensions(apiRef, props) {
209
252
  }
210
253
  debouncedSetSavedSize(size);
211
254
  }, [props.autoHeight, debouncedSetSavedSize, logger]);
212
- useEnhancedEffect(() => updateGridDimensionsRef(), [updateGridDimensionsRef]);
213
- useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateGridDimensionsRef);
214
- useGridApiOptionHandler(apiRef, 'paginationModelChange', updateGridDimensionsRef);
215
- useGridApiOptionHandler(apiRef, 'columnsChange', updateGridDimensionsRef);
255
+ useEnhancedEffect(updateDimensions, [updateDimensions]);
256
+ useGridApiOptionHandler(apiRef, 'sortedRowsSet', updateDimensions);
257
+ useGridApiOptionHandler(apiRef, 'paginationModelChange', updateDimensions);
258
+ useGridApiOptionHandler(apiRef, 'columnsChange', updateDimensions);
216
259
  useGridApiEventHandler(apiRef, 'resize', handleResize);
217
260
  useGridApiOptionHandler(apiRef, 'debouncedResize', props.onResize);
261
+ }
262
+ function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
263
+ if (scrollbarSize !== undefined) {
264
+ return scrollbarSize;
265
+ }
266
+ if (rootElement === null || columnsTotalWidth === 0) {
267
+ return 0;
268
+ }
269
+ const doc = ownerDocument(rootElement);
270
+ const scrollDiv = doc.createElement('div');
271
+ scrollDiv.style.width = '99px';
272
+ scrollDiv.style.height = '99px';
273
+ scrollDiv.style.position = 'absolute';
274
+ scrollDiv.style.overflow = 'scroll';
275
+ scrollDiv.className = 'scrollDiv';
276
+ rootElement.appendChild(scrollDiv);
277
+ const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
278
+ rootElement.removeChild(scrollDiv);
279
+ return size;
280
+ }
281
+
282
+ // Get rid of floating point imprecision errors
283
+ // https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
284
+ function roundToDecimalPlaces(value, decimals) {
285
+ return Math.round(value * 10 ** decimals) / 10 ** decimals;
218
286
  }
@@ -14,7 +14,7 @@ import { buildWarning } from '../../../utils/warning';
14
14
  import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
15
15
  import { deepClone } from '../../../utils/utils';
16
16
  import { GridCellEditStartReasons, GridCellEditStopReasons } from '../../../models/params/gridEditCellParams';
17
- const 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');
17
+ const 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');
18
18
  export const useGridCellEditing = (apiRef, props) => {
19
19
  const [cellModesModel, setCellModesModel] = React.useState({});
20
20
  const cellModesModelRef = React.useRef(cellModesModel);
@@ -33,12 +33,12 @@ export const useGridCellEditing = (apiRef, props) => {
33
33
  const throwIfNotEditable = React.useCallback((id, field) => {
34
34
  const params = apiRef.current.getCellParams(id, field);
35
35
  if (!apiRef.current.isCellEditable(params)) {
36
- throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
36
+ throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
37
37
  }
38
38
  }, [apiRef]);
39
39
  const throwIfNotInMode = React.useCallback((id, field, mode) => {
40
40
  if (apiRef.current.getCellMode(id, field) !== mode) {
41
- throw new Error(`MUI: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
41
+ throw new Error(`MUI X: The cell with id=${id} and field=${field} is not in ${mode} mode.`);
42
42
  }
43
43
  }, [apiRef]);
44
44
  const handleCellDoubleClick = React.useCallback((params, event) => {
@@ -302,7 +302,7 @@ export const useGridCellEditing = (apiRef, props) => {
302
302
  });
303
303
  if (onProcessRowUpdateError) {
304
304
  onProcessRowUpdateError(errorThrown);
305
- } else {
305
+ } else if (process.env.NODE_ENV !== 'production') {
306
306
  missingOnProcessRowUpdateErrorWarning();
307
307
  }
308
308
  };
@@ -16,7 +16,7 @@ import { gridRowsDataRowIdToIdLookupSelector } from '../rows/gridRowsSelector';
16
16
  import { deepClone } from '../../../utils/utils';
17
17
  import { GridRowEditStopReasons, GridRowEditStartReasons } from '../../../models/params/gridRowParams';
18
18
  import { GRID_ACTIONS_COLUMN_TYPE } from '../../../colDef';
19
- const 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');
19
+ const 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');
20
20
  export const useGridRowEditing = (apiRef, props) => {
21
21
  const [rowModesModel, setRowModesModel] = React.useState({});
22
22
  const rowModesModelRef = React.useRef(rowModesModel);
@@ -37,12 +37,12 @@ export const useGridRowEditing = (apiRef, props) => {
37
37
  const throwIfNotEditable = React.useCallback((id, field) => {
38
38
  const params = apiRef.current.getCellParams(id, field);
39
39
  if (!apiRef.current.isCellEditable(params)) {
40
- throw new Error(`MUI: The cell with id=${id} and field=${field} is not editable.`);
40
+ throw new Error(`MUI X: The cell with id=${id} and field=${field} is not editable.`);
41
41
  }
42
42
  }, [apiRef]);
43
43
  const throwIfNotInMode = React.useCallback((id, mode) => {
44
44
  if (apiRef.current.getRowMode(id) !== mode) {
45
- throw new Error(`MUI: The row with id=${id} is not in ${mode} mode.`);
45
+ throw new Error(`MUI X: The row with id=${id} is not in ${mode} mode.`);
46
46
  }
47
47
  }, [apiRef]);
48
48
  const handleCellDoubleClick = React.useCallback((params, event) => {
@@ -380,7 +380,7 @@ export const useGridRowEditing = (apiRef, props) => {
380
380
  });
381
381
  if (onProcessRowUpdateError) {
382
382
  onProcessRowUpdateError(errorThrown);
383
- } else {
383
+ } else if (process.env.NODE_ENV !== 'production') {
384
384
  missingOnProcessRowUpdateErrorWarning();
385
385
  }
386
386
  };
@@ -34,7 +34,7 @@ export const serializeCellValue = (cellParams, options) => {
34
34
  }
35
35
  return sanitizeCellValue(value, delimiterCharacter);
36
36
  };
37
- const 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.']);
37
+ const 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.']);
38
38
  class CSVRow {
39
39
  constructor(options) {
40
40
  this.options = void 0;
@@ -106,10 +106,10 @@ export function buildCSV(options) {
106
106
  const filteredColumns = columns.filter(column => column.field !== GRID_CHECKBOX_SELECTION_COL_DEF.field);
107
107
  const headerRows = [];
108
108
  if (includeColumnGroupsHeaders) {
109
- const columnGroupLookup = apiRef.current.unstable_getAllGroupDetails();
109
+ const columnGroupLookup = apiRef.current.getAllGroupDetails();
110
110
  let maxColumnGroupsDepth = 0;
111
111
  const columnGroupPathsLookup = filteredColumns.reduce((acc, column) => {
112
- const columnGroupPath = apiRef.current.unstable_getColumnGroupPath(column.field);
112
+ const columnGroupPath = apiRef.current.getColumnGroupPath(column.field);
113
113
  acc[column.field] = columnGroupPath;
114
114
  maxColumnGroupsDepth = Math.max(maxColumnGroupsDepth, columnGroupPath.length);
115
115
  return acc;
@@ -211,7 +211,7 @@ export const useGridPrintExport = (apiRef, props) => {
211
211
  var _options$getRowsToExp;
212
212
  logger.debug(`Export data as Print`);
213
213
  if (!apiRef.current.rootElementRef.current) {
214
- throw new Error('MUI: No grid root element available.');
214
+ throw new Error('MUI X: No grid root element available.');
215
215
  }
216
216
  previousGridState.current = apiRef.current.exportState();
217
217
  // It appends that the visibility model is not exported, especially if columnVisibility is not controlled
@@ -36,9 +36,9 @@ export const cleanFilterItem = (item, apiRef) => {
36
36
  }
37
37
  return cleanItem;
38
38
  };
39
- const 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
- const filterModelMissingItemIdWarning = buildWarning('MUI: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
41
- const filterModelMissingItemOperatorWarning = buildWarning('MUI: The `operator` field is required on `filterModel.items`, one or more of your filtering item has no `operator` provided.', 'error');
39
+ const 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
+ const filterModelMissingItemIdWarning = buildWarning('MUI X: The `id` field is required on `filterModel.items` when you use multiple filters.', 'error');
41
+ const 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 const sanitizeFilterModel = (model, disableMultipleColumnsFiltering, apiRef) => {
43
43
  const hasSeveralItems = model.items.length > 1;
44
44
  let items;
@@ -104,11 +104,11 @@ const getFilterCallbackFromItem = (filterItem, apiRef) => {
104
104
  });
105
105
  const filterOperators = column.filterOperators;
106
106
  if (!(filterOperators != null && filterOperators.length)) {
107
- throw new Error(`MUI: No filter operators found for column '${column.field}'.`);
107
+ throw new Error(`MUI X: No filter operators found for column '${column.field}'.`);
108
108
  }
109
109
  const filterOperator = filterOperators.find(operator => operator.value === newFilterItem.operator);
110
110
  if (!filterOperator) {
111
- throw new Error(`MUI: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
111
+ throw new Error(`MUI X: No filter operator found for column '${column.field}' and operator value '${newFilterItem.operator}'.`);
112
112
  }
113
113
  const publicApiRef = getPublicApiRef(apiRef);
114
114
  const applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);
@@ -6,7 +6,7 @@ import { useLazyRef } from '../../utils/useLazyRef';
6
6
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
7
7
  import { useGridApiMethod } from '../../utils/useGridApiMethod';
8
8
  import { useGridLogger } from '../../utils/useGridLogger';
9
- import { gridFilterableColumnLookupSelector } from '../columns/gridColumnsSelector';
9
+ import { gridColumnLookupSelector } from '../columns/gridColumnsSelector';
10
10
  import { GridPreferencePanelsValue } from '../preferencesPanel/gridPreferencePanelsValue';
11
11
  import { getDefaultGridFilterModel } from './gridFilterState';
12
12
  import { gridFilterModelSelector } from './gridFilterSelector';
@@ -315,8 +315,8 @@ export const useGridFilter = (apiRef, props) => {
315
315
  const handleColumnsChange = React.useCallback(() => {
316
316
  logger.debug('onColUpdated - GridColumns changed, applying filters');
317
317
  const filterModel = gridFilterModelSelector(apiRef);
318
- const filterableColumnsLookup = gridFilterableColumnLookupSelector(apiRef);
319
- const newFilterItems = filterModel.items.filter(item => item.field && filterableColumnsLookup[item.field]);
318
+ const columnsLookup = gridColumnLookupSelector(apiRef);
319
+ const newFilterItems = filterModel.items.filter(item => item.field && columnsLookup[item.field]);
320
320
  if (newFilterItems.length < filterModel.items.length) {
321
321
  apiRef.current.setFilterModel(_extends({}, filterModel, {
322
322
  items: newFilterItems
@@ -4,9 +4,9 @@ export declare const gridFocusStateSelector: (state: GridStateCommunity) => Grid
4
4
  export declare const gridFocusCellSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridCellCoordinates | null>;
5
5
  export declare const gridFocusColumnHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
6
6
  export declare const gridFocusColumnHeaderFilterSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
7
- export declare const unstable_gridFocusColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
7
+ export declare const gridFocusColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
8
8
  export declare const gridTabIndexStateSelector: (state: GridStateCommunity) => GridTabIndexState;
9
9
  export declare const gridTabIndexCellSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("../../..").GridCellCoordinates | null>;
10
10
  export declare const gridTabIndexColumnHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
11
11
  export declare const gridTabIndexColumnHeaderFilterSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnIdentifier | null>;
12
- export declare const unstable_gridTabIndexColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
12
+ export declare const gridTabIndexColumnGroupHeaderSelector: import("../../../utils/createSelector").OutputSelector<GridStateCommunity, import("./gridFocusState").GridColumnGroupIdentifier | null>;
@@ -3,13 +3,9 @@ export const gridFocusStateSelector = state => state.focus;
3
3
  export const gridFocusCellSelector = createSelector(gridFocusStateSelector, focusState => focusState.cell);
4
4
  export const gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeader);
5
5
  export const gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnHeaderFilter);
6
-
7
- // eslint-disable-next-line @typescript-eslint/naming-convention
8
- export const unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
6
+ export const gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, focusState => focusState.columnGroupHeader);
9
7
  export const gridTabIndexStateSelector = state => state.tabIndex;
10
8
  export const gridTabIndexCellSelector = createSelector(gridTabIndexStateSelector, state => state.cell);
11
9
  export const gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeader);
12
10
  export const gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, state => state.columnHeaderFilter);
13
-
14
- // eslint-disable-next-line @typescript-eslint/naming-convention
15
- export const unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);
11
+ export const gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, state => state.columnGroupHeader);
@@ -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';
@@ -164,7 +164,7 @@ export const useGridFocus = (apiRef, props) => {
164
164
  });
165
165
  apiRef.current.forceUpdate();
166
166
  }, [apiRef]);
167
- const getColumnGroupHeaderFocus = React.useCallback(() => unstable_gridFocusColumnGroupHeaderSelector(apiRef), [apiRef]);
167
+ const getColumnGroupHeaderFocus = React.useCallback(() => gridFocusColumnGroupHeaderSelector(apiRef), [apiRef]);
168
168
  const moveFocusToRelativeCell = React.useCallback((id, field, direction) => {
169
169
  let columnIndexToFocus = apiRef.current.getColumnIndex(field);
170
170
  const visibleColumns = gridVisibleColumnDefinitionsSelector(apiRef);
@@ -244,7 +244,7 @@ export const useGridFocus = (apiRef, props) => {
244
244
  if (event.target !== event.currentTarget) {
245
245
  return;
246
246
  }
247
- const focusedColumnGroup = unstable_gridFocusColumnGroupHeaderSelector(apiRef);
247
+ const focusedColumnGroup = gridFocusColumnGroupHeaderSelector(apiRef);
248
248
  if (focusedColumnGroup !== null && focusedColumnGroup.depth === depth && fields.includes(focusedColumnGroup.field)) {
249
249
  // This group cell has already been focused
250
250
  return;