@mui/x-data-grid 7.0.0-alpha.8 → 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 (410) hide show
  1. package/CHANGELOG.md +379 -2
  2. package/DataGrid/DataGrid.js +6 -6
  3. package/DataGrid/useDataGridComponent.js +2 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/README.md +1 -1
  6. package/components/GridColumnHeaders.d.ts +3 -2
  7. package/components/GridColumnHeaders.js +3 -11
  8. package/components/GridDetailPanels.d.ts +5 -0
  9. package/components/GridDetailPanels.js +4 -0
  10. package/components/GridHeaders.d.ts +4 -0
  11. package/components/GridHeaders.js +53 -0
  12. package/components/GridPinnedRows.d.ts +7 -0
  13. package/components/GridPinnedRows.js +4 -0
  14. package/components/GridRow.d.ts +7 -4
  15. package/components/GridRow.js +260 -97
  16. package/components/GridScrollbarFillerCell.d.ts +7 -0
  17. package/components/GridScrollbarFillerCell.js +39 -0
  18. package/components/base/GridBody.d.ts +2 -13
  19. package/components/base/GridBody.js +2 -116
  20. package/components/base/GridOverlays.js +10 -21
  21. package/components/cell/GridActionsCellItem.d.ts +2 -2
  22. package/components/cell/GridCell.d.ts +15 -21
  23. package/components/cell/GridCell.js +67 -372
  24. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  25. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
  26. package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  27. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  28. package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  29. package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  30. package/components/containers/GridRoot.js +18 -15
  31. package/components/containers/GridRootStyles.js +307 -204
  32. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  33. package/components/panel/GridPanel.js +3 -4
  34. package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
  35. package/components/panel/filterPanel/GridFilterForm.js +31 -14
  36. package/components/panel/filterPanel/GridFilterPanel.js +46 -20
  37. package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
  38. package/components/toolbar/GridToolbarColumnsButton.js +40 -22
  39. package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
  40. package/components/toolbar/GridToolbarDensitySelector.js +40 -22
  41. package/components/toolbar/GridToolbarExport.d.ts +10 -1
  42. package/components/toolbar/GridToolbarExport.js +6 -1
  43. package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
  44. package/components/toolbar/GridToolbarExportContainer.js +41 -23
  45. package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
  46. package/components/toolbar/GridToolbarFilterButton.js +6 -10
  47. package/components/virtualization/GridBottomContainer.d.ts +2 -0
  48. package/components/virtualization/GridBottomContainer.js +25 -0
  49. package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
  50. package/components/virtualization/GridMainContainer.js +20 -0
  51. package/components/virtualization/GridTopContainer.d.ts +2 -0
  52. package/components/virtualization/GridTopContainer.js +35 -0
  53. package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
  54. package/components/virtualization/GridVirtualScrollbar.js +131 -0
  55. package/components/virtualization/GridVirtualScroller.d.ts +4 -4
  56. package/components/virtualization/GridVirtualScroller.js +69 -16
  57. package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
  58. package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  59. package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  60. package/constants/defaultGridSlotsComponents.js +6 -2
  61. package/constants/gridClasses.d.ts +60 -8
  62. package/constants/gridClasses.js +1 -1
  63. package/hooks/core/gridCoreSelector.d.ts +6 -0
  64. package/hooks/core/gridCoreSelector.js +5 -0
  65. package/hooks/core/useGridInitialization.js +4 -0
  66. package/hooks/core/useGridRefs.d.ts +3 -0
  67. package/hooks/core/useGridRefs.js +13 -0
  68. package/hooks/core/useGridTheme.d.ts +3 -0
  69. package/hooks/core/useGridTheme.js +19 -0
  70. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  71. package/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  72. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
  73. package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
  74. package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  75. package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
  76. package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  77. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
  78. package/hooks/features/columns/gridColumnsSelector.js +52 -0
  79. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
  80. package/hooks/features/columns/gridColumnsUtils.js +10 -12
  81. package/hooks/features/columns/index.d.ts +2 -2
  82. package/hooks/features/columns/index.js +2 -1
  83. package/hooks/features/columns/useGridColumnSpanning.js +62 -61
  84. package/hooks/features/columns/useGridColumns.js +20 -23
  85. package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
  86. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
  87. package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  88. package/hooks/features/dimensions/index.d.ts +2 -0
  89. package/hooks/features/dimensions/index.js +1 -0
  90. package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
  91. package/hooks/features/dimensions/useGridDimensions.js +216 -148
  92. package/hooks/features/export/serializers/csvSerializer.js +2 -2
  93. package/hooks/features/filter/useGridFilter.js +3 -3
  94. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
  95. package/hooks/features/focus/gridFocusStateSelector.js +2 -6
  96. package/hooks/features/focus/useGridFocus.js +3 -3
  97. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  98. package/hooks/features/pagination/useGridPagination.js +3 -5
  99. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
  100. package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
  101. package/hooks/features/rows/gridRowsSelector.js +5 -5
  102. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  103. package/hooks/features/rows/gridRowsUtils.js +4 -4
  104. package/hooks/features/rows/useGridRowsMeta.js +7 -4
  105. package/hooks/features/scroll/useGridScroll.js +8 -10
  106. package/hooks/features/sorting/gridSortingUtils.js +1 -1
  107. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  108. package/hooks/features/sorting/useGridSorting.js +15 -10
  109. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
  110. package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  111. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
  112. package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
  113. package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
  114. package/hooks/features/virtualization/useGridVirtualization.js +8 -1
  115. package/hooks/utils/index.d.ts +3 -0
  116. package/hooks/utils/index.js +4 -1
  117. package/hooks/utils/useGridAriaAttributes.js +1 -2
  118. package/hooks/utils/useGridNativeEventListener.js +4 -9
  119. package/hooks/utils/useResizeObserver.d.ts +2 -0
  120. package/hooks/utils/useResizeObserver.js +36 -0
  121. package/hooks/utils/useRunOnce.d.ts +5 -0
  122. package/hooks/utils/useRunOnce.js +18 -0
  123. package/index.js +1 -1
  124. package/internals/index.d.ts +12 -9
  125. package/internals/index.js +9 -7
  126. package/legacy/DataGrid/DataGrid.js +6 -6
  127. package/legacy/DataGrid/useDataGridComponent.js +2 -1
  128. package/legacy/DataGrid/useDataGridProps.js +1 -0
  129. package/legacy/components/GridColumnHeaders.js +3 -11
  130. package/legacy/components/GridDetailPanels.js +4 -0
  131. package/legacy/components/GridHeaders.js +53 -0
  132. package/legacy/components/GridPinnedRows.js +4 -0
  133. package/legacy/components/GridRow.js +258 -98
  134. package/legacy/components/GridScrollbarFillerCell.js +36 -0
  135. package/legacy/components/base/GridBody.js +2 -114
  136. package/legacy/components/base/GridOverlays.js +10 -25
  137. package/legacy/components/cell/GridCell.js +69 -377
  138. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  139. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  140. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  141. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  142. package/legacy/components/containers/GridRoot.js +18 -15
  143. package/legacy/components/containers/GridRootStyles.js +215 -137
  144. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  145. package/legacy/components/panel/GridPanel.js +3 -4
  146. package/legacy/components/panel/filterPanel/GridFilterForm.js +30 -13
  147. package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
  148. package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
  149. package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
  150. package/legacy/components/toolbar/GridToolbarExport.js +6 -1
  151. package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
  152. package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
  153. package/legacy/components/virtualization/GridBottomContainer.js +25 -0
  154. package/legacy/components/virtualization/GridMainContainer.js +20 -0
  155. package/legacy/components/virtualization/GridTopContainer.js +35 -0
  156. package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
  157. package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
  158. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
  159. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  160. package/legacy/constants/defaultGridSlotsComponents.js +6 -2
  161. package/legacy/constants/gridClasses.js +1 -1
  162. package/legacy/hooks/core/gridCoreSelector.js +7 -0
  163. package/legacy/hooks/core/useGridInitialization.js +4 -0
  164. package/legacy/hooks/core/useGridRefs.js +13 -0
  165. package/legacy/hooks/core/useGridTheme.js +21 -0
  166. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  167. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
  168. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  169. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  170. package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
  171. package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
  172. package/legacy/hooks/features/columns/index.js +2 -1
  173. package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
  174. package/legacy/hooks/features/columns/useGridColumns.js +22 -23
  175. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
  176. package/legacy/hooks/features/dimensions/index.js +1 -0
  177. package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
  178. package/legacy/hooks/features/export/serializers/csvSerializer.js +2 -2
  179. package/legacy/hooks/features/filter/useGridFilter.js +3 -3
  180. package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
  181. package/legacy/hooks/features/focus/useGridFocus.js +3 -3
  182. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  183. package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
  184. package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
  185. package/legacy/hooks/features/rows/gridRowsUtils.js +4 -4
  186. package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -4
  187. package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
  188. package/legacy/hooks/features/sorting/gridSortingUtils.js +1 -1
  189. package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
  190. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
  191. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
  192. package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
  193. package/legacy/hooks/utils/index.js +4 -1
  194. package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
  195. package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
  196. package/legacy/hooks/utils/useResizeObserver.js +36 -0
  197. package/legacy/hooks/utils/useRunOnce.js +18 -0
  198. package/legacy/index.js +1 -1
  199. package/legacy/internals/index.js +9 -7
  200. package/legacy/locales/hrHR.js +161 -0
  201. package/legacy/locales/index.js +4 -1
  202. package/legacy/locales/ptPT.js +161 -0
  203. package/legacy/locales/zhHK.js +161 -0
  204. package/legacy/models/index.js +0 -1
  205. package/legacy/models/params/index.js +1 -2
  206. package/legacy/utils/utils.js +10 -1
  207. package/locales/hrHR.d.ts +1 -0
  208. package/locales/hrHR.js +149 -0
  209. package/locales/index.d.ts +3 -0
  210. package/locales/index.js +4 -1
  211. package/locales/ptPT.d.ts +1 -0
  212. package/locales/ptPT.js +149 -0
  213. package/locales/zhHK.d.ts +1 -0
  214. package/locales/zhHK.js +149 -0
  215. package/models/api/gridColumnGroupingApi.d.ts +2 -2
  216. package/models/api/gridCoreApi.d.ts +16 -16
  217. package/models/api/gridRowsMetaApi.d.ts +1 -1
  218. package/models/api/gridVirtualizationApi.d.ts +2 -3
  219. package/models/events/gridEventLookup.d.ts +3 -3
  220. package/models/gridFilterModel.d.ts +1 -1
  221. package/models/gridSlotsComponent.d.ts +16 -2
  222. package/models/gridStateCommunity.d.ts +5 -1
  223. package/models/index.d.ts +0 -1
  224. package/models/index.js +0 -1
  225. package/models/params/index.d.ts +0 -1
  226. package/models/params/index.js +1 -2
  227. package/models/props/DataGridProps.d.ts +6 -11
  228. package/modern/DataGrid/DataGrid.js +6 -6
  229. package/modern/DataGrid/useDataGridComponent.js +2 -1
  230. package/modern/DataGrid/useDataGridProps.js +1 -0
  231. package/modern/components/GridColumnHeaders.js +3 -11
  232. package/modern/components/GridDetailPanels.js +4 -0
  233. package/modern/components/GridHeaders.js +53 -0
  234. package/modern/components/GridPinnedRows.js +4 -0
  235. package/modern/components/GridRow.js +258 -96
  236. package/modern/components/GridScrollbarFillerCell.js +39 -0
  237. package/modern/components/base/GridBody.js +2 -116
  238. package/modern/components/base/GridOverlays.js +10 -16
  239. package/modern/components/cell/GridCell.js +65 -369
  240. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  241. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  242. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  243. package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  244. package/modern/components/containers/GridRoot.js +18 -14
  245. package/modern/components/containers/GridRootStyles.js +307 -204
  246. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  247. package/modern/components/panel/GridPanel.js +3 -4
  248. package/modern/components/panel/filterPanel/GridFilterForm.js +30 -13
  249. package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
  250. package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
  251. package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
  252. package/modern/components/toolbar/GridToolbarExport.js +6 -1
  253. package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
  254. package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
  255. package/modern/components/virtualization/GridBottomContainer.js +25 -0
  256. package/modern/components/virtualization/GridMainContainer.js +20 -0
  257. package/modern/components/virtualization/GridTopContainer.js +35 -0
  258. package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
  259. package/modern/components/virtualization/GridVirtualScroller.js +69 -16
  260. package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  261. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  262. package/modern/constants/defaultGridSlotsComponents.js +6 -2
  263. package/modern/constants/gridClasses.js +1 -1
  264. package/modern/hooks/core/gridCoreSelector.js +5 -0
  265. package/modern/hooks/core/useGridInitialization.js +4 -0
  266. package/modern/hooks/core/useGridRefs.js +13 -0
  267. package/modern/hooks/core/useGridTheme.js +19 -0
  268. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  269. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
  270. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  271. package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  272. package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
  273. package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
  274. package/modern/hooks/features/columns/index.js +2 -1
  275. package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
  276. package/modern/hooks/features/columns/useGridColumns.js +19 -21
  277. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  278. package/modern/hooks/features/dimensions/index.js +1 -0
  279. package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
  280. package/modern/hooks/features/export/serializers/csvSerializer.js +2 -2
  281. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  282. package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
  283. package/modern/hooks/features/focus/useGridFocus.js +3 -3
  284. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  285. package/modern/hooks/features/pagination/useGridPagination.js +3 -5
  286. package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
  287. package/modern/hooks/features/rows/gridRowsUtils.js +4 -4
  288. package/modern/hooks/features/rows/useGridRowsMeta.js +7 -4
  289. package/modern/hooks/features/scroll/useGridScroll.js +8 -9
  290. package/modern/hooks/features/sorting/gridSortingUtils.js +1 -1
  291. package/modern/hooks/features/sorting/useGridSorting.js +15 -10
  292. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  293. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
  294. package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
  295. package/modern/hooks/utils/index.js +4 -1
  296. package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
  297. package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
  298. package/modern/hooks/utils/useResizeObserver.js +36 -0
  299. package/modern/hooks/utils/useRunOnce.js +18 -0
  300. package/modern/index.js +1 -1
  301. package/modern/internals/index.js +9 -7
  302. package/modern/locales/hrHR.js +149 -0
  303. package/modern/locales/index.js +4 -1
  304. package/modern/locales/ptPT.js +149 -0
  305. package/modern/locales/zhHK.js +149 -0
  306. package/modern/models/index.js +0 -1
  307. package/modern/models/params/index.js +1 -2
  308. package/modern/utils/utils.js +10 -1
  309. package/node/DataGrid/DataGrid.js +6 -6
  310. package/node/DataGrid/useDataGridComponent.js +1 -0
  311. package/node/DataGrid/useDataGridProps.js +1 -0
  312. package/node/components/GridColumnHeaders.js +3 -11
  313. package/node/components/GridDetailPanels.js +10 -0
  314. package/node/components/GridHeaders.js +60 -0
  315. package/node/components/GridPinnedRows.js +10 -0
  316. package/node/components/GridRow.js +256 -94
  317. package/node/components/GridScrollbarFillerCell.js +47 -0
  318. package/node/components/base/GridBody.js +7 -118
  319. package/node/components/base/GridOverlays.js +9 -15
  320. package/node/components/cell/GridCell.js +66 -369
  321. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  322. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
  323. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  324. package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  325. package/node/components/containers/GridRoot.js +17 -14
  326. package/node/components/containers/GridRootStyles.js +175 -72
  327. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  328. package/node/components/panel/GridPanel.js +3 -4
  329. package/node/components/panel/filterPanel/GridFilterForm.js +29 -12
  330. package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
  331. package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
  332. package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
  333. package/node/components/toolbar/GridToolbarExport.js +6 -1
  334. package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
  335. package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
  336. package/node/components/virtualization/GridBottomContainer.js +34 -0
  337. package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
  338. package/node/components/virtualization/GridTopContainer.js +44 -0
  339. package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
  340. package/node/components/virtualization/GridVirtualScroller.js +69 -17
  341. package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
  342. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  343. package/node/constants/defaultGridSlotsComponents.js +5 -1
  344. package/node/constants/gridClasses.js +1 -1
  345. package/node/hooks/core/gridCoreSelector.js +12 -0
  346. package/node/hooks/core/useGridInitialization.js +4 -0
  347. package/node/hooks/core/useGridRefs.js +22 -0
  348. package/node/hooks/core/useGridTheme.js +29 -0
  349. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  350. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
  351. package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  352. package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
  353. package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
  354. package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
  355. package/node/hooks/features/columns/index.js +22 -61
  356. package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
  357. package/node/hooks/features/columns/useGridColumns.js +20 -22
  358. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
  359. package/node/hooks/features/dimensions/index.js +11 -0
  360. package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
  361. package/node/hooks/features/export/serializers/csvSerializer.js +2 -2
  362. package/node/hooks/features/filter/useGridFilter.js +2 -2
  363. package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
  364. package/node/hooks/features/focus/useGridFocus.js +2 -2
  365. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
  366. package/node/hooks/features/pagination/useGridPagination.js +3 -5
  367. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  368. package/node/hooks/features/rows/gridRowsUtils.js +4 -4
  369. package/node/hooks/features/rows/useGridRowsMeta.js +5 -3
  370. package/node/hooks/features/scroll/useGridScroll.js +8 -9
  371. package/node/hooks/features/sorting/gridSortingUtils.js +1 -1
  372. package/node/hooks/features/sorting/useGridSorting.js +15 -10
  373. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  374. package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
  375. package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
  376. package/node/hooks/utils/index.js +36 -0
  377. package/node/hooks/utils/useGridAriaAttributes.js +1 -1
  378. package/node/hooks/utils/useGridNativeEventListener.js +3 -9
  379. package/node/hooks/utils/useResizeObserver.js +44 -0
  380. package/node/hooks/utils/useRunOnce.js +27 -0
  381. package/node/index.js +1 -1
  382. package/node/internals/index.js +86 -71
  383. package/node/locales/hrHR.js +155 -0
  384. package/node/locales/index.js +33 -0
  385. package/node/locales/ptPT.js +155 -0
  386. package/node/locales/zhHK.js +155 -0
  387. package/node/models/index.js +0 -11
  388. package/node/models/params/index.js +0 -11
  389. package/node/utils/utils.js +11 -1
  390. package/package.json +6 -6
  391. package/utils/utils.d.ts +6 -0
  392. package/utils/utils.js +10 -1
  393. package/components/DataGridVirtualScroller.d.ts +0 -3
  394. package/components/DataGridVirtualScroller.js +0 -35
  395. package/components/containers/GridMainContainer.js +0 -43
  396. package/legacy/components/DataGridVirtualScroller.js +0 -32
  397. package/legacy/components/containers/GridMainContainer.js +0 -45
  398. package/legacy/models/gridRootContainerRef.js +0 -1
  399. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  400. package/models/gridRootContainerRef.d.ts +0 -5
  401. package/models/gridRootContainerRef.js +0 -1
  402. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
  403. package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  404. package/modern/components/DataGridVirtualScroller.js +0 -35
  405. package/modern/components/containers/GridMainContainer.js +0 -42
  406. package/modern/models/gridRootContainerRef.js +0 -1
  407. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  408. package/node/components/DataGridVirtualScroller.js +0 -42
  409. package/node/models/gridRootContainerRef.js +0 -5
  410. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +0 -5
@@ -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
+ var Element = styled('div')({
7
+ flexGrow: 1,
8
+ position: 'relative',
9
+ overflow: 'hidden'
10
+ });
11
+ export var GridMainContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
12
+ var 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,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
+ var useUtilityClasses = function useUtilityClasses() {
9
+ var slots = {
10
+ root: ['topContainer']
11
+ };
12
+ return composeClasses(slots, getDataGridUtilityClass, {});
13
+ };
14
+ var 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
+ var 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,129 @@
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
+ var useUtilityClasses = function useUtilityClasses(ownerState, position) {
11
+ var classes = ownerState.classes;
12
+ var slots = {
13
+ root: ['scrollbar', "scrollbar--".concat(position)],
14
+ content: ['scrollbarContent']
15
+ };
16
+ return composeClasses(slots, getDataGridUtilityClass, classes);
17
+ };
18
+ var Scrollbar = styled('div')({
19
+ position: 'absolute',
20
+ display: 'inline-block',
21
+ zIndex: 6,
22
+ '& > div': {
23
+ display: 'inline-block'
24
+ },
25
+ // In macOS Safari and Gnome Web, scrollbars are overlaid and don't affect the layout. So we consider
26
+ // their size to be 0px throughout all the calculations, but the floating scrollbar container does need
27
+ // to appear and have a real size. We set it to 14px because it seems like an acceptable value and we
28
+ // don't have a method to find the required size for scrollbars on those platforms.
29
+ '--size': 'calc(max(var(--DataGrid-scrollbarSize), 14px))'
30
+ });
31
+ var ScrollbarVertical = styled(Scrollbar)({
32
+ width: 'var(--size)',
33
+ height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
34
+ overflowY: 'auto',
35
+ overflowX: 'hidden',
36
+ '& > div': {
37
+ width: 'var(--size)'
38
+ },
39
+ top: 'var(--DataGrid-topContainerHeight)',
40
+ right: '0px'
41
+ });
42
+ var ScrollbarHorizontal = styled(Scrollbar)({
43
+ width: '100%',
44
+ height: 'var(--size)',
45
+ overflowY: 'hidden',
46
+ overflowX: 'auto',
47
+ '& > div': {
48
+ height: 'var(--size)'
49
+ },
50
+ bottom: '0px'
51
+ });
52
+ var Content = styled('div')({
53
+ display: 'inline-block'
54
+ });
55
+ var GridVirtualScrollbar = /*#__PURE__*/React.forwardRef(function GridVirtualScrollbar(props, ref) {
56
+ var apiRef = useGridPrivateApiContext();
57
+ var rootProps = useGridRootProps();
58
+ var isLocked = React.useRef(false);
59
+ var lastPosition = React.useRef(0);
60
+ var scrollbarRef = React.useRef(null);
61
+ var contentRef = React.useRef(null);
62
+ var classes = useUtilityClasses(rootProps, props.position);
63
+ var dimensions = useGridSelector(apiRef, gridDimensionsSelector);
64
+ var propertyDimension = props.position === 'vertical' ? 'height' : 'width';
65
+ var propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
66
+ var hasScroll = props.position === 'vertical' ? dimensions.hasScrollX : dimensions.hasScrollY;
67
+ var contentSize = dimensions.minimumSize[propertyDimension] + (hasScroll ? dimensions.scrollbarSize : 0);
68
+ var scrollbarSize = props.position === 'vertical' ? dimensions.viewportInnerSize.height : dimensions.viewportOuterSize.width;
69
+ var scrollbarInnerSize = scrollbarSize * (contentSize / dimensions.viewportOuterSize[propertyDimension]);
70
+ var onScrollerScroll = useEventCallback(function () {
71
+ var scroller = apiRef.current.virtualScrollerRef.current;
72
+ var scrollbar = scrollbarRef.current;
73
+ if (scroller[propertyScroll] === lastPosition.current) {
74
+ return;
75
+ }
76
+ if (isLocked.current) {
77
+ isLocked.current = false;
78
+ return;
79
+ }
80
+ isLocked.current = true;
81
+ var value = scroller[propertyScroll] / contentSize;
82
+ scrollbar[propertyScroll] = value * scrollbarInnerSize;
83
+ lastPosition.current = scroller[propertyScroll];
84
+ });
85
+ var onScrollbarScroll = useEventCallback(function () {
86
+ var scroller = apiRef.current.virtualScrollerRef.current;
87
+ var scrollbar = scrollbarRef.current;
88
+ if (isLocked.current) {
89
+ isLocked.current = false;
90
+ return;
91
+ }
92
+ isLocked.current = true;
93
+ var value = scrollbar[propertyScroll] / scrollbarInnerSize;
94
+ scroller[propertyScroll] = value * contentSize;
95
+ });
96
+ useOnMount(function () {
97
+ var scroller = apiRef.current.virtualScrollerRef.current;
98
+ var scrollbar = scrollbarRef.current;
99
+ scroller.addEventListener('scroll', onScrollerScroll, {
100
+ capture: true
101
+ });
102
+ scrollbar.addEventListener('scroll', onScrollbarScroll, {
103
+ capture: true
104
+ });
105
+ return function () {
106
+ scroller.removeEventListener('scroll', onScrollerScroll, {
107
+ capture: true
108
+ });
109
+ scrollbar.removeEventListener('scroll', onScrollbarScroll, {
110
+ capture: true
111
+ });
112
+ };
113
+ });
114
+ React.useEffect(function () {
115
+ var content = contentRef.current;
116
+ content.style.setProperty(propertyDimension, "".concat(scrollbarInnerSize, "px"));
117
+ }, [scrollbarInnerSize, propertyDimension]);
118
+ var Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
119
+ return /*#__PURE__*/_jsx(Container, {
120
+ ref: useForkRef(ref, scrollbarRef),
121
+ className: classes.root,
122
+ tabIndex: -1,
123
+ children: /*#__PURE__*/_jsx(Content, {
124
+ ref: contentRef,
125
+ className: classes.content
126
+ })
127
+ });
128
+ });
129
+ export { GridVirtualScrollbar };
@@ -1,42 +1,93 @@
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
- var useUtilityClasses = function useUtilityClasses(ownerState) {
21
+ import { jsxs as _jsxs } from "react/jsx-runtime";
22
+ var useUtilityClasses = function useUtilityClasses(ownerState, dimensions) {
10
23
  var classes = ownerState.classes;
11
24
  var slots = {
12
- root: ['virtualScroller']
25
+ root: ['main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight'],
26
+ scroller: ['virtualScroller']
13
27
  };
14
28
  return composeClasses(slots, getDataGridUtilityClass, classes);
15
29
  };
16
- var VirtualScrollerRoot = styled('div', {
30
+ var Scroller = styled('div', {
17
31
  name: 'MuiDataGrid',
18
32
  slot: 'VirtualScroller',
19
33
  overridesResolver: function overridesResolver(props, styles) {
20
34
  return styles.virtualScroller;
21
35
  }
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
- var GridVirtualScroller = /*#__PURE__*/React.forwardRef(function GridVirtualScroller(props, ref) {
50
+ function GridVirtualScroller(props) {
51
+ var apiRef = useGridApiContext();
33
52
  var rootProps = useGridRootProps();
34
- var 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
+ var dimensions = useGridSelector(apiRef, gridDimensionsSelector);
54
+ var classes = useUtilityClasses(rootProps, dimensions);
55
+ var virtualScroller = useGridVirtualScroller();
56
+ var getContainerProps = virtualScroller.getContainerProps,
57
+ getScrollerProps = virtualScroller.getScrollerProps,
58
+ getContentProps = virtualScroller.getContentProps,
59
+ getRenderZoneProps = virtualScroller.getRenderZoneProps,
60
+ getScrollbarVerticalProps = virtualScroller.getScrollbarVerticalProps,
61
+ getScrollbarHorizontalProps = virtualScroller.getScrollbarHorizontalProps;
62
+ return /*#__PURE__*/_jsxs(Container, _extends({
63
+ className: classes.root
64
+ }, getContainerProps(), {
65
+ children: [/*#__PURE__*/_jsxs(Scroller, _extends({
66
+ className: classes.scroller
67
+ }, getScrollerProps(), {
68
+ ownerState: rootProps,
69
+ children: [/*#__PURE__*/_jsxs(TopContainer, {
70
+ children: [/*#__PURE__*/_jsx(GridHeaders, {}), /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
71
+ position: "top",
72
+ virtualScroller: virtualScroller
73
+ })]
74
+ }), /*#__PURE__*/_jsx(GridOverlays, {}), /*#__PURE__*/_jsx(Content, _extends({}, getContentProps(), {
75
+ children: /*#__PURE__*/_jsxs(RenderZone, _extends({}, getRenderZoneProps(), {
76
+ children: [virtualScroller.getRows(), /*#__PURE__*/_jsx(rootProps.slots.detailPanels, {
77
+ virtualScroller: virtualScroller
78
+ })]
79
+ }))
80
+ })), /*#__PURE__*/_jsx(SpaceFiller, {}), /*#__PURE__*/_jsx(BottomContainer, {
81
+ children: /*#__PURE__*/_jsx(rootProps.slots.pinnedRows, {
82
+ position: "bottom",
83
+ virtualScroller: virtualScroller
84
+ })
85
+ })]
86
+ })), /*#__PURE__*/_jsx(Scrollbar, _extends({
87
+ position: "vertical"
88
+ }, getScrollbarVerticalProps())), /*#__PURE__*/_jsx(Scrollbar, _extends({
89
+ position: "horizontal"
90
+ }, getScrollbarHorizontalProps())), props.children]
40
91
  }));
41
- });
92
+ }
42
93
  export { GridVirtualScroller };
@@ -0,0 +1,70 @@
1
+ import * as React from 'react';
2
+ import { styled } from '@mui/system';
3
+ import { fastMemo } from '../../utils/fastMemo';
4
+ import { useGridSelector } from '../../hooks/utils/useGridSelector';
5
+ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
6
+ import { gridDimensionsSelector } from '../../hooks/features/dimensions';
7
+ import { gridClasses } from '../../constants';
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { jsxs as _jsxs } from "react/jsx-runtime";
10
+ var Filler = styled('div')({
11
+ display: 'flex',
12
+ flexDirection: 'row',
13
+ width: 'var(--DataGrid-rowWidth)',
14
+ boxSizing: 'border-box'
15
+ });
16
+ var Pinned = styled('div')({
17
+ position: 'sticky',
18
+ height: '100%',
19
+ boxSizing: 'border-box',
20
+ borderTop: '1px solid var(--DataGrid-rowBorderColor)',
21
+ backgroundColor: 'var(--DataGrid-pinnedBackground)'
22
+ });
23
+ var PinnedLeft = styled(Pinned)({
24
+ left: 0,
25
+ borderRight: '1px solid var(--DataGrid-rowBorderColor)'
26
+ });
27
+ var PinnedRight = styled(Pinned)({
28
+ right: 0,
29
+ borderLeft: '1px solid var(--DataGrid-rowBorderColor)'
30
+ });
31
+ var Main = styled('div')({
32
+ flexGrow: 1,
33
+ borderTop: '1px solid var(--DataGrid-rowBorderColor)'
34
+ });
35
+ function GridVirtualScrollerFiller() {
36
+ var apiRef = useGridApiContext();
37
+ var _useGridSelector = useGridSelector(apiRef, gridDimensionsSelector),
38
+ viewportOuterSize = _useGridSelector.viewportOuterSize,
39
+ minimumSize = _useGridSelector.minimumSize,
40
+ hasScrollX = _useGridSelector.hasScrollX,
41
+ scrollbarSize = _useGridSelector.scrollbarSize,
42
+ leftPinnedWidth = _useGridSelector.leftPinnedWidth,
43
+ rightPinnedWidth = _useGridSelector.rightPinnedWidth;
44
+ var scrollbarHeight = hasScrollX ? scrollbarSize : 0;
45
+ var expandedHeight = viewportOuterSize.height - minimumSize.height - scrollbarHeight;
46
+ var height = Math.max(scrollbarHeight, expandedHeight);
47
+ if (height === 0) {
48
+ return null;
49
+ }
50
+ return /*#__PURE__*/_jsxs(Filler, {
51
+ className: gridClasses.filler,
52
+ role: "presentation",
53
+ style: {
54
+ height: height
55
+ },
56
+ children: [leftPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedLeft, {
57
+ className: gridClasses['filler--pinnedLeft'],
58
+ style: {
59
+ width: leftPinnedWidth
60
+ }
61
+ }), /*#__PURE__*/_jsx(Main, {}), rightPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedRight, {
62
+ className: gridClasses['filler--pinnedRight'],
63
+ style: {
64
+ width: rightPinnedWidth
65
+ }
66
+ })]
67
+ });
68
+ }
69
+ var Memoized = fastMemo(GridVirtualScrollerFiller);
70
+ export { Memoized as GridVirtualScrollerFiller };
@@ -25,7 +25,8 @@ var VirtualScrollerRenderZoneRoot = styled('div', {
25
25
  position: 'absolute',
26
26
  display: 'flex',
27
27
  // Prevents margin collapsing when using `getRowSpacing`
28
- flexDirection: 'column'
28
+ flexDirection: 'column',
29
+ transform: 'translate3d(0, var(--DataGrid-offsetTop), 0)'
29
30
  });
30
31
  var GridVirtualScrollerRenderZone = /*#__PURE__*/React.forwardRef(function GridVirtualScrollerRenderZone(props, ref) {
31
32
  var className = props.className,
@@ -1,22 +1,26 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridRow, GridColumnHeaderFilterIconButton, GridRowCount } from '../components';
3
- import { GridCellV7 } from '../components/cell/GridCell';
3
+ import { GridCell } from '../components/cell/GridCell';
4
4
  import { GridColumnHeaders } from '../components/GridColumnHeaders';
5
5
  import { GridColumnMenu } from '../components/menu/columnMenu/GridColumnMenu';
6
+ import { GridDetailPanels } from '../components/GridDetailPanels';
7
+ import { GridPinnedRows } from '../components/GridPinnedRows';
6
8
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
7
9
  import materialSlots from '../material';
8
10
 
9
11
  // TODO: camelCase these key. It's a private helper now.
10
12
  // Remove then need to call `uncapitalizeObjectKeys`.
11
13
  export var DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, materialSlots, {
12
- cell: GridCellV7,
14
+ cell: GridCell,
13
15
  skeletonCell: GridSkeletonCell,
14
16
  columnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
15
17
  columnMenu: GridColumnMenu,
16
18
  columnHeaders: GridColumnHeaders,
19
+ detailPanels: GridDetailPanels,
17
20
  footer: GridFooter,
18
21
  footerRowCount: GridRowCount,
19
22
  toolbar: null,
23
+ pinnedRows: GridPinnedRows,
20
24
  loadingOverlay: GridLoadingOverlay,
21
25
  noResultsOverlay: GridNoResultsOverlay,
22
26
  noRowsOverlay: GridNoRowsOverlay,
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
5
+ export var gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get the theme state
3
+ * @category Core
4
+ */
5
+ export var gridThemeSelector = function gridThemeSelector(state) {
6
+ return state.theme;
7
+ };
@@ -1,3 +1,5 @@
1
+ import { useGridRefs } from './useGridRefs';
2
+ import { useGridTheme } from './useGridTheme';
1
3
  import { useGridLoggerFactory } from './useGridLoggerFactory';
2
4
  import { useGridApiInitialization } from './useGridApiInitialization';
3
5
  import { useGridLocaleText } from './useGridLocaleText';
@@ -10,6 +12,8 @@ import { useGridStateInitialization } from './useGridStateInitialization';
10
12
  */
11
13
  export var useGridInitialization = function useGridInitialization(inputApiRef, props) {
12
14
  var privateApiRef = useGridApiInitialization(inputApiRef, props);
15
+ useGridRefs(privateApiRef);
16
+ useGridTheme(privateApiRef);
13
17
  useGridLoggerFactory(privateApiRef, props);
14
18
  useGridStateInitialization(privateApiRef, props);
15
19
  useGridPipeProcessing(privateApiRef);
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ export var useGridRefs = function useGridRefs(apiRef) {
3
+ var rootElementRef = React.useRef(null);
4
+ var mainElementRef = React.useRef(null);
5
+ var virtualScrollerRef = React.useRef(null);
6
+ apiRef.current.register('public', {
7
+ rootElementRef: rootElementRef
8
+ });
9
+ apiRef.current.register('private', {
10
+ mainElementRef: mainElementRef,
11
+ virtualScrollerRef: virtualScrollerRef
12
+ });
13
+ };
@@ -0,0 +1,21 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { useTheme } from '@mui/material/styles';
4
+ export var useGridTheme = function useGridTheme(apiRef) {
5
+ var theme = useTheme();
6
+ if (!apiRef.current.state.theme) {
7
+ apiRef.current.state.theme = theme;
8
+ }
9
+ var isFirstEffect = React.useRef(true);
10
+ React.useEffect(function () {
11
+ if (isFirstEffect.current) {
12
+ isFirstEffect.current = false;
13
+ } else {
14
+ apiRef.current.setState(function (state) {
15
+ return _extends({}, state, {
16
+ theme: theme
17
+ });
18
+ });
19
+ }
20
+ }, [apiRef, theme]);
21
+ };
@@ -39,16 +39,15 @@ var createGroupLookup = function createGroupLookup(columnGroupingModel) {
39
39
  return _extends({}, groupLookup);
40
40
  };
41
41
  export var columnGroupsStateInitializer = function columnGroupsStateInitializer(state, props, apiRef) {
42
- var _props$experimentalFe, _props$columnGrouping, _props$columnGrouping2, _apiRef$current$state;
43
- if (!((_props$experimentalFe = props.experimentalFeatures) != null && _props$experimentalFe.columnGrouping)) {
42
+ var _props$columnGrouping, _props$columnGrouping2, _apiRef$current$state;
43
+ if (!props.columnGroupingModel) {
44
44
  return state;
45
45
  }
46
46
  var columnFields = gridColumnFieldsSelector(apiRef);
47
47
  var visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
48
48
  var groupLookup = createGroupLookup((_props$columnGrouping = props.columnGroupingModel) != null ? _props$columnGrouping : []);
49
49
  var unwrappedGroupingModel = unwrapGroupingColumnModel((_props$columnGrouping2 = props.columnGroupingModel) != null ? _props$columnGrouping2 : []);
50
- var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, // @ts-expect-error Move this part to `Pro` package
51
- (_apiRef$current$state = apiRef.current.state.pinnedColumns) != null ? _apiRef$current$state : {});
50
+ var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, (_apiRef$current$state = apiRef.current.state.pinnedColumns) != null ? _apiRef$current$state : {});
52
51
  var maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max.apply(Math, _toConsumableArray(visibleColumnFields.map(function (field) {
53
52
  var _unwrappedGroupingMod, _unwrappedGroupingMod2;
54
53
  return (_unwrappedGroupingMod = (_unwrappedGroupingMod2 = unwrappedGroupingModel[field]) == null ? void 0 : _unwrappedGroupingMod2.length) != null ? _unwrappedGroupingMod : 0;
@@ -68,7 +67,6 @@ export var columnGroupsStateInitializer = function columnGroupsStateInitializer(
68
67
  * @requires useGridParamsApi (method)
69
68
  */
70
69
  export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props) {
71
- var _props$experimentalFe3;
72
70
  /**
73
71
  * API METHODS
74
72
  */
@@ -82,8 +80,8 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
82
80
  return columnGroupLookup;
83
81
  }, [apiRef]);
84
82
  var columnGroupingApi = {
85
- unstable_getColumnGroupPath: getColumnGroupPath,
86
- unstable_getAllGroupDetails: getAllGroupDetails
83
+ getColumnGroupPath: getColumnGroupPath,
84
+ getAllGroupDetails: getAllGroupDetails
87
85
  };
88
86
  useGridApiMethod(apiRef, columnGroupingApi, 'public');
89
87
  var handleColumnIndexChange = React.useCallback(function () {
@@ -92,8 +90,6 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
92
90
  apiRef.current.setState(function (state) {
93
91
  var _state$columns$ordere, _state$columns, _state$pinnedColumns;
94
92
  var orderedFields = (_state$columns$ordere = (_state$columns = state.columns) == null ? void 0 : _state$columns.orderedFields) != null ? _state$columns$ordere : [];
95
-
96
- // @ts-expect-error Move this logic to `Pro` package
97
93
  var pinnedColumns = (_state$pinnedColumns = state.pinnedColumns) != null ? _state$pinnedColumns : {};
98
94
  var columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel, pinnedColumns);
99
95
  return _extends({}, state, {
@@ -104,10 +100,7 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
104
100
  });
105
101
  }, [apiRef, props.columnGroupingModel]);
106
102
  var updateColumnGroupingState = React.useCallback(function (columnGroupingModel) {
107
- var _props$experimentalFe2, _apiRef$current$getPi, _apiRef$current$getPi2, _apiRef$current;
108
- if (!((_props$experimentalFe2 = props.experimentalFeatures) != null && _props$experimentalFe2.columnGrouping)) {
109
- return;
110
- }
103
+ var _apiRef$current$getPi, _apiRef$current$getPi2, _apiRef$current;
111
104
  // @ts-expect-error Move this logic to `Pro` package
112
105
  var pinnedColumns = (_apiRef$current$getPi = (_apiRef$current$getPi2 = (_apiRef$current = apiRef.current).getPinnedColumns) == null ? void 0 : _apiRef$current$getPi2.call(_apiRef$current)) != null ? _apiRef$current$getPi : {};
113
106
  var columnFields = gridColumnFieldsSelector(apiRef);
@@ -129,7 +122,7 @@ export var useGridColumnGrouping = function useGridColumnGrouping(apiRef, props)
129
122
  }
130
123
  });
131
124
  });
132
- }, [apiRef, (_props$experimentalFe3 = props.experimentalFeatures) == null ? void 0 : _props$experimentalFe3.columnGrouping]);
125
+ }, [apiRef]);
133
126
  useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
134
127
  useGridApiEventHandler(apiRef, 'columnsChange', function () {
135
128
  updateColumnGroupingState(props.columnGroupingModel);