@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
@@ -30,7 +30,7 @@ function GridColumnMenuSortItem(props) {
30
30
  const direction = event.currentTarget.getAttribute('data-value') || null;
31
31
  apiRef.current.sortColumn(colDef.field, direction === sortDirection ? null : direction);
32
32
  }, [apiRef, colDef, onClick, sortDirection]);
33
- if (!colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
33
+ if (rootProps.disableColumnSorting || !colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
34
34
  return null;
35
35
  }
36
36
  const getLabel = key => {
@@ -11,7 +11,6 @@ import Paper from '@mui/material/Paper';
11
11
  import Popper from '@mui/material/Popper';
12
12
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
13
13
  import { isEscapeKey } from '../../utils/keyboardUtils';
14
- import { gridClasses } from '../../constants/gridClasses';
15
14
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
16
15
  import { jsx as _jsx } from "react/jsx-runtime";
17
16
  export const gridPanelClasses = generateUtilityClasses('MuiDataGrid', ['panel', 'paper']);
@@ -70,9 +69,9 @@ const GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {
70
69
  }], []);
71
70
  const [anchorEl, setAnchorEl] = React.useState(null);
72
71
  React.useEffect(() => {
73
- const columnHeadersElement = apiRef.current.rootElementRef?.current?.querySelector(`.${gridClasses.columnHeaders}`);
74
- if (columnHeadersElement) {
75
- setAnchorEl(columnHeadersElement);
72
+ const panelAnchor = apiRef.current.rootElementRef?.current?.querySelector('[data-id="gridPanelAnchor"]');
73
+ if (panelAnchor) {
74
+ setAnchorEl(panelAnchor);
76
75
  }
77
76
  }, [apiRef]);
78
77
  if (!anchorEl) {
@@ -1,13 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["item", "hasMultipleFilters", "deleteFilter", "applyFilterChanges", "multiFilterOperator", "showMultiFilterOperators", "disableMultiFilterOperator", "applyMultiFilterOperatorChanges", "focusElementRef", "logicOperators", "columnsSort", "filterColumns", "deleteIconProps", "logicOperatorInputProps", "operatorInputProps", "columnInputProps", "valueInputProps", "children"],
3
+ const _excluded = ["item", "hasMultipleFilters", "deleteFilter", "applyFilterChanges", "showMultiFilterOperators", "disableMultiFilterOperator", "applyMultiFilterOperatorChanges", "focusElementRef", "logicOperators", "columnsSort", "filterColumns", "deleteIconProps", "logicOperatorInputProps", "operatorInputProps", "columnInputProps", "valueInputProps", "readOnly", "children"],
4
4
  _excluded2 = ["InputComponentProps"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_capitalize as capitalize } from '@mui/utils';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import clsx from 'clsx';
10
- import { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';
10
+ import { gridFilterableColumnDefinitionsSelector, gridColumnLookupSelector } from '../../../hooks/features/columns/gridColumnsSelector';
11
11
  import { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';
12
12
  import { useGridSelector } from '../../../hooks/utils/useGridSelector';
13
13
  import { GridLogicOperator } from '../../../models/gridFilterItem';
@@ -102,7 +102,6 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
102
102
  hasMultipleFilters,
103
103
  deleteFilter,
104
104
  applyFilterChanges,
105
- multiFilterOperator,
106
105
  showMultiFilterOperators,
107
106
  disableMultiFilterOperator,
108
107
  applyMultiFilterOperatorChanges,
@@ -114,10 +113,12 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
114
113
  logicOperatorInputProps = {},
115
114
  operatorInputProps = {},
116
115
  columnInputProps = {},
117
- valueInputProps = {}
116
+ valueInputProps = {},
117
+ readOnly
118
118
  } = props,
119
119
  other = _objectWithoutPropertiesLoose(props, _excluded);
120
120
  const apiRef = useGridApiContext();
121
+ const columnLookup = useGridSelector(apiRef, gridColumnLookupSelector);
121
122
  const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);
122
123
  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
123
124
  const columnSelectId = useId();
@@ -128,6 +129,7 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
128
129
  const classes = useUtilityClasses(rootProps);
129
130
  const valueRef = React.useRef(null);
130
131
  const filterSelectorRef = React.useRef(null);
132
+ const multiFilterOperator = filterModel.logicOperator ?? GridLogicOperator.And;
131
133
  const hasLogicOperatorColumn = hasMultipleFilters && logicOperators.length > 0;
132
134
  const baseFormControlProps = rootProps.slotProps?.baseFormControl || {};
133
135
  const baseSelectProps = rootProps.slotProps?.baseSelect || {};
@@ -143,6 +145,15 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
143
145
  selectedField
144
146
  } = React.useMemo(() => {
145
147
  let itemField = item.field;
148
+
149
+ // Yields a valid value if the current filter belongs to a column that is not filterable
150
+ const selectedNonFilterableColumn = columnLookup[item.field].filterable === false ? columnLookup[item.field] : null;
151
+ if (selectedNonFilterableColumn) {
152
+ return {
153
+ filteredColumns: [selectedNonFilterableColumn],
154
+ selectedField: itemField
155
+ };
156
+ }
146
157
  if (filterColumns === undefined || typeof filterColumns !== 'function') {
147
158
  return {
148
159
  filteredColumns: filterableColumns,
@@ -164,7 +175,7 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
164
175
  }),
165
176
  selectedField: itemField
166
177
  };
167
- }, [filterColumns, filterModel?.items, filterableColumns, item.field]);
178
+ }, [filterColumns, filterModel?.items, filterableColumns, item.field, columnLookup]);
168
179
  const sortedFilteredColumns = React.useMemo(() => {
169
180
  switch (columnsSort) {
170
181
  case 'asc':
@@ -271,7 +282,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
271
282
  "aria-label": apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),
272
283
  title: apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),
273
284
  onClick: handleDeleteFilter,
274
- size: "small"
285
+ size: "small",
286
+ disabled: readOnly
275
287
  }, rootProps.slotProps?.baseIconButton, {
276
288
  children: /*#__PURE__*/_jsx(rootProps.slots.filterPanelDeleteIcon, {
277
289
  fontSize: "small"
@@ -318,7 +330,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
318
330
  label: apiRef.current.getLocaleText('filterPanelColumns'),
319
331
  value: selectedField ?? '',
320
332
  onChange: changeColumn,
321
- native: isBaseSelectNative
333
+ native: isBaseSelectNative,
334
+ disabled: readOnly
322
335
  }, rootProps.slotProps?.baseSelect, {
323
336
  children: sortedFilteredColumns.map(col => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
324
337
  native: isBaseSelectNative,
@@ -343,7 +356,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
343
356
  value: item.operator,
344
357
  onChange: changeOperator,
345
358
  native: isBaseSelectNative,
346
- inputRef: filterSelectorRef
359
+ inputRef: filterSelectorRef,
360
+ disabled: readOnly
347
361
  }, rootProps.slotProps?.baseSelect, {
348
362
  children: currentColumn?.filterOperators?.map(operator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
349
363
  native: isBaseSelectNative,
@@ -361,7 +375,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
361
375
  apiRef: apiRef,
362
376
  item: item,
363
377
  applyValue: applyFilterChanges,
364
- focusElementRef: valueRef
378
+ focusElementRef: valueRef,
379
+ disabled: readOnly
365
380
  }, currentOperator.InputComponentProps, InputComponentProps), item.field) : null
366
381
  }))]
367
382
  }));
@@ -444,15 +459,17 @@ process.env.NODE_ENV !== "production" ? GridFilterForm.propTypes = {
444
459
  * @default [GridLogicOperator.And, GridLogicOperator.Or]
445
460
  */
446
461
  logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),
447
- /**
448
- * The current logic operator applied.
449
- */
450
- multiFilterOperator: PropTypes.oneOf(['and', 'or']),
451
462
  /**
452
463
  * Props passed to the operator input component.
453
464
  * @default {}
454
465
  */
455
466
  operatorInputProps: PropTypes.any,
467
+ /**
468
+ * `true` if the filter is disabled/read only.
469
+ * i.e. `colDef.fiterable = false` but passed in `filterModel`
470
+ * @default false
471
+ */
472
+ readOnly: PropTypes.bool,
456
473
  /**
457
474
  * If `true`, the logic operator field is visible.
458
475
  */
@@ -12,7 +12,7 @@ import { GridFilterForm } from './GridFilterForm';
12
12
  import { useGridRootProps } from '../../../hooks/utils/useGridRootProps';
13
13
  import { useGridSelector } from '../../../hooks/utils/useGridSelector';
14
14
  import { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';
15
- import { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';
15
+ import { gridFilterableColumnDefinitionsSelector, gridFilterableColumnLookupSelector } from '../../../hooks/features/columns/gridColumnsSelector';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
18
  const getGridFilter = col => ({
@@ -25,6 +25,7 @@ const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(p
25
25
  const rootProps = useGridRootProps();
26
26
  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
27
27
  const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);
28
+ const filterableColumnsLookup = useGridSelector(apiRef, gridFilterableColumnLookupSelector);
28
29
  const lastFilterRef = React.useRef(null);
29
30
  const placeholderFilter = React.useRef(null);
30
31
  const {
@@ -94,63 +95,88 @@ const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(p
94
95
  return placeholderFilter.current ? [placeholderFilter.current] : [];
95
96
  }, [filterModel.items, getDefaultFilter]);
96
97
  const hasMultipleFilters = items.length > 1;
97
- const addNewFilter = () => {
98
+ const {
99
+ readOnlyFilters,
100
+ validFilters
101
+ } = React.useMemo(() => items.reduce((acc, item) => {
102
+ if (filterableColumnsLookup[item.field]) {
103
+ acc.validFilters.push(item);
104
+ } else {
105
+ acc.readOnlyFilters.push(item);
106
+ }
107
+ return acc;
108
+ }, {
109
+ readOnlyFilters: [],
110
+ validFilters: []
111
+ }), [items, filterableColumnsLookup]);
112
+ const addNewFilter = React.useCallback(() => {
98
113
  const newFilter = getNewFilter();
99
114
  if (!newFilter) {
100
115
  return;
101
116
  }
102
117
  apiRef.current.upsertFilterItems([...items, newFilter]);
103
- };
118
+ }, [apiRef, getNewFilter, items]);
104
119
  const deleteFilter = React.useCallback(item => {
105
- const shouldCloseFilterPanel = items.length === 1;
120
+ const shouldCloseFilterPanel = validFilters.length === 1;
106
121
  apiRef.current.deleteFilterItem(item);
107
122
  if (shouldCloseFilterPanel) {
108
123
  apiRef.current.hideFilterPanel();
109
124
  }
110
- }, [apiRef, items.length]);
111
- const handleRemoveAll = () => {
112
- if (items.length === 1 && items[0].value === undefined) {
113
- apiRef.current.deleteFilterItem(items[0]);
114
- apiRef.current.hideFilterPanel();
125
+ }, [apiRef, validFilters.length]);
126
+ const handleRemoveAll = React.useCallback(() => {
127
+ if (validFilters.length === 1 && validFilters[0].value === undefined) {
128
+ apiRef.current.deleteFilterItem(validFilters[0]);
129
+ return apiRef.current.hideFilterPanel();
115
130
  }
116
- apiRef.current.setFilterModel(_extends({}, filterModel, {
117
- items: []
131
+ return apiRef.current.setFilterModel(_extends({}, filterModel, {
132
+ items: readOnlyFilters
118
133
  }));
119
- };
134
+ }, [apiRef, readOnlyFilters, filterModel, validFilters]);
120
135
  React.useEffect(() => {
121
136
  if (logicOperators.length > 0 && filterModel.logicOperator && !logicOperators.includes(filterModel.logicOperator)) {
122
137
  applyFilterLogicOperator(logicOperators[0]);
123
138
  }
124
139
  }, [logicOperators, applyFilterLogicOperator, filterModel.logicOperator]);
125
140
  React.useEffect(() => {
126
- if (items.length > 0) {
141
+ if (validFilters.length > 0) {
127
142
  lastFilterRef.current.focus();
128
143
  }
129
- }, [items.length]);
144
+ }, [validFilters.length]);
130
145
  return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({
131
146
  ref: ref
132
147
  }, other, {
133
- children: [/*#__PURE__*/_jsx(GridPanelContent, {
134
- children: items.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({
148
+ children: [/*#__PURE__*/_jsxs(GridPanelContent, {
149
+ children: [readOnlyFilters.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({
135
150
  item: item,
136
151
  applyFilterChanges: applyFilter,
137
152
  deleteFilter: deleteFilter,
138
153
  hasMultipleFilters: hasMultipleFilters,
139
154
  showMultiFilterOperators: index > 0,
140
- multiFilterOperator: filterModel.logicOperator,
141
155
  disableMultiFilterOperator: index !== 1,
142
156
  applyMultiFilterOperatorChanges: applyFilterLogicOperator,
143
- focusElementRef: index === items.length - 1 ? lastFilterRef : null,
157
+ focusElementRef: null,
158
+ readOnly: true,
159
+ logicOperators: logicOperators,
160
+ columnsSort: columnsSort
161
+ }, filterFormProps), item.id == null ? index : item.id)), validFilters.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({
162
+ item: item,
163
+ applyFilterChanges: applyFilter,
164
+ deleteFilter: deleteFilter,
165
+ hasMultipleFilters: hasMultipleFilters,
166
+ showMultiFilterOperators: readOnlyFilters.length + index > 0,
167
+ disableMultiFilterOperator: readOnlyFilters.length + index !== 1,
168
+ applyMultiFilterOperatorChanges: applyFilterLogicOperator,
169
+ focusElementRef: index === validFilters.length - 1 ? lastFilterRef : null,
144
170
  logicOperators: logicOperators,
145
171
  columnsSort: columnsSort
146
- }, filterFormProps), item.id == null ? index : item.id))
172
+ }, filterFormProps), item.id == null ? index + readOnlyFilters.length : item.id))]
147
173
  }), !rootProps.disableMultipleColumnsFiltering && !(disableAddFilterButton && disableRemoveAllButton) ? /*#__PURE__*/_jsxs(GridPanelFooter, {
148
174
  children: [!disableAddFilterButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
149
175
  onClick: addNewFilter,
150
176
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelAddIcon, {})
151
177
  }, rootProps.slotProps?.baseButton, {
152
178
  children: apiRef.current.getLocaleText('filterPanelAddFilter')
153
- })) : /*#__PURE__*/_jsx("span", {}), !disableRemoveAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
179
+ })) : /*#__PURE__*/_jsx("span", {}), !disableRemoveAllButton && validFilters.length > 0 ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
154
180
  onClick: handleRemoveAll,
155
181
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelRemoveAllIcon, {})
156
182
  }, rootProps.slotProps?.baseButton, {
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["onClick"];
4
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
5
4
  import { unstable_useId as useId } from '@mui/material/utils';
6
5
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
7
6
  import { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';
@@ -9,11 +8,12 @@ import { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel
9
8
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
10
9
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
11
10
  import { jsx as _jsx } from "react/jsx-runtime";
12
- export const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {
11
+ const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {
13
12
  const {
14
- onClick
15
- } = props,
16
- other = _objectWithoutPropertiesLoose(props, _excluded);
13
+ slotProps = {}
14
+ } = props;
15
+ const buttonProps = slotProps.button || {};
16
+ const tooltipProps = slotProps.tooltip || {};
17
17
  const columnButtonId = useId();
18
18
  const columnPanelId = useId();
19
19
  const apiRef = useGridApiContext();
@@ -25,7 +25,7 @@ export const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function G
25
25
  } else {
26
26
  apiRef.current.showPreferences(GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);
27
27
  }
28
- onClick?.(event);
28
+ buttonProps.onClick?.(event);
29
29
  };
30
30
 
31
31
  // Disable the button if the corresponding is disabled
@@ -33,18 +33,35 @@ export const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function G
33
33
  return null;
34
34
  }
35
35
  const isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;
36
- return /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
37
- ref: ref,
38
- id: columnButtonId,
39
- size: "small",
40
- "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
41
- "aria-haspopup": "menu",
42
- "aria-expanded": isOpen,
43
- "aria-controls": isOpen ? columnPanelId : undefined,
44
- startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})
45
- }, other, {
46
- onClick: showColumns
47
- }, rootProps.slotProps?.baseButton, {
48
- children: apiRef.current.getLocaleText('toolbarColumns')
36
+ return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
37
+ title: apiRef.current.getLocaleText('toolbarColumnsLabel'),
38
+ enterDelay: 1000
39
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
40
+ children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
41
+ ref: ref,
42
+ id: columnButtonId,
43
+ size: "small",
44
+ "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
45
+ "aria-haspopup": "menu",
46
+ "aria-expanded": isOpen,
47
+ "aria-controls": isOpen ? columnPanelId : undefined,
48
+ startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})
49
+ }, buttonProps, {
50
+ onClick: showColumns
51
+ }, rootProps.slotProps?.baseButton, {
52
+ children: apiRef.current.getLocaleText('toolbarColumns')
53
+ }))
49
54
  }));
50
- });
55
+ });
56
+ process.env.NODE_ENV !== "production" ? GridToolbarColumnsButton.propTypes = {
57
+ // ----------------------------- Warning --------------------------------
58
+ // | These PropTypes are generated from the TypeScript type definitions |
59
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
60
+ // ----------------------------------------------------------------------
61
+ /**
62
+ * The props used for each slot inside.
63
+ * @default {}
64
+ */
65
+ slotProps: PropTypes.object
66
+ } : void 0;
67
+ export { GridToolbarColumnsButton };
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["onClick"];
4
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
5
4
  import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';
6
5
  import MenuList from '@mui/material/MenuList';
7
6
  import MenuItem from '@mui/material/MenuItem';
@@ -15,11 +14,12 @@ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
15
14
  import { gridClasses } from '../../constants/gridClasses';
16
15
  import { jsx as _jsx } from "react/jsx-runtime";
17
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
- export const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridToolbarDensitySelector(props, ref) {
17
+ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridToolbarDensitySelector(props, ref) {
19
18
  const {
20
- onClick
21
- } = props,
22
- other = _objectWithoutPropertiesLoose(props, _excluded);
19
+ slotProps = {}
20
+ } = props;
21
+ const buttonProps = slotProps.button || {};
22
+ const tooltipProps = slotProps.tooltip || {};
23
23
  const apiRef = useGridApiContext();
24
24
  const rootProps = useGridRootProps();
25
25
  const densityValue = useGridSelector(apiRef, gridDensityValueSelector);
@@ -53,7 +53,7 @@ export const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function
53
53
  }, [densityValue, rootProps]);
54
54
  const handleDensitySelectorOpen = event => {
55
55
  setOpen(prevOpen => !prevOpen);
56
- onClick?.(event);
56
+ buttonProps.onClick?.(event);
57
57
  };
58
58
  const handleDensitySelectorClose = () => {
59
59
  setOpen(false);
@@ -83,19 +83,24 @@ export const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function
83
83
  }), option.label]
84
84
  }, index));
85
85
  return /*#__PURE__*/_jsxs(React.Fragment, {
86
- children: [/*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
87
- ref: handleRef,
88
- size: "small",
89
- startIcon: startIcon,
90
- "aria-label": apiRef.current.getLocaleText('toolbarDensityLabel'),
91
- "aria-haspopup": "menu",
92
- "aria-expanded": open,
93
- "aria-controls": open ? densityMenuId : undefined,
94
- id: densityButtonId
95
- }, other, {
96
- onClick: handleDensitySelectorOpen
97
- }, rootProps.slotProps?.baseButton, {
98
- children: apiRef.current.getLocaleText('toolbarDensity')
86
+ children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
87
+ title: apiRef.current.getLocaleText('toolbarDensityLabel'),
88
+ enterDelay: 1000
89
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
90
+ children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
91
+ ref: handleRef,
92
+ size: "small",
93
+ startIcon: startIcon,
94
+ "aria-label": apiRef.current.getLocaleText('toolbarDensityLabel'),
95
+ "aria-haspopup": "menu",
96
+ "aria-expanded": open,
97
+ "aria-controls": open ? densityMenuId : undefined,
98
+ id: densityButtonId
99
+ }, buttonProps, {
100
+ onClick: handleDensitySelectorOpen
101
+ }, rootProps.slotProps?.baseButton, {
102
+ children: apiRef.current.getLocaleText('toolbarDensity')
103
+ }))
99
104
  })), /*#__PURE__*/_jsx(GridMenu, {
100
105
  open: open,
101
106
  target: buttonRef.current,
@@ -111,4 +116,16 @@ export const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function
111
116
  })
112
117
  })]
113
118
  });
114
- });
119
+ });
120
+ process.env.NODE_ENV !== "production" ? GridToolbarDensitySelector.propTypes = {
121
+ // ----------------------------- Warning --------------------------------
122
+ // | These PropTypes are generated from the TypeScript type definitions |
123
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
124
+ // ----------------------------------------------------------------------
125
+ /**
126
+ * The props used for each slot inside.
127
+ * @default {}
128
+ */
129
+ slotProps: PropTypes.object
130
+ } : void 0;
131
+ export { GridToolbarDensitySelector };
@@ -70,6 +70,11 @@ process.env.NODE_ENV !== "production" ? GridToolbarExport.propTypes = {
70
70
  // | To update them edit the TypeScript types and run "yarn proptypes" |
71
71
  // ----------------------------------------------------------------------
72
72
  csvOptions: PropTypes.object,
73
- printOptions: PropTypes.object
73
+ printOptions: PropTypes.object,
74
+ /**
75
+ * The props used for each slot inside.
76
+ * @default {}
77
+ */
78
+ slotProps: PropTypes.object
74
79
  } : void 0;
75
80
  export { GridToolbarExport };
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["children", "onClick"];
4
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
5
4
  import { unstable_useId as useId, unstable_useForkRef as useForkRef } from '@mui/utils';
6
5
  import MenuList from '@mui/material/MenuList';
7
6
  import { isHideMenuKey, isTabKey } from '../../utils/keyboardUtils';
@@ -11,12 +10,13 @@ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
11
10
  import { gridClasses } from '../../constants/gridClasses';
12
11
  import { jsx as _jsx } from "react/jsx-runtime";
13
12
  import { jsxs as _jsxs } from "react/jsx-runtime";
14
- export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {
13
+ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridToolbarExportContainer(props, ref) {
15
14
  const {
16
- children,
17
- onClick
18
- } = props,
19
- other = _objectWithoutPropertiesLoose(props, _excluded);
15
+ children,
16
+ slotProps = {}
17
+ } = props;
18
+ const buttonProps = slotProps.button || {};
19
+ const tooltipProps = slotProps.tooltip || {};
20
20
  const apiRef = useGridApiContext();
21
21
  const rootProps = useGridRootProps();
22
22
  const exportButtonId = useId();
@@ -26,7 +26,7 @@ export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function
26
26
  const handleRef = useForkRef(ref, buttonRef);
27
27
  const handleMenuOpen = event => {
28
28
  setOpen(prevOpen => !prevOpen);
29
- onClick?.(event);
29
+ buttonProps.onClick?.(event);
30
30
  };
31
31
  const handleMenuClose = () => setOpen(false);
32
32
  const handleListKeyDown = event => {
@@ -41,19 +41,24 @@ export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function
41
41
  return null;
42
42
  }
43
43
  return /*#__PURE__*/_jsxs(React.Fragment, {
44
- children: [/*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
45
- ref: handleRef,
46
- size: "small",
47
- startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),
48
- "aria-expanded": open,
49
- "aria-label": apiRef.current.getLocaleText('toolbarExportLabel'),
50
- "aria-haspopup": "menu",
51
- "aria-controls": open ? exportMenuId : undefined,
52
- id: exportButtonId
53
- }, other, {
54
- onClick: handleMenuOpen
55
- }, rootProps.slotProps?.baseButton, {
56
- children: apiRef.current.getLocaleText('toolbarExport')
44
+ children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
45
+ title: apiRef.current.getLocaleText('toolbarExportLabel'),
46
+ enterDelay: 1000
47
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
48
+ children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
49
+ ref: handleRef,
50
+ size: "small",
51
+ startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),
52
+ "aria-expanded": open,
53
+ "aria-label": apiRef.current.getLocaleText('toolbarExportLabel'),
54
+ "aria-haspopup": "menu",
55
+ "aria-controls": open ? exportMenuId : undefined,
56
+ id: exportButtonId
57
+ }, buttonProps, {
58
+ onClick: handleMenuOpen
59
+ }, rootProps.slotProps?.baseButton, {
60
+ children: apiRef.current.getLocaleText('toolbarExport')
61
+ }))
57
62
  })), /*#__PURE__*/_jsx(GridMenu, {
58
63
  open: open,
59
64
  target: buttonRef.current,
@@ -76,4 +81,16 @@ export const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function
76
81
  })
77
82
  })]
78
83
  });
79
- });
84
+ });
85
+ process.env.NODE_ENV !== "production" ? GridToolbarExportContainer.propTypes = {
86
+ // ----------------------------- Warning --------------------------------
87
+ // | These PropTypes are generated from the TypeScript type definitions |
88
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
89
+ // ----------------------------------------------------------------------
90
+ /**
91
+ * The props used for each slot inside.
92
+ * @default {}
93
+ */
94
+ slotProps: PropTypes.object
95
+ } : void 0;
96
+ export { GridToolbarExportContainer };
@@ -1,6 +1,4 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["componentsProps"];
4
2
  import * as React from 'react';
5
3
  import PropTypes from 'prop-types';
6
4
  import { styled } from '@mui/material/styles';
@@ -37,10 +35,10 @@ const GridToolbarFilterListRoot = styled('ul', {
37
35
  }));
38
36
  const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbarFilterButton(props, ref) {
39
37
  const {
40
- componentsProps = {}
41
- } = props,
42
- other = _objectWithoutPropertiesLoose(props, _excluded);
43
- const buttonProps = componentsProps.button || {};
38
+ slotProps = {}
39
+ } = props;
40
+ const buttonProps = slotProps.button || {};
41
+ const tooltipProps = slotProps.tooltip || {};
44
42
  const apiRef = useGridApiContext();
45
43
  const rootProps = useGridRootProps();
46
44
  const activeFilters = useGridSelector(apiRef, gridFilterActiveItemsSelector);
@@ -98,7 +96,7 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
98
96
  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
99
97
  title: tooltipContentNode,
100
98
  enterDelay: 1000
101
- }, other, rootProps.slotProps?.baseTooltip, {
99
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
102
100
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
103
101
  ref: ref,
104
102
  id: filterButtonId,
@@ -128,8 +126,6 @@ process.env.NODE_ENV !== "production" ? GridToolbarFilterButton.propTypes = {
128
126
  * The props used for each slot inside.
129
127
  * @default {}
130
128
  */
131
- componentsProps: PropTypes.shape({
132
- button: PropTypes.object
133
- })
129
+ slotProps: PropTypes.object
134
130
  } : void 0;
135
131
  export { GridToolbarFilterButton };
@@ -0,0 +1,25 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import clsx from 'clsx';
4
+ import { styled } from '@mui/system';
5
+ import { unstable_composeClasses as composeClasses } from '@mui/utils';
6
+ import { gridClasses, getDataGridUtilityClass } from '../../constants/gridClasses';
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ const useUtilityClasses = () => {
9
+ const slots = {
10
+ root: ['bottomContainer']
11
+ };
12
+ return composeClasses(slots, getDataGridUtilityClass, {});
13
+ };
14
+ const Element = styled('div')({
15
+ position: 'sticky',
16
+ zIndex: 2,
17
+ bottom: 'calc(var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize))'
18
+ });
19
+ export function GridBottomContainer(props) {
20
+ const classes = useUtilityClasses();
21
+ return /*#__PURE__*/_jsx(Element, _extends({}, props, {
22
+ className: clsx(classes.root, props.className, gridClasses['container--bottom']),
23
+ role: "presentation"
24
+ }));
25
+ }