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