@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
@@ -11,13 +11,13 @@ var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _utils = require("@mui/utils");
14
+ var _system = require("@mui/system");
14
15
  var _GridRootStyles = require("./GridRootStyles");
15
16
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
16
17
  var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
17
18
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
18
19
  var _gridClasses = require("../../constants/gridClasses");
19
20
  var _densitySelector = require("../../hooks/features/density/densitySelector");
20
- var _useGridAriaAttributes = require("../../hooks/utils/useGridAriaAttributes");
21
21
  var _jsxRuntime = require("react/jsx-runtime");
22
22
  const _excluded = ["children", "className"];
23
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -26,13 +26,19 @@ const useUtilityClasses = ownerState => {
26
26
  const {
27
27
  autoHeight,
28
28
  density,
29
- classes
29
+ classes,
30
+ showCellVerticalBorder
30
31
  } = ownerState;
31
32
  const slots = {
32
- root: ['root', autoHeight && 'autoHeight', `root--density${(0, _utils.unstable_capitalize)(density)}`, 'withBorderColor']
33
+ root: ['root', autoHeight && 'autoHeight', `root--density${(0, _utils.unstable_capitalize)(density)}`, 'withBorderColor', showCellVerticalBorder && 'withVerticalBorder']
33
34
  };
34
35
  return (0, _utils.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
35
36
  };
37
+ const GridPanelAnchor = (0, _system.styled)('div')({
38
+ position: 'absolute',
39
+ top: `var(--DataGrid-headersTotalHeight)`,
40
+ left: 0
41
+ });
36
42
  const GridRoot = exports.GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
37
43
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
38
44
  const {
@@ -42,18 +48,12 @@ const GridRoot = exports.GridRoot = /*#__PURE__*/React.forwardRef(function GridR
42
48
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
43
49
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
44
50
  const densityValue = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityValueSelector);
45
- const rootContainerRef = React.useRef(null);
46
- const handleRef = (0, _utils.unstable_useForkRef)(rootContainerRef, ref);
47
- const getAriaAttributes = rootProps.experimentalFeatures?.ariaV7 // ariaV7 should never change
48
- ? null : _useGridAriaAttributes.useGridAriaAttributes;
49
- const ariaAttributes = typeof getAriaAttributes === 'function' ? getAriaAttributes() : null;
51
+ const rootElementRef = apiRef.current.rootElementRef;
52
+ const handleRef = (0, _utils.unstable_useForkRef)(rootElementRef, ref);
50
53
  const ownerState = (0, _extends2.default)({}, rootProps, {
51
54
  density: densityValue
52
55
  });
53
56
  const classes = useUtilityClasses(ownerState);
54
- apiRef.current.register('public', {
55
- rootElementRef: rootContainerRef
56
- });
57
57
 
58
58
  // Our implementation of <NoSsr />
59
59
  const [mountedState, setMountedState] = React.useState(false);
@@ -63,12 +63,15 @@ const GridRoot = exports.GridRoot = /*#__PURE__*/React.forwardRef(function GridR
63
63
  if (!mountedState) {
64
64
  return null;
65
65
  }
66
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridRootStyles.GridRootStyles, (0, _extends2.default)({
66
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridRootStyles.GridRootStyles, (0, _extends2.default)({
67
67
  ref: handleRef,
68
68
  className: (0, _clsx.default)(className, classes.root),
69
69
  ownerState: ownerState
70
- }, ariaAttributes, other, {
71
- children: children
70
+ }, other, {
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(GridPanelAnchor, {
72
+ role: "presentation",
73
+ "data-id": "gridPanelAnchor"
74
+ }), children]
72
75
  }));
73
76
  });
74
77
  process.env.NODE_ENV !== "production" ? GridRoot.propTypes = {
@@ -160,15 +160,56 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
160
160
  [`& .${_gridClasses.gridClasses['detailPanelToggleCell--expanded']}`]: styles['detailPanelToggleCell--expanded']
161
161
  }, styles.root]
162
162
  })(({
163
- theme
163
+ theme: t
164
164
  }) => {
165
- const borderColor = getBorderColor(theme);
166
- const radius = theme.shape.borderRadius;
165
+ const borderColor = getBorderColor(t);
166
+ const radius = t.shape.borderRadius;
167
+ const containerBackground = t.vars ? t.vars.palette.background.default : t.palette.background.default;
168
+ const pinnedBackground = containerBackground;
169
+ const overlayBackground = t.vars ? `rgba(${t.vars.palette.background.defaultChannel} / ${t.vars.palette.action.disabledOpacity})` : (0, _styles.alpha)(t.palette.background.default, t.palette.action.disabledOpacity);
170
+ const hoverOpacity = (t.vars || t).palette.action.hoverOpacity;
171
+ const hoverColor = (t.vars || t).palette.action.hover;
172
+ const selectedOpacity = (t.vars || t).palette.action.selectedOpacity;
173
+ const selectedBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / ${selectedOpacity})` : (0, _styles.alpha)(t.palette.primary.main, selectedOpacity);
174
+ const selectedHoverBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / calc(
175
+ ${t.vars.palette.action.selectedOpacity} +
176
+ ${t.vars.palette.action.hoverOpacity}
177
+ ))` : (0, _styles.alpha)(t.palette.primary.main, t.palette.action.selectedOpacity + t.palette.action.hoverOpacity);
178
+ const pinnedHoverBackground = t.vars ? hoverColor : blend(pinnedBackground, hoverColor, hoverOpacity);
179
+ const pinnedSelectedBackground = t.vars ? selectedBackground : blend(pinnedBackground, selectedBackground, selectedOpacity);
180
+ const pinnedSelectedHoverBackground = t.vars ? hoverColor : blend(pinnedSelectedBackground, hoverColor, hoverOpacity);
181
+ const selectedStyles = {
182
+ backgroundColor: selectedBackground,
183
+ '&:hover': {
184
+ backgroundColor: selectedHoverBackground,
185
+ // Reset on touch devices, it doesn't add specificity
186
+ '@media (hover: none)': {
187
+ backgroundColor: selectedBackground
188
+ }
189
+ }
190
+ };
167
191
  const gridStyle = (0, _extends2.default)({
168
192
  '--unstable_DataGrid-radius': typeof radius === 'number' ? `${radius}px` : radius,
169
- '--unstable_DataGrid-headWeight': theme.typography.fontWeightMedium,
170
- '--unstable_DataGrid-overlayBackground': theme.vars ? `rgba(${theme.vars.palette.background.defaultChannel} / ${theme.vars.palette.action.disabledOpacity})` : (0, _styles.alpha)(theme.palette.background.default, theme.palette.action.disabledOpacity),
193
+ '--unstable_DataGrid-headWeight': t.typography.fontWeightMedium,
194
+ '--unstable_DataGrid-overlayBackground': overlayBackground,
195
+ '--DataGrid-containerBackground': containerBackground,
196
+ '--DataGrid-pinnedBackground': pinnedBackground,
197
+ '--DataGrid-rowBorderColor': borderColor,
171
198
  '--DataGrid-cellOffsetMultiplier': 2,
199
+ '--DataGrid-width': '0px',
200
+ '--DataGrid-hasScrollX': '0',
201
+ '--DataGrid-hasScrollY': '0',
202
+ '--DataGrid-offsetTop': '0px',
203
+ '--DataGrid-offsetLeft': '0px',
204
+ '--DataGrid-scrollbarSize': '10px',
205
+ '--DataGrid-rowWidth': '0px',
206
+ '--DataGrid-columnsTotalWidth': '0px',
207
+ '--DataGrid-leftPinnedWidth': '0px',
208
+ '--DataGrid-rightPinnedWidth': '0px',
209
+ '--DataGrid-headerHeight': '0px',
210
+ '--DataGrid-headersTotalHeight': '0px',
211
+ '--DataGrid-topContainerHeight': '0px',
212
+ '--DataGrid-bottomContainerHeight': '0px',
172
213
  flex: 1,
173
214
  boxSizing: 'border-box',
174
215
  position: 'relative',
@@ -176,8 +217,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
176
217
  borderStyle: 'solid',
177
218
  borderColor,
178
219
  borderRadius: 'var(--unstable_DataGrid-radius)',
179
- color: (theme.vars || theme).palette.text.primary
180
- }, theme.typography.body2, {
220
+ color: (t.vars || t).palette.text.primary
221
+ }, t.typography.body2, {
181
222
  outline: 'none',
182
223
  height: '100%',
183
224
  display: 'flex',
@@ -187,11 +228,17 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
187
228
  flexDirection: 'column',
188
229
  overflowAnchor: 'none',
189
230
  // Keep the same scrolling position
231
+ // The selector we really want here is `:first-child`, but emotion thinks it knows better than use what we
232
+ // want and prints a warning to the console if we use it, about :first-child being "unsafe" in an SSR context.
233
+ // https://github.com/emotion-js/emotion/issues/1105
234
+ // Using `:first-of-type instead` is ironically less "safe" because if all our elements aren't `div`, this style
235
+ // will fail to apply.
236
+ [`.${_gridClasses.gridClasses.main} > *:first-of-type`]: {
237
+ borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
238
+ borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
239
+ },
190
240
  [`&.${_gridClasses.gridClasses.autoHeight}`]: {
191
- height: 'auto',
192
- [`& .${_gridClasses.gridClasses['row--lastVisible']} .${_gridClasses.gridClasses.cell}`]: {
193
- borderBottomColor: 'transparent'
194
- }
241
+ height: 'auto'
195
242
  },
196
243
  [`&.${_gridClasses.gridClasses.autosizing}`]: {
197
244
  [`& .${_gridClasses.gridClasses.columnHeaderTitleContainerContent} > *`]: {
@@ -202,9 +249,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
202
249
  whiteSpace: 'nowrap'
203
250
  }
204
251
  },
205
- [`& .${_gridClasses.gridClasses['virtualScrollerContent--overflowed']} .${_gridClasses.gridClasses['row--lastVisible']} .${_gridClasses.gridClasses.cell}`]: {
206
- borderBottomColor: 'transparent'
207
- },
208
252
  [`& .${_gridClasses.gridClasses.columnHeader}, & .${_gridClasses.gridClasses.cell}`]: {
209
253
  WebkitTapHighlightColor: 'transparent',
210
254
  lineHeight: null,
@@ -212,12 +256,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
212
256
  boxSizing: 'border-box'
213
257
  },
214
258
  [`& .${_gridClasses.gridClasses.columnHeader}:focus-within, & .${_gridClasses.gridClasses.cell}:focus-within`]: {
215
- outline: `solid ${theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / 0.5)` : (0, _styles.alpha)(theme.palette.primary.main, 0.5)} 1px`,
259
+ outline: `solid ${t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / 0.5)` : (0, _styles.alpha)(t.palette.primary.main, 0.5)} 1px`,
216
260
  outlineWidth: 1,
217
261
  outlineOffset: -1
218
262
  },
219
263
  [`& .${_gridClasses.gridClasses.columnHeader}:focus, & .${_gridClasses.gridClasses.cell}:focus`]: {
220
- outline: `solid ${theme.palette.primary.main} 1px`
264
+ outline: `solid ${t.palette.primary.main} 1px`
221
265
  },
222
266
  [`& .${_gridClasses.gridClasses.columnHeaderCheckbox}, & .${_gridClasses.gridClasses.cellCheckbox}`]: {
223
267
  padding: 0,
@@ -227,7 +271,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
227
271
  [`& .${_gridClasses.gridClasses.columnHeader}`]: {
228
272
  position: 'relative',
229
273
  display: 'flex',
230
- alignItems: 'center'
274
+ alignItems: 'center',
275
+ overflow: 'hidden'
231
276
  },
232
277
  [`& .${_gridClasses.gridClasses['columnHeader--sorted']} .${_gridClasses.gridClasses.iconButtonContainer}, & .${_gridClasses.gridClasses['columnHeader--filtered']} .${_gridClasses.gridClasses.iconButtonContainer}`]: {
233
278
  visibility: 'visible',
@@ -235,8 +280,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
235
280
  },
236
281
  [`& .${_gridClasses.gridClasses.columnHeader}:not(.${_gridClasses.gridClasses['columnHeader--sorted']}) .${_gridClasses.gridClasses.sortIcon}`]: {
237
282
  opacity: 0,
238
- transition: theme.transitions.create(['opacity'], {
239
- duration: theme.transitions.duration.shorter
283
+ transition: t.transitions.create(['opacity'], {
284
+ duration: t.transitions.duration.shorter
240
285
  })
241
286
  },
242
287
  [`& .${_gridClasses.gridClasses.columnHeaderTitleContainer}`]: {
@@ -267,9 +312,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
267
312
  borderBottomStyle: 'solid',
268
313
  boxSizing: 'border-box'
269
314
  },
270
- [`& .${_gridClasses.gridClasses.headerFilterRow}`]: {
271
- borderTop: `1px solid ${borderColor}`
272
- },
273
315
  [`& .${_gridClasses.gridClasses.sortIcon}, & .${_gridClasses.gridClasses.filterIcon}`]: {
274
316
  fontSize: 'inherit'
275
317
  },
@@ -291,7 +333,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
291
333
  marginLeft: -10
292
334
  },
293
335
  [`& .${_gridClasses.gridClasses['columnHeader--moving']}`]: {
294
- backgroundColor: (theme.vars || theme).palette.action.hover
336
+ backgroundColor: (t.vars || t).palette.action.hover
295
337
  },
296
338
  [`& .${_gridClasses.gridClasses.columnSeparator}`]: {
297
339
  visibility: 'hidden',
@@ -302,6 +344,9 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
302
344
  justifyContent: 'center',
303
345
  color: borderColor
304
346
  },
347
+ [`& .${_gridClasses.gridClasses.columnHeaders}`]: {
348
+ width: 'var(--DataGrid-rowWidth)'
349
+ },
305
350
  '@media (hover: hover)': {
306
351
  [`& .${_gridClasses.gridClasses.columnHeaders}:hover`]: columnHeadersStyles,
307
352
  [`& .${_gridClasses.gridClasses.columnHeader}:hover`]: columnHeaderStyles,
@@ -323,14 +368,14 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
323
368
  cursor: 'col-resize',
324
369
  touchAction: 'none',
325
370
  '&:hover': {
326
- color: (theme.vars || theme).palette.text.primary,
371
+ color: (t.vars || t).palette.text.primary,
327
372
  // Reset on touch devices, it doesn't add specificity
328
373
  '@media (hover: none)': {
329
374
  color: borderColor
330
375
  }
331
376
  },
332
377
  [`&.${_gridClasses.gridClasses['columnSeparator--resizing']}`]: {
333
- color: (theme.vars || theme).palette.text.primary
378
+ color: (t.vars || t).palette.text.primary
334
379
  },
335
380
  '& svg': {
336
381
  pointerEvents: 'none'
@@ -351,46 +396,55 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
351
396
  visibility: 'visible',
352
397
  width: 'auto'
353
398
  },
354
- [`& .${_gridClasses.gridClasses.row}`]: {
399
+ [`& .${_gridClasses.gridClasses.headerFilterRow}`]: {
400
+ [`& .${_gridClasses.gridClasses.columnHeader}`]: {
401
+ boxSizing: 'border-box',
402
+ borderTop: '1px solid var(--DataGrid-rowBorderColor)'
403
+ }
404
+ },
405
+ /* Row styles */
406
+ [`.${_gridClasses.gridClasses.row}`]: {
355
407
  display: 'flex',
356
- width: 'fit-content',
408
+ width: 'var(--DataGrid-rowWidth)',
357
409
  breakInside: 'avoid',
358
410
  // Avoid the row to be broken in two different print pages.
359
- '&:hover, &.Mui-hovered': {
360
- backgroundColor: (theme.vars || theme).palette.action.hover,
411
+
412
+ '--rowBorderColor': 'var(--DataGrid-rowBorderColor)',
413
+ [`&.${_gridClasses.gridClasses['row--firstVisible']}`]: {
414
+ '--rowBorderColor': 'transparent'
415
+ },
416
+ '&:hover': {
417
+ backgroundColor: (t.vars || t).palette.action.hover,
361
418
  // Reset on touch devices, it doesn't add specificity
362
419
  '@media (hover: none)': {
363
420
  backgroundColor: 'transparent'
364
421
  }
365
422
  },
366
- '&.Mui-selected': {
367
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),
368
- '&:hover, &.Mui-hovered': {
369
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(
370
- ${theme.vars.palette.action.selectedOpacity} +
371
- ${theme.vars.palette.action.hoverOpacity}
372
- ))` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
373
- // Reset on touch devices, it doesn't add specificity
374
- '@media (hover: none)': {
375
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity)
376
- }
377
- }
423
+ '&.Mui-selected': selectedStyles
424
+ },
425
+ [`& .${_gridClasses.gridClasses['container--top']}, & .${_gridClasses.gridClasses['container--bottom']}`]: {
426
+ '[role=row]': {
427
+ background: 'var(--DataGrid-containerBackground)'
428
+ },
429
+ [`.${_gridClasses.gridClasses.pinnedColumnHeaders} [role=row]`]: {
430
+ background: 'var(--DataGrid-pinnedBackground)'
378
431
  }
379
432
  },
433
+ /* Cell styles */
380
434
  [`& .${_gridClasses.gridClasses.cell}`]: {
381
435
  display: 'flex',
382
436
  alignItems: 'center',
383
- borderBottom: '1px solid',
384
- '&.Mui-selected': {
385
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),
386
- '&:hover, &.Mui-hovered': {
387
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity + theme.palette.action.hoverOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
388
- // Reset on touch devices, it doesn't add specificity
389
- '@media (hover: none)': {
390
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity)
391
- }
392
- }
393
- }
437
+ height: 'var(--height)',
438
+ minWidth: 'var(--width)',
439
+ maxWidth: 'var(--width)',
440
+ '--width': '0px',
441
+ '--height': '0px',
442
+ boxSizing: 'border-box',
443
+ borderTop: `1px solid var(--rowBorderColor)`,
444
+ '&.Mui-selected': selectedStyles
445
+ },
446
+ [`& .${_gridClasses.gridClasses['virtualScrollerContent--overflowed']} .${_gridClasses.gridClasses['row--lastVisible']} .${_gridClasses.gridClasses.cell}`]: {
447
+ borderTopColor: 'transparent'
394
448
  },
395
449
  [`&.${_gridClasses.gridClasses['root--disableUserSelection']} .${_gridClasses.gridClasses.cell}`]: {
396
450
  userSelect: 'none'
@@ -399,9 +453,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
399
453
  overflow: 'hidden',
400
454
  whiteSpace: 'nowrap'
401
455
  },
402
- [`& .${_gridClasses.gridClasses.cellContent}`]: {
403
- overflow: 'hidden',
404
- textOverflow: 'ellipsis'
456
+ [`& .${_gridClasses.gridClasses.cellEmpty}`]: {
457
+ padding: 0
405
458
  },
406
459
  [`& .${_gridClasses.gridClasses.cell}.${_gridClasses.gridClasses['cell--selectionMode']}`]: {
407
460
  cursor: 'default'
@@ -409,19 +462,23 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
409
462
  [`& .${_gridClasses.gridClasses.cell}.${_gridClasses.gridClasses['cell--editing']}`]: {
410
463
  padding: 1,
411
464
  display: 'flex',
412
- boxShadow: theme.shadows[2],
413
- backgroundColor: (theme.vars || theme).palette.background.paper,
465
+ boxShadow: t.shadows[2],
466
+ backgroundColor: (t.vars || t).palette.background.paper,
414
467
  '&:focus-within': {
415
- outline: `solid ${(theme.vars || theme).palette.primary.main} 1px`,
468
+ outline: `solid ${(t.vars || t).palette.primary.main} 1px`,
416
469
  outlineOffset: '-1px'
417
470
  }
418
471
  },
472
+ [`& .${_gridClasses.gridClasses.cellContent}`]: {
473
+ overflow: 'hidden',
474
+ textOverflow: 'ellipsis'
475
+ },
419
476
  [`& .${_gridClasses.gridClasses['row--editing']}`]: {
420
- boxShadow: theme.shadows[2]
477
+ boxShadow: t.shadows[2]
421
478
  },
422
479
  [`& .${_gridClasses.gridClasses['row--editing']} .${_gridClasses.gridClasses.cell}`]: {
423
- boxShadow: theme.shadows[0],
424
- backgroundColor: (theme.vars || theme).palette.background.paper
480
+ boxShadow: t.shadows[0],
481
+ backgroundColor: (t.vars || t).palette.background.paper
425
482
  },
426
483
  [`& .${_gridClasses.gridClasses.editBooleanCell}`]: {
427
484
  display: 'flex',
@@ -431,22 +488,22 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
431
488
  justifyContent: 'center'
432
489
  },
433
490
  [`& .${_gridClasses.gridClasses.booleanCell}[data-value="true"]`]: {
434
- color: (theme.vars || theme).palette.text.secondary
491
+ color: (t.vars || t).palette.text.secondary
435
492
  },
436
493
  [`& .${_gridClasses.gridClasses.booleanCell}[data-value="false"]`]: {
437
- color: (theme.vars || theme).palette.text.disabled
494
+ color: (t.vars || t).palette.text.disabled
438
495
  },
439
496
  [`& .${_gridClasses.gridClasses.actionsCell}`]: {
440
497
  display: 'inline-flex',
441
498
  alignItems: 'center',
442
- gridGap: theme.spacing(1)
499
+ gridGap: t.spacing(1)
443
500
  },
444
501
  [`& .${_gridClasses.gridClasses.rowReorderCell}`]: {
445
502
  display: 'inline-flex',
446
503
  flex: 1,
447
504
  alignItems: 'center',
448
505
  justifyContent: 'center',
449
- opacity: (theme.vars || theme).palette.action.disabledOpacity
506
+ opacity: (t.vars || t).palette.action.disabledOpacity
450
507
  },
451
508
  [`& .${_gridClasses.gridClasses['rowReorderCell--draggable']}`]: {
452
509
  cursor: 'move',
@@ -459,7 +516,13 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
459
516
  [`.${_gridClasses.gridClasses.withBorderColor}`]: {
460
517
  borderColor
461
518
  },
519
+ [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}`]: {
520
+ borderLeftColor: 'var(--DataGrid-rowBorderColor)',
521
+ borderLeftWidth: '1px',
522
+ borderLeftStyle: 'solid'
523
+ },
462
524
  [`& .${_gridClasses.gridClasses['cell--withRightBorder']}`]: {
525
+ borderRightColor: 'var(--DataGrid-rowBorderColor)',
463
526
  borderRightWidth: '1px',
464
527
  borderRightStyle: 'solid'
465
528
  },
@@ -476,6 +539,31 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
476
539
  [`& .${_gridClasses.gridClasses['cell--textCenter']}`]: {
477
540
  justifyContent: 'center'
478
541
  },
542
+ [`& .${_gridClasses.gridClasses['cell--pinnedLeft']}, & .${_gridClasses.gridClasses['cell--pinnedRight']}`]: {
543
+ position: 'sticky',
544
+ zIndex: 3,
545
+ background: 'var(--DataGrid-pinnedBackground)'
546
+ },
547
+ [`& .${_gridClasses.gridClasses.virtualScrollerContent} .${_gridClasses.gridClasses.row}`]: {
548
+ '&:hover': {
549
+ [`& .${_gridClasses.gridClasses['cell--pinnedLeft']}, & .${_gridClasses.gridClasses['cell--pinnedRight']}`]: {
550
+ backgroundColor: pinnedHoverBackground
551
+ }
552
+ },
553
+ [`&.Mui-selected`]: {
554
+ [`& .${_gridClasses.gridClasses['cell--pinnedLeft']}, & .${_gridClasses.gridClasses['cell--pinnedRight']}`]: {
555
+ backgroundColor: pinnedSelectedBackground
556
+ },
557
+ '&:hover': {
558
+ [`& .${_gridClasses.gridClasses['cell--pinnedLeft']}, & .${_gridClasses.gridClasses['cell--pinnedRight']}`]: {
559
+ backgroundColor: pinnedSelectedHoverBackground
560
+ }
561
+ }
562
+ }
563
+ },
564
+ [`& .${_gridClasses.gridClasses.cell}:not(.${_gridClasses.gridClasses['cell--pinnedLeft']}):not(.${_gridClasses.gridClasses['cell--pinnedRight']})`]: {
565
+ transform: 'translate3d(var(--DataGrid-offsetLeft), 0, 0)'
566
+ },
479
567
  [`& .${_gridClasses.gridClasses.columnHeaderDraggableContainer}`]: {
480
568
  display: 'flex',
481
569
  width: '100%',
@@ -485,16 +573,16 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
485
573
  display: 'none'
486
574
  },
487
575
  [`& .${_gridClasses.gridClasses['columnHeader--dragging']}, & .${_gridClasses.gridClasses['row--dragging']}`]: {
488
- background: (theme.vars || theme).palette.background.paper,
576
+ background: (t.vars || t).palette.background.paper,
489
577
  padding: '0 12px',
490
578
  borderRadius: 'var(--unstable_DataGrid-radius)',
491
- opacity: (theme.vars || theme).palette.action.disabledOpacity
579
+ opacity: (t.vars || t).palette.action.disabledOpacity
492
580
  },
493
581
  [`& .${_gridClasses.gridClasses['row--dragging']}`]: {
494
- background: (theme.vars || theme).palette.background.paper,
582
+ background: (t.vars || t).palette.background.paper,
495
583
  padding: '0 12px',
496
584
  borderRadius: 'var(--unstable_DataGrid-radius)',
497
- opacity: (theme.vars || theme).palette.action.disabledOpacity,
585
+ opacity: (t.vars || t).palette.action.disabledOpacity,
498
586
  [`& .${_gridClasses.gridClasses.rowReorderCellPlaceholder}`]: {
499
587
  display: 'flex'
500
588
  }
@@ -507,7 +595,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
507
595
  [`& .${_gridClasses.gridClasses.treeDataGroupingCellToggle}`]: {
508
596
  flex: '0 0 28px',
509
597
  alignSelf: 'stretch',
510
- marginRight: theme.spacing(2)
598
+ marginRight: t.spacing(2)
511
599
  },
512
600
  [`& .${_gridClasses.gridClasses.groupingCriteriaCell}`]: {
513
601
  display: 'flex',
@@ -517,8 +605,23 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
517
605
  [`& .${_gridClasses.gridClasses.groupingCriteriaCellToggle}`]: {
518
606
  flex: '0 0 28px',
519
607
  alignSelf: 'stretch',
520
- marginRight: theme.spacing(2)
608
+ marginRight: t.spacing(2)
521
609
  }
522
610
  });
523
611
  return gridStyle;
524
- });
612
+ });
613
+
614
+ /**
615
+ * Blend a transparent overlay color with a background color, resulting in a single
616
+ * RGB color.
617
+ */
618
+ function blend(background, overlay, opacity, gamma = 1) {
619
+ const f = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);
620
+ const backgroundColor = (0, _styles.decomposeColor)(background);
621
+ const overlayColor = (0, _styles.decomposeColor)(overlay);
622
+ const rgb = [f(backgroundColor.values[0], overlayColor.values[0]), f(backgroundColor.values[1], overlayColor.values[1]), f(backgroundColor.values[2], overlayColor.values[2])];
623
+ return (0, _styles.recomposeColor)({
624
+ type: 'rgb',
625
+ values: rgb
626
+ });
627
+ }
@@ -38,7 +38,7 @@ function GridColumnMenuSortItem(props) {
38
38
  const direction = event.currentTarget.getAttribute('data-value') || null;
39
39
  apiRef.current.sortColumn(colDef.field, direction === sortDirection ? null : direction);
40
40
  }, [apiRef, colDef, onClick, sortDirection]);
41
- if (!colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
41
+ if (rootProps.disableColumnSorting || !colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
42
42
  return null;
43
43
  }
44
44
  const getLabel = key => {
@@ -17,7 +17,6 @@ var _Paper = _interopRequireDefault(require("@mui/material/Paper"));
17
17
  var _Popper = _interopRequireDefault(require("@mui/material/Popper"));
18
18
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
19
19
  var _keyboardUtils = require("../../utils/keyboardUtils");
20
- var _gridClasses = require("../../constants/gridClasses");
21
20
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
22
21
  var _jsxRuntime = require("react/jsx-runtime");
23
22
  const _excluded = ["children", "className", "classes"];
@@ -79,9 +78,9 @@ const GridPanel = exports.GridPanel = /*#__PURE__*/React.forwardRef((props, ref)
79
78
  }], []);
80
79
  const [anchorEl, setAnchorEl] = React.useState(null);
81
80
  React.useEffect(() => {
82
- const columnHeadersElement = apiRef.current.rootElementRef?.current?.querySelector(`.${_gridClasses.gridClasses.columnHeaders}`);
83
- if (columnHeadersElement) {
84
- setAnchorEl(columnHeadersElement);
81
+ const panelAnchor = apiRef.current.rootElementRef?.current?.querySelector('[data-id="gridPanelAnchor"]');
82
+ if (panelAnchor) {
83
+ setAnchorEl(panelAnchor);
85
84
  }
86
85
  }, [apiRef]);
87
86
  if (!anchorEl) {