@mui/x-data-grid 6.5.0 → 6.7.0

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 (329) hide show
  1. package/CHANGELOG.md +150 -2
  2. package/DataGrid/DataGrid.js +10 -3
  3. package/README.md +2 -2
  4. package/components/GridColumnHeaders.js +4 -9
  5. package/components/GridHeader.d.ts +2 -2
  6. package/components/base/GridBody.d.ts +1 -1
  7. package/components/base/GridFooterPlaceholder.d.ts +2 -2
  8. package/components/base/GridOverlays.d.ts +2 -2
  9. package/components/cell/GridActionsCell.d.ts +3 -3
  10. package/components/cell/GridActionsCell.js +3 -3
  11. package/components/cell/GridBooleanCell.d.ts +1 -1
  12. package/components/cell/GridEditBooleanCell.d.ts +2 -2
  13. package/components/cell/GridEditDateCell.d.ts +2 -2
  14. package/components/cell/GridEditInputCell.d.ts +1 -1
  15. package/components/cell/GridEditSingleSelectCell.d.ts +3 -3
  16. package/components/cell/GridEditSingleSelectCell.js +5 -5
  17. package/components/cell/GridSkeletonCell.d.ts +1 -1
  18. package/components/columnHeaders/ColumnHeaderMenuIcon.d.ts +1 -1
  19. package/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  20. package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -2
  21. package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +1 -1
  22. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
  23. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -2
  24. package/components/columnHeaders/GridColumnHeaderSeparator.d.ts +1 -1
  25. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -1
  26. package/components/columnHeaders/GridColumnHeaderTitle.d.ts +1 -1
  27. package/components/containers/GridRoot.js +1 -3
  28. package/components/containers/GridRootStyles.js +8 -1
  29. package/components/index.d.ts +0 -1
  30. package/components/index.js +1 -2
  31. package/components/menu/GridMenu.d.ts +1 -1
  32. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  33. package/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.d.ts +2 -2
  34. package/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.d.ts +2 -2
  35. package/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.d.ts +2 -2
  36. package/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.d.ts +2 -2
  37. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.d.ts +2 -2
  38. package/components/panel/GridColumnsPanel.d.ts +16 -2
  39. package/components/panel/GridColumnsPanel.js +14 -0
  40. package/components/panel/GridPanelContent.d.ts +1 -1
  41. package/components/panel/GridPanelFooter.d.ts +1 -1
  42. package/components/panel/GridPanelHeader.d.ts +1 -1
  43. package/components/panel/GridPreferencesPanel.js +3 -1
  44. package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +1 -2
  45. package/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
  46. package/components/panel/filterPanel/GridFilterInputDate.d.ts +1 -2
  47. package/components/panel/filterPanel/GridFilterInputDate.js +1 -6
  48. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -2
  49. package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +2 -2
  50. package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +1 -2
  51. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +6 -6
  52. package/components/panel/filterPanel/GridFilterInputValue.d.ts +1 -2
  53. package/components/panel/filterPanel/GridFilterInputValue.js +1 -6
  54. package/components/panel/filterPanel/GridFilterPanel.d.ts +8 -0
  55. package/components/panel/filterPanel/GridFilterPanel.js +8 -0
  56. package/components/toolbar/GridToolbarColumnsButton.js +11 -6
  57. package/components/toolbar/GridToolbarDensitySelector.js +2 -2
  58. package/components/toolbar/GridToolbarExport.d.ts +2 -2
  59. package/components/toolbar/GridToolbarExportContainer.js +7 -7
  60. package/components/toolbar/GridToolbarFilterButton.js +11 -4
  61. package/components/toolbar/GridToolbarQuickFilter.d.ts +2 -2
  62. package/constants/gridClasses.d.ts +4 -0
  63. package/constants/gridClasses.js +1 -1
  64. package/constants/localeTextConstants.js +4 -4
  65. package/context/GridContextProvider.d.ts +1 -1
  66. package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +10 -2
  67. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  68. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
  69. package/hooks/features/filter/gridFilterSelector.d.ts +2 -2
  70. package/hooks/features/filter/gridFilterSelector.js +2 -2
  71. package/hooks/features/filter/gridFilterState.d.ts +6 -6
  72. package/hooks/features/filter/gridFilterState.js +6 -0
  73. package/hooks/features/filter/useGridFilter.js +31 -10
  74. package/hooks/features/focus/useGridFocus.js +1 -0
  75. package/hooks/features/preferencesPanel/gridPreferencePanelState.d.ts +2 -0
  76. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  77. package/hooks/features/rows/useGridRowsMeta.js +12 -13
  78. package/hooks/features/sorting/useGridSorting.js +2 -1
  79. package/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  80. package/index.js +1 -1
  81. package/internals/utils/useProps.js +21 -1
  82. package/legacy/DataGrid/DataGrid.js +10 -3
  83. package/legacy/components/GridColumnHeaders.js +4 -9
  84. package/legacy/components/cell/GridActionsCell.js +3 -3
  85. package/legacy/components/cell/GridEditSingleSelectCell.js +5 -5
  86. package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  87. package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
  88. package/legacy/components/containers/GridRoot.js +1 -3
  89. package/legacy/components/containers/GridRootStyles.js +8 -4
  90. package/legacy/components/index.js +1 -2
  91. package/legacy/components/panel/GridColumnsPanel.js +14 -0
  92. package/legacy/components/panel/GridPreferencesPanel.js +3 -1
  93. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +7 -7
  94. package/legacy/components/panel/filterPanel/GridFilterInputDate.js +1 -5
  95. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +7 -6
  96. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +1 -5
  97. package/legacy/components/panel/filterPanel/GridFilterPanel.js +8 -0
  98. package/legacy/components/toolbar/GridToolbarColumnsButton.js +11 -5
  99. package/legacy/components/toolbar/GridToolbarDensitySelector.js +2 -2
  100. package/legacy/components/toolbar/GridToolbarExportContainer.js +7 -7
  101. package/legacy/components/toolbar/GridToolbarFilterButton.js +11 -4
  102. package/legacy/constants/gridClasses.js +1 -1
  103. package/legacy/constants/localeTextConstants.js +4 -4
  104. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  105. package/legacy/hooks/features/filter/gridFilterSelector.js +4 -4
  106. package/legacy/hooks/features/filter/gridFilterState.js +6 -0
  107. package/legacy/hooks/features/filter/useGridFilter.js +31 -10
  108. package/legacy/hooks/features/focus/useGridFocus.js +1 -0
  109. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  110. package/legacy/hooks/features/rows/useGridRowsMeta.js +13 -21
  111. package/legacy/hooks/features/sorting/useGridSorting.js +2 -1
  112. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  113. package/legacy/index.js +1 -1
  114. package/legacy/internals/utils/useProps.js +23 -1
  115. package/legacy/locales/arSD.js +12 -12
  116. package/legacy/locales/beBY.js +12 -12
  117. package/legacy/locales/bgBG.js +12 -12
  118. package/legacy/locales/csCZ.js +25 -27
  119. package/legacy/locales/daDK.js +12 -12
  120. package/legacy/locales/deDE.js +25 -27
  121. package/legacy/locales/elGR.js +12 -12
  122. package/legacy/locales/esES.js +12 -12
  123. package/legacy/locales/faIR.js +12 -12
  124. package/legacy/locales/fiFI.js +12 -12
  125. package/legacy/locales/frFR.js +25 -27
  126. package/legacy/locales/heIL.js +12 -12
  127. package/legacy/locales/huHU.js +12 -12
  128. package/legacy/locales/itIT.js +12 -12
  129. package/legacy/locales/jaJP.js +12 -12
  130. package/legacy/locales/koKR.js +12 -12
  131. package/legacy/locales/nbNO.js +12 -12
  132. package/legacy/locales/nlNL.js +25 -27
  133. package/legacy/locales/plPL.js +12 -12
  134. package/legacy/locales/ptBR.js +12 -12
  135. package/legacy/locales/roRO.js +12 -12
  136. package/legacy/locales/ruRU.js +12 -12
  137. package/legacy/locales/skSK.js +12 -12
  138. package/legacy/locales/svSE.js +12 -12
  139. package/legacy/locales/trTR.js +18 -19
  140. package/legacy/locales/ukUA.js +12 -12
  141. package/legacy/locales/urPK.js +12 -12
  142. package/legacy/locales/viVN.js +12 -12
  143. package/legacy/locales/zhCN.js +12 -12
  144. package/legacy/locales/zhTW.js +12 -12
  145. package/legacy/models/gridFilterItem.js +1 -1
  146. package/legacy/utils/EventManager.js +2 -2
  147. package/locales/arSD.js +12 -12
  148. package/locales/beBY.js +12 -12
  149. package/locales/bgBG.js +12 -12
  150. package/locales/csCZ.js +25 -27
  151. package/locales/daDK.js +12 -12
  152. package/locales/deDE.js +25 -27
  153. package/locales/elGR.js +12 -12
  154. package/locales/esES.js +12 -12
  155. package/locales/faIR.js +12 -12
  156. package/locales/fiFI.js +12 -12
  157. package/locales/frFR.js +25 -27
  158. package/locales/heIL.js +12 -12
  159. package/locales/huHU.js +12 -12
  160. package/locales/itIT.js +12 -12
  161. package/locales/jaJP.js +12 -12
  162. package/locales/koKR.js +12 -12
  163. package/locales/nbNO.js +12 -12
  164. package/locales/nlNL.js +25 -27
  165. package/locales/plPL.js +12 -12
  166. package/locales/ptBR.js +12 -12
  167. package/locales/roRO.js +12 -12
  168. package/locales/ruRU.js +12 -12
  169. package/locales/skSK.js +12 -12
  170. package/locales/svSE.js +12 -12
  171. package/locales/trTR.js +18 -19
  172. package/locales/ukUA.js +12 -12
  173. package/locales/urPK.js +12 -12
  174. package/locales/viVN.js +12 -12
  175. package/locales/zhCN.js +12 -12
  176. package/locales/zhTW.js +12 -12
  177. package/material/components/MUISelectOption.d.ts +2 -2
  178. package/models/api/gridFilterApi.d.ts +3 -1
  179. package/models/api/gridPreferencesPanelApi.d.ts +3 -1
  180. package/models/events/gridEventLookup.d.ts +8 -0
  181. package/models/gridFilterItem.d.ts +1 -1
  182. package/models/gridFilterItem.js +1 -1
  183. package/models/gridFilterOperator.d.ts +1 -1
  184. package/models/gridStateCommunity.d.ts +2 -0
  185. package/models/props/DataGridProps.d.ts +5 -0
  186. package/modern/DataGrid/DataGrid.js +10 -3
  187. package/modern/components/GridColumnHeaders.js +4 -9
  188. package/modern/components/cell/GridActionsCell.js +3 -3
  189. package/modern/components/cell/GridEditSingleSelectCell.js +5 -5
  190. package/modern/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  191. package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
  192. package/modern/components/containers/GridRoot.js +1 -3
  193. package/modern/components/containers/GridRootStyles.js +8 -1
  194. package/modern/components/index.js +1 -2
  195. package/modern/components/panel/GridColumnsPanel.js +14 -0
  196. package/modern/components/panel/GridPreferencesPanel.js +3 -1
  197. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
  198. package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -6
  199. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +6 -6
  200. package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -6
  201. package/modern/components/panel/filterPanel/GridFilterPanel.js +8 -0
  202. package/modern/components/toolbar/GridToolbarColumnsButton.js +11 -6
  203. package/modern/components/toolbar/GridToolbarDensitySelector.js +2 -2
  204. package/modern/components/toolbar/GridToolbarExportContainer.js +7 -7
  205. package/modern/components/toolbar/GridToolbarFilterButton.js +11 -4
  206. package/modern/constants/gridClasses.js +1 -1
  207. package/modern/constants/localeTextConstants.js +4 -4
  208. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  209. package/modern/hooks/features/filter/gridFilterSelector.js +2 -2
  210. package/modern/hooks/features/filter/gridFilterState.js +6 -0
  211. package/modern/hooks/features/filter/useGridFilter.js +31 -10
  212. package/modern/hooks/features/focus/useGridFocus.js +1 -0
  213. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  214. package/modern/hooks/features/rows/useGridRowsMeta.js +12 -13
  215. package/modern/hooks/features/sorting/useGridSorting.js +2 -1
  216. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  217. package/modern/index.js +1 -1
  218. package/modern/internals/utils/useProps.js +20 -1
  219. package/modern/locales/arSD.js +12 -12
  220. package/modern/locales/beBY.js +12 -12
  221. package/modern/locales/bgBG.js +12 -12
  222. package/modern/locales/csCZ.js +25 -27
  223. package/modern/locales/daDK.js +12 -12
  224. package/modern/locales/deDE.js +25 -27
  225. package/modern/locales/elGR.js +12 -12
  226. package/modern/locales/esES.js +12 -12
  227. package/modern/locales/faIR.js +12 -12
  228. package/modern/locales/fiFI.js +12 -12
  229. package/modern/locales/frFR.js +25 -27
  230. package/modern/locales/heIL.js +12 -12
  231. package/modern/locales/huHU.js +12 -12
  232. package/modern/locales/itIT.js +12 -12
  233. package/modern/locales/jaJP.js +12 -12
  234. package/modern/locales/koKR.js +12 -12
  235. package/modern/locales/nbNO.js +12 -12
  236. package/modern/locales/nlNL.js +25 -27
  237. package/modern/locales/plPL.js +12 -12
  238. package/modern/locales/ptBR.js +12 -12
  239. package/modern/locales/roRO.js +12 -12
  240. package/modern/locales/ruRU.js +12 -12
  241. package/modern/locales/skSK.js +12 -12
  242. package/modern/locales/svSE.js +12 -12
  243. package/modern/locales/trTR.js +18 -19
  244. package/modern/locales/ukUA.js +12 -12
  245. package/modern/locales/urPK.js +12 -12
  246. package/modern/locales/viVN.js +12 -12
  247. package/modern/locales/zhCN.js +12 -12
  248. package/modern/locales/zhTW.js +12 -12
  249. package/modern/models/gridFilterItem.js +1 -1
  250. package/modern/utils/EventManager.js +2 -2
  251. package/node/DataGrid/DataGrid.js +10 -3
  252. package/node/components/GridColumnHeaders.js +3 -8
  253. package/node/components/cell/GridActionsCell.js +3 -3
  254. package/node/components/cell/GridEditSingleSelectCell.js +5 -5
  255. package/node/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  256. package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +12 -3
  257. package/node/components/containers/GridRoot.js +1 -3
  258. package/node/components/containers/GridRootStyles.js +8 -1
  259. package/node/components/index.js +0 -11
  260. package/node/components/panel/GridColumnsPanel.js +14 -0
  261. package/node/components/panel/GridPreferencesPanel.js +3 -1
  262. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
  263. package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -6
  264. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +6 -6
  265. package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -6
  266. package/node/components/panel/filterPanel/GridFilterPanel.js +8 -0
  267. package/node/components/toolbar/GridToolbarColumnsButton.js +11 -6
  268. package/node/components/toolbar/GridToolbarDensitySelector.js +2 -2
  269. package/node/components/toolbar/GridToolbarExportContainer.js +7 -7
  270. package/node/components/toolbar/GridToolbarFilterButton.js +10 -3
  271. package/node/constants/gridClasses.js +1 -1
  272. package/node/constants/localeTextConstants.js +4 -4
  273. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  274. package/node/hooks/features/filter/gridFilterSelector.js +2 -2
  275. package/node/hooks/features/filter/gridFilterState.js +6 -0
  276. package/node/hooks/features/filter/useGridFilter.js +35 -14
  277. package/node/hooks/features/focus/useGridFocus.js +1 -0
  278. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  279. package/node/hooks/features/rows/useGridRowsMeta.js +12 -13
  280. package/node/hooks/features/sorting/useGridSorting.js +2 -1
  281. package/node/hooks/features/virtualization/useGridVirtualScroller.js +2 -2
  282. package/node/index.js +1 -1
  283. package/node/internals/utils/useProps.js +20 -1
  284. package/node/locales/arSD.js +12 -12
  285. package/node/locales/beBY.js +12 -12
  286. package/node/locales/bgBG.js +12 -12
  287. package/node/locales/csCZ.js +25 -27
  288. package/node/locales/daDK.js +12 -12
  289. package/node/locales/deDE.js +25 -27
  290. package/node/locales/elGR.js +12 -12
  291. package/node/locales/esES.js +12 -12
  292. package/node/locales/faIR.js +12 -12
  293. package/node/locales/fiFI.js +12 -12
  294. package/node/locales/frFR.js +25 -27
  295. package/node/locales/heIL.js +12 -12
  296. package/node/locales/huHU.js +12 -12
  297. package/node/locales/itIT.js +12 -12
  298. package/node/locales/jaJP.js +12 -12
  299. package/node/locales/koKR.js +12 -12
  300. package/node/locales/nbNO.js +12 -12
  301. package/node/locales/nlNL.js +25 -27
  302. package/node/locales/plPL.js +12 -12
  303. package/node/locales/ptBR.js +12 -12
  304. package/node/locales/roRO.js +12 -12
  305. package/node/locales/ruRU.js +12 -12
  306. package/node/locales/skSK.js +12 -12
  307. package/node/locales/svSE.js +12 -12
  308. package/node/locales/trTR.js +18 -19
  309. package/node/locales/ukUA.js +12 -12
  310. package/node/locales/urPK.js +12 -12
  311. package/node/locales/viVN.js +12 -12
  312. package/node/locales/zhCN.js +12 -12
  313. package/node/locales/zhTW.js +12 -12
  314. package/node/models/gridFilterItem.js +1 -1
  315. package/node/utils/EventManager.js +2 -2
  316. package/package.json +4 -4
  317. package/themeAugmentation/overrides.d.ts +1 -1
  318. package/utils/EventManager.js +2 -2
  319. package/components/GridScrollArea.d.ts +0 -10
  320. package/components/GridScrollArea.js +0 -117
  321. package/legacy/components/GridScrollArea.js +0 -119
  322. package/legacy/lib/createDetectElementResize/index.js +0 -145
  323. package/lib/createDetectElementResize/index.d.ts +0 -18
  324. package/lib/createDetectElementResize/index.js +0 -145
  325. package/lib/createDetectElementResize/types.d.ts +0 -9
  326. package/modern/components/GridScrollArea.js +0 -117
  327. package/modern/lib/createDetectElementResize/index.js +0 -145
  328. package/node/components/GridScrollArea.js +0 -126
  329. package/node/lib/createDetectElementResize/index.js +0 -151
@@ -13,13 +13,16 @@ var _utils = require("@mui/utils");
13
13
  var _styles = require("@mui/material/styles");
14
14
  var _useGridRootProps = require("../../../hooks/utils/useGridRootProps");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
- const _excluded = ["item", "applyValue", "apiRef", "focusElementRef", "headerFilterMenu", "isFilterActive", "clearButton", "tabIndex", "label"];
16
+ const _excluded = ["item", "applyValue", "apiRef", "focusElementRef", "isFilterActive", "clearButton", "tabIndex", "label"];
17
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
  const BooleanOperatorContainer = (0, _styles.styled)('div')({
20
20
  display: 'flex',
21
- alignItems: 'flex-end',
22
- width: '100%'
21
+ alignItems: 'center',
22
+ width: '100%',
23
+ [`& button`]: {
24
+ margin: 'auto 0px 5px 5px'
25
+ }
23
26
  });
24
27
  function GridFilterInputBoolean(props) {
25
28
  const {
@@ -27,8 +30,6 @@ function GridFilterInputBoolean(props) {
27
30
  applyValue,
28
31
  apiRef,
29
32
  focusElementRef,
30
- headerFilterMenu,
31
- isFilterActive,
32
33
  clearButton,
33
34
  tabIndex,
34
35
  label: labelProp
@@ -69,7 +70,6 @@ function GridFilterInputBoolean(props) {
69
70
  variant: "standard",
70
71
  native: isSelectNative,
71
72
  displayEmpty: true,
72
- startAdornment: isFilterActive ? headerFilterMenu : null,
73
73
  inputProps: {
74
74
  ref: focusElementRef,
75
75
  tabIndex
@@ -105,7 +105,6 @@ process.env.NODE_ENV !== "production" ? GridFilterInputBoolean.propTypes = {
105
105
  focusElementRef: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.shape({
106
106
  current: _propTypes.default.any.isRequired
107
107
  })]),
108
- headerFilterMenu: _propTypes.default.node,
109
108
  /**
110
109
  * It is `true` if the filter either has a value or an operator with no value
111
110
  * required is selected (e.g. `isEmpty`)
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _utils = require("@mui/utils");
14
14
  var _useGridRootProps = require("../../../hooks/utils/useGridRootProps");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
- const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "InputProps", "headerFilterMenu", "isFilterActive", "clearButton", "tabIndex", "disabled"];
16
+ const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "InputProps", "isFilterActive", "clearButton", "tabIndex", "disabled"];
17
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
  const SUBMIT_FILTER_DATE_STROKE_TIME = 500;
@@ -26,8 +26,6 @@ function GridFilterInputDate(props) {
26
26
  apiRef,
27
27
  focusElementRef,
28
28
  InputProps,
29
- headerFilterMenu,
30
- isFilterActive,
31
29
  clearButton,
32
30
  tabIndex,
33
31
  disabled
@@ -77,8 +75,6 @@ function GridFilterInputDate(props) {
77
75
  fontSize: "small",
78
76
  color: "action"
79
77
  }) : clearButton
80
- } : {}, headerFilterMenu && isFilterActive ? {
81
- startAdornment: headerFilterMenu
82
78
  } : {}, {
83
79
  disabled
84
80
  }, InputProps, {
@@ -100,7 +96,6 @@ process.env.NODE_ENV !== "production" ? GridFilterInputDate.propTypes = {
100
96
  applyValue: _propTypes.default.func.isRequired,
101
97
  clearButton: _propTypes.default.node,
102
98
  focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
103
- headerFilterMenu: _propTypes.default.node,
104
99
  /**
105
100
  * It is `true` if the filter either has a value or an operator with no value
106
101
  * required is selected (e.g. `isEmpty`)
@@ -14,7 +14,7 @@ var _styles = require("@mui/material/styles");
14
14
  var _useGridRootProps = require("../../../hooks/utils/useGridRootProps");
15
15
  var _filterPanelUtils = require("./filterPanelUtils");
16
16
  var _jsxRuntime = require("react/jsx-runtime");
17
- const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "getOptionLabel", "getOptionValue", "placeholder", "tabIndex", "label", "headerFilterMenu", "isFilterActive", "clearButton"];
17
+ const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "getOptionLabel", "getOptionValue", "placeholder", "tabIndex", "label", "isFilterActive", "clearButton"];
18
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
20
  const renderSingleSelectOptions = ({
@@ -44,7 +44,10 @@ const renderSingleSelectOptions = ({
44
44
  const SingleSelectOperatorContainer = (0, _styles.styled)('div')({
45
45
  display: 'flex',
46
46
  alignItems: 'flex-end',
47
- width: '100%'
47
+ width: '100%',
48
+ [`& button`]: {
49
+ margin: 'auto 0px 5px 5px'
50
+ }
48
51
  });
49
52
  function GridFilterInputSingleSelect(props) {
50
53
  const {
@@ -58,8 +61,6 @@ function GridFilterInputSingleSelect(props) {
58
61
  placeholder,
59
62
  tabIndex,
60
63
  label: labelProp,
61
- headerFilterMenu,
62
- isFilterActive,
63
64
  clearButton
64
65
  } = props,
65
66
  others = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
@@ -123,6 +124,7 @@ function GridFilterInputSingleSelect(props) {
123
124
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(rootProps.slots.baseFormControl, {
124
125
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseInputLabel, (0, _extends2.default)({}, rootProps.slotProps?.baseInputLabel, {
125
126
  id: labelId,
127
+ htmlFor: id,
126
128
  shrink: true,
127
129
  variant: "standard",
128
130
  children: label
@@ -132,7 +134,6 @@ function GridFilterInputSingleSelect(props) {
132
134
  labelId: labelId,
133
135
  value: filterValueState,
134
136
  onChange: onFilterChange,
135
- startAdornment: isFilterActive ? headerFilterMenu : null,
136
137
  variant: "standard",
137
138
  type: type || 'text',
138
139
  inputProps: {
@@ -177,7 +178,6 @@ process.env.NODE_ENV !== "production" ? GridFilterInputSingleSelect.propTypes =
177
178
  * @returns {string} The value to be used.
178
179
  */
179
180
  getOptionValue: _propTypes.default.func,
180
- headerFilterMenu: _propTypes.default.node,
181
181
  /**
182
182
  * It is `true` if the filter either has a value or an operator with no value
183
183
  * required is selected (e.g. `isEmpty`)
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _utils = require("@mui/utils");
14
14
  var _useGridRootProps = require("../../../hooks/utils/useGridRootProps");
15
15
  var _jsxRuntime = require("react/jsx-runtime");
16
- const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "tabIndex", "disabled", "headerFilterMenu", "isFilterActive", "clearButton", "InputProps"];
16
+ const _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "tabIndex", "disabled", "isFilterActive", "clearButton", "InputProps"];
17
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
  const SUBMIT_FILTER_STROKE_TIME = 500;
@@ -27,8 +27,6 @@ function GridFilterInputValue(props) {
27
27
  focusElementRef,
28
28
  tabIndex,
29
29
  disabled,
30
- headerFilterMenu,
31
- isFilterActive,
32
30
  clearButton,
33
31
  InputProps
34
32
  } = props,
@@ -74,8 +72,6 @@ function GridFilterInputValue(props) {
74
72
  fontSize: "small",
75
73
  color: "action"
76
74
  }) : clearButton
77
- } : {}, headerFilterMenu && isFilterActive ? {
78
- startAdornment: headerFilterMenu
79
75
  } : {}, {
80
76
  disabled
81
77
  }, InputProps, {
@@ -100,7 +96,6 @@ process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
100
96
  applyValue: _propTypes.default.func.isRequired,
101
97
  clearButton: _propTypes.default.node,
102
98
  focusElementRef: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.func, _propTypes.default.object]),
103
- headerFilterMenu: _propTypes.default.node,
104
99
  /**
105
100
  * It is `true` if the filter either has a value or an operator with no value
106
101
  * required is selected (e.g. `isEmpty`)
@@ -185,7 +185,15 @@ process.env.NODE_ENV !== "production" ? GridFilterPanel.propTypes = {
185
185
  * If not specified, the order is derived from the `columns` prop.
186
186
  */
187
187
  columnsSort: _propTypes.default.oneOf(['asc', 'desc']),
188
+ /**
189
+ * If `true`, the `Add filter` button will not be displayed.
190
+ * @default false
191
+ */
188
192
  disableAddFilterButton: _propTypes.default.bool,
193
+ /**
194
+ * If `true`, the `Remove all` button will be disabled
195
+ * @default false
196
+ */
189
197
  disableRemoveAllButton: _propTypes.default.bool,
190
198
  /**
191
199
  * Props passed to each filter form.
@@ -8,6 +8,7 @@ exports.GridToolbarColumnsButton = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _utils = require("@mui/material/utils");
11
12
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
12
13
  var _gridPreferencePanelSelector = require("../../hooks/features/preferencesPanel/gridPreferencePanelSelector");
13
14
  var _gridPreferencePanelsValue = require("../../hooks/features/preferencesPanel/gridPreferencePanelsValue");
@@ -22,17 +23,16 @@ const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridTool
22
23
  onClick
23
24
  } = props,
24
25
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
26
+ const columnButtonId = (0, _utils.unstable_useId)();
27
+ const columnPanelId = (0, _utils.unstable_useId)();
25
28
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
26
29
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
27
- const {
28
- open,
29
- openedPanelValue
30
- } = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
30
+ const preferencePanel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
31
31
  const showColumns = event => {
32
- if (open && openedPanelValue === _gridPreferencePanelsValue.GridPreferencePanelsValue.columns) {
32
+ if (preferencePanel.open && preferencePanel.openedPanelValue === _gridPreferencePanelsValue.GridPreferencePanelsValue.columns) {
33
33
  apiRef.current.hidePreferences();
34
34
  } else {
35
- apiRef.current.showPreferences(_gridPreferencePanelsValue.GridPreferencePanelsValue.columns);
35
+ apiRef.current.showPreferences(_gridPreferencePanelsValue.GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);
36
36
  }
37
37
  onClick?.(event);
38
38
  };
@@ -41,10 +41,15 @@ const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridTool
41
41
  if (rootProps.disableColumnSelector) {
42
42
  return null;
43
43
  }
44
+ const isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;
44
45
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseButton, (0, _extends2.default)({
45
46
  ref: ref,
47
+ id: columnButtonId,
46
48
  size: "small",
47
49
  "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
50
+ "aria-haspopup": "menu",
51
+ "aria-expanded": isOpen,
52
+ "aria-controls": isOpen ? columnPanelId : undefined,
48
53
  startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.columnSelectorIcon, {})
49
54
  }, other, {
50
55
  onClick: showColumns
@@ -101,9 +101,9 @@ const GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function GridTo
101
101
  size: "small",
102
102
  startIcon: startIcon,
103
103
  "aria-label": apiRef.current.getLocaleText('toolbarDensityLabel'),
104
- "aria-expanded": open ? 'true' : undefined,
105
104
  "aria-haspopup": "menu",
106
- "aria-controls": densityMenuId,
105
+ "aria-expanded": open,
106
+ "aria-controls": open ? densityMenuId : undefined,
107
107
  id: densityButtonId
108
108
  }, other, {
109
109
  onClick: handleDensitySelectorOpen
@@ -27,8 +27,8 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
27
27
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
28
28
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
29
29
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
30
- const buttonId = (0, _utils.unstable_useId)();
31
- const menuId = (0, _utils.unstable_useId)();
30
+ const exportButtonId = (0, _utils.unstable_useId)();
31
+ const exportMenuId = (0, _utils.unstable_useId)();
32
32
  const [open, setOpen] = React.useState(false);
33
33
  const buttonRef = React.useRef(null);
34
34
  const handleRef = (0, _utils.unstable_useForkRef)(ref, buttonRef);
@@ -61,11 +61,11 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
61
61
  ref: handleRef,
62
62
  size: "small",
63
63
  startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.exportIcon, {}),
64
- "aria-expanded": open ? 'true' : undefined,
64
+ "aria-expanded": open,
65
65
  "aria-label": apiRef.current.getLocaleText('toolbarExportLabel'),
66
66
  "aria-haspopup": "menu",
67
- "aria-labelledby": menuId,
68
- id: buttonId
67
+ "aria-controls": open ? exportMenuId : undefined,
68
+ id: exportButtonId
69
69
  }, other, {
70
70
  onClick: handleMenuOpen
71
71
  }, rootProps.slotProps?.baseButton, {
@@ -76,9 +76,9 @@ const GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function GridTo
76
76
  onClickAway: handleMenuClickAway,
77
77
  position: "bottom-start",
78
78
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuList.default, {
79
- id: menuId,
79
+ id: exportMenuId,
80
80
  className: _gridClasses.gridClasses.menuList,
81
- "aria-labelledby": buttonId,
81
+ "aria-labelledby": exportButtonId,
82
82
  onKeyDown: handleListKeyDown,
83
83
  autoFocusItem: open,
84
84
  children: React.Children.map(children, child => {
@@ -36,7 +36,7 @@ const useUtilityClasses = ownerState => {
36
36
  const GridToolbarFilterListRoot = (0, _styles.styled)('ul', {
37
37
  name: 'MuiDataGrid',
38
38
  slot: 'ToolbarFilterList',
39
- overridesResolver: (props, styles) => styles.toolbarFilterList
39
+ overridesResolver: (_props, styles) => styles.toolbarFilterList
40
40
  })(({
41
41
  theme
42
42
  }) => ({
@@ -55,6 +55,8 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
55
55
  const lookup = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridColumnLookupSelector);
56
56
  const preferencePanel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPreferencePanelSelector.gridPreferencePanelStateSelector);
57
57
  const classes = useUtilityClasses(rootProps);
58
+ const filterButtonId = (0, _utils.unstable_useId)();
59
+ const filterPanelId = (0, _utils.unstable_useId)();
58
60
  const tooltipContentNode = React.useMemo(() => {
59
61
  if (preferencePanel.open) {
60
62
  return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
@@ -89,9 +91,9 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
89
91
  openedPanelValue
90
92
  } = preferencePanel;
91
93
  if (open && openedPanelValue === _gridPreferencePanelsValue.GridPreferencePanelsValue.filters) {
92
- apiRef.current.hideFilterPanel();
94
+ apiRef.current.hidePreferences();
93
95
  } else {
94
- apiRef.current.showFilterPanel();
96
+ apiRef.current.showPreferences(_gridPreferencePanelsValue.GridPreferencePanelsValue.filters, filterPanelId, filterButtonId);
95
97
  }
96
98
  buttonProps.onClick?.(event);
97
99
  };
@@ -100,14 +102,19 @@ const GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolb
100
102
  if (rootProps.disableColumnFilter) {
101
103
  return null;
102
104
  }
105
+ const isOpen = preferencePanel.open && preferencePanel.panelId === filterPanelId;
103
106
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseTooltip, (0, _extends2.default)({
104
107
  title: tooltipContentNode,
105
108
  enterDelay: 1000
106
109
  }, other, rootProps.slotProps?.baseTooltip, {
107
110
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseButton, (0, _extends2.default)({
108
111
  ref: ref,
112
+ id: filterButtonId,
109
113
  size: "small",
110
114
  "aria-label": apiRef.current.getLocaleText('toolbarFiltersLabel'),
115
+ "aria-controls": isOpen ? filterPanelId : undefined,
116
+ "aria-expanded": isOpen,
117
+ "aria-haspopup": true,
111
118
  startIcon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Badge.default, {
112
119
  badgeContent: activeFilters.length,
113
120
  color: "primary",
@@ -9,5 +9,5 @@ var _utils = require("@mui/utils");
9
9
  function getDataGridUtilityClass(slot) {
10
10
  return (0, _utils.unstable_generateUtilityClass)('MuiDataGrid', slot);
11
11
  }
12
- const gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
12
+ const gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
13
13
  exports.gridClasses = gridClasses;
@@ -86,10 +86,10 @@ const GRID_DEFAULT_LOCALE_TEXT = {
86
86
  headerFilterOperatorIsAnyOf: 'Is any of',
87
87
  'headerFilterOperator=': 'Equals',
88
88
  'headerFilterOperator!=': 'Not equals',
89
- 'headerFilterOperator>': 'Is greater than',
90
- 'headerFilterOperator>=': 'Is greater than or equal to',
91
- 'headerFilterOperator<': 'Is less than',
92
- 'headerFilterOperator<=': 'Is less than or equal to',
89
+ 'headerFilterOperator>': 'Greater than',
90
+ 'headerFilterOperator>=': 'Greater than or equal to',
91
+ 'headerFilterOperator<': 'Less than',
92
+ 'headerFilterOperator<=': 'Less than or equal to',
93
93
  // Filter values text
94
94
  filterValueAny: 'any',
95
95
  filterValueTrue: 'true',
@@ -16,7 +16,8 @@ exports.GRID_DEFAULT_STRATEGY = GRID_DEFAULT_STRATEGY;
16
16
  const GRID_STRATEGIES_PROCESSORS = {
17
17
  rowTreeCreation: 'rowTree',
18
18
  filtering: 'rowTree',
19
- sorting: 'rowTree'
19
+ sorting: 'rowTree',
20
+ visibleRowsLookupCreation: 'rowTree'
20
21
  };
21
22
  exports.GRID_STRATEGIES_PROCESSORS = GRID_STRATEGIES_PROCESSORS;
22
23
  /**
@@ -27,11 +27,11 @@ exports.gridFilterModelSelector = gridFilterModelSelector;
27
27
  const gridQuickFilterValuesSelector = (0, _createSelector.createSelector)(gridFilterModelSelector, filterModel => filterModel.quickFilterValues);
28
28
 
29
29
  /**
30
- * @category Filtering
30
+ * @category Visible rows
31
31
  * @ignore - do not document.
32
32
  */
33
33
  exports.gridQuickFilterValuesSelector = gridQuickFilterValuesSelector;
34
- const gridVisibleRowsLookupSelector = (0, _createSelector.createSelector)(gridFilterStateSelector, filterState => filterState.visibleRowsLookup);
34
+ const gridVisibleRowsLookupSelector = state => state.visibleRowsLookup;
35
35
 
36
36
  /**
37
37
  * @category Filtering
@@ -16,4 +16,10 @@ const getDefaultGridFilterModel = () => ({
16
16
  * @param {GridRowId} rowId The id of the row we want to filter.
17
17
  * @param {(filterItem: GridFilterItem) => boolean} shouldApplyItem An optional callback to allow the filtering engine to only apply some items.
18
18
  */
19
+
20
+ /**
21
+ * Visibility status for each row.
22
+ * A row is visible if it is passing the filters AND if its parents are expanded.
23
+ * If a row is not registered in this lookup, it is visible.
24
+ */
19
25
  exports.getDefaultGridFilterModel = getDefaultGridFilterModel;
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useGridFilter = exports.filterStateInitializer = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
+ var _utils = require("@mui/utils");
10
11
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
11
12
  var _useGridApiMethod = require("../../utils/useGridApiMethod");
12
13
  var _useGridLogger = require("../../utils/useGridLogger");
@@ -19,7 +20,7 @@ var _rows = require("../rows");
19
20
  var _pipeProcessing = require("../../core/pipeProcessing");
20
21
  var _strategyProcessing = require("../../core/strategyProcessing");
21
22
  var _gridFilterUtils = require("./gridFilterUtils");
22
- var _utils = require("../../../utils/utils");
23
+ var _utils2 = require("../../../utils/utils");
23
24
  var _jsxRuntime = require("react/jsx-runtime");
24
25
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -28,18 +29,28 @@ const filterStateInitializer = (state, props, apiRef) => {
28
29
  return (0, _extends2.default)({}, state, {
29
30
  filter: {
30
31
  filterModel: (0, _gridFilterUtils.sanitizeFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef),
31
- visibleRowsLookup: {},
32
32
  filteredDescendantCountLookup: {}
33
- }
33
+ },
34
+ visibleRowsLookup: {}
34
35
  });
35
36
  };
37
+ exports.filterStateInitializer = filterStateInitializer;
38
+ const getVisibleRowsLookup = params => {
39
+ // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.
40
+ return params.filteredRowsLookup;
41
+ };
42
+ function getVisibleRowsLookupState(apiRef, state) {
43
+ return apiRef.current.applyStrategyProcessor('visibleRowsLookupCreation', {
44
+ tree: state.rows.tree,
45
+ filteredRowsLookup: state.filter.filteredRowsLookup
46
+ });
47
+ }
36
48
 
37
49
  /**
38
50
  * @requires useGridColumns (method, event)
39
51
  * @requires useGridParamsApi (method)
40
52
  * @requires useGridRows (event)
41
53
  */
42
- exports.filterStateInitializer = filterStateInitializer;
43
54
  const useGridFilter = (apiRef, props) => {
44
55
  const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridFilter');
45
56
  apiRef.current.registerControlState({
@@ -57,9 +68,13 @@ const useGridFilter = (apiRef, props) => {
57
68
  isRowMatchingFilters,
58
69
  filterModel: filterModel ?? (0, _gridFilterState.getDefaultGridFilterModel)()
59
70
  });
60
- return (0, _extends2.default)({}, state, {
71
+ const newState = (0, _extends2.default)({}, state, {
61
72
  filter: (0, _extends2.default)({}, state.filter, filteringResult)
62
73
  });
74
+ const visibleRowsLookupState = getVisibleRowsLookupState(apiRef, newState);
75
+ return (0, _extends2.default)({}, newState, {
76
+ visibleRowsLookup: visibleRowsLookupState
77
+ });
63
78
  });
64
79
  apiRef.current.publishEvent('filteredRowsSet');
65
80
  }, [props.filterMode, apiRef]);
@@ -115,7 +130,7 @@ const useGridFilter = (apiRef, props) => {
115
130
  items
116
131
  }), 'deleteFilterItem');
117
132
  }, [apiRef]);
118
- const showFilterPanel = React.useCallback(targetColumnField => {
133
+ const showFilterPanel = React.useCallback((targetColumnField, panelId, labelId) => {
119
134
  logger.debug('Displaying filter panel');
120
135
  if (targetColumnField) {
121
136
  const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
@@ -160,7 +175,7 @@ const useGridFilter = (apiRef, props) => {
160
175
  items: newFilterItems
161
176
  }));
162
177
  }
163
- apiRef.current.showPreferences(_gridPreferencePanelsValue.GridPreferencePanelsValue.filters);
178
+ apiRef.current.showPreferences(_gridPreferencePanelsValue.GridPreferencePanelsValue.filters, panelId, labelId);
164
179
  }, [apiRef, logger, props.disableMultipleColumnsFiltering]);
165
180
  const hideFilterPanel = React.useCallback(() => {
166
181
  logger.debug('Hiding filter panel');
@@ -177,7 +192,7 @@ const useGridFilter = (apiRef, props) => {
177
192
  }, [apiRef]);
178
193
  const setQuickFilterValues = React.useCallback(values => {
179
194
  const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
180
- if ((0, _utils.isDeepEqual)(filterModel.quickFilterValues, values)) {
195
+ if ((0, _utils2.isDeepEqual)(filterModel.quickFilterValues, values)) {
181
196
  return;
182
197
  }
183
198
  apiRef.current.setFilterModel((0, _extends2.default)({}, filterModel, {
@@ -218,7 +233,7 @@ const useGridFilter = (apiRef, props) => {
218
233
  // Always export if the model has been initialized
219
234
  props.initialState?.filter?.filterModel != null ||
220
235
  // Export if the model is not equal to the default value
221
- !(0, _utils.isDeepEqual)(filterModelToExport, (0, _gridFilterState.getDefaultGridFilterModel)());
236
+ !(0, _utils2.isDeepEqual)(filterModelToExport, (0, _gridFilterState.getDefaultGridFilterModel)());
222
237
  if (!shouldExportFilterModel) {
223
238
  return prevState;
224
239
  }
@@ -266,13 +281,10 @@ const useGridFilter = (apiRef, props) => {
266
281
  }
267
282
  return {
268
283
  filteredRowsLookup,
269
- // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.
270
- visibleRowsLookup: filteredRowsLookup,
271
284
  filteredDescendantCountLookup: {}
272
285
  };
273
286
  }
274
287
  return {
275
- visibleRowsLookup: {},
276
288
  filteredRowsLookup: {},
277
289
  filteredDescendantCountLookup: {}
278
290
  };
@@ -282,6 +294,7 @@ const useGridFilter = (apiRef, props) => {
282
294
  (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
283
295
  (0, _pipeProcessing.useGridRegisterPipeProcessor)(apiRef, 'preferencePanel', preferencePanelPreProcessing);
284
296
  (0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
297
+ (0, _strategyProcessing.useGridRegisterStrategyProcessor)(apiRef, _strategyProcessing.GRID_DEFAULT_STRATEGY, 'visibleRowsLookupCreation', getVisibleRowsLookup);
285
298
 
286
299
  /**
287
300
  * EVENTS
@@ -302,13 +315,21 @@ const useGridFilter = (apiRef, props) => {
302
315
  apiRef.current.unstable_applyFilters();
303
316
  }
304
317
  }, [apiRef]);
318
+ const updateVisibleRowsLookupState = React.useCallback(() => {
319
+ apiRef.current.setState(state => {
320
+ return (0, _extends2.default)({}, state, {
321
+ visibleRowsLookup: getVisibleRowsLookupState(apiRef, state)
322
+ });
323
+ });
324
+ apiRef.current.forceUpdate();
325
+ }, [apiRef]);
305
326
 
306
327
  // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
307
328
  // Otherwise, the state is not consistent during the render
308
329
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowsSet', updateFilteredRows);
309
- (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
310
330
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnsChange', handleColumnsChange);
311
331
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
332
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);
312
333
 
313
334
  /**
314
335
  * 1ST RENDER
@@ -320,7 +341,7 @@ const useGridFilter = (apiRef, props) => {
320
341
  /**
321
342
  * EFFECTS
322
343
  */
323
- React.useEffect(() => {
344
+ (0, _utils.unstable_useEnhancedEffect)(() => {
324
345
  if (props.filterModel !== undefined) {
325
346
  apiRef.current.setFilterModel(props.filterModel);
326
347
  }
@@ -360,6 +360,7 @@ const useGridFocus = (apiRef, props) => {
360
360
  };
361
361
  }, [apiRef, handleDocumentClick]);
362
362
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderBlur', handleBlur);
363
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'headerFilterBlur', handleBlur);
363
364
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellDoubleClick', handleCellDoubleClick);
364
365
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellMouseDown', handleCellMouseDown);
365
366
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'cellKeyDown', handleCellKeyDown);
@@ -58,13 +58,15 @@ const useGridPreferencesPanel = (apiRef, props) => {
58
58
  const hidePreferencesDelayed = React.useCallback(() => {
59
59
  hideTimeout.current = setTimeout(hidePreferences, 100);
60
60
  }, [hidePreferences]);
61
- const showPreferences = React.useCallback(newValue => {
61
+ const showPreferences = React.useCallback((newValue, panelId, labelId) => {
62
62
  logger.debug('Opening Preferences Panel');
63
63
  doNotHidePanel();
64
64
  apiRef.current.setState(state => (0, _extends2.default)({}, state, {
65
65
  preferencePanel: (0, _extends2.default)({}, state.preferencePanel, {
66
66
  open: true,
67
- openedPanelValue: newValue
67
+ openedPanelValue: newValue,
68
+ panelId,
69
+ labelId
68
70
  })
69
71
  }));
70
72
  apiRef.current.publishEvent('preferencePanelOpen', {