@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
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { unstable_composeClasses as composeClasses, unstable_useId as useId } from '@mui/utils';
5
+ import { fastMemo } from '../../utils/fastMemo';
5
6
  import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';
6
7
  import { GridColumnHeaderSortIcon } from './GridColumnHeaderSortIcon';
7
8
  import { ColumnHeaderMenuIcon } from './ColumnHeaderMenuIcon';
@@ -125,14 +126,16 @@ function GridColumnHeaderItem(props) {
125
126
  onExited: handleExited
126
127
  });
127
128
  const sortingOrder = (_colDef$sortingOrder = colDef.sortingOrder) != null ? _colDef$sortingOrder : rootProps.sortingOrder;
129
+ const showSortIcon = (colDef.sortable || sortDirection != null) && !colDef.hideSortIcons && !rootProps.disableColumnSorting;
128
130
  const columnTitleIconButtons = /*#__PURE__*/_jsxs(React.Fragment, {
129
131
  children: [!rootProps.disableColumnFilter && /*#__PURE__*/_jsx(rootProps.slots.columnHeaderFilterIconButton, _extends({
130
132
  field: colDef.field,
131
133
  counter: filterItemsCounter
132
- }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.columnHeaderFilterIconButton)), colDef.sortable && !colDef.hideSortIcons && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {
134
+ }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.columnHeaderFilterIconButton)), showSortIcon && /*#__PURE__*/_jsx(GridColumnHeaderSortIcon, {
133
135
  direction: sortDirection,
134
136
  index: sortIndex,
135
- sortingOrder: sortingOrder
137
+ sortingOrder: sortingOrder,
138
+ disabled: !colDef.sortable
136
139
  })]
137
140
  });
138
141
  React.useLayoutEffect(() => {
@@ -195,4 +198,5 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
195
198
  sortIndex: PropTypes.number,
196
199
  tabIndex: PropTypes.oneOf([-1, 0]).isRequired
197
200
  } : void 0;
198
- export { GridColumnHeaderItem };
201
+ const Memoized = fastMemo(GridColumnHeaderItem);
202
+ export { Memoized as GridColumnHeaderItem };
@@ -4,6 +4,7 @@ export interface GridColumnHeaderSortIconProps {
4
4
  direction: GridSortDirection;
5
5
  index: number | undefined;
6
6
  sortingOrder: readonly GridSortDirection[];
7
+ disabled?: boolean;
7
8
  }
8
9
  declare function GridColumnHeaderSortIconRaw(props: GridColumnHeaderSortIconProps): React.JSX.Element | null;
9
10
  declare namespace GridColumnHeaderSortIconRaw {
@@ -39,7 +39,8 @@ function GridColumnHeaderSortIconRaw(props) {
39
39
  const {
40
40
  direction,
41
41
  index,
42
- sortingOrder
42
+ sortingOrder,
43
+ disabled
43
44
  } = props;
44
45
  const apiRef = useGridApiContext();
45
46
  const rootProps = useGridRootProps();
@@ -55,7 +56,8 @@ function GridColumnHeaderSortIconRaw(props) {
55
56
  tabIndex: -1,
56
57
  "aria-label": apiRef.current.getLocaleText('columnHeaderSortIconLabel'),
57
58
  title: apiRef.current.getLocaleText('columnHeaderSortIconLabel'),
58
- size: "small"
59
+ size: "small",
60
+ disabled: disabled
59
61
  }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseIconButton, {
60
62
  children: iconElement
61
63
  }));
@@ -74,6 +76,7 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderSortIconRaw.propTypes =
74
76
  // | To update them edit the TypeScript types and run "yarn proptypes" |
75
77
  // ----------------------------------------------------------------------
76
78
  direction: PropTypes.oneOf(['asc', 'desc']),
79
+ disabled: PropTypes.bool,
77
80
  index: PropTypes.number,
78
81
  sortingOrder: PropTypes.arrayOf(PropTypes.oneOf(['asc', 'desc'])).isRequired
79
82
  } : void 0;
@@ -38,7 +38,6 @@ const GridColumnHeadersInnerRoot = styled('div', {
38
38
  }
39
39
  }));
40
40
  export const GridColumnHeadersInner = /*#__PURE__*/React.forwardRef(function GridColumnHeadersInner(props, ref) {
41
- var _apiRef$current$getRo, _apiRef$current$getRo2;
42
41
  const {
43
42
  isDragging,
44
43
  className
@@ -48,7 +47,7 @@ export const GridColumnHeadersInner = /*#__PURE__*/React.forwardRef(function Gri
48
47
  const rootProps = useGridRootProps();
49
48
  const ownerState = _extends({}, rootProps, {
50
49
  isDragging,
51
- hasScrollX: (_apiRef$current$getRo = (_apiRef$current$getRo2 = apiRef.current.getRootDimensions()) == null ? void 0 : _apiRef$current$getRo2.hasScrollX) != null ? _apiRef$current$getRo : false
50
+ hasScrollX: apiRef.current.getRootDimensions().hasScrollX
52
51
  });
53
52
  const classes = useUtilityClasses(ownerState);
54
53
  return /*#__PURE__*/_jsx(GridColumnHeadersInnerRoot, _extends({
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ import type { GridColDef } from '../../models/colDef/gridColDef';
3
+ export interface GridColumnsManagementProps {
4
+ sort?: 'asc' | 'desc';
5
+ searchPredicate?: (column: GridColDef, searchValue: string) => boolean;
6
+ /**
7
+ * If `true`, the column search field will be focused automatically.
8
+ * If `false`, the first column switch input will be focused automatically.
9
+ * This helps to avoid input keyboard panel to popup automatically on touch devices.
10
+ * @default true
11
+ */
12
+ autoFocusSearchField?: boolean;
13
+ /**
14
+ * If `true`, the `Show/Hide all` toggle checkbox will not be displayed.
15
+ * @default false
16
+ */
17
+ disableShowHideToggle?: boolean;
18
+ /**
19
+ * If `true`, the `Reset` button will not be disabled
20
+ * @default false
21
+ */
22
+ disableResetButton?: boolean;
23
+ /**
24
+ * Returns the list of togglable columns.
25
+ * If used, only those columns will be displayed in the panel
26
+ * which are passed as the return value of the function.
27
+ * @param {GridColDef[]} columns The `ColDef` list of all columns.
28
+ * @returns {GridColDef['field'][]} The list of togglable columns' field names.
29
+ */
30
+ getTogglableColumns?: (columns: GridColDef[]) => GridColDef['field'][];
31
+ }
32
+ declare function GridColumnsManagement(props: GridColumnsManagementProps): React.JSX.Element;
33
+ declare namespace GridColumnsManagement {
34
+ var propTypes: any;
35
+ }
36
+ export { GridColumnsManagement };
@@ -0,0 +1,260 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ /* eslint-disable @typescript-eslint/no-use-before-define */
3
+ import * as React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { unstable_composeClasses as composeClasses } from '@mui/utils';
6
+ import FormControlLabel from '@mui/material/FormControlLabel';
7
+ import { styled } from '@mui/material/styles';
8
+ import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../../hooks/features/columns/gridColumnsSelector';
9
+ import { useGridSelector } from '../../hooks/utils/useGridSelector';
10
+ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
11
+ import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
12
+ import { getDataGridUtilityClass } from '../../constants/gridClasses';
13
+ import { useLazyRef } from '../../hooks/utils/useLazyRef';
14
+ import { checkColumnVisibilityModelsSame, defaultSearchPredicate } from './utils';
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { jsxs as _jsxs } from "react/jsx-runtime";
17
+ const useUtilityClasses = ownerState => {
18
+ const {
19
+ classes
20
+ } = ownerState;
21
+ const slots = {
22
+ root: ['columnsManagement'],
23
+ header: ['columnsManagementHeader'],
24
+ footer: ['columnsManagementFooter'],
25
+ row: ['columnsManagementRow']
26
+ };
27
+ return composeClasses(slots, getDataGridUtilityClass, classes);
28
+ };
29
+ const collator = new Intl.Collator();
30
+ function GridColumnsManagement(props) {
31
+ var _rootProps$slotProps, _rootProps$slotProps3, _rootProps$slotProps4;
32
+ const apiRef = useGridApiContext();
33
+ const searchInputRef = React.useRef(null);
34
+ const columns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
35
+ const initialColumnVisibilityModel = useLazyRef(() => gridColumnVisibilityModelSelector(apiRef)).current;
36
+ const columnVisibilityModel = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
37
+ const rootProps = useGridRootProps();
38
+ const [searchValue, setSearchValue] = React.useState('');
39
+ const classes = useUtilityClasses(rootProps);
40
+ const {
41
+ sort,
42
+ searchPredicate = defaultSearchPredicate,
43
+ autoFocusSearchField = true,
44
+ disableShowHideToggle = false,
45
+ disableResetButton = false,
46
+ getTogglableColumns
47
+ } = props;
48
+ const isResetDisabled = React.useMemo(() => checkColumnVisibilityModelsSame(columnVisibilityModel, initialColumnVisibilityModel), [columnVisibilityModel, initialColumnVisibilityModel]);
49
+ const sortedColumns = React.useMemo(() => {
50
+ switch (sort) {
51
+ case 'asc':
52
+ return [...columns].sort((a, b) => collator.compare(a.headerName || a.field, b.headerName || b.field));
53
+ case 'desc':
54
+ return [...columns].sort((a, b) => -collator.compare(a.headerName || a.field, b.headerName || b.field));
55
+ default:
56
+ return columns;
57
+ }
58
+ }, [columns, sort]);
59
+ const toggleColumn = event => {
60
+ const {
61
+ name: field
62
+ } = event.target;
63
+ apiRef.current.setColumnVisibility(field, columnVisibilityModel[field] === false);
64
+ };
65
+ const toggleAllColumns = React.useCallback(isVisible => {
66
+ const currentModel = gridColumnVisibilityModelSelector(apiRef);
67
+ const newModel = _extends({}, currentModel);
68
+ const togglableColumns = getTogglableColumns ? getTogglableColumns(columns) : null;
69
+ columns.forEach(col => {
70
+ if (col.hideable && (togglableColumns == null || togglableColumns.includes(col.field))) {
71
+ if (isVisible) {
72
+ // delete the key from the model instead of setting it to `true`
73
+ delete newModel[col.field];
74
+ } else {
75
+ newModel[col.field] = false;
76
+ }
77
+ }
78
+ });
79
+ return apiRef.current.setColumnVisibilityModel(newModel);
80
+ }, [apiRef, columns, getTogglableColumns]);
81
+ const handleSearchValueChange = React.useCallback(event => {
82
+ setSearchValue(event.target.value);
83
+ }, []);
84
+ const currentColumns = React.useMemo(() => {
85
+ const togglableColumns = getTogglableColumns ? getTogglableColumns(sortedColumns) : null;
86
+ const togglableSortedColumns = togglableColumns ? sortedColumns.filter(({
87
+ field
88
+ }) => togglableColumns.includes(field)) : sortedColumns;
89
+ if (!searchValue) {
90
+ return togglableSortedColumns;
91
+ }
92
+ return togglableSortedColumns.filter(column => searchPredicate(column, searchValue.toLowerCase()));
93
+ }, [sortedColumns, searchValue, searchPredicate, getTogglableColumns]);
94
+ const hideableColumns = React.useMemo(() => currentColumns.filter(col => col.hideable), [currentColumns]);
95
+ const allHideableColumnsVisible = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] == null || columnVisibilityModel[column.field] !== false), [columnVisibilityModel, hideableColumns]);
96
+ const allHideableColumnsHidden = React.useMemo(() => hideableColumns.every(column => columnVisibilityModel[column.field] === false), [columnVisibilityModel, hideableColumns]);
97
+ const firstSwitchRef = React.useRef(null);
98
+ React.useEffect(() => {
99
+ if (autoFocusSearchField) {
100
+ searchInputRef.current.focus();
101
+ } else if (firstSwitchRef.current && typeof firstSwitchRef.current.focus === 'function') {
102
+ firstSwitchRef.current.focus();
103
+ }
104
+ }, [autoFocusSearchField]);
105
+ let firstHideableColumnFound = false;
106
+ const isFirstHideableColumn = column => {
107
+ if (firstHideableColumnFound === false && column.hideable !== false) {
108
+ firstHideableColumnFound = true;
109
+ return true;
110
+ }
111
+ return false;
112
+ };
113
+ return /*#__PURE__*/_jsxs(React.Fragment, {
114
+ children: [/*#__PURE__*/_jsx(GridColumnsManagementHeader, {
115
+ className: classes.header,
116
+ ownerState: rootProps,
117
+ children: /*#__PURE__*/_jsx(rootProps.slots.baseTextField, _extends({
118
+ placeholder: apiRef.current.getLocaleText('columnsManagementSearchTitle'),
119
+ inputRef: searchInputRef,
120
+ value: searchValue,
121
+ onChange: handleSearchValueChange,
122
+ variant: "outlined",
123
+ size: "small",
124
+ InputProps: {
125
+ startAdornment: /*#__PURE__*/_jsx(rootProps.slots.baseInputAdornment, {
126
+ position: "start",
127
+ children: /*#__PURE__*/_jsx(rootProps.slots.quickFilterIcon, {})
128
+ }),
129
+ sx: {
130
+ pl: 1.5
131
+ }
132
+ },
133
+ fullWidth: true
134
+ }, (_rootProps$slotProps = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps.baseTextField))
135
+ }), /*#__PURE__*/_jsxs(GridColumnsManagementBody, {
136
+ className: classes.root,
137
+ ownerState: rootProps,
138
+ children: [currentColumns.map(column => {
139
+ var _rootProps$slotProps2;
140
+ return /*#__PURE__*/_jsx(FormControlLabel, {
141
+ className: classes.row,
142
+ control: /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({
143
+ disabled: column.hideable === false,
144
+ checked: columnVisibilityModel[column.field] !== false,
145
+ onClick: toggleColumn,
146
+ name: column.field,
147
+ sx: {
148
+ p: 0.5
149
+ },
150
+ inputRef: isFirstHideableColumn(column) ? firstSwitchRef : undefined
151
+ }, (_rootProps$slotProps2 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps2.baseCheckbox)),
152
+ label: column.headerName || column.field
153
+ }, column.field);
154
+ }), currentColumns.length === 0 && /*#__PURE__*/_jsx(GridColumnsManagementEmptyText, {
155
+ ownerState: rootProps,
156
+ children: apiRef.current.getLocaleText('columnsManagementNoColumns')
157
+ })]
158
+ }), !disableShowHideToggle && !disableResetButton && currentColumns.length > 0 ? /*#__PURE__*/_jsxs(GridColumnsManagementFooter, {
159
+ ownerState: rootProps,
160
+ className: classes.footer,
161
+ children: [!disableShowHideToggle ? /*#__PURE__*/_jsx(FormControlLabel, {
162
+ control: /*#__PURE__*/_jsx(rootProps.slots.baseCheckbox, _extends({
163
+ disabled: hideableColumns.length === 0,
164
+ checked: allHideableColumnsVisible,
165
+ indeterminate: !allHideableColumnsVisible && !allHideableColumnsHidden,
166
+ onClick: () => toggleAllColumns(!allHideableColumnsVisible),
167
+ name: apiRef.current.getLocaleText('columnsManagementShowHideAllText')
168
+ }, (_rootProps$slotProps3 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps3.baseCheckbox)),
169
+ sx: {
170
+ [`.MuiFormControlLabel-label`]: {
171
+ textTransform: 'uppercase',
172
+ fontSize: '14px'
173
+ }
174
+ },
175
+ label: apiRef.current.getLocaleText('columnsManagementShowHideAllText')
176
+ }) : /*#__PURE__*/_jsx("span", {}), !disableResetButton ? /*#__PURE__*/_jsx(rootProps.slots.baseButton, _extends({
177
+ onClick: () => apiRef.current.setColumnVisibilityModel(initialColumnVisibilityModel),
178
+ disabled: isResetDisabled
179
+ }, (_rootProps$slotProps4 = rootProps.slotProps) == null ? void 0 : _rootProps$slotProps4.baseButton, {
180
+ children: "Reset"
181
+ })) : null]
182
+ }) : null]
183
+ });
184
+ }
185
+ process.env.NODE_ENV !== "production" ? GridColumnsManagement.propTypes = {
186
+ // ----------------------------- Warning --------------------------------
187
+ // | These PropTypes are generated from the TypeScript type definitions |
188
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
189
+ // ----------------------------------------------------------------------
190
+ /**
191
+ * If `true`, the column search field will be focused automatically.
192
+ * If `false`, the first column switch input will be focused automatically.
193
+ * This helps to avoid input keyboard panel to popup automatically on touch devices.
194
+ * @default true
195
+ */
196
+ autoFocusSearchField: PropTypes.bool,
197
+ /**
198
+ * If `true`, the `Reset` button will not be disabled
199
+ * @default false
200
+ */
201
+ disableResetButton: PropTypes.bool,
202
+ /**
203
+ * If `true`, the `Show/Hide all` toggle checkbox will not be displayed.
204
+ * @default false
205
+ */
206
+ disableShowHideToggle: PropTypes.bool,
207
+ /**
208
+ * Returns the list of togglable columns.
209
+ * If used, only those columns will be displayed in the panel
210
+ * which are passed as the return value of the function.
211
+ * @param {GridColDef[]} columns The `ColDef` list of all columns.
212
+ * @returns {GridColDef['field'][]} The list of togglable columns' field names.
213
+ */
214
+ getTogglableColumns: PropTypes.func,
215
+ searchPredicate: PropTypes.func,
216
+ sort: PropTypes.oneOf(['asc', 'desc'])
217
+ } : void 0;
218
+ const GridColumnsManagementBody = styled('div', {
219
+ name: 'MuiDataGrid',
220
+ slot: 'ColumnsManagement',
221
+ overridesResolver: (props, styles) => styles.columnsManagement
222
+ })(({
223
+ theme
224
+ }) => ({
225
+ padding: theme.spacing(0, 3, 1.5),
226
+ display: 'flex',
227
+ flexDirection: 'column',
228
+ overflow: 'auto',
229
+ flex: '1 1',
230
+ maxHeight: 400,
231
+ alignItems: 'flex-start'
232
+ }));
233
+ const GridColumnsManagementHeader = styled('div', {
234
+ name: 'MuiDataGrid',
235
+ slot: 'ColumnsManagementHeader',
236
+ overridesResolver: (props, styles) => styles.columnsManagementHeader
237
+ })(({
238
+ theme
239
+ }) => ({
240
+ padding: theme.spacing(1.5, 3)
241
+ }));
242
+ const GridColumnsManagementFooter = styled('div', {
243
+ name: 'MuiDataGrid',
244
+ slot: 'ColumnsManagementFooter',
245
+ overridesResolver: (props, styles) => styles.columnsManagementFooter
246
+ })(({
247
+ theme
248
+ }) => ({
249
+ padding: theme.spacing(0.5, 1, 0.5, 2.4),
250
+ display: 'flex',
251
+ justifyContent: 'space-between',
252
+ borderTop: `1px solid ${theme.palette.divider}`
253
+ }));
254
+ const GridColumnsManagementEmptyText = styled('div')(({
255
+ theme
256
+ }) => ({
257
+ padding: theme.spacing(0.5, 0),
258
+ color: theme.palette.grey[500]
259
+ }));
260
+ export { GridColumnsManagement };
@@ -0,0 +1 @@
1
+ export * from './GridColumnsManagement';
@@ -0,0 +1 @@
1
+ export * from './GridColumnsManagement';
@@ -0,0 +1,4 @@
1
+ import { GridColumnVisibilityModel } from '../../hooks/features/columns/gridColumnsInterfaces';
2
+ import { GridColumnsManagementProps } from './GridColumnsManagement';
3
+ export declare const checkColumnVisibilityModelsSame: (a: GridColumnVisibilityModel, b: GridColumnVisibilityModel) => boolean;
4
+ export declare const defaultSearchPredicate: NonNullable<GridColumnsManagementProps['searchPredicate']>;
@@ -0,0 +1,16 @@
1
+ export const checkColumnVisibilityModelsSame = (a, b) => {
2
+ // Filter `false` values only, as `true` and not having a key are the same
3
+ const aFalseValues = new Set(Object.keys(a).filter(key => a[key] === false));
4
+ const bFalseValues = new Set(Object.keys(b).filter(key => b[key] === false));
5
+ if (aFalseValues.size !== bFalseValues.size) {
6
+ return false;
7
+ }
8
+ let result = true;
9
+ aFalseValues.forEach(key => {
10
+ if (!bFalseValues.has(key)) {
11
+ result = false;
12
+ }
13
+ });
14
+ return result;
15
+ };
16
+ export const defaultSearchPredicate = (column, searchValue) => (column.headerName || column.field).toLowerCase().indexOf(searchValue) > -1;
@@ -5,27 +5,33 @@ import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import clsx from 'clsx';
7
7
  import { unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_capitalize as capitalize, unstable_composeClasses as composeClasses } from '@mui/utils';
8
+ import { styled } from '@mui/system';
8
9
  import { GridRootStyles } from './GridRootStyles';
9
10
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
10
11
  import { useGridPrivateApiContext } from '../../hooks/utils/useGridPrivateApiContext';
11
12
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
12
13
  import { getDataGridUtilityClass } from '../../constants/gridClasses';
13
14
  import { gridDensityValueSelector } from '../../hooks/features/density/densitySelector';
14
- import { useGridAriaAttributes } from '../../hooks/utils/useGridAriaAttributes';
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { jsxs as _jsxs } from "react/jsx-runtime";
16
17
  const useUtilityClasses = ownerState => {
17
18
  const {
18
19
  autoHeight,
19
20
  density,
20
- classes
21
+ classes,
22
+ showCellVerticalBorder
21
23
  } = ownerState;
22
24
  const slots = {
23
- root: ['root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, 'withBorderColor']
25
+ root: ['root', autoHeight && 'autoHeight', `root--density${capitalize(density)}`, 'withBorderColor', showCellVerticalBorder && 'withVerticalBorder']
24
26
  };
25
27
  return composeClasses(slots, getDataGridUtilityClass, classes);
26
28
  };
29
+ const GridPanelAnchor = styled('div')({
30
+ position: 'absolute',
31
+ top: `var(--DataGrid-headersTotalHeight)`,
32
+ left: 0
33
+ });
27
34
  const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
28
- var _rootProps$experiment;
29
35
  const rootProps = useGridRootProps();
30
36
  const {
31
37
  children,
@@ -34,18 +40,12 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
34
40
  other = _objectWithoutPropertiesLoose(props, _excluded);
35
41
  const apiRef = useGridPrivateApiContext();
36
42
  const densityValue = useGridSelector(apiRef, gridDensityValueSelector);
37
- const rootContainerRef = React.useRef(null);
38
- const handleRef = useForkRef(rootContainerRef, ref);
39
- const getAriaAttributes = (_rootProps$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 // ariaV7 should never change
40
- ? null : useGridAriaAttributes;
41
- const ariaAttributes = typeof getAriaAttributes === 'function' ? getAriaAttributes() : null;
43
+ const rootElementRef = apiRef.current.rootElementRef;
44
+ const handleRef = useForkRef(rootElementRef, ref);
42
45
  const ownerState = _extends({}, rootProps, {
43
46
  density: densityValue
44
47
  });
45
48
  const classes = useUtilityClasses(ownerState);
46
- apiRef.current.register('public', {
47
- rootElementRef: rootContainerRef
48
- });
49
49
 
50
50
  // Our implementation of <NoSsr />
51
51
  const [mountedState, setMountedState] = React.useState(false);
@@ -55,12 +55,15 @@ const GridRoot = /*#__PURE__*/React.forwardRef(function GridRoot(props, ref) {
55
55
  if (!mountedState) {
56
56
  return null;
57
57
  }
58
- return /*#__PURE__*/_jsx(GridRootStyles, _extends({
58
+ return /*#__PURE__*/_jsxs(GridRootStyles, _extends({
59
59
  ref: handleRef,
60
60
  className: clsx(className, classes.root),
61
61
  ownerState: ownerState
62
- }, ariaAttributes, other, {
63
- children: children
62
+ }, other, {
63
+ children: [/*#__PURE__*/_jsx(GridPanelAnchor, {
64
+ role: "presentation",
65
+ "data-id": "gridPanelAnchor"
66
+ }), children]
64
67
  }));
65
68
  });
66
69
  process.env.NODE_ENV !== "production" ? GridRoot.propTypes = {