@mui/x-data-grid 7.0.0-beta.6 → 7.0.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 (329) hide show
  1. package/CHANGELOG.md +311 -12
  2. package/DataGrid/DataGrid.js +57 -17
  3. package/DataGrid/useDataGridComponent.js +3 -0
  4. package/DataGrid/useDataGridProps.js +6 -7
  5. package/README.md +1 -1
  6. package/components/GridColumnHeaders.d.ts +1 -2
  7. package/components/GridColumnHeaders.js +6 -17
  8. package/components/GridFooter.js +2 -3
  9. package/components/GridHeader.js +1 -2
  10. package/components/GridHeaders.js +1 -4
  11. package/components/GridPagination.d.ts +6 -5
  12. package/components/GridPagination.js +14 -11
  13. package/components/GridRow.d.ts +1 -1
  14. package/components/GridRow.js +17 -36
  15. package/components/GridScrollArea.d.ts +10 -0
  16. package/components/GridScrollArea.js +150 -0
  17. package/components/base/GridFooterPlaceholder.js +1 -2
  18. package/components/base/GridOverlays.js +3 -6
  19. package/components/cell/GridActionsCell.js +4 -6
  20. package/components/cell/GridActionsCellItem.d.ts +8 -25
  21. package/components/cell/GridActionsCellItem.js +8 -5
  22. package/components/cell/GridBooleanCell.d.ts +1 -0
  23. package/components/cell/GridBooleanCell.js +3 -2
  24. package/components/cell/GridCell.d.ts +7 -0
  25. package/components/cell/GridCell.js +18 -11
  26. package/components/cell/GridEditBooleanCell.js +1 -2
  27. package/components/cell/GridEditDateCell.js +2 -3
  28. package/components/cell/GridEditInputCell.js +2 -2
  29. package/components/cell/GridEditSingleSelectCell.js +5 -8
  30. package/components/columnHeaders/ColumnHeaderMenuIcon.js +2 -3
  31. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  32. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
  33. package/components/columnHeaders/GridColumnGroupHeader.js +22 -13
  34. package/components/columnHeaders/GridColumnHeaderFilterIconButton.js +2 -3
  35. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
  36. package/components/columnHeaders/GridColumnHeaderItem.js +26 -12
  37. package/components/columnHeaders/GridColumnHeaderSortIcon.js +1 -2
  38. package/components/columnHeaders/GridColumnHeaderTitle.js +2 -3
  39. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
  40. package/components/columnHeaders/GridGenericColumnHeaderItem.js +7 -6
  41. package/components/columnSelection/GridCellCheckboxRenderer.js +3 -5
  42. package/components/columnSelection/GridHeaderCheckbox.js +1 -2
  43. package/components/columnsManagement/GridColumnsManagement.js +17 -21
  44. package/components/containers/GridRoot.js +3 -3
  45. package/components/containers/GridRootStyles.js +12 -20
  46. package/components/menu/GridMenu.js +4 -6
  47. package/components/menu/columnMenu/GridColumnHeaderMenu.js +1 -1
  48. package/components/menu/columnMenu/menuItems/GridColumnMenuSortItem.js +2 -3
  49. package/components/panel/GridColumnsPanel.js +1 -2
  50. package/components/panel/GridPanel.d.ts +1 -10
  51. package/components/panel/GridPanel.js +1 -2
  52. package/components/panel/GridPreferencesPanel.js +2 -3
  53. package/components/panel/filterPanel/GridFilterForm.js +24 -27
  54. package/components/panel/filterPanel/GridFilterInputBoolean.d.ts +1 -1
  55. package/components/panel/filterPanel/GridFilterInputBoolean.js +6 -7
  56. package/components/panel/filterPanel/GridFilterInputDate.d.ts +1 -1
  57. package/components/panel/filterPanel/GridFilterInputDate.js +3 -4
  58. package/components/panel/filterPanel/GridFilterInputMultipleSingleSelect.js +11 -15
  59. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +10 -14
  60. package/components/panel/filterPanel/GridFilterInputSingleSelect.d.ts +1 -1
  61. package/components/panel/filterPanel/GridFilterInputSingleSelect.js +10 -11
  62. package/components/panel/filterPanel/GridFilterInputValue.d.ts +1 -1
  63. package/components/panel/filterPanel/GridFilterInputValue.js +5 -7
  64. package/components/panel/filterPanel/GridFilterPanel.js +5 -9
  65. package/components/panel/filterPanel/filterPanelUtils.js +1 -1
  66. package/components/toolbar/GridToolbarColumnsButton.js +3 -5
  67. package/components/toolbar/GridToolbarDensitySelector.js +8 -10
  68. package/components/toolbar/GridToolbarExport.js +2 -2
  69. package/components/toolbar/GridToolbarExportContainer.js +3 -5
  70. package/components/toolbar/GridToolbarFilterButton.js +3 -5
  71. package/components/toolbar/GridToolbarQuickFilter.js +4 -5
  72. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  73. package/components/virtualization/GridVirtualScroller.js +6 -1
  74. package/components/virtualization/GridVirtualScrollerContent.js +1 -2
  75. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  76. package/components/virtualization/GridVirtualScrollerRenderZone.js +1 -2
  77. package/constants/gridClasses.d.ts +6 -32
  78. package/constants/gridClasses.js +1 -1
  79. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  80. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +1 -2
  81. package/hooks/core/useGridApiInitialization.js +4 -6
  82. package/hooks/features/clipboard/useGridClipboard.js +6 -5
  83. package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +4 -16
  84. package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +4 -8
  85. package/hooks/features/columnGrouping/useGridColumnGrouping.js +12 -23
  86. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
  87. package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -101
  88. package/hooks/features/columnMenu/useGridColumnMenuSlots.js +2 -2
  89. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  90. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  91. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  92. package/hooks/features/columnResize/columnResizeState.js +1 -0
  93. package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
  94. package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  95. package/hooks/features/columnResize/index.d.ts +3 -0
  96. package/hooks/features/columnResize/index.js +3 -0
  97. package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
  98. package/hooks/features/columnResize/useGridColumnResize.js +553 -0
  99. package/hooks/features/columns/gridColumnsSelector.js +1 -2
  100. package/hooks/features/columns/gridColumnsUtils.d.ts +0 -9
  101. package/hooks/features/columns/gridColumnsUtils.js +5 -22
  102. package/hooks/features/columns/useGridColumnSpanning.js +1 -2
  103. package/hooks/features/columns/useGridColumns.js +11 -19
  104. package/hooks/features/density/densitySelector.d.ts +4 -2
  105. package/hooks/features/density/densitySelector.js +8 -2
  106. package/hooks/features/density/densityState.d.ts +1 -4
  107. package/hooks/features/density/useGridDensity.d.ts +2 -4
  108. package/hooks/features/density/useGridDensity.js +21 -29
  109. package/hooks/features/dimensions/useGridDimensions.js +7 -10
  110. package/hooks/features/editing/useGridCellEditing.js +25 -8
  111. package/hooks/features/editing/useGridEditing.js +1 -2
  112. package/hooks/features/editing/useGridRowEditing.js +4 -6
  113. package/hooks/features/export/serializers/csvSerializer.d.ts +2 -0
  114. package/hooks/features/export/serializers/csvSerializer.js +25 -16
  115. package/hooks/features/export/useGridCsvExport.js +9 -10
  116. package/hooks/features/export/useGridPrintExport.js +17 -22
  117. package/hooks/features/export/utils.js +2 -3
  118. package/hooks/features/filter/gridFilterSelector.js +15 -22
  119. package/hooks/features/filter/gridFilterUtils.js +10 -16
  120. package/hooks/features/filter/useGridFilter.js +9 -15
  121. package/hooks/features/focus/useGridFocus.js +5 -6
  122. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
  123. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  124. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +23 -5
  125. package/hooks/features/index.d.ts +1 -0
  126. package/hooks/features/index.js +1 -0
  127. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +1 -2
  128. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
  129. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  130. package/hooks/features/pagination/gridPaginationSelector.js +9 -4
  131. package/hooks/features/pagination/useGridPagination.d.ts +1 -6
  132. package/hooks/features/pagination/useGridPagination.js +9 -158
  133. package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
  134. package/hooks/features/pagination/useGridPaginationModel.js +165 -0
  135. package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
  136. package/hooks/features/pagination/useGridRowCount.js +94 -0
  137. package/hooks/features/preferencesPanel/useGridPreferencesPanel.js +7 -12
  138. package/hooks/features/rowSelection/useGridRowSelection.js +11 -16
  139. package/hooks/features/rows/gridRowsSelector.js +11 -19
  140. package/hooks/features/rows/gridRowsUtils.js +7 -9
  141. package/hooks/features/rows/useGridParamsApi.js +1 -1
  142. package/hooks/features/rows/useGridRows.js +4 -13
  143. package/hooks/features/rows/useGridRowsMeta.js +7 -13
  144. package/hooks/features/scroll/useGridScroll.js +3 -4
  145. package/hooks/features/sorting/gridSortingSelector.js +4 -7
  146. package/hooks/features/sorting/useGridSorting.js +8 -14
  147. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
  148. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  149. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +3 -3
  150. package/hooks/features/virtualization/useGridVirtualScroller.js +220 -71
  151. package/hooks/utils/useGridApiEventHandler.js +5 -10
  152. package/hooks/utils/useGridNativeEventListener.js +1 -2
  153. package/hooks/utils/useLazyRef.d.ts +1 -2
  154. package/hooks/utils/useLazyRef.js +1 -11
  155. package/hooks/utils/useOnMount.d.ts +1 -2
  156. package/hooks/utils/useOnMount.js +1 -7
  157. package/hooks/utils/useTimeout.d.ts +1 -11
  158. package/hooks/utils/useTimeout.js +1 -36
  159. package/index.js +1 -1
  160. package/internals/index.d.ts +3 -1
  161. package/internals/index.js +2 -1
  162. package/internals/utils/getPinnedCellOffset.d.ts +3 -0
  163. package/internals/utils/getPinnedCellOffset.js +17 -0
  164. package/internals/utils/useProps.js +1 -2
  165. package/joy/joySlots.js +18 -63
  166. package/locales/jaJP.js +3 -4
  167. package/material/index.js +0 -2
  168. package/models/api/gridApiCommon.d.ts +3 -3
  169. package/models/api/gridCoreApi.d.ts +1 -5
  170. package/models/api/gridRowsMetaApi.d.ts +1 -1
  171. package/models/api/index.d.ts +1 -1
  172. package/models/api/index.js +0 -1
  173. package/models/events/gridEventLookup.d.ts +13 -0
  174. package/models/gridExport.d.ts +6 -0
  175. package/models/gridHeaderFilteringModel.d.ts +1 -0
  176. package/models/gridSlotsComponent.d.ts +0 -5
  177. package/models/gridStateCommunity.d.ts +3 -0
  178. package/models/params/gridScrollParams.d.ts +5 -3
  179. package/models/props/DataGridProps.d.ts +58 -28
  180. package/modern/DataGrid/DataGrid.js +57 -17
  181. package/modern/DataGrid/useDataGridComponent.js +3 -0
  182. package/modern/DataGrid/useDataGridProps.js +6 -7
  183. package/modern/components/GridColumnHeaders.js +6 -17
  184. package/modern/components/GridHeaders.js +1 -4
  185. package/modern/components/GridPagination.js +13 -6
  186. package/modern/components/GridRow.js +4 -19
  187. package/modern/components/GridScrollArea.js +150 -0
  188. package/modern/components/cell/GridActionsCell.js +1 -1
  189. package/modern/components/cell/GridActionsCellItem.js +4 -0
  190. package/modern/components/cell/GridBooleanCell.js +3 -2
  191. package/modern/components/cell/GridCell.js +11 -3
  192. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  193. package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  194. package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  195. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  196. package/modern/components/containers/GridRoot.js +3 -3
  197. package/modern/components/containers/GridRootStyles.js +12 -20
  198. package/modern/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  199. package/modern/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  200. package/modern/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  201. package/modern/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  202. package/modern/components/toolbar/GridToolbarDensitySelector.js +5 -5
  203. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  204. package/modern/components/virtualization/GridVirtualScroller.js +6 -1
  205. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  206. package/modern/constants/gridClasses.js +1 -1
  207. package/modern/hooks/features/clipboard/useGridClipboard.js +4 -2
  208. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
  209. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  210. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  211. package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  212. package/modern/hooks/features/columnResize/index.js +3 -0
  213. package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
  214. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -20
  215. package/modern/hooks/features/density/densitySelector.js +8 -2
  216. package/modern/hooks/features/density/useGridDensity.js +21 -29
  217. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -5
  218. package/modern/hooks/features/editing/useGridCellEditing.js +22 -3
  219. package/modern/hooks/features/editing/useGridRowEditing.js +1 -1
  220. package/modern/hooks/features/export/serializers/csvSerializer.js +23 -12
  221. package/modern/hooks/features/export/useGridCsvExport.js +2 -1
  222. package/modern/hooks/features/export/useGridPrintExport.js +8 -7
  223. package/modern/hooks/features/filter/gridFilterUtils.js +1 -1
  224. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  225. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  226. package/modern/hooks/features/index.js +1 -0
  227. package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
  228. package/modern/hooks/features/pagination/useGridPagination.js +8 -149
  229. package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
  230. package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
  231. package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -2
  232. package/modern/hooks/features/scroll/useGridScroll.js +1 -1
  233. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  234. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
  235. package/modern/hooks/utils/useLazyRef.js +1 -11
  236. package/modern/hooks/utils/useOnMount.js +1 -7
  237. package/modern/hooks/utils/useTimeout.js +1 -36
  238. package/modern/index.js +1 -1
  239. package/modern/internals/index.js +2 -1
  240. package/modern/internals/utils/getPinnedCellOffset.js +17 -0
  241. package/modern/joy/joySlots.js +11 -50
  242. package/modern/locales/jaJP.js +3 -4
  243. package/modern/material/index.js +0 -2
  244. package/modern/models/api/index.js +0 -1
  245. package/modern/utils/cellBorderUtils.js +8 -0
  246. package/modern/utils/createSelector.js +1 -1
  247. package/modern/utils/domUtils.js +144 -0
  248. package/modern/utils/keyboardUtils.js +1 -1
  249. package/node/DataGrid/DataGrid.js +57 -17
  250. package/node/DataGrid/useDataGridComponent.js +3 -0
  251. package/node/DataGrid/useDataGridProps.js +6 -7
  252. package/node/components/GridColumnHeaders.js +6 -16
  253. package/node/components/GridHeaders.js +1 -4
  254. package/node/components/GridPagination.js +10 -4
  255. package/node/components/GridRow.js +3 -18
  256. package/node/components/GridScrollArea.js +158 -0
  257. package/node/components/cell/GridActionsCell.js +1 -1
  258. package/node/components/cell/GridActionsCellItem.js +4 -0
  259. package/node/components/cell/GridBooleanCell.js +3 -2
  260. package/node/components/cell/GridCell.js +12 -4
  261. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  262. package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  263. package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  264. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  265. package/node/components/containers/GridRoot.js +2 -2
  266. package/node/components/containers/GridRootStyles.js +12 -20
  267. package/node/components/panel/filterPanel/GridFilterInputBoolean.js +1 -1
  268. package/node/components/panel/filterPanel/GridFilterInputDate.js +1 -1
  269. package/node/components/panel/filterPanel/GridFilterInputSingleSelect.js +1 -1
  270. package/node/components/panel/filterPanel/GridFilterInputValue.js +1 -1
  271. package/node/components/toolbar/GridToolbarDensitySelector.js +4 -4
  272. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  273. package/node/components/virtualization/GridVirtualScroller.js +6 -1
  274. package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  275. package/node/constants/gridClasses.js +1 -1
  276. package/node/hooks/features/clipboard/useGridClipboard.js +4 -2
  277. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
  278. package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
  279. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  280. package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
  281. package/node/hooks/features/columnResize/index.js +38 -0
  282. package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
  283. package/node/hooks/features/columns/gridColumnsUtils.js +4 -21
  284. package/node/hooks/features/density/densitySelector.js +9 -3
  285. package/node/hooks/features/density/useGridDensity.js +22 -30
  286. package/node/hooks/features/dimensions/useGridDimensions.js +4 -5
  287. package/node/hooks/features/editing/useGridCellEditing.js +22 -3
  288. package/node/hooks/features/editing/useGridRowEditing.js +1 -1
  289. package/node/hooks/features/export/serializers/csvSerializer.js +23 -12
  290. package/node/hooks/features/export/useGridCsvExport.js +2 -1
  291. package/node/hooks/features/export/useGridPrintExport.js +8 -7
  292. package/node/hooks/features/filter/gridFilterUtils.js +1 -1
  293. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
  294. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  295. package/node/hooks/features/index.js +11 -0
  296. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  297. package/node/hooks/features/pagination/useGridPagination.js +9 -153
  298. package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
  299. package/node/hooks/features/pagination/useGridRowCount.js +103 -0
  300. package/node/hooks/features/rowSelection/useGridRowSelection.js +2 -1
  301. package/node/hooks/features/scroll/useGridScroll.js +1 -1
  302. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  303. package/node/hooks/features/virtualization/useGridVirtualScroller.js +211 -57
  304. package/node/hooks/utils/useLazyRef.js +7 -13
  305. package/node/hooks/utils/useOnMount.js +8 -10
  306. package/node/hooks/utils/useTimeout.js +7 -37
  307. package/node/index.js +1 -1
  308. package/node/internals/index.js +27 -8
  309. package/node/internals/utils/getPinnedCellOffset.js +24 -0
  310. package/node/joy/joySlots.js +11 -50
  311. package/node/locales/jaJP.js +3 -4
  312. package/node/material/index.js +0 -2
  313. package/node/models/api/index.js +0 -11
  314. package/node/utils/cellBorderUtils.js +16 -0
  315. package/node/utils/createSelector.js +1 -1
  316. package/node/utils/domUtils.js +155 -0
  317. package/node/utils/keyboardUtils.js +1 -1
  318. package/package.json +4 -4
  319. package/utils/cellBorderUtils.d.ts +3 -0
  320. package/utils/cellBorderUtils.js +8 -0
  321. package/utils/createSelector.js +9 -9
  322. package/utils/domUtils.d.ts +14 -1
  323. package/utils/domUtils.js +144 -0
  324. package/utils/getGridLocalization.js +9 -12
  325. package/utils/keyboardUtils.js +1 -1
  326. package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
  327. package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  328. package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  329. package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
@@ -30,7 +30,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
30
30
  const tooltipProps = slotProps.tooltip || {};
31
31
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
32
32
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
33
- const densityValue = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityValueSelector);
33
+ const density = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensitySelector);
34
34
  const densityButtonId = (0, _utils.unstable_useId)();
35
35
  const densityMenuId = (0, _utils.unstable_useId)();
36
36
  const [open, setOpen] = React.useState(false);
@@ -50,7 +50,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
50
50
  value: 'comfortable'
51
51
  }];
52
52
  const startIcon = React.useMemo(() => {
53
- switch (densityValue) {
53
+ switch (density) {
54
54
  case 'compact':
55
55
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.densityCompactIcon, {});
56
56
  case 'comfortable':
@@ -58,7 +58,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
58
58
  default:
59
59
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.densityStandardIcon, {});
60
60
  }
61
- }, [densityValue, rootProps]);
61
+ }, [density, rootProps]);
62
62
  const handleDensitySelectorOpen = event => {
63
63
  setOpen(prevOpen => !prevOpen);
64
64
  buttonProps.onClick?.(event);
@@ -85,7 +85,7 @@ const GridToolbarDensitySelector = exports.GridToolbarDensitySelector = /*#__PUR
85
85
  }
86
86
  const densityElements = densityOptions.map((option, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_MenuItem.default, {
87
87
  onClick: () => handleDensityUpdate(option.value),
88
- selected: option.value === densityValue,
88
+ selected: option.value === density,
89
89
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ListItemIcon.default, {
90
90
  children: option.icon
91
91
  }), option.label]
@@ -43,6 +43,8 @@ const ScrollbarVertical = (0, _system.styled)(Scrollbar)({
43
43
  height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
44
44
  overflowY: 'auto',
45
45
  overflowX: 'hidden',
46
+ // Disable focus-visible style, it's a scrollbar.
47
+ outline: 0,
46
48
  '& > div': {
47
49
  width: 'var(--size)'
48
50
  },
@@ -54,6 +56,8 @@ const ScrollbarHorizontal = (0, _system.styled)(Scrollbar)({
54
56
  height: 'var(--size)',
55
57
  overflowY: 'hidden',
56
58
  overflowX: 'auto',
59
+ // Disable focus-visible style, it's a scrollbar.
60
+ outline: 0,
57
61
  '& > div': {
58
62
  height: 'var(--size)'
59
63
  },
@@ -9,6 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _system = require("@mui/system");
11
11
  var _utils = require("@mui/utils");
12
+ var _GridScrollArea = require("../GridScrollArea");
12
13
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
13
14
  var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
14
15
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
@@ -74,7 +75,11 @@ function GridVirtualScroller(props) {
74
75
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridMainContainer.GridMainContainer, (0, _extends2.default)({
75
76
  className: classes.root
76
77
  }, getContainerProps(), {
77
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Scroller, (0, _extends2.default)({
78
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollArea.GridScrollArea, {
79
+ scrollDirection: "left"
80
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollArea.GridScrollArea, {
81
+ scrollDirection: "right"
82
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(Scroller, (0, _extends2.default)({
78
83
  className: classes.scroller
79
84
  }, getScrollerProps(), {
80
85
  ownerState: rootProps,
@@ -45,6 +45,7 @@ function GridVirtualScrollerFiller() {
45
45
  viewportOuterSize,
46
46
  minimumSize,
47
47
  hasScrollX,
48
+ hasScrollY,
48
49
  scrollbarSize,
49
50
  leftPinnedWidth,
50
51
  rightPinnedWidth
@@ -69,7 +70,7 @@ function GridVirtualScrollerFiller() {
69
70
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Main, {}), rightPinnedWidth > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(PinnedRight, {
70
71
  className: _constants.gridClasses['filler--pinnedRight'],
71
72
  style: {
72
- width: rightPinnedWidth
73
+ width: rightPinnedWidth + (hasScrollY ? scrollbarSize : 0)
73
74
  }
74
75
  })]
75
76
  });
@@ -9,4 +9,4 @@ var _utils = require("@mui/utils");
9
9
  function getDataGridUtilityClass(slot) {
10
10
  return (0, _utils.unstable_generateUtilityClass)('MuiDataGrid', slot);
11
11
  }
12
- const gridClasses = exports.gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', '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', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', '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']);
12
+ const gridClasses = exports.gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', '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', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
@@ -75,7 +75,8 @@ const useGridClipboard = (apiRef, props) => {
75
75
  textToCopy = apiRef.current.getDataAsCsv({
76
76
  includeHeaders: false,
77
77
  // TODO: make it configurable
78
- delimiter: clipboardCopyCellDelimiter
78
+ delimiter: clipboardCopyCellDelimiter,
79
+ shouldAppendQuotes: false
79
80
  });
80
81
  } else {
81
82
  const focusedCell = (0, _gridFocusStateSelector.gridFocusCellSelector)(apiRef);
@@ -83,7 +84,8 @@ const useGridClipboard = (apiRef, props) => {
83
84
  const cellParams = apiRef.current.getCellParams(focusedCell.id, focusedCell.field);
84
85
  textToCopy = (0, _csvSerializer.serializeCellValue)(cellParams, {
85
86
  delimiterCharacter: clipboardCopyCellDelimiter,
86
- ignoreValueFormatter
87
+ ignoreValueFormatter,
88
+ shouldAppendQuotes: false
87
89
  });
88
90
  }
89
91
  }
@@ -7,9 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useGridColumnHeaders = exports.GridColumnHeaderRow = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var _utils = require("@mui/utils");
11
10
  var _styles = require("@mui/material/styles");
12
- var _utils2 = require("../../utils");
11
+ var _utils = require("../../utils");
13
12
  var _useGridRootProps = require("../../utils/useGridRootProps");
14
13
  var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
15
14
  var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
@@ -20,17 +19,12 @@ var _useGridVirtualScroller = require("../virtualization/useGridVirtualScroller"
20
19
  var _GridColumnGroupHeader = require("../../../components/columnHeaders/GridColumnGroupHeader");
21
20
  var _columns = require("../columns");
22
21
  var _GridScrollbarFillerCell = require("../../../components/GridScrollbarFillerCell");
22
+ var _getPinnedCellOffset = require("../../../internals/utils/getPinnedCellOffset");
23
+ var _GridColumnHeaderSeparator = require("../../../components/columnHeaders/GridColumnHeaderSeparator");
23
24
  var _gridClasses = require("../../../constants/gridClasses");
24
25
  var _jsxRuntime = require("react/jsx-runtime");
25
26
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
26
27
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
- const SpaceFiller = (0, _styles.styled)('div')({
28
- /* GridRootStyles conflict */
29
- '&&&': {
30
- padding: 0,
31
- width: 'calc(var(--DataGrid-width) - var(--DataGrid-columnsTotalWidth))'
32
- }
33
- });
34
28
  const GridColumnHeaderRow = exports.GridColumnHeaderRow = (0, _styles.styled)('div', {
35
29
  name: 'MuiDataGrid',
36
30
  slot: 'ColumnHeaderRow',
@@ -41,7 +35,6 @@ const GridColumnHeaderRow = exports.GridColumnHeaderRow = (0, _styles.styled)('d
41
35
  });
42
36
  const useGridColumnHeaders = props => {
43
37
  const {
44
- innerRef: innerRefProp,
45
38
  visibleColumns,
46
39
  sortColumnLookup,
47
40
  filterColumnLookup,
@@ -60,21 +53,31 @@ const useGridColumnHeaders = props => {
60
53
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
61
54
  const theme = (0, _styles.useTheme)();
62
55
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
63
- const hasVirtualization = (0, _utils2.useGridSelector)(apiRef, _virtualization.gridVirtualizationColumnEnabledSelector);
64
- const innerRef = React.useRef(null);
65
- const handleInnerRef = (0, _utils.unstable_useForkRef)(innerRefProp, innerRef);
66
- const dimensions = (0, _utils2.useGridSelector)(apiRef, _dimensions.gridDimensionsSelector);
67
- const columnPositions = (0, _utils2.useGridSelector)(apiRef, _columns.gridColumnPositionsSelector);
68
- const renderContext = (0, _utils2.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
69
- const pinnedColumns = (0, _utils2.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
56
+ const hasVirtualization = (0, _utils.useGridSelector)(apiRef, _virtualization.gridVirtualizationColumnEnabledSelector);
57
+ const dimensions = (0, _utils.useGridSelector)(apiRef, _dimensions.gridDimensionsSelector);
58
+ const columnPositions = (0, _utils.useGridSelector)(apiRef, _columns.gridColumnPositionsSelector);
59
+ const renderContext = (0, _utils.useGridSelector)(apiRef, _virtualization.gridRenderContextColumnsSelector);
60
+ const pinnedColumns = (0, _utils.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
70
61
  const offsetLeft = (0, _useGridVirtualScroller.computeOffsetLeft)(columnPositions, renderContext, theme.direction, pinnedColumns.left.length);
71
62
  React.useEffect(() => {
72
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
63
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
73
64
  }, [apiRef]);
74
65
  const handleColumnResizeStart = React.useCallback(params => setResizeCol(params.field), []);
75
66
  const handleColumnResizeStop = React.useCallback(() => setResizeCol(''), []);
76
67
  const handleColumnReorderStart = React.useCallback(params => setDragCol(params.field), []);
77
68
  const handleColumnReorderStop = React.useCallback(() => setDragCol(''), []);
69
+ const leftRenderContext = React.useMemo(() => {
70
+ return pinnedColumns.left.length ? {
71
+ firstColumnIndex: 0,
72
+ lastColumnIndex: pinnedColumns.left.length
73
+ } : null;
74
+ }, [pinnedColumns.left.length]);
75
+ const rightRenderContext = React.useMemo(() => {
76
+ return pinnedColumns.right.length ? {
77
+ firstColumnIndex: visibleColumns.length - pinnedColumns.right.length,
78
+ lastColumnIndex: visibleColumns.length
79
+ } : null;
80
+ }, [pinnedColumns.right.length, visibleColumns.length]);
78
81
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnResizeStart', handleColumnResizeStart);
79
82
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnResizeStop', handleColumnResizeStop);
80
83
  (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleColumnReorderStart);
@@ -107,8 +110,9 @@ const useGridColumnHeaders = props => {
107
110
  style: {
108
111
  width: leftOffsetWidth
109
112
  }
110
- }), children, isNotPinned && /*#__PURE__*/(0, _jsxRuntime.jsx)(SpaceFiller, {
111
- className: _gridClasses.gridClasses.columnHeader
113
+ }), children, isNotPinned && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
114
+ role: "presentation",
115
+ className: _gridClasses.gridClasses.filler
112
116
  }), hasScrollbarFiller && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
113
117
  header: true,
114
118
  borderTop: borderTop,
@@ -116,6 +120,27 @@ const useGridColumnHeaders = props => {
116
120
  })]
117
121
  });
118
122
  };
123
+ const getCellOffsetStyle = ({
124
+ pinnedPosition,
125
+ columnIndex,
126
+ computedWidth
127
+ }) => {
128
+ let style;
129
+ if (pinnedPosition === 'left' || pinnedPosition === 'right') {
130
+ const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(pinnedPosition, computedWidth, columnIndex, columnPositions, dimensions);
131
+ if (pinnedPosition === 'left') {
132
+ style = {
133
+ left: pinnedOffset
134
+ };
135
+ }
136
+ if (pinnedPosition === 'right') {
137
+ style = {
138
+ right: pinnedOffset
139
+ };
140
+ }
141
+ }
142
+ return style;
143
+ };
119
144
  const getColumnHeaders = (params, other = {}) => {
120
145
  const {
121
146
  renderedColumns,
@@ -129,6 +154,12 @@ const useGridColumnHeaders = props => {
129
154
  const tabIndex = columnHeaderTabIndexState !== null && columnHeaderTabIndexState.field === colDef.field || isFirstColumn && !hasOtherElementInTabSequence ? 0 : -1;
130
155
  const hasFocus = columnHeaderFocus !== null && columnHeaderFocus.field === colDef.field;
131
156
  const open = columnMenuState.open && columnMenuState.field === colDef.field;
157
+ const pinnedPosition = params?.position;
158
+ const style = getCellOffsetStyle({
159
+ pinnedPosition,
160
+ columnIndex,
161
+ computedWidth: colDef.computedWidth
162
+ });
132
163
  columns.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnHeaderItem.GridColumnHeaderItem, (0, _extends2.default)({}, sortColumnLookup[colDef.field], {
133
164
  columnMenuOpen: open,
134
165
  filterItemsCounter: filterColumnLookup[colDef.field] && filterColumnLookup[colDef.field].length,
@@ -138,118 +169,174 @@ const useGridColumnHeaders = props => {
138
169
  colIndex: columnIndex,
139
170
  isResizing: resizeCol === colDef.field,
140
171
  hasFocus: hasFocus,
141
- tabIndex: tabIndex
172
+ tabIndex: tabIndex,
173
+ pinnedPosition: pinnedPosition,
174
+ style: style,
175
+ indexInSection: i,
176
+ sectionLength: renderedColumns.length
142
177
  }, other), colDef.field));
143
178
  }
144
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridColumnHeaderRow, {
179
+ return getFillers(params, columns, 0);
180
+ };
181
+ const getColumnHeadersRow = () => {
182
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridColumnHeaderRow, {
145
183
  role: "row",
146
184
  "aria-rowindex": headerGroupingMaxDepth + 1,
147
185
  ownerState: rootProps,
148
- children: getFillers(params, columns, 0)
186
+ children: [leftRenderContext && getColumnHeaders({
187
+ position: _columns.GridPinnedColumnPosition.LEFT,
188
+ renderContext: leftRenderContext,
189
+ minFirstColumn: leftRenderContext.firstColumnIndex,
190
+ maxLastColumn: leftRenderContext.lastColumnIndex
191
+ }, {
192
+ disableReorder: true
193
+ }), getColumnHeaders({
194
+ renderContext,
195
+ minFirstColumn: pinnedColumns.left.length,
196
+ maxLastColumn: visibleColumns.length - pinnedColumns.right.length
197
+ }), rightRenderContext && getColumnHeaders({
198
+ position: _columns.GridPinnedColumnPosition.RIGHT,
199
+ renderContext: rightRenderContext,
200
+ minFirstColumn: rightRenderContext.firstColumnIndex,
201
+ maxLastColumn: rightRenderContext.lastColumnIndex
202
+ }, {
203
+ disableReorder: true,
204
+ separatorSide: _GridColumnHeaderSeparator.GridColumnHeaderSeparatorSides.Left
205
+ })]
149
206
  });
150
207
  };
151
- const getColumnGroupHeaders = params => {
152
- if (headerGroupingMaxDepth === 0) {
153
- return null;
154
- }
208
+ const getColumnGroupHeaders = ({
209
+ depth,
210
+ params
211
+ }) => {
155
212
  const columnsToRender = getColumnsToRender(params);
156
213
  if (columnsToRender.renderedColumns.length === 0) {
157
214
  return null;
158
215
  }
159
216
  const {
217
+ renderedColumns,
160
218
  firstColumnToRender,
161
219
  lastColumnToRender
162
220
  } = columnsToRender;
163
- const columns = [];
164
- const headerToRender = [];
165
- for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
166
- const rowStructure = columnGroupsHeaderStructure[depth];
167
- const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
168
- const firstGroupToRender = apiRef.current.getColumnGroupPath(firstColumnFieldToRender)[depth] ?? null;
169
- const firstGroupIndex = rowStructure.findIndex(({
170
- groupId,
171
- columnFields
172
- }) => groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender));
173
- const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
174
- const lastGroupToRender = apiRef.current.getColumnGroupPath(lastColumnFieldToRender)[depth] ?? null;
175
- const lastGroupIndex = rowStructure.findIndex(({
176
- groupId,
177
- columnFields
178
- }) => groupId === lastGroupToRender && columnFields.includes(lastColumnFieldToRender));
179
- const visibleColumnGroupHeader = rowStructure.slice(firstGroupIndex, lastGroupIndex + 1).map(groupStructure => {
180
- return (0, _extends2.default)({}, groupStructure, {
181
- columnFields: groupStructure.columnFields.filter(field => columnVisibility[field] !== false)
182
- });
183
- }).filter(groupStructure => groupStructure.columnFields.length > 0);
184
- const firstVisibleColumnIndex = visibleColumnGroupHeader[0].columnFields.indexOf(firstColumnFieldToRender);
185
- const hiddenGroupColumns = visibleColumnGroupHeader[0].columnFields.slice(0, firstVisibleColumnIndex);
186
- const leftOverflow = hiddenGroupColumns.reduce((acc, field) => {
187
- const column = apiRef.current.getColumn(field);
188
- return acc + (column.computedWidth ?? 0);
189
- }, 0);
190
- let columnIndex = firstColumnToRender;
191
- const elements = visibleColumnGroupHeader.map(({
192
- groupId,
193
- columnFields
194
- }) => {
195
- const hasFocus = columnGroupHeaderFocus !== null && columnGroupHeaderFocus.depth === depth && columnFields.includes(columnGroupHeaderFocus.field);
196
- const tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;
197
- const headerInfo = {
198
- groupId,
199
- width: columnFields.reduce((acc, field) => acc + apiRef.current.getColumn(field).computedWidth, 0),
200
- fields: columnFields,
201
- colIndex: columnIndex,
202
- hasFocus,
203
- tabIndex
204
- };
205
- columnIndex += columnFields.length;
206
- return headerInfo;
207
- });
208
- headerToRender.push({
209
- leftOverflow,
210
- elements
221
+ const rowStructure = columnGroupsHeaderStructure[depth];
222
+ const firstColumnFieldToRender = visibleColumns[firstColumnToRender].field;
223
+ const firstGroupToRender = apiRef.current.getColumnGroupPath(firstColumnFieldToRender)[depth] ?? null;
224
+ const firstGroupIndex = rowStructure.findIndex(({
225
+ groupId,
226
+ columnFields
227
+ }) => groupId === firstGroupToRender && columnFields.includes(firstColumnFieldToRender));
228
+ const lastColumnFieldToRender = visibleColumns[lastColumnToRender - 1].field;
229
+ const lastGroupToRender = apiRef.current.getColumnGroupPath(lastColumnFieldToRender)[depth] ?? null;
230
+ const lastGroupIndex = rowStructure.findIndex(({
231
+ groupId,
232
+ columnFields
233
+ }) => groupId === lastGroupToRender && columnFields.includes(lastColumnFieldToRender));
234
+ const visibleColumnGroupHeader = rowStructure.slice(firstGroupIndex, lastGroupIndex + 1).map(groupStructure => {
235
+ return (0, _extends2.default)({}, groupStructure, {
236
+ columnFields: groupStructure.columnFields.filter(field => columnVisibility[field] !== false)
211
237
  });
212
- }
213
- headerToRender.forEach((depthInfo, depthIndex) => {
214
- const children = depthInfo.elements.map(({
238
+ }).filter(groupStructure => groupStructure.columnFields.length > 0);
239
+ const firstVisibleColumnIndex = visibleColumnGroupHeader[0].columnFields.indexOf(firstColumnFieldToRender);
240
+ const hiddenGroupColumns = visibleColumnGroupHeader[0].columnFields.slice(0, firstVisibleColumnIndex);
241
+ const leftOverflow = hiddenGroupColumns.reduce((acc, field) => {
242
+ const column = apiRef.current.getColumn(field);
243
+ return acc + (column.computedWidth ?? 0);
244
+ }, 0);
245
+ let columnIndex = firstColumnToRender;
246
+ const children = visibleColumnGroupHeader.map(({
247
+ groupId,
248
+ columnFields
249
+ }, index) => {
250
+ const hasFocus = columnGroupHeaderFocus !== null && columnGroupHeaderFocus.depth === depth && columnFields.includes(columnGroupHeaderFocus.field);
251
+ const tabIndex = columnGroupHeaderTabIndexState !== null && columnGroupHeaderTabIndexState.depth === depth && columnFields.includes(columnGroupHeaderTabIndexState.field) ? 0 : -1;
252
+ const headerInfo = {
215
253
  groupId,
216
- width,
217
- fields,
218
- colIndex,
254
+ width: columnFields.reduce((acc, field) => acc + apiRef.current.getColumn(field).computedWidth, 0),
255
+ fields: columnFields,
256
+ colIndex: columnIndex,
219
257
  hasFocus,
220
258
  tabIndex
221
- }, groupIndex) => {
222
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnGroupHeader.GridColumnGroupHeader, {
223
- groupId: groupId,
224
- width: width,
225
- fields: fields,
226
- colIndex: colIndex,
227
- depth: depthIndex,
228
- isLastColumn: colIndex === visibleColumns.length - fields.length,
229
- maxDepth: headerToRender.length,
230
- height: dimensions.headerHeight,
231
- hasFocus: hasFocus,
232
- tabIndex: tabIndex
233
- }, groupIndex);
259
+ };
260
+ const pinnedPosition = params.position;
261
+ const style = getCellOffsetStyle({
262
+ pinnedPosition,
263
+ columnIndex,
264
+ computedWidth: headerInfo.width
234
265
  });
235
- columns.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(GridColumnHeaderRow, {
266
+ columnIndex += columnFields.length;
267
+ let indexInSection = index;
268
+ if (pinnedPosition === 'left') {
269
+ // Group headers can expand to multiple columns, we need to adjust the index
270
+ indexInSection = columnIndex - 1;
271
+ }
272
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridColumnGroupHeader.GridColumnGroupHeader, {
273
+ groupId: groupId,
274
+ width: headerInfo.width,
275
+ fields: headerInfo.fields,
276
+ colIndex: headerInfo.colIndex,
277
+ depth: depth,
278
+ isLastColumn: headerInfo.colIndex === visibleColumns.length - headerInfo.fields.length,
279
+ maxDepth: headerGroupingMaxDepth,
280
+ height: dimensions.headerHeight,
281
+ hasFocus: hasFocus,
282
+ tabIndex: tabIndex,
283
+ pinnedPosition: pinnedPosition,
284
+ style: style,
285
+ indexInSection: indexInSection,
286
+ sectionLength: renderedColumns.length
287
+ }, index);
288
+ });
289
+ return getFillers(params, children, leftOverflow);
290
+ };
291
+ const getColumnGroupHeadersRows = () => {
292
+ if (headerGroupingMaxDepth === 0) {
293
+ return null;
294
+ }
295
+ const headerRows = [];
296
+ for (let depth = 0; depth < headerGroupingMaxDepth; depth += 1) {
297
+ headerRows.push( /*#__PURE__*/(0, _jsxRuntime.jsxs)(GridColumnHeaderRow, {
236
298
  role: "row",
237
- "aria-rowindex": depthIndex + 1,
299
+ "aria-rowindex": depth + 1,
238
300
  ownerState: rootProps,
239
- children: getFillers(params, children, depthInfo.leftOverflow)
240
- }, depthIndex));
241
- });
242
- return columns;
301
+ children: [leftRenderContext && getColumnGroupHeaders({
302
+ depth,
303
+ params: {
304
+ position: _columns.GridPinnedColumnPosition.LEFT,
305
+ renderContext: leftRenderContext,
306
+ minFirstColumn: leftRenderContext.firstColumnIndex,
307
+ maxLastColumn: leftRenderContext.lastColumnIndex
308
+ }
309
+ }), getColumnGroupHeaders({
310
+ depth,
311
+ params: {
312
+ renderContext
313
+ }
314
+ }), rightRenderContext && getColumnGroupHeaders({
315
+ depth,
316
+ params: {
317
+ position: _columns.GridPinnedColumnPosition.RIGHT,
318
+ renderContext: rightRenderContext,
319
+ minFirstColumn: rightRenderContext.firstColumnIndex,
320
+ maxLastColumn: rightRenderContext.lastColumnIndex
321
+ }
322
+ })]
323
+ }, depth));
324
+ }
325
+ return headerRows;
243
326
  };
244
327
  return {
245
328
  renderContext,
329
+ leftRenderContext,
330
+ rightRenderContext,
331
+ pinnedColumns,
332
+ visibleColumns,
333
+ getCellOffsetStyle,
246
334
  getFillers,
247
- getColumnHeaders,
335
+ getColumnHeadersRow,
248
336
  getColumnsToRender,
249
- getColumnGroupHeaders,
337
+ getColumnGroupHeadersRows,
250
338
  isDragging: !!dragCol,
251
339
  getInnerProps: () => ({
252
- ref: handleInnerRef,
253
340
  role: 'rowgroup'
254
341
  })
255
342
  };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.gridResizingColumnFieldSelector = exports.gridColumnResizeSelector = void 0;
7
+ var _createSelector = require("../../../utils/createSelector");
8
+ const gridColumnResizeSelector = state => state.columnResize;
9
+ exports.gridColumnResizeSelector = gridColumnResizeSelector;
10
+ const gridResizingColumnFieldSelector = exports.gridResizingColumnFieldSelector = (0, _createSelector.createSelector)(gridColumnResizeSelector, columnResize => columnResize.resizingColumnField);
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_GRID_AUTOSIZE_OPTIONS = void 0;
7
+ const DEFAULT_GRID_AUTOSIZE_OPTIONS = exports.DEFAULT_GRID_AUTOSIZE_OPTIONS = {
8
+ includeHeaders: true,
9
+ includeOutliers: false,
10
+ outliersFactor: 1.5,
11
+ expand: false
12
+ };
13
+
14
+ /**
15
+ * The Resize API interface that is available in the grid `apiRef`.
16
+ */
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _columnResizeSelector = require("./columnResizeSelector");
7
+ Object.keys(_columnResizeSelector).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _columnResizeSelector[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _columnResizeSelector[key];
14
+ }
15
+ });
16
+ });
17
+ var _columnResizeState = require("./columnResizeState");
18
+ Object.keys(_columnResizeState).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _columnResizeState[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _columnResizeState[key];
25
+ }
26
+ });
27
+ });
28
+ var _gridColumnResizeApi = require("./gridColumnResizeApi");
29
+ Object.keys(_gridColumnResizeApi).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _gridColumnResizeApi[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _gridColumnResizeApi[key];
36
+ }
37
+ });
38
+ });