@mui/x-data-grid 7.0.0-alpha.7 → 7.0.0-alpha.9

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 (501) hide show
  1. package/CHANGELOG.md +554 -51
  2. package/DataGrid/DataGrid.js +15 -27
  3. package/DataGrid/useDataGridComponent.js +2 -1
  4. package/DataGrid/useDataGridProps.js +1 -0
  5. package/README.md +1 -1
  6. package/colDef/gridDateColDef.js +1 -1
  7. package/components/GridColumnHeaders.d.ts +3 -2
  8. package/components/GridColumnHeaders.js +3 -11
  9. package/components/GridDetailPanels.d.ts +5 -0
  10. package/components/GridDetailPanels.js +4 -0
  11. package/components/GridHeaders.d.ts +4 -0
  12. package/components/GridHeaders.js +53 -0
  13. package/components/GridPagination.d.ts +4 -4
  14. package/components/GridPagination.js +1 -1
  15. package/components/GridPinnedRows.d.ts +7 -0
  16. package/components/GridPinnedRows.js +4 -0
  17. package/components/GridRow.d.ts +7 -4
  18. package/components/GridRow.js +260 -97
  19. package/components/GridScrollbarFillerCell.d.ts +7 -0
  20. package/components/GridScrollbarFillerCell.js +39 -0
  21. package/components/base/GridBody.d.ts +2 -13
  22. package/components/base/GridBody.js +2 -116
  23. package/components/base/GridOverlays.js +10 -21
  24. package/components/cell/GridActionsCell.js +1 -1
  25. package/components/cell/GridActionsCellItem.d.ts +6 -6
  26. package/components/cell/GridCell.d.ts +15 -21
  27. package/components/cell/GridCell.js +68 -373
  28. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  29. package/components/columnHeaders/GridColumnHeaderItem.d.ts +2 -1
  30. package/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  31. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  32. package/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  33. package/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  34. package/components/containers/GridRoot.js +18 -15
  35. package/components/containers/GridRootStyles.js +307 -204
  36. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  37. package/components/panel/GridPanel.d.ts +3 -3
  38. package/components/panel/GridPanel.js +3 -4
  39. package/components/panel/filterPanel/GridFilterForm.d.ts +6 -4
  40. package/components/panel/filterPanel/GridFilterForm.js +32 -15
  41. package/components/panel/filterPanel/GridFilterPanel.js +46 -20
  42. package/components/toolbar/GridToolbarColumnsButton.d.ts +13 -1
  43. package/components/toolbar/GridToolbarColumnsButton.js +40 -22
  44. package/components/toolbar/GridToolbarDensitySelector.d.ts +13 -1
  45. package/components/toolbar/GridToolbarDensitySelector.js +40 -22
  46. package/components/toolbar/GridToolbarExport.d.ts +10 -1
  47. package/components/toolbar/GridToolbarExport.js +6 -1
  48. package/components/toolbar/GridToolbarExportContainer.d.ts +15 -1
  49. package/components/toolbar/GridToolbarExportContainer.js +41 -23
  50. package/components/toolbar/GridToolbarFilterButton.d.ts +5 -4
  51. package/components/toolbar/GridToolbarFilterButton.js +6 -10
  52. package/components/toolbar/GridToolbarQuickFilter.d.ts +4 -0
  53. package/components/toolbar/GridToolbarQuickFilter.js +4 -0
  54. package/components/virtualization/GridBottomContainer.d.ts +2 -0
  55. package/components/virtualization/GridBottomContainer.js +25 -0
  56. package/components/{containers → virtualization}/GridMainContainer.d.ts +2 -0
  57. package/components/virtualization/GridMainContainer.js +20 -0
  58. package/components/virtualization/GridTopContainer.d.ts +2 -0
  59. package/components/virtualization/GridTopContainer.js +35 -0
  60. package/components/virtualization/GridVirtualScrollbar.d.ts +7 -0
  61. package/components/virtualization/GridVirtualScrollbar.js +131 -0
  62. package/components/virtualization/GridVirtualScroller.d.ts +4 -4
  63. package/components/virtualization/GridVirtualScroller.js +69 -16
  64. package/components/virtualization/GridVirtualScrollerFiller.d.ts +4 -0
  65. package/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  66. package/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  67. package/constants/defaultGridSlotsComponents.js +6 -2
  68. package/constants/gridClasses.d.ts +60 -8
  69. package/constants/gridClasses.js +1 -1
  70. package/hooks/core/gridCoreSelector.d.ts +6 -0
  71. package/hooks/core/gridCoreSelector.js +5 -0
  72. package/hooks/core/useGridInitialization.js +4 -0
  73. package/hooks/core/useGridLoggerFactory.js +2 -2
  74. package/hooks/core/useGridRefs.d.ts +3 -0
  75. package/hooks/core/useGridRefs.js +13 -0
  76. package/hooks/core/useGridTheme.d.ts +3 -0
  77. package/hooks/core/useGridTheme.js +19 -0
  78. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  79. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  80. package/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
  81. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +13 -18
  82. package/hooks/features/columnHeaders/useGridColumnHeaders.js +68 -162
  83. package/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  84. package/hooks/features/columns/gridColumnsInterfaces.d.ts +17 -0
  85. package/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  86. package/hooks/features/columns/gridColumnsSelector.d.ts +14 -1
  87. package/hooks/features/columns/gridColumnsSelector.js +52 -0
  88. package/hooks/features/columns/gridColumnsUtils.d.ts +1 -5
  89. package/hooks/features/columns/gridColumnsUtils.js +10 -12
  90. package/hooks/features/columns/index.d.ts +2 -2
  91. package/hooks/features/columns/index.js +2 -1
  92. package/hooks/features/columns/useGridColumnSpanning.js +62 -61
  93. package/hooks/features/columns/useGridColumns.js +20 -23
  94. package/hooks/features/dimensions/gridDimensionsApi.d.ts +60 -11
  95. package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +2 -0
  96. package/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  97. package/hooks/features/dimensions/index.d.ts +2 -0
  98. package/hooks/features/dimensions/index.js +1 -0
  99. package/hooks/features/dimensions/useGridDimensions.d.ts +7 -1
  100. package/hooks/features/dimensions/useGridDimensions.js +216 -148
  101. package/hooks/features/editing/useGridCellEditing.js +4 -4
  102. package/hooks/features/editing/useGridRowEditing.js +4 -4
  103. package/hooks/features/export/serializers/csvSerializer.js +3 -3
  104. package/hooks/features/export/useGridPrintExport.js +1 -1
  105. package/hooks/features/filter/gridFilterUtils.js +5 -5
  106. package/hooks/features/filter/useGridFilter.js +3 -3
  107. package/hooks/features/focus/gridFocusStateSelector.d.ts +2 -2
  108. package/hooks/features/focus/gridFocusStateSelector.js +2 -6
  109. package/hooks/features/focus/useGridFocus.js +3 -3
  110. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  111. package/hooks/features/pagination/gridPaginationUtils.js +2 -2
  112. package/hooks/features/pagination/useGridPagination.js +3 -5
  113. package/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  114. package/hooks/features/rows/gridRowsInterfaces.d.ts +1 -0
  115. package/hooks/features/rows/gridRowsSelector.d.ts +2 -2
  116. package/hooks/features/rows/gridRowsSelector.js +5 -5
  117. package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
  118. package/hooks/features/rows/gridRowsUtils.js +6 -6
  119. package/hooks/features/rows/useGridRows.js +7 -7
  120. package/hooks/features/rows/useGridRowsMeta.js +9 -6
  121. package/hooks/features/scroll/useGridScroll.js +8 -10
  122. package/hooks/features/sorting/gridSortingUtils.js +5 -3
  123. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  124. package/hooks/features/sorting/useGridSorting.js +15 -10
  125. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +14 -0
  126. package/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  127. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +27 -42
  128. package/hooks/features/virtualization/useGridVirtualScroller.js +441 -438
  129. package/hooks/features/virtualization/useGridVirtualization.d.ts +8 -0
  130. package/hooks/features/virtualization/useGridVirtualization.js +8 -1
  131. package/hooks/utils/index.d.ts +3 -0
  132. package/hooks/utils/index.js +4 -1
  133. package/hooks/utils/useGridApiContext.js +1 -1
  134. package/hooks/utils/useGridAriaAttributes.js +1 -2
  135. package/hooks/utils/useGridNativeEventListener.js +4 -9
  136. package/hooks/utils/useGridPrivateApiContext.js +1 -1
  137. package/hooks/utils/useGridRootProps.js +1 -1
  138. package/hooks/utils/useGridSelector.js +1 -1
  139. package/hooks/utils/useResizeObserver.d.ts +2 -0
  140. package/hooks/utils/useResizeObserver.js +36 -0
  141. package/hooks/utils/useRunOnce.d.ts +5 -0
  142. package/hooks/utils/useRunOnce.js +18 -0
  143. package/index.d.ts +0 -1
  144. package/index.js +1 -2
  145. package/internals/index.d.ts +13 -9
  146. package/internals/index.js +9 -7
  147. package/internals/utils/index.d.ts +1 -0
  148. package/internals/utils/index.js +2 -1
  149. package/internals/utils/propValidation.d.ts +4 -0
  150. package/internals/utils/propValidation.js +19 -0
  151. package/legacy/DataGrid/DataGrid.js +20 -29
  152. package/legacy/DataGrid/useDataGridComponent.js +2 -1
  153. package/legacy/DataGrid/useDataGridProps.js +1 -0
  154. package/legacy/colDef/gridDateColDef.js +1 -1
  155. package/legacy/components/GridColumnHeaders.js +3 -11
  156. package/legacy/components/GridDetailPanels.js +4 -0
  157. package/legacy/components/GridHeaders.js +53 -0
  158. package/legacy/components/GridPagination.js +1 -1
  159. package/legacy/components/GridPinnedRows.js +4 -0
  160. package/legacy/components/GridRow.js +258 -98
  161. package/legacy/components/GridScrollbarFillerCell.js +36 -0
  162. package/legacy/components/base/GridBody.js +2 -114
  163. package/legacy/components/base/GridOverlays.js +10 -25
  164. package/legacy/components/cell/GridActionsCell.js +1 -1
  165. package/legacy/components/cell/GridCell.js +70 -378
  166. package/legacy/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  167. package/legacy/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  168. package/legacy/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  169. package/legacy/components/columnHeaders/GridColumnHeadersInner.js +1 -2
  170. package/legacy/components/containers/GridRoot.js +18 -15
  171. package/legacy/components/containers/GridRootStyles.js +215 -137
  172. package/legacy/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  173. package/legacy/components/panel/GridPanel.js +3 -4
  174. package/legacy/components/panel/filterPanel/GridFilterForm.js +31 -14
  175. package/legacy/components/panel/filterPanel/GridFilterPanel.js +49 -20
  176. package/legacy/components/toolbar/GridToolbarColumnsButton.js +40 -21
  177. package/legacy/components/toolbar/GridToolbarDensitySelector.js +40 -21
  178. package/legacy/components/toolbar/GridToolbarExport.js +6 -1
  179. package/legacy/components/toolbar/GridToolbarExportContainer.js +40 -21
  180. package/legacy/components/toolbar/GridToolbarFilterButton.js +6 -10
  181. package/legacy/components/toolbar/GridToolbarQuickFilter.js +4 -0
  182. package/legacy/components/virtualization/GridBottomContainer.js +25 -0
  183. package/legacy/components/virtualization/GridMainContainer.js +20 -0
  184. package/legacy/components/virtualization/GridTopContainer.js +35 -0
  185. package/legacy/components/virtualization/GridVirtualScrollbar.js +129 -0
  186. package/legacy/components/virtualization/GridVirtualScroller.js +67 -16
  187. package/legacy/components/virtualization/GridVirtualScrollerFiller.js +70 -0
  188. package/legacy/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  189. package/legacy/constants/defaultGridSlotsComponents.js +6 -2
  190. package/legacy/constants/gridClasses.js +1 -1
  191. package/legacy/hooks/core/gridCoreSelector.js +7 -0
  192. package/legacy/hooks/core/useGridInitialization.js +4 -0
  193. package/legacy/hooks/core/useGridLoggerFactory.js +2 -2
  194. package/legacy/hooks/core/useGridRefs.js +13 -0
  195. package/legacy/hooks/core/useGridTheme.js +21 -0
  196. package/legacy/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  197. package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +13 -18
  198. package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +69 -181
  199. package/legacy/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  200. package/legacy/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  201. package/legacy/hooks/features/columns/gridColumnsSelector.js +62 -0
  202. package/legacy/hooks/features/columns/gridColumnsUtils.js +10 -16
  203. package/legacy/hooks/features/columns/index.js +2 -1
  204. package/legacy/hooks/features/columns/useGridColumnSpanning.js +60 -59
  205. package/legacy/hooks/features/columns/useGridColumns.js +22 -23
  206. package/legacy/hooks/features/dimensions/gridDimensionsSelectors.js +3 -0
  207. package/legacy/hooks/features/dimensions/index.js +1 -0
  208. package/legacy/hooks/features/dimensions/useGridDimensions.js +226 -151
  209. package/legacy/hooks/features/editing/useGridCellEditing.js +4 -4
  210. package/legacy/hooks/features/editing/useGridRowEditing.js +4 -4
  211. package/legacy/hooks/features/export/serializers/csvSerializer.js +3 -3
  212. package/legacy/hooks/features/export/useGridPrintExport.js +1 -1
  213. package/legacy/hooks/features/filter/gridFilterUtils.js +5 -5
  214. package/legacy/hooks/features/filter/useGridFilter.js +3 -3
  215. package/legacy/hooks/features/focus/gridFocusStateSelector.js +2 -6
  216. package/legacy/hooks/features/focus/useGridFocus.js +3 -3
  217. package/legacy/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  218. package/legacy/hooks/features/pagination/gridPaginationUtils.js +2 -2
  219. package/legacy/hooks/features/pagination/useGridPagination.js +3 -5
  220. package/legacy/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  221. package/legacy/hooks/features/rows/gridRowsSelector.js +5 -5
  222. package/legacy/hooks/features/rows/gridRowsUtils.js +6 -6
  223. package/legacy/hooks/features/rows/useGridParamsApi.js +4 -5
  224. package/legacy/hooks/features/rows/useGridRows.js +7 -7
  225. package/legacy/hooks/features/rows/useGridRowsMeta.js +9 -6
  226. package/legacy/hooks/features/scroll/useGridScroll.js +8 -10
  227. package/legacy/hooks/features/sorting/gridSortingUtils.js +5 -3
  228. package/legacy/hooks/features/sorting/useGridSorting.js +15 -10
  229. package/legacy/hooks/features/virtualization/gridVirtualizationSelectors.js +29 -1
  230. package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +490 -483
  231. package/legacy/hooks/features/virtualization/useGridVirtualization.js +8 -1
  232. package/legacy/hooks/utils/index.js +4 -1
  233. package/legacy/hooks/utils/useGridApiContext.js +1 -1
  234. package/legacy/hooks/utils/useGridAriaAttributes.js +1 -2
  235. package/legacy/hooks/utils/useGridNativeEventListener.js +4 -9
  236. package/legacy/hooks/utils/useGridPrivateApiContext.js +1 -1
  237. package/legacy/hooks/utils/useGridRootProps.js +1 -1
  238. package/legacy/hooks/utils/useGridSelector.js +1 -1
  239. package/legacy/hooks/utils/useResizeObserver.js +36 -0
  240. package/legacy/hooks/utils/useRunOnce.js +18 -0
  241. package/legacy/index.js +1 -2
  242. package/legacy/internals/index.js +9 -7
  243. package/legacy/internals/utils/index.js +2 -1
  244. package/legacy/internals/utils/propValidation.js +21 -0
  245. package/legacy/locales/hrHR.js +161 -0
  246. package/legacy/locales/index.js +4 -1
  247. package/legacy/locales/ptPT.js +161 -0
  248. package/legacy/locales/zhHK.js +161 -0
  249. package/legacy/models/index.js +0 -1
  250. package/legacy/models/params/index.js +1 -2
  251. package/legacy/utils/createSelector.js +1 -1
  252. package/legacy/utils/exportAs.js +1 -1
  253. package/legacy/utils/utils.js +10 -1
  254. package/locales/hrHR.d.ts +1 -0
  255. package/locales/hrHR.js +149 -0
  256. package/locales/index.d.ts +3 -0
  257. package/locales/index.js +4 -1
  258. package/locales/ptPT.d.ts +1 -0
  259. package/locales/ptPT.js +149 -0
  260. package/locales/zhHK.d.ts +1 -0
  261. package/locales/zhHK.js +149 -0
  262. package/models/api/gridColumnGroupingApi.d.ts +2 -2
  263. package/models/api/gridCoreApi.d.ts +16 -16
  264. package/models/api/gridRowsMetaApi.d.ts +1 -1
  265. package/models/api/gridVirtualizationApi.d.ts +2 -3
  266. package/models/events/gridEventLookup.d.ts +3 -3
  267. package/models/gridFilterModel.d.ts +1 -1
  268. package/models/gridSlotsComponent.d.ts +16 -2
  269. package/models/gridStateCommunity.d.ts +5 -1
  270. package/models/index.d.ts +0 -1
  271. package/models/index.js +0 -1
  272. package/models/params/index.d.ts +0 -1
  273. package/models/params/index.js +1 -2
  274. package/models/props/DataGridProps.d.ts +7 -12
  275. package/modern/DataGrid/DataGrid.js +15 -27
  276. package/modern/DataGrid/useDataGridComponent.js +2 -1
  277. package/modern/DataGrid/useDataGridProps.js +1 -0
  278. package/modern/colDef/gridDateColDef.js +1 -1
  279. package/modern/components/GridColumnHeaders.js +3 -11
  280. package/modern/components/GridDetailPanels.js +4 -0
  281. package/modern/components/GridHeaders.js +53 -0
  282. package/modern/components/GridPagination.js +1 -1
  283. package/modern/components/GridPinnedRows.js +4 -0
  284. package/modern/components/GridRow.js +258 -96
  285. package/modern/components/GridScrollbarFillerCell.js +39 -0
  286. package/modern/components/base/GridBody.js +2 -116
  287. package/modern/components/base/GridOverlays.js +10 -16
  288. package/modern/components/cell/GridActionsCell.js +1 -1
  289. package/modern/components/cell/GridCell.js +66 -370
  290. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  291. package/modern/components/columnHeaders/GridColumnHeaderItem.js +7 -3
  292. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  293. package/modern/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  294. package/modern/components/containers/GridRoot.js +18 -14
  295. package/modern/components/containers/GridRootStyles.js +307 -204
  296. package/modern/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  297. package/modern/components/panel/GridPanel.js +3 -4
  298. package/modern/components/panel/filterPanel/GridFilterForm.js +31 -14
  299. package/modern/components/panel/filterPanel/GridFilterPanel.js +46 -20
  300. package/modern/components/toolbar/GridToolbarColumnsButton.js +38 -21
  301. package/modern/components/toolbar/GridToolbarDensitySelector.js +38 -21
  302. package/modern/components/toolbar/GridToolbarExport.js +6 -1
  303. package/modern/components/toolbar/GridToolbarExportContainer.js +39 -22
  304. package/modern/components/toolbar/GridToolbarFilterButton.js +6 -10
  305. package/modern/components/toolbar/GridToolbarQuickFilter.js +4 -0
  306. package/modern/components/virtualization/GridBottomContainer.js +25 -0
  307. package/modern/components/virtualization/GridMainContainer.js +20 -0
  308. package/modern/components/virtualization/GridTopContainer.js +35 -0
  309. package/modern/components/virtualization/GridVirtualScrollbar.js +131 -0
  310. package/modern/components/virtualization/GridVirtualScroller.js +69 -16
  311. package/modern/components/virtualization/GridVirtualScrollerFiller.js +71 -0
  312. package/modern/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  313. package/modern/constants/defaultGridSlotsComponents.js +6 -2
  314. package/modern/constants/gridClasses.js +1 -1
  315. package/modern/hooks/core/gridCoreSelector.js +5 -0
  316. package/modern/hooks/core/useGridInitialization.js +4 -0
  317. package/modern/hooks/core/useGridLoggerFactory.js +2 -2
  318. package/modern/hooks/core/useGridRefs.js +13 -0
  319. package/modern/hooks/core/useGridTheme.js +19 -0
  320. package/modern/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  321. package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
  322. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +67 -160
  323. package/modern/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  324. package/modern/hooks/features/columns/gridColumnsInterfaces.js +9 -1
  325. package/modern/hooks/features/columns/gridColumnsSelector.js +51 -0
  326. package/modern/hooks/features/columns/gridColumnsUtils.js +10 -12
  327. package/modern/hooks/features/columns/index.js +2 -1
  328. package/modern/hooks/features/columns/useGridColumnSpanning.js +62 -61
  329. package/modern/hooks/features/columns/useGridColumns.js +19 -21
  330. package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +1 -0
  331. package/modern/hooks/features/dimensions/index.js +1 -0
  332. package/modern/hooks/features/dimensions/useGridDimensions.js +214 -146
  333. package/modern/hooks/features/editing/useGridCellEditing.js +4 -4
  334. package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
  335. package/modern/hooks/features/export/serializers/csvSerializer.js +3 -3
  336. package/modern/hooks/features/export/useGridPrintExport.js +1 -1
  337. package/modern/hooks/features/filter/gridFilterUtils.js +5 -5
  338. package/modern/hooks/features/filter/useGridFilter.js +3 -3
  339. package/modern/hooks/features/focus/gridFocusStateSelector.js +2 -6
  340. package/modern/hooks/features/focus/useGridFocus.js +3 -3
  341. package/modern/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +3 -16
  342. package/modern/hooks/features/pagination/gridPaginationUtils.js +2 -2
  343. package/modern/hooks/features/pagination/useGridPagination.js +3 -5
  344. package/modern/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  345. package/modern/hooks/features/rows/gridRowsSelector.js +2 -2
  346. package/modern/hooks/features/rows/gridRowsUtils.js +6 -6
  347. package/modern/hooks/features/rows/useGridRows.js +7 -7
  348. package/modern/hooks/features/rows/useGridRowsMeta.js +9 -6
  349. package/modern/hooks/features/scroll/useGridScroll.js +8 -9
  350. package/modern/hooks/features/sorting/gridSortingUtils.js +5 -3
  351. package/modern/hooks/features/sorting/useGridSorting.js +15 -10
  352. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  353. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +435 -432
  354. package/modern/hooks/features/virtualization/useGridVirtualization.js +8 -1
  355. package/modern/hooks/utils/index.js +4 -1
  356. package/modern/hooks/utils/useGridApiContext.js +1 -1
  357. package/modern/hooks/utils/useGridAriaAttributes.js +1 -1
  358. package/modern/hooks/utils/useGridNativeEventListener.js +3 -9
  359. package/modern/hooks/utils/useGridPrivateApiContext.js +1 -1
  360. package/modern/hooks/utils/useGridRootProps.js +1 -1
  361. package/modern/hooks/utils/useGridSelector.js +1 -1
  362. package/modern/hooks/utils/useResizeObserver.js +36 -0
  363. package/modern/hooks/utils/useRunOnce.js +18 -0
  364. package/modern/index.js +1 -2
  365. package/modern/internals/index.js +9 -7
  366. package/modern/internals/utils/index.js +2 -1
  367. package/modern/internals/utils/propValidation.js +19 -0
  368. package/modern/locales/hrHR.js +149 -0
  369. package/modern/locales/index.js +4 -1
  370. package/modern/locales/ptPT.js +149 -0
  371. package/modern/locales/zhHK.js +149 -0
  372. package/modern/models/index.js +0 -1
  373. package/modern/models/params/index.js +1 -2
  374. package/modern/utils/createSelector.js +1 -1
  375. package/modern/utils/exportAs.js +1 -1
  376. package/modern/utils/utils.js +10 -1
  377. package/node/DataGrid/DataGrid.js +15 -27
  378. package/node/DataGrid/useDataGridComponent.js +1 -0
  379. package/node/DataGrid/useDataGridProps.js +1 -0
  380. package/node/colDef/gridDateColDef.js +1 -1
  381. package/node/components/GridColumnHeaders.js +3 -11
  382. package/node/components/GridDetailPanels.js +10 -0
  383. package/node/components/GridHeaders.js +60 -0
  384. package/node/components/GridPagination.js +1 -1
  385. package/node/components/GridPinnedRows.js +10 -0
  386. package/node/components/GridRow.js +256 -94
  387. package/node/components/GridScrollbarFillerCell.js +47 -0
  388. package/node/components/base/GridBody.js +7 -118
  389. package/node/components/base/GridOverlays.js +9 -15
  390. package/node/components/cell/GridActionsCell.js +1 -1
  391. package/node/components/cell/GridCell.js +67 -370
  392. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -6
  393. package/node/components/columnHeaders/GridColumnHeaderItem.js +8 -4
  394. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +5 -2
  395. package/node/components/columnHeaders/GridColumnHeadersInner.js +1 -1
  396. package/node/components/containers/GridRoot.js +17 -14
  397. package/node/components/containers/GridRootStyles.js +175 -72
  398. package/node/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +1 -1
  399. package/node/components/panel/GridPanel.js +3 -4
  400. package/node/components/panel/filterPanel/GridFilterForm.js +30 -13
  401. package/node/components/panel/filterPanel/GridFilterPanel.js +45 -19
  402. package/node/components/toolbar/GridToolbarColumnsButton.js +36 -20
  403. package/node/components/toolbar/GridToolbarDensitySelector.js +36 -20
  404. package/node/components/toolbar/GridToolbarExport.js +6 -1
  405. package/node/components/toolbar/GridToolbarExportContainer.js +37 -21
  406. package/node/components/toolbar/GridToolbarFilterButton.js +6 -10
  407. package/node/components/toolbar/GridToolbarQuickFilter.js +4 -0
  408. package/node/components/virtualization/GridBottomContainer.js +34 -0
  409. package/node/components/{containers → virtualization}/GridMainContainer.js +7 -29
  410. package/node/components/virtualization/GridTopContainer.js +44 -0
  411. package/node/components/virtualization/GridVirtualScrollbar.js +138 -0
  412. package/node/components/virtualization/GridVirtualScroller.js +69 -17
  413. package/node/components/virtualization/GridVirtualScrollerFiller.js +77 -0
  414. package/node/components/virtualization/GridVirtualScrollerRenderZone.js +2 -1
  415. package/node/constants/defaultGridSlotsComponents.js +5 -1
  416. package/node/constants/gridClasses.js +1 -1
  417. package/node/hooks/core/gridCoreSelector.js +12 -0
  418. package/node/hooks/core/useGridInitialization.js +4 -0
  419. package/node/hooks/core/useGridLoggerFactory.js +2 -2
  420. package/node/hooks/core/useGridRefs.js +22 -0
  421. package/node/hooks/core/useGridTheme.js +29 -0
  422. package/node/hooks/features/columnGrouping/gridColumnGroupsUtils.js +1 -1
  423. package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +11 -16
  424. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +65 -159
  425. package/node/hooks/features/columnMenu/useGridColumnMenu.js +28 -23
  426. package/node/hooks/features/columns/gridColumnsInterfaces.js +11 -1
  427. package/node/hooks/features/columns/gridColumnsSelector.js +52 -1
  428. package/node/hooks/features/columns/gridColumnsUtils.js +10 -13
  429. package/node/hooks/features/columns/index.js +22 -61
  430. package/node/hooks/features/columns/useGridColumnSpanning.js +62 -61
  431. package/node/hooks/features/columns/useGridColumns.js +20 -22
  432. package/node/hooks/features/dimensions/gridDimensionsSelectors.js +8 -0
  433. package/node/hooks/features/dimensions/index.js +11 -0
  434. package/node/hooks/features/dimensions/useGridDimensions.js +215 -144
  435. package/node/hooks/features/editing/useGridCellEditing.js +4 -4
  436. package/node/hooks/features/editing/useGridRowEditing.js +4 -4
  437. package/node/hooks/features/export/serializers/csvSerializer.js +3 -3
  438. package/node/hooks/features/export/useGridPrintExport.js +1 -1
  439. package/node/hooks/features/filter/gridFilterUtils.js +5 -5
  440. package/node/hooks/features/filter/useGridFilter.js +2 -2
  441. package/node/hooks/features/focus/gridFocusStateSelector.js +3 -7
  442. package/node/hooks/features/focus/useGridFocus.js +2 -2
  443. package/node/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +2 -15
  444. package/node/hooks/features/pagination/gridPaginationUtils.js +2 -2
  445. package/node/hooks/features/pagination/useGridPagination.js +3 -5
  446. package/node/hooks/features/rowSelection/useGridRowSelection.js +1 -1
  447. package/node/hooks/features/rows/gridRowsSelector.js +2 -2
  448. package/node/hooks/features/rows/gridRowsUtils.js +6 -6
  449. package/node/hooks/features/rows/useGridRows.js +7 -7
  450. package/node/hooks/features/rows/useGridRowsMeta.js +7 -5
  451. package/node/hooks/features/scroll/useGridScroll.js +8 -9
  452. package/node/hooks/features/sorting/gridSortingUtils.js +5 -3
  453. package/node/hooks/features/sorting/useGridSorting.js +15 -10
  454. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +22 -2
  455. package/node/hooks/features/virtualization/useGridVirtualScroller.js +434 -431
  456. package/node/hooks/features/virtualization/useGridVirtualization.js +9 -1
  457. package/node/hooks/utils/index.js +36 -0
  458. package/node/hooks/utils/useGridApiContext.js +1 -1
  459. package/node/hooks/utils/useGridAriaAttributes.js +1 -1
  460. package/node/hooks/utils/useGridNativeEventListener.js +3 -9
  461. package/node/hooks/utils/useGridPrivateApiContext.js +1 -1
  462. package/node/hooks/utils/useGridRootProps.js +1 -1
  463. package/node/hooks/utils/useGridSelector.js +1 -1
  464. package/node/hooks/utils/useResizeObserver.js +44 -0
  465. package/node/hooks/utils/useRunOnce.js +27 -0
  466. package/node/index.js +1 -13
  467. package/node/internals/index.js +86 -71
  468. package/node/internals/utils/index.js +11 -0
  469. package/node/internals/utils/propValidation.js +26 -0
  470. package/node/locales/hrHR.js +155 -0
  471. package/node/locales/index.js +33 -0
  472. package/node/locales/ptPT.js +155 -0
  473. package/node/locales/zhHK.js +155 -0
  474. package/node/models/index.js +0 -11
  475. package/node/models/params/index.js +0 -11
  476. package/node/utils/createSelector.js +1 -1
  477. package/node/utils/exportAs.js +1 -1
  478. package/node/utils/utils.js +11 -1
  479. package/package.json +6 -6
  480. package/utils/createSelector.js +1 -1
  481. package/utils/exportAs.js +1 -1
  482. package/utils/utils.d.ts +6 -0
  483. package/utils/utils.js +10 -1
  484. package/components/DataGridVirtualScroller.d.ts +0 -3
  485. package/components/DataGridVirtualScroller.js +0 -35
  486. package/components/containers/GridMainContainer.js +0 -43
  487. package/legacy/components/DataGridVirtualScroller.js +0 -32
  488. package/legacy/components/containers/GridMainContainer.js +0 -45
  489. package/legacy/models/gridRootContainerRef.js +0 -1
  490. package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  491. package/models/gridRootContainerRef.d.ts +0 -5
  492. package/models/gridRootContainerRef.js +0 -1
  493. package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +0 -10
  494. package/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  495. package/modern/components/DataGridVirtualScroller.js +0 -35
  496. package/modern/components/containers/GridMainContainer.js +0 -42
  497. package/modern/models/gridRootContainerRef.js +0 -1
  498. package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +0 -1
  499. package/node/components/DataGridVirtualScroller.js +0 -42
  500. package/node/models/gridRootContainerRef.js +0 -5
  501. package/node/models/params/gridRenderedRowsIntervalChangeParams.js +0 -5
@@ -1,54 +1,60 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import * as React from 'react';
4
- import * as ReactDOM from 'react-dom';
5
4
  import { unstable_useForkRef as useForkRef } from '@mui/utils';
6
- import { styled, useTheme } from '@mui/material/styles';
7
- import { defaultMemoize } from 'reselect';
5
+ import { styled } from '@mui/material/styles';
8
6
  import { useGridSelector } from '../../utils';
9
7
  import { useGridPrivateApiContext } from '../../utils/useGridPrivateApiContext';
10
- import { useGridRootProps } from '../../utils/useGridRootProps';
11
8
  import { useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
12
9
  import { GridColumnHeaderItem } from '../../../components/columnHeaders/GridColumnHeaderItem';
13
- import { getFirstColumnIndexToRender, getTotalHeaderHeight } from '../columns/gridColumnsUtils';
14
- import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
15
- import { areRenderContextsEqual, getRenderableIndexes } from '../virtualization/useGridVirtualScroller';
16
- import { gridVirtualizationColumnEnabledSelector } from '../virtualization';
10
+ import { gridDimensionsSelector } from '../dimensions';
11
+ import { gridRenderContextColumnsSelector, gridVirtualizationColumnEnabledSelector } from '../virtualization';
17
12
  import { GridColumnGroupHeader } from '../../../components/columnHeaders/GridColumnGroupHeader';
13
+ import { GridPinnedColumnPosition, gridVisiblePinnedColumnDefinitionsSelector } from '../columns';
14
+ import { GridScrollbarFillerCell as ScrollbarFiller } from '../../../components/GridScrollbarFillerCell';
15
+ import { gridClasses } from '../../../constants/gridClasses';
18
16
  import { jsx as _jsx } from "react/jsx-runtime";
19
- var GridColumnHeaderRow = styled('div', {
17
+ import { jsxs as _jsxs } from "react/jsx-runtime";
18
+ var SpaceFiller = styled('div')({
19
+ /* GridRootStyles conflict */
20
+ '&&': {
21
+ padding: 0,
22
+ width: 'calc(var(--DataGrid-width) - var(--DataGrid-columnsTotalWidth))'
23
+ }
24
+ });
25
+ export var GridColumnHeaderRow = styled('div', {
20
26
  name: 'MuiDataGrid',
21
27
  slot: 'ColumnHeaderRow',
22
28
  overridesResolver: function overridesResolver(props, styles) {
23
29
  return styles.columnHeaderRow;
24
30
  }
25
- })(function () {
31
+ })(function (_ref) {
32
+ var _ref$ownerState = _ref.ownerState,
33
+ _ref$ownerState$param = _ref$ownerState.params,
34
+ _ref$ownerState$param2 = _ref$ownerState$param === void 0 ? {} : _ref$ownerState$param,
35
+ position = _ref$ownerState$param2.position,
36
+ _ref$ownerState$leftO = _ref$ownerState.leftOverflow,
37
+ leftOverflow = _ref$ownerState$leftO === void 0 ? 0 : _ref$ownerState$leftO;
26
38
  return {
27
- display: 'flex'
39
+ display: 'flex',
40
+ height: 'var(--DataGrid-headerHeight)',
41
+ transform: position === undefined ? "translate3d(".concat(leftOverflow !== 0 ? "calc(var(--DataGrid-offsetLeft) - ".concat(leftOverflow, "px)") : 'var(--DataGrid-offsetLeft)', ", 0, 0)") : undefined
28
42
  };
29
43
  });
30
- function isUIEvent(event) {
31
- return !!event.target;
32
- }
33
44
  export var useGridColumnHeaders = function useGridColumnHeaders(props) {
34
45
  var innerRefProp = props.innerRef,
35
- _props$minColumnIndex = props.minColumnIndex,
36
- minColumnIndex = _props$minColumnIndex === void 0 ? 0 : _props$minColumnIndex,
37
46
  visibleColumns = props.visibleColumns,
38
47
  sortColumnLookup = props.sortColumnLookup,
39
48
  filterColumnLookup = props.filterColumnLookup,
40
- columnPositions = props.columnPositions,
41
49
  columnHeaderTabIndexState = props.columnHeaderTabIndexState,
42
50
  columnGroupHeaderTabIndexState = props.columnGroupHeaderTabIndexState,
43
51
  columnHeaderFocus = props.columnHeaderFocus,
44
52
  columnGroupHeaderFocus = props.columnGroupHeaderFocus,
45
- densityFactor = props.densityFactor,
46
53
  headerGroupingMaxDepth = props.headerGroupingMaxDepth,
47
54
  columnMenuState = props.columnMenuState,
48
55
  columnVisibility = props.columnVisibility,
49
56
  columnGroupsHeaderStructure = props.columnGroupsHeaderStructure,
50
57
  hasOtherElementInTabSequence = props.hasOtherElementInTabSequence;
51
- var theme = useTheme();
52
58
  var _React$useState = React.useState(''),
53
59
  _React$useState2 = _slicedToArray(_React$useState, 2),
54
60
  dragCol = _React$useState2[0],
@@ -59,107 +65,14 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
59
65
  setResizeCol = _React$useState4[1];
60
66
  var apiRef = useGridPrivateApiContext();
61
67
  var hasVirtualization = useGridSelector(apiRef, gridVirtualizationColumnEnabledSelector);
62
- var rootProps = useGridRootProps();
63
68
  var innerRef = React.useRef(null);
64
69
  var handleInnerRef = useForkRef(innerRefProp, innerRef);
65
- var _React$useState5 = React.useState(null),
66
- _React$useState6 = _slicedToArray(_React$useState5, 2),
67
- renderContext = _React$useState6[0],
68
- setRenderContextRaw = _React$useState6[1];
69
- var prevRenderContext = React.useRef(renderContext);
70
- var prevScrollLeft = React.useRef(0);
71
- var currentPage = useGridVisibleRows(apiRef, rootProps);
72
- var totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps.columnHeaderHeight);
73
- var headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
74
- var setRenderContext = React.useCallback(function (nextRenderContext) {
75
- if (renderContext && nextRenderContext && areRenderContextsEqual(renderContext, nextRenderContext)) {
76
- return;
77
- }
78
- setRenderContextRaw(nextRenderContext);
79
- }, [renderContext]);
70
+ var dimensions = useGridSelector(apiRef, gridDimensionsSelector);
71
+ var renderContext = useGridSelector(apiRef, gridRenderContextColumnsSelector);
72
+ var visiblePinnedColumns = useGridSelector(apiRef, gridVisiblePinnedColumnDefinitionsSelector);
80
73
  React.useEffect(function () {
81
74
  apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
82
75
  }, [apiRef]);
83
-
84
- // memoize `getFirstColumnIndexToRender`, since it's called on scroll
85
- var getFirstColumnIndexToRenderRef = React.useRef(defaultMemoize(getFirstColumnIndexToRender, {
86
- equalityCheck: function equalityCheck(a, b) {
87
- return ['firstColumnIndex', 'minColumnIndex', 'columnBuffer'].every(function (key) {
88
- return a[key] === b[key];
89
- });
90
- }
91
- }));
92
- var updateInnerPosition = React.useCallback(function (nextRenderContext) {
93
- var _getRenderableIndexes = getRenderableIndexes({
94
- firstIndex: nextRenderContext.firstRowIndex,
95
- lastIndex: nextRenderContext.lastRowIndex,
96
- minFirstIndex: 0,
97
- maxLastIndex: currentPage.rows.length,
98
- buffer: rootProps.rowBuffer
99
- }),
100
- _getRenderableIndexes2 = _slicedToArray(_getRenderableIndexes, 2),
101
- firstRowToRender = _getRenderableIndexes2[0],
102
- lastRowToRender = _getRenderableIndexes2[1];
103
- var firstColumnToRender = getFirstColumnIndexToRenderRef.current({
104
- firstColumnIndex: nextRenderContext.firstColumnIndex,
105
- minColumnIndex: minColumnIndex,
106
- columnBuffer: rootProps.columnBuffer,
107
- firstRowToRender: firstRowToRender,
108
- lastRowToRender: lastRowToRender,
109
- apiRef: apiRef,
110
- visibleRows: currentPage.rows
111
- });
112
- var direction = theme.direction === 'ltr' ? 1 : -1;
113
- var offset = firstColumnToRender > 0 ? prevScrollLeft.current - direction * columnPositions[firstColumnToRender] : prevScrollLeft.current;
114
- innerRef.current.style.transform = "translate3d(".concat(-offset, "px, 0px, 0px)");
115
- }, [columnPositions, minColumnIndex, rootProps.columnBuffer, apiRef, currentPage.rows, rootProps.rowBuffer, theme.direction]);
116
- React.useLayoutEffect(function () {
117
- if (renderContext) {
118
- updateInnerPosition(renderContext);
119
- }
120
- }, [renderContext, updateInnerPosition]);
121
- var handleScroll = React.useCallback(function (_ref, event) {
122
- var _prevRenderContext$cu, _prevRenderContext$cu2;
123
- var left = _ref.left,
124
- _ref$renderContext = _ref.renderContext,
125
- nextRenderContext = _ref$renderContext === void 0 ? null : _ref$renderContext;
126
- if (!innerRef.current) {
127
- return;
128
- }
129
-
130
- // Ignore vertical scroll.
131
- // Excepts the first event which sets the previous render context.
132
- if (prevScrollLeft.current === left && ((_prevRenderContext$cu = prevRenderContext.current) == null ? void 0 : _prevRenderContext$cu.firstColumnIndex) === (nextRenderContext == null ? void 0 : nextRenderContext.firstColumnIndex) && ((_prevRenderContext$cu2 = prevRenderContext.current) == null ? void 0 : _prevRenderContext$cu2.lastColumnIndex) === (nextRenderContext == null ? void 0 : nextRenderContext.lastColumnIndex)) {
133
- return;
134
- }
135
- prevScrollLeft.current = left;
136
-
137
- // We can only update the position when we guarantee that the render context has been
138
- // rendered. This is achieved using ReactDOM.flushSync or when the context doesn't change.
139
- var canUpdateInnerPosition = false;
140
- if (nextRenderContext !== prevRenderContext.current || !prevRenderContext.current) {
141
- // ReactDOM.flushSync cannot be called on `scroll` events fired inside effects
142
- if (isUIEvent(event)) {
143
- // To prevent flickering, the inner position can only be updated after the new context has
144
- // been rendered. ReactDOM.flushSync ensures that the state changes will happen before
145
- // updating the position.
146
- ReactDOM.flushSync(function () {
147
- setRenderContext(nextRenderContext);
148
- });
149
- canUpdateInnerPosition = true;
150
- } else {
151
- setRenderContext(nextRenderContext);
152
- }
153
- prevRenderContext.current = nextRenderContext;
154
- } else {
155
- canUpdateInnerPosition = true;
156
- }
157
-
158
- // Pass directly the render context to avoid waiting for the next render
159
- if (nextRenderContext && canUpdateInnerPosition) {
160
- updateInnerPosition(nextRenderContext);
161
- }
162
- }, [updateInnerPosition, setRenderContext]);
163
76
  var handleColumnResizeStart = React.useCallback(function (params) {
164
77
  return setResizeCol(params.field);
165
78
  }, []);
@@ -176,57 +89,42 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
176
89
  useGridApiEventHandler(apiRef, 'columnResizeStop', handleColumnResizeStop);
177
90
  useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
178
91
  useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnReorderStop);
179
- useGridApiEventHandler(apiRef, 'scrollPositionChange', handleScroll);
180
92
 
181
93
  // Helper for computation common between getColumnHeaders and getColumnGroupHeaders
182
94
  var getColumnsToRender = function getColumnsToRender(params) {
183
95
  var _ref2 = params || {},
184
96
  _ref2$renderContext = _ref2.renderContext,
185
- nextRenderContext = _ref2$renderContext === void 0 ? renderContext : _ref2$renderContext,
186
- _ref2$minFirstColumn = _ref2.minFirstColumn,
187
- minFirstColumn = _ref2$minFirstColumn === void 0 ? minColumnIndex : _ref2$minFirstColumn,
97
+ currentContext = _ref2$renderContext === void 0 ? renderContext : _ref2$renderContext,
188
98
  _ref2$maxLastColumn = _ref2.maxLastColumn,
189
99
  maxLastColumn = _ref2$maxLastColumn === void 0 ? visibleColumns.length : _ref2$maxLastColumn;
190
- if (!nextRenderContext) {
191
- return null;
192
- }
193
- var _getRenderableIndexes3 = getRenderableIndexes({
194
- firstIndex: nextRenderContext.firstRowIndex,
195
- lastIndex: nextRenderContext.lastRowIndex,
196
- minFirstIndex: 0,
197
- maxLastIndex: currentPage.rows.length,
198
- buffer: rootProps.rowBuffer
199
- }),
200
- _getRenderableIndexes4 = _slicedToArray(_getRenderableIndexes3, 2),
201
- firstRowToRender = _getRenderableIndexes4[0],
202
- lastRowToRender = _getRenderableIndexes4[1];
203
- var firstColumnToRender = !hasVirtualization ? 0 : getFirstColumnIndexToRenderRef.current({
204
- firstColumnIndex: nextRenderContext.firstColumnIndex,
205
- minColumnIndex: minFirstColumn,
206
- columnBuffer: rootProps.columnBuffer,
207
- apiRef: apiRef,
208
- firstRowToRender: firstRowToRender,
209
- lastRowToRender: lastRowToRender,
210
- visibleRows: currentPage.rows
211
- });
212
- var lastColumnToRender = !hasVirtualization ? maxLastColumn : Math.min(nextRenderContext.lastColumnIndex + rootProps.columnBuffer, maxLastColumn);
100
+ var firstColumnToRender = !hasVirtualization ? 0 : currentContext.firstColumnIndex;
101
+ var lastColumnToRender = !hasVirtualization ? maxLastColumn : currentContext.lastColumnIndex;
213
102
  var renderedColumns = visibleColumns.slice(firstColumnToRender, lastColumnToRender);
214
103
  return {
215
104
  renderedColumns: renderedColumns,
216
105
  firstColumnToRender: firstColumnToRender,
217
- lastColumnToRender: lastColumnToRender,
218
- minFirstColumn: minFirstColumn,
219
- maxLastColumn: maxLastColumn
106
+ lastColumnToRender: lastColumnToRender
220
107
  };
221
108
  };
109
+ var getFiller = function getFiller(params) {
110
+ var borderTop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
111
+ var isPinnedRight = (params == null ? void 0 : params.position) === GridPinnedColumnPosition.RIGHT;
112
+ var hasScrollbarFiller = visiblePinnedColumns.right.length > 0 && isPinnedRight || visiblePinnedColumns.right.length === 0 && (params == null ? void 0 : params.position) === undefined;
113
+ return /*#__PURE__*/_jsxs(React.Fragment, {
114
+ children: [(params == null ? void 0 : params.position) === undefined && /*#__PURE__*/_jsx(SpaceFiller, {
115
+ className: gridClasses.columnHeader
116
+ }), hasScrollbarFiller && /*#__PURE__*/_jsx(ScrollbarFiller, {
117
+ header: true,
118
+ borderTop: borderTop,
119
+ pinnedRight: isPinnedRight
120
+ })]
121
+ });
122
+ };
222
123
  var getColumnHeaders = function getColumnHeaders(params) {
223
124
  var other = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
224
- var columnsToRender = getColumnsToRender(params);
225
- if (columnsToRender == null) {
226
- return null;
227
- }
228
- var renderedColumns = columnsToRender.renderedColumns,
229
- firstColumnToRender = columnsToRender.firstColumnToRender;
125
+ var _getColumnsToRender = getColumnsToRender(params),
126
+ renderedColumns = _getColumnsToRender.renderedColumns,
127
+ firstColumnToRender = _getColumnsToRender.firstColumnToRender;
230
128
  var columns = [];
231
129
  for (var i = 0; i < renderedColumns.length; i += 1) {
232
130
  var colDef = renderedColumns[i];
@@ -238,7 +136,7 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
238
136
  columns.push( /*#__PURE__*/_jsx(GridColumnHeaderItem, _extends({}, sortColumnLookup[colDef.field], {
239
137
  columnMenuOpen: open,
240
138
  filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,
241
- headerHeight: headerHeight,
139
+ headerHeight: dimensions.headerHeight,
242
140
  isDragging: colDef.field === dragCol,
243
141
  colDef: colDef,
244
142
  colIndex: columnIndex,
@@ -247,11 +145,13 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
247
145
  tabIndex: tabIndex
248
146
  }, other), colDef.field));
249
147
  }
250
- return /*#__PURE__*/_jsx(GridColumnHeaderRow, {
148
+ return /*#__PURE__*/_jsxs(GridColumnHeaderRow, {
251
149
  role: "row",
252
150
  "aria-rowindex": headerGroupingMaxDepth + 1,
253
- ownerState: rootProps,
254
- children: columns
151
+ ownerState: {
152
+ params: params
153
+ },
154
+ children: [columns, getFiller(params)]
255
155
  });
256
156
  };
257
157
  var getColumnGroupHeaders = function getColumnGroupHeaders(params) {
@@ -259,7 +159,7 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
259
159
  return null;
260
160
  }
261
161
  var columnsToRender = getColumnsToRender(params);
262
- if (columnsToRender == null || columnsToRender.renderedColumns.length === 0) {
162
+ if (columnsToRender.renderedColumns.length === 0) {
263
163
  return null;
264
164
  }
265
165
  var firstColumnToRender = columnsToRender.firstColumnToRender,
@@ -267,17 +167,17 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
267
167
  var columns = [];
268
168
  var headerToRender = [];
269
169
  var _loop = function _loop(depth) {
270
- var _apiRef$current$unsta, _apiRef$current$unsta2;
170
+ var _apiRef$current$getCo, _apiRef$current$getCo2;
271
171
  var rowStructure = columnGroupsHeaderStructure[depth];
272
172
  var firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
273
- var firstGroupToRender = (_apiRef$current$unsta = apiRef.current.unstable_getColumnGroupPath(firstColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta : null;
173
+ var firstGroupToRender = (_apiRef$current$getCo = apiRef.current.getColumnGroupPath(firstColumnFieldToRender)[depth]) != null ? _apiRef$current$getCo : null;
274
174
  var firstGroupIndex = rowStructure.findIndex(function (_ref4) {
275
175
  var groupId = _ref4.groupId,
276
176
  columnFields = _ref4.columnFields;
277
177
  return groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender);
278
178
  });
279
179
  var lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
280
- var lastGroupToRender = (_apiRef$current$unsta2 = apiRef.current.unstable_getColumnGroupPath(lastColumnFieldToRender)[depth]) != null ? _apiRef$current$unsta2 : null;
180
+ var lastGroupToRender = (_apiRef$current$getCo2 = apiRef.current.getColumnGroupPath(lastColumnFieldToRender)[depth]) != null ? _apiRef$current$getCo2 : null;
281
181
  var lastGroupIndex = rowStructure.findIndex(function (_ref5) {
282
182
  var groupId = _ref5.groupId,
283
183
  columnFields = _ref5.columnFields;
@@ -327,15 +227,14 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
327
227
  _loop(depth);
328
228
  }
329
229
  headerToRender.forEach(function (depthInfo, depthIndex) {
330
- columns.push( /*#__PURE__*/_jsx(GridColumnHeaderRow, {
331
- style: {
332
- height: "".concat(headerHeight, "px"),
333
- transform: "translateX(-".concat(depthInfo.leftOverflow, "px)")
334
- },
230
+ columns.push( /*#__PURE__*/_jsxs(GridColumnHeaderRow, {
335
231
  role: "row",
336
232
  "aria-rowindex": depthIndex + 1,
337
- ownerState: rootProps,
338
- children: depthInfo.elements.map(function (_ref3, groupIndex) {
233
+ ownerState: {
234
+ params: params,
235
+ leftOverflow: depthInfo.leftOverflow
236
+ },
237
+ children: [depthInfo.elements.map(function (_ref3, groupIndex) {
339
238
  var groupId = _ref3.groupId,
340
239
  width = _ref3.width,
341
240
  fields = _ref3.fields,
@@ -350,38 +249,27 @@ export var useGridColumnHeaders = function useGridColumnHeaders(props) {
350
249
  depth: depthIndex,
351
250
  isLastColumn: colIndex === visibleColumns.length - fields.length,
352
251
  maxDepth: headerToRender.length,
353
- height: headerHeight,
252
+ height: dimensions.headerHeight,
354
253
  hasFocus: hasFocus,
355
254
  tabIndex: tabIndex
356
255
  }, groupIndex);
357
- })
256
+ }), getFiller(params)]
358
257
  }, depthIndex));
359
258
  });
360
259
  return columns;
361
260
  };
362
- var rootStyle = {
363
- minHeight: totalHeaderHeight,
364
- maxHeight: totalHeaderHeight,
365
- lineHeight: "".concat(headerHeight, "px")
366
- };
367
261
  return {
368
262
  renderContext: renderContext,
263
+ getFiller: getFiller,
369
264
  getColumnHeaders: getColumnHeaders,
370
265
  getColumnsToRender: getColumnsToRender,
371
266
  getColumnGroupHeaders: getColumnGroupHeaders,
372
267
  isDragging: !!dragCol,
373
- getRootProps: function getRootProps() {
374
- var other = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
375
- return _extends({
376
- style: rootStyle
377
- }, other);
378
- },
379
268
  getInnerProps: function getInnerProps() {
380
269
  return {
381
270
  ref: handleInnerRef,
382
271
  role: 'rowgroup'
383
272
  };
384
- },
385
- headerHeight: headerHeight
273
+ }
386
274
  };
387
275
  };
@@ -22,19 +22,25 @@ export var useGridColumnMenu = function useGridColumnMenu(apiRef) {
22
22
  * API METHODS
23
23
  */
24
24
  var showColumnMenu = React.useCallback(function (field) {
25
- var shouldUpdate = apiRef.current.setState(function (state) {
26
- if (state.columnMenu.open && state.columnMenu.field === field) {
27
- return state;
28
- }
29
- logger.debug('Opening Column Menu');
30
- return _extends({}, state, {
31
- columnMenu: {
32
- open: true,
33
- field: field
25
+ var columnMenuState = gridColumnMenuSelector(apiRef.current.state);
26
+ var newState = {
27
+ open: true,
28
+ field: field
29
+ };
30
+ var shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;
31
+ if (shouldUpdate) {
32
+ apiRef.current.setState(function (state) {
33
+ if (state.columnMenu.open && state.columnMenu.field === field) {
34
+ return state;
34
35
  }
36
+ logger.debug('Opening Column Menu');
37
+ return _extends({}, state, {
38
+ columnMenu: {
39
+ open: true,
40
+ field: field
41
+ }
42
+ });
35
43
  });
36
- });
37
- if (shouldUpdate) {
38
44
  apiRef.current.hidePreferences();
39
45
  apiRef.current.forceUpdate();
40
46
  }
@@ -66,19 +72,18 @@ export var useGridColumnMenu = function useGridColumnMenu(apiRef) {
66
72
  }
67
73
  apiRef.current.setColumnHeaderFocus(fieldToFocus);
68
74
  }
69
- var shouldUpdate = apiRef.current.setState(function (state) {
70
- if (!state.columnMenu.open && state.columnMenu.field === undefined) {
71
- return state;
72
- }
73
- logger.debug('Hiding Column Menu');
74
- return _extends({}, state, {
75
- columnMenu: _extends({}, state.columnMenu, {
76
- open: false,
77
- field: undefined
78
- })
79
- });
80
- });
75
+ var newState = {
76
+ open: false,
77
+ field: undefined
78
+ };
79
+ var shouldUpdate = newState.open !== columnMenuState.open || newState.field !== columnMenuState.field;
81
80
  if (shouldUpdate) {
81
+ apiRef.current.setState(function (state) {
82
+ logger.debug('Hiding Column Menu');
83
+ return _extends({}, state, {
84
+ columnMenu: newState
85
+ });
86
+ });
82
87
  apiRef.current.forceUpdate();
83
88
  }
84
89
  }, [apiRef, logger]);
@@ -1 +1,9 @@
1
- export {};
1
+ export var GridPinnedColumnPosition = /*#__PURE__*/function (GridPinnedColumnPosition) {
2
+ GridPinnedColumnPosition["LEFT"] = "left";
3
+ GridPinnedColumnPosition["RIGHT"] = "right";
4
+ return GridPinnedColumnPosition;
5
+ }({});
6
+ export var EMPTY_PINNED_COLUMN_FIELDS = {
7
+ left: [],
8
+ right: []
9
+ };
@@ -1,4 +1,7 @@
1
1
  import { createSelector, createSelectorMemoized } from '../../../utils/createSelector';
2
+ import { EMPTY_PINNED_COLUMN_FIELDS } from './gridColumnsInterfaces';
3
+ import { gridThemeSelector } from '../../core/gridCoreSelector';
4
+
2
5
  /**
3
6
  * Get the columns state
4
7
  * @category Columns
@@ -62,6 +65,65 @@ export var gridVisibleColumnFieldsSelector = createSelectorMemoized(gridVisibleC
62
65
  });
63
66
  });
64
67
 
68
+ /**
69
+ * Get the visible pinned columns model.
70
+ * @category Visible Columns
71
+ */
72
+ export var gridPinnedColumnsSelector = function gridPinnedColumnsSelector(state) {
73
+ return state.pinnedColumns;
74
+ };
75
+
76
+ /**
77
+ * Get the visible pinned columns.
78
+ * @category Visible Columns
79
+ */
80
+ export var gridVisiblePinnedColumnDefinitionsSelector = createSelectorMemoized(gridColumnsStateSelector, gridPinnedColumnsSelector, gridVisibleColumnFieldsSelector, gridThemeSelector, function (columnsState, model, visibleColumnFields, theme) {
81
+ var visiblePinnedFields = filterVisibleColumns(model, visibleColumnFields, theme.direction === 'rtl');
82
+ var visiblePinnedColumns = {
83
+ left: visiblePinnedFields.left.map(function (field) {
84
+ return columnsState.lookup[field];
85
+ }),
86
+ right: visiblePinnedFields.right.map(function (field) {
87
+ return columnsState.lookup[field];
88
+ })
89
+ };
90
+ return visiblePinnedColumns;
91
+ });
92
+ function filterVisibleColumns(pinnedColumns, columns, invert) {
93
+ var _pinnedColumns$left, _pinnedColumns$right;
94
+ if (!Array.isArray(pinnedColumns.left) && !Array.isArray(pinnedColumns.right)) {
95
+ return EMPTY_PINNED_COLUMN_FIELDS;
96
+ }
97
+ if (((_pinnedColumns$left = pinnedColumns.left) == null ? void 0 : _pinnedColumns$left.length) === 0 && ((_pinnedColumns$right = pinnedColumns.right) == null ? void 0 : _pinnedColumns$right.length) === 0) {
98
+ return EMPTY_PINNED_COLUMN_FIELDS;
99
+ }
100
+ var filter = function filter(newPinnedColumns, remainingColumns) {
101
+ if (!Array.isArray(newPinnedColumns)) {
102
+ return [];
103
+ }
104
+ return newPinnedColumns.filter(function (field) {
105
+ return remainingColumns.includes(field);
106
+ });
107
+ };
108
+ var leftPinnedColumns = filter(pinnedColumns.left, columns);
109
+ var columnsWithoutLeftPinnedColumns = columns.filter(
110
+ // Filter out from the remaining columns those columns already pinned to the left
111
+ function (field) {
112
+ return !leftPinnedColumns.includes(field);
113
+ });
114
+ var rightPinnedColumns = filter(pinnedColumns.right, columnsWithoutLeftPinnedColumns);
115
+ if (invert) {
116
+ return {
117
+ left: rightPinnedColumns,
118
+ right: leftPinnedColumns
119
+ };
120
+ }
121
+ return {
122
+ left: leftPinnedColumns,
123
+ right: rightPinnedColumns
124
+ };
125
+ }
126
+
65
127
  /**
66
128
  * Get the left position in pixel of each visible columns relative to the left of the first column.
67
129
  * @category Visible Columns
@@ -2,12 +2,14 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
3
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
4
4
  import _extends from "@babel/runtime/helpers/esm/extends";
5
- import { DEFAULT_GRID_COL_TYPE_KEY, GRID_STRING_COL_DEF } from '../../../colDef';
5
+ import { DEFAULT_GRID_COL_TYPE_KEY, GRID_STRING_COL_DEF, getGridDefaultColumnTypes } from '../../../colDef';
6
6
  import { gridColumnsStateSelector, gridColumnVisibilityModelSelector } from './gridColumnsSelector';
7
7
  import { clamp } from '../../../utils/utils';
8
8
  import { gridDensityFactorSelector } from '../density/densitySelector';
9
9
  import { gridColumnGroupsHeaderMaxDepthSelector } from '../columnGrouping/gridColumnGroupsSelector';
10
10
  export var COLUMNS_DIMENSION_PROPERTIES = ['maxWidth', 'minWidth', 'width', 'flex'];
11
+ var COLUMN_TYPES = getGridDefaultColumnTypes();
12
+
11
13
  /**
12
14
  * Computes width for flex columns.
13
15
  * Based on CSS Flexbox specification:
@@ -207,10 +209,10 @@ export var applyInitialState = function applyInitialState(columnsState, initialS
207
209
  });
208
210
  return newColumnsState;
209
211
  };
210
- function getDefaultColTypeDef(columnTypes, type) {
211
- var colDef = columnTypes[DEFAULT_GRID_COL_TYPE_KEY];
212
- if (type && columnTypes[type]) {
213
- colDef = columnTypes[type];
212
+ function getDefaultColTypeDef(type) {
213
+ var colDef = COLUMN_TYPES[DEFAULT_GRID_COL_TYPE_KEY];
214
+ if (type && COLUMN_TYPES[type]) {
215
+ colDef = COLUMN_TYPES[type];
214
216
  }
215
217
  return colDef;
216
218
  }
@@ -219,7 +221,6 @@ export var createColumnsState = function createColumnsState(_ref5) {
219
221
  var apiRef = _ref5.apiRef,
220
222
  columnsToUpsert = _ref5.columnsToUpsert,
221
223
  initialState = _ref5.initialState,
222
- columnTypes = _ref5.columnTypes,
223
224
  _ref5$columnVisibilit = _ref5.columnVisibilityModel,
224
225
  columnVisibilityModel = _ref5$columnVisibilit === void 0 ? gridColumnVisibilityModelSelector(apiRef) : _ref5$columnVisibilit,
225
226
  _ref5$keepOnlyColumns = _ref5.keepOnlyColumnsToUpsert,
@@ -254,7 +255,7 @@ export var createColumnsState = function createColumnsState(_ref5) {
254
255
  columnsToKeep[field] = true;
255
256
  var existingState = columnsState.lookup[field];
256
257
  if (existingState == null) {
257
- existingState = _extends({}, getDefaultColTypeDef(columnTypes, newColumn.type), {
258
+ existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {
258
259
  field: field,
259
260
  hasBeenResized: false
260
261
  });
@@ -265,7 +266,7 @@ export var createColumnsState = function createColumnsState(_ref5) {
265
266
 
266
267
  // If the column type has changed - merge the existing state with the default column type definition
267
268
  if (existingState && existingState.type !== newColumn.type) {
268
- existingState = _extends({}, getDefaultColTypeDef(columnTypes, newColumn.type), {
269
+ existingState = _extends({}, getDefaultColTypeDef(newColumn.type), {
269
270
  field: field
270
271
  });
271
272
  }
@@ -291,14 +292,7 @@ export var createColumnsState = function createColumnsState(_ref5) {
291
292
  }
292
293
  var columnsStateWithPreProcessing = apiRef.current.unstable_applyPipeProcessors('hydrateColumns', columnsState);
293
294
  var columnsStateWithPortableColumns = applyInitialState(columnsStateWithPreProcessing, initialState);
294
- return hydrateColumnsWidth(columnsStateWithPortableColumns, (_apiRef$current$getRo = (_apiRef$current$getRo2 = (_apiRef$current = apiRef.current).getRootDimensions) == null || (_apiRef$current$getRo2 = _apiRef$current$getRo2.call(_apiRef$current)) == null ? void 0 : _apiRef$current$getRo2.viewportInnerSize.width) != null ? _apiRef$current$getRo : 0);
295
- };
296
- export var mergeColumnsState = function mergeColumnsState(columnsState) {
297
- return function (state) {
298
- return _extends({}, state, {
299
- columns: columnsState
300
- });
301
- };
295
+ return hydrateColumnsWidth(columnsStateWithPortableColumns, (_apiRef$current$getRo = (_apiRef$current$getRo2 = (_apiRef$current = apiRef.current).getRootDimensions) == null ? void 0 : _apiRef$current$getRo2.call(_apiRef$current).viewportInnerSize.width) != null ? _apiRef$current$getRo : 0);
302
296
  };
303
297
  export function getFirstNonSpannedColumnToRender(_ref6) {
304
298
  var firstColumnToRender = _ref6.firstColumnToRender,
@@ -1 +1,2 @@
1
- export { gridColumnFieldsSelector, gridColumnLookupSelector, gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector, gridVisibleColumnDefinitionsSelector, gridVisibleColumnFieldsSelector, gridColumnPositionsSelector, gridColumnsTotalWidthSelector, gridFilterableColumnDefinitionsSelector, gridFilterableColumnLookupSelector } from './gridColumnsSelector';
1
+ export * from './gridColumnsSelector';
2
+ export * from './gridColumnsInterfaces';