@mui/x-data-grid 7.0.0-alpha.8 → 7.0.0-beta.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 (566) hide show
  1. package/CHANGELOG.md +508 -30
  2. package/DataGrid/DataGrid.js +6 -6
  3. package/DataGrid/useDataGridComponent.js +2 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/README.md +3 -3
  6. package/components/GridColumnHeaders.d.ts +3 -2
  7. package/components/GridColumnHeaders.js +3 -11
  8. package/components/GridDetailPanels.d.ts +5 -0
  9. package/components/GridDetailPanels.js +4 -0
  10. package/components/GridHeaders.d.ts +4 -0
  11. package/components/GridHeaders.js +53 -0
  12. package/components/GridPinnedRows.d.ts +7 -0
  13. package/components/GridPinnedRows.js +4 -0
  14. package/components/GridRow.d.ts +7 -4
  15. package/components/GridRow.js +161 -97
  16. package/components/GridScrollbarFillerCell.d.ts +7 -0
  17. package/components/GridScrollbarFillerCell.js +39 -0
  18. package/components/base/GridBody.d.ts +2 -13
  19. package/components/base/GridBody.js +2 -116
  20. package/components/base/GridOverlays.js +10 -21
  21. package/components/cell/GridActionsCellItem.d.ts +2 -2
  22. package/components/cell/GridCell.d.ts +15 -21
  23. package/components/cell/GridCell.js +67 -372
  24. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  25. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
  26. package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  27. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  28. package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  29. package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  30. package/components/columnsManagement/GridColumnsManagement.d.ts +36 -0
  31. package/components/columnsManagement/GridColumnsManagement.js +260 -0
  32. package/components/columnsManagement/index.d.ts +1 -0
  33. package/components/columnsManagement/index.js +1 -0
  34. package/components/columnsManagement/utils.d.ts +4 -0
  35. package/components/columnsManagement/utils.js +16 -0
  36. package/components/containers/GridRoot.js +18 -15
  37. package/components/containers/GridRootStyles.js +307 -204
  38. package/components/index.d.ts +1 -0
  39. package/components/index.js +1 -0
  40. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  41. package/components/panel/GridColumnsPanel.d.ts +0 -28
  42. package/components/panel/GridColumnsPanel.js +5 -213
  43. package/components/panel/GridPanel.js +3 -4
  44. package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
  45. package/components/panel/filterPanel/GridFilterForm.js +31 -14
  46. package/components/panel/filterPanel/GridFilterPanel.js +46 -20
  47. package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
  48. package/components/toolbar/GridToolbarColumnsButton.js +40 -22
  49. package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
  50. package/components/toolbar/GridToolbarDensitySelector.js +40 -22
  51. package/components/toolbar/GridToolbarExport.d.ts +10 -1
  52. package/components/toolbar/GridToolbarExport.js +6 -1
  53. package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
  54. package/components/toolbar/GridToolbarExportContainer.js +41 -23
  55. package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
  56. package/components/toolbar/GridToolbarFilterButton.js +6 -10
  57. package/components/virtualization/GridBottomContainer.d.ts +2 -0
  58. package/components/virtualization/GridBottomContainer.js +25 -0
  59. package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
  60. package/components/virtualization/GridMainContainer.js +20 -0
  61. package/components/virtualization/GridTopContainer.d.ts +2 -0
  62. package/components/virtualization/GridTopContainer.js +35 -0
  63. package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
  64. package/components/virtualization/GridVirtualScrollbar.js +131 -0
  65. package/components/virtualization/GridVirtualScroller.d.ts +4 -4
  66. package/components/virtualization/GridVirtualScroller.js +69 -16
  67. package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
  68. package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  69. package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  70. package/constants/defaultGridSlotsComponents.js +8 -3
  71. package/constants/gridClasses.d.ts +72 -12
  72. package/constants/gridClasses.js +1 -1
  73. package/constants/localeTextConstants.js +4 -6
  74. package/hooks/core/gridCoreSelector.d.ts +6 -0
  75. package/hooks/core/gridCoreSelector.js +5 -0
  76. package/hooks/core/useGridApiInitialization.js +4 -0
  77. package/hooks/core/useGridInitialization.js +4 -0
  78. package/hooks/core/useGridRefs.d.ts +3 -0
  79. package/hooks/core/useGridRefs.js +13 -0
  80. package/hooks/core/useGridTheme.d.ts +3 -0
  81. package/hooks/core/useGridTheme.js +19 -0
  82. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  83. package/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  84. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
  85. package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
  86. package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  87. package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
  88. package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  89. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
  90. package/hooks/features/columns/gridColumnsSelector.js +52 -0
  91. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
  92. package/hooks/features/columns/gridColumnsUtils.js +10 -12
  93. package/hooks/features/columns/index.d.ts +2 -2
  94. package/hooks/features/columns/index.js +2 -1
  95. package/hooks/features/columns/useGridColumnSpanning.js +62 -61
  96. package/hooks/features/columns/useGridColumns.js +20 -23
  97. package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
  98. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
  99. package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  100. package/hooks/features/dimensions/index.d.ts +2 -0
  101. package/hooks/features/dimensions/index.js +1 -0
  102. package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
  103. package/hooks/features/dimensions/useGridDimensions.js +216 -148
  104. package/hooks/features/export/serializers/csvSerializer.js +2 -2
  105. package/hooks/features/filter/useGridFilter.js +3 -3
  106. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
  107. package/hooks/features/focus/gridFocusStateSelector.js +2 -6
  108. package/hooks/features/focus/useGridFocus.js +3 -3
  109. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  110. package/hooks/features/pagination/useGridPagination.js +3 -5
  111. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
  112. package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
  113. package/hooks/features/rows/gridRowsSelector.js +5 -5
  114. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  115. package/hooks/features/rows/gridRowsUtils.js +8 -5
  116. package/hooks/features/rows/useGridRowsMeta.js +7 -4
  117. package/hooks/features/scroll/useGridScroll.js +8 -10
  118. package/hooks/features/sorting/gridSortingUtils.js +1 -1
  119. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  120. package/hooks/features/sorting/useGridSorting.js +15 -10
  121. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
  122. package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  123. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
  124. package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
  125. package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
  126. package/hooks/features/virtualization/useGridVirtualization.js +8 -1
  127. package/hooks/utils/index.d.ts +3 -0
  128. package/hooks/utils/index.js +4 -1
  129. package/hooks/utils/useGridAriaAttributes.js +1 -2
  130. package/hooks/utils/useGridNativeEventListener.js +4 -9
  131. package/hooks/utils/useResizeObserver.d.ts +2 -0
  132. package/hooks/utils/useResizeObserver.js +36 -0
  133. package/hooks/utils/useRunOnce.d.ts +5 -0
  134. package/hooks/utils/useRunOnce.js +18 -0
  135. package/index.js +1 -1
  136. package/internals/index.d.ts +12 -9
  137. package/internals/index.js +9 -7
  138. package/legacy/DataGrid/DataGrid.js +6 -6
  139. package/legacy/DataGrid/useDataGridComponent.js +2 -1
  140. package/legacy/DataGrid/useDataGridProps.js +1 -0
  141. package/legacy/components/GridColumnHeaders.js +3 -11
  142. package/legacy/components/GridDetailPanels.js +4 -0
  143. package/legacy/components/GridHeaders.js +53 -0
  144. package/legacy/components/GridPinnedRows.js +4 -0
  145. package/legacy/components/GridRow.js +159 -98
  146. package/legacy/components/GridScrollbarFillerCell.js +36 -0
  147. package/legacy/components/base/GridBody.js +2 -114
  148. package/legacy/components/base/GridOverlays.js +10 -25
  149. package/legacy/components/cell/GridCell.js +69 -377
  150. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  151. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  152. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  153. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  154. package/legacy/components/columnsManagement/GridColumnsManagement.js +300 -0
  155. package/legacy/components/columnsManagement/index.js +1 -0
  156. package/legacy/components/columnsManagement/utils.js +22 -0
  157. package/legacy/components/containers/GridRoot.js +18 -15
  158. package/legacy/components/containers/GridRootStyles.js +215 -137
  159. package/legacy/components/index.js +1 -0
  160. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  161. package/legacy/components/panel/GridColumnsPanel.js +5 -233
  162. package/legacy/components/panel/GridPanel.js +3 -4
  163. package/legacy/components/panel/filterPanel/GridFilterForm.js +30 -13
  164. package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
  165. package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
  166. package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
  167. package/legacy/components/toolbar/GridToolbarExport.js +6 -1
  168. package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
  169. package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
  170. package/legacy/components/virtualization/GridBottomContainer.js +25 -0
  171. package/legacy/components/virtualization/GridMainContainer.js +20 -0
  172. package/legacy/components/virtualization/GridTopContainer.js +35 -0
  173. package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
  174. package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
  175. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
  176. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  177. package/legacy/constants/defaultGridSlotsComponents.js +8 -3
  178. package/legacy/constants/gridClasses.js +1 -1
  179. package/legacy/constants/localeTextConstants.js +4 -6
  180. package/legacy/hooks/core/gridCoreSelector.js +7 -0
  181. package/legacy/hooks/core/useGridApiInitialization.js +4 -0
  182. package/legacy/hooks/core/useGridInitialization.js +4 -0
  183. package/legacy/hooks/core/useGridRefs.js +13 -0
  184. package/legacy/hooks/core/useGridTheme.js +21 -0
  185. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  186. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
  187. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  188. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  189. package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
  190. package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
  191. package/legacy/hooks/features/columns/index.js +2 -1
  192. package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
  193. package/legacy/hooks/features/columns/useGridColumns.js +22 -23
  194. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
  195. package/legacy/hooks/features/dimensions/index.js +1 -0
  196. package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
  197. package/legacy/hooks/features/export/serializers/csvSerializer.js +2 -2
  198. package/legacy/hooks/features/filter/useGridFilter.js +3 -3
  199. package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
  200. package/legacy/hooks/features/focus/useGridFocus.js +3 -3
  201. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  202. package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
  203. package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
  204. package/legacy/hooks/features/rows/gridRowsUtils.js +8 -5
  205. package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -4
  206. package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
  207. package/legacy/hooks/features/sorting/gridSortingUtils.js +1 -1
  208. package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
  209. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
  210. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
  211. package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
  212. package/legacy/hooks/utils/index.js +4 -1
  213. package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
  214. package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
  215. package/legacy/hooks/utils/useResizeObserver.js +36 -0
  216. package/legacy/hooks/utils/useRunOnce.js +18 -0
  217. package/legacy/index.js +1 -1
  218. package/legacy/internals/index.js +9 -7
  219. package/legacy/locales/arSD.js +5 -6
  220. package/legacy/locales/beBY.js +5 -6
  221. package/legacy/locales/bgBG.js +5 -6
  222. package/legacy/locales/csCZ.js +5 -6
  223. package/legacy/locales/daDK.js +5 -6
  224. package/legacy/locales/deDE.js +5 -6
  225. package/legacy/locales/elGR.js +5 -6
  226. package/legacy/locales/esES.js +5 -6
  227. package/legacy/locales/faIR.js +5 -6
  228. package/legacy/locales/fiFI.js +5 -6
  229. package/legacy/locales/frFR.js +5 -6
  230. package/legacy/locales/heIL.js +5 -6
  231. package/legacy/locales/hrHR.js +160 -0
  232. package/legacy/locales/huHU.js +5 -6
  233. package/legacy/locales/index.js +4 -1
  234. package/legacy/locales/itIT.js +5 -6
  235. package/legacy/locales/jaJP.js +5 -6
  236. package/legacy/locales/koKR.js +5 -6
  237. package/legacy/locales/nbNO.js +5 -6
  238. package/legacy/locales/nlNL.js +5 -6
  239. package/legacy/locales/plPL.js +5 -6
  240. package/legacy/locales/ptBR.js +5 -6
  241. package/legacy/locales/ptPT.js +160 -0
  242. package/legacy/locales/roRO.js +5 -6
  243. package/legacy/locales/ruRU.js +5 -6
  244. package/legacy/locales/skSK.js +5 -6
  245. package/legacy/locales/svSE.js +5 -6
  246. package/legacy/locales/trTR.js +5 -6
  247. package/legacy/locales/ukUA.js +5 -6
  248. package/legacy/locales/urPK.js +5 -6
  249. package/legacy/locales/viVN.js +5 -6
  250. package/legacy/locales/zhCN.js +5 -6
  251. package/legacy/locales/zhHK.js +160 -0
  252. package/legacy/locales/zhTW.js +5 -6
  253. package/legacy/models/index.js +0 -1
  254. package/legacy/models/params/index.js +1 -2
  255. package/legacy/utils/utils.js +10 -1
  256. package/locales/arSD.js +5 -6
  257. package/locales/beBY.js +5 -6
  258. package/locales/bgBG.js +5 -6
  259. package/locales/csCZ.js +5 -6
  260. package/locales/daDK.js +5 -6
  261. package/locales/deDE.js +5 -6
  262. package/locales/elGR.js +5 -6
  263. package/locales/esES.js +5 -6
  264. package/locales/faIR.js +5 -6
  265. package/locales/fiFI.js +5 -6
  266. package/locales/frFR.js +5 -6
  267. package/locales/heIL.js +5 -6
  268. package/locales/hrHR.d.ts +1 -0
  269. package/locales/hrHR.js +148 -0
  270. package/locales/huHU.js +5 -6
  271. package/locales/index.d.ts +3 -0
  272. package/locales/index.js +4 -1
  273. package/locales/itIT.js +5 -6
  274. package/locales/jaJP.js +5 -6
  275. package/locales/koKR.js +5 -6
  276. package/locales/nbNO.js +5 -6
  277. package/locales/nlNL.js +5 -6
  278. package/locales/plPL.js +5 -6
  279. package/locales/ptBR.js +5 -6
  280. package/locales/ptPT.d.ts +1 -0
  281. package/locales/ptPT.js +148 -0
  282. package/locales/roRO.js +5 -6
  283. package/locales/ruRU.js +5 -6
  284. package/locales/skSK.js +5 -6
  285. package/locales/svSE.js +5 -6
  286. package/locales/trTR.js +5 -6
  287. package/locales/ukUA.js +5 -6
  288. package/locales/urPK.js +5 -6
  289. package/locales/viVN.js +5 -6
  290. package/locales/zhCN.js +5 -6
  291. package/locales/zhHK.d.ts +1 -0
  292. package/locales/zhHK.js +148 -0
  293. package/locales/zhTW.js +5 -6
  294. package/models/api/gridColumnGroupingApi.d.ts +2 -2
  295. package/models/api/gridCoreApi.d.ts +16 -16
  296. package/models/api/gridLocaleTextApi.d.ts +3 -5
  297. package/models/api/gridRowsMetaApi.d.ts +1 -1
  298. package/models/api/gridVirtualizationApi.d.ts +2 -3
  299. package/models/colDef/gridColType.d.ts +11 -2
  300. package/models/events/gridEventLookup.d.ts +3 -3
  301. package/models/gridFilterModel.d.ts +1 -1
  302. package/models/gridSlotsComponent.d.ts +21 -2
  303. package/models/gridSlotsComponentsProps.d.ts +4 -0
  304. package/models/gridStateCommunity.d.ts +5 -1
  305. package/models/index.d.ts +0 -1
  306. package/models/index.js +0 -1
  307. package/models/params/index.d.ts +0 -1
  308. package/models/params/index.js +1 -2
  309. package/models/props/DataGridProps.d.ts +6 -11
  310. package/modern/DataGrid/DataGrid.js +6 -6
  311. package/modern/DataGrid/useDataGridComponent.js +2 -1
  312. package/modern/DataGrid/useDataGridProps.js +1 -0
  313. package/modern/components/GridColumnHeaders.js +3 -11
  314. package/modern/components/GridDetailPanels.js +4 -0
  315. package/modern/components/GridHeaders.js +53 -0
  316. package/modern/components/GridPinnedRows.js +4 -0
  317. package/modern/components/GridRow.js +159 -96
  318. package/modern/components/GridScrollbarFillerCell.js +39 -0
  319. package/modern/components/base/GridBody.js +2 -116
  320. package/modern/components/base/GridOverlays.js +10 -16
  321. package/modern/components/cell/GridCell.js +65 -369
  322. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  323. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  324. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  325. package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  326. package/modern/components/columnsManagement/GridColumnsManagement.js +256 -0
  327. package/modern/components/columnsManagement/index.js +1 -0
  328. package/modern/components/columnsManagement/utils.js +16 -0
  329. package/modern/components/containers/GridRoot.js +18 -14
  330. package/modern/components/containers/GridRootStyles.js +307 -204
  331. package/modern/components/index.js +1 -0
  332. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  333. package/modern/components/panel/GridColumnsPanel.js +4 -209
  334. package/modern/components/panel/GridPanel.js +3 -4
  335. package/modern/components/panel/filterPanel/GridFilterForm.js +30 -13
  336. package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
  337. package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
  338. package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
  339. package/modern/components/toolbar/GridToolbarExport.js +6 -1
  340. package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
  341. package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
  342. package/modern/components/virtualization/GridBottomContainer.js +25 -0
  343. package/modern/components/virtualization/GridMainContainer.js +20 -0
  344. package/modern/components/virtualization/GridTopContainer.js +35 -0
  345. package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
  346. package/modern/components/virtualization/GridVirtualScroller.js +69 -16
  347. package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  348. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  349. package/modern/constants/defaultGridSlotsComponents.js +8 -3
  350. package/modern/constants/gridClasses.js +1 -1
  351. package/modern/constants/localeTextConstants.js +4 -6
  352. package/modern/hooks/core/gridCoreSelector.js +5 -0
  353. package/modern/hooks/core/useGridApiInitialization.js +3 -0
  354. package/modern/hooks/core/useGridInitialization.js +4 -0
  355. package/modern/hooks/core/useGridRefs.js +13 -0
  356. package/modern/hooks/core/useGridTheme.js +19 -0
  357. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  358. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
  359. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  360. package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  361. package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
  362. package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
  363. package/modern/hooks/features/columns/index.js +2 -1
  364. package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
  365. package/modern/hooks/features/columns/useGridColumns.js +19 -21
  366. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  367. package/modern/hooks/features/dimensions/index.js +1 -0
  368. package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
  369. package/modern/hooks/features/export/serializers/csvSerializer.js +2 -2
  370. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  371. package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
  372. package/modern/hooks/features/focus/useGridFocus.js +3 -3
  373. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  374. package/modern/hooks/features/pagination/useGridPagination.js +3 -5
  375. package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
  376. package/modern/hooks/features/rows/gridRowsUtils.js +8 -5
  377. package/modern/hooks/features/rows/useGridRowsMeta.js +7 -4
  378. package/modern/hooks/features/scroll/useGridScroll.js +8 -9
  379. package/modern/hooks/features/sorting/gridSortingUtils.js +1 -1
  380. package/modern/hooks/features/sorting/useGridSorting.js +15 -10
  381. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  382. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
  383. package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
  384. package/modern/hooks/utils/index.js +4 -1
  385. package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
  386. package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
  387. package/modern/hooks/utils/useResizeObserver.js +36 -0
  388. package/modern/hooks/utils/useRunOnce.js +18 -0
  389. package/modern/index.js +1 -1
  390. package/modern/internals/index.js +9 -7
  391. package/modern/locales/arSD.js +5 -6
  392. package/modern/locales/beBY.js +5 -6
  393. package/modern/locales/bgBG.js +5 -6
  394. package/modern/locales/csCZ.js +5 -6
  395. package/modern/locales/daDK.js +5 -6
  396. package/modern/locales/deDE.js +5 -6
  397. package/modern/locales/elGR.js +5 -6
  398. package/modern/locales/esES.js +5 -6
  399. package/modern/locales/faIR.js +5 -6
  400. package/modern/locales/fiFI.js +5 -6
  401. package/modern/locales/frFR.js +5 -6
  402. package/modern/locales/heIL.js +5 -6
  403. package/modern/locales/hrHR.js +148 -0
  404. package/modern/locales/huHU.js +5 -6
  405. package/modern/locales/index.js +4 -1
  406. package/modern/locales/itIT.js +5 -6
  407. package/modern/locales/jaJP.js +5 -6
  408. package/modern/locales/koKR.js +5 -6
  409. package/modern/locales/nbNO.js +5 -6
  410. package/modern/locales/nlNL.js +5 -6
  411. package/modern/locales/plPL.js +5 -6
  412. package/modern/locales/ptBR.js +5 -6
  413. package/modern/locales/ptPT.js +148 -0
  414. package/modern/locales/roRO.js +5 -6
  415. package/modern/locales/ruRU.js +5 -6
  416. package/modern/locales/skSK.js +5 -6
  417. package/modern/locales/svSE.js +5 -6
  418. package/modern/locales/trTR.js +5 -6
  419. package/modern/locales/ukUA.js +5 -6
  420. package/modern/locales/urPK.js +5 -6
  421. package/modern/locales/viVN.js +5 -6
  422. package/modern/locales/zhCN.js +5 -6
  423. package/modern/locales/zhHK.js +148 -0
  424. package/modern/locales/zhTW.js +5 -6
  425. package/modern/models/index.js +0 -1
  426. package/modern/models/params/index.js +1 -2
  427. package/modern/utils/utils.js +10 -1
  428. package/node/DataGrid/DataGrid.js +6 -6
  429. package/node/DataGrid/useDataGridComponent.js +1 -0
  430. package/node/DataGrid/useDataGridProps.js +1 -0
  431. package/node/components/GridColumnHeaders.js +3 -11
  432. package/node/components/GridDetailPanels.js +10 -0
  433. package/node/components/GridHeaders.js +60 -0
  434. package/node/components/GridPinnedRows.js +10 -0
  435. package/node/components/GridRow.js +157 -94
  436. package/node/components/GridScrollbarFillerCell.js +47 -0
  437. package/node/components/base/GridBody.js +7 -118
  438. package/node/components/base/GridOverlays.js +9 -15
  439. package/node/components/cell/GridCell.js +66 -369
  440. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  441. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
  442. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  443. package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  444. package/node/components/columnsManagement/GridColumnsManagement.js +264 -0
  445. package/node/components/columnsManagement/index.js +16 -0
  446. package/node/components/columnsManagement/utils.js +24 -0
  447. package/node/components/containers/GridRoot.js +17 -14
  448. package/node/components/containers/GridRootStyles.js +175 -72
  449. package/node/components/index.js +11 -0
  450. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  451. package/node/components/panel/GridColumnsPanel.js +4 -208
  452. package/node/components/panel/GridPanel.js +3 -4
  453. package/node/components/panel/filterPanel/GridFilterForm.js +29 -12
  454. package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
  455. package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
  456. package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
  457. package/node/components/toolbar/GridToolbarExport.js +6 -1
  458. package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
  459. package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
  460. package/node/components/virtualization/GridBottomContainer.js +34 -0
  461. package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
  462. package/node/components/virtualization/GridTopContainer.js +44 -0
  463. package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
  464. package/node/components/virtualization/GridVirtualScroller.js +69 -17
  465. package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
  466. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  467. package/node/constants/defaultGridSlotsComponents.js +6 -1
  468. package/node/constants/gridClasses.js +1 -1
  469. package/node/constants/localeTextConstants.js +4 -6
  470. package/node/hooks/core/gridCoreSelector.js +12 -0
  471. package/node/hooks/core/useGridApiInitialization.js +3 -0
  472. package/node/hooks/core/useGridInitialization.js +4 -0
  473. package/node/hooks/core/useGridRefs.js +22 -0
  474. package/node/hooks/core/useGridTheme.js +29 -0
  475. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  476. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
  477. package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  478. package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
  479. package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
  480. package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
  481. package/node/hooks/features/columns/index.js +22 -61
  482. package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
  483. package/node/hooks/features/columns/useGridColumns.js +20 -22
  484. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
  485. package/node/hooks/features/dimensions/index.js +11 -0
  486. package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
  487. package/node/hooks/features/export/serializers/csvSerializer.js +2 -2
  488. package/node/hooks/features/filter/useGridFilter.js +2 -2
  489. package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
  490. package/node/hooks/features/focus/useGridFocus.js +2 -2
  491. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
  492. package/node/hooks/features/pagination/useGridPagination.js +3 -5
  493. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  494. package/node/hooks/features/rows/gridRowsUtils.js +8 -5
  495. package/node/hooks/features/rows/useGridRowsMeta.js +5 -3
  496. package/node/hooks/features/scroll/useGridScroll.js +8 -9
  497. package/node/hooks/features/sorting/gridSortingUtils.js +1 -1
  498. package/node/hooks/features/sorting/useGridSorting.js +15 -10
  499. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  500. package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
  501. package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
  502. package/node/hooks/utils/index.js +36 -0
  503. package/node/hooks/utils/useGridAriaAttributes.js +1 -1
  504. package/node/hooks/utils/useGridNativeEventListener.js +3 -9
  505. package/node/hooks/utils/useResizeObserver.js +44 -0
  506. package/node/hooks/utils/useRunOnce.js +27 -0
  507. package/node/index.js +1 -1
  508. package/node/internals/index.js +86 -71
  509. package/node/locales/arSD.js +5 -6
  510. package/node/locales/beBY.js +5 -6
  511. package/node/locales/bgBG.js +5 -6
  512. package/node/locales/csCZ.js +5 -6
  513. package/node/locales/daDK.js +5 -6
  514. package/node/locales/deDE.js +5 -6
  515. package/node/locales/elGR.js +5 -6
  516. package/node/locales/esES.js +5 -6
  517. package/node/locales/faIR.js +5 -6
  518. package/node/locales/fiFI.js +5 -6
  519. package/node/locales/frFR.js +5 -6
  520. package/node/locales/heIL.js +5 -6
  521. package/node/locales/hrHR.js +154 -0
  522. package/node/locales/huHU.js +5 -6
  523. package/node/locales/index.js +33 -0
  524. package/node/locales/itIT.js +5 -6
  525. package/node/locales/jaJP.js +5 -6
  526. package/node/locales/koKR.js +5 -6
  527. package/node/locales/nbNO.js +5 -6
  528. package/node/locales/nlNL.js +5 -6
  529. package/node/locales/plPL.js +5 -6
  530. package/node/locales/ptBR.js +5 -6
  531. package/node/locales/ptPT.js +154 -0
  532. package/node/locales/roRO.js +5 -6
  533. package/node/locales/ruRU.js +5 -6
  534. package/node/locales/skSK.js +5 -6
  535. package/node/locales/svSE.js +5 -6
  536. package/node/locales/trTR.js +5 -6
  537. package/node/locales/ukUA.js +5 -6
  538. package/node/locales/urPK.js +5 -6
  539. package/node/locales/viVN.js +5 -6
  540. package/node/locales/zhCN.js +5 -6
  541. package/node/locales/zhHK.js +154 -0
  542. package/node/locales/zhTW.js +5 -6
  543. package/node/models/index.js +0 -11
  544. package/node/models/params/index.js +0 -11
  545. package/node/utils/utils.js +11 -1
  546. package/package.json +6 -6
  547. package/utils/utils.d.ts +6 -0
  548. package/utils/utils.js +10 -1
  549. package/components/DataGridVirtualScroller.d.ts +0 -3
  550. package/components/DataGridVirtualScroller.js +0 -35
  551. package/components/containers/GridMainContainer.js +0 -43
  552. package/legacy/components/DataGridVirtualScroller.js +0 -32
  553. package/legacy/components/containers/GridMainContainer.js +0 -45
  554. package/legacy/models/gridRootContainerRef.js +0 -1
  555. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  556. package/models/gridRootContainerRef.d.ts +0 -5
  557. package/models/gridRootContainerRef.js +0 -1
  558. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
  559. package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  560. package/modern/components/DataGridVirtualScroller.js +0 -35
  561. package/modern/components/containers/GridMainContainer.js +0 -42
  562. package/modern/models/gridRootContainerRef.js +0 -1
  563. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  564. package/node/components/DataGridVirtualScroller.js +0 -42
  565. package/node/models/gridRootContainerRef.js +0 -5
  566. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +0 -5
@@ -1,216 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
- var _excluded = ["sort", "searchPredicate", "autoFocusSearchField", "disableHideAllButton", "disableShowAllButton", "getTogglableColumns"];
7
2
  import * as React from 'react';
8
3
  import PropTypes from 'prop-types';
9
- import { unstable_composeClasses as composeClasses } from '@mui/utils';
10
- import IconButton from '@mui/material/IconButton';
11
- import { switchClasses } from '@mui/material/Switch';
12
- import FormControlLabel from '@mui/material/FormControlLabel';
13
- import { styled } from '@mui/material/styles';
14
- import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../../hooks/features/columns/gridColumnsSelector';
15
- import { useGridSelector } from '../../hooks/utils/useGridSelector';
16
- import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
17
- import { GridPanelContent } from './GridPanelContent';
18
- import { GridPanelFooter } from './GridPanelFooter';
19
- import { GridPanelHeader } from './GridPanelHeader';
20
4
  import { GridPanelWrapper } from './GridPanelWrapper';
21
- import { GRID_EXPERIMENTAL_ENABLED } from '../../constants/envConstants';
5
+ import { GridColumnsManagement } from '../columnsManagement';
22
6
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
23
- import { getDataGridUtilityClass } from '../../constants/gridClasses';
24
7
  import { jsx as _jsx } from "react/jsx-runtime";
25
- import { jsxs as _jsxs } from "react/jsx-runtime";
26
- var useUtilityClasses = function useUtilityClasses(ownerState) {
27
- var classes = ownerState.classes;
28
- var slots = {
29
- root: ['columnsPanel'],
30
- columnsPanelRow: ['columnsPanelRow']
31
- };
32
- return composeClasses(slots, getDataGridUtilityClass, classes);
33
- };
34
- var GridColumnsPanelRoot = styled('div', {
35
- name: 'MuiDataGrid',
36
- slot: 'ColumnsPanel',
37
- overridesResolver: function overridesResolver(props, styles) {
38
- return styles.columnsPanel;
39
- }
40
- })({
41
- padding: '8px 0px 8px 8px'
42
- });
43
- var GridColumnsPanelRowRoot = styled('div', {
44
- name: 'MuiDataGrid',
45
- slot: 'ColumnsPanelRow',
46
- overridesResolver: function overridesResolver(props, styles) {
47
- return styles.columnsPanelRow;
48
- }
49
- })(function (_ref) {
50
- var theme = _ref.theme;
51
- return _defineProperty({
52
- display: 'flex',
53
- justifyContent: 'space-between',
54
- padding: '1px 8px 1px 7px'
55
- }, "& .".concat(switchClasses.root), {
56
- marginRight: theme.spacing(0.5)
57
- });
58
- });
59
- var GridIconButtonRoot = styled(IconButton)({
60
- justifyContent: 'flex-end'
61
- });
62
- var collator = new Intl.Collator();
63
- var defaultSearchPredicate = function defaultSearchPredicate(column, searchValue) {
64
- return (column.headerName || column.field).toLowerCase().indexOf(searchValue) > -1;
65
- };
66
8
  function GridColumnsPanel(props) {
67
- var _rootProps$slotProps, _rootProps$slotProps3, _rootProps$slotProps4;
68
- var apiRef = useGridApiContext();
69
- var searchInputRef = React.useRef(null);
70
- var columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
71
- var columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
9
+ var _rootProps$slotProps;
72
10
  var rootProps = useGridRootProps();
73
- var _React$useState = React.useState(''),
74
- _React$useState2 = _slicedToArray(_React$useState, 2),
75
- searchValue = _React$useState2[0],
76
- setSearchValue = _React$useState2[1];
77
- var classes = useUtilityClasses(rootProps);
78
- var sort = props.sort,
79
- _props$searchPredicat = props.searchPredicate,
80
- searchPredicate = _props$searchPredicat === void 0 ? defaultSearchPredicate : _props$searchPredicat,
81
- _props$autoFocusSearc = props.autoFocusSearchField,
82
- autoFocusSearchField = _props$autoFocusSearc === void 0 ? true : _props$autoFocusSearc,
83
- _props$disableHideAll = props.disableHideAllButton,
84
- disableHideAllButton = _props$disableHideAll === void 0 ? false : _props$disableHideAll,
85
- _props$disableShowAll = props.disableShowAllButton,
86
- disableShowAllButton = _props$disableShowAll === void 0 ? false : _props$disableShowAll,
87
- getTogglableColumns = props.getTogglableColumns,
88
- other = _objectWithoutProperties(props, _excluded);
89
- var sortedColumns = React.useMemo(function () {
90
- switch (sort) {
91
- case 'asc':
92
- return _toConsumableArray(columns).sort(function (a, b) {
93
- return collator.compare(a.headerName || a.field, b.headerName || b.field);
94
- });
95
- case 'desc':
96
- return _toConsumableArray(columns).sort(function (a, b) {
97
- return -collator.compare(a.headerName || a.field, b.headerName || b.field);
98
- });
99
- default:
100
- return columns;
101
- }
102
- }, [columns, sort]);
103
- var toggleColumn = function toggleColumn(event) {
104
- var _ref3 = event.target,
105
- field = _ref3.name;
106
- apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false);
107
- };
108
- var toggleAllColumns = React.useCallback(function (isVisible) {
109
- var currentModel = gridColumnVisibilityModelSelector(apiRef);
110
- var newModel = _extends({}, currentModel);
111
- var togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null;
112
- columns.forEach(function (col) {
113
- if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) {
114
- if (isVisible) {
115
- // delete the key from the model instead of setting it to `true`
116
- delete newModel[col.field];
117
- } else {
118
- newModel[col.field] = false;
119
- }
120
- }
121
- });
122
- return apiRef.current.setColumnVisibilityModel(newModel);
123
- }, [apiRef, columns, getTogglableColumns]);
124
- var handleSearchValueChange = React.useCallback(function (event) {
125
- setSearchValue(event.target.value);
126
- }, []);
127
- var currentColumns = React.useMemo(function () {
128
- var togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;
129
- var togglableSortedColumns = togglableColumns ? sortedColumns.filter(function (_ref4) {
130
- var field = _ref4.field;
131
- return togglableColumns.includes(field);
132
- }) : sortedColumns;
133
- if (!searchValue) {
134
- return togglableSortedColumns;
135
- }
136
- return togglableSortedColumns.filter(function (column) {
137
- return searchPredicate(column, searchValue.toLowerCase());
138
- });
139
- }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);
140
- var firstSwitchRef = React.useRef(null);
141
- React.useEffect(function () {
142
- if (autoFocusSearchField) {
143
- searchInputRef.current.focus();
144
- } else if (firstSwitchRef.current && typeof firstSwitchRef.current.focus === 'function') {
145
- firstSwitchRef.current.focus();
146
- }
147
- }, [autoFocusSearchField]);
148
- var firstHideableColumnFound = false;
149
- var isFirstHideableColumn = function isFirstHideableColumn(column) {
150
- if (firstHideableColumnFound === false && column.hideable !== false) {
151
- firstHideableColumnFound = true;
152
- return true;
153
- }
154
- return false;
155
- };
156
- return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, other, {
157
- children: [/*#__PURE__*/_jsx(GridPanelHeader, {
158
- children: /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({
159
- label: apiRef.current.getLocaleText('columnsPanelTextFieldLabel'),
160
- placeholder: apiRef.current.getLocaleText('columnsPanelTextFieldPlaceholder'),
161
- inputRef: searchInputRef,
162
- value: searchValue,
163
- onChange: handleSearchValueChange,
164
- variant: "standard",
165
- fullWidth: true
166
- }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField))
167
- }), /*#__PURE__*/_jsx(GridPanelContent, {
168
- children: /*#__PURE__*/_jsx(GridColumnsPanelRoot, {
169
- className: classes.root,
170
- ownerState: rootProps,
171
- children: currentColumns.map(function (column) {
172
- var _rootProps$slotProps2;
173
- return /*#__PURE__*/_jsxs(GridColumnsPanelRowRoot, {
174
- className: classes.columnsPanelRow,
175
- ownerState: rootProps,
176
- children: [/*#__PURE__*/_jsx(FormControlLabel, {
177
- control: /*#__PURE__*/_jsx(rootProps.slots.baseSwitch, _extends({
178
- disabled: column.hideable === false,
179
- checked: columnVisibilityModel[column.field] !== false,
180
- onClick: toggleColumn,
181
- name: column.field,
182
- size: "small",
183
- inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined
184
- }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSwitch)),
185
- label: column.headerName || column.field
186
- }), !rootProps.disableColumnReorder && GRID_EXPERIMENTAL_ENABLED && /*#__PURE__*/_jsx(GridIconButtonRoot, {
187
- draggable: true,
188
- "aria-label": apiRef.current.getLocaleText('columnsPanelDragIconLabel'),
189
- title: apiRef.current.getLocaleText('columnsPanelDragIconLabel'),
190
- size: "small",
191
- disabled: true,
192
- children: /*#__PURE__*/_jsx(rootProps.slots.columnReorderIcon, {})
193
- })]
194
- }, column.field);
195
- })
196
- })
197
- }), disableShowAllButton && disableHideAllButton ? null : /*#__PURE__*/_jsxs(GridPanelFooter, {
198
- children: [!disableHideAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
199
- onClick: function onClick() {
200
- return toggleAllColumns(false);
201
- }
202
- }, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseButton, {
203
- disabled: disableHideAllButton,
204
- children: apiRef.current.getLocaleText('columnsPanelHideAllButton')
205
- })) : /*#__PURE__*/_jsx("span", {}), !disableShowAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
206
- onClick: function onClick() {
207
- return toggleAllColumns(true);
208
- }
209
- }, (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseButton, {
210
- disabled: disableShowAllButton,
211
- children: apiRef.current.getLocaleText('columnsPanelShowAllButton')
212
- })) : null]
213
- })]
11
+ return /*#__PURE__*/_jsx(GridPanelWrapper, _extends({}, props, {
12
+ children: /*#__PURE__*/_jsx(GridColumnsManagement, _extends({}, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.columnsManagement))
214
13
  }));
215
14
  }
216
15
  process.env.NODE_ENV !== "production" ? GridColumnsPanel.propTypes = {
@@ -218,33 +17,6 @@ process.env.NODE_ENV !== "production" ? GridColumnsPanel.propTypes = {
218
17
  // | These PropTypes are generated from the TypeScript type definitions |
219
18
  // | To update them edit the TypeScript types and run "yarn proptypes" |
220
19
  // ----------------------------------------------------------------------
221
- /**
222
- * If `true`, the column search field will be focused automatically.
223
- * If `false`, the first column switch input will be focused automatically.
224
- * This helps to avoid input keyboard panel to popup automatically on touch devices.
225
- * @default true
226
- */
227
- autoFocusSearchField: PropTypes.bool,
228
- /**
229
- * If `true`, the `Hide all` button will not be displayed.
230
- * @default false
231
- */
232
- disableHideAllButton: PropTypes.bool,
233
- /**
234
- * If `true`, the `Show all` button will be disabled
235
- * @default false
236
- */
237
- disableShowAllButton: PropTypes.bool,
238
- /**
239
- * Returns the list of togglable columns.
240
- * If used, only those columns will be displayed in the panel
241
- * which are passed as the return value of the function.
242
- * @param {GridColDef[]} columns The `ColDef` list of all columns.
243
- * @returns {GridColDef['field'][]} The list of togglable columns' field names.
244
- */
245
- getTogglableColumns: PropTypes.func,
246
- searchPredicate: PropTypes.func,
247
- slotProps: PropTypes.object,
248
- sort: PropTypes.oneOf(['asc', 'desc'])
20
+ slotProps: PropTypes.object
249
21
  } : void 0;
250
22
  export { GridColumnsPanel };
@@ -12,7 +12,6 @@ import Paper from '@mui/material/Paper';
12
12
  import Popper from '@mui/material/Popper';
13
13
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
14
14
  import { isEscapeKey } from '../../utils/keyboardUtils';
15
- import { gridClasses } from '../../constants/gridClasses';
16
15
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
17
16
  import { jsx as _jsx } from "react/jsx-runtime";
18
17
  export var gridPanelClasses = generateUtilityClasses('MuiDataGrid', ['panel', 'paper']);
@@ -87,9 +86,9 @@ var GridPanel = /*#__PURE__*/React.forwardRef(function (props, ref) {
87
86
  setAnchorEl = _React$useState4[1];
88
87
  React.useEffect(function () {
89
88
  var _apiRef$current$rootE;
90
- var columnHeadersElement = (_apiRef$current$rootE = apiRef.current.rootElementRef) == null || (_apiRef$current$rootE = _apiRef$current$rootE.current) == null ? void 0 : _apiRef$current$rootE.querySelector(".".concat(gridClasses.columnHeaders));
91
- if (columnHeadersElement) {
92
- setAnchorEl(columnHeadersElement);
89
+ var panelAnchor = (_apiRef$current$rootE = apiRef.current.rootElementRef) == null || (_apiRef$current$rootE = _apiRef$current$rootE.current) == null ? void 0 : _apiRef$current$rootE.querySelector('[data-id="gridPanelAnchor"]');
90
+ if (panelAnchor) {
91
+ setAnchorEl(panelAnchor);
93
92
  }
94
93
  }, [apiRef]);
95
94
  if (!anchorEl) {
@@ -1,13 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["item", "hasMultipleFilters", "deleteFilter", "applyFilterChanges", "multiFilterOperator", "showMultiFilterOperators", "disableMultiFilterOperator", "applyMultiFilterOperatorChanges", "focusElementRef", "logicOperators", "columnsSort", "filterColumns", "deleteIconProps", "logicOperatorInputProps", "operatorInputProps", "columnInputProps", "valueInputProps", "children"],
3
+ var _excluded = ["item", "hasMultipleFilters", "deleteFilter", "applyFilterChanges", "showMultiFilterOperators", "disableMultiFilterOperator", "applyMultiFilterOperatorChanges", "focusElementRef", "logicOperators", "columnsSort", "filterColumns", "deleteIconProps", "logicOperatorInputProps", "operatorInputProps", "columnInputProps", "valueInputProps", "readOnly", "children"],
4
4
  _excluded2 = ["InputComponentProps"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_capitalize as capitalize } from '@mui/utils';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import clsx from 'clsx';
10
- import { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';
10
+ import { gridFilterableColumnDefinitionsSelector, gridColumnLookupSelector } from '../../../hooks/features/columns/gridColumnsSelector';
11
11
  import { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';
12
12
  import { useGridSelector } from '../../../hooks/utils/useGridSelector';
13
13
  import { GridLogicOperator } from '../../../models/gridFilterItem';
@@ -111,12 +111,11 @@ var getColumnLabel = function getColumnLabel(col) {
111
111
  };
112
112
  var collator = new Intl.Collator();
113
113
  var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props, ref) {
114
- var _rootProps$slotProps, _rootProps$slotProps2, _baseSelectProps$nati, _rootProps$slotProps3, _rootProps$slotProps4, _rootProps$slotProps5, _rootProps$slotProps6, _rootProps$slotProps7, _rootProps$slotProps8, _currentColumn$filter2;
114
+ var _filterModel$logicOpe, _rootProps$slotProps, _rootProps$slotProps2, _baseSelectProps$nati, _rootProps$slotProps3, _rootProps$slotProps4, _rootProps$slotProps5, _rootProps$slotProps6, _rootProps$slotProps7, _rootProps$slotProps8, _currentColumn$filter2;
115
115
  var item = props.item,
116
116
  hasMultipleFilters = props.hasMultipleFilters,
117
117
  deleteFilter = props.deleteFilter,
118
118
  applyFilterChanges = props.applyFilterChanges,
119
- multiFilterOperator = props.multiFilterOperator,
120
119
  showMultiFilterOperators = props.showMultiFilterOperators,
121
120
  disableMultiFilterOperator = props.disableMultiFilterOperator,
122
121
  applyMultiFilterOperatorChanges = props.applyMultiFilterOperatorChanges,
@@ -135,9 +134,11 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
135
134
  columnInputProps = _props$columnInputPro === void 0 ? {} : _props$columnInputPro,
136
135
  _props$valueInputProp = props.valueInputProps,
137
136
  valueInputProps = _props$valueInputProp === void 0 ? {} : _props$valueInputProp,
137
+ readOnly = props.readOnly,
138
138
  children = props.children,
139
139
  other = _objectWithoutProperties(props, _excluded);
140
140
  var apiRef = useGridApiContext();
141
+ var columnLookup = useGridSelector(apiRef, gridColumnLookupSelector);
141
142
  var filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);
142
143
  var filterModel = useGridSelector(apiRef, gridFilterModelSelector);
143
144
  var columnSelectId = useId();
@@ -148,6 +149,7 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
148
149
  var classes = useUtilityClasses(rootProps);
149
150
  var valueRef = React.useRef(null);
150
151
  var filterSelectorRef = React.useRef(null);
152
+ var multiFilterOperator = (_filterModel$logicOpe = filterModel.logicOperator) != null ? _filterModel$logicOpe : GridLogicOperator.And;
151
153
  var hasLogicOperatorColumn = hasMultipleFilters && logicOperators.length > 0;
152
154
  var baseFormControlProps = ((_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseFormControl) || {};
153
155
  var baseSelectProps = ((_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseSelect) || {};
@@ -158,6 +160,15 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
158
160
  valueInputPropsOther = _objectWithoutProperties(valueInputProps, _excluded2);
159
161
  var _React$useMemo = React.useMemo(function () {
160
162
  var itemField = item.field;
163
+
164
+ // Yields a valid value if the current filter belongs to a column that is not filterable
165
+ var selectedNonFilterableColumn = columnLookup[item.field].filterable === false ? columnLookup[item.field] : null;
166
+ if (selectedNonFilterableColumn) {
167
+ return {
168
+ filteredColumns: [selectedNonFilterableColumn],
169
+ selectedField: itemField
170
+ };
171
+ }
161
172
  if (filterColumns === undefined || typeof filterColumns !== 'function') {
162
173
  return {
163
174
  filteredColumns: filterableColumns,
@@ -179,7 +190,7 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
179
190
  }),
180
191
  selectedField: itemField
181
192
  };
182
- }, [filterColumns, filterModel == null ? void 0 : filterModel.items, filterableColumns, item.field]),
193
+ }, [filterColumns, filterModel == null ? void 0 : filterModel.items, filterableColumns, item.field, columnLookup]),
183
194
  filteredColumns = _React$useMemo.filteredColumns,
184
195
  selectedField = _React$useMemo.selectedField;
185
196
  var sortedFilteredColumns = React.useMemo(function () {
@@ -302,7 +313,8 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
302
313
  "aria-label": apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),
303
314
  title: apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),
304
315
  onClick: handleDeleteFilter,
305
- size: "small"
316
+ size: "small",
317
+ disabled: readOnly
306
318
  }, (_rootProps$slotProps5 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps5.baseIconButton, {
307
319
  children: /*#__PURE__*/_jsx(rootProps.slots.filterPanelDeleteIcon, {
308
320
  fontSize: "small"
@@ -351,7 +363,8 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
351
363
  label: apiRef.current.getLocaleText('filterPanelColumns'),
352
364
  value: selectedField != null ? selectedField : '',
353
365
  onChange: changeColumn,
354
- native: isBaseSelectNative
366
+ native: isBaseSelectNative,
367
+ disabled: readOnly
355
368
  }, (_rootProps$slotProps7 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps7.baseSelect, {
356
369
  children: sortedFilteredColumns.map(function (col) {
357
370
  return /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
@@ -378,7 +391,8 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
378
391
  value: item.operator,
379
392
  onChange: changeOperator,
380
393
  native: isBaseSelectNative,
381
- inputRef: filterSelectorRef
394
+ inputRef: filterSelectorRef,
395
+ disabled: readOnly
382
396
  }, (_rootProps$slotProps8 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps8.baseSelect, {
383
397
  children: currentColumn == null || (_currentColumn$filter2 = currentColumn.filterOperators) == null ? void 0 : _currentColumn$filter2.map(function (operator) {
384
398
  return /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
@@ -398,7 +412,8 @@ var GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(props
398
412
  apiRef: apiRef,
399
413
  item: item,
400
414
  applyValue: applyFilterChanges,
401
- focusElementRef: valueRef
415
+ focusElementRef: valueRef,
416
+ disabled: readOnly
402
417
  }, currentOperator.InputComponentProps, InputComponentProps), item.field) : null
403
418
  }))]
404
419
  }));
@@ -481,15 +496,17 @@ process.env.NODE_ENV !== "production" ? GridFilterForm.propTypes = {
481
496
  * @default [GridLogicOperator.And, GridLogicOperator.Or]
482
497
  */
483
498
  logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),
484
- /**
485
- * The current logic operator applied.
486
- */
487
- multiFilterOperator: PropTypes.oneOf(['and', 'or']),
488
499
  /**
489
500
  * Props passed to the operator input component.
490
501
  * @default {}
491
502
  */
492
503
  operatorInputProps: PropTypes.any,
504
+ /**
505
+ * `true` if the filter is disabled/read only.
506
+ * i.e. `colDef.fiterable = false` but passed in `filterModel`
507
+ * @default false
508
+ */
509
+ readOnly: PropTypes.bool,
493
510
  /**
494
511
  * If `true`, the logic operator field is visible.
495
512
  */
@@ -13,7 +13,7 @@ import { GridFilterForm } from './GridFilterForm';
13
13
  import { useGridRootProps } from '../../../hooks/utils/useGridRootProps';
14
14
  import { useGridSelector } from '../../../hooks/utils/useGridSelector';
15
15
  import { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';
16
- import { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';
16
+ import { gridFilterableColumnDefinitionsSelector, gridFilterableColumnLookupSelector } from '../../../hooks/features/columns/gridColumnsSelector';
17
17
  import { jsx as _jsx } from "react/jsx-runtime";
18
18
  import { jsxs as _jsxs } from "react/jsx-runtime";
19
19
  var getGridFilter = function getGridFilter(col) {
@@ -29,6 +29,7 @@ var GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(pro
29
29
  var rootProps = useGridRootProps();
30
30
  var filterModel = useGridSelector(apiRef, gridFilterModelSelector);
31
31
  var filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);
32
+ var filterableColumnsLookup = useGridSelector(apiRef, gridFilterableColumnLookupSelector);
32
33
  var lastFilterRef = React.useRef(null);
33
34
  var placeholderFilter = React.useRef(null);
34
35
  var _props$logicOperators = props.logicOperators,
@@ -105,65 +106,93 @@ var GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(pro
105
106
  return placeholderFilter.current ? [placeholderFilter.current] : [];
106
107
  }, [filterModel.items, getDefaultFilter]);
107
108
  var hasMultipleFilters = items.length > 1;
108
- var addNewFilter = function addNewFilter() {
109
+ var _React$useMemo = React.useMemo(function () {
110
+ return items.reduce(function (acc, item) {
111
+ if (filterableColumnsLookup[item.field]) {
112
+ acc.validFilters.push(item);
113
+ } else {
114
+ acc.readOnlyFilters.push(item);
115
+ }
116
+ return acc;
117
+ }, {
118
+ readOnlyFilters: [],
119
+ validFilters: []
120
+ });
121
+ }, [items, filterableColumnsLookup]),
122
+ readOnlyFilters = _React$useMemo.readOnlyFilters,
123
+ validFilters = _React$useMemo.validFilters;
124
+ var addNewFilter = React.useCallback(function () {
109
125
  var newFilter = getNewFilter();
110
126
  if (!newFilter) {
111
127
  return;
112
128
  }
113
129
  apiRef.current.upsertFilterItems([].concat(_toConsumableArray(items), [newFilter]));
114
- };
130
+ }, [apiRef, getNewFilter, items]);
115
131
  var deleteFilter = React.useCallback(function (item) {
116
- var shouldCloseFilterPanel = items.length === 1;
132
+ var shouldCloseFilterPanel = validFilters.length === 1;
117
133
  apiRef.current.deleteFilterItem(item);
118
134
  if (shouldCloseFilterPanel) {
119
135
  apiRef.current.hideFilterPanel();
120
136
  }
121
- }, [apiRef, items.length]);
122
- var handleRemoveAll = function handleRemoveAll() {
123
- if (items.length === 1 && items[0].value === undefined) {
124
- apiRef.current.deleteFilterItem(items[0]);
125
- apiRef.current.hideFilterPanel();
137
+ }, [apiRef, validFilters.length]);
138
+ var handleRemoveAll = React.useCallback(function () {
139
+ if (validFilters.length === 1 && validFilters[0].value === undefined) {
140
+ apiRef.current.deleteFilterItem(validFilters[0]);
141
+ return apiRef.current.hideFilterPanel();
126
142
  }
127
- apiRef.current.setFilterModel(_extends({}, filterModel, {
128
- items: []
143
+ return apiRef.current.setFilterModel(_extends({}, filterModel, {
144
+ items: readOnlyFilters
129
145
  }));
130
- };
146
+ }, [apiRef, readOnlyFilters, filterModel, validFilters]);
131
147
  React.useEffect(function () {
132
148
  if (logicOperators.length > 0 && filterModel.logicOperator && !logicOperators.includes(filterModel.logicOperator)) {
133
149
  applyFilterLogicOperator(logicOperators[0]);
134
150
  }
135
151
  }, [logicOperators, applyFilterLogicOperator, filterModel.logicOperator]);
136
152
  React.useEffect(function () {
137
- if (items.length > 0) {
153
+ if (validFilters.length > 0) {
138
154
  lastFilterRef.current.focus();
139
155
  }
140
- }, [items.length]);
156
+ }, [validFilters.length]);
141
157
  return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({
142
158
  ref: ref
143
159
  }, other, {
144
- children: [/*#__PURE__*/_jsx(GridPanelContent, {
145
- children: items.map(function (item, index) {
160
+ children: [/*#__PURE__*/_jsxs(GridPanelContent, {
161
+ children: [readOnlyFilters.map(function (item, index) {
146
162
  return /*#__PURE__*/_jsx(GridFilterForm, _extends({
147
163
  item: item,
148
164
  applyFilterChanges: applyFilter,
149
165
  deleteFilter: deleteFilter,
150
166
  hasMultipleFilters: hasMultipleFilters,
151
167
  showMultiFilterOperators: index > 0,
152
- multiFilterOperator: filterModel.logicOperator,
153
168
  disableMultiFilterOperator: index !== 1,
154
169
  applyMultiFilterOperatorChanges: applyFilterLogicOperator,
155
- focusElementRef: index === items.length - 1 ? lastFilterRef : null,
170
+ focusElementRef: null,
171
+ readOnly: true,
156
172
  logicOperators: logicOperators,
157
173
  columnsSort: columnsSort
158
174
  }, filterFormProps), item.id == null ? index : item.id);
159
- })
175
+ }), validFilters.map(function (item, index) {
176
+ return /*#__PURE__*/_jsx(GridFilterForm, _extends({
177
+ item: item,
178
+ applyFilterChanges: applyFilter,
179
+ deleteFilter: deleteFilter,
180
+ hasMultipleFilters: hasMultipleFilters,
181
+ showMultiFilterOperators: readOnlyFilters.length + index > 0,
182
+ disableMultiFilterOperator: readOnlyFilters.length + index !== 1,
183
+ applyMultiFilterOperatorChanges: applyFilterLogicOperator,
184
+ focusElementRef: index === validFilters.length - 1 ? lastFilterRef : null,
185
+ logicOperators: logicOperators,
186
+ columnsSort: columnsSort
187
+ }, filterFormProps), item.id == null ? index + readOnlyFilters.length : item.id);
188
+ })]
160
189
  }), !rootProps.disableMultipleColumnsFiltering && !(disableAddFilterButton && disableRemoveAllButton) ? /*#__PURE__*/_jsxs(GridPanelFooter, {
161
190
  children: [!disableAddFilterButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
162
191
  onClick: addNewFilter,
163
192
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelAddIcon, {})
164
193
  }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {
165
194
  children: apiRef.current.getLocaleText('filterPanelAddFilter')
166
- })) : /*#__PURE__*/_jsx("span", {}), !disableRemoveAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
195
+ })) : /*#__PURE__*/_jsx("span", {}), !disableRemoveAllButton && validFilters.length > 0 ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
167
196
  onClick: handleRemoveAll,
168
197
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelRemoveAllIcon, {})
169
198
  }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["onClick"];
4
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
5
4
  import { unstable_useId as useId } from '@mui/material/utils';
6
5
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
7
6
  import { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';
@@ -9,22 +8,25 @@ import { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel
9
8
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
10
9
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
11
10
  import { jsx as _jsx } from "react/jsx-runtime";
12
- export var GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {
13
- var _rootProps$slotProps;
14
- var onClick = props.onClick,
15
- other = _objectWithoutProperties(props, _excluded);
11
+ var GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {
12
+ var _rootProps$slotProps, _rootProps$slotProps2;
13
+ var _props$slotProps = props.slotProps,
14
+ slotProps = _props$slotProps === void 0 ? {} : _props$slotProps;
15
+ var buttonProps = slotProps.button || {};
16
+ var tooltipProps = slotProps.tooltip || {};
16
17
  var columnButtonId = useId();
17
18
  var columnPanelId = useId();
18
19
  var apiRef = useGridApiContext();
19
20
  var rootProps = useGridRootProps();
20
21
  var preferencePanel = useGridSelector(apiRef, gridPreferencePanelStateSelector);
21
22
  var showColumns = function showColumns(event) {
23
+ var _buttonProps$onClick;
22
24
  if (preferencePanel.open && preferencePanel.openedPanelValue === GridPreferencePanelsValue.columns) {
23
25
  apiRef.current.hidePreferences();
24
26
  } else {
25
27
  apiRef.current.showPreferences(GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);
26
28
  }
27
- onClick == null || onClick(event);
29
+ (_buttonProps$onClick = buttonProps.onClick) == null || _buttonProps$onClick.call(buttonProps, event);
28
30
  };
29
31
 
30
32
  // Disable the button if the corresponding is disabled
@@ -32,18 +34,35 @@ export var GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function Gri
32
34
  return null;
33
35
  }
34
36
  var isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;
35
- return /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
36
- ref: ref,
37
- id: columnButtonId,
38
- size: "small",
39
- "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
40
- "aria-haspopup": "menu",
41
- "aria-expanded": isOpen,
42
- "aria-controls": isOpen ? columnPanelId : undefined,
43
- startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})
44
- }, other, {
45
- onClick: showColumns
46
- }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseButton, {
47
- children: apiRef.current.getLocaleText('toolbarColumns')
37
+ return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
38
+ title: apiRef.current.getLocaleText('toolbarColumnsLabel'),
39
+ enterDelay: 1000
40
+ }, tooltipProps, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTooltip, {
41
+ children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
42
+ ref: ref,
43
+ id: columnButtonId,
44
+ size: "small",
45
+ "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
46
+ "aria-haspopup": "menu",
47
+ "aria-expanded": isOpen,
48
+ "aria-controls": isOpen ? columnPanelId : undefined,
49
+ startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})
50
+ }, buttonProps, {
51
+ onClick: showColumns
52
+ }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseButton, {
53
+ children: apiRef.current.getLocaleText('toolbarColumns')
54
+ }))
48
55
  }));
49
- });
56
+ });
57
+ process.env.NODE_ENV !== "production" ? GridToolbarColumnsButton.propTypes = {
58
+ // ----------------------------- Warning --------------------------------
59
+ // | These PropTypes are generated from the TypeScript type definitions |
60
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
61
+ // ----------------------------------------------------------------------
62
+ /**
63
+ * The props used for each slot inside.
64
+ * @default {}
65
+ */
66
+ slotProps: PropTypes.object
67
+ } : void 0;
68
+ export { GridToolbarColumnsButton };