@mui/x-data-grid 8.0.0-beta.1 → 8.0.0-beta.3

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 (393) hide show
  1. package/CHANGELOG.md +235 -0
  2. package/DataGrid/DataGrid.js +10 -2
  3. package/DataGrid/useDataGridProps.js +1 -1
  4. package/components/GridRow.js +3 -8
  5. package/components/GridScrollArea.js +4 -4
  6. package/components/GridShadowScrollArea.js +43 -35
  7. package/components/GridSkeletonLoadingOverlay.js +1 -1
  8. package/components/cell/GridActionsCellItem.d.ts +24 -13
  9. package/components/cell/GridActionsCellItem.js +5 -2
  10. package/components/cell/GridBooleanCell.d.ts +1 -2
  11. package/components/cell/GridEditSingleSelectCell.d.ts +4 -4
  12. package/components/cell/GridEditSingleSelectCell.js +1 -1
  13. package/components/columnSelection/GridCellCheckboxRenderer.d.ts +2 -2
  14. package/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  15. package/components/columnsManagement/GridColumnsManagement.js +1 -24
  16. package/components/columnsPanel/ColumnsPanelTrigger.js +4 -129
  17. package/components/containers/GridToolbarContainer.js +5 -3
  18. package/components/export/ExportCsv.js +4 -129
  19. package/components/export/ExportPrint.js +4 -129
  20. package/components/filterPanel/FilterPanelTrigger.js +4 -129
  21. package/components/panel/GridPanel.d.ts +2 -2
  22. package/components/panel/GridPanel.js +1 -1
  23. package/components/panel/filterPanel/filterPanelUtils.d.ts +1 -1
  24. package/components/quickFilter/QuickFilter.d.ts +26 -3
  25. package/components/quickFilter/QuickFilter.js +103 -19
  26. package/components/quickFilter/QuickFilterClear.js +13 -104
  27. package/components/quickFilter/QuickFilterContext.d.ts +4 -1
  28. package/components/quickFilter/QuickFilterControl.js +36 -12
  29. package/components/quickFilter/QuickFilterTrigger.d.ts +28 -0
  30. package/components/quickFilter/QuickFilterTrigger.js +86 -0
  31. package/components/quickFilter/index.d.ts +2 -1
  32. package/components/quickFilter/index.js +11 -0
  33. package/components/toolbar/GridToolbar.js +4 -1
  34. package/components/toolbar/GridToolbarColumnsButton.d.ts +3 -4
  35. package/components/toolbar/GridToolbarDensitySelector.d.ts +3 -4
  36. package/components/toolbar/GridToolbarDensitySelector.js +1 -1
  37. package/components/toolbar/GridToolbarExport.d.ts +3 -4
  38. package/components/toolbar/GridToolbarExportContainer.d.ts +3 -4
  39. package/components/toolbar/GridToolbarExportContainer.js +1 -1
  40. package/components/toolbar/GridToolbarFilterButton.d.ts +4 -6
  41. package/components/toolbar/GridToolbarFilterButton.js +1 -4
  42. package/components/toolbar/GridToolbarQuickFilter.js +100 -41
  43. package/components/toolbarV8/GridToolbar.d.ts +6 -1
  44. package/components/toolbarV8/GridToolbar.js +85 -27
  45. package/components/toolbarV8/Toolbar.d.ts +1 -1
  46. package/components/toolbarV8/Toolbar.js +78 -23
  47. package/components/toolbarV8/ToolbarButton.js +37 -114
  48. package/components/toolbarV8/ToolbarContext.d.ts +4 -2
  49. package/components/virtualization/GridVirtualScrollbar.js +1 -1
  50. package/components/virtualization/GridVirtualScroller.js +2 -2
  51. package/constants/cssVariables.d.ts +3 -0
  52. package/constants/cssVariables.js +2 -1
  53. package/constants/gridClasses.d.ts +20 -0
  54. package/constants/gridClasses.js +1 -1
  55. package/esm/DataGrid/DataGrid.js +10 -2
  56. package/esm/DataGrid/useDataGridProps.js +1 -1
  57. package/esm/components/GridRow.js +4 -9
  58. package/esm/components/GridScrollArea.js +4 -4
  59. package/esm/components/GridShadowScrollArea.js +43 -35
  60. package/esm/components/GridSkeletonLoadingOverlay.js +2 -2
  61. package/esm/components/cell/GridActionsCellItem.d.ts +24 -13
  62. package/esm/components/cell/GridActionsCellItem.js +4 -3
  63. package/esm/components/cell/GridBooleanCell.d.ts +1 -2
  64. package/esm/components/cell/GridEditSingleSelectCell.d.ts +4 -4
  65. package/esm/components/cell/GridEditSingleSelectCell.js +1 -1
  66. package/esm/components/columnSelection/GridCellCheckboxRenderer.d.ts +2 -2
  67. package/esm/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  68. package/esm/components/columnsManagement/GridColumnsManagement.js +1 -24
  69. package/esm/components/columnsPanel/ColumnsPanelTrigger.js +4 -129
  70. package/esm/components/containers/GridToolbarContainer.js +5 -3
  71. package/esm/components/export/ExportCsv.js +4 -129
  72. package/esm/components/export/ExportPrint.js +4 -129
  73. package/esm/components/filterPanel/FilterPanelTrigger.js +4 -129
  74. package/esm/components/panel/GridPanel.d.ts +2 -2
  75. package/esm/components/panel/GridPanel.js +1 -1
  76. package/esm/components/panel/filterPanel/filterPanelUtils.d.ts +1 -1
  77. package/esm/components/quickFilter/QuickFilter.d.ts +26 -3
  78. package/esm/components/quickFilter/QuickFilter.js +101 -17
  79. package/esm/components/quickFilter/QuickFilterClear.js +13 -104
  80. package/esm/components/quickFilter/QuickFilterContext.d.ts +4 -1
  81. package/esm/components/quickFilter/QuickFilterControl.js +36 -12
  82. package/esm/components/quickFilter/QuickFilterTrigger.d.ts +28 -0
  83. package/esm/components/quickFilter/QuickFilterTrigger.js +79 -0
  84. package/esm/components/quickFilter/index.d.ts +2 -1
  85. package/esm/components/quickFilter/index.js +2 -1
  86. package/esm/components/toolbar/GridToolbar.js +4 -1
  87. package/esm/components/toolbar/GridToolbarColumnsButton.d.ts +3 -4
  88. package/esm/components/toolbar/GridToolbarDensitySelector.d.ts +3 -4
  89. package/esm/components/toolbar/GridToolbarDensitySelector.js +1 -1
  90. package/esm/components/toolbar/GridToolbarExport.d.ts +3 -4
  91. package/esm/components/toolbar/GridToolbarExportContainer.d.ts +3 -4
  92. package/esm/components/toolbar/GridToolbarExportContainer.js +1 -1
  93. package/esm/components/toolbar/GridToolbarFilterButton.d.ts +4 -6
  94. package/esm/components/toolbar/GridToolbarFilterButton.js +1 -4
  95. package/esm/components/toolbar/GridToolbarQuickFilter.js +101 -44
  96. package/esm/components/toolbarV8/GridToolbar.d.ts +6 -1
  97. package/esm/components/toolbarV8/GridToolbar.js +83 -27
  98. package/esm/components/toolbarV8/Toolbar.d.ts +1 -1
  99. package/esm/components/toolbarV8/Toolbar.js +77 -22
  100. package/esm/components/toolbarV8/ToolbarButton.js +37 -114
  101. package/esm/components/toolbarV8/ToolbarContext.d.ts +4 -2
  102. package/esm/components/virtualization/GridVirtualScrollbar.js +1 -1
  103. package/esm/components/virtualization/GridVirtualScroller.js +2 -2
  104. package/esm/constants/cssVariables.d.ts +3 -0
  105. package/esm/constants/cssVariables.js +2 -1
  106. package/esm/constants/gridClasses.d.ts +20 -0
  107. package/esm/constants/gridClasses.js +1 -1
  108. package/esm/hooks/core/gridCoreSelector.d.ts +1 -1
  109. package/esm/hooks/core/gridPropsSelectors.d.ts +1 -1
  110. package/esm/hooks/features/clipboard/useGridClipboard.js +2 -2
  111. package/esm/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +5 -5
  112. package/esm/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  113. package/esm/hooks/features/columnGrouping/useGridColumnGrouping.js +4 -4
  114. package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -5
  115. package/esm/hooks/features/columnMenu/columnMenuSelector.d.ts +1 -1
  116. package/esm/hooks/features/columnMenu/useGridColumnMenu.js +4 -4
  117. package/esm/hooks/features/columnResize/columnResizeSelector.d.ts +2 -2
  118. package/esm/hooks/features/columnResize/useGridColumnResize.js +7 -7
  119. package/esm/hooks/features/columns/gridColumnsSelector.d.ts +14 -14
  120. package/esm/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
  121. package/esm/hooks/features/columns/gridColumnsUtils.js +1 -1
  122. package/esm/hooks/features/columns/useGridColumnSpanning.js +2 -2
  123. package/esm/hooks/features/columns/useGridColumns.js +2 -3
  124. package/esm/hooks/features/dataSource/gridDataSourceSelector.d.ts +4 -4
  125. package/esm/hooks/features/dataSource/useGridDataSource.js +1 -1
  126. package/esm/hooks/features/density/densitySelector.d.ts +2 -2
  127. package/esm/hooks/features/dimensions/gridDimensionsSelectors.d.ts +13 -13
  128. package/esm/hooks/features/dimensions/useGridDimensions.js +5 -5
  129. package/esm/hooks/features/editing/gridEditingSelectors.d.ts +4 -4
  130. package/esm/hooks/features/editing/useGridCellEditing.js +8 -8
  131. package/esm/hooks/features/editing/useGridRowEditing.js +9 -9
  132. package/esm/hooks/features/events/useGridEvents.js +18 -18
  133. package/esm/hooks/features/filter/gridFilterSelector.d.ts +18 -18
  134. package/esm/hooks/features/filter/useGridFilter.js +7 -7
  135. package/esm/hooks/features/focus/gridFocusStateSelector.d.ts +10 -10
  136. package/esm/hooks/features/focus/useGridFocus.js +10 -10
  137. package/esm/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +4 -4
  138. package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  139. package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -6
  140. package/esm/hooks/features/listView/gridListViewSelectors.d.ts +1 -1
  141. package/esm/hooks/features/listView/useGridListView.d.ts +4 -4
  142. package/esm/hooks/features/listView/useGridListView.js +9 -9
  143. package/esm/hooks/features/pagination/gridPaginationSelector.d.ts +14 -14
  144. package/esm/hooks/features/pagination/useGridPaginationModel.js +7 -7
  145. package/esm/hooks/features/pagination/useGridRowCount.js +2 -2
  146. package/esm/hooks/features/preferencesPanel/gridPreferencePanelSelector.d.ts +2 -2
  147. package/esm/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +4 -4
  148. package/esm/hooks/features/rowSelection/useGridRowSelection.js +8 -8
  149. package/esm/hooks/features/rowSelection/utils.d.ts +1 -1
  150. package/esm/hooks/features/rows/gridRowSpanningSelectors.d.ts +3 -3
  151. package/esm/hooks/features/rows/gridRowsMetaSelector.d.ts +1 -1
  152. package/esm/hooks/features/rows/gridRowsSelector.d.ts +21 -20
  153. package/esm/hooks/features/rows/gridRowsSelector.js +7 -0
  154. package/esm/hooks/features/rows/useGridParamsApi.js +2 -2
  155. package/esm/hooks/features/rows/useGridRowSpanning.js +6 -6
  156. package/esm/hooks/features/rows/useGridRows.js +5 -5
  157. package/esm/hooks/features/scroll/useGridScroll.d.ts +1 -1
  158. package/esm/hooks/features/scroll/useGridScroll.js +2 -2
  159. package/esm/hooks/features/sorting/gridSortingSelector.d.ts +5 -5
  160. package/esm/hooks/features/sorting/useGridSorting.js +6 -6
  161. package/esm/hooks/features/virtualization/gridFocusedVirtualCellSelector.d.ts +2 -2
  162. package/esm/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +6 -6
  163. package/esm/hooks/features/virtualization/useGridVirtualScroller.js +19 -8
  164. package/esm/hooks/utils/index.d.ts +1 -1
  165. package/esm/hooks/utils/index.js +1 -1
  166. package/esm/hooks/utils/useGridAriaAttributes.js +6 -0
  167. package/esm/hooks/utils/{useGridApiEventHandler.d.ts → useGridEvent.d.ts} +2 -2
  168. package/{modern/hooks/utils/useGridApiEventHandler.js → esm/hooks/utils/useGridEvent.js} +3 -3
  169. package/esm/hooks/utils/useGridNativeEventListener.js +2 -2
  170. package/esm/hooks/utils/useGridVisibleRows.d.ts +4 -4
  171. package/esm/index.js +1 -1
  172. package/esm/locales/deDE.js +13 -13
  173. package/esm/material/augmentation.d.ts +74 -0
  174. package/esm/material/augmentation.js +1 -0
  175. package/esm/material/index.d.ts +1 -0
  176. package/esm/material/index.js +262 -141
  177. package/esm/material/variables.js +2 -0
  178. package/esm/models/colDef/gridColDef.d.ts +1 -1
  179. package/esm/models/colDef/index.d.ts +1 -1
  180. package/esm/models/gridBaseSlots.d.ts +25 -36
  181. package/esm/models/gridSlotsComponentsProps.d.ts +1 -19
  182. package/esm/models/props/DataGridProps.d.ts +20 -10
  183. package/esm/utils/utils.d.ts +0 -27
  184. package/esm/utils/utils.js +0 -122
  185. package/hooks/core/gridCoreSelector.d.ts +1 -1
  186. package/hooks/core/gridPropsSelectors.d.ts +1 -1
  187. package/hooks/features/clipboard/useGridClipboard.js +1 -1
  188. package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +5 -5
  189. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +2 -2
  190. package/hooks/features/columnGrouping/useGridColumnGrouping.js +4 -4
  191. package/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -5
  192. package/hooks/features/columnMenu/columnMenuSelector.d.ts +1 -1
  193. package/hooks/features/columnMenu/useGridColumnMenu.js +3 -3
  194. package/hooks/features/columnResize/columnResizeSelector.d.ts +2 -2
  195. package/hooks/features/columnResize/useGridColumnResize.js +6 -6
  196. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -14
  197. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
  198. package/hooks/features/columns/gridColumnsUtils.js +1 -1
  199. package/hooks/features/columns/useGridColumnSpanning.js +2 -2
  200. package/hooks/features/columns/useGridColumns.js +2 -3
  201. package/hooks/features/dataSource/gridDataSourceSelector.d.ts +4 -4
  202. package/hooks/features/dataSource/useGridDataSource.js +2 -2
  203. package/hooks/features/density/densitySelector.d.ts +2 -2
  204. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +13 -13
  205. package/hooks/features/dimensions/useGridDimensions.js +6 -6
  206. package/hooks/features/editing/gridEditingSelectors.d.ts +4 -4
  207. package/hooks/features/editing/useGridCellEditing.js +8 -8
  208. package/hooks/features/editing/useGridRowEditing.js +9 -9
  209. package/hooks/features/events/useGridEvents.js +18 -18
  210. package/hooks/features/filter/gridFilterSelector.d.ts +18 -18
  211. package/hooks/features/filter/useGridFilter.js +9 -9
  212. package/hooks/features/focus/gridFocusStateSelector.d.ts +10 -10
  213. package/hooks/features/focus/useGridFocus.js +10 -10
  214. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +4 -4
  215. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  216. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -6
  217. package/hooks/features/listView/gridListViewSelectors.d.ts +1 -1
  218. package/hooks/features/listView/useGridListView.d.ts +4 -4
  219. package/hooks/features/listView/useGridListView.js +9 -9
  220. package/hooks/features/pagination/gridPaginationSelector.d.ts +14 -14
  221. package/hooks/features/pagination/useGridPaginationModel.js +7 -7
  222. package/hooks/features/pagination/useGridRowCount.js +1 -1
  223. package/hooks/features/preferencesPanel/gridPreferencePanelSelector.d.ts +2 -2
  224. package/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +4 -4
  225. package/hooks/features/rowSelection/useGridRowSelection.js +8 -8
  226. package/hooks/features/rowSelection/utils.d.ts +1 -1
  227. package/hooks/features/rows/gridRowSpanningSelectors.d.ts +3 -3
  228. package/hooks/features/rows/gridRowsMetaSelector.d.ts +1 -1
  229. package/hooks/features/rows/gridRowsSelector.d.ts +21 -20
  230. package/hooks/features/rows/gridRowsSelector.js +8 -1
  231. package/hooks/features/rows/useGridParamsApi.js +2 -2
  232. package/hooks/features/rows/useGridRowSpanning.js +6 -6
  233. package/hooks/features/rows/useGridRows.js +4 -4
  234. package/hooks/features/scroll/useGridScroll.d.ts +1 -1
  235. package/hooks/features/scroll/useGridScroll.js +2 -2
  236. package/hooks/features/sorting/gridSortingSelector.d.ts +5 -5
  237. package/hooks/features/sorting/useGridSorting.js +6 -6
  238. package/hooks/features/virtualization/gridFocusedVirtualCellSelector.d.ts +2 -2
  239. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +6 -6
  240. package/hooks/features/virtualization/useGridVirtualScroller.js +17 -6
  241. package/hooks/utils/index.d.ts +1 -1
  242. package/hooks/utils/index.js +8 -8
  243. package/hooks/utils/useGridAriaAttributes.js +6 -0
  244. package/{modern/hooks/utils/useGridApiEventHandler.d.ts → hooks/utils/useGridEvent.d.ts} +2 -2
  245. package/hooks/utils/{useGridApiEventHandler.js → useGridEvent.js} +5 -5
  246. package/hooks/utils/useGridNativeEventListener.js +2 -2
  247. package/hooks/utils/useGridVisibleRows.d.ts +4 -4
  248. package/index.js +1 -1
  249. package/locales/deDE.js +13 -13
  250. package/material/augmentation.d.ts +74 -0
  251. package/material/augmentation.js +5 -0
  252. package/material/index.d.ts +1 -0
  253. package/material/index.js +261 -141
  254. package/material/variables.js +2 -0
  255. package/models/colDef/gridColDef.d.ts +1 -1
  256. package/models/colDef/index.d.ts +1 -1
  257. package/models/gridBaseSlots.d.ts +25 -36
  258. package/models/gridSlotsComponentsProps.d.ts +1 -19
  259. package/models/props/DataGridProps.d.ts +20 -10
  260. package/modern/DataGrid/DataGrid.js +10 -2
  261. package/modern/DataGrid/useDataGridProps.js +1 -1
  262. package/modern/components/GridRow.js +4 -9
  263. package/modern/components/GridScrollArea.js +4 -4
  264. package/modern/components/GridShadowScrollArea.js +43 -35
  265. package/modern/components/GridSkeletonLoadingOverlay.js +2 -2
  266. package/modern/components/cell/GridActionsCellItem.d.ts +24 -13
  267. package/modern/components/cell/GridActionsCellItem.js +4 -3
  268. package/modern/components/cell/GridBooleanCell.d.ts +1 -2
  269. package/modern/components/cell/GridEditSingleSelectCell.d.ts +4 -4
  270. package/modern/components/cell/GridEditSingleSelectCell.js +1 -1
  271. package/modern/components/columnSelection/GridCellCheckboxRenderer.d.ts +2 -2
  272. package/modern/components/columnSelection/GridHeaderCheckbox.d.ts +1 -1
  273. package/modern/components/columnsManagement/GridColumnsManagement.js +1 -24
  274. package/modern/components/columnsPanel/ColumnsPanelTrigger.js +4 -129
  275. package/modern/components/containers/GridToolbarContainer.js +5 -3
  276. package/modern/components/export/ExportCsv.js +4 -129
  277. package/modern/components/export/ExportPrint.js +4 -129
  278. package/modern/components/filterPanel/FilterPanelTrigger.js +4 -129
  279. package/modern/components/panel/GridPanel.d.ts +2 -2
  280. package/modern/components/panel/GridPanel.js +1 -1
  281. package/modern/components/panel/filterPanel/filterPanelUtils.d.ts +1 -1
  282. package/modern/components/quickFilter/QuickFilter.d.ts +26 -3
  283. package/modern/components/quickFilter/QuickFilter.js +101 -17
  284. package/modern/components/quickFilter/QuickFilterClear.js +13 -104
  285. package/modern/components/quickFilter/QuickFilterContext.d.ts +4 -1
  286. package/modern/components/quickFilter/QuickFilterControl.js +36 -12
  287. package/modern/components/quickFilter/QuickFilterTrigger.d.ts +28 -0
  288. package/modern/components/quickFilter/QuickFilterTrigger.js +79 -0
  289. package/modern/components/quickFilter/index.d.ts +2 -1
  290. package/modern/components/quickFilter/index.js +2 -1
  291. package/modern/components/toolbar/GridToolbar.js +4 -1
  292. package/modern/components/toolbar/GridToolbarColumnsButton.d.ts +3 -4
  293. package/modern/components/toolbar/GridToolbarDensitySelector.d.ts +3 -4
  294. package/modern/components/toolbar/GridToolbarDensitySelector.js +1 -1
  295. package/modern/components/toolbar/GridToolbarExport.d.ts +3 -4
  296. package/modern/components/toolbar/GridToolbarExportContainer.d.ts +3 -4
  297. package/modern/components/toolbar/GridToolbarExportContainer.js +1 -1
  298. package/modern/components/toolbar/GridToolbarFilterButton.d.ts +4 -6
  299. package/modern/components/toolbar/GridToolbarFilterButton.js +1 -4
  300. package/modern/components/toolbar/GridToolbarQuickFilter.js +101 -44
  301. package/modern/components/toolbarV8/GridToolbar.d.ts +6 -1
  302. package/modern/components/toolbarV8/GridToolbar.js +83 -27
  303. package/modern/components/toolbarV8/Toolbar.d.ts +1 -1
  304. package/modern/components/toolbarV8/Toolbar.js +77 -22
  305. package/modern/components/toolbarV8/ToolbarButton.js +37 -114
  306. package/modern/components/toolbarV8/ToolbarContext.d.ts +4 -2
  307. package/modern/components/virtualization/GridVirtualScrollbar.js +1 -1
  308. package/modern/components/virtualization/GridVirtualScroller.js +2 -2
  309. package/modern/constants/cssVariables.d.ts +3 -0
  310. package/modern/constants/cssVariables.js +2 -1
  311. package/modern/constants/gridClasses.d.ts +20 -0
  312. package/modern/constants/gridClasses.js +1 -1
  313. package/modern/hooks/core/gridCoreSelector.d.ts +1 -1
  314. package/modern/hooks/core/gridPropsSelectors.d.ts +1 -1
  315. package/modern/hooks/features/clipboard/useGridClipboard.js +2 -2
  316. package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +5 -5
  317. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  318. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +4 -4
  319. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -5
  320. package/modern/hooks/features/columnMenu/columnMenuSelector.d.ts +1 -1
  321. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +4 -4
  322. package/modern/hooks/features/columnResize/columnResizeSelector.d.ts +2 -2
  323. package/modern/hooks/features/columnResize/useGridColumnResize.js +7 -7
  324. package/modern/hooks/features/columns/gridColumnsSelector.d.ts +14 -14
  325. package/modern/hooks/features/columns/gridColumnsUtils.d.ts +1 -1
  326. package/modern/hooks/features/columns/gridColumnsUtils.js +1 -1
  327. package/modern/hooks/features/columns/useGridColumnSpanning.js +2 -2
  328. package/modern/hooks/features/columns/useGridColumns.js +2 -3
  329. package/modern/hooks/features/dataSource/gridDataSourceSelector.d.ts +4 -4
  330. package/modern/hooks/features/dataSource/useGridDataSource.js +1 -1
  331. package/modern/hooks/features/density/densitySelector.d.ts +2 -2
  332. package/modern/hooks/features/dimensions/gridDimensionsSelectors.d.ts +13 -13
  333. package/modern/hooks/features/dimensions/useGridDimensions.js +5 -5
  334. package/modern/hooks/features/editing/gridEditingSelectors.d.ts +4 -4
  335. package/modern/hooks/features/editing/useGridCellEditing.js +8 -8
  336. package/modern/hooks/features/editing/useGridRowEditing.js +9 -9
  337. package/modern/hooks/features/events/useGridEvents.js +18 -18
  338. package/modern/hooks/features/filter/gridFilterSelector.d.ts +18 -18
  339. package/modern/hooks/features/filter/useGridFilter.js +7 -7
  340. package/modern/hooks/features/focus/gridFocusStateSelector.d.ts +10 -10
  341. package/modern/hooks/features/focus/useGridFocus.js +10 -10
  342. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +4 -4
  343. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  344. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -6
  345. package/modern/hooks/features/listView/gridListViewSelectors.d.ts +1 -1
  346. package/modern/hooks/features/listView/useGridListView.d.ts +4 -4
  347. package/modern/hooks/features/listView/useGridListView.js +9 -9
  348. package/modern/hooks/features/pagination/gridPaginationSelector.d.ts +14 -14
  349. package/modern/hooks/features/pagination/useGridPaginationModel.js +7 -7
  350. package/modern/hooks/features/pagination/useGridRowCount.js +2 -2
  351. package/modern/hooks/features/preferencesPanel/gridPreferencePanelSelector.d.ts +2 -2
  352. package/modern/hooks/features/rowSelection/gridRowSelectionSelector.d.ts +4 -4
  353. package/modern/hooks/features/rowSelection/useGridRowSelection.js +8 -8
  354. package/modern/hooks/features/rowSelection/utils.d.ts +1 -1
  355. package/modern/hooks/features/rows/gridRowSpanningSelectors.d.ts +3 -3
  356. package/modern/hooks/features/rows/gridRowsMetaSelector.d.ts +1 -1
  357. package/modern/hooks/features/rows/gridRowsSelector.d.ts +21 -20
  358. package/modern/hooks/features/rows/gridRowsSelector.js +7 -0
  359. package/modern/hooks/features/rows/useGridParamsApi.js +2 -2
  360. package/modern/hooks/features/rows/useGridRowSpanning.js +6 -6
  361. package/modern/hooks/features/rows/useGridRows.js +5 -5
  362. package/modern/hooks/features/scroll/useGridScroll.d.ts +1 -1
  363. package/modern/hooks/features/scroll/useGridScroll.js +2 -2
  364. package/modern/hooks/features/sorting/gridSortingSelector.d.ts +5 -5
  365. package/modern/hooks/features/sorting/useGridSorting.js +6 -6
  366. package/modern/hooks/features/virtualization/gridFocusedVirtualCellSelector.d.ts +2 -2
  367. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +6 -6
  368. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +19 -8
  369. package/modern/hooks/utils/index.d.ts +1 -1
  370. package/modern/hooks/utils/index.js +1 -1
  371. package/modern/hooks/utils/useGridAriaAttributes.js +6 -0
  372. package/{hooks/utils/useGridApiEventHandler.d.ts → modern/hooks/utils/useGridEvent.d.ts} +2 -2
  373. package/{esm/hooks/utils/useGridApiEventHandler.js → modern/hooks/utils/useGridEvent.js} +3 -3
  374. package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
  375. package/modern/hooks/utils/useGridVisibleRows.d.ts +4 -4
  376. package/modern/index.js +1 -1
  377. package/modern/locales/deDE.js +13 -13
  378. package/modern/material/augmentation.d.ts +74 -0
  379. package/modern/material/augmentation.js +1 -0
  380. package/modern/material/index.d.ts +1 -0
  381. package/modern/material/index.js +262 -141
  382. package/modern/material/variables.js +2 -0
  383. package/modern/models/colDef/gridColDef.d.ts +1 -1
  384. package/modern/models/colDef/index.d.ts +1 -1
  385. package/modern/models/gridBaseSlots.d.ts +25 -36
  386. package/modern/models/gridSlotsComponentsProps.d.ts +1 -19
  387. package/modern/models/props/DataGridProps.d.ts +20 -10
  388. package/modern/utils/utils.d.ts +0 -27
  389. package/modern/utils/utils.js +0 -122
  390. package/package.json +6 -6
  391. package/tsconfig.build.tsbuildinfo +1 -1
  392. package/utils/utils.d.ts +0 -27
  393. package/utils/utils.js +0 -123
@@ -7,38 +7,70 @@ import PropTypes from 'prop-types';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import { styled } from '@mui/system';
9
9
  import clsx from 'clsx';
10
- // import { NotRendered } from '../../utils/assert';
11
-
12
10
  import { getDataGridUtilityClass } from "../../constants/index.js";
13
11
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
14
12
  import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
15
- import { QuickFilter, QuickFilterClear, QuickFilterControl } from "../quickFilter/index.js";
16
- import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { QuickFilter, QuickFilterClear, QuickFilterControl, QuickFilterTrigger } from "../quickFilter/index.js";
14
+ import { ToolbarButton } from "../toolbarV8/index.js";
15
+ import { vars } from "../../constants/cssVariables.js";
16
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
17
  const useUtilityClasses = ownerState => {
18
18
  const {
19
19
  classes
20
20
  } = ownerState;
21
21
  const slots = {
22
- root: ['toolbarQuickFilter']
22
+ root: ['toolbarQuickFilter'],
23
+ trigger: ['toolbarQuickFilterTrigger'],
24
+ control: ['toolbarQuickFilterControl']
23
25
  };
24
26
  return composeClasses(slots, getDataGridUtilityClass, classes);
25
27
  };
28
+ const GridQuickFilterRoot = styled('div', {
29
+ name: 'MuiDataGrid',
30
+ slot: 'ToolbarQuickFilter'
31
+ })({
32
+ display: 'grid',
33
+ alignItems: 'center'
34
+ });
35
+ const GridQuickFilterTrigger = styled(ToolbarButton, {
36
+ name: 'MuiDataGrid',
37
+ slot: 'ToolbarQuickFilterTrigger'
38
+ })(({
39
+ ownerState
40
+ }) => ({
41
+ gridArea: '1 / 1',
42
+ width: 'min-content',
43
+ height: 'min-content',
44
+ zIndex: 1,
45
+ opacity: ownerState.expanded ? 0 : 1,
46
+ pointerEvents: ownerState.expanded ? 'none' : 'auto',
47
+ transition: vars.transition(['opacity'])
48
+ }));
26
49
 
27
50
  // TODO: Use NotRendered from /utils/assert
28
51
  // Currently causes react-docgen to fail
29
- const GridToolbarQuickFilterRoot = styled(_props => {
52
+ const GridQuickFilterTextField = styled(_props => {
30
53
  throw new Error('Failed assertion: should not be rendered');
31
54
  }, {
32
55
  name: 'MuiDataGrid',
33
- slot: 'ToolbarQuickFilter'
34
- })({
35
- width: 260,
36
- marginLeft: 'auto'
37
- });
56
+ slot: 'ToolbarQuickFilterControl'
57
+ })(({
58
+ ownerState
59
+ }) => ({
60
+ gridArea: '1 / 1',
61
+ overflowX: 'clip',
62
+ width: ownerState.expanded ? 260 : 'var(--trigger-width)',
63
+ opacity: ownerState.expanded ? 1 : 0,
64
+ transition: vars.transition(['width', 'opacity'])
65
+ }));
38
66
  function GridToolbarQuickFilter(props) {
39
67
  const apiRef = useGridApiContext();
40
68
  const rootProps = useGridRootProps();
41
- const classes = useUtilityClasses(rootProps);
69
+ const ownerState = {
70
+ classes: rootProps.classes,
71
+ expanded: false
72
+ };
73
+ const classes = useUtilityClasses(ownerState);
42
74
  const {
43
75
  quickFilterParser,
44
76
  quickFilterFormatter,
@@ -51,40 +83,65 @@ function GridToolbarQuickFilter(props) {
51
83
  parser: quickFilterParser,
52
84
  formatter: quickFilterFormatter,
53
85
  debounceMs: debounceMs,
54
- children: /*#__PURE__*/_jsx(QuickFilterControl, {
55
- render: _ref => {
56
- let {
57
- ref,
58
- slotProps: controlSlotProps
59
- } = _ref,
60
- controlProps = _objectWithoutPropertiesLoose(_ref, _excluded2);
61
- return /*#__PURE__*/_jsx(GridToolbarQuickFilterRoot, _extends({
62
- as: rootProps.slots.baseTextField,
63
- className: clsx(classes.root, className),
64
- inputRef: ref,
65
- "aria-label": apiRef.current.getLocaleText('toolbarQuickFilterLabel'),
66
- placeholder: apiRef.current.getLocaleText('toolbarQuickFilterPlaceholder'),
67
- size: "small",
68
- slotProps: _extends({
69
- input: _extends({
70
- startAdornment: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {
86
+ render: (quickFilterProps, state) => {
87
+ const currentOwnerState = _extends({}, ownerState, {
88
+ expanded: state.expanded
89
+ });
90
+ return /*#__PURE__*/_jsxs(GridQuickFilterRoot, _extends({}, quickFilterProps, {
91
+ className: clsx(classes.root, className),
92
+ children: [/*#__PURE__*/_jsx(QuickFilterTrigger, {
93
+ render: triggerProps => /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, {
94
+ title: apiRef.current.getLocaleText('toolbarQuickFilterLabel'),
95
+ enterDelay: 0 // Prevents tooltip lagging behind transitioning trigger element
96
+ ,
97
+ children: /*#__PURE__*/_jsx(GridQuickFilterTrigger, _extends({
98
+ className: classes.trigger
99
+ }, triggerProps, {
100
+ ownerState: currentOwnerState,
101
+ color: "default",
102
+ "aria-disabled": state.expanded,
103
+ children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {
71
104
  fontSize: "small"
72
- }),
73
- endAdornment: controlProps.value ? /*#__PURE__*/_jsx(QuickFilterClear, {
74
- render: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, {
75
- size: "small",
76
- edge: "end",
77
- "aria-label": apiRef.current.getLocaleText('toolbarQuickFilterDeleteIconLabel'),
78
- children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {
105
+ })
106
+ }))
107
+ })
108
+ }), /*#__PURE__*/_jsx(QuickFilterControl, {
109
+ render: _ref => {
110
+ let {
111
+ ref,
112
+ slotProps: controlSlotProps
113
+ } = _ref,
114
+ controlProps = _objectWithoutPropertiesLoose(_ref, _excluded2);
115
+ return /*#__PURE__*/_jsx(GridQuickFilterTextField, _extends({
116
+ as: rootProps.slots.baseTextField,
117
+ className: classes.control,
118
+ ownerState: currentOwnerState,
119
+ inputRef: ref,
120
+ "aria-label": apiRef.current.getLocaleText('toolbarQuickFilterLabel'),
121
+ placeholder: apiRef.current.getLocaleText('toolbarQuickFilterPlaceholder'),
122
+ size: "small",
123
+ slotProps: _extends({
124
+ input: _extends({
125
+ startAdornment: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {
79
126
  fontSize: "small"
80
- })
81
- })
82
- }) : null
83
- }, controlSlotProps?.input)
84
- }, controlSlotProps)
85
- }, rootProps.slotProps?.baseTextField, controlProps, slotProps?.root, other));
86
- }
87
- })
127
+ }),
128
+ endAdornment: controlProps.value ? /*#__PURE__*/_jsx(QuickFilterClear, {
129
+ render: /*#__PURE__*/_jsx(rootProps.slots.baseIconButton, {
130
+ size: "small",
131
+ edge: "end",
132
+ "aria-label": apiRef.current.getLocaleText('toolbarQuickFilterDeleteIconLabel'),
133
+ children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterClearIcon, {
134
+ fontSize: "small"
135
+ })
136
+ })
137
+ }) : null
138
+ }, controlSlotProps?.input)
139
+ }, controlSlotProps)
140
+ }, rootProps.slotProps?.baseTextField, controlProps, slotProps?.root, other));
141
+ }
142
+ })]
143
+ }));
144
+ }
88
145
  });
89
146
  }
90
147
  process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
@@ -4,8 +4,13 @@ interface GridToolbarInternalProps {
4
4
  additionalExportMenuItems?: (onMenuItemClick: () => void) => React.ReactNode;
5
5
  }
6
6
  export type GridToolbarProps = GridSlotProps['toolbar'] & GridToolbarInternalProps;
7
+ declare function GridToolbarDivider(props: GridSlotProps['baseDivider']): React.JSX.Element;
8
+ declare namespace GridToolbarDivider {
9
+ var propTypes: any;
10
+ }
11
+ declare function GridToolbarLabel(props: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element;
7
12
  declare function GridToolbar(props: GridToolbarProps): React.JSX.Element;
8
13
  declare namespace GridToolbar {
9
14
  var propTypes: any;
10
15
  }
11
- export { GridToolbar };
16
+ export { GridToolbar, GridToolbarDivider, GridToolbarLabel };
@@ -1,9 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ const _excluded = ["className"],
4
+ _excluded2 = ["className"];
2
5
  import * as React from 'react';
3
6
  import PropTypes from 'prop-types';
4
- import Menu from '@mui/material/Menu';
5
7
  import useId from '@mui/utils/useId';
6
8
  import { styled } from '@mui/system';
9
+ import composeClasses from '@mui/utils/composeClasses';
10
+ import { GridMenu } from "../menu/GridMenu.js";
7
11
  import { Toolbar } from "./Toolbar.js";
8
12
  import { ToolbarButton } from "./ToolbarButton.js";
9
13
  import { FilterPanelTrigger } from "../filterPanel/index.js";
@@ -14,7 +18,18 @@ import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
14
18
  import { useGridApiContext } from "../../hooks/utils/useGridApiContext.js";
15
19
  import { NotRendered } from "../../utils/assert.js";
16
20
  import { vars } from "../../constants/cssVariables.js";
21
+ import { getDataGridUtilityClass } from "../../constants/gridClasses.js";
17
22
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
23
+ const useUtilityClasses = ownerState => {
24
+ const {
25
+ classes
26
+ } = ownerState;
27
+ const slots = {
28
+ divider: ['toolbarDivider'],
29
+ label: ['toolbarLabel']
30
+ };
31
+ return composeClasses(slots, getDataGridUtilityClass, classes);
32
+ };
18
33
  const Divider = styled(NotRendered, {
19
34
  name: 'MuiDataGrid',
20
35
  slot: 'ToolbarDivider'
@@ -22,6 +37,44 @@ const Divider = styled(NotRendered, {
22
37
  height: '50%',
23
38
  margin: vars.spacing(0, 0.5)
24
39
  });
40
+ const Label = styled('span', {
41
+ name: 'MuiDataGrid',
42
+ slot: 'ToolbarLabel'
43
+ })({
44
+ flex: 1,
45
+ font: vars.typography.font.large,
46
+ fontWeight: vars.typography.fontWeight.medium,
47
+ margin: vars.spacing(0, 0.5),
48
+ textOverflow: 'ellipsis',
49
+ overflow: 'hidden',
50
+ whiteSpace: 'nowrap'
51
+ });
52
+ function GridToolbarDivider(props) {
53
+ const other = _objectWithoutPropertiesLoose(props, _excluded);
54
+ const rootProps = useGridRootProps();
55
+ const classes = useUtilityClasses(rootProps);
56
+ return /*#__PURE__*/_jsx(Divider, _extends({
57
+ as: rootProps.slots.baseDivider,
58
+ orientation: "vertical",
59
+ className: classes.divider
60
+ }, other));
61
+ }
62
+ process.env.NODE_ENV !== "production" ? GridToolbarDivider.propTypes = {
63
+ // ----------------------------- Warning --------------------------------
64
+ // | These PropTypes are generated from the TypeScript type definitions |
65
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
66
+ // ----------------------------------------------------------------------
67
+ className: PropTypes.string,
68
+ orientation: PropTypes.oneOf(['horizontal', 'vertical'])
69
+ } : void 0;
70
+ function GridToolbarLabel(props) {
71
+ const other = _objectWithoutPropertiesLoose(props, _excluded2);
72
+ const rootProps = useGridRootProps();
73
+ const classes = useUtilityClasses(rootProps);
74
+ return /*#__PURE__*/_jsx(Label, _extends({
75
+ className: classes.label
76
+ }, other));
77
+ }
25
78
  function GridToolbar(props) {
26
79
  const {
27
80
  showQuickFilter = true,
@@ -39,7 +92,9 @@ function GridToolbar(props) {
39
92
  const showExportMenu = !csvOptions?.disableToolbarButton || !printOptions?.disableToolbarButton || additionalExportMenuItems;
40
93
  const closeExportMenu = () => setExportMenuOpen(false);
41
94
  return /*#__PURE__*/_jsxs(Toolbar, {
42
- children: [!rootProps.disableColumnSelector && /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, {
95
+ children: [rootProps.label && /*#__PURE__*/_jsx(GridToolbarLabel, {
96
+ children: rootProps.label
97
+ }), !rootProps.disableColumnSelector && /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, {
43
98
  title: apiRef.current.getLocaleText('toolbarColumns'),
44
99
  children: /*#__PURE__*/_jsx(ColumnsPanelTrigger, {
45
100
  render: /*#__PURE__*/_jsx(ToolbarButton, {}),
@@ -51,7 +106,6 @@ function GridToolbar(props) {
51
106
  title: apiRef.current.getLocaleText('toolbarFilters'),
52
107
  children: /*#__PURE__*/_jsx(FilterPanelTrigger, {
53
108
  render: (triggerProps, state) => /*#__PURE__*/_jsx(ToolbarButton, _extends({}, triggerProps, {
54
- color: "default",
55
109
  children: /*#__PURE__*/_jsx(rootProps.slots.baseBadge, {
56
110
  badgeContent: state.filterCount,
57
111
  color: "primary",
@@ -62,10 +116,7 @@ function GridToolbar(props) {
62
116
  })
63
117
  }))
64
118
  })
65
- }), showExportMenu && (!rootProps.disableColumnFilter || !rootProps.disableColumnSelector) && /*#__PURE__*/_jsx(Divider, {
66
- as: rootProps.slots.baseDivider,
67
- orientation: "vertical"
68
- }), showExportMenu && /*#__PURE__*/_jsxs(React.Fragment, {
119
+ }), showExportMenu && (!rootProps.disableColumnFilter || !rootProps.disableColumnSelector) && /*#__PURE__*/_jsx(GridToolbarDivider, {}), showExportMenu && /*#__PURE__*/_jsxs(React.Fragment, {
69
120
  children: [/*#__PURE__*/_jsx(rootProps.slots.baseTooltip, {
70
121
  title: apiRef.current.getLocaleText('toolbarExport'),
71
122
  children: /*#__PURE__*/_jsx(ToolbarButton, {
@@ -74,32 +125,37 @@ function GridToolbar(props) {
74
125
  "aria-controls": exportMenuId,
75
126
  "aria-haspopup": "true",
76
127
  "aria-expanded": exportMenuOpen ? 'true' : undefined,
77
- onClick: () => setExportMenuOpen(true),
128
+ onClick: () => setExportMenuOpen(!exportMenuOpen),
78
129
  children: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {
79
130
  fontSize: "small"
80
131
  })
81
132
  })
82
- }), /*#__PURE__*/_jsxs(Menu, {
83
- id: exportMenuId,
84
- anchorEl: exportMenuTriggerRef.current,
133
+ }), /*#__PURE__*/_jsx(GridMenu, {
134
+ target: exportMenuTriggerRef.current,
85
135
  open: exportMenuOpen,
86
136
  onClose: closeExportMenu,
87
- MenuListProps: {
88
- 'aria-labelledby': exportMenuTriggerId
89
- },
90
- children: [!printOptions?.disableToolbarButton && /*#__PURE__*/_jsx(ExportPrint, {
91
- render: /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, _extends({}, rootProps.slotProps?.baseMenuItem)),
92
- options: printOptions,
93
- onClick: closeExportMenu,
94
- children: apiRef.current.getLocaleText('toolbarExportPrint')
95
- }), !csvOptions?.disableToolbarButton && /*#__PURE__*/_jsx(ExportCsv, {
96
- render: /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, _extends({}, rootProps.slotProps?.baseMenuItem)),
97
- options: csvOptions,
98
- onClick: closeExportMenu,
99
- children: apiRef.current.getLocaleText('toolbarExportCSV')
100
- }), additionalExportMenuItems?.(closeExportMenu)]
137
+ position: "bottom-end",
138
+ children: /*#__PURE__*/_jsxs(rootProps.slots.baseMenuList, _extends({
139
+ id: exportMenuId,
140
+ "aria-labelledby": exportMenuTriggerId,
141
+ autoFocusItem: true
142
+ }, rootProps.slotProps?.baseMenuList, {
143
+ children: [!printOptions?.disableToolbarButton && /*#__PURE__*/_jsx(ExportPrint, {
144
+ render: /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, _extends({}, rootProps.slotProps?.baseMenuItem)),
145
+ options: printOptions,
146
+ onClick: closeExportMenu,
147
+ children: apiRef.current.getLocaleText('toolbarExportPrint')
148
+ }), !csvOptions?.disableToolbarButton && /*#__PURE__*/_jsx(ExportCsv, {
149
+ render: /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, _extends({}, rootProps.slotProps?.baseMenuItem)),
150
+ options: csvOptions,
151
+ onClick: closeExportMenu,
152
+ children: apiRef.current.getLocaleText('toolbarExportCSV')
153
+ }), additionalExportMenuItems?.(closeExportMenu)]
154
+ }))
101
155
  })]
102
- }), showQuickFilter && /*#__PURE__*/_jsx(GridToolbarQuickFilter, _extends({}, quickFilterProps))]
156
+ }), showQuickFilter && /*#__PURE__*/_jsxs(React.Fragment, {
157
+ children: [/*#__PURE__*/_jsx(GridToolbarDivider, {}), /*#__PURE__*/_jsx(GridToolbarQuickFilter, _extends({}, quickFilterProps))]
158
+ })]
103
159
  });
104
160
  }
105
161
  process.env.NODE_ENV !== "production" ? GridToolbar.propTypes = {
@@ -132,4 +188,4 @@ process.env.NODE_ENV !== "production" ? GridToolbar.propTypes = {
132
188
  slotProps: PropTypes.object,
133
189
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
134
190
  } : void 0;
135
- export { GridToolbar };
191
+ export { GridToolbar, GridToolbarDivider, GridToolbarLabel };
@@ -8,7 +8,7 @@ export type ToolbarProps = React.HTMLAttributes<HTMLDivElement> & {
8
8
  render?: RenderProp<React.ComponentProps<typeof ToolbarRoot>>;
9
9
  };
10
10
  type OwnerState = DataGridProcessedProps;
11
- declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
11
+ declare const ToolbarRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/system").Theme> & {
12
12
  ownerState: OwnerState;
13
13
  }, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
14
14
  /**
@@ -3,7 +3,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["render", "className"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import { styled } from '@mui/material/styles';
6
+ import { styled } from '@mui/system';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import clsx from 'clsx';
9
9
  import { forwardRef } from '@mui/x-internals/forwardRef';
@@ -29,8 +29,11 @@ const ToolbarRoot = styled('div', {
29
29
  flex: 0,
30
30
  display: 'flex',
31
31
  alignItems: 'center',
32
+ justifyContent: 'end',
32
33
  gap: vars.spacing(0.25),
33
34
  padding: vars.spacing(0.75),
35
+ minHeight: 52,
36
+ boxSizing: 'border-box',
34
37
  borderBottom: `1px solid ${vars.colors.border.base}`
35
38
  });
36
39
 
@@ -56,47 +59,99 @@ const Toolbar = forwardRef(function Toolbar(props, ref) {
56
59
  const classes = useUtilityClasses(rootProps);
57
60
  const [focusableItemId, setFocusableItemId] = React.useState(null);
58
61
  const [items, setItems] = React.useState([]);
59
- const registerItem = React.useCallback(item => {
60
- setItems(prevItems => [...prevItems, item]);
62
+ const registerItem = React.useCallback((id, itemRef) => {
63
+ setItems(prevItems => [...prevItems, {
64
+ id,
65
+ ref: itemRef
66
+ }]);
61
67
  }, []);
62
- const unregisterItem = React.useCallback(item => {
63
- setItems(prevItems => prevItems.filter(i => i !== item));
64
- if (focusableItemId === item) {
68
+ const unregisterItem = React.useCallback(id => {
69
+ setItems(prevItems => prevItems.filter(i => i.id !== id));
70
+ if (focusableItemId === id) {
65
71
  setFocusableItemId(null);
66
72
  }
67
73
  }, [focusableItemId]);
74
+ const findEnabledItem = React.useCallback((startIndex, step, wrap = true) => {
75
+ let index = startIndex;
76
+ const itemCount = items.length;
77
+
78
+ // Look for enabled items in the specified direction
79
+ for (let i = 0; i < itemCount; i += 1) {
80
+ index += step;
81
+
82
+ // Handle wrapping around the ends
83
+ if (index >= itemCount) {
84
+ if (!wrap) {
85
+ return -1;
86
+ }
87
+ index = 0;
88
+ } else if (index < 0) {
89
+ if (!wrap) {
90
+ return -1;
91
+ }
92
+ index = itemCount - 1;
93
+ }
94
+
95
+ // Return if we found an enabled item
96
+ if (!items[index].ref.current?.disabled && items[index].ref.current?.ariaDisabled !== 'true') {
97
+ return index;
98
+ }
99
+ }
100
+
101
+ // If we've checked all items and found none enabled
102
+ return -1;
103
+ }, [items]);
68
104
  const onItemKeyDown = React.useCallback(event => {
69
105
  if (!focusableItemId) {
70
106
  return;
71
107
  }
108
+ const currentIndex = items.findIndex(item => item.id === focusableItemId);
109
+ let newIndex = -1;
72
110
  if (event.key === 'ArrowRight') {
73
111
  event.preventDefault();
74
- const nextIndex = items.indexOf(focusableItemId) + 1;
75
- setFocusableItemId(items[nextIndex < items.length ? nextIndex : 0]);
76
- }
77
- if (event.key === 'ArrowLeft') {
112
+ newIndex = findEnabledItem(currentIndex, 1);
113
+ } else if (event.key === 'ArrowLeft') {
78
114
  event.preventDefault();
79
- const prevIndex = items.indexOf(focusableItemId) - 1;
80
- setFocusableItemId(items[prevIndex < 0 ? items.length - 1 : prevIndex]);
81
- }
82
- if (event.key === 'Home') {
115
+ newIndex = findEnabledItem(currentIndex, -1);
116
+ } else if (event.key === 'Home') {
83
117
  event.preventDefault();
84
- setFocusableItemId(items[0]);
85
- }
86
- if (event.key === 'End') {
118
+ newIndex = findEnabledItem(-1, 1, false);
119
+ } else if (event.key === 'End') {
87
120
  event.preventDefault();
88
- setFocusableItemId(items[items.length - 1]);
121
+ newIndex = findEnabledItem(items.length, -1, false);
122
+ }
123
+ if (newIndex >= 0 && newIndex < items.length) {
124
+ const item = items[newIndex];
125
+ setFocusableItemId(item.id);
126
+ item.ref.current?.focus();
127
+ }
128
+ }, [items, focusableItemId, findEnabledItem]);
129
+ const onItemFocus = React.useCallback(id => {
130
+ if (focusableItemId !== id) {
131
+ setFocusableItemId(id);
132
+ }
133
+ }, [focusableItemId]);
134
+ const onItemDisabled = React.useCallback(id => {
135
+ const currentIndex = items.findIndex(item => item.id === id);
136
+ const newIndex = findEnabledItem(currentIndex, 1);
137
+ if (newIndex >= 0 && newIndex < items.length) {
138
+ const item = items[newIndex];
139
+ setFocusableItemId(item.id);
140
+ item.ref.current?.focus();
89
141
  }
90
- }, [items, focusableItemId]);
142
+ }, [items, findEnabledItem]);
91
143
  const contextValue = React.useMemo(() => ({
92
144
  focusableItemId,
93
145
  registerItem,
94
146
  unregisterItem,
95
- onItemKeyDown
96
- }), [registerItem, unregisterItem, focusableItemId, onItemKeyDown]);
147
+ onItemKeyDown,
148
+ onItemFocus,
149
+ onItemDisabled
150
+ }), [focusableItemId, registerItem, unregisterItem, onItemKeyDown, onItemFocus, onItemDisabled]);
97
151
  const element = useGridComponentRenderer(ToolbarRoot, render, _extends({
98
152
  role: 'toolbar',
99
153
  'aria-orientation': 'horizontal',
154
+ 'aria-label': rootProps.label || undefined,
100
155
  className: clsx(classes.root, className),
101
156
  ownerState: rootProps
102
157
  }, other, {
@@ -104,7 +159,7 @@ const Toolbar = forwardRef(function Toolbar(props, ref) {
104
159
  }));
105
160
  React.useEffect(() => {
106
161
  if (items.length > 0) {
107
- setFocusableItemId(items[0]);
162
+ setFocusableItemId(items[0].id);
108
163
  }
109
164
  }, [items]);
110
165
  return /*#__PURE__*/_jsx(ToolbarContext.Provider, {