@mui/x-data-grid 7.0.0-alpha.8 → 7.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/CHANGELOG.md +508 -30
  2. package/DataGrid/DataGrid.js +6 -6
  3. package/DataGrid/useDataGridComponent.js +2 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/README.md +3 -3
  6. package/components/GridColumnHeaders.d.ts +3 -2
  7. package/components/GridColumnHeaders.js +3 -11
  8. package/components/GridDetailPanels.d.ts +5 -0
  9. package/components/GridDetailPanels.js +4 -0
  10. package/components/GridHeaders.d.ts +4 -0
  11. package/components/GridHeaders.js +53 -0
  12. package/components/GridPinnedRows.d.ts +7 -0
  13. package/components/GridPinnedRows.js +4 -0
  14. package/components/GridRow.d.ts +7 -4
  15. package/components/GridRow.js +161 -97
  16. package/components/GridScrollbarFillerCell.d.ts +7 -0
  17. package/components/GridScrollbarFillerCell.js +39 -0
  18. package/components/base/GridBody.d.ts +2 -13
  19. package/components/base/GridBody.js +2 -116
  20. package/components/base/GridOverlays.js +10 -21
  21. package/components/cell/GridActionsCellItem.d.ts +2 -2
  22. package/components/cell/GridCell.d.ts +15 -21
  23. package/components/cell/GridCell.js +67 -372
  24. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  25. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
  26. package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  27. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  28. package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  29. package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  30. package/components/columnsManagement/GridColumnsManagement.d.ts +36 -0
  31. package/components/columnsManagement/GridColumnsManagement.js +260 -0
  32. package/components/columnsManagement/index.d.ts +1 -0
  33. package/components/columnsManagement/index.js +1 -0
  34. package/components/columnsManagement/utils.d.ts +4 -0
  35. package/components/columnsManagement/utils.js +16 -0
  36. package/components/containers/GridRoot.js +18 -15
  37. package/components/containers/GridRootStyles.js +307 -204
  38. package/components/index.d.ts +1 -0
  39. package/components/index.js +1 -0
  40. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  41. package/components/panel/GridColumnsPanel.d.ts +0 -28
  42. package/components/panel/GridColumnsPanel.js +5 -213
  43. package/components/panel/GridPanel.js +3 -4
  44. package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
  45. package/components/panel/filterPanel/GridFilterForm.js +31 -14
  46. package/components/panel/filterPanel/GridFilterPanel.js +46 -20
  47. package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
  48. package/components/toolbar/GridToolbarColumnsButton.js +40 -22
  49. package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
  50. package/components/toolbar/GridToolbarDensitySelector.js +40 -22
  51. package/components/toolbar/GridToolbarExport.d.ts +10 -1
  52. package/components/toolbar/GridToolbarExport.js +6 -1
  53. package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
  54. package/components/toolbar/GridToolbarExportContainer.js +41 -23
  55. package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
  56. package/components/toolbar/GridToolbarFilterButton.js +6 -10
  57. package/components/virtualization/GridBottomContainer.d.ts +2 -0
  58. package/components/virtualization/GridBottomContainer.js +25 -0
  59. package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
  60. package/components/virtualization/GridMainContainer.js +20 -0
  61. package/components/virtualization/GridTopContainer.d.ts +2 -0
  62. package/components/virtualization/GridTopContainer.js +35 -0
  63. package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
  64. package/components/virtualization/GridVirtualScrollbar.js +131 -0
  65. package/components/virtualization/GridVirtualScroller.d.ts +4 -4
  66. package/components/virtualization/GridVirtualScroller.js +69 -16
  67. package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
  68. package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  69. package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  70. package/constants/defaultGridSlotsComponents.js +8 -3
  71. package/constants/gridClasses.d.ts +72 -12
  72. package/constants/gridClasses.js +1 -1
  73. package/constants/localeTextConstants.js +4 -6
  74. package/hooks/core/gridCoreSelector.d.ts +6 -0
  75. package/hooks/core/gridCoreSelector.js +5 -0
  76. package/hooks/core/useGridApiInitialization.js +4 -0
  77. package/hooks/core/useGridInitialization.js +4 -0
  78. package/hooks/core/useGridRefs.d.ts +3 -0
  79. package/hooks/core/useGridRefs.js +13 -0
  80. package/hooks/core/useGridTheme.d.ts +3 -0
  81. package/hooks/core/useGridTheme.js +19 -0
  82. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  83. package/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  84. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
  85. package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
  86. package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  87. package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
  88. package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  89. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
  90. package/hooks/features/columns/gridColumnsSelector.js +52 -0
  91. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
  92. package/hooks/features/columns/gridColumnsUtils.js +10 -12
  93. package/hooks/features/columns/index.d.ts +2 -2
  94. package/hooks/features/columns/index.js +2 -1
  95. package/hooks/features/columns/useGridColumnSpanning.js +62 -61
  96. package/hooks/features/columns/useGridColumns.js +20 -23
  97. package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
  98. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
  99. package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  100. package/hooks/features/dimensions/index.d.ts +2 -0
  101. package/hooks/features/dimensions/index.js +1 -0
  102. package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
  103. package/hooks/features/dimensions/useGridDimensions.js +216 -148
  104. package/hooks/features/export/serializers/csvSerializer.js +2 -2
  105. package/hooks/features/filter/useGridFilter.js +3 -3
  106. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
  107. package/hooks/features/focus/gridFocusStateSelector.js +2 -6
  108. package/hooks/features/focus/useGridFocus.js +3 -3
  109. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  110. package/hooks/features/pagination/useGridPagination.js +3 -5
  111. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
  112. package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
  113. package/hooks/features/rows/gridRowsSelector.js +5 -5
  114. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  115. package/hooks/features/rows/gridRowsUtils.js +8 -5
  116. package/hooks/features/rows/useGridRowsMeta.js +7 -4
  117. package/hooks/features/scroll/useGridScroll.js +8 -10
  118. package/hooks/features/sorting/gridSortingUtils.js +1 -1
  119. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  120. package/hooks/features/sorting/useGridSorting.js +15 -10
  121. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
  122. package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  123. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
  124. package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
  125. package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
  126. package/hooks/features/virtualization/useGridVirtualization.js +8 -1
  127. package/hooks/utils/index.d.ts +3 -0
  128. package/hooks/utils/index.js +4 -1
  129. package/hooks/utils/useGridAriaAttributes.js +1 -2
  130. package/hooks/utils/useGridNativeEventListener.js +4 -9
  131. package/hooks/utils/useResizeObserver.d.ts +2 -0
  132. package/hooks/utils/useResizeObserver.js +36 -0
  133. package/hooks/utils/useRunOnce.d.ts +5 -0
  134. package/hooks/utils/useRunOnce.js +18 -0
  135. package/index.js +1 -1
  136. package/internals/index.d.ts +12 -9
  137. package/internals/index.js +9 -7
  138. package/legacy/DataGrid/DataGrid.js +6 -6
  139. package/legacy/DataGrid/useDataGridComponent.js +2 -1
  140. package/legacy/DataGrid/useDataGridProps.js +1 -0
  141. package/legacy/components/GridColumnHeaders.js +3 -11
  142. package/legacy/components/GridDetailPanels.js +4 -0
  143. package/legacy/components/GridHeaders.js +53 -0
  144. package/legacy/components/GridPinnedRows.js +4 -0
  145. package/legacy/components/GridRow.js +159 -98
  146. package/legacy/components/GridScrollbarFillerCell.js +36 -0
  147. package/legacy/components/base/GridBody.js +2 -114
  148. package/legacy/components/base/GridOverlays.js +10 -25
  149. package/legacy/components/cell/GridCell.js +69 -377
  150. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  151. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  152. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  153. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  154. package/legacy/components/columnsManagement/GridColumnsManagement.js +300 -0
  155. package/legacy/components/columnsManagement/index.js +1 -0
  156. package/legacy/components/columnsManagement/utils.js +22 -0
  157. package/legacy/components/containers/GridRoot.js +18 -15
  158. package/legacy/components/containers/GridRootStyles.js +215 -137
  159. package/legacy/components/index.js +1 -0
  160. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  161. package/legacy/components/panel/GridColumnsPanel.js +5 -233
  162. package/legacy/components/panel/GridPanel.js +3 -4
  163. package/legacy/components/panel/filterPanel/GridFilterForm.js +30 -13
  164. package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
  165. package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
  166. package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
  167. package/legacy/components/toolbar/GridToolbarExport.js +6 -1
  168. package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
  169. package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
  170. package/legacy/components/virtualization/GridBottomContainer.js +25 -0
  171. package/legacy/components/virtualization/GridMainContainer.js +20 -0
  172. package/legacy/components/virtualization/GridTopContainer.js +35 -0
  173. package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
  174. package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
  175. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
  176. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  177. package/legacy/constants/defaultGridSlotsComponents.js +8 -3
  178. package/legacy/constants/gridClasses.js +1 -1
  179. package/legacy/constants/localeTextConstants.js +4 -6
  180. package/legacy/hooks/core/gridCoreSelector.js +7 -0
  181. package/legacy/hooks/core/useGridApiInitialization.js +4 -0
  182. package/legacy/hooks/core/useGridInitialization.js +4 -0
  183. package/legacy/hooks/core/useGridRefs.js +13 -0
  184. package/legacy/hooks/core/useGridTheme.js +21 -0
  185. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +7 -14
  186. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
  187. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  188. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  189. package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
  190. package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
  191. package/legacy/hooks/features/columns/index.js +2 -1
  192. package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
  193. package/legacy/hooks/features/columns/useGridColumns.js +22 -23
  194. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
  195. package/legacy/hooks/features/dimensions/index.js +1 -0
  196. package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
  197. package/legacy/hooks/features/export/serializers/csvSerializer.js +2 -2
  198. package/legacy/hooks/features/filter/useGridFilter.js +3 -3
  199. package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
  200. package/legacy/hooks/features/focus/useGridFocus.js +3 -3
  201. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  202. package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
  203. package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
  204. package/legacy/hooks/features/rows/gridRowsUtils.js +8 -5
  205. package/legacy/hooks/features/rows/useGridRowsMeta.js +7 -4
  206. package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
  207. package/legacy/hooks/features/sorting/gridSortingUtils.js +1 -1
  208. package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
  209. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
  210. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
  211. package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
  212. package/legacy/hooks/utils/index.js +4 -1
  213. package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
  214. package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
  215. package/legacy/hooks/utils/useResizeObserver.js +36 -0
  216. package/legacy/hooks/utils/useRunOnce.js +18 -0
  217. package/legacy/index.js +1 -1
  218. package/legacy/internals/index.js +9 -7
  219. package/legacy/locales/arSD.js +5 -6
  220. package/legacy/locales/beBY.js +5 -6
  221. package/legacy/locales/bgBG.js +5 -6
  222. package/legacy/locales/csCZ.js +5 -6
  223. package/legacy/locales/daDK.js +5 -6
  224. package/legacy/locales/deDE.js +5 -6
  225. package/legacy/locales/elGR.js +5 -6
  226. package/legacy/locales/esES.js +5 -6
  227. package/legacy/locales/faIR.js +5 -6
  228. package/legacy/locales/fiFI.js +5 -6
  229. package/legacy/locales/frFR.js +5 -6
  230. package/legacy/locales/heIL.js +5 -6
  231. package/legacy/locales/hrHR.js +160 -0
  232. package/legacy/locales/huHU.js +5 -6
  233. package/legacy/locales/index.js +4 -1
  234. package/legacy/locales/itIT.js +5 -6
  235. package/legacy/locales/jaJP.js +5 -6
  236. package/legacy/locales/koKR.js +5 -6
  237. package/legacy/locales/nbNO.js +5 -6
  238. package/legacy/locales/nlNL.js +5 -6
  239. package/legacy/locales/plPL.js +5 -6
  240. package/legacy/locales/ptBR.js +5 -6
  241. package/legacy/locales/ptPT.js +160 -0
  242. package/legacy/locales/roRO.js +5 -6
  243. package/legacy/locales/ruRU.js +5 -6
  244. package/legacy/locales/skSK.js +5 -6
  245. package/legacy/locales/svSE.js +5 -6
  246. package/legacy/locales/trTR.js +5 -6
  247. package/legacy/locales/ukUA.js +5 -6
  248. package/legacy/locales/urPK.js +5 -6
  249. package/legacy/locales/viVN.js +5 -6
  250. package/legacy/locales/zhCN.js +5 -6
  251. package/legacy/locales/zhHK.js +160 -0
  252. package/legacy/locales/zhTW.js +5 -6
  253. package/legacy/models/index.js +0 -1
  254. package/legacy/models/params/index.js +1 -2
  255. package/legacy/utils/utils.js +10 -1
  256. package/locales/arSD.js +5 -6
  257. package/locales/beBY.js +5 -6
  258. package/locales/bgBG.js +5 -6
  259. package/locales/csCZ.js +5 -6
  260. package/locales/daDK.js +5 -6
  261. package/locales/deDE.js +5 -6
  262. package/locales/elGR.js +5 -6
  263. package/locales/esES.js +5 -6
  264. package/locales/faIR.js +5 -6
  265. package/locales/fiFI.js +5 -6
  266. package/locales/frFR.js +5 -6
  267. package/locales/heIL.js +5 -6
  268. package/locales/hrHR.d.ts +1 -0
  269. package/locales/hrHR.js +148 -0
  270. package/locales/huHU.js +5 -6
  271. package/locales/index.d.ts +3 -0
  272. package/locales/index.js +4 -1
  273. package/locales/itIT.js +5 -6
  274. package/locales/jaJP.js +5 -6
  275. package/locales/koKR.js +5 -6
  276. package/locales/nbNO.js +5 -6
  277. package/locales/nlNL.js +5 -6
  278. package/locales/plPL.js +5 -6
  279. package/locales/ptBR.js +5 -6
  280. package/locales/ptPT.d.ts +1 -0
  281. package/locales/ptPT.js +148 -0
  282. package/locales/roRO.js +5 -6
  283. package/locales/ruRU.js +5 -6
  284. package/locales/skSK.js +5 -6
  285. package/locales/svSE.js +5 -6
  286. package/locales/trTR.js +5 -6
  287. package/locales/ukUA.js +5 -6
  288. package/locales/urPK.js +5 -6
  289. package/locales/viVN.js +5 -6
  290. package/locales/zhCN.js +5 -6
  291. package/locales/zhHK.d.ts +1 -0
  292. package/locales/zhHK.js +148 -0
  293. package/locales/zhTW.js +5 -6
  294. package/models/api/gridColumnGroupingApi.d.ts +2 -2
  295. package/models/api/gridCoreApi.d.ts +16 -16
  296. package/models/api/gridLocaleTextApi.d.ts +3 -5
  297. package/models/api/gridRowsMetaApi.d.ts +1 -1
  298. package/models/api/gridVirtualizationApi.d.ts +2 -3
  299. package/models/colDef/gridColType.d.ts +11 -2
  300. package/models/events/gridEventLookup.d.ts +3 -3
  301. package/models/gridFilterModel.d.ts +1 -1
  302. package/models/gridSlotsComponent.d.ts +21 -2
  303. package/models/gridSlotsComponentsProps.d.ts +4 -0
  304. package/models/gridStateCommunity.d.ts +5 -1
  305. package/models/index.d.ts +0 -1
  306. package/models/index.js +0 -1
  307. package/models/params/index.d.ts +0 -1
  308. package/models/params/index.js +1 -2
  309. package/models/props/DataGridProps.d.ts +6 -11
  310. package/modern/DataGrid/DataGrid.js +6 -6
  311. package/modern/DataGrid/useDataGridComponent.js +2 -1
  312. package/modern/DataGrid/useDataGridProps.js +1 -0
  313. package/modern/components/GridColumnHeaders.js +3 -11
  314. package/modern/components/GridDetailPanels.js +4 -0
  315. package/modern/components/GridHeaders.js +53 -0
  316. package/modern/components/GridPinnedRows.js +4 -0
  317. package/modern/components/GridRow.js +159 -96
  318. package/modern/components/GridScrollbarFillerCell.js +39 -0
  319. package/modern/components/base/GridBody.js +2 -116
  320. package/modern/components/base/GridOverlays.js +10 -16
  321. package/modern/components/cell/GridCell.js +65 -369
  322. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  323. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  324. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  325. package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  326. package/modern/components/columnsManagement/GridColumnsManagement.js +256 -0
  327. package/modern/components/columnsManagement/index.js +1 -0
  328. package/modern/components/columnsManagement/utils.js +16 -0
  329. package/modern/components/containers/GridRoot.js +18 -14
  330. package/modern/components/containers/GridRootStyles.js +307 -204
  331. package/modern/components/index.js +1 -0
  332. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  333. package/modern/components/panel/GridColumnsPanel.js +4 -209
  334. package/modern/components/panel/GridPanel.js +3 -4
  335. package/modern/components/panel/filterPanel/GridFilterForm.js +30 -13
  336. package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
  337. package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
  338. package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
  339. package/modern/components/toolbar/GridToolbarExport.js +6 -1
  340. package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
  341. package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
  342. package/modern/components/virtualization/GridBottomContainer.js +25 -0
  343. package/modern/components/virtualization/GridMainContainer.js +20 -0
  344. package/modern/components/virtualization/GridTopContainer.js +35 -0
  345. package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
  346. package/modern/components/virtualization/GridVirtualScroller.js +69 -16
  347. package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  348. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  349. package/modern/constants/defaultGridSlotsComponents.js +8 -3
  350. package/modern/constants/gridClasses.js +1 -1
  351. package/modern/constants/localeTextConstants.js +4 -6
  352. package/modern/hooks/core/gridCoreSelector.js +5 -0
  353. package/modern/hooks/core/useGridApiInitialization.js +3 -0
  354. package/modern/hooks/core/useGridInitialization.js +4 -0
  355. package/modern/hooks/core/useGridRefs.js +13 -0
  356. package/modern/hooks/core/useGridTheme.js +19 -0
  357. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  358. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
  359. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  360. package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  361. package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
  362. package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
  363. package/modern/hooks/features/columns/index.js +2 -1
  364. package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
  365. package/modern/hooks/features/columns/useGridColumns.js +19 -21
  366. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  367. package/modern/hooks/features/dimensions/index.js +1 -0
  368. package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
  369. package/modern/hooks/features/export/serializers/csvSerializer.js +2 -2
  370. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  371. package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
  372. package/modern/hooks/features/focus/useGridFocus.js +3 -3
  373. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  374. package/modern/hooks/features/pagination/useGridPagination.js +3 -5
  375. package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
  376. package/modern/hooks/features/rows/gridRowsUtils.js +8 -5
  377. package/modern/hooks/features/rows/useGridRowsMeta.js +7 -4
  378. package/modern/hooks/features/scroll/useGridScroll.js +8 -9
  379. package/modern/hooks/features/sorting/gridSortingUtils.js +1 -1
  380. package/modern/hooks/features/sorting/useGridSorting.js +15 -10
  381. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  382. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
  383. package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
  384. package/modern/hooks/utils/index.js +4 -1
  385. package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
  386. package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
  387. package/modern/hooks/utils/useResizeObserver.js +36 -0
  388. package/modern/hooks/utils/useRunOnce.js +18 -0
  389. package/modern/index.js +1 -1
  390. package/modern/internals/index.js +9 -7
  391. package/modern/locales/arSD.js +5 -6
  392. package/modern/locales/beBY.js +5 -6
  393. package/modern/locales/bgBG.js +5 -6
  394. package/modern/locales/csCZ.js +5 -6
  395. package/modern/locales/daDK.js +5 -6
  396. package/modern/locales/deDE.js +5 -6
  397. package/modern/locales/elGR.js +5 -6
  398. package/modern/locales/esES.js +5 -6
  399. package/modern/locales/faIR.js +5 -6
  400. package/modern/locales/fiFI.js +5 -6
  401. package/modern/locales/frFR.js +5 -6
  402. package/modern/locales/heIL.js +5 -6
  403. package/modern/locales/hrHR.js +148 -0
  404. package/modern/locales/huHU.js +5 -6
  405. package/modern/locales/index.js +4 -1
  406. package/modern/locales/itIT.js +5 -6
  407. package/modern/locales/jaJP.js +5 -6
  408. package/modern/locales/koKR.js +5 -6
  409. package/modern/locales/nbNO.js +5 -6
  410. package/modern/locales/nlNL.js +5 -6
  411. package/modern/locales/plPL.js +5 -6
  412. package/modern/locales/ptBR.js +5 -6
  413. package/modern/locales/ptPT.js +148 -0
  414. package/modern/locales/roRO.js +5 -6
  415. package/modern/locales/ruRU.js +5 -6
  416. package/modern/locales/skSK.js +5 -6
  417. package/modern/locales/svSE.js +5 -6
  418. package/modern/locales/trTR.js +5 -6
  419. package/modern/locales/ukUA.js +5 -6
  420. package/modern/locales/urPK.js +5 -6
  421. package/modern/locales/viVN.js +5 -6
  422. package/modern/locales/zhCN.js +5 -6
  423. package/modern/locales/zhHK.js +148 -0
  424. package/modern/locales/zhTW.js +5 -6
  425. package/modern/models/index.js +0 -1
  426. package/modern/models/params/index.js +1 -2
  427. package/modern/utils/utils.js +10 -1
  428. package/node/DataGrid/DataGrid.js +6 -6
  429. package/node/DataGrid/useDataGridComponent.js +1 -0
  430. package/node/DataGrid/useDataGridProps.js +1 -0
  431. package/node/components/GridColumnHeaders.js +3 -11
  432. package/node/components/GridDetailPanels.js +10 -0
  433. package/node/components/GridHeaders.js +60 -0
  434. package/node/components/GridPinnedRows.js +10 -0
  435. package/node/components/GridRow.js +157 -94
  436. package/node/components/GridScrollbarFillerCell.js +47 -0
  437. package/node/components/base/GridBody.js +7 -118
  438. package/node/components/base/GridOverlays.js +9 -15
  439. package/node/components/cell/GridCell.js +66 -369
  440. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  441. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
  442. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  443. package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  444. package/node/components/columnsManagement/GridColumnsManagement.js +264 -0
  445. package/node/components/columnsManagement/index.js +16 -0
  446. package/node/components/columnsManagement/utils.js +24 -0
  447. package/node/components/containers/GridRoot.js +17 -14
  448. package/node/components/containers/GridRootStyles.js +175 -72
  449. package/node/components/index.js +11 -0
  450. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  451. package/node/components/panel/GridColumnsPanel.js +4 -208
  452. package/node/components/panel/GridPanel.js +3 -4
  453. package/node/components/panel/filterPanel/GridFilterForm.js +29 -12
  454. package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
  455. package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
  456. package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
  457. package/node/components/toolbar/GridToolbarExport.js +6 -1
  458. package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
  459. package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
  460. package/node/components/virtualization/GridBottomContainer.js +34 -0
  461. package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
  462. package/node/components/virtualization/GridTopContainer.js +44 -0
  463. package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
  464. package/node/components/virtualization/GridVirtualScroller.js +69 -17
  465. package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
  466. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  467. package/node/constants/defaultGridSlotsComponents.js +6 -1
  468. package/node/constants/gridClasses.js +1 -1
  469. package/node/constants/localeTextConstants.js +4 -6
  470. package/node/hooks/core/gridCoreSelector.js +12 -0
  471. package/node/hooks/core/useGridApiInitialization.js +3 -0
  472. package/node/hooks/core/useGridInitialization.js +4 -0
  473. package/node/hooks/core/useGridRefs.js +22 -0
  474. package/node/hooks/core/useGridTheme.js +29 -0
  475. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +5 -12
  476. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
  477. package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  478. package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
  479. package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
  480. package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
  481. package/node/hooks/features/columns/index.js +22 -61
  482. package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
  483. package/node/hooks/features/columns/useGridColumns.js +20 -22
  484. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
  485. package/node/hooks/features/dimensions/index.js +11 -0
  486. package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
  487. package/node/hooks/features/export/serializers/csvSerializer.js +2 -2
  488. package/node/hooks/features/filter/useGridFilter.js +2 -2
  489. package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
  490. package/node/hooks/features/focus/useGridFocus.js +2 -2
  491. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
  492. package/node/hooks/features/pagination/useGridPagination.js +3 -5
  493. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  494. package/node/hooks/features/rows/gridRowsUtils.js +8 -5
  495. package/node/hooks/features/rows/useGridRowsMeta.js +5 -3
  496. package/node/hooks/features/scroll/useGridScroll.js +8 -9
  497. package/node/hooks/features/sorting/gridSortingUtils.js +1 -1
  498. package/node/hooks/features/sorting/useGridSorting.js +15 -10
  499. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  500. package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
  501. package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
  502. package/node/hooks/utils/index.js +36 -0
  503. package/node/hooks/utils/useGridAriaAttributes.js +1 -1
  504. package/node/hooks/utils/useGridNativeEventListener.js +3 -9
  505. package/node/hooks/utils/useResizeObserver.js +44 -0
  506. package/node/hooks/utils/useRunOnce.js +27 -0
  507. package/node/index.js +1 -1
  508. package/node/internals/index.js +86 -71
  509. package/node/locales/arSD.js +5 -6
  510. package/node/locales/beBY.js +5 -6
  511. package/node/locales/bgBG.js +5 -6
  512. package/node/locales/csCZ.js +5 -6
  513. package/node/locales/daDK.js +5 -6
  514. package/node/locales/deDE.js +5 -6
  515. package/node/locales/elGR.js +5 -6
  516. package/node/locales/esES.js +5 -6
  517. package/node/locales/faIR.js +5 -6
  518. package/node/locales/fiFI.js +5 -6
  519. package/node/locales/frFR.js +5 -6
  520. package/node/locales/heIL.js +5 -6
  521. package/node/locales/hrHR.js +154 -0
  522. package/node/locales/huHU.js +5 -6
  523. package/node/locales/index.js +33 -0
  524. package/node/locales/itIT.js +5 -6
  525. package/node/locales/jaJP.js +5 -6
  526. package/node/locales/koKR.js +5 -6
  527. package/node/locales/nbNO.js +5 -6
  528. package/node/locales/nlNL.js +5 -6
  529. package/node/locales/plPL.js +5 -6
  530. package/node/locales/ptBR.js +5 -6
  531. package/node/locales/ptPT.js +154 -0
  532. package/node/locales/roRO.js +5 -6
  533. package/node/locales/ruRU.js +5 -6
  534. package/node/locales/skSK.js +5 -6
  535. package/node/locales/svSE.js +5 -6
  536. package/node/locales/trTR.js +5 -6
  537. package/node/locales/ukUA.js +5 -6
  538. package/node/locales/urPK.js +5 -6
  539. package/node/locales/viVN.js +5 -6
  540. package/node/locales/zhCN.js +5 -6
  541. package/node/locales/zhHK.js +154 -0
  542. package/node/locales/zhTW.js +5 -6
  543. package/node/models/index.js +0 -11
  544. package/node/models/params/index.js +0 -11
  545. package/node/utils/utils.js +11 -1
  546. package/package.json +6 -6
  547. package/utils/utils.d.ts +6 -0
  548. package/utils/utils.js +10 -1
  549. package/components/DataGridVirtualScroller.d.ts +0 -3
  550. package/components/DataGridVirtualScroller.js +0 -35
  551. package/components/containers/GridMainContainer.js +0 -43
  552. package/legacy/components/DataGridVirtualScroller.js +0 -32
  553. package/legacy/components/containers/GridMainContainer.js +0 -45
  554. package/legacy/models/gridRootContainerRef.js +0 -1
  555. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  556. package/models/gridRootContainerRef.d.ts +0 -5
  557. package/models/gridRootContainerRef.js +0 -1
  558. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
  559. package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  560. package/modern/components/DataGridVirtualScroller.js +0 -35
  561. package/modern/components/containers/GridMainContainer.js +0 -42
  562. package/modern/models/gridRootContainerRef.js +0 -1
  563. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  564. package/node/components/DataGridVirtualScroller.js +0 -42
  565. package/node/models/gridRootContainerRef.js +0 -5
  566. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +0 -5
@@ -1,28 +1,33 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridRow, GridColumnHeaderFilterIconButton, GridRowCount } from '../components';
3
- import { GridCellV7 } from '../components/cell/GridCell';
2
+ import { GridSkeletonCell, GridColumnsPanel, GridFilterPanel, GridFooter, GridLoadingOverlay, GridNoRowsOverlay, GridPagination, GridPanel, GridRow, GridColumnHeaderFilterIconButton, GridRowCount, GridColumnsManagement } from '../components';
3
+ import { GridCell } from '../components/cell/GridCell';
4
4
  import { GridColumnHeaders } from '../components/GridColumnHeaders';
5
5
  import { GridColumnMenu } from '../components/menu/columnMenu/GridColumnMenu';
6
+ import { GridDetailPanels } from '../components/GridDetailPanels';
7
+ import { GridPinnedRows } from '../components/GridPinnedRows';
6
8
  import { GridNoResultsOverlay } from '../components/GridNoResultsOverlay';
7
9
  import materialSlots from '../material';
8
10
 
9
11
  // TODO: camelCase these key. It's a private helper now.
10
12
  // Remove then need to call `uncapitalizeObjectKeys`.
11
13
  export const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = _extends({}, materialSlots, {
12
- cell: GridCellV7,
14
+ cell: GridCell,
13
15
  skeletonCell: GridSkeletonCell,
14
16
  columnHeaderFilterIconButton: GridColumnHeaderFilterIconButton,
15
17
  columnMenu: GridColumnMenu,
16
18
  columnHeaders: GridColumnHeaders,
19
+ detailPanels: GridDetailPanels,
17
20
  footer: GridFooter,
18
21
  footerRowCount: GridRowCount,
19
22
  toolbar: null,
23
+ pinnedRows: GridPinnedRows,
20
24
  loadingOverlay: GridLoadingOverlay,
21
25
  noResultsOverlay: GridNoResultsOverlay,
22
26
  noRowsOverlay: GridNoRowsOverlay,
23
27
  pagination: GridPagination,
24
28
  filterPanel: GridFilterPanel,
25
29
  columnsPanel: GridColumnsPanel,
30
+ columnsManagement: GridColumnsManagement,
26
31
  panel: GridPanel,
27
32
  row: GridRow
28
33
  });
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsPanel', 'columnsPanelRow', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumns--left', 'pinnedColumns--right', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withBorderColor', 'cell--withRightBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
5
+ export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--withRenderer', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellContent', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderDropZone', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnGroupHeader', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeader--showColumnBorder', 'columnHeaders', 'columnHeadersInner', 'columnHeadersInner--scrollable', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'pinnedColumnHeaders', 'pinnedColumnHeaders--left', 'pinnedColumnHeaders--right', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -27,12 +27,10 @@ export const GRID_DEFAULT_LOCALE_TEXT = {
27
27
  toolbarExportCSV: 'Download as CSV',
28
28
  toolbarExportPrint: 'Print',
29
29
  toolbarExportExcel: 'Download as Excel',
30
- // Columns panel text
31
- columnsPanelTextFieldLabel: 'Find column',
32
- columnsPanelTextFieldPlaceholder: 'Column title',
33
- columnsPanelDragIconLabel: 'Reorder column',
34
- columnsPanelShowAllButton: 'Show all',
35
- columnsPanelHideAllButton: 'Hide all',
30
+ // Columns management text
31
+ columnsManagementSearchTitle: 'Search',
32
+ columnsManagementNoColumns: 'No columns',
33
+ columnsManagementShowHideAllText: 'Show/Hide All',
36
34
  // Filter panel text
37
35
  filterPanelAddFilter: 'Add filter',
38
36
  filterPanelRemoveAll: 'Remove all',
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Get the theme state
3
+ * @category Core
4
+ */
5
+ export const gridThemeSelector = state => state.theme;
@@ -98,6 +98,9 @@ export function useGridApiInitialization(inputApiRef, props) {
98
98
  subscribeEvent,
99
99
  publishEvent
100
100
  }, 'public');
101
+ if (inputApiRef && !inputApiRef.current?.state) {
102
+ inputApiRef.current = publicApiRef.current;
103
+ }
101
104
  React.useImperativeHandle(inputApiRef, () => publicApiRef.current, [publicApiRef]);
102
105
  React.useEffect(() => {
103
106
  const api = privateApiRef.current;
@@ -1,3 +1,5 @@
1
+ import { useGridRefs } from './useGridRefs';
2
+ import { useGridTheme } from './useGridTheme';
1
3
  import { useGridLoggerFactory } from './useGridLoggerFactory';
2
4
  import { useGridApiInitialization } from './useGridApiInitialization';
3
5
  import { useGridLocaleText } from './useGridLocaleText';
@@ -10,6 +12,8 @@ import { useGridStateInitialization } from './useGridStateInitialization';
10
12
  */
11
13
  export const useGridInitialization = (inputApiRef, props) => {
12
14
  const privateApiRef = useGridApiInitialization(inputApiRef, props);
15
+ useGridRefs(privateApiRef);
16
+ useGridTheme(privateApiRef);
13
17
  useGridLoggerFactory(privateApiRef, props);
14
18
  useGridStateInitialization(privateApiRef, props);
15
19
  useGridPipeProcessing(privateApiRef);
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ export const useGridRefs = apiRef => {
3
+ const rootElementRef = React.useRef(null);
4
+ const mainElementRef = React.useRef(null);
5
+ const virtualScrollerRef = React.useRef(null);
6
+ apiRef.current.register('public', {
7
+ rootElementRef
8
+ });
9
+ apiRef.current.register('private', {
10
+ mainElementRef,
11
+ virtualScrollerRef
12
+ });
13
+ };
@@ -0,0 +1,19 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import { useTheme } from '@mui/material/styles';
4
+ export const useGridTheme = apiRef => {
5
+ const theme = useTheme();
6
+ if (!apiRef.current.state.theme) {
7
+ apiRef.current.state.theme = theme;
8
+ }
9
+ const isFirstEffect = React.useRef(true);
10
+ React.useEffect(() => {
11
+ if (isFirstEffect.current) {
12
+ isFirstEffect.current = false;
13
+ } else {
14
+ apiRef.current.setState(state => _extends({}, state, {
15
+ theme
16
+ }));
17
+ }
18
+ }, [apiRef, theme]);
19
+ };
@@ -41,16 +41,14 @@ const createGroupLookup = columnGroupingModel => {
41
41
  return _extends({}, groupLookup);
42
42
  };
43
43
  export const columnGroupsStateInitializer = (state, props, apiRef) => {
44
- if (!props.experimentalFeatures?.columnGrouping) {
44
+ if (!props.columnGroupingModel) {
45
45
  return state;
46
46
  }
47
47
  const columnFields = gridColumnFieldsSelector(apiRef);
48
48
  const visibleColumnFields = gridVisibleColumnFieldsSelector(apiRef);
49
49
  const groupLookup = createGroupLookup(props.columnGroupingModel ?? []);
50
50
  const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel ?? []);
51
- const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel,
52
- // @ts-expect-error Move this part to `Pro` package
53
- apiRef.current.state.pinnedColumns ?? {});
51
+ const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(columnFields, unwrappedGroupingModel, apiRef.current.state.pinnedColumns ?? {});
54
52
  const maxDepth = visibleColumnFields.length === 0 ? 0 : Math.max(...visibleColumnFields.map(field => unwrappedGroupingModel[field]?.length ?? 0));
55
53
  return _extends({}, state, {
56
54
  columnGrouping: {
@@ -79,16 +77,14 @@ export const useGridColumnGrouping = (apiRef, props) => {
79
77
  return columnGroupLookup;
80
78
  }, [apiRef]);
81
79
  const columnGroupingApi = {
82
- unstable_getColumnGroupPath: getColumnGroupPath,
83
- unstable_getAllGroupDetails: getAllGroupDetails
80
+ getColumnGroupPath,
81
+ getAllGroupDetails
84
82
  };
85
83
  useGridApiMethod(apiRef, columnGroupingApi, 'public');
86
84
  const handleColumnIndexChange = React.useCallback(() => {
87
85
  const unwrappedGroupingModel = unwrapGroupingColumnModel(props.columnGroupingModel ?? []);
88
86
  apiRef.current.setState(state => {
89
87
  const orderedFields = state.columns?.orderedFields ?? [];
90
-
91
- // @ts-expect-error Move this logic to `Pro` package
92
88
  const pinnedColumns = state.pinnedColumns ?? {};
93
89
  const columnGroupsHeaderStructure = getColumnGroupsHeaderStructure(orderedFields, unwrappedGroupingModel, pinnedColumns);
94
90
  return _extends({}, state, {
@@ -99,9 +95,6 @@ export const useGridColumnGrouping = (apiRef, props) => {
99
95
  });
100
96
  }, [apiRef, props.columnGroupingModel]);
101
97
  const updateColumnGroupingState = React.useCallback(columnGroupingModel => {
102
- if (!props.experimentalFeatures?.columnGrouping) {
103
- return;
104
- }
105
98
  // @ts-expect-error Move this logic to `Pro` package
106
99
  const pinnedColumns = apiRef.current.getPinnedColumns?.() ?? {};
107
100
  const columnFields = gridColumnFieldsSelector(apiRef);
@@ -120,7 +113,7 @@ export const useGridColumnGrouping = (apiRef, props) => {
120
113
  }
121
114
  });
122
115
  });
123
- }, [apiRef, props.experimentalFeatures?.columnGrouping]);
116
+ }, [apiRef]);
124
117
  useGridApiEventHandler(apiRef, 'columnIndexChange', handleColumnIndexChange);
125
118
  useGridApiEventHandler(apiRef, 'columnsChange', () => {
126
119
  updateColumnGroupingState(props.columnGroupingModel);
@@ -1,144 +1,70 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import * as ReactDOM from 'react-dom';
4
3
  import { unstable_useForkRef as useForkRef } from '@mui/utils';
5
- import { styled, useTheme } from '@mui/material/styles';
6
- import { defaultMemoize } from 'reselect';
4
+ import { styled } from '@mui/material/styles';
7
5
  import { useGridSelector } from '../../utils';
8
6
  import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';
9
- import { useGridRootProps } from '../../utils/useGridRootProps';
10
7
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
11
8
  import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
12
- import { getFirstColumnIndexToRender, getTotalHeaderHeight } from '../columns/gridColumnsUtils';
13
- import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
14
- import { areRenderContextsEqual, getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
15
- import { gridVirtualizationColumnEnabledSelector } from '../virtualization';
9
+ import { gridDimensionsSelector } from '../dimensions';
10
+ import { gridRenderContextColumnsSelector, gridVirtualizationColumnEnabledSelector } from '../virtualization';
16
11
  import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
12
+ import { GridPinnedColumnPosition, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
13
+ import { GridScrollbarFillerCell as ScrollbarFiller } from '../../../components/GridScrollbarFillerCell';
14
+ import { gridClasses } from '../../../constants/gridClasses';
17
15
  import { jsx as _jsx } from "react/jsx-runtime";
18
- const GridColumnHeaderRow = styled('div', {
16
+ import { jsxs as _jsxs } from "react/jsx-runtime";
17
+ const SpaceFiller = styled('div')({
18
+ /* GridRootStyles conflict */
19
+ '&&': {
20
+ padding: 0,
21
+ width: 'calc(var(--DataGrid-width) - var(--DataGrid-columnsTotalWidth))'
22
+ }
23
+ });
24
+ export const GridColumnHeaderRow = styled('div', {
19
25
  name: 'MuiDataGrid',
20
26
  slot: 'ColumnHeaderRow',
21
27
  overridesResolver: (props, styles) => styles.columnHeaderRow
22
- })(() => ({
23
- display: 'flex'
28
+ })(({
29
+ ownerState: {
30
+ params: {
31
+ position
32
+ } = {},
33
+ leftOverflow = 0
34
+ }
35
+ }) => ({
36
+ display: 'flex',
37
+ height: 'var(--DataGrid-headerHeight)',
38
+ transform: position === undefined ? `translate3d(${leftOverflow !== 0 ? `calc(var(--DataGrid-offsetLeft) - ${leftOverflow}px)` : 'var(--DataGrid-offsetLeft)'}, 0, 0)` : undefined
24
39
  }));
25
- function isUIEvent(event) {
26
- return !!event.target;
27
- }
28
40
  export const useGridColumnHeaders = props => {
29
41
  const {
30
42
  innerRef: innerRefProp,
31
- minColumnIndex = 0,
32
43
  visibleColumns,
33
44
  sortColumnLookup,
34
45
  filterColumnLookup,
35
- columnPositions,
36
46
  columnHeaderTabIndexState,
37
47
  columnGroupHeaderTabIndexState,
38
48
  columnHeaderFocus,
39
49
  columnGroupHeaderFocus,
40
- densityFactor,
41
50
  headerGroupingMaxDepth,
42
51
  columnMenuState,
43
52
  columnVisibility,
44
53
  columnGroupsHeaderStructure,
45
54
  hasOtherElementInTabSequence
46
55
  } = props;
47
- const theme = useTheme();
48
56
  const [dragCol, setDragCol] = React.useState('');
49
57
  const [resizeCol, setResizeCol] = React.useState('');
50
58
  const apiRef = useGridPrivateApiContext();
51
59
  const hasVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);
52
- const rootProps = useGridRootProps();
53
60
  const innerRef = React.useRef(null);
54
61
  const handleInnerRef = useForkRef(innerRefProp, innerRef);
55
- const [renderContext, setRenderContextRaw] = React.useState(null);
56
- const prevRenderContext = React.useRef(renderContext);
57
- const prevScrollLeft = React.useRef(0);
58
- const currentPage = useGridVisibleRows(apiRef, rootProps);
59
- const totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps.columnHeaderHeight);
60
- const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
61
- const setRenderContext = React.useCallback(nextRenderContext => {
62
- if (renderContext && nextRenderContext && areRenderContextsEqual(renderContext, nextRenderContext)) {
63
- return;
64
- }
65
- setRenderContextRaw(nextRenderContext);
66
- }, [renderContext]);
62
+ const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
63
+ const renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);
64
+ const visiblePinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
67
65
  React.useEffect(() => {
68
66
  apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
69
67
  }, [apiRef]);
70
-
71
- // memoize `getFirstColumnIndexToRender`, since it's called on scroll
72
- const getFirstColumnIndexToRenderRef = React.useRef(defaultMemoize(getFirstColumnIndexToRender, {
73
- equalityCheck: (a, b) => ['firstColumnIndex', 'minColumnIndex', 'columnBuffer'].every(key => a[key] === b[key])
74
- }));
75
- const updateInnerPosition = React.useCallback(nextRenderContext => {
76
- const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
77
- firstIndex: nextRenderContext.firstRowIndex,
78
- lastIndex: nextRenderContext.lastRowIndex,
79
- minFirstIndex: 0,
80
- maxLastIndex: currentPage.rows.length,
81
- buffer: rootProps.rowBuffer
82
- });
83
- const firstColumnToRender = getFirstColumnIndexToRenderRef.current({
84
- firstColumnIndex: nextRenderContext.firstColumnIndex,
85
- minColumnIndex,
86
- columnBuffer: rootProps.columnBuffer,
87
- firstRowToRender,
88
- lastRowToRender,
89
- apiRef,
90
- visibleRows: currentPage.rows
91
- });
92
- const direction = theme.direction === 'ltr' ? 1 : -1;
93
- const offset = firstColumnToRender > 0 ? prevScrollLeft.current - direction * columnPositions[firstColumnToRender] : prevScrollLeft.current;
94
- innerRef.current.style.transform = `translate3d(${-offset}px, 0px, 0px)`;
95
- }, [columnPositions, minColumnIndex, rootProps.columnBuffer, apiRef, currentPage.rows, rootProps.rowBuffer, theme.direction]);
96
- React.useLayoutEffect(() => {
97
- if (renderContext) {
98
- updateInnerPosition(renderContext);
99
- }
100
- }, [renderContext, updateInnerPosition]);
101
- const handleScroll = React.useCallback(({
102
- left,
103
- renderContext: nextRenderContext = null
104
- }, event) => {
105
- if (!innerRef.current) {
106
- return;
107
- }
108
-
109
- // Ignore vertical scroll.
110
- // Excepts the first event which sets the previous render context.
111
- if (prevScrollLeft.current === left && prevRenderContext.current?.firstColumnIndex === nextRenderContext?.firstColumnIndex && prevRenderContext.current?.lastColumnIndex === nextRenderContext?.lastColumnIndex) {
112
- return;
113
- }
114
- prevScrollLeft.current = left;
115
-
116
- // We can only update the position when we guarantee that the render context has been
117
- // rendered. This is achieved using ReactDOM.flushSync or when the context doesn't change.
118
- let canUpdateInnerPosition = false;
119
- if (nextRenderContext !== prevRenderContext.current || !prevRenderContext.current) {
120
- // ReactDOM.flushSync cannot be called on `scroll` events fired inside effects
121
- if (isUIEvent(event)) {
122
- // To prevent flickering, the inner position can only be updated after the new context has
123
- // been rendered. ReactDOM.flushSync ensures that the state changes will happen before
124
- // updating the position.
125
- ReactDOM.flushSync(() => {
126
- setRenderContext(nextRenderContext);
127
- });
128
- canUpdateInnerPosition = true;
129
- } else {
130
- setRenderContext(nextRenderContext);
131
- }
132
- prevRenderContext.current = nextRenderContext;
133
- } else {
134
- canUpdateInnerPosition = true;
135
- }
136
-
137
- // Pass directly the render context to avoid waiting for the next render
138
- if (nextRenderContext && canUpdateInnerPosition) {
139
- updateInnerPosition(nextRenderContext);
140
- }
141
- }, [updateInnerPosition, setRenderContext]);
142
68
  const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);
143
69
  const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
144
70
  const handleColumnReorderStart = React.useCallback(params => setDragCol(params.field), []);
@@ -147,53 +73,41 @@ export const useGridColumnHeaders = props => {
147
73
  useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);
148
74
  useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
149
75
  useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
150
- useGridApiEventHandler(apiRef, 'scrollPositionChange', handleScroll);
151
76
 
152
77
  // Helper for computation common between getColumnHeaders and getColumnGroupHeaders
153
78
  const getColumnsToRender = params => {
154
79
  const {
155
- renderContext: nextRenderContext = renderContext,
156
- minFirstColumn = minColumnIndex,
80
+ renderContext: currentContext = renderContext,
81
+ // TODO: `minFirstColumn` is not used anymore, could be refactored out.
157
82
  maxLastColumn = visibleColumns.length
158
83
  } = params || {};
159
- if (!nextRenderContext) {
160
- return null;
161
- }
162
- const [firstRowToRender, lastRowToRender] = getRenderableIndexes({
163
- firstIndex: nextRenderContext.firstRowIndex,
164
- lastIndex: nextRenderContext.lastRowIndex,
165
- minFirstIndex: 0,
166
- maxLastIndex: currentPage.rows.length,
167
- buffer: rootProps.rowBuffer
168
- });
169
- const firstColumnToRender = !hasVirtualization ? 0 : getFirstColumnIndexToRenderRef.current({
170
- firstColumnIndex: nextRenderContext.firstColumnIndex,
171
- minColumnIndex: minFirstColumn,
172
- columnBuffer: rootProps.columnBuffer,
173
- apiRef,
174
- firstRowToRender,
175
- lastRowToRender,
176
- visibleRows: currentPage.rows
177
- });
178
- const lastColumnToRender = !hasVirtualization ? maxLastColumn : Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
84
+ const firstColumnToRender = !hasVirtualization ? 0 : currentContext.firstColumnIndex;
85
+ const lastColumnToRender = !hasVirtualization ? maxLastColumn : currentContext.lastColumnIndex;
179
86
  const renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
180
87
  return {
181
88
  renderedColumns,
182
89
  firstColumnToRender,
183
- lastColumnToRender,
184
- minFirstColumn,
185
- maxLastColumn
90
+ lastColumnToRender
186
91
  };
187
92
  };
93
+ const getFiller = (params, borderTop = false) => {
94
+ const isPinnedRight = params?.position === GridPinnedColumnPosition.RIGHT;
95
+ const hasScrollbarFiller = visiblePinnedColumns.right.length > 0 && isPinnedRight || visiblePinnedColumns.right.length === 0 && params?.position === undefined;
96
+ return /*#__PURE__*/_jsxs(React.Fragment, {
97
+ children: [params?.position === undefined && /*#__PURE__*/_jsx(SpaceFiller, {
98
+ className: gridClasses.columnHeader
99
+ }), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {
100
+ header: true,
101
+ borderTop: borderTop,
102
+ pinnedRight: isPinnedRight
103
+ })]
104
+ });
105
+ };
188
106
  const getColumnHeaders = (params, other = {}) => {
189
- const columnsToRender = getColumnsToRender(params);
190
- if (columnsToRender == null) {
191
- return null;
192
- }
193
107
  const {
194
108
  renderedColumns,
195
109
  firstColumnToRender
196
- } = columnsToRender;
110
+ } = getColumnsToRender(params);
197
111
  const columns = [];
198
112
  for (let i = 0; i < renderedColumns.length; i += 1) {
199
113
  const colDef = renderedColumns[i];
@@ -205,7 +119,7 @@ export const useGridColumnHeaders = props => {
205
119
  columns.push( /*#__PURE__*/_jsx(GridColumnHeaderItem, _extends({}, sortColumnLookup[colDef.field], {
206
120
  columnMenuOpen: open,
207
121
  filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,
208
- headerHeight: headerHeight,
122
+ headerHeight: dimensions.headerHeight,
209
123
  isDragging: colDef.field === dragCol,
210
124
  colDef: colDef,
211
125
  colIndex: columnIndex,
@@ -214,11 +128,13 @@ export const useGridColumnHeaders = props => {
214
128
  tabIndex: tabIndex
215
129
  }, other), colDef.field));
216
130
  }
217
- return /*#__PURE__*/_jsx(GridColumnHeaderRow, {
131
+ return /*#__PURE__*/_jsxs(GridColumnHeaderRow, {
218
132
  role: "row",
219
133
  "aria-rowindex": headerGroupingMaxDepth + 1,
220
- ownerState: rootProps,
221
- children: columns
134
+ ownerState: {
135
+ params
136
+ },
137
+ children: [columns, getFiller(params)]
222
138
  });
223
139
  };
224
140
  const getColumnGroupHeaders = params => {
@@ -226,7 +142,7 @@ export const useGridColumnHeaders = props => {
226
142
  return null;
227
143
  }
228
144
  const columnsToRender = getColumnsToRender(params);
229
- if (columnsToRender == null || columnsToRender.renderedColumns.length === 0) {
145
+ if (columnsToRender.renderedColumns.length === 0) {
230
146
  return null;
231
147
  }
232
148
  const {
@@ -238,13 +154,13 @@ export const useGridColumnHeaders = props => {
238
154
  for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
239
155
  const rowStructure = columnGroupsHeaderStructure[depth];
240
156
  const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
241
- const firstGroupToRender = apiRef.current.unstable_getColumnGroupPath(firstColumnFieldToRender)[depth] ?? null;
157
+ const firstGroupToRender = apiRef.current.getColumnGroupPath(firstColumnFieldToRender)[depth] ?? null;
242
158
  const firstGroupIndex = rowStructure.findIndex(({
243
159
  groupId,
244
160
  columnFields
245
161
  }) => groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender));
246
162
  const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
247
- const lastGroupToRender = apiRef.current.unstable_getColumnGroupPath(lastColumnFieldToRender)[depth] ?? null;
163
+ const lastGroupToRender = apiRef.current.getColumnGroupPath(lastColumnFieldToRender)[depth] ?? null;
248
164
  const lastGroupIndex = rowStructure.findIndex(({
249
165
  groupId,
250
166
  columnFields
@@ -284,15 +200,14 @@ export const useGridColumnHeaders = props => {
284
200
  });
285
201
  }
286
202
  headerToRender.forEach((depthInfo, depthIndex) => {
287
- columns.push( /*#__PURE__*/_jsx(GridColumnHeaderRow, {
288
- style: {
289
- height: `${headerHeight}px`,
290
- transform: `translateX(-${depthInfo.leftOverflow}px)`
291
- },
203
+ columns.push( /*#__PURE__*/_jsxs(GridColumnHeaderRow, {
292
204
  role: "row",
293
205
  "aria-rowindex": depthIndex + 1,
294
- ownerState: rootProps,
295
- children: depthInfo.elements.map(({
206
+ ownerState: {
207
+ params,
208
+ leftOverflow: depthInfo.leftOverflow
209
+ },
210
+ children: [depthInfo.elements.map(({
296
211
  groupId,
297
212
  width,
298
213
  fields,
@@ -308,33 +223,25 @@ export const useGridColumnHeaders = props => {
308
223
  depth: depthIndex,
309
224
  isLastColumn: colIndex === visibleColumns.length - fields.length,
310
225
  maxDepth: headerToRender.length,
311
- height: headerHeight,
226
+ height: dimensions.headerHeight,
312
227
  hasFocus: hasFocus,
313
228
  tabIndex: tabIndex
314
229
  }, groupIndex);
315
- })
230
+ }), getFiller(params)]
316
231
  }, depthIndex));
317
232
  });
318
233
  return columns;
319
234
  };
320
- const rootStyle = {
321
- minHeight: totalHeaderHeight,
322
- maxHeight: totalHeaderHeight,
323
- lineHeight: `${headerHeight}px`
324
- };
325
235
  return {
326
236
  renderContext,
237
+ getFiller,
327
238
  getColumnHeaders,
328
239
  getColumnsToRender,
329
240
  getColumnGroupHeaders,
330
241
  isDragging: !!dragCol,
331
- getRootProps: (other = {}) => _extends({
332
- style: rootStyle
333
- }, other),
334
242
  getInnerProps: () => ({
335
243
  ref: handleInnerRef,
336
244
  role: 'rowgroup'
337
- }),
338
- headerHeight
245
+ })
339
246
  };
340
247
  };
@@ -20,19 +20,25 @@ export const useGridColumnMenu = apiRef => {
20
20
  * API METHODS
21
21
  */
22
22
  const showColumnMenu = React.useCallback(field => {
23
- const shouldUpdate = apiRef.current.setState(state => {
24
- if (state.columnMenu.open && state.columnMenu.field === field) {
25
- return state;
26
- }
27
- logger.debug('Opening Column Menu');
28
- return _extends({}, state, {
29
- columnMenu: {
30
- open: true,
31
- field
23
+ const columnMenuState = gridColumnMenuSelector(apiRef.current.state);
24
+ const newState = {
25
+ open: true,
26
+ field
27
+ };
28
+ const shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;
29
+ if (shouldUpdate) {
30
+ apiRef.current.setState(state => {
31
+ if (state.columnMenu.open && state.columnMenu.field === field) {
32
+ return state;
32
33
  }
34
+ logger.debug('Opening Column Menu');
35
+ return _extends({}, state, {
36
+ columnMenu: {
37
+ open: true,
38
+ field
39
+ }
40
+ });
33
41
  });
34
- });
35
- if (shouldUpdate) {
36
42
  apiRef.current.hidePreferences();
37
43
  apiRef.current.forceUpdate();
38
44
  }
@@ -64,19 +70,18 @@ export const useGridColumnMenu = apiRef => {
64
70
  }
65
71
  apiRef.current.setColumnHeaderFocus(fieldToFocus);
66
72
  }
67
- const shouldUpdate = apiRef.current.setState(state => {
68
- if (!state.columnMenu.open && state.columnMenu.field === undefined) {
69
- return state;
70
- }
71
- logger.debug('Hiding Column Menu');
72
- return _extends({}, state, {
73
- columnMenu: _extends({}, state.columnMenu, {
74
- open: false,
75
- field: undefined
76
- })
77
- });
78
- });
73
+ const newState = {
74
+ open: false,
75
+ field: undefined
76
+ };
77
+ const shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;
79
78
  if (shouldUpdate) {
79
+ apiRef.current.setState(state => {
80
+ logger.debug('Hiding Column Menu');
81
+ return _extends({}, state, {
82
+ columnMenu: newState
83
+ });
84
+ });
80
85
  apiRef.current.forceUpdate();
81
86
  }
82
87
  }, [apiRef, logger]);
@@ -1 +1,9 @@
1
- export {};
1
+ export let GridPinnedColumnPosition = /*#__PURE__*/function (GridPinnedColumnPosition) {
2
+ GridPinnedColumnPosition["LEFT"] = "left";
3
+ GridPinnedColumnPosition["RIGHT"] = "right";
4
+ return GridPinnedColumnPosition;
5
+ }({});
6
+ export const EMPTY_PINNED_COLUMN_FIELDS = {
7
+ left: [],
8
+ right: []
9
+ };