@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
@@ -70,6 +70,11 @@ process.env.NODE_ENV !== "production" ? GridToolbarExport.propTypes = {
70
70
  // | To update them edit the TypeScript types and run "yarn proptypes" |
71
71
  // ----------------------------------------------------------------------
72
72
  csvOptions: PropTypes.object,
73
- printOptions: PropTypes.object
73
+ printOptions: PropTypes.object,
74
+ /**
75
+ * The props used for each slot inside.
76
+ * @default {}
77
+ */
78
+ slotProps: PropTypes.object
74
79
  } : void 0;
75
80
  export { GridToolbarExport };
@@ -1,3 +1,17 @@
1
1
  import * as React from 'react';
2
2
  import { ButtonProps } from '@mui/material/Button';
3
- export declare const GridToolbarExportContainer: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
3
+ import { TooltipProps } from '@mui/material/Tooltip';
4
+ interface GridToolbarExportContainerProps {
5
+ /**
6
+ * The props used for each slot inside.
7
+ * @default {}
8
+ */
9
+ slotProps?: {
10
+ button?: Partial<ButtonProps>;
11
+ tooltip?: Partial<TooltipProps>;
12
+ };
13
+ }
14
+ declare const GridToolbarExportContainer: React.ForwardRefExoticComponent<GridToolbarExportContainerProps & {
15
+ children?: React.ReactNode;
16
+ } & React.RefAttributes<HTMLButtonElement>>;
17
+ export { GridToolbarExportContainer };
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["children", "onClick"];
4
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
5
4
  import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';
6
5
  import MenuList from '@mui/material/MenuList';
7
6
  import { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils';
@@ -11,13 +10,14 @@ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
11
10
  import { gridClasses } from '../../constants/gridClasses';
12
11
  import { jsx as _jsx } from "react/jsx-runtime";
13
12
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
- export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {
15
- var _rootProps$slotProps;
13
+ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {
14
+ var _rootProps$slotProps, _rootProps$slotProps2;
16
15
  const {
17
- children,
18
- onClick
19
- } = props,
20
- other = _objectWithoutPropertiesLoose(props, _excluded);
16
+ children,
17
+ slotProps = {}
18
+ } = props;
19
+ const buttonProps = slotProps.button || {};
20
+ const tooltipProps = slotProps.tooltip || {};
21
21
  const apiRef = useGridApiContext();
22
22
  const rootProps = useGridRootProps();
23
23
  const exportButtonId = useId();
@@ -26,8 +26,9 @@ export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function
26
26
  const buttonRef = React.useRef(null);
27
27
  const handleRef = useForkRef(ref, buttonRef);
28
28
  const handleMenuOpen = event => {
29
+ var _buttonProps$onClick;
29
30
  setOpen(prevOpen => !prevOpen);
30
- onClick == null || onClick(event);
31
+ (_buttonProps$onClick = buttonProps.onClick) == null || _buttonProps$onClick.call(buttonProps, event);
31
32
  };
32
33
  const handleMenuClose = () => setOpen(false);
33
34
  const handleListKeyDown = event => {
@@ -42,19 +43,24 @@ export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function
42
43
  return null;
43
44
  }
44
45
  return /*#__PURE__*/_jsxs(React.Fragment, {
45
- children: [/*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
46
- ref: handleRef,
47
- size: "small",
48
- startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),
49
- "aria-expanded": open,
50
- "aria-label": apiRef.current.getLocaleText('toolbarExportLabel'),
51
- "aria-haspopup": "menu",
52
- "aria-controls": open ? exportMenuId : undefined,
53
- id: exportButtonId
54
- }, other, {
55
- onClick: handleMenuOpen
56
- }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {
57
- children: apiRef.current.getLocaleText('toolbarExport')
46
+ children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
47
+ title: apiRef.current.getLocaleText('toolbarExportLabel'),
48
+ enterDelay: 1000
49
+ }, tooltipProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
50
+ children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
51
+ ref: handleRef,
52
+ size: "small",
53
+ startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),
54
+ "aria-expanded": open,
55
+ "aria-label": apiRef.current.getLocaleText('toolbarExportLabel'),
56
+ "aria-haspopup": "menu",
57
+ "aria-controls": open ? exportMenuId : undefined,
58
+ id: exportButtonId
59
+ }, buttonProps, {
60
+ onClick: handleMenuOpen
61
+ }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {
62
+ children: apiRef.current.getLocaleText('toolbarExport')
63
+ }))
58
64
  })), /*#__PURE__*/_jsx(GridMenu, {
59
65
  open: open,
60
66
  target: buttonRef.current,
@@ -77,4 +83,16 @@ export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function
77
83
  })
78
84
  })]
79
85
  });
80
- });
86
+ });
87
+ process.env.NODE_ENV !== "production" ? GridToolbarExportContainer.propTypes = {
88
+ // ----------------------------- Warning --------------------------------
89
+ // | These PropTypes are generated from the TypeScript type definitions |
90
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
91
+ // ----------------------------------------------------------------------
92
+ /**
93
+ * The props used for each slot inside.
94
+ * @default {}
95
+ */
96
+ slotProps: PropTypes.object
97
+ } : void 0;
98
+ export { GridToolbarExportContainer };
@@ -1,14 +1,15 @@
1
1
  import * as React from 'react';
2
2
  import { ButtonProps } from '@mui/material/Button';
3
3
  import { TooltipProps } from '@mui/material/Tooltip';
4
- export interface GridToolbarFilterButtonProps extends Omit<TooltipProps, 'title' | 'children' | 'componentsProps'> {
4
+ export interface GridToolbarFilterButtonProps {
5
5
  /**
6
6
  * The props used for each slot inside.
7
7
  * @default {}
8
8
  */
9
- componentsProps?: {
10
- button?: ButtonProps;
9
+ slotProps?: {
10
+ button?: Partial<ButtonProps>;
11
+ tooltip?: Partial<TooltipProps>;
11
12
  };
12
13
  }
13
- declare const GridToolbarFilterButton: React.ForwardRefExoticComponent<Omit<GridToolbarFilterButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
14
+ declare const GridToolbarFilterButton: React.ForwardRefExoticComponent<GridToolbarFilterButtonProps & React.RefAttributes<HTMLButtonElement>>;
14
15
  export { GridToolbarFilterButton };
@@ -1,6 +1,4 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["componentsProps"];
4
2
  import * as React from 'react';
5
3
  import PropTypes from 'prop-types';
6
4
  import { styled } from '@mui/material/styles';
@@ -38,10 +36,10 @@ const GridToolbarFilterListRoot = styled('ul', {
38
36
  const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbarFilterButton(props, ref) {
39
37
  var _rootProps$slotProps, _rootProps$slotProps2;
40
38
  const {
41
- componentsProps = {}
42
- } = props,
43
- other = _objectWithoutPropertiesLoose(props, _excluded);
44
- const buttonProps = componentsProps.button || {};
39
+ slotProps = {}
40
+ } = props;
41
+ const buttonProps = slotProps.button || {};
42
+ const tooltipProps = slotProps.tooltip || {};
45
43
  const apiRef = useGridApiContext();
46
44
  const rootProps = useGridRootProps();
47
45
  const activeFilters = useGridSelector(apiRef, gridFilterActiveItemsSelector);
@@ -100,7 +98,7 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
100
98
  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
101
99
  title: tooltipContentNode,
102
100
  enterDelay: 1000
103
- }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
101
+ }, tooltipProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
104
102
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
105
103
  ref: ref,
106
104
  id: filterButtonId,
@@ -130,8 +128,6 @@ process.env.NODE_ENV !== "production" ? GridToolbarFilterButton.propTypes = {
130
128
  * The props used for each slot inside.
131
129
  * @default {}
132
130
  */
133
- componentsProps: PropTypes.shape({
134
- button: PropTypes.object
135
- })
131
+ slotProps: PropTypes.object
136
132
  } : void 0;
137
133
  export { GridToolbarFilterButton };
@@ -6,12 +6,16 @@ export type GridToolbarQuickFilterProps = TextFieldProps & {
6
6
  * Function responsible for parsing text input in an array of independent values for quick filtering.
7
7
  * @param {string} input The value entered by the user
8
8
  * @returns {any[]} The array of value on which quick filter is applied
9
+ * @default (searchText: string) => searchText
10
+ * .split(' ')
11
+ * .filter((word) => word !== '')
9
12
  */
10
13
  quickFilterParser?: (input: string) => any[];
11
14
  /**
12
15
  * Function responsible for formatting values of quick filter in a string when the model is modified
13
16
  * @param {any[]} values The new values passed to the quick filter model
14
17
  * @returns {string} The string to display in the text field
18
+ * @default (values: string[]) => values.join(' ')
15
19
  */
16
20
  quickFilterFormatter?: (values: NonNullable<GridFilterModel['quickFilterValues']>) => string;
17
21
  /**
@@ -124,12 +124,16 @@ process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
124
124
  * Function responsible for formatting values of quick filter in a string when the model is modified
125
125
  * @param {any[]} values The new values passed to the quick filter model
126
126
  * @returns {string} The string to display in the text field
127
+ * @default (values: string[]) => values.join(' ')
127
128
  */
128
129
  quickFilterFormatter: PropTypes.func,
129
130
  /**
130
131
  * Function responsible for parsing text input in an array of independent values for quick filtering.
131
132
  * @param {string} input The value entered by the user
132
133
  * @returns {any[]} The array of value on which quick filter is applied
134
+ * @default (searchText: string) => searchText
135
+ * .split(' ')
136
+ * .filter((word) => word !== '')
133
137
  */
134
138
  quickFilterParser: PropTypes.func
135
139
  } : void 0;
@@ -0,0 +1,2 @@
1
+ import * as React from 'react';
2
+ export declare function GridBottomContainer(props: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
@@ -0,0 +1,25 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import clsx from 'clsx';
4
+ import { styled } from '@mui/system';
5
+ import { unstable_composeClasses as composeClasses } from '@mui/utils';
6
+ import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const useUtilityClasses = () => {
9
+ const slots = {
10
+ root: ['bottomContainer']
11
+ };
12
+ return composeClasses(slots, getDataGridUtilityClass, {});
13
+ };
14
+ const Element = styled('div')({
15
+ position: 'sticky',
16
+ zIndex: 2,
17
+ bottom: 'calc(var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize))'
18
+ });
19
+ export function GridBottomContainer(props) {
20
+ const classes = useUtilityClasses();
21
+ return /*#__PURE__*/_jsx(Element, _extends({}, props, {
22
+ className: clsx(classes.root, props.className, gridClasses['container--bottom']),
23
+ role: "presentation"
24
+ }));
25
+ }
@@ -1,4 +1,6 @@
1
1
  import * as React from 'react';
2
2
  export declare const GridMainContainer: React.ForwardRefExoticComponent<{
3
+ className: string;
4
+ } & {
3
5
  children?: React.ReactNode;
4
6
  } & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,20 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { styled } from '@mui/system';
4
+ import { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const Element = styled('div')({
7
+ flexGrow: 1,
8
+ position: 'relative',
9
+ overflow: 'hidden'
10
+ });
11
+ export const GridMainContainer = /*#__PURE__*/React.forwardRef((props, ref) => {
12
+ const ariaAttributes = useGridAriaAttributes();
13
+ return /*#__PURE__*/_jsx(Element, _extends({
14
+ ref: ref,
15
+ className: props.className,
16
+ tabIndex: -1
17
+ }, ariaAttributes, {
18
+ children: props.children
19
+ }));
20
+ });
@@ -0,0 +1,2 @@
1
+ import * as React from 'react';
2
+ export declare function GridTopContainer(props: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
@@ -0,0 +1,35 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import clsx from 'clsx';
4
+ import { styled } from '@mui/system';
5
+ import { unstable_composeClasses as composeClasses } from '@mui/utils';
6
+ import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const useUtilityClasses = () => {
9
+ const slots = {
10
+ root: ['topContainer']
11
+ };
12
+ return composeClasses(slots, getDataGridUtilityClass, {});
13
+ };
14
+ const Element = styled('div')({
15
+ position: 'sticky',
16
+ zIndex: 2,
17
+ top: 0,
18
+ '&::after': {
19
+ content: '" "',
20
+ position: 'absolute',
21
+ zIndex: 5,
22
+ bottom: 0,
23
+ left: 0,
24
+ height: 1,
25
+ width: 'var(--DataGrid-rowWidth)',
26
+ backgroundColor: 'var(--DataGrid-rowBorderColor)'
27
+ }
28
+ });
29
+ export function GridTopContainer(props) {
30
+ const classes = useUtilityClasses();
31
+ return /*#__PURE__*/_jsx(Element, _extends({}, props, {
32
+ className: clsx(classes.root, props.className, gridClasses['container--top']),
33
+ role: "presentation"
34
+ }));
35
+ }
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ type Position = 'vertical' | 'horizontal';
3
+ type GridVirtualScrollbarProps = {
4
+ position: Position;
5
+ };
6
+ declare const GridVirtualScrollbar: React.ForwardRefExoticComponent<GridVirtualScrollbarProps & React.RefAttributes<HTMLDivElement>>;
7
+ export { GridVirtualScrollbar };
@@ -0,0 +1,131 @@
1
+ import * as React from 'react';
2
+ import { styled } from '@mui/system';
3
+ import { unstable_composeClasses as composeClasses, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback } from '@mui/utils';
4
+ import { useOnMount } from '../../hooks/utils/useOnMount';
5
+ import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';
6
+ import { gridDimensionsSelector, useGridSelector } from '../../hooks';
7
+ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
8
+ import { getDataGridUtilityClass } from '../../constants/gridClasses';
9
+ import { jsx as _jsx } from "react/jsx-runtime";
10
+ const useUtilityClasses = (ownerState, position) => {
11
+ const {
12
+ classes
13
+ } = ownerState;
14
+ const slots = {
15
+ root: ['scrollbar', `scrollbar--${position}`],
16
+ content: ['scrollbarContent']
17
+ };
18
+ return composeClasses(slots, getDataGridUtilityClass, classes);
19
+ };
20
+ const Scrollbar = styled('div')({
21
+ position: 'absolute',
22
+ display: 'inline-block',
23
+ zIndex: 6,
24
+ '& > div': {
25
+ display: 'inline-block'
26
+ },
27
+ // In macOS Safari and Gnome Web, scrollbars are overlaid and don't affect the layout. So we consider
28
+ // their size to be 0px throughout all the calculations, but the floating scrollbar container does need
29
+ // to appear and have a real size. We set it to 14px because it seems like an acceptable value and we
30
+ // don't have a method to find the required size for scrollbars on those platforms.
31
+ '--size': 'calc(max(var(--DataGrid-scrollbarSize), 14px))'
32
+ });
33
+ const ScrollbarVertical = styled(Scrollbar)({
34
+ width: 'var(--size)',
35
+ height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
36
+ overflowY: 'auto',
37
+ overflowX: 'hidden',
38
+ '& > div': {
39
+ width: 'var(--size)'
40
+ },
41
+ top: 'var(--DataGrid-topContainerHeight)',
42
+ right: '0px'
43
+ });
44
+ const ScrollbarHorizontal = styled(Scrollbar)({
45
+ width: '100%',
46
+ height: 'var(--size)',
47
+ overflowY: 'hidden',
48
+ overflowX: 'auto',
49
+ '& > div': {
50
+ height: 'var(--size)'
51
+ },
52
+ bottom: '0px'
53
+ });
54
+ const Content = styled('div')({
55
+ display: 'inline-block'
56
+ });
57
+ const GridVirtualScrollbar = /*#__PURE__*/React.forwardRef(function GridVirtualScrollbar(props, ref) {
58
+ const apiRef = useGridPrivateApiContext();
59
+ const rootProps = useGridRootProps();
60
+ const isLocked = React.useRef(false);
61
+ const lastPosition = React.useRef(0);
62
+ const scrollbarRef = React.useRef(null);
63
+ const contentRef = React.useRef(null);
64
+ const classes = useUtilityClasses(rootProps, props.position);
65
+ const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
66
+ const propertyDimension = props.position === 'vertical' ? 'height' : 'width';
67
+ const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
68
+ const hasScroll = props.position === 'vertical' ? dimensions.hasScrollX : dimensions.hasScrollY;
69
+ const contentSize = dimensions.minimumSize[propertyDimension] + (hasScroll ? dimensions.scrollbarSize : 0);
70
+ const scrollbarSize = props.position === 'vertical' ? dimensions.viewportInnerSize.height : dimensions.viewportOuterSize.width;
71
+ const scrollbarInnerSize = scrollbarSize * (contentSize / dimensions.viewportOuterSize[propertyDimension]);
72
+ const onScrollerScroll = useEventCallback(() => {
73
+ const scroller = apiRef.current.virtualScrollerRef.current;
74
+ const scrollbar = scrollbarRef.current;
75
+ if (scroller[propertyScroll] === lastPosition.current) {
76
+ return;
77
+ }
78
+ if (isLocked.current) {
79
+ isLocked.current = false;
80
+ return;
81
+ }
82
+ isLocked.current = true;
83
+ const value = scroller[propertyScroll] / contentSize;
84
+ scrollbar[propertyScroll] = value * scrollbarInnerSize;
85
+ lastPosition.current = scroller[propertyScroll];
86
+ });
87
+ const onScrollbarScroll = useEventCallback(() => {
88
+ const scroller = apiRef.current.virtualScrollerRef.current;
89
+ const scrollbar = scrollbarRef.current;
90
+ if (isLocked.current) {
91
+ isLocked.current = false;
92
+ return;
93
+ }
94
+ isLocked.current = true;
95
+ const value = scrollbar[propertyScroll] / scrollbarInnerSize;
96
+ scroller[propertyScroll] = value * contentSize;
97
+ });
98
+ useOnMount(() => {
99
+ const scroller = apiRef.current.virtualScrollerRef.current;
100
+ const scrollbar = scrollbarRef.current;
101
+ scroller.addEventListener('scroll', onScrollerScroll, {
102
+ capture: true
103
+ });
104
+ scrollbar.addEventListener('scroll', onScrollbarScroll, {
105
+ capture: true
106
+ });
107
+ return () => {
108
+ scroller.removeEventListener('scroll', onScrollerScroll, {
109
+ capture: true
110
+ });
111
+ scrollbar.removeEventListener('scroll', onScrollbarScroll, {
112
+ capture: true
113
+ });
114
+ };
115
+ });
116
+ React.useEffect(() => {
117
+ const content = contentRef.current;
118
+ content.style.setProperty(propertyDimension, `${scrollbarInnerSize}px`);
119
+ }, [scrollbarInnerSize, propertyDimension]);
120
+ const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
121
+ return /*#__PURE__*/_jsx(Container, {
122
+ ref: useForkRef(ref, scrollbarRef),
123
+ className: classes.root,
124
+ tabIndex: -1,
125
+ children: /*#__PURE__*/_jsx(Content, {
126
+ ref: contentRef,
127
+ className: classes.content
128
+ })
129
+ });
130
+ });
131
+ export { GridVirtualScrollbar };
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { SxProps, Theme } from '@mui/system';
3
- declare const GridVirtualScroller: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
4
- sx?: SxProps<Theme> | undefined;
5
- } & React.RefAttributes<HTMLDivElement>>;
2
+ export interface GridVirtualScrollerProps {
3
+ children?: React.ReactNode;
4
+ }
5
+ declare function GridVirtualScroller(props: GridVirtualScrollerProps): React.JSX.Element;
6
6
  export { GridVirtualScroller };
@@ -1,42 +1,95 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import clsx from 'clsx';
4
3
  import { styled } from '@mui/system';
5
4
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
6
5
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
6
+ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
7
+ import { useGridSelector } from '../../hooks/utils/useGridSelector';
7
8
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
9
+ import { gridDimensionsSelector } from '../../hooks/features/dimensions';
10
+ import { useGridVirtualScroller } from '../../hooks/features/virtualization/useGridVirtualScroller';
11
+ import { GridOverlays } from '../base/GridOverlays';
12
+ import { GridHeaders } from '../GridHeaders';
13
+ import { GridMainContainer as Container } from './GridMainContainer';
14
+ import { GridTopContainer as TopContainer } from './GridTopContainer';
15
+ import { GridBottomContainer as BottomContainer } from './GridBottomContainer';
16
+ import { GridVirtualScrollerContent as Content } from './GridVirtualScrollerContent';
17
+ import { GridVirtualScrollerFiller as SpaceFiller } from './GridVirtualScrollerFiller';
18
+ import { GridVirtualScrollerRenderZone as RenderZone } from './GridVirtualScrollerRenderZone';
19
+ import { GridVirtualScrollbar as Scrollbar } from './GridVirtualScrollbar';
8
20
  import { jsx as _jsx } from "react/jsx-runtime";
9
- const useUtilityClasses = ownerState => {
21
+ import { jsxs as _jsxs } from "react/jsx-runtime";
22
+ const useUtilityClasses = (ownerState, dimensions) => {
10
23
  const {
11
24
  classes
12
25
  } = ownerState;
13
26
  const slots = {
14
- root: ['virtualScroller']
27
+ root: ['main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight'],
28
+ scroller: ['virtualScroller']
15
29
  };
16
30
  return composeClasses(slots, getDataGridUtilityClass, classes);
17
31
  };
18
- const VirtualScrollerRoot = styled('div', {
32
+ const Scroller = styled('div', {
19
33
  name: 'MuiDataGrid',
20
34
  slot: 'VirtualScroller',
21
35
  overridesResolver: (props, styles) => styles.virtualScroller
22
36
  })({
23
- overflow: 'auto',
24
- height: '100%',
25
- // See https://github.com/mui/mui-x/issues/4360
26
37
  position: 'relative',
38
+ height: '100%',
39
+ overflow: 'scroll',
40
+ scrollbarWidth: 'none' /* Firefox */,
41
+ '&::-webkit-scrollbar': {
42
+ display: 'none' /* Safari and Chrome */
43
+ },
27
44
  '@media print': {
28
45
  overflow: 'hidden'
29
46
  },
30
- zIndex: 0 // See https://github.com/mui/mui-x/issues/10547
47
+ // See https://github.com/mui/mui-x/issues/10547
48
+ zIndex: 0
31
49
  });
32
- const GridVirtualScroller = /*#__PURE__*/React.forwardRef(function GridVirtualScroller(props, ref) {
50
+ function GridVirtualScroller(props) {
51
+ const apiRef = useGridApiContext();
33
52
  const rootProps = useGridRootProps();
34
- const classes = useUtilityClasses(rootProps);
35
- return /*#__PURE__*/_jsx(VirtualScrollerRoot, _extends({
36
- ref: ref
37
- }, props, {
38
- className: clsx(classes.root, props.className),
39
- ownerState: rootProps
53
+ const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
54
+ const classes = useUtilityClasses(rootProps, dimensions);
55
+ const virtualScroller = useGridVirtualScroller();
56
+ const {
57
+ getContainerProps,
58
+ getScrollerProps,
59
+ getContentProps,
60
+ getRenderZoneProps,
61
+ getScrollbarVerticalProps,
62
+ getScrollbarHorizontalProps
63
+ } = virtualScroller;
64
+ return /*#__PURE__*/_jsxs(Container, _extends({
65
+ className: classes.root
66
+ }, getContainerProps(), {
67
+ children: [/*#__PURE__*/_jsxs(Scroller, _extends({
68
+ className: classes.scroller
69
+ }, getScrollerProps(), {
70
+ ownerState: rootProps,
71
+ children: [/*#__PURE__*/_jsxs(TopContainer, {
72
+ children: [/*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
73
+ position: "top",
74
+ virtualScroller: virtualScroller
75
+ })]
76
+ }), /*#__PURE__*/_jsx(GridOverlays, {}), /*#__PURE__*/_jsx(Content, _extends({}, getContentProps(), {
77
+ children: /*#__PURE__*/_jsxs(RenderZone, _extends({}, getRenderZoneProps(), {
78
+ children: [virtualScroller.getRows(), /*#__PURE__*/_jsx(rootProps.slots.detailPanels, {
79
+ virtualScroller: virtualScroller
80
+ })]
81
+ }))
82
+ })), /*#__PURE__*/_jsx(SpaceFiller, {}), /*#__PURE__*/_jsx(BottomContainer, {
83
+ children: /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
84
+ position: "bottom",
85
+ virtualScroller: virtualScroller
86
+ })
87
+ })]
88
+ })), /*#__PURE__*/_jsx(Scrollbar, _extends({
89
+ position: "vertical"
90
+ }, getScrollbarVerticalProps())), /*#__PURE__*/_jsx(Scrollbar, _extends({
91
+ position: "horizontal"
92
+ }, getScrollbarHorizontalProps())), props.children]
40
93
  }));
41
- });
94
+ }
42
95
  export { GridVirtualScroller };
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ declare function GridVirtualScrollerFiller(): React.JSX.Element | null;
3
+ declare const Memoized: typeof GridVirtualScrollerFiller;
4
+ export { Memoized as GridVirtualScrollerFiller };