@mui/x-data-grid 6.4.0 → 6.6.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 (403) hide show
  1. package/CHANGELOG.md +134 -2
  2. package/DataGrid/DataGrid.js +10 -3
  3. package/DataGrid/useDataGridProps.js +5 -12
  4. package/README.md +2 -2
  5. package/colDef/gridNumericOperators.js +0 -6
  6. package/components/GridColumnHeaders.js +4 -9
  7. package/components/GridHeader.d.ts +2 -2
  8. package/components/base/GridBody.d.ts +1 -1
  9. package/components/base/GridFooterPlaceholder.d.ts +2 -2
  10. package/components/base/GridOverlays.d.ts +2 -2
  11. package/components/cell/GridActionsCell.d.ts +3 -3
  12. package/components/cell/GridActionsCell.js +3 -3
  13. package/components/cell/GridBooleanCell.d.ts +1 -1
  14. package/components/cell/GridEditBooleanCell.d.ts +2 -2
  15. package/components/cell/GridEditDateCell.d.ts +2 -2
  16. package/components/cell/GridEditInputCell.d.ts +1 -1
  17. package/components/cell/GridEditInputCell.js +4 -1
  18. package/components/cell/GridEditSingleSelectCell.d.ts +3 -3
  19. package/components/cell/GridEditSingleSelectCell.js +5 -5
  20. package/components/cell/GridSkeletonCell.d.ts +1 -1
  21. package/components/columnHeaders/ColumnHeaderMenuIcon.d.ts +1 -1
  22. package/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  23. package/components/columnHeaders/GridColumnGroupHeader.d.ts +2 -2
  24. package/components/columnHeaders/GridColumnHeaderFilterIconButton.d.ts +1 -1
  25. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
  26. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -2
  27. package/components/columnHeaders/GridColumnHeaderSeparator.d.ts +1 -1
  28. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -1
  29. package/components/columnHeaders/GridColumnHeaderTitle.d.ts +1 -1
  30. package/components/containers/GridRoot.js +1 -3
  31. package/components/index.d.ts +0 -1
  32. package/components/index.js +1 -2
  33. package/components/menu/GridMenu.d.ts +1 -1
  34. package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
  35. package/components/menu/columnMenu/menuItems/GridColumnMenuColumnsItem.d.ts +2 -2
  36. package/components/menu/columnMenu/menuItems/GridColumnMenuFilterItem.d.ts +2 -2
  37. package/components/menu/columnMenu/menuItems/GridColumnMenuHideItem.d.ts +2 -2
  38. package/components/menu/columnMenu/menuItems/GridColumnMenuManageItem.d.ts +2 -2
  39. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.d.ts +2 -2
  40. package/components/panel/GridColumnsPanel.d.ts +2 -2
  41. package/components/panel/GridPanelContent.d.ts +1 -1
  42. package/components/panel/GridPanelFooter.d.ts +1 -1
  43. package/components/panel/GridPanelHeader.d.ts +1 -1
  44. package/components/panel/GridPreferencesPanel.js +3 -1
  45. package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +15 -2
  46. package/components/panel/filterPanel/GridFilterInputBoolean.js +80 -36
  47. package/components/panel/filterPanel/GridFilterInputDate.d.ts +9 -2
  48. package/components/panel/filterPanel/GridFilterInputDate.js +27 -6
  49. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.d.ts +2 -2
  50. package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +2 -2
  51. package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +9 -2
  52. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +56 -32
  53. package/components/panel/filterPanel/GridFilterInputValue.d.ts +11 -4
  54. package/components/panel/filterPanel/GridFilterInputValue.js +29 -6
  55. package/components/panel/filterPanel/GridFilterPanel.d.ts +2 -1
  56. package/components/panel/filterPanel/GridFilterPanel.js +1 -1
  57. package/components/panel/filterPanel/index.d.ts +3 -1
  58. package/components/panel/filterPanel/index.js +2 -1
  59. package/components/toolbar/GridToolbarColumnsButton.js +11 -6
  60. package/components/toolbar/GridToolbarDensitySelector.js +2 -2
  61. package/components/toolbar/GridToolbarExport.d.ts +2 -2
  62. package/components/toolbar/GridToolbarExportContainer.js +7 -7
  63. package/components/toolbar/GridToolbarFilterButton.js +11 -4
  64. package/components/toolbar/GridToolbarQuickFilter.d.ts +2 -2
  65. package/constants/localeTextConstants.js +26 -0
  66. package/context/GridContextProvider.d.ts +1 -1
  67. package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +10 -2
  68. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  69. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +10 -3
  70. package/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
  71. package/hooks/features/dimensions/useGridDimensions.js +2 -2
  72. package/hooks/features/editing/useGridEditing.js +0 -3
  73. package/hooks/features/filter/gridFilterSelector.d.ts +2 -2
  74. package/hooks/features/filter/gridFilterSelector.js +2 -2
  75. package/hooks/features/filter/gridFilterState.d.ts +6 -6
  76. package/hooks/features/filter/gridFilterState.js +6 -0
  77. package/hooks/features/filter/useGridFilter.js +29 -9
  78. package/hooks/features/focus/gridFocusState.d.ts +2 -0
  79. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -0
  80. package/hooks/features/focus/gridFocusStateSelector.js +6 -0
  81. package/hooks/features/focus/useGridFocus.js +55 -9
  82. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +4 -0
  83. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +5 -0
  84. package/hooks/features/headerFiltering/index.d.ts +1 -0
  85. package/hooks/features/headerFiltering/index.js +1 -0
  86. package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +6 -0
  87. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +91 -0
  88. package/hooks/features/index.d.ts +1 -0
  89. package/hooks/features/index.js +2 -1
  90. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  91. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
  92. package/hooks/features/preferencesPanel/gridPreferencePanelState.d.ts +2 -0
  93. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  94. package/hooks/features/rows/useGridRows.js +16 -1
  95. package/hooks/features/rows/useGridRowsMeta.js +11 -12
  96. package/index.js +1 -1
  97. package/internals/index.d.ts +6 -1
  98. package/internals/index.js +4 -0
  99. package/internals/utils/index.d.ts +1 -0
  100. package/internals/utils/index.js +2 -1
  101. package/internals/utils/useProps.d.ts +8 -0
  102. package/internals/utils/useProps.js +33 -0
  103. package/legacy/DataGrid/DataGrid.js +10 -3
  104. package/legacy/DataGrid/useDataGridProps.js +8 -8
  105. package/legacy/colDef/gridNumericOperators.js +0 -6
  106. package/legacy/components/GridColumnHeaders.js +4 -9
  107. package/legacy/components/cell/GridActionsCell.js +3 -3
  108. package/legacy/components/cell/GridEditInputCell.js +4 -1
  109. package/legacy/components/cell/GridEditSingleSelectCell.js +5 -5
  110. package/legacy/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  111. package/legacy/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
  112. package/legacy/components/containers/GridRoot.js +1 -3
  113. package/legacy/components/index.js +1 -2
  114. package/legacy/components/panel/GridPreferencesPanel.js +3 -1
  115. package/legacy/components/panel/filterPanel/GridFilterInputBoolean.js +79 -35
  116. package/legacy/components/panel/filterPanel/GridFilterInputDate.js +26 -5
  117. package/legacy/components/panel/filterPanel/GridFilterInputSingleSelect.js +55 -31
  118. package/legacy/components/panel/filterPanel/GridFilterInputValue.js +28 -5
  119. package/legacy/components/panel/filterPanel/GridFilterPanel.js +1 -1
  120. package/legacy/components/panel/filterPanel/index.js +2 -1
  121. package/legacy/components/toolbar/GridToolbarColumnsButton.js +11 -5
  122. package/legacy/components/toolbar/GridToolbarDensitySelector.js +2 -2
  123. package/legacy/components/toolbar/GridToolbarExportContainer.js +7 -7
  124. package/legacy/components/toolbar/GridToolbarFilterButton.js +11 -4
  125. package/legacy/constants/localeTextConstants.js +26 -0
  126. package/legacy/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  127. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -5
  128. package/legacy/hooks/features/dimensions/useGridDimensions.js +2 -2
  129. package/legacy/hooks/features/editing/useGridEditing.js +0 -3
  130. package/legacy/hooks/features/filter/gridFilterSelector.js +4 -4
  131. package/legacy/hooks/features/filter/gridFilterState.js +6 -0
  132. package/legacy/hooks/features/filter/useGridFilter.js +29 -9
  133. package/legacy/hooks/features/focus/gridFocusStateSelector.js +10 -0
  134. package/legacy/hooks/features/focus/useGridFocus.js +58 -9
  135. package/legacy/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +11 -0
  136. package/legacy/hooks/features/headerFiltering/index.js +1 -0
  137. package/legacy/hooks/features/headerFiltering/useGridHeaderFiltering.js +93 -0
  138. package/legacy/hooks/features/index.js +2 -1
  139. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
  140. package/legacy/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  141. package/legacy/hooks/features/rows/useGridRows.js +16 -1
  142. package/legacy/hooks/features/rows/useGridRowsMeta.js +12 -20
  143. package/legacy/index.js +1 -1
  144. package/legacy/internals/index.js +4 -0
  145. package/legacy/internals/utils/index.js +2 -1
  146. package/legacy/internals/utils/useProps.js +33 -0
  147. package/legacy/locales/arSD.js +28 -0
  148. package/legacy/locales/beBY.js +28 -0
  149. package/legacy/locales/bgBG.js +28 -0
  150. package/legacy/locales/csCZ.js +36 -8
  151. package/legacy/locales/daDK.js +28 -0
  152. package/legacy/locales/deDE.js +28 -0
  153. package/legacy/locales/elGR.js +27 -0
  154. package/legacy/locales/esES.js +28 -0
  155. package/legacy/locales/faIR.js +28 -0
  156. package/legacy/locales/fiFI.js +28 -0
  157. package/legacy/locales/frFR.js +26 -0
  158. package/legacy/locales/heIL.js +30 -2
  159. package/legacy/locales/huHU.js +28 -0
  160. package/legacy/locales/itIT.js +28 -0
  161. package/legacy/locales/jaJP.js +28 -0
  162. package/legacy/locales/koKR.js +28 -0
  163. package/legacy/locales/nbNO.js +28 -0
  164. package/legacy/locales/nlNL.js +26 -0
  165. package/legacy/locales/plPL.js +28 -0
  166. package/legacy/locales/ptBR.js +28 -0
  167. package/legacy/locales/roRO.js +28 -0
  168. package/legacy/locales/ruRU.js +28 -0
  169. package/legacy/locales/skSK.js +28 -0
  170. package/legacy/locales/svSE.js +28 -0
  171. package/legacy/locales/trTR.js +28 -0
  172. package/legacy/locales/ukUA.js +28 -0
  173. package/legacy/locales/urPK.js +28 -0
  174. package/legacy/locales/viVN.js +27 -0
  175. package/legacy/locales/zhCN.js +28 -0
  176. package/legacy/locales/zhTW.js +28 -0
  177. package/legacy/material/index.js +2 -0
  178. package/legacy/models/api/gridHeaderFilteringApi.js +1 -0
  179. package/legacy/models/gridFilterItem.js +1 -1
  180. package/legacy/models/gridHeaderFilteringModel.js +1 -0
  181. package/legacy/models/index.js +0 -1
  182. package/locales/arSD.js +28 -0
  183. package/locales/beBY.js +28 -0
  184. package/locales/bgBG.js +28 -0
  185. package/locales/csCZ.js +36 -8
  186. package/locales/daDK.js +28 -0
  187. package/locales/deDE.js +28 -0
  188. package/locales/elGR.js +27 -0
  189. package/locales/esES.js +28 -0
  190. package/locales/faIR.js +28 -0
  191. package/locales/fiFI.js +28 -0
  192. package/locales/frFR.js +26 -0
  193. package/locales/heIL.js +30 -2
  194. package/locales/huHU.js +28 -0
  195. package/locales/itIT.js +28 -0
  196. package/locales/jaJP.js +28 -0
  197. package/locales/koKR.js +28 -0
  198. package/locales/nbNO.js +28 -0
  199. package/locales/nlNL.js +26 -0
  200. package/locales/plPL.js +28 -0
  201. package/locales/ptBR.js +28 -0
  202. package/locales/roRO.js +28 -0
  203. package/locales/ruRU.js +28 -0
  204. package/locales/skSK.js +28 -0
  205. package/locales/svSE.js +28 -0
  206. package/locales/trTR.js +28 -0
  207. package/locales/ukUA.js +28 -0
  208. package/locales/urPK.js +28 -0
  209. package/locales/viVN.js +27 -0
  210. package/locales/zhCN.js +28 -0
  211. package/locales/zhTW.js +28 -0
  212. package/material/components/MUISelectOption.d.ts +2 -2
  213. package/material/index.d.ts +3 -66
  214. package/material/index.js +2 -0
  215. package/models/api/gridApiCommon.d.ts +3 -2
  216. package/models/api/gridCoreApi.d.ts +4 -0
  217. package/models/api/gridFilterApi.d.ts +3 -1
  218. package/models/api/gridFocusApi.d.ts +6 -0
  219. package/models/api/gridHeaderFilteringApi.d.ts +30 -0
  220. package/models/api/gridHeaderFilteringApi.js +1 -0
  221. package/models/api/gridLocaleTextApi.d.ts +25 -0
  222. package/models/api/gridPreferencesPanelApi.d.ts +3 -1
  223. package/models/events/gridEventLookup.d.ts +27 -1
  224. package/models/gridFilterItem.d.ts +1 -1
  225. package/models/gridFilterItem.js +1 -1
  226. package/models/gridFilterOperator.d.ts +5 -1
  227. package/models/gridHeaderFilteringModel.d.ts +5 -0
  228. package/models/gridHeaderFilteringModel.js +1 -0
  229. package/models/gridSlotsComponent.d.ts +16 -4
  230. package/models/gridStateCommunity.d.ts +4 -0
  231. package/models/index.d.ts +1 -1
  232. package/models/index.js +0 -1
  233. package/models/props/DataGridProps.d.ts +5 -0
  234. package/modern/DataGrid/DataGrid.js +10 -3
  235. package/modern/DataGrid/useDataGridProps.js +5 -12
  236. package/modern/colDef/gridNumericOperators.js +0 -6
  237. package/modern/components/GridColumnHeaders.js +4 -9
  238. package/modern/components/cell/GridActionsCell.js +3 -3
  239. package/modern/components/cell/GridEditInputCell.js +4 -1
  240. package/modern/components/cell/GridEditSingleSelectCell.js +5 -5
  241. package/modern/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  242. package/modern/components/columnHeaders/GridColumnHeaderFilterIconButton.js +13 -4
  243. package/modern/components/containers/GridRoot.js +1 -3
  244. package/modern/components/index.js +1 -2
  245. package/modern/components/panel/GridPreferencesPanel.js +3 -1
  246. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +80 -36
  247. package/modern/components/panel/filterPanel/GridFilterInputDate.js +27 -6
  248. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +56 -32
  249. package/modern/components/panel/filterPanel/GridFilterInputValue.js +29 -6
  250. package/modern/components/panel/filterPanel/GridFilterPanel.js +1 -1
  251. package/modern/components/panel/filterPanel/index.js +2 -1
  252. package/modern/components/toolbar/GridToolbarColumnsButton.js +11 -6
  253. package/modern/components/toolbar/GridToolbarDensitySelector.js +2 -2
  254. package/modern/components/toolbar/GridToolbarExportContainer.js +7 -7
  255. package/modern/components/toolbar/GridToolbarFilterButton.js +11 -4
  256. package/modern/constants/localeTextConstants.js +26 -0
  257. package/modern/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  258. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
  259. package/modern/hooks/features/dimensions/useGridDimensions.js +2 -2
  260. package/modern/hooks/features/editing/useGridEditing.js +0 -3
  261. package/modern/hooks/features/filter/gridFilterSelector.js +2 -2
  262. package/modern/hooks/features/filter/gridFilterState.js +6 -0
  263. package/modern/hooks/features/filter/useGridFilter.js +29 -9
  264. package/modern/hooks/features/focus/gridFocusStateSelector.js +6 -0
  265. package/modern/hooks/features/focus/useGridFocus.js +55 -9
  266. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +5 -0
  267. package/modern/hooks/features/headerFiltering/index.js +1 -0
  268. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +90 -0
  269. package/modern/hooks/features/index.js +2 -1
  270. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
  271. package/modern/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  272. package/modern/hooks/features/rows/useGridRows.js +16 -1
  273. package/modern/hooks/features/rows/useGridRowsMeta.js +11 -12
  274. package/modern/index.js +1 -1
  275. package/modern/internals/index.js +4 -0
  276. package/modern/internals/utils/index.js +2 -1
  277. package/modern/internals/utils/useProps.js +32 -0
  278. package/modern/locales/arSD.js +28 -0
  279. package/modern/locales/beBY.js +28 -0
  280. package/modern/locales/bgBG.js +28 -0
  281. package/modern/locales/csCZ.js +36 -8
  282. package/modern/locales/daDK.js +28 -0
  283. package/modern/locales/deDE.js +28 -0
  284. package/modern/locales/elGR.js +27 -0
  285. package/modern/locales/esES.js +28 -0
  286. package/modern/locales/faIR.js +28 -0
  287. package/modern/locales/fiFI.js +28 -0
  288. package/modern/locales/frFR.js +26 -0
  289. package/modern/locales/heIL.js +30 -2
  290. package/modern/locales/huHU.js +28 -0
  291. package/modern/locales/itIT.js +28 -0
  292. package/modern/locales/jaJP.js +28 -0
  293. package/modern/locales/koKR.js +28 -0
  294. package/modern/locales/nbNO.js +28 -0
  295. package/modern/locales/nlNL.js +26 -0
  296. package/modern/locales/plPL.js +28 -0
  297. package/modern/locales/ptBR.js +28 -0
  298. package/modern/locales/roRO.js +28 -0
  299. package/modern/locales/ruRU.js +28 -0
  300. package/modern/locales/skSK.js +28 -0
  301. package/modern/locales/svSE.js +28 -0
  302. package/modern/locales/trTR.js +28 -0
  303. package/modern/locales/ukUA.js +28 -0
  304. package/modern/locales/urPK.js +28 -0
  305. package/modern/locales/viVN.js +27 -0
  306. package/modern/locales/zhCN.js +28 -0
  307. package/modern/locales/zhTW.js +28 -0
  308. package/modern/material/index.js +2 -0
  309. package/modern/models/api/gridHeaderFilteringApi.js +1 -0
  310. package/modern/models/gridFilterItem.js +1 -1
  311. package/modern/models/gridHeaderFilteringModel.js +1 -0
  312. package/modern/models/index.js +0 -1
  313. package/node/DataGrid/DataGrid.js +10 -3
  314. package/node/DataGrid/useDataGridProps.js +4 -11
  315. package/node/colDef/gridNumericOperators.js +0 -6
  316. package/node/components/GridColumnHeaders.js +3 -8
  317. package/node/components/cell/GridActionsCell.js +3 -3
  318. package/node/components/cell/GridEditInputCell.js +4 -1
  319. package/node/components/cell/GridEditSingleSelectCell.js +5 -5
  320. package/node/components/columnHeaders/ColumnHeaderMenuIcon.js +3 -3
  321. package/node/components/columnHeaders/GridColumnHeaderFilterIconButton.js +12 -3
  322. package/node/components/containers/GridRoot.js +1 -3
  323. package/node/components/index.js +0 -11
  324. package/node/components/panel/GridPreferencesPanel.js +3 -1
  325. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +78 -35
  326. package/node/components/panel/filterPanel/GridFilterInputDate.js +27 -6
  327. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +56 -32
  328. package/node/components/panel/filterPanel/GridFilterInputValue.js +29 -6
  329. package/node/components/panel/filterPanel/GridFilterPanel.js +2 -1
  330. package/node/components/panel/filterPanel/index.js +26 -8
  331. package/node/components/toolbar/GridToolbarColumnsButton.js +11 -6
  332. package/node/components/toolbar/GridToolbarDensitySelector.js +2 -2
  333. package/node/components/toolbar/GridToolbarExportContainer.js +7 -7
  334. package/node/components/toolbar/GridToolbarFilterButton.js +10 -3
  335. package/node/constants/localeTextConstants.js +26 -0
  336. package/node/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  337. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -2
  338. package/node/hooks/features/dimensions/useGridDimensions.js +2 -2
  339. package/node/hooks/features/editing/useGridEditing.js +0 -3
  340. package/node/hooks/features/filter/gridFilterSelector.js +2 -2
  341. package/node/hooks/features/filter/gridFilterState.js +6 -0
  342. package/node/hooks/features/filter/useGridFilter.js +30 -10
  343. package/node/hooks/features/focus/gridFocusStateSelector.js +9 -1
  344. package/node/hooks/features/focus/useGridFocus.js +55 -9
  345. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +15 -0
  346. package/node/hooks/features/headerFiltering/index.js +16 -0
  347. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +101 -0
  348. package/node/hooks/features/index.js +11 -0
  349. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +113 -4
  350. package/node/hooks/features/preferencesPanel/useGridPreferencesPanel.js +4 -2
  351. package/node/hooks/features/rows/useGridRows.js +16 -1
  352. package/node/hooks/features/rows/useGridRowsMeta.js +11 -12
  353. package/node/index.js +1 -1
  354. package/node/internals/index.js +46 -0
  355. package/node/internals/utils/index.js +11 -0
  356. package/node/internals/utils/useProps.js +41 -0
  357. package/node/locales/arSD.js +28 -0
  358. package/node/locales/beBY.js +28 -0
  359. package/node/locales/bgBG.js +28 -0
  360. package/node/locales/csCZ.js +36 -8
  361. package/node/locales/daDK.js +28 -0
  362. package/node/locales/deDE.js +28 -0
  363. package/node/locales/elGR.js +27 -0
  364. package/node/locales/esES.js +28 -0
  365. package/node/locales/faIR.js +28 -0
  366. package/node/locales/fiFI.js +28 -0
  367. package/node/locales/frFR.js +26 -0
  368. package/node/locales/heIL.js +30 -2
  369. package/node/locales/huHU.js +28 -0
  370. package/node/locales/itIT.js +28 -0
  371. package/node/locales/jaJP.js +28 -0
  372. package/node/locales/koKR.js +28 -0
  373. package/node/locales/nbNO.js +28 -0
  374. package/node/locales/nlNL.js +26 -0
  375. package/node/locales/plPL.js +28 -0
  376. package/node/locales/ptBR.js +28 -0
  377. package/node/locales/roRO.js +28 -0
  378. package/node/locales/ruRU.js +28 -0
  379. package/node/locales/skSK.js +28 -0
  380. package/node/locales/svSE.js +28 -0
  381. package/node/locales/trTR.js +28 -0
  382. package/node/locales/ukUA.js +28 -0
  383. package/node/locales/urPK.js +28 -0
  384. package/node/locales/viVN.js +27 -0
  385. package/node/locales/zhCN.js +28 -0
  386. package/node/locales/zhTW.js +28 -0
  387. package/node/material/index.js +2 -0
  388. package/node/models/api/gridHeaderFilteringApi.js +5 -0
  389. package/node/models/gridFilterItem.js +1 -1
  390. package/node/models/gridHeaderFilteringModel.js +5 -0
  391. package/node/models/index.js +0 -11
  392. package/package.json +4 -4
  393. package/components/GridScrollArea.d.ts +0 -10
  394. package/components/GridScrollArea.js +0 -117
  395. package/legacy/components/GridScrollArea.js +0 -119
  396. package/legacy/lib/createDetectElementResize/index.js +0 -145
  397. package/lib/createDetectElementResize/index.d.ts +0 -18
  398. package/lib/createDetectElementResize/index.js +0 -145
  399. package/lib/createDetectElementResize/types.d.ts +0 -9
  400. package/modern/components/GridScrollArea.js +0 -117
  401. package/modern/lib/createDetectElementResize/index.js +0 -145
  402. package/node/components/GridScrollArea.js +0 -126
  403. package/node/lib/createDetectElementResize/index.js +0 -151
@@ -2,10 +2,11 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
5
- var _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "getOptionLabel", "getOptionValue"];
5
+ var _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "getOptionLabel", "getOptionValue", "placeholder", "tabIndex", "label", "headerFilterMenu", "isFilterActive", "clearButton"];
6
6
  import * as React from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import { unstable_useId as useId } from '@mui/utils';
9
+ import { styled } from '@mui/material/styles';
9
10
  import { useGridRootProps } from '../../../hooks/utils/useGridRootProps';
10
11
  import { getValueFromValueOptions, isSingleSelectColDef } from './filterPanelUtils';
11
12
  import { createElement as _createElement } from "react";
@@ -33,6 +34,11 @@ var renderSingleSelectOptions = function renderSingleSelectOptions(_ref) {
33
34
  }), label);
34
35
  });
35
36
  };
37
+ var SingleSelectOperatorContainer = styled('div')({
38
+ display: 'flex',
39
+ alignItems: 'flex-end',
40
+ width: '100%'
41
+ });
36
42
  function GridFilterInputSingleSelect(props) {
37
43
  var _item$value, _rootProps$slotProps$, _rootProps$slotProps, _rootProps$slotProps$2, _resolvedColumn, _resolvedColumn2, _rootProps$slotProps2, _rootProps$slotProps3, _rootProps$slotProps4;
38
44
  var item = props.item,
@@ -42,6 +48,12 @@ function GridFilterInputSingleSelect(props) {
42
48
  focusElementRef = props.focusElementRef,
43
49
  getOptionLabelProp = props.getOptionLabel,
44
50
  getOptionValueProp = props.getOptionValue,
51
+ placeholder = props.placeholder,
52
+ tabIndex = props.tabIndex,
53
+ labelProp = props.label,
54
+ headerFilterMenu = props.headerFilterMenu,
55
+ isFilterActive = props.isFilterActive,
56
+ clearButton = props.clearButton,
45
57
  others = _objectWithoutProperties(props, _excluded);
46
58
  var _React$useState = React.useState((_item$value = item.value) != null ? _item$value : ''),
47
59
  _React$useState2 = _slicedToArray(_React$useState, 2),
@@ -102,36 +114,41 @@ function GridFilterInputSingleSelect(props) {
102
114
  if (!isSingleSelectColDef(resolvedColumn)) {
103
115
  return null;
104
116
  }
105
- var label = apiRef.current.getLocaleText('filterPanelInputLabel');
106
- return /*#__PURE__*/_jsxs(React.Fragment, {
107
- children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseInputLabel, {
108
- id: labelId,
109
- shrink: true,
110
- variant: "standard",
111
- children: label
112
- })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({
113
- id: id,
114
- label: label,
115
- labelId: labelId,
116
- value: filterValueState,
117
- onChange: onFilterChange,
118
- variant: "standard",
119
- type: type || 'text',
120
- inputProps: {
121
- ref: focusElementRef,
122
- placeholder: apiRef.current.getLocaleText('filterPanelInputPlaceholder')
123
- },
124
- native: isSelectNative
125
- }, others, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseSelect, {
126
- children: renderSingleSelectOptions({
127
- column: resolvedColumn,
128
- OptionComponent: rootProps.slots.baseSelectOption,
129
- getOptionLabel: getOptionLabel,
130
- getOptionValue: getOptionValue,
131
- isSelectNative: isSelectNative,
132
- baseSelectOptionProps: (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseSelectOption
133
- })
134
- }))]
117
+ var label = labelProp != null ? labelProp : apiRef.current.getLocaleText('filterPanelInputLabel');
118
+ return /*#__PURE__*/_jsxs(SingleSelectOperatorContainer, {
119
+ children: [/*#__PURE__*/_jsxs(rootProps.slots.baseFormControl, {
120
+ children: [/*#__PURE__*/_jsx(rootProps.slots.baseInputLabel, _extends({}, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseInputLabel, {
121
+ id: labelId,
122
+ htmlFor: id,
123
+ shrink: true,
124
+ variant: "standard",
125
+ children: label
126
+ })), /*#__PURE__*/_jsx(rootProps.slots.baseSelect, _extends({
127
+ id: id,
128
+ label: label,
129
+ labelId: labelId,
130
+ value: filterValueState,
131
+ onChange: onFilterChange,
132
+ startAdornment: isFilterActive ? headerFilterMenu : null,
133
+ variant: "standard",
134
+ type: type || 'text',
135
+ inputProps: {
136
+ tabIndex: tabIndex,
137
+ ref: focusElementRef,
138
+ placeholder: placeholder != null ? placeholder : apiRef.current.getLocaleText('filterPanelInputPlaceholder')
139
+ },
140
+ native: isSelectNative
141
+ }, others, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseSelect, {
142
+ children: renderSingleSelectOptions({
143
+ column: resolvedColumn,
144
+ OptionComponent: rootProps.slots.baseSelectOption,
145
+ getOptionLabel: getOptionLabel,
146
+ getOptionValue: getOptionValue,
147
+ isSelectNative: isSelectNative,
148
+ baseSelectOptionProps: (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseSelectOption
149
+ })
150
+ }))]
151
+ }), clearButton]
135
152
  });
136
153
  }
137
154
  process.env.NODE_ENV !== "production" ? GridFilterInputSingleSelect.propTypes = {
@@ -143,6 +160,7 @@ process.env.NODE_ENV !== "production" ? GridFilterInputSingleSelect.propTypes =
143
160
  current: PropTypes.object.isRequired
144
161
  }).isRequired,
145
162
  applyValue: PropTypes.func.isRequired,
163
+ clearButton: PropTypes.node,
146
164
  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),
147
165
  /**
148
166
  * Used to determine the label displayed for a given value option.
@@ -156,6 +174,12 @@ process.env.NODE_ENV !== "production" ? GridFilterInputSingleSelect.propTypes =
156
174
  * @returns {string} The value to be used.
157
175
  */
158
176
  getOptionValue: PropTypes.func,
177
+ headerFilterMenu: PropTypes.node,
178
+ /**
179
+ * It is `true` if the filter either has a value or an operator with no value
180
+ * required is selected (e.g. `isEmpty`)
181
+ */
182
+ isFilterActive: PropTypes.bool,
159
183
  item: PropTypes.shape({
160
184
  field: PropTypes.string.isRequired,
161
185
  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- var _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef"];
4
+ var _excluded = ["item", "applyValue", "type", "apiRef", "focusElementRef", "tabIndex", "disabled", "headerFilterMenu", "isFilterActive", "clearButton", "InputProps"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import { unstable_useId as useId } from '@mui/utils';
@@ -15,6 +15,12 @@ function GridFilterInputValue(props) {
15
15
  type = props.type,
16
16
  apiRef = props.apiRef,
17
17
  focusElementRef = props.focusElementRef,
18
+ tabIndex = props.tabIndex,
19
+ disabled = props.disabled,
20
+ headerFilterMenu = props.headerFilterMenu,
21
+ isFilterActive = props.isFilterActive,
22
+ clearButton = props.clearButton,
23
+ InputProps = props.InputProps,
18
24
  others = _objectWithoutProperties(props, _excluded);
19
25
  var filterTimeout = React.useRef();
20
26
  var _React$useState = React.useState((_item$value = item.value) != null ? _item$value : ''),
@@ -49,9 +55,6 @@ function GridFilterInputValue(props) {
49
55
  var itemValue = (_item$value2 = item.value) != null ? _item$value2 : '';
50
56
  setFilterValueState(String(itemValue));
51
57
  }, [item.value]);
52
- var InputProps = applying ? {
53
- endAdornment: /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {})
54
- } : others.InputProps;
55
58
  return /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({
56
59
  id: id,
57
60
  label: apiRef.current.getLocaleText('filterPanelInputLabel'),
@@ -60,7 +63,20 @@ function GridFilterInputValue(props) {
60
63
  onChange: onFilterChange,
61
64
  variant: "standard",
62
65
  type: type || 'text',
63
- InputProps: InputProps,
66
+ InputProps: _extends({}, applying || clearButton ? {
67
+ endAdornment: applying ? /*#__PURE__*/_jsx(rootProps.slots.loadIcon, {
68
+ fontSize: "small",
69
+ color: "action"
70
+ }) : clearButton
71
+ } : {}, headerFilterMenu && isFilterActive ? {
72
+ startAdornment: headerFilterMenu
73
+ } : {}, {
74
+ disabled: disabled
75
+ }, InputProps, {
76
+ inputProps: _extends({
77
+ tabIndex: tabIndex
78
+ }, InputProps == null ? void 0 : InputProps.inputProps)
79
+ }),
64
80
  InputLabelProps: {
65
81
  shrink: true
66
82
  },
@@ -76,7 +92,14 @@ process.env.NODE_ENV !== "production" ? GridFilterInputValue.propTypes = {
76
92
  current: PropTypes.object.isRequired
77
93
  }).isRequired,
78
94
  applyValue: PropTypes.func.isRequired,
95
+ clearButton: PropTypes.node,
79
96
  focusElementRef: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.func, PropTypes.object]),
97
+ headerFilterMenu: PropTypes.node,
98
+ /**
99
+ * It is `true` if the filter either has a value or an operator with no value
100
+ * required is selected (e.g. `isEmpty`)
101
+ */
102
+ isFilterActive: PropTypes.bool,
80
103
  item: PropTypes.shape({
81
104
  field: PropTypes.string.isRequired,
82
105
  id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
@@ -218,4 +218,4 @@ process.env.NODE_ENV !== "production" ? GridFilterPanel.propTypes = {
218
218
  */
219
219
  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
220
220
  } : void 0;
221
- export { GridFilterPanel };
221
+ export { GridFilterPanel, getGridFilter };
@@ -2,7 +2,8 @@ export * from './GridFilterForm';
2
2
  export * from './GridFilterInputValue';
3
3
  export * from './GridFilterInputDate';
4
4
  export * from './GridFilterInputSingleSelect';
5
+ export * from './GridFilterInputBoolean';
5
6
  export * from './GridFilterInputValueProps';
6
- export * from './GridFilterPanel';
7
+ export { GridFilterPanel } from './GridFilterPanel';
7
8
  export * from './GridFilterInputMultipleValue';
8
9
  export * from './GridFilterInputMultipleSingleSelect';
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
3
  var _excluded = ["onClick"];
4
4
  import * as React from 'react';
5
+ import { unstable_useId as useId } from '@mui/material/utils';
5
6
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
6
7
  import { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';
7
8
  import { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel/gridPreferencePanelsValue';
@@ -12,16 +13,16 @@ export var GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function Gri
12
13
  var _rootProps$slotProps;
13
14
  var onClick = props.onClick,
14
15
  other = _objectWithoutProperties(props, _excluded);
16
+ var columnButtonId = useId();
17
+ var columnPanelId = useId();
15
18
  var apiRef = useGridApiContext();
16
19
  var rootProps = useGridRootProps();
17
- var _useGridSelector = useGridSelector(apiRef, gridPreferencePanelStateSelector),
18
- open = _useGridSelector.open,
19
- openedPanelValue = _useGridSelector.openedPanelValue;
20
+ var preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);
20
21
  var showColumns = function showColumns(event) {
21
- if (open && openedPanelValue === GridPreferencePanelsValue.columns) {
22
+ if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {
22
23
  apiRef.current.hidePreferences();
23
24
  } else {
24
- apiRef.current.showPreferences(GridPreferencePanelsValue.columns);
25
+ apiRef.current.showPreferences(GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);
25
26
  }
26
27
  onClick == null ? void 0 : onClick(event);
27
28
  };
@@ -30,10 +31,15 @@ export var GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function Gri
30
31
  if (rootProps.disableColumnSelector) {
31
32
  return null;
32
33
  }
34
+ var isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;
33
35
  return /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
34
36
  ref: ref,
37
+ id: columnButtonId,
35
38
  size: "small",
36
39
  "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
40
+ "aria-haspopup": "menu",
41
+ "aria-expanded": isOpen,
42
+ "aria-controls": isOpen ? columnPanelId : undefined,
37
43
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})
38
44
  }, other, {
39
45
  onClick: showColumns
@@ -102,9 +102,9 @@ export var GridToolbarDensitySelector = /*#__PURE__*/React.forwardRef(function G
102
102
  size: "small",
103
103
  startIcon: startIcon,
104
104
  "aria-label": apiRef.current.getLocaleText('toolbarDensityLabel'),
105
- "aria-expanded": open ? 'true' : undefined,
106
105
  "aria-haspopup": "menu",
107
- "aria-controls": densityMenuId,
106
+ "aria-expanded": open,
107
+ "aria-controls": open ? densityMenuId : undefined,
108
108
  id: densityButtonId
109
109
  }, other, {
110
110
  onClick: handleDensitySelectorOpen
@@ -19,8 +19,8 @@ export var GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function G
19
19
  other = _objectWithoutProperties(props, _excluded);
20
20
  var apiRef = useGridApiContext();
21
21
  var rootProps = useGridRootProps();
22
- var buttonId = useId();
23
- var menuId = useId();
22
+ var exportButtonId = useId();
23
+ var exportMenuId = useId();
24
24
  var _React$useState = React.useState(false),
25
25
  _React$useState2 = _slicedToArray(_React$useState, 2),
26
26
  open = _React$useState2[0],
@@ -60,11 +60,11 @@ export var GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function G
60
60
  ref: handleRef,
61
61
  size: "small",
62
62
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.exportIcon, {}),
63
- "aria-expanded": open ? 'true' : undefined,
63
+ "aria-expanded": open,
64
64
  "aria-label": apiRef.current.getLocaleText('toolbarExportLabel'),
65
65
  "aria-haspopup": "menu",
66
- "aria-labelledby": menuId,
67
- id: buttonId
66
+ "aria-controls": open ? exportMenuId : undefined,
67
+ id: exportButtonId
68
68
  }, other, {
69
69
  onClick: handleMenuOpen
70
70
  }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {
@@ -75,9 +75,9 @@ export var GridToolbarExportContainer = /*#__PURE__*/React.forwardRef(function G
75
75
  onClickAway: handleMenuClickAway,
76
76
  position: "bottom-start",
77
77
  children: /*#__PURE__*/_jsx(MenuList, {
78
- id: menuId,
78
+ id: exportMenuId,
79
79
  className: gridClasses.menuList,
80
- "aria-labelledby": buttonId,
80
+ "aria-labelledby": exportButtonId,
81
81
  onKeyDown: handleListKeyDown,
82
82
  autoFocusItem: open,
83
83
  children: React.Children.map(children, function (child) {
@@ -4,7 +4,7 @@ var _excluded = ["componentsProps"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { styled } from '@mui/material/styles';
7
- import { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize } from '@mui/utils';
7
+ import { unstable_composeClasses as composeClasses, unstable_capitalize as capitalize, unstable_useId as useId } from '@mui/utils';
8
8
  import Badge from '@mui/material/Badge';
9
9
  import { gridColumnLookupSelector } from '../../hooks/features/columns/gridColumnsSelector';
10
10
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
@@ -26,7 +26,7 @@ var useUtilityClasses = function useUtilityClasses(ownerState) {
26
26
  var GridToolbarFilterListRoot = styled('ul', {
27
27
  name: 'MuiDataGrid',
28
28
  slot: 'ToolbarFilterList',
29
- overridesResolver: function overridesResolver(props, styles) {
29
+ overridesResolver: function overridesResolver(_props, styles) {
30
30
  return styles.toolbarFilterList;
31
31
  }
32
32
  })(function (_ref) {
@@ -48,6 +48,8 @@ var GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbar
48
48
  var lookup = useGridSelector(apiRef, gridColumnLookupSelector);
49
49
  var preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);
50
50
  var classes = useUtilityClasses(rootProps);
51
+ var filterButtonId = useId();
52
+ var filterPanelId = useId();
51
53
  var tooltipContentNode = React.useMemo(function () {
52
54
  if (preferencePanel.open) {
53
55
  return apiRef.current.getLocaleText('toolbarFiltersTooltipHide');
@@ -86,9 +88,9 @@ var GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbar
86
88
  var open = preferencePanel.open,
87
89
  openedPanelValue = preferencePanel.openedPanelValue;
88
90
  if (open && openedPanelValue === GridPreferencePanelsValue.filters) {
89
- apiRef.current.hideFilterPanel();
91
+ apiRef.current.hidePreferences();
90
92
  } else {
91
- apiRef.current.showFilterPanel();
93
+ apiRef.current.showPreferences(GridPreferencePanelsValue.filters, filterPanelId, filterButtonId);
92
94
  }
93
95
  (_buttonProps$onClick = buttonProps.onClick) == null ? void 0 : _buttonProps$onClick.call(buttonProps, event);
94
96
  };
@@ -97,14 +99,19 @@ var GridToolbarFilterButton = /*#__PURE__*/React.forwardRef(function GridToolbar
97
99
  if (rootProps.disableColumnFilter) {
98
100
  return null;
99
101
  }
102
+ var isOpen = preferencePanel.open && preferencePanel.panelId === filterPanelId;
100
103
  return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
101
104
  title: tooltipContentNode,
102
105
  enterDelay: 1000
103
106
  }, other, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
104
107
  children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
105
108
  ref: ref,
109
+ id: filterButtonId,
106
110
  size: "small",
107
111
  "aria-label": apiRef.current.getLocaleText('toolbarFiltersLabel'),
112
+ "aria-controls": isOpen ? filterPanelId : undefined,
113
+ "aria-expanded": isOpen,
114
+ "aria-haspopup": true,
108
115
  startIcon: /*#__PURE__*/_jsx(Badge, {
109
116
  badgeContent: activeFilters.length,
110
117
  color: "primary",
@@ -60,6 +60,32 @@ export var GRID_DEFAULT_LOCALE_TEXT = {
60
60
  filterOperatorIsEmpty: 'is empty',
61
61
  filterOperatorIsNotEmpty: 'is not empty',
62
62
  filterOperatorIsAnyOf: 'is any of',
63
+ 'filterOperator=': '=',
64
+ 'filterOperator!=': '!=',
65
+ 'filterOperator>': '>',
66
+ 'filterOperator>=': '>=',
67
+ 'filterOperator<': '<',
68
+ 'filterOperator<=': '<=',
69
+ // Header filter operators text
70
+ headerFilterOperatorContains: 'Contains',
71
+ headerFilterOperatorEquals: 'Equals',
72
+ headerFilterOperatorStartsWith: 'Starts with',
73
+ headerFilterOperatorEndsWith: 'Ends with',
74
+ headerFilterOperatorIs: 'Is',
75
+ headerFilterOperatorNot: 'Is not',
76
+ headerFilterOperatorAfter: 'Is after',
77
+ headerFilterOperatorOnOrAfter: 'Is on or after',
78
+ headerFilterOperatorBefore: 'Is before',
79
+ headerFilterOperatorOnOrBefore: 'Is on or before',
80
+ headerFilterOperatorIsEmpty: 'Is empty',
81
+ headerFilterOperatorIsNotEmpty: 'Is not empty',
82
+ headerFilterOperatorIsAnyOf: 'Is any of',
83
+ 'headerFilterOperator=': 'Equals',
84
+ 'headerFilterOperator!=': 'Not equals',
85
+ 'headerFilterOperator>': 'Is greater than',
86
+ 'headerFilterOperator>=': 'Is greater than or equal to',
87
+ 'headerFilterOperator<': 'Is less than',
88
+ 'headerFilterOperator<=': 'Is less than or equal to',
63
89
  // Filter values text
64
90
  filterValueAny: 'any',
65
91
  filterValueTrue: 'true',
@@ -7,7 +7,8 @@ export var GRID_DEFAULT_STRATEGY = 'none';
7
7
  export var GRID_STRATEGIES_PROCESSORS = {
8
8
  rowTreeCreation: 'rowTree',
9
9
  filtering: 'rowTree',
10
- sorting: 'rowTree'
10
+ sorting: 'rowTree',
11
+ visibleRowsLookupCreation: 'rowTree'
11
12
  };
12
13
  /**
13
14
  * Implements a variant of the Strategy Pattern (see https://en.wikipedia.org/wiki/Strategy_pattern)
@@ -298,10 +298,8 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
298
298
  var tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;
299
299
  var headerInfo = {
300
300
  groupId: groupId,
301
- width: columnFields.map(function (field) {
302
- return apiRef.current.getColumn(field).computedWidth;
303
- }).reduce(function (acc, val) {
304
- return acc + val;
301
+ width: columnFields.reduce(function (acc, field) {
302
+ return acc + apiRef.current.getColumn(field).computedWidth;
305
303
  }, 0),
306
304
  fields: columnFields,
307
305
  colIndex: columnIndex,
@@ -360,6 +358,7 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
360
358
  return {
361
359
  renderContext: renderContext,
362
360
  getColumnHeaders: getColumnHeaders,
361
+ getColumnsToRender: getColumnsToRender,
363
362
  getColumnGroupHeaders: getColumnGroupHeaders,
364
363
  isDragging: !!dragCol,
365
364
  getRootProps: function getRootProps() {
@@ -373,6 +372,7 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
373
372
  ref: handleInnerRef,
374
373
  role: 'rowgroup'
375
374
  };
376
- }
375
+ },
376
+ headerHeight: headerHeight
377
377
  };
378
378
  };
@@ -162,8 +162,8 @@ export function useGridDimensions(apiRef, props) {
162
162
  if (!mainEl) {
163
163
  return;
164
164
  }
165
- var height = mainEl.offsetHeight || 0;
166
- var width = mainEl.offsetWidth || 0;
165
+ var height = mainEl.clientHeight || 0;
166
+ var width = mainEl.clientWidth || 0;
167
167
  var win = ownerWindow(mainEl);
168
168
  var computedStyle = win.getComputedStyle(mainEl);
169
169
  var paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
@@ -32,9 +32,6 @@ export var useGridEditing = function useGridEditing(apiRef, props) {
32
32
  if (isCellEditableProp) {
33
33
  return isCellEditableProp(params);
34
34
  }
35
- if (params.rowNode.type === 'pinnedRow') {
36
- return false;
37
- }
38
35
  return true;
39
36
  }, [isCellEditableProp]);
40
37
  var maybeDebounce = function maybeDebounce(id, field, debounceMs, callback) {
@@ -27,12 +27,12 @@ export var gridQuickFilterValuesSelector = createSelector(gridFilterModelSelecto
27
27
  });
28
28
 
29
29
  /**
30
- * @category Filtering
30
+ * @category Visible rows
31
31
  * @ignore - do not document.
32
32
  */
33
- export var gridVisibleRowsLookupSelector = createSelector(gridFilterStateSelector, function (filterState) {
34
- return filterState.visibleRowsLookup;
35
- });
33
+ export var gridVisibleRowsLookupSelector = function gridVisibleRowsLookupSelector(state) {
34
+ return state.visibleRowsLookup;
35
+ };
36
36
 
37
37
  /**
38
38
  * @category Filtering
@@ -11,4 +11,10 @@ export var getDefaultGridFilterModel = function getDefaultGridFilterModel() {
11
11
  /**
12
12
  * @param {GridRowId} rowId The id of the row we want to filter.
13
13
  * @param {(filterItem: GridFilterItem) => boolean} shouldApplyItem An optional callback to allow the filtering engine to only apply some items.
14
+ */
15
+
16
+ /**
17
+ * Visibility status for each row.
18
+ * A row is visible if it is passing the filters AND if its parents are expanded.
19
+ * If a row is not registered in this lookup, it is visible.
14
20
  */
@@ -21,11 +21,21 @@ export var filterStateInitializer = function filterStateInitializer(state, props
21
21
  return _extends({}, state, {
22
22
  filter: {
23
23
  filterModel: sanitizeFilterModel(filterModel, props.disableMultipleColumnsFiltering, apiRef),
24
- visibleRowsLookup: {},
25
24
  filteredDescendantCountLookup: {}
26
- }
25
+ },
26
+ visibleRowsLookup: {}
27
27
  });
28
28
  };
29
+ var getVisibleRowsLookup = function getVisibleRowsLookup(params) {
30
+ // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.
31
+ return params.filteredRowsLookup;
32
+ };
33
+ function getVisibleRowsLookupState(apiRef, state) {
34
+ return apiRef.current.applyStrategyProcessor('visibleRowsLookupCreation', {
35
+ tree: state.rows.tree,
36
+ filteredRowsLookup: state.filter.filteredRowsLookup
37
+ });
38
+ }
29
39
 
30
40
  /**
31
41
  * @requires useGridColumns (method, event)
@@ -50,9 +60,13 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
50
60
  isRowMatchingFilters: isRowMatchingFilters,
51
61
  filterModel: filterModel != null ? filterModel : getDefaultGridFilterModel()
52
62
  });
53
- return _extends({}, state, {
63
+ var newState = _extends({}, state, {
54
64
  filter: _extends({}, state.filter, filteringResult)
55
65
  });
66
+ var visibleRowsLookupState = getVisibleRowsLookupState(apiRef, newState);
67
+ return _extends({}, newState, {
68
+ visibleRowsLookup: visibleRowsLookupState
69
+ });
56
70
  });
57
71
  apiRef.current.publishEvent('filteredRowsSet');
58
72
  }, [props.filterMode, apiRef]);
@@ -114,7 +128,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
114
128
  items: items
115
129
  }), 'deleteFilterItem');
116
130
  }, [apiRef]);
117
- var showFilterPanel = React.useCallback(function (targetColumnField) {
131
+ var showFilterPanel = React.useCallback(function (targetColumnField, panelId, labelId) {
118
132
  logger.debug('Displaying filter panel');
119
133
  if (targetColumnField) {
120
134
  var filterModel = gridFilterModelSelector(apiRef);
@@ -164,7 +178,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
164
178
  items: newFilterItems
165
179
  }));
166
180
  }
167
- apiRef.current.showPreferences(GridPreferencePanelsValue.filters);
181
+ apiRef.current.showPreferences(GridPreferencePanelsValue.filters, panelId, labelId);
168
182
  }, [apiRef, logger, props.disableMultipleColumnsFiltering]);
169
183
  var hideFilterPanel = React.useCallback(function () {
170
184
  logger.debug('Hiding filter panel');
@@ -272,13 +286,10 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
272
286
  }
273
287
  return {
274
288
  filteredRowsLookup: filteredRowsLookup,
275
- // For flat tree, the `visibleRowsLookup` and the `filteredRowsLookup` are equals since no row is collapsed.
276
- visibleRowsLookup: filteredRowsLookup,
277
289
  filteredDescendantCountLookup: {}
278
290
  };
279
291
  }
280
292
  return {
281
- visibleRowsLookup: {},
282
293
  filteredRowsLookup: {},
283
294
  filteredDescendantCountLookup: {}
284
295
  };
@@ -288,6 +299,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
288
299
  useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
289
300
  useGridRegisterPipeProcessor(apiRef, 'preferencePanel', preferencePanelPreProcessing);
290
301
  useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'filtering', flatFilteringMethod);
302
+ useGridRegisterStrategyProcessor(apiRef, GRID_DEFAULT_STRATEGY, 'visibleRowsLookupCreation', getVisibleRowsLookup);
291
303
 
292
304
  /**
293
305
  * EVENTS
@@ -310,13 +322,21 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
310
322
  apiRef.current.unstable_applyFilters();
311
323
  }
312
324
  }, [apiRef]);
325
+ var updateVisibleRowsLookupState = React.useCallback(function () {
326
+ apiRef.current.setState(function (state) {
327
+ return _extends({}, state, {
328
+ visibleRowsLookup: getVisibleRowsLookupState(apiRef, state)
329
+ });
330
+ });
331
+ apiRef.current.forceUpdate();
332
+ }, [apiRef]);
313
333
 
314
334
  // Do not call `apiRef.current.forceUpdate` to avoid re-render before updating the sorted rows.
315
335
  // Otherwise, the state is not consistent during the render
316
336
  useGridApiEventHandler(apiRef, 'rowsSet', updateFilteredRows);
317
- useGridApiEventHandler(apiRef, 'rowExpansionChange', apiRef.current.unstable_applyFilters);
318
337
  useGridApiEventHandler(apiRef, 'columnsChange', handleColumnsChange);
319
338
  useGridApiEventHandler(apiRef, 'activeStrategyProcessorChange', handleStrategyProcessorChange);
339
+ useGridApiEventHandler(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);
320
340
 
321
341
  /**
322
342
  * 1ST RENDER
@@ -9,6 +9,11 @@ export var gridFocusColumnHeaderSelector = createSelector(gridFocusStateSelector
9
9
  return focusState.columnHeader;
10
10
  });
11
11
 
12
+ // eslint-disable-next-line @typescript-eslint/naming-convention
13
+ export var unstable_gridFocusColumnHeaderFilterSelector = createSelector(gridFocusStateSelector, function (focusState) {
14
+ return focusState.columnHeaderFilter;
15
+ });
16
+
12
17
  // eslint-disable-next-line @typescript-eslint/naming-convention
13
18
  export var unstable_gridFocusColumnGroupHeaderSelector = createSelector(gridFocusStateSelector, function (focusState) {
14
19
  return focusState.columnGroupHeader;
@@ -23,6 +28,11 @@ export var gridTabIndexColumnHeaderSelector = createSelector(gridTabIndexStateSe
23
28
  return state.columnHeader;
24
29
  });
25
30
 
31
+ // eslint-disable-next-line @typescript-eslint/naming-convention
32
+ export var unstable_gridTabIndexColumnHeaderFilterSelector = createSelector(gridTabIndexStateSelector, function (state) {
33
+ return state.columnHeaderFilter;
34
+ });
35
+
26
36
  // eslint-disable-next-line @typescript-eslint/naming-convention
27
37
  export var unstable_gridTabIndexColumnGroupHeaderSelector = createSelector(gridTabIndexStateSelector, function (state) {
28
38
  return state.columnGroupHeader;