@mui/x-data-grid 7.0.0-alpha.7 → 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 (501) hide show
  1. package/CHANGELOG.md +554 -51
  2. package/DataGrid/DataGrid.js +15 -27
  3. package/DataGrid/useDataGridComponent.js +2 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/README.md +1 -1
  6. package/colDef/gridDateColDef.js +1 -1
  7. package/components/GridColumnHeaders.d.ts +3 -2
  8. package/components/GridColumnHeaders.js +3 -11
  9. package/components/GridDetailPanels.d.ts +5 -0
  10. package/components/GridDetailPanels.js +4 -0
  11. package/components/GridHeaders.d.ts +4 -0
  12. package/components/GridHeaders.js +53 -0
  13. package/components/GridPagination.d.ts +4 -4
  14. package/components/GridPagination.js +1 -1
  15. package/components/GridPinnedRows.d.ts +7 -0
  16. package/components/GridPinnedRows.js +4 -0
  17. package/components/GridRow.d.ts +7 -4
  18. package/components/GridRow.js +260 -97
  19. package/components/GridScrollbarFillerCell.d.ts +7 -0
  20. package/components/GridScrollbarFillerCell.js +39 -0
  21. package/components/base/GridBody.d.ts +2 -13
  22. package/components/base/GridBody.js +2 -116
  23. package/components/base/GridOverlays.js +10 -21
  24. package/components/cell/GridActionsCell.js +1 -1
  25. package/components/cell/GridActionsCellItem.d.ts +6 -6
  26. package/components/cell/GridCell.d.ts +15 -21
  27. package/components/cell/GridCell.js +68 -373
  28. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  29. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
  30. package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  31. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  32. package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  33. package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  34. package/components/containers/GridRoot.js +18 -15
  35. package/components/containers/GridRootStyles.js +307 -204
  36. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  37. package/components/panel/GridPanel.d.ts +3 -3
  38. package/components/panel/GridPanel.js +3 -4
  39. package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
  40. package/components/panel/filterPanel/GridFilterForm.js +32 -15
  41. package/components/panel/filterPanel/GridFilterPanel.js +46 -20
  42. package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
  43. package/components/toolbar/GridToolbarColumnsButton.js +40 -22
  44. package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
  45. package/components/toolbar/GridToolbarDensitySelector.js +40 -22
  46. package/components/toolbar/GridToolbarExport.d.ts +10 -1
  47. package/components/toolbar/GridToolbarExport.js +6 -1
  48. package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
  49. package/components/toolbar/GridToolbarExportContainer.js +41 -23
  50. package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
  51. package/components/toolbar/GridToolbarFilterButton.js +6 -10
  52. package/components/toolbar/GridToolbarQuickFilter.d.ts +4 -0
  53. package/components/toolbar/GridToolbarQuickFilter.js +4 -0
  54. package/components/virtualization/GridBottomContainer.d.ts +2 -0
  55. package/components/virtualization/GridBottomContainer.js +25 -0
  56. package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
  57. package/components/virtualization/GridMainContainer.js +20 -0
  58. package/components/virtualization/GridTopContainer.d.ts +2 -0
  59. package/components/virtualization/GridTopContainer.js +35 -0
  60. package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
  61. package/components/virtualization/GridVirtualScrollbar.js +131 -0
  62. package/components/virtualization/GridVirtualScroller.d.ts +4 -4
  63. package/components/virtualization/GridVirtualScroller.js +69 -16
  64. package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
  65. package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  66. package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  67. package/constants/defaultGridSlotsComponents.js +6 -2
  68. package/constants/gridClasses.d.ts +60 -8
  69. package/constants/gridClasses.js +1 -1
  70. package/hooks/core/gridCoreSelector.d.ts +6 -0
  71. package/hooks/core/gridCoreSelector.js +5 -0
  72. package/hooks/core/useGridInitialization.js +4 -0
  73. package/hooks/core/useGridLoggerFactory.js +2 -2
  74. package/hooks/core/useGridRefs.d.ts +3 -0
  75. package/hooks/core/useGridRefs.js +13 -0
  76. package/hooks/core/useGridTheme.d.ts +3 -0
  77. package/hooks/core/useGridTheme.js +19 -0
  78. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  79. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  80. package/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
  81. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
  82. package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
  83. package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  84. package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
  85. package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  86. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
  87. package/hooks/features/columns/gridColumnsSelector.js +52 -0
  88. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
  89. package/hooks/features/columns/gridColumnsUtils.js +10 -12
  90. package/hooks/features/columns/index.d.ts +2 -2
  91. package/hooks/features/columns/index.js +2 -1
  92. package/hooks/features/columns/useGridColumnSpanning.js +62 -61
  93. package/hooks/features/columns/useGridColumns.js +20 -23
  94. package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
  95. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
  96. package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  97. package/hooks/features/dimensions/index.d.ts +2 -0
  98. package/hooks/features/dimensions/index.js +1 -0
  99. package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
  100. package/hooks/features/dimensions/useGridDimensions.js +216 -148
  101. package/hooks/features/editing/useGridCellEditing.js +4 -4
  102. package/hooks/features/editing/useGridRowEditing.js +4 -4
  103. package/hooks/features/export/serializers/csvSerializer.js +3 -3
  104. package/hooks/features/export/useGridPrintExport.js +1 -1
  105. package/hooks/features/filter/gridFilterUtils.js +5 -5
  106. package/hooks/features/filter/useGridFilter.js +3 -3
  107. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
  108. package/hooks/features/focus/gridFocusStateSelector.js +2 -6
  109. package/hooks/features/focus/useGridFocus.js +3 -3
  110. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  111. package/hooks/features/pagination/gridPaginationUtils.js +2 -2
  112. package/hooks/features/pagination/useGridPagination.js +3 -5
  113. package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  114. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
  115. package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
  116. package/hooks/features/rows/gridRowsSelector.js +5 -5
  117. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  118. package/hooks/features/rows/gridRowsUtils.js +6 -6
  119. package/hooks/features/rows/useGridRows.js +7 -7
  120. package/hooks/features/rows/useGridRowsMeta.js +9 -6
  121. package/hooks/features/scroll/useGridScroll.js +8 -10
  122. package/hooks/features/sorting/gridSortingUtils.js +5 -3
  123. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  124. package/hooks/features/sorting/useGridSorting.js +15 -10
  125. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
  126. package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  127. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
  128. package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
  129. package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
  130. package/hooks/features/virtualization/useGridVirtualization.js +8 -1
  131. package/hooks/utils/index.d.ts +3 -0
  132. package/hooks/utils/index.js +4 -1
  133. package/hooks/utils/useGridApiContext.js +1 -1
  134. package/hooks/utils/useGridAriaAttributes.js +1 -2
  135. package/hooks/utils/useGridNativeEventListener.js +4 -9
  136. package/hooks/utils/useGridPrivateApiContext.js +1 -1
  137. package/hooks/utils/useGridRootProps.js +1 -1
  138. package/hooks/utils/useGridSelector.js +1 -1
  139. package/hooks/utils/useResizeObserver.d.ts +2 -0
  140. package/hooks/utils/useResizeObserver.js +36 -0
  141. package/hooks/utils/useRunOnce.d.ts +5 -0
  142. package/hooks/utils/useRunOnce.js +18 -0
  143. package/index.d.ts +0 -1
  144. package/index.js +1 -2
  145. package/internals/index.d.ts +13 -9
  146. package/internals/index.js +9 -7
  147. package/internals/utils/index.d.ts +1 -0
  148. package/internals/utils/index.js +2 -1
  149. package/internals/utils/propValidation.d.ts +4 -0
  150. package/internals/utils/propValidation.js +19 -0
  151. package/legacy/DataGrid/DataGrid.js +20 -29
  152. package/legacy/DataGrid/useDataGridComponent.js +2 -1
  153. package/legacy/DataGrid/useDataGridProps.js +1 -0
  154. package/legacy/colDef/gridDateColDef.js +1 -1
  155. package/legacy/components/GridColumnHeaders.js +3 -11
  156. package/legacy/components/GridDetailPanels.js +4 -0
  157. package/legacy/components/GridHeaders.js +53 -0
  158. package/legacy/components/GridPagination.js +1 -1
  159. package/legacy/components/GridPinnedRows.js +4 -0
  160. package/legacy/components/GridRow.js +258 -98
  161. package/legacy/components/GridScrollbarFillerCell.js +36 -0
  162. package/legacy/components/base/GridBody.js +2 -114
  163. package/legacy/components/base/GridOverlays.js +10 -25
  164. package/legacy/components/cell/GridActionsCell.js +1 -1
  165. package/legacy/components/cell/GridCell.js +70 -378
  166. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  167. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  168. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  169. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  170. package/legacy/components/containers/GridRoot.js +18 -15
  171. package/legacy/components/containers/GridRootStyles.js +215 -137
  172. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  173. package/legacy/components/panel/GridPanel.js +3 -4
  174. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -14
  175. package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
  176. package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
  177. package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
  178. package/legacy/components/toolbar/GridToolbarExport.js +6 -1
  179. package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
  180. package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
  181. package/legacy/components/toolbar/GridToolbarQuickFilter.js +4 -0
  182. package/legacy/components/virtualization/GridBottomContainer.js +25 -0
  183. package/legacy/components/virtualization/GridMainContainer.js +20 -0
  184. package/legacy/components/virtualization/GridTopContainer.js +35 -0
  185. package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
  186. package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
  187. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
  188. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  189. package/legacy/constants/defaultGridSlotsComponents.js +6 -2
  190. package/legacy/constants/gridClasses.js +1 -1
  191. package/legacy/hooks/core/gridCoreSelector.js +7 -0
  192. package/legacy/hooks/core/useGridInitialization.js +4 -0
  193. package/legacy/hooks/core/useGridLoggerFactory.js +2 -2
  194. package/legacy/hooks/core/useGridRefs.js +13 -0
  195. package/legacy/hooks/core/useGridTheme.js +21 -0
  196. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  197. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
  198. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
  199. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  200. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  201. package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
  202. package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
  203. package/legacy/hooks/features/columns/index.js +2 -1
  204. package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
  205. package/legacy/hooks/features/columns/useGridColumns.js +22 -23
  206. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
  207. package/legacy/hooks/features/dimensions/index.js +1 -0
  208. package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
  209. package/legacy/hooks/features/editing/useGridCellEditing.js +4 -4
  210. package/legacy/hooks/features/editing/useGridRowEditing.js +4 -4
  211. package/legacy/hooks/features/export/serializers/csvSerializer.js +3 -3
  212. package/legacy/hooks/features/export/useGridPrintExport.js +1 -1
  213. package/legacy/hooks/features/filter/gridFilterUtils.js +5 -5
  214. package/legacy/hooks/features/filter/useGridFilter.js +3 -3
  215. package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
  216. package/legacy/hooks/features/focus/useGridFocus.js +3 -3
  217. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  218. package/legacy/hooks/features/pagination/gridPaginationUtils.js +2 -2
  219. package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
  220. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  221. package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
  222. package/legacy/hooks/features/rows/gridRowsUtils.js +6 -6
  223. package/legacy/hooks/features/rows/useGridParamsApi.js +4 -5
  224. package/legacy/hooks/features/rows/useGridRows.js +7 -7
  225. package/legacy/hooks/features/rows/useGridRowsMeta.js +9 -6
  226. package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
  227. package/legacy/hooks/features/sorting/gridSortingUtils.js +5 -3
  228. package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
  229. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
  230. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
  231. package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
  232. package/legacy/hooks/utils/index.js +4 -1
  233. package/legacy/hooks/utils/useGridApiContext.js +1 -1
  234. package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
  235. package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
  236. package/legacy/hooks/utils/useGridPrivateApiContext.js +1 -1
  237. package/legacy/hooks/utils/useGridRootProps.js +1 -1
  238. package/legacy/hooks/utils/useGridSelector.js +1 -1
  239. package/legacy/hooks/utils/useResizeObserver.js +36 -0
  240. package/legacy/hooks/utils/useRunOnce.js +18 -0
  241. package/legacy/index.js +1 -2
  242. package/legacy/internals/index.js +9 -7
  243. package/legacy/internals/utils/index.js +2 -1
  244. package/legacy/internals/utils/propValidation.js +21 -0
  245. package/legacy/locales/hrHR.js +161 -0
  246. package/legacy/locales/index.js +4 -1
  247. package/legacy/locales/ptPT.js +161 -0
  248. package/legacy/locales/zhHK.js +161 -0
  249. package/legacy/models/index.js +0 -1
  250. package/legacy/models/params/index.js +1 -2
  251. package/legacy/utils/createSelector.js +1 -1
  252. package/legacy/utils/exportAs.js +1 -1
  253. package/legacy/utils/utils.js +10 -1
  254. package/locales/hrHR.d.ts +1 -0
  255. package/locales/hrHR.js +149 -0
  256. package/locales/index.d.ts +3 -0
  257. package/locales/index.js +4 -1
  258. package/locales/ptPT.d.ts +1 -0
  259. package/locales/ptPT.js +149 -0
  260. package/locales/zhHK.d.ts +1 -0
  261. package/locales/zhHK.js +149 -0
  262. package/models/api/gridColumnGroupingApi.d.ts +2 -2
  263. package/models/api/gridCoreApi.d.ts +16 -16
  264. package/models/api/gridRowsMetaApi.d.ts +1 -1
  265. package/models/api/gridVirtualizationApi.d.ts +2 -3
  266. package/models/events/gridEventLookup.d.ts +3 -3
  267. package/models/gridFilterModel.d.ts +1 -1
  268. package/models/gridSlotsComponent.d.ts +16 -2
  269. package/models/gridStateCommunity.d.ts +5 -1
  270. package/models/index.d.ts +0 -1
  271. package/models/index.js +0 -1
  272. package/models/params/index.d.ts +0 -1
  273. package/models/params/index.js +1 -2
  274. package/models/props/DataGridProps.d.ts +7 -12
  275. package/modern/DataGrid/DataGrid.js +15 -27
  276. package/modern/DataGrid/useDataGridComponent.js +2 -1
  277. package/modern/DataGrid/useDataGridProps.js +1 -0
  278. package/modern/colDef/gridDateColDef.js +1 -1
  279. package/modern/components/GridColumnHeaders.js +3 -11
  280. package/modern/components/GridDetailPanels.js +4 -0
  281. package/modern/components/GridHeaders.js +53 -0
  282. package/modern/components/GridPagination.js +1 -1
  283. package/modern/components/GridPinnedRows.js +4 -0
  284. package/modern/components/GridRow.js +258 -96
  285. package/modern/components/GridScrollbarFillerCell.js +39 -0
  286. package/modern/components/base/GridBody.js +2 -116
  287. package/modern/components/base/GridOverlays.js +10 -16
  288. package/modern/components/cell/GridActionsCell.js +1 -1
  289. package/modern/components/cell/GridCell.js +66 -370
  290. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  291. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  292. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  293. package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  294. package/modern/components/containers/GridRoot.js +18 -14
  295. package/modern/components/containers/GridRootStyles.js +307 -204
  296. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  297. package/modern/components/panel/GridPanel.js +3 -4
  298. package/modern/components/panel/filterPanel/GridFilterForm.js +31 -14
  299. package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
  300. package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
  301. package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
  302. package/modern/components/toolbar/GridToolbarExport.js +6 -1
  303. package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
  304. package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
  305. package/modern/components/toolbar/GridToolbarQuickFilter.js +4 -0
  306. package/modern/components/virtualization/GridBottomContainer.js +25 -0
  307. package/modern/components/virtualization/GridMainContainer.js +20 -0
  308. package/modern/components/virtualization/GridTopContainer.js +35 -0
  309. package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
  310. package/modern/components/virtualization/GridVirtualScroller.js +69 -16
  311. package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  312. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  313. package/modern/constants/defaultGridSlotsComponents.js +6 -2
  314. package/modern/constants/gridClasses.js +1 -1
  315. package/modern/hooks/core/gridCoreSelector.js +5 -0
  316. package/modern/hooks/core/useGridInitialization.js +4 -0
  317. package/modern/hooks/core/useGridLoggerFactory.js +2 -2
  318. package/modern/hooks/core/useGridRefs.js +13 -0
  319. package/modern/hooks/core/useGridTheme.js +19 -0
  320. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  321. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
  322. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
  323. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  324. package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  325. package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
  326. package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
  327. package/modern/hooks/features/columns/index.js +2 -1
  328. package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
  329. package/modern/hooks/features/columns/useGridColumns.js +19 -21
  330. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  331. package/modern/hooks/features/dimensions/index.js +1 -0
  332. package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
  333. package/modern/hooks/features/editing/useGridCellEditing.js +4 -4
  334. package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
  335. package/modern/hooks/features/export/serializers/csvSerializer.js +3 -3
  336. package/modern/hooks/features/export/useGridPrintExport.js +1 -1
  337. package/modern/hooks/features/filter/gridFilterUtils.js +5 -5
  338. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  339. package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
  340. package/modern/hooks/features/focus/useGridFocus.js +3 -3
  341. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  342. package/modern/hooks/features/pagination/gridPaginationUtils.js +2 -2
  343. package/modern/hooks/features/pagination/useGridPagination.js +3 -5
  344. package/modern/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  345. package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
  346. package/modern/hooks/features/rows/gridRowsUtils.js +6 -6
  347. package/modern/hooks/features/rows/useGridRows.js +7 -7
  348. package/modern/hooks/features/rows/useGridRowsMeta.js +9 -6
  349. package/modern/hooks/features/scroll/useGridScroll.js +8 -9
  350. package/modern/hooks/features/sorting/gridSortingUtils.js +5 -3
  351. package/modern/hooks/features/sorting/useGridSorting.js +15 -10
  352. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  353. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
  354. package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
  355. package/modern/hooks/utils/index.js +4 -1
  356. package/modern/hooks/utils/useGridApiContext.js +1 -1
  357. package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
  358. package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
  359. package/modern/hooks/utils/useGridPrivateApiContext.js +1 -1
  360. package/modern/hooks/utils/useGridRootProps.js +1 -1
  361. package/modern/hooks/utils/useGridSelector.js +1 -1
  362. package/modern/hooks/utils/useResizeObserver.js +36 -0
  363. package/modern/hooks/utils/useRunOnce.js +18 -0
  364. package/modern/index.js +1 -2
  365. package/modern/internals/index.js +9 -7
  366. package/modern/internals/utils/index.js +2 -1
  367. package/modern/internals/utils/propValidation.js +19 -0
  368. package/modern/locales/hrHR.js +149 -0
  369. package/modern/locales/index.js +4 -1
  370. package/modern/locales/ptPT.js +149 -0
  371. package/modern/locales/zhHK.js +149 -0
  372. package/modern/models/index.js +0 -1
  373. package/modern/models/params/index.js +1 -2
  374. package/modern/utils/createSelector.js +1 -1
  375. package/modern/utils/exportAs.js +1 -1
  376. package/modern/utils/utils.js +10 -1
  377. package/node/DataGrid/DataGrid.js +15 -27
  378. package/node/DataGrid/useDataGridComponent.js +1 -0
  379. package/node/DataGrid/useDataGridProps.js +1 -0
  380. package/node/colDef/gridDateColDef.js +1 -1
  381. package/node/components/GridColumnHeaders.js +3 -11
  382. package/node/components/GridDetailPanels.js +10 -0
  383. package/node/components/GridHeaders.js +60 -0
  384. package/node/components/GridPagination.js +1 -1
  385. package/node/components/GridPinnedRows.js +10 -0
  386. package/node/components/GridRow.js +256 -94
  387. package/node/components/GridScrollbarFillerCell.js +47 -0
  388. package/node/components/base/GridBody.js +7 -118
  389. package/node/components/base/GridOverlays.js +9 -15
  390. package/node/components/cell/GridActionsCell.js +1 -1
  391. package/node/components/cell/GridCell.js +67 -370
  392. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  393. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
  394. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  395. package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  396. package/node/components/containers/GridRoot.js +17 -14
  397. package/node/components/containers/GridRootStyles.js +175 -72
  398. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  399. package/node/components/panel/GridPanel.js +3 -4
  400. package/node/components/panel/filterPanel/GridFilterForm.js +30 -13
  401. package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
  402. package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
  403. package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
  404. package/node/components/toolbar/GridToolbarExport.js +6 -1
  405. package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
  406. package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
  407. package/node/components/toolbar/GridToolbarQuickFilter.js +4 -0
  408. package/node/components/virtualization/GridBottomContainer.js +34 -0
  409. package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
  410. package/node/components/virtualization/GridTopContainer.js +44 -0
  411. package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
  412. package/node/components/virtualization/GridVirtualScroller.js +69 -17
  413. package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
  414. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  415. package/node/constants/defaultGridSlotsComponents.js +5 -1
  416. package/node/constants/gridClasses.js +1 -1
  417. package/node/hooks/core/gridCoreSelector.js +12 -0
  418. package/node/hooks/core/useGridInitialization.js +4 -0
  419. package/node/hooks/core/useGridLoggerFactory.js +2 -2
  420. package/node/hooks/core/useGridRefs.js +22 -0
  421. package/node/hooks/core/useGridTheme.js +29 -0
  422. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  423. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
  424. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
  425. package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  426. package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
  427. package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
  428. package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
  429. package/node/hooks/features/columns/index.js +22 -61
  430. package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
  431. package/node/hooks/features/columns/useGridColumns.js +20 -22
  432. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
  433. package/node/hooks/features/dimensions/index.js +11 -0
  434. package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
  435. package/node/hooks/features/editing/useGridCellEditing.js +4 -4
  436. package/node/hooks/features/editing/useGridRowEditing.js +4 -4
  437. package/node/hooks/features/export/serializers/csvSerializer.js +3 -3
  438. package/node/hooks/features/export/useGridPrintExport.js +1 -1
  439. package/node/hooks/features/filter/gridFilterUtils.js +5 -5
  440. package/node/hooks/features/filter/useGridFilter.js +2 -2
  441. package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
  442. package/node/hooks/features/focus/useGridFocus.js +2 -2
  443. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
  444. package/node/hooks/features/pagination/gridPaginationUtils.js +2 -2
  445. package/node/hooks/features/pagination/useGridPagination.js +3 -5
  446. package/node/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  447. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  448. package/node/hooks/features/rows/gridRowsUtils.js +6 -6
  449. package/node/hooks/features/rows/useGridRows.js +7 -7
  450. package/node/hooks/features/rows/useGridRowsMeta.js +7 -5
  451. package/node/hooks/features/scroll/useGridScroll.js +8 -9
  452. package/node/hooks/features/sorting/gridSortingUtils.js +5 -3
  453. package/node/hooks/features/sorting/useGridSorting.js +15 -10
  454. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  455. package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
  456. package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
  457. package/node/hooks/utils/index.js +36 -0
  458. package/node/hooks/utils/useGridApiContext.js +1 -1
  459. package/node/hooks/utils/useGridAriaAttributes.js +1 -1
  460. package/node/hooks/utils/useGridNativeEventListener.js +3 -9
  461. package/node/hooks/utils/useGridPrivateApiContext.js +1 -1
  462. package/node/hooks/utils/useGridRootProps.js +1 -1
  463. package/node/hooks/utils/useGridSelector.js +1 -1
  464. package/node/hooks/utils/useResizeObserver.js +44 -0
  465. package/node/hooks/utils/useRunOnce.js +27 -0
  466. package/node/index.js +1 -13
  467. package/node/internals/index.js +86 -71
  468. package/node/internals/utils/index.js +11 -0
  469. package/node/internals/utils/propValidation.js +26 -0
  470. package/node/locales/hrHR.js +155 -0
  471. package/node/locales/index.js +33 -0
  472. package/node/locales/ptPT.js +155 -0
  473. package/node/locales/zhHK.js +155 -0
  474. package/node/models/index.js +0 -11
  475. package/node/models/params/index.js +0 -11
  476. package/node/utils/createSelector.js +1 -1
  477. package/node/utils/exportAs.js +1 -1
  478. package/node/utils/utils.js +11 -1
  479. package/package.json +6 -6
  480. package/utils/createSelector.js +1 -1
  481. package/utils/exportAs.js +1 -1
  482. package/utils/utils.d.ts +6 -0
  483. package/utils/utils.js +10 -1
  484. package/components/DataGridVirtualScroller.d.ts +0 -3
  485. package/components/DataGridVirtualScroller.js +0 -35
  486. package/components/containers/GridMainContainer.js +0 -43
  487. package/legacy/components/DataGridVirtualScroller.js +0 -32
  488. package/legacy/components/containers/GridMainContainer.js +0 -45
  489. package/legacy/models/gridRootContainerRef.js +0 -1
  490. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  491. package/models/gridRootContainerRef.d.ts +0 -5
  492. package/models/gridRootContainerRef.js +0 -1
  493. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
  494. package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  495. package/modern/components/DataGridVirtualScroller.js +0 -35
  496. package/modern/components/containers/GridMainContainer.js +0 -42
  497. package/modern/models/gridRootContainerRef.js +0 -1
  498. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  499. package/node/components/DataGridVirtualScroller.js +0 -42
  500. package/node/models/gridRootContainerRef.js +0 -5
  501. 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';
@@ -91,7 +91,7 @@ const getLogicOperatorLocaleKey = logicOperator => {
91
91
  case GridLogicOperator.Or:
92
92
  return 'filterPanelOperatorOr';
93
93
  default:
94
- throw new Error('MUI: Invalid `logicOperator` property in the `GridFilterPanel`.');
94
+ throw new Error('MUI X: Invalid `logicOperator` property in the `GridFilterPanel`.');
95
95
  }
96
96
  };
97
97
  const getColumnLabel = col => col.headerName || col.field;
@@ -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 };
@@ -123,12 +123,16 @@ process.env.NODE_ENV !== "production" ? GridToolbarQuickFilter.propTypes = {
123
123
  * Function responsible for formatting values of quick filter in a string when the model is modified
124
124
  * @param {any[]} values The new values passed to the quick filter model
125
125
  * @returns {string} The string to display in the text field
126
+ * @default (values: string[]) => values.join(' ')
126
127
  */
127
128
  quickFilterFormatter: PropTypes.func,
128
129
  /**
129
130
  * Function responsible for parsing text input in an array of independent values for quick filtering.
130
131
  * @param {string} input The value entered by the user
131
132
  * @returns {any[]} The array of value on which quick filter is applied
133
+ * @default (searchText: string) => searchText
134
+ * .split(' ')
135
+ * .filter((word) => word !== '')
132
136
  */
133
137
  quickFilterParser: PropTypes.func
134
138
  } : void 0;