@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
@@ -6,6 +6,7 @@ export * from './columnSelection';
6
6
  export * from '../material/icons';
7
7
  export * from './menu';
8
8
  export * from './panel';
9
+ export * from './columnsManagement';
9
10
  export * from './toolbar';
10
11
  export * from './GridApiContext';
11
12
  export * from './GridFooter';
@@ -30,7 +30,7 @@ function GridColumnMenuSortItem(props) {
30
30
  const direction = event.currentTarget.getAttribute('data-value') || null;
31
31
  apiRef.current.sortColumn(colDef.field, direction === sortDirection ? null : direction);
32
32
  }, [apiRef, colDef, onClick, sortDirection]);
33
- if (!colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
33
+ if (rootProps.disableColumnSorting || !colDef || !colDef.sortable || !sortingOrder.some(item => !!item)) {
34
34
  return null;
35
35
  }
36
36
  const getLabel = key => {
@@ -1,192 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["sort", "searchPredicate", "autoFocusSearchField", "disableHideAllButton", "disableShowAllButton", "getTogglableColumns"];
4
2
  import * as React from 'react';
5
3
  import PropTypes from 'prop-types';
6
- import { unstable_composeClasses as composeClasses } from '@mui/utils';
7
- import IconButton from '@mui/material/IconButton';
8
- import { switchClasses } from '@mui/material/Switch';
9
- import FormControlLabel from '@mui/material/FormControlLabel';
10
- import { styled } from '@mui/material/styles';
11
- import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../../hooks/features/columns/gridColumnsSelector';
12
- import { useGridSelector } from '../../hooks/utils/useGridSelector';
13
- import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
14
- import { GridPanelContent } from './GridPanelContent';
15
- import { GridPanelFooter } from './GridPanelFooter';
16
- import { GridPanelHeader } from './GridPanelHeader';
17
4
  import { GridPanelWrapper } from './GridPanelWrapper';
18
- import { GRID_EXPERIMENTAL_ENABLED } from '../../constants/envConstants';
5
+ import { GridColumnsManagement } from '../columnsManagement';
19
6
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
20
- import { getDataGridUtilityClass } from '../../constants/gridClasses';
21
7
  import { jsx as _jsx } from "react/jsx-runtime";
22
- import { jsxs as _jsxs } from "react/jsx-runtime";
23
- const useUtilityClasses = ownerState => {
24
- const {
25
- classes
26
- } = ownerState;
27
- const slots = {
28
- root: ['columnsPanel'],
29
- columnsPanelRow: ['columnsPanelRow']
30
- };
31
- return composeClasses(slots, getDataGridUtilityClass, classes);
32
- };
33
- const GridColumnsPanelRoot = styled('div', {
34
- name: 'MuiDataGrid',
35
- slot: 'ColumnsPanel',
36
- overridesResolver: (props, styles) => styles.columnsPanel
37
- })({
38
- padding: '8px 0px 8px 8px'
39
- });
40
- const GridColumnsPanelRowRoot = styled('div', {
41
- name: 'MuiDataGrid',
42
- slot: 'ColumnsPanelRow',
43
- overridesResolver: (props, styles) => styles.columnsPanelRow
44
- })(({
45
- theme
46
- }) => ({
47
- display: 'flex',
48
- justifyContent: 'space-between',
49
- padding: '1px 8px 1px 7px',
50
- [`& .${switchClasses.root}`]: {
51
- marginRight: theme.spacing(0.5)
52
- }
53
- }));
54
- const GridIconButtonRoot = styled(IconButton)({
55
- justifyContent: 'flex-end'
56
- });
57
- const collator = new Intl.Collator();
58
- const defaultSearchPredicate = (column, searchValue) => {
59
- return (column.headerName || column.field).toLowerCase().indexOf(searchValue) > -1;
60
- };
61
8
  function GridColumnsPanel(props) {
62
- const apiRef = useGridApiContext();
63
- const searchInputRef = React.useRef(null);
64
- const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
65
- const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
66
9
  const rootProps = useGridRootProps();
67
- const [searchValue, setSearchValue] = React.useState('');
68
- const classes = useUtilityClasses(rootProps);
69
- const {
70
- sort,
71
- searchPredicate = defaultSearchPredicate,
72
- autoFocusSearchField = true,
73
- disableHideAllButton = false,
74
- disableShowAllButton = false,
75
- getTogglableColumns
76
- } = props,
77
- other = _objectWithoutPropertiesLoose(props, _excluded);
78
- const sortedColumns = React.useMemo(() => {
79
- switch (sort) {
80
- case 'asc':
81
- return [...columns].sort((a, b) => collator.compare(a.headerName || a.field, b.headerName || b.field));
82
- case 'desc':
83
- return [...columns].sort((a, b) => -collator.compare(a.headerName || a.field, b.headerName || b.field));
84
- default:
85
- return columns;
86
- }
87
- }, [columns, sort]);
88
- const toggleColumn = event => {
89
- const {
90
- name: field
91
- } = event.target;
92
- apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false);
93
- };
94
- const toggleAllColumns = React.useCallback(isVisible => {
95
- const currentModel = gridColumnVisibilityModelSelector(apiRef);
96
- const newModel = _extends({}, currentModel);
97
- const togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null;
98
- columns.forEach(col => {
99
- if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) {
100
- if (isVisible) {
101
- // delete the key from the model instead of setting it to `true`
102
- delete newModel[col.field];
103
- } else {
104
- newModel[col.field] = false;
105
- }
106
- }
107
- });
108
- return apiRef.current.setColumnVisibilityModel(newModel);
109
- }, [apiRef, columns, getTogglableColumns]);
110
- const handleSearchValueChange = React.useCallback(event => {
111
- setSearchValue(event.target.value);
112
- }, []);
113
- const currentColumns = React.useMemo(() => {
114
- const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;
115
- const togglableSortedColumns = togglableColumns ? sortedColumns.filter(({
116
- field
117
- }) => togglableColumns.includes(field)) : sortedColumns;
118
- if (!searchValue) {
119
- return togglableSortedColumns;
120
- }
121
- return togglableSortedColumns.filter(column => searchPredicate(column, searchValue.toLowerCase()));
122
- }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);
123
- const firstSwitchRef = React.useRef(null);
124
- React.useEffect(() => {
125
- if (autoFocusSearchField) {
126
- searchInputRef.current.focus();
127
- } else if (firstSwitchRef.current && typeof firstSwitchRef.current.focus === 'function') {
128
- firstSwitchRef.current.focus();
129
- }
130
- }, [autoFocusSearchField]);
131
- let firstHideableColumnFound = false;
132
- const isFirstHideableColumn = column => {
133
- if (firstHideableColumnFound === false && column.hideable !== false) {
134
- firstHideableColumnFound = true;
135
- return true;
136
- }
137
- return false;
138
- };
139
- return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({}, other, {
140
- children: [/*#__PURE__*/_jsx(GridPanelHeader, {
141
- children: /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({
142
- label: apiRef.current.getLocaleText('columnsPanelTextFieldLabel'),
143
- placeholder: apiRef.current.getLocaleText('columnsPanelTextFieldPlaceholder'),
144
- inputRef: searchInputRef,
145
- value: searchValue,
146
- onChange: handleSearchValueChange,
147
- variant: "standard",
148
- fullWidth: true
149
- }, rootProps.slotProps?.baseTextField))
150
- }), /*#__PURE__*/_jsx(GridPanelContent, {
151
- children: /*#__PURE__*/_jsx(GridColumnsPanelRoot, {
152
- className: classes.root,
153
- ownerState: rootProps,
154
- children: currentColumns.map(column => /*#__PURE__*/_jsxs(GridColumnsPanelRowRoot, {
155
- className: classes.columnsPanelRow,
156
- ownerState: rootProps,
157
- children: [/*#__PURE__*/_jsx(FormControlLabel, {
158
- control: /*#__PURE__*/_jsx(rootProps.slots.baseSwitch, _extends({
159
- disabled: column.hideable === false,
160
- checked: columnVisibilityModel[column.field] !== false,
161
- onClick: toggleColumn,
162
- name: column.field,
163
- size: "small",
164
- inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined
165
- }, rootProps.slotProps?.baseSwitch)),
166
- label: column.headerName || column.field
167
- }), !rootProps.disableColumnReorder && GRID_EXPERIMENTAL_ENABLED && /*#__PURE__*/_jsx(GridIconButtonRoot, {
168
- draggable: true,
169
- "aria-label": apiRef.current.getLocaleText('columnsPanelDragIconLabel'),
170
- title: apiRef.current.getLocaleText('columnsPanelDragIconLabel'),
171
- size: "small",
172
- disabled: true,
173
- children: /*#__PURE__*/_jsx(rootProps.slots.columnReorderIcon, {})
174
- })]
175
- }, column.field))
176
- })
177
- }), disableShowAllButton && disableHideAllButton ? null : /*#__PURE__*/_jsxs(GridPanelFooter, {
178
- children: [!disableHideAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
179
- onClick: () => toggleAllColumns(false)
180
- }, rootProps.slotProps?.baseButton, {
181
- disabled: disableHideAllButton,
182
- children: apiRef.current.getLocaleText('columnsPanelHideAllButton')
183
- })) : /*#__PURE__*/_jsx("span", {}), !disableShowAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
184
- onClick: () => toggleAllColumns(true)
185
- }, rootProps.slotProps?.baseButton, {
186
- disabled: disableShowAllButton,
187
- children: apiRef.current.getLocaleText('columnsPanelShowAllButton')
188
- })) : null]
189
- })]
10
+ return /*#__PURE__*/_jsx(GridPanelWrapper, _extends({}, props, {
11
+ children: /*#__PURE__*/_jsx(GridColumnsManagement, _extends({}, rootProps.slotProps?.columnsManagement))
190
12
  }));
191
13
  }
192
14
  process.env.NODE_ENV !== "production" ? GridColumnsPanel.propTypes = {
@@ -194,33 +16,6 @@ process.env.NODE_ENV !== "production" ? GridColumnsPanel.propTypes = {
194
16
  // | These PropTypes are generated from the TypeScript type definitions |
195
17
  // | To update them edit the TypeScript types and run "yarn proptypes" |
196
18
  // ----------------------------------------------------------------------
197
- /**
198
- * If `true`, the column search field will be focused automatically.
199
- * If `false`, the first column switch input will be focused automatically.
200
- * This helps to avoid input keyboard panel to popup automatically on touch devices.
201
- * @default true
202
- */
203
- autoFocusSearchField: PropTypes.bool,
204
- /**
205
- * If `true`, the `Hide all` button will not be displayed.
206
- * @default false
207
- */
208
- disableHideAllButton: PropTypes.bool,
209
- /**
210
- * If `true`, the `Show all` button will be disabled
211
- * @default false
212
- */
213
- disableShowAllButton: PropTypes.bool,
214
- /**
215
- * Returns the list of togglable columns.
216
- * If used, only those columns will be displayed in the panel
217
- * which are passed as the return value of the function.
218
- * @param {GridColDef[]} columns The `ColDef` list of all columns.
219
- * @returns {GridColDef['field'][]} The list of togglable columns' field names.
220
- */
221
- getTogglableColumns: PropTypes.func,
222
- searchPredicate: PropTypes.func,
223
- slotProps: PropTypes.object,
224
- sort: PropTypes.oneOf(['asc', 'desc'])
19
+ slotProps: PropTypes.object
225
20
  } : void 0;
226
21
  export { GridColumnsPanel };
@@ -11,7 +11,6 @@ import Paper from '@mui/material/Paper';
11
11
  import Popper from '@mui/material/Popper';
12
12
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
13
13
  import { isEscapeKey } from '../../utils/keyboardUtils';
14
- import { gridClasses } from '../../constants/gridClasses';
15
14
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
16
15
  import { jsx as _jsx } from "react/jsx-runtime";
17
16
  export const gridPanelClasses = generateUtilityClasses('MuiDataGrid', ['panel', 'paper']);
@@ -70,9 +69,9 @@ const GridPanel = /*#__PURE__*/React.forwardRef((props, ref) => {
70
69
  }], []);
71
70
  const [anchorEl, setAnchorEl] = React.useState(null);
72
71
  React.useEffect(() => {
73
- const columnHeadersElement = apiRef.current.rootElementRef?.current?.querySelector(`.${gridClasses.columnHeaders}`);
74
- if (columnHeadersElement) {
75
- setAnchorEl(columnHeadersElement);
72
+ const panelAnchor = apiRef.current.rootElementRef?.current?.querySelector('[data-id="gridPanelAnchor"]');
73
+ if (panelAnchor) {
74
+ setAnchorEl(panelAnchor);
76
75
  }
77
76
  }, [apiRef]);
78
77
  if (!anchorEl) {
@@ -1,13 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["item", "hasMultipleFilters", "deleteFilter", "applyFilterChanges", "multiFilterOperator", "showMultiFilterOperators", "disableMultiFilterOperator", "applyMultiFilterOperatorChanges", "focusElementRef", "logicOperators", "columnsSort", "filterColumns", "deleteIconProps", "logicOperatorInputProps", "operatorInputProps", "columnInputProps", "valueInputProps", "children"],
3
+ const _excluded = ["item", "hasMultipleFilters", "deleteFilter", "applyFilterChanges", "showMultiFilterOperators", "disableMultiFilterOperator", "applyMultiFilterOperatorChanges", "focusElementRef", "logicOperators", "columnsSort", "filterColumns", "deleteIconProps", "logicOperatorInputProps", "operatorInputProps", "columnInputProps", "valueInputProps", "readOnly", "children"],
4
4
  _excluded2 = ["InputComponentProps"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
7
7
  import { unstable_composeClasses as composeClasses, unstable_useId as useId, unstable_capitalize as capitalize } from '@mui/utils';
8
8
  import { styled } from '@mui/material/styles';
9
9
  import clsx from 'clsx';
10
- import { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';
10
+ import { gridFilterableColumnDefinitionsSelector, gridColumnLookupSelector } from '../../../hooks/features/columns/gridColumnsSelector';
11
11
  import { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';
12
12
  import { useGridSelector } from '../../../hooks/utils/useGridSelector';
13
13
  import { GridLogicOperator } from '../../../models/gridFilterItem';
@@ -102,7 +102,6 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
102
102
  hasMultipleFilters,
103
103
  deleteFilter,
104
104
  applyFilterChanges,
105
- multiFilterOperator,
106
105
  showMultiFilterOperators,
107
106
  disableMultiFilterOperator,
108
107
  applyMultiFilterOperatorChanges,
@@ -114,10 +113,12 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
114
113
  logicOperatorInputProps = {},
115
114
  operatorInputProps = {},
116
115
  columnInputProps = {},
117
- valueInputProps = {}
116
+ valueInputProps = {},
117
+ readOnly
118
118
  } = props,
119
119
  other = _objectWithoutPropertiesLoose(props, _excluded);
120
120
  const apiRef = useGridApiContext();
121
+ const columnLookup = useGridSelector(apiRef, gridColumnLookupSelector);
121
122
  const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);
122
123
  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
123
124
  const columnSelectId = useId();
@@ -128,6 +129,7 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
128
129
  const classes = useUtilityClasses(rootProps);
129
130
  const valueRef = React.useRef(null);
130
131
  const filterSelectorRef = React.useRef(null);
132
+ const multiFilterOperator = filterModel.logicOperator ?? GridLogicOperator.And;
131
133
  const hasLogicOperatorColumn = hasMultipleFilters && logicOperators.length > 0;
132
134
  const baseFormControlProps = rootProps.slotProps?.baseFormControl || {};
133
135
  const baseSelectProps = rootProps.slotProps?.baseSelect || {};
@@ -143,6 +145,15 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
143
145
  selectedField
144
146
  } = React.useMemo(() => {
145
147
  let itemField = item.field;
148
+
149
+ // Yields a valid value if the current filter belongs to a column that is not filterable
150
+ const selectedNonFilterableColumn = columnLookup[item.field].filterable === false ? columnLookup[item.field] : null;
151
+ if (selectedNonFilterableColumn) {
152
+ return {
153
+ filteredColumns: [selectedNonFilterableColumn],
154
+ selectedField: itemField
155
+ };
156
+ }
146
157
  if (filterColumns === undefined || typeof filterColumns !== 'function') {
147
158
  return {
148
159
  filteredColumns: filterableColumns,
@@ -164,7 +175,7 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
164
175
  }),
165
176
  selectedField: itemField
166
177
  };
167
- }, [filterColumns, filterModel?.items, filterableColumns, item.field]);
178
+ }, [filterColumns, filterModel?.items, filterableColumns, item.field, columnLookup]);
168
179
  const sortedFilteredColumns = React.useMemo(() => {
169
180
  switch (columnsSort) {
170
181
  case 'asc':
@@ -271,7 +282,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
271
282
  "aria-label": apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),
272
283
  title: apiRef.current.getLocaleText('filterPanelDeleteIconLabel'),
273
284
  onClick: handleDeleteFilter,
274
- size: "small"
285
+ size: "small",
286
+ disabled: readOnly
275
287
  }, rootProps.slotProps?.baseIconButton, {
276
288
  children: /*#__PURE__*/_jsx(rootProps.slots.filterPanelDeleteIcon, {
277
289
  fontSize: "small"
@@ -318,7 +330,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
318
330
  label: apiRef.current.getLocaleText('filterPanelColumns'),
319
331
  value: selectedField ?? '',
320
332
  onChange: changeColumn,
321
- native: isBaseSelectNative
333
+ native: isBaseSelectNative,
334
+ disabled: readOnly
322
335
  }, rootProps.slotProps?.baseSelect, {
323
336
  children: sortedFilteredColumns.map(col => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
324
337
  native: isBaseSelectNative,
@@ -343,7 +356,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
343
356
  value: item.operator,
344
357
  onChange: changeOperator,
345
358
  native: isBaseSelectNative,
346
- inputRef: filterSelectorRef
359
+ inputRef: filterSelectorRef,
360
+ disabled: readOnly
347
361
  }, rootProps.slotProps?.baseSelect, {
348
362
  children: currentColumn?.filterOperators?.map(operator => /*#__PURE__*/_createElement(rootProps.slots.baseSelectOption, _extends({}, baseSelectOptionProps, {
349
363
  native: isBaseSelectNative,
@@ -361,7 +375,8 @@ const GridFilterForm = /*#__PURE__*/React.forwardRef(function GridFilterForm(pro
361
375
  apiRef: apiRef,
362
376
  item: item,
363
377
  applyValue: applyFilterChanges,
364
- focusElementRef: valueRef
378
+ focusElementRef: valueRef,
379
+ disabled: readOnly
365
380
  }, currentOperator.InputComponentProps, InputComponentProps), item.field) : null
366
381
  }))]
367
382
  }));
@@ -444,15 +459,17 @@ process.env.NODE_ENV !== "production" ? GridFilterForm.propTypes = {
444
459
  * @default [GridLogicOperator.And, GridLogicOperator.Or]
445
460
  */
446
461
  logicOperators: PropTypes.arrayOf(PropTypes.oneOf(['and', 'or']).isRequired),
447
- /**
448
- * The current logic operator applied.
449
- */
450
- multiFilterOperator: PropTypes.oneOf(['and', 'or']),
451
462
  /**
452
463
  * Props passed to the operator input component.
453
464
  * @default {}
454
465
  */
455
466
  operatorInputProps: PropTypes.any,
467
+ /**
468
+ * `true` if the filter is disabled/read only.
469
+ * i.e. `colDef.fiterable = false` but passed in `filterModel`
470
+ * @default false
471
+ */
472
+ readOnly: PropTypes.bool,
456
473
  /**
457
474
  * If `true`, the logic operator field is visible.
458
475
  */
@@ -12,7 +12,7 @@ import { GridFilterForm } from './GridFilterForm';
12
12
  import { useGridRootProps } from '../../../hooks/utils/useGridRootProps';
13
13
  import { useGridSelector } from '../../../hooks/utils/useGridSelector';
14
14
  import { gridFilterModelSelector } from '../../../hooks/features/filter/gridFilterSelector';
15
- import { gridFilterableColumnDefinitionsSelector } from '../../../hooks/features/columns/gridColumnsSelector';
15
+ import { gridFilterableColumnDefinitionsSelector, gridFilterableColumnLookupSelector } from '../../../hooks/features/columns/gridColumnsSelector';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
18
  const getGridFilter = col => ({
@@ -25,6 +25,7 @@ const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(p
25
25
  const rootProps = useGridRootProps();
26
26
  const filterModel = useGridSelector(apiRef, gridFilterModelSelector);
27
27
  const filterableColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);
28
+ const filterableColumnsLookup = useGridSelector(apiRef, gridFilterableColumnLookupSelector);
28
29
  const lastFilterRef = React.useRef(null);
29
30
  const placeholderFilter = React.useRef(null);
30
31
  const {
@@ -94,63 +95,88 @@ const GridFilterPanel = /*#__PURE__*/React.forwardRef(function GridFilterPanel(p
94
95
  return placeholderFilter.current ? [placeholderFilter.current] : [];
95
96
  }, [filterModel.items, getDefaultFilter]);
96
97
  const hasMultipleFilters = items.length > 1;
97
- const addNewFilter = () => {
98
+ const {
99
+ readOnlyFilters,
100
+ validFilters
101
+ } = React.useMemo(() => items.reduce((acc, item) => {
102
+ if (filterableColumnsLookup[item.field]) {
103
+ acc.validFilters.push(item);
104
+ } else {
105
+ acc.readOnlyFilters.push(item);
106
+ }
107
+ return acc;
108
+ }, {
109
+ readOnlyFilters: [],
110
+ validFilters: []
111
+ }), [items, filterableColumnsLookup]);
112
+ const addNewFilter = React.useCallback(() => {
98
113
  const newFilter = getNewFilter();
99
114
  if (!newFilter) {
100
115
  return;
101
116
  }
102
117
  apiRef.current.upsertFilterItems([...items, newFilter]);
103
- };
118
+ }, [apiRef, getNewFilter, items]);
104
119
  const deleteFilter = React.useCallback(item => {
105
- const shouldCloseFilterPanel = items.length === 1;
120
+ const shouldCloseFilterPanel = validFilters.length === 1;
106
121
  apiRef.current.deleteFilterItem(item);
107
122
  if (shouldCloseFilterPanel) {
108
123
  apiRef.current.hideFilterPanel();
109
124
  }
110
- }, [apiRef, items.length]);
111
- const handleRemoveAll = () => {
112
- if (items.length === 1 && items[0].value === undefined) {
113
- apiRef.current.deleteFilterItem(items[0]);
114
- apiRef.current.hideFilterPanel();
125
+ }, [apiRef, validFilters.length]);
126
+ const handleRemoveAll = React.useCallback(() => {
127
+ if (validFilters.length === 1 && validFilters[0].value === undefined) {
128
+ apiRef.current.deleteFilterItem(validFilters[0]);
129
+ return apiRef.current.hideFilterPanel();
115
130
  }
116
- apiRef.current.setFilterModel(_extends({}, filterModel, {
117
- items: []
131
+ return apiRef.current.setFilterModel(_extends({}, filterModel, {
132
+ items: readOnlyFilters
118
133
  }));
119
- };
134
+ }, [apiRef, readOnlyFilters, filterModel, validFilters]);
120
135
  React.useEffect(() => {
121
136
  if (logicOperators.length > 0 && filterModel.logicOperator && !logicOperators.includes(filterModel.logicOperator)) {
122
137
  applyFilterLogicOperator(logicOperators[0]);
123
138
  }
124
139
  }, [logicOperators, applyFilterLogicOperator, filterModel.logicOperator]);
125
140
  React.useEffect(() => {
126
- if (items.length > 0) {
141
+ if (validFilters.length > 0) {
127
142
  lastFilterRef.current.focus();
128
143
  }
129
- }, [items.length]);
144
+ }, [validFilters.length]);
130
145
  return /*#__PURE__*/_jsxs(GridPanelWrapper, _extends({
131
146
  ref: ref
132
147
  }, other, {
133
- children: [/*#__PURE__*/_jsx(GridPanelContent, {
134
- children: items.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({
148
+ children: [/*#__PURE__*/_jsxs(GridPanelContent, {
149
+ children: [readOnlyFilters.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({
135
150
  item: item,
136
151
  applyFilterChanges: applyFilter,
137
152
  deleteFilter: deleteFilter,
138
153
  hasMultipleFilters: hasMultipleFilters,
139
154
  showMultiFilterOperators: index > 0,
140
- multiFilterOperator: filterModel.logicOperator,
141
155
  disableMultiFilterOperator: index !== 1,
142
156
  applyMultiFilterOperatorChanges: applyFilterLogicOperator,
143
- focusElementRef: index === items.length - 1 ? lastFilterRef : null,
157
+ focusElementRef: null,
158
+ readOnly: true,
159
+ logicOperators: logicOperators,
160
+ columnsSort: columnsSort
161
+ }, filterFormProps), item.id == null ? index : item.id)), validFilters.map((item, index) => /*#__PURE__*/_jsx(GridFilterForm, _extends({
162
+ item: item,
163
+ applyFilterChanges: applyFilter,
164
+ deleteFilter: deleteFilter,
165
+ hasMultipleFilters: hasMultipleFilters,
166
+ showMultiFilterOperators: readOnlyFilters.length + index > 0,
167
+ disableMultiFilterOperator: readOnlyFilters.length + index !== 1,
168
+ applyMultiFilterOperatorChanges: applyFilterLogicOperator,
169
+ focusElementRef: index === validFilters.length - 1 ? lastFilterRef : null,
144
170
  logicOperators: logicOperators,
145
171
  columnsSort: columnsSort
146
- }, filterFormProps), item.id == null ? index : item.id))
172
+ }, filterFormProps), item.id == null ? index + readOnlyFilters.length : item.id))]
147
173
  }), !rootProps.disableMultipleColumnsFiltering && !(disableAddFilterButton && disableRemoveAllButton) ? /*#__PURE__*/_jsxs(GridPanelFooter, {
148
174
  children: [!disableAddFilterButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
149
175
  onClick: addNewFilter,
150
176
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelAddIcon, {})
151
177
  }, rootProps.slotProps?.baseButton, {
152
178
  children: apiRef.current.getLocaleText('filterPanelAddFilter')
153
- })) : /*#__PURE__*/_jsx("span", {}), !disableRemoveAllButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
179
+ })) : /*#__PURE__*/_jsx("span", {}), !disableRemoveAllButton && validFilters.length > 0 ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
154
180
  onClick: handleRemoveAll,
155
181
  startIcon: /*#__PURE__*/_jsx(rootProps.slots.filterPanelRemoveAllIcon, {})
156
182
  }, rootProps.slotProps?.baseButton, {
@@ -1,7 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["onClick"];
4
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
5
4
  import { unstable_useId as useId } from '@mui/material/utils';
6
5
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
7
6
  import { gridPreferencePanelStateSelector } from '../../hooks/features/preferencesPanel/gridPreferencePanelSelector';
@@ -9,11 +8,12 @@ import { GridPreferencePanelsValue } from '../../hooks/features/preferencesPanel
9
8
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
10
9
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
11
10
  import { jsx as _jsx } from "react/jsx-runtime";
12
- export const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {
11
+ const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function GridToolbarColumnsButton(props, ref) {
13
12
  const {
14
- onClick
15
- } = props,
16
- other = _objectWithoutPropertiesLoose(props, _excluded);
13
+ slotProps = {}
14
+ } = props;
15
+ const buttonProps = slotProps.button || {};
16
+ const tooltipProps = slotProps.tooltip || {};
17
17
  const columnButtonId = useId();
18
18
  const columnPanelId = useId();
19
19
  const apiRef = useGridApiContext();
@@ -25,7 +25,7 @@ export const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function G
25
25
  } else {
26
26
  apiRef.current.showPreferences(GridPreferencePanelsValue.columns, columnPanelId, columnButtonId);
27
27
  }
28
- onClick?.(event);
28
+ buttonProps.onClick?.(event);
29
29
  };
30
30
 
31
31
  // Disable the button if the corresponding is disabled
@@ -33,18 +33,35 @@ export const GridToolbarColumnsButton = /*#__PURE__*/React.forwardRef(function G
33
33
  return null;
34
34
  }
35
35
  const isOpen = preferencePanel.open && preferencePanel.panelId === columnPanelId;
36
- return /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
37
- ref: ref,
38
- id: columnButtonId,
39
- size: "small",
40
- "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
41
- "aria-haspopup": "menu",
42
- "aria-expanded": isOpen,
43
- "aria-controls": isOpen ? columnPanelId : undefined,
44
- startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})
45
- }, other, {
46
- onClick: showColumns
47
- }, rootProps.slotProps?.baseButton, {
48
- children: apiRef.current.getLocaleText('toolbarColumns')
36
+ return /*#__PURE__*/_jsx(rootProps.slots.baseTooltip, _extends({
37
+ title: apiRef.current.getLocaleText('toolbarColumnsLabel'),
38
+ enterDelay: 1000
39
+ }, tooltipProps, rootProps.slotProps?.baseTooltip, {
40
+ children: /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
41
+ ref: ref,
42
+ id: columnButtonId,
43
+ size: "small",
44
+ "aria-label": apiRef.current.getLocaleText('toolbarColumnsLabel'),
45
+ "aria-haspopup": "menu",
46
+ "aria-expanded": isOpen,
47
+ "aria-controls": isOpen ? columnPanelId : undefined,
48
+ startIcon: /*#__PURE__*/_jsx(rootProps.slots.columnSelectorIcon, {})
49
+ }, buttonProps, {
50
+ onClick: showColumns
51
+ }, rootProps.slotProps?.baseButton, {
52
+ children: apiRef.current.getLocaleText('toolbarColumns')
53
+ }))
49
54
  }));
50
- });
55
+ });
56
+ process.env.NODE_ENV !== "production" ? GridToolbarColumnsButton.propTypes = {
57
+ // ----------------------------- Warning --------------------------------
58
+ // | These PropTypes are generated from the TypeScript type definitions |
59
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
60
+ // ----------------------------------------------------------------------
61
+ /**
62
+ * The props used for each slot inside.
63
+ * @default {}
64
+ */
65
+ slotProps: PropTypes.object
66
+ } : void 0;
67
+ export { GridToolbarColumnsButton };