@mui/x-data-grid 7.0.0-beta.5 → 7.0.0-beta.7

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 (210) hide show
  1. package/CHANGELOG.md +252 -50
  2. package/DataGrid/DataGrid.js +44 -0
  3. package/DataGrid/useDataGridComponent.js +3 -0
  4. package/DataGrid/useDataGridProps.js +3 -2
  5. package/components/GridColumnHeaders.d.ts +1 -2
  6. package/components/GridColumnHeaders.js +6 -17
  7. package/components/GridHeaders.js +1 -4
  8. package/components/GridPagination.js +2 -7
  9. package/components/GridPinnedRows.d.ts +1 -2
  10. package/components/GridRow.d.ts +1 -1
  11. package/components/GridRow.js +9 -26
  12. package/components/GridScrollArea.d.ts +10 -0
  13. package/components/GridScrollArea.js +150 -0
  14. package/components/cell/GridCell.d.ts +7 -2
  15. package/components/cell/GridCell.js +14 -10
  16. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  17. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
  18. package/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  19. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
  20. package/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  21. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
  22. package/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  23. package/components/containers/GridRootStyles.js +12 -22
  24. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  25. package/components/virtualization/GridVirtualScroller.js +11 -4
  26. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  27. package/constants/gridClasses.d.ts +6 -32
  28. package/constants/gridClasses.js +1 -1
  29. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  30. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
  31. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
  32. package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -99
  33. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  34. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  35. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  36. package/hooks/features/columnResize/columnResizeState.js +1 -0
  37. package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
  38. package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  39. package/hooks/features/columnResize/index.d.ts +3 -0
  40. package/hooks/features/columnResize/index.js +3 -0
  41. package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
  42. package/hooks/features/columnResize/useGridColumnResize.js +563 -0
  43. package/hooks/features/columns/gridColumnsUtils.js +4 -1
  44. package/hooks/features/dimensions/useGridDimensions.js +5 -5
  45. package/hooks/features/editing/useGridCellEditing.js +21 -2
  46. package/hooks/features/export/useGridPrintExport.js +8 -7
  47. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
  48. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +6 -0
  49. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +30 -7
  50. package/hooks/features/index.d.ts +1 -0
  51. package/hooks/features/index.js +1 -0
  52. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
  53. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  54. package/hooks/features/pagination/gridPaginationSelector.js +8 -2
  55. package/hooks/features/pagination/useGridPagination.d.ts +1 -6
  56. package/hooks/features/pagination/useGridPagination.js +9 -157
  57. package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
  58. package/hooks/features/pagination/useGridPaginationModel.js +170 -0
  59. package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
  60. package/hooks/features/pagination/useGridRowCount.js +97 -0
  61. package/hooks/features/rows/useGridParamsApi.js +6 -10
  62. package/hooks/features/scroll/useGridScroll.js +1 -1
  63. package/hooks/features/sorting/useGridSorting.js +2 -2
  64. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
  65. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  66. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  67. package/hooks/features/virtualization/useGridVirtualScroller.js +6 -0
  68. package/hooks/utils/useLazyRef.d.ts +1 -2
  69. package/hooks/utils/useLazyRef.js +1 -11
  70. package/hooks/utils/useOnMount.d.ts +1 -2
  71. package/hooks/utils/useOnMount.js +1 -7
  72. package/hooks/utils/useTimeout.d.ts +1 -11
  73. package/hooks/utils/useTimeout.js +1 -36
  74. package/index.js +1 -1
  75. package/internals/index.d.ts +2 -2
  76. package/internals/index.js +2 -2
  77. package/internals/utils/getPinnedCellOffset.d.ts +3 -0
  78. package/internals/utils/getPinnedCellOffset.js +17 -0
  79. package/joy/joySlots.js +13 -52
  80. package/locales/jaJP.js +3 -4
  81. package/material/index.js +0 -2
  82. package/models/api/gridApiCommon.d.ts +2 -1
  83. package/models/api/gridCoreApi.d.ts +1 -5
  84. package/models/api/gridInfiniteLoaderApi.d.ts +6 -0
  85. package/models/api/gridInfiniteLoaderApi.js +1 -0
  86. package/models/events/gridEventLookup.d.ts +6 -0
  87. package/models/gridHeaderFilteringModel.d.ts +1 -0
  88. package/models/gridSlotsComponent.d.ts +0 -5
  89. package/models/gridStateCommunity.d.ts +2 -0
  90. package/models/params/gridScrollParams.d.ts +5 -3
  91. package/models/props/DataGridProps.d.ts +35 -1
  92. package/modern/DataGrid/DataGrid.js +44 -0
  93. package/modern/DataGrid/useDataGridComponent.js +3 -0
  94. package/modern/DataGrid/useDataGridProps.js +3 -2
  95. package/modern/components/GridColumnHeaders.js +6 -17
  96. package/modern/components/GridHeaders.js +1 -4
  97. package/modern/components/GridPagination.js +2 -4
  98. package/modern/components/GridRow.js +9 -26
  99. package/modern/components/GridScrollArea.js +150 -0
  100. package/modern/components/cell/GridCell.js +14 -10
  101. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  102. package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  103. package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  104. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  105. package/modern/components/containers/GridRootStyles.js +12 -22
  106. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  107. package/modern/components/virtualization/GridVirtualScroller.js +11 -4
  108. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  109. package/modern/constants/gridClasses.js +1 -1
  110. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
  111. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
  112. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  113. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  114. package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  115. package/modern/hooks/features/columnResize/index.js +3 -0
  116. package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
  117. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -1
  118. package/modern/hooks/features/dimensions/useGridDimensions.js +5 -5
  119. package/modern/hooks/features/editing/useGridCellEditing.js +21 -2
  120. package/modern/hooks/features/export/useGridPrintExport.js +8 -7
  121. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  122. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  123. package/modern/hooks/features/index.js +1 -0
  124. package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
  125. package/modern/hooks/features/pagination/useGridPagination.js +8 -149
  126. package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
  127. package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
  128. package/modern/hooks/features/rows/useGridParamsApi.js +6 -10
  129. package/modern/hooks/features/scroll/useGridScroll.js +1 -1
  130. package/modern/hooks/features/sorting/useGridSorting.js +2 -2
  131. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  132. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +5 -0
  133. package/modern/hooks/utils/useLazyRef.js +1 -11
  134. package/modern/hooks/utils/useOnMount.js +1 -7
  135. package/modern/hooks/utils/useTimeout.js +1 -36
  136. package/modern/index.js +1 -1
  137. package/modern/internals/index.js +2 -2
  138. package/modern/internals/utils/getPinnedCellOffset.js +17 -0
  139. package/modern/joy/joySlots.js +11 -50
  140. package/modern/locales/jaJP.js +3 -4
  141. package/modern/material/index.js +0 -2
  142. package/modern/models/api/gridInfiniteLoaderApi.js +1 -0
  143. package/modern/utils/cellBorderUtils.js +8 -0
  144. package/modern/utils/createSelector.js +12 -20
  145. package/modern/utils/domUtils.js +144 -0
  146. package/node/DataGrid/DataGrid.js +44 -0
  147. package/node/DataGrid/useDataGridComponent.js +3 -0
  148. package/node/DataGrid/useDataGridProps.js +3 -2
  149. package/node/components/GridColumnHeaders.js +6 -16
  150. package/node/components/GridHeaders.js +1 -4
  151. package/node/components/GridPagination.js +1 -3
  152. package/node/components/GridRow.js +8 -25
  153. package/node/components/GridScrollArea.js +158 -0
  154. package/node/components/cell/GridCell.js +15 -11
  155. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  156. package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  157. package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  158. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  159. package/node/components/containers/GridRootStyles.js +12 -22
  160. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  161. package/node/components/virtualization/GridVirtualScroller.js +11 -4
  162. package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  163. package/node/constants/gridClasses.js +1 -1
  164. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
  165. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
  166. package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
  167. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  168. package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
  169. package/node/hooks/features/columnResize/index.js +38 -0
  170. package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
  171. package/node/hooks/features/columns/gridColumnsUtils.js +4 -1
  172. package/node/hooks/features/dimensions/useGridDimensions.js +5 -5
  173. package/node/hooks/features/editing/useGridCellEditing.js +21 -2
  174. package/node/hooks/features/export/useGridPrintExport.js +8 -7
  175. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
  176. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  177. package/node/hooks/features/index.js +11 -0
  178. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  179. package/node/hooks/features/pagination/useGridPagination.js +9 -153
  180. package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
  181. package/node/hooks/features/pagination/useGridRowCount.js +103 -0
  182. package/node/hooks/features/rows/useGridParamsApi.js +6 -10
  183. package/node/hooks/features/scroll/useGridScroll.js +1 -1
  184. package/node/hooks/features/sorting/useGridSorting.js +2 -2
  185. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  186. package/node/hooks/features/virtualization/useGridVirtualScroller.js +5 -0
  187. package/node/hooks/utils/useLazyRef.js +7 -13
  188. package/node/hooks/utils/useOnMount.js +8 -10
  189. package/node/hooks/utils/useTimeout.js +7 -37
  190. package/node/index.js +1 -1
  191. package/node/internals/index.js +15 -15
  192. package/node/internals/utils/getPinnedCellOffset.js +24 -0
  193. package/node/joy/joySlots.js +11 -50
  194. package/node/locales/jaJP.js +3 -4
  195. package/node/material/index.js +0 -2
  196. package/node/models/api/gridInfiniteLoaderApi.js +5 -0
  197. package/node/utils/cellBorderUtils.js +16 -0
  198. package/node/utils/createSelector.js +14 -23
  199. package/node/utils/domUtils.js +155 -0
  200. package/package.json +2 -2
  201. package/utils/cellBorderUtils.d.ts +3 -0
  202. package/utils/cellBorderUtils.js +8 -0
  203. package/utils/createSelector.d.ts +0 -1
  204. package/utils/createSelector.js +12 -22
  205. package/utils/domUtils.d.ts +14 -1
  206. package/utils/domUtils.js +147 -0
  207. package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
  208. package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  209. package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  210. package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
@@ -67,6 +67,21 @@ DataGridRaw.propTypes = {
67
67
  * @default false
68
68
  */
69
69
  autoPageSize: PropTypes.bool,
70
+ /**
71
+ * If `true`, columns are autosized after the datagrid is mounted.
72
+ * @default false
73
+ */
74
+ autosizeOnMount: PropTypes.bool,
75
+ /**
76
+ * The options for autosize when user-initiated.
77
+ */
78
+ autosizeOptions: PropTypes.shape({
79
+ columns: PropTypes.arrayOf(PropTypes.string),
80
+ expand: PropTypes.bool,
81
+ includeHeaders: PropTypes.bool,
82
+ includeOutliers: PropTypes.bool,
83
+ outliersFactor: PropTypes.number
84
+ }),
70
85
  /**
71
86
  * Controls the modes of the cells.
72
87
  */
@@ -115,6 +130,11 @@ DataGridRaw.propTypes = {
115
130
  * @default "standard"
116
131
  */
117
132
  density: PropTypes.oneOf(['comfortable', 'compact', 'standard']),
133
+ /**
134
+ * If `true`, column autosizing on header separator double-click is disabled.
135
+ * @default false
136
+ */
137
+ disableAutosize: PropTypes.bool,
118
138
  /**
119
139
  * If `true`, column filters are disabled.
120
140
  * @default false
@@ -125,6 +145,11 @@ DataGridRaw.propTypes = {
125
145
  * @default false
126
146
  */
127
147
  disableColumnMenu: PropTypes.bool,
148
+ /**
149
+ * If `true`, resizing columns is disabled.
150
+ * @default false
151
+ */
152
+ disableColumnResize: PropTypes.bool,
128
153
  /**
129
154
  * If `true`, hiding/showing columns is disabled.
130
155
  * @default false
@@ -422,12 +447,26 @@ DataGridRaw.propTypes = {
422
447
  * @param {GridCallbackDetails} details Additional details for this callback.
423
448
  */
424
449
  onColumnOrderChange: PropTypes.func,
450
+ /**
451
+ * Callback fired while a column is being resized.
452
+ * @param {GridColumnResizeParams} params With all properties from [[GridColumnResizeParams]].
453
+ * @param {MuiEvent<React.MouseEvent>} event The event object.
454
+ * @param {GridCallbackDetails} details Additional details for this callback.
455
+ */
456
+ onColumnResize: PropTypes.func,
425
457
  /**
426
458
  * Callback fired when the column visibility model changes.
427
459
  * @param {GridColumnVisibilityModel} model The new model.
428
460
  * @param {GridCallbackDetails} details Additional details for this callback.
429
461
  */
430
462
  onColumnVisibilityModelChange: PropTypes.func,
463
+ /**
464
+ * Callback fired when the width of a column is changed.
465
+ * @param {GridColumnResizeParams} params With all properties from [[GridColumnResizeParams]].
466
+ * @param {MuiEvent<React.MouseEvent>} event The event object.
467
+ * @param {GridCallbackDetails} details Additional details for this callback.
468
+ */
469
+ onColumnWidthChange: PropTypes.func,
431
470
  /**
432
471
  * Callback fired when the Filter model changes before the filters are applied.
433
472
  * @param {GridFilterModel} model With all properties from [[GridFilterModel]].
@@ -488,6 +527,11 @@ DataGridRaw.propTypes = {
488
527
  * @param {GridCallbackDetails} details Additional details for this callback.
489
528
  */
490
529
  onRowClick: PropTypes.func,
530
+ /**
531
+ * Callback fired when the row count has changed.
532
+ * @param {number} count Updated row count.
533
+ */
534
+ onRowCountChange: PropTypes.func,
491
535
  /**
492
536
  * Callback fired when a double click event comes from a row container element.
493
537
  * @param {GridRowParams} params With all properties from [[RowParams]].
@@ -26,6 +26,7 @@ import { useGridStatePersistence } from '../hooks/features/statePersistence/useG
26
26
  import { useGridColumnSpanning } from '../hooks/features/columns/useGridColumnSpanning';
27
27
  import { useGridColumnGrouping, columnGroupsStateInitializer } from '../hooks/features/columnGrouping/useGridColumnGrouping';
28
28
  import { useGridVirtualization, virtualizationStateInitializer } from '../hooks/features/virtualization';
29
+ import { columnResizeStateInitializer, useGridColumnResize } from '../hooks/features/columnResize/useGridColumnResize';
29
30
  export const useDataGridComponent = (inputApiRef, props) => {
30
31
  const apiRef = useGridInitialization(inputApiRef, props);
31
32
 
@@ -48,6 +49,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
48
49
  useGridInitializeState(preferencePanelStateInitializer, apiRef, props);
49
50
  useGridInitializeState(filterStateInitializer, apiRef, props);
50
51
  useGridInitializeState(densityStateInitializer, apiRef, props);
52
+ useGridInitializeState(columnResizeStateInitializer, apiRef, props);
51
53
  useGridInitializeState(paginationStateInitializer, apiRef, props);
52
54
  useGridInitializeState(rowsMetaStateInitializer, apiRef, props);
53
55
  useGridInitializeState(columnMenuStateInitializer, apiRef, props);
@@ -66,6 +68,7 @@ export const useDataGridComponent = (inputApiRef, props) => {
66
68
  useGridFilter(apiRef, props);
67
69
  useGridSorting(apiRef, props);
68
70
  useGridDensity(apiRef, props);
71
+ useGridColumnResize(apiRef, props);
69
72
  useGridPagination(apiRef, props);
70
73
  useGridRowsMeta(apiRef, props);
71
74
  useGridScroll(apiRef, props);
@@ -13,7 +13,6 @@ const DATA_GRID_FORCED_PROPS = {
13
13
  pagination: true,
14
14
  checkboxSelectionVisibleOnly: false,
15
15
  disableColumnReorder: true,
16
- disableColumnResize: true,
17
16
  keepColumnPositionIfDraggedOutside: false,
18
17
  signature: 'DataGrid'
19
18
  };
@@ -70,7 +69,9 @@ export const DATA_GRID_PROPS_DEFAULT_VALUES = {
70
69
  keepColumnPositionIfDraggedOutside: false,
71
70
  ignoreValueFormatterDuringExport: false,
72
71
  clipboardCopyCellDelimiter: '\t',
73
- rowPositionsDebounceMs: 166
72
+ rowPositionsDebounceMs: 166,
73
+ autosizeOnMount: false,
74
+ disableAutosize: false
74
75
  };
75
76
  const defaultSlots = DATA_GRID_DEFAULT_SLOTS_COMPONENTS;
76
77
  export const useDataGridProps = inProps => {
@@ -1,8 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { UseGridColumnHeadersProps } from '../hooks/features/columnHeaders/useGridColumnHeaders';
3
- export interface GridColumnHeadersProps extends React.HTMLAttributes<HTMLDivElement>, Omit<UseGridColumnHeadersProps, 'innerRef'> {
3
+ export interface GridColumnHeadersProps extends React.HTMLAttributes<HTMLDivElement>, UseGridColumnHeadersProps {
4
4
  ref?: React.Ref<HTMLDivElement>;
5
- innerRef?: React.Ref<HTMLDivElement>;
6
5
  }
7
6
  declare const MemoizedGridColumnHeaders: React.ForwardRefExoticComponent<Omit<GridColumnHeadersProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
7
  export { MemoizedGridColumnHeaders as GridColumnHeaders };
@@ -1,18 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["innerRef", "className", "visibleColumns", "sortColumnLookup", "filterColumnLookup", "columnHeaderTabIndexState", "columnGroupHeaderTabIndexState", "columnHeaderFocus", "columnGroupHeaderFocus", "headerGroupingMaxDepth", "columnMenuState", "columnVisibility", "columnGroupsHeaderStructure", "hasOtherElementInTabSequence"];
3
+ const _excluded = ["className", "visibleColumns", "sortColumnLookup", "filterColumnLookup", "columnHeaderTabIndexState", "columnGroupHeaderTabIndexState", "columnHeaderFocus", "columnGroupHeaderFocus", "headerGroupingMaxDepth", "columnMenuState", "columnVisibility", "columnGroupsHeaderStructure", "hasOtherElementInTabSequence"];
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import { refType } from '@mui/utils';
7
6
  import { fastMemo } from '../utils/fastMemo';
8
7
  import { useGridColumnHeaders } from '../hooks/features/columnHeaders/useGridColumnHeaders';
9
8
  import { GridBaseColumnHeaders } from './columnHeaders/GridBaseColumnHeaders';
10
- import { GridColumnHeadersInner } from './columnHeaders/GridColumnHeadersInner';
11
9
  import { jsxs as _jsxs } from "react/jsx-runtime";
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
10
  const GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeaders(props, ref) {
14
11
  const {
15
- innerRef,
16
12
  visibleColumns,
17
13
  sortColumnLookup,
18
14
  filterColumnLookup,
@@ -28,12 +24,10 @@ const GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeade
28
24
  } = props,
29
25
  other = _objectWithoutPropertiesLoose(props, _excluded);
30
26
  const {
31
- isDragging,
32
27
  getInnerProps,
33
- getColumnHeaders,
34
- getColumnGroupHeaders
28
+ getColumnHeadersRow,
29
+ getColumnGroupHeadersRows
35
30
  } = useGridColumnHeaders({
36
- innerRef,
37
31
  visibleColumns,
38
32
  sortColumnLookup,
39
33
  filterColumnLookup,
@@ -47,14 +41,10 @@ const GridColumnHeaders = /*#__PURE__*/React.forwardRef(function GridColumnHeade
47
41
  columnGroupsHeaderStructure,
48
42
  hasOtherElementInTabSequence
49
43
  });
50
- return /*#__PURE__*/_jsx(GridBaseColumnHeaders, _extends({
44
+ return /*#__PURE__*/_jsxs(GridBaseColumnHeaders, _extends({
51
45
  ref: ref
52
- }, other, {
53
- children: /*#__PURE__*/_jsxs(GridColumnHeadersInner, _extends({
54
- isDragging: isDragging
55
- }, getInnerProps(), {
56
- children: [getColumnGroupHeaders(), getColumnHeaders()]
57
- }))
46
+ }, other, getInnerProps(), {
47
+ children: [getColumnGroupHeadersRows(), getColumnHeadersRow()]
58
48
  }));
59
49
  });
60
50
  process.env.NODE_ENV !== "production" ? GridColumnHeaders.propTypes = {
@@ -88,7 +78,6 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaders.propTypes = {
88
78
  filterColumnLookup: PropTypes.object.isRequired,
89
79
  hasOtherElementInTabSequence: PropTypes.bool.isRequired,
90
80
  headerGroupingMaxDepth: PropTypes.number.isRequired,
91
- innerRef: refType,
92
81
  sortColumnLookup: PropTypes.object.isRequired,
93
82
  visibleColumns: PropTypes.arrayOf(PropTypes.object).isRequired
94
83
  } : void 0;
@@ -26,15 +26,12 @@ function GridHeaders() {
26
26
  const columnVisibility = useGridSelector(apiRef, gridColumnVisibilityModelSelector);
27
27
  const columnGroupsHeaderStructure = useGridSelector(apiRef, gridColumnGroupsHeaderStructureSelector);
28
28
  const hasOtherElementInTabSequence = !(columnGroupHeaderTabIndexState === null && columnHeaderTabIndexState === null && cellTabIndexState === null);
29
- const columnHeadersRef = React.useRef(null);
30
29
  const columnsContainerRef = React.useRef(null);
31
30
  apiRef.current.register('private', {
32
- columnHeadersContainerElementRef: columnsContainerRef,
33
- columnHeadersElementRef: columnHeadersRef
31
+ columnHeadersContainerRef: columnsContainerRef
34
32
  });
35
33
  return /*#__PURE__*/_jsx(rootProps.slots.columnHeaders, {
36
34
  ref: columnsContainerRef,
37
- innerRef: columnHeadersRef,
38
35
  visibleColumns: visibleColumns,
39
36
  filterColumnLookup: filterColumnLookup,
40
37
  sortColumnLookup: sortColumnLookup,
@@ -5,8 +5,7 @@ import { styled } from '@mui/material/styles';
5
5
  import { useGridSelector } from '../hooks/utils/useGridSelector';
6
6
  import { useGridApiContext } from '../hooks/utils/useGridApiContext';
7
7
  import { useGridRootProps } from '../hooks/utils/useGridRootProps';
8
- import { gridFilteredTopLevelRowCountSelector } from '../hooks/features/filter';
9
- import { gridPaginationModelSelector } from '../hooks/features/pagination/gridPaginationSelector';
8
+ import { gridPaginationModelSelector, gridPaginationRowCountSelector } from '../hooks/features/pagination/gridPaginationSelector';
10
9
  import { jsx as _jsx } from "react/jsx-runtime";
11
10
  const GridPaginationRoot = styled(TablePagination)(({
12
11
  theme
@@ -31,11 +30,7 @@ export const GridPagination = /*#__PURE__*/React.forwardRef(function GridPaginat
31
30
  const apiRef = useGridApiContext();
32
31
  const rootProps = useGridRootProps();
33
32
  const paginationModel = useGridSelector(apiRef, gridPaginationModelSelector);
34
- const visibleTopLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);
35
- const rowCount = React.useMemo(() => {
36
- var _ref, _rootProps$rowCount;
37
- return (_ref = (_rootProps$rowCount = rootProps.rowCount) != null ? _rootProps$rowCount : visibleTopLevelRowCount) != null ? _ref : 0;
38
- }, [rootProps.rowCount, visibleTopLevelRowCount]);
33
+ const rowCount = useGridSelector(apiRef, gridPaginationRowCountSelector);
39
34
  const lastPage = React.useMemo(() => {
40
35
  const calculatedValue = Math.ceil(rowCount / (paginationModel.pageSize || 1)) - 1;
41
36
  return Math.max(0, calculatedValue);
@@ -1,6 +1,5 @@
1
- import * as React from 'react';
2
1
  import type { VirtualScroller } from '../hooks/features/virtualization/useGridVirtualScroller';
3
- export interface GridPinnedRowsProps extends React.HTMLAttributes<HTMLDivElement> {
2
+ export interface GridPinnedRowsProps {
4
3
  position: 'top' | 'bottom';
5
4
  virtualScroller: VirtualScroller;
6
5
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { GridRowId, GridRowModel } from '../models/gridRows';
3
- import type { GridPinnedColumns } from '../hooks/features/columns';
3
+ import { GridPinnedColumns } from '../hooks/features/columns';
4
4
  import type { GridStateColDef } from '../models/colDef/gridColDef';
5
5
  import type { GridRenderContext } from '../models/params/gridScrollParams';
6
6
  import type { GridDimensions } from '../hooks/features/dimensions';
@@ -21,8 +21,9 @@ import { gridSortModelSelector } from '../hooks/features/sorting/gridSortingSele
21
21
  import { gridRowMaximumTreeDepthSelector } from '../hooks/features/rows/gridRowsSelector';
22
22
  import { gridColumnGroupsHeaderMaxDepthSelector } from '../hooks/features/columnGrouping/gridColumnGroupsSelector';
23
23
  import { gridEditRowsStateSelector } from '../hooks/features/editing/gridEditingSelectors';
24
- import { PinnedPosition } from './cell/GridCell';
24
+ import { PinnedPosition, gridPinnedColumnPositionLookup } from './cell/GridCell';
25
25
  import { GridScrollbarFillerCell as ScrollbarFiller } from './GridScrollbarFillerCell';
26
+ import { getPinnedCellOffset } from '../internals/utils/getPinnedCellOffset';
26
27
  import { jsx as _jsx } from "react/jsx-runtime";
27
28
  import { jsxs as _jsxs } from "react/jsx-runtime";
28
29
  const useUtilityClasses = ownerState => {
@@ -216,7 +217,8 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
216
217
  const rowStyle = _extends({}, styleProp, {
217
218
  maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,
218
219
  // max-height doesn't support "auto"
219
- minHeight
220
+ minHeight,
221
+ '--height': typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight
220
222
  });
221
223
  if (sizes != null && sizes.spacingTop) {
222
224
  const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';
@@ -253,21 +255,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
253
255
  }
254
256
  const width = (_cellColSpanInfo$cell = cellColSpanInfo == null ? void 0 : cellColSpanInfo.cellProps.width) != null ? _cellColSpanInfo$cell : column.computedWidth;
255
257
  const colSpan = (_cellColSpanInfo$cell2 = cellColSpanInfo == null ? void 0 : cellColSpanInfo.cellProps.colSpan) != null ? _cellColSpanInfo$cell2 : 1;
256
- let pinnedOffset;
257
- // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
258
- // eslint-disable-next-line default-case
259
- switch (pinnedPosition) {
260
- case PinnedPosition.LEFT:
261
- pinnedOffset = columnPositions[indexRelativeToAllColumns];
262
- break;
263
- case PinnedPosition.RIGHT:
264
- pinnedOffset = dimensions.columnsTotalWidth - columnPositions[indexRelativeToAllColumns] - column.computedWidth + scrollbarWidth;
265
- break;
266
- case PinnedPosition.NONE:
267
- case PinnedPosition.VIRTUAL:
268
- pinnedOffset = 0;
269
- break;
270
- }
258
+ const pinnedOffset = getPinnedCellOffset(gridPinnedColumnPositionLookup[pinnedPosition], column.computedWidth, indexRelativeToAllColumns, columnPositions, dimensions);
271
259
  if ((rowNode == null ? void 0 : rowNode.type) === 'skeletonRow') {
272
260
  var _column$align;
273
261
  return /*#__PURE__*/_jsx(slots.skeletonCell, {
@@ -291,20 +279,17 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
291
279
  column: column,
292
280
  width: width,
293
281
  rowId: rowId,
294
- height: rowHeight,
295
282
  align: column.align || 'left',
296
283
  colIndex: indexRelativeToAllColumns,
297
284
  colSpan: colSpan,
298
285
  disableDragEvents: disableDragEvents,
299
286
  editCellState: editCellState,
300
- isNotVisible: cellIsNotVisible
301
- }, slotProps == null ? void 0 : slotProps.cell, {
287
+ isNotVisible: cellIsNotVisible,
302
288
  pinnedOffset: pinnedOffset,
303
289
  pinnedPosition: pinnedPosition,
304
290
  sectionIndex: indexInSection,
305
- sectionLength: sectionLength,
306
- gridHasScrollX: dimensions.hasScrollX
307
- }), column.field);
291
+ sectionLength: sectionLength
292
+ }, slotProps == null ? void 0 : slotProps.cell), column.field);
308
293
  };
309
294
 
310
295
  /* Start of rendering */
@@ -363,9 +348,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
363
348
  width: emptyCellWidth
364
349
  }), rightCells.length > 0 && /*#__PURE__*/_jsx("div", {
365
350
  role: "presentation",
366
- style: {
367
- flex: '1'
368
- }
351
+ className: gridClasses.filler
369
352
  }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/_jsx(ScrollbarFiller, {
370
353
  pinnedRight: pinnedColumns.right.length > 0
371
354
  })]
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ interface ScrollAreaProps {
3
+ scrollDirection: 'left' | 'right';
4
+ }
5
+ declare function GridScrollAreaRaw(props: ScrollAreaProps): React.JSX.Element | null;
6
+ declare namespace GridScrollAreaRaw {
7
+ var propTypes: any;
8
+ }
9
+ declare const GridScrollArea: typeof GridScrollAreaRaw;
10
+ export { GridScrollArea };
@@ -0,0 +1,150 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import * as React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import clsx from 'clsx';
5
+ import { unstable_composeClasses as composeClasses, unstable_useEventCallback as useEventCallback } from '@mui/utils';
6
+ import { styled } from '@mui/system';
7
+ import { useGridRootProps } from '../hooks/utils/useGridRootProps';
8
+ import { getDataGridUtilityClass, gridClasses } from '../constants';
9
+ import { useGridApiContext } from '../hooks/utils/useGridApiContext';
10
+ import { useGridApiEventHandler } from '../hooks/utils/useGridApiEventHandler';
11
+ import { useGridSelector } from '../hooks/utils/useGridSelector';
12
+ import { gridDimensionsSelector } from '../hooks/features/dimensions/gridDimensionsSelectors';
13
+ import { gridDensityFactorSelector } from '../hooks/features/density/densitySelector';
14
+ import { gridColumnsTotalWidthSelector } from '../hooks/features/columns/gridColumnsSelector';
15
+ import { useTimeout } from '../hooks/utils/useTimeout';
16
+ import { getTotalHeaderHeight } from '../hooks/features/columns/gridColumnsUtils';
17
+ import { fastMemo } from '../utils/fastMemo';
18
+ import { jsx as _jsx } from "react/jsx-runtime";
19
+ const CLIFF = 1;
20
+ const SLOP = 1.5;
21
+ const useUtilityClasses = ownerState => {
22
+ const {
23
+ scrollDirection,
24
+ classes
25
+ } = ownerState;
26
+ const slots = {
27
+ root: ['scrollArea', `scrollArea--${scrollDirection}`]
28
+ };
29
+ return composeClasses(slots, getDataGridUtilityClass, classes);
30
+ };
31
+ const GridScrollAreaRawRoot = styled('div', {
32
+ name: 'MuiDataGrid',
33
+ slot: 'ScrollArea',
34
+ overridesResolver: (props, styles) => [{
35
+ [`&.${gridClasses['scrollArea--left']}`]: styles['scrollArea--left']
36
+ }, {
37
+ [`&.${gridClasses['scrollArea--right']}`]: styles['scrollArea--right']
38
+ }, styles.scrollArea]
39
+ })(() => ({
40
+ position: 'absolute',
41
+ top: 0,
42
+ zIndex: 101,
43
+ width: 20,
44
+ bottom: 0,
45
+ [`&.${gridClasses['scrollArea--left']}`]: {
46
+ left: 0
47
+ },
48
+ [`&.${gridClasses['scrollArea--right']}`]: {
49
+ right: 0
50
+ }
51
+ }));
52
+ function GridScrollAreaRaw(props) {
53
+ const {
54
+ scrollDirection
55
+ } = props;
56
+ const rootRef = React.useRef(null);
57
+ const apiRef = useGridApiContext();
58
+ const timeout = useTimeout();
59
+ const densityFactor = useGridSelector(apiRef, gridDensityFactorSelector);
60
+ const columnsTotalWidth = useGridSelector(apiRef, gridColumnsTotalWidthSelector);
61
+ const dimensions = useGridSelector(apiRef, gridDimensionsSelector);
62
+ const scrollPosition = React.useRef({
63
+ left: 0,
64
+ top: 0
65
+ });
66
+ const getCanScrollMore = () => {
67
+ if (scrollDirection === 'left') {
68
+ // Only render if the user has not reached yet the start of the list
69
+ return scrollPosition.current.left > 0;
70
+ }
71
+ if (scrollDirection === 'right') {
72
+ // Only render if the user has not reached yet the end of the list
73
+ const maxScrollLeft = columnsTotalWidth - dimensions.viewportInnerSize.width;
74
+ return scrollPosition.current.left < maxScrollLeft;
75
+ }
76
+ return false;
77
+ };
78
+ const [dragging, setDragging] = React.useState(false);
79
+ const [canScrollMore, setCanScrollMore] = React.useState(getCanScrollMore);
80
+ const rootProps = useGridRootProps();
81
+ const ownerState = _extends({}, rootProps, {
82
+ scrollDirection
83
+ });
84
+ const classes = useUtilityClasses(ownerState);
85
+ const totalHeaderHeight = getTotalHeaderHeight(apiRef, rootProps.columnHeaderHeight);
86
+ const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
87
+ const style = {
88
+ height: headerHeight,
89
+ top: totalHeaderHeight - headerHeight
90
+ };
91
+ if (scrollDirection === 'left') {
92
+ style.left = dimensions.leftPinnedWidth;
93
+ } else if (scrollDirection === 'right') {
94
+ style.right = dimensions.rightPinnedWidth + (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
95
+ }
96
+ const handleScrolling = newScrollPosition => {
97
+ scrollPosition.current = newScrollPosition;
98
+ setCanScrollMore(getCanScrollMore);
99
+ };
100
+ const handleDragOver = useEventCallback(event => {
101
+ let offset;
102
+
103
+ // Prevents showing the forbidden cursor
104
+ event.preventDefault();
105
+ if (scrollDirection === 'left') {
106
+ offset = event.clientX - rootRef.current.getBoundingClientRect().right;
107
+ } else if (scrollDirection === 'right') {
108
+ offset = Math.max(1, event.clientX - rootRef.current.getBoundingClientRect().left);
109
+ } else {
110
+ throw new Error('MUI X: Wrong drag direction');
111
+ }
112
+ offset = (offset - CLIFF) * SLOP + CLIFF;
113
+
114
+ // Avoid freeze and inertia.
115
+ timeout.start(0, () => {
116
+ apiRef.current.scroll({
117
+ left: scrollPosition.current.left + offset,
118
+ top: scrollPosition.current.top
119
+ });
120
+ });
121
+ });
122
+ const handleColumnHeaderDragStart = useEventCallback(() => {
123
+ setDragging(true);
124
+ });
125
+ const handleColumnHeaderDragEnd = useEventCallback(() => {
126
+ setDragging(false);
127
+ });
128
+ useGridApiEventHandler(apiRef, 'scrollPositionChange', handleScrolling);
129
+ useGridApiEventHandler(apiRef, 'columnHeaderDragStart', handleColumnHeaderDragStart);
130
+ useGridApiEventHandler(apiRef, 'columnHeaderDragEnd', handleColumnHeaderDragEnd);
131
+ if (!dragging || !canScrollMore) {
132
+ return null;
133
+ }
134
+ return /*#__PURE__*/_jsx(GridScrollAreaRawRoot, {
135
+ ref: rootRef,
136
+ className: clsx(classes.root),
137
+ ownerState: ownerState,
138
+ onDragOver: handleDragOver,
139
+ style: style
140
+ });
141
+ }
142
+ process.env.NODE_ENV !== "production" ? GridScrollAreaRaw.propTypes = {
143
+ // ----------------------------- Warning --------------------------------
144
+ // | These PropTypes are generated from the TypeScript type definitions |
145
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
146
+ // ----------------------------------------------------------------------
147
+ scrollDirection: PropTypes.oneOf(['left', 'right']).isRequired
148
+ } : void 0;
149
+ const GridScrollArea = fastMemo(GridScrollAreaRaw);
150
+ export { GridScrollArea };
@@ -1,19 +1,25 @@
1
1
  import * as React from 'react';
2
2
  import { GridRowId, GridEditCellProps } from '../../models';
3
3
  import { GridColDef, GridAlignment } from '../../models/colDef/gridColDef';
4
+ import { GridPinnedColumnPosition } from '../../hooks/features/columns/gridColumnsInterfaces';
4
5
  export declare enum PinnedPosition {
5
6
  NONE = 0,
6
7
  LEFT = 1,
7
8
  RIGHT = 2,
8
9
  VIRTUAL = 3
9
10
  }
11
+ export declare const gridPinnedColumnPositionLookup: {
12
+ 1: GridPinnedColumnPosition;
13
+ 2: GridPinnedColumnPosition;
14
+ 0: undefined;
15
+ 3: undefined;
16
+ };
10
17
  export type GridCellProps = {
11
18
  align: GridAlignment;
12
19
  className?: string;
13
20
  colIndex: number;
14
21
  column: GridColDef;
15
22
  rowId: GridRowId;
16
- height: number | 'auto';
17
23
  width: number;
18
24
  colSpan?: number;
19
25
  disableDragEvents?: boolean;
@@ -23,7 +29,6 @@ export type GridCellProps = {
23
29
  pinnedPosition: PinnedPosition;
24
30
  sectionIndex: number;
25
31
  sectionLength: number;
26
- gridHasScrollX: boolean;
27
32
  onClick?: React.MouseEventHandler<HTMLDivElement>;
28
33
  onDoubleClick?: React.MouseEventHandler<HTMLDivElement>;
29
34
  onMouseDown?: React.MouseEventHandler<HTMLDivElement>;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "height", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
3
+ const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
4
4
  _excluded2 = ["changeReason", "unstable_updateValueOnRender"];
5
5
  import * as React from 'react';
6
6
  import PropTypes from 'prop-types';
@@ -15,6 +15,8 @@ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
15
15
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
16
16
  import { gridFocusCellSelector } from '../../hooks/features/focus/gridFocusStateSelector';
17
17
  import { MissingRowIdError } from '../../hooks/features/rows/useGridParamsApi';
18
+ import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from '../../utils/cellBorderUtils';
19
+ import { GridPinnedColumnPosition } from '../../hooks/features/columns/gridColumnsInterfaces';
18
20
  import { jsx as _jsx } from "react/jsx-runtime";
19
21
  export let PinnedPosition = /*#__PURE__*/function (PinnedPosition) {
20
22
  PinnedPosition[PinnedPosition["NONE"] = 0] = "NONE";
@@ -23,6 +25,12 @@ export let PinnedPosition = /*#__PURE__*/function (PinnedPosition) {
23
25
  PinnedPosition[PinnedPosition["VIRTUAL"] = 3] = "VIRTUAL";
24
26
  return PinnedPosition;
25
27
  }({});
28
+ export const gridPinnedColumnPositionLookup = {
29
+ [PinnedPosition.LEFT]: GridPinnedColumnPosition.LEFT,
30
+ [PinnedPosition.RIGHT]: GridPinnedColumnPosition.RIGHT,
31
+ [PinnedPosition.NONE]: undefined,
32
+ [PinnedPosition.VIRTUAL]: undefined
33
+ };
26
34
  const EMPTY_CELL_PARAMS = {
27
35
  id: -1,
28
36
  field: '__unset__',
@@ -75,7 +83,6 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
75
83
  editCellState,
76
84
  align,
77
85
  colIndex,
78
- height,
79
86
  width,
80
87
  className,
81
88
  style: styleProp,
@@ -155,9 +162,9 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
155
162
  const focusElementRef = React.useRef(null);
156
163
  // @ts-expect-error To access `cellSelection` flag as it's a `premium` feature
157
164
  const isSelectionMode = (_rootProps$cellSelect = rootProps.cellSelection) != null ? _rootProps$cellSelect : false;
158
- const isSectionLastCell = sectionIndex === sectionLength - 1;
159
- const showLeftBorder = pinnedPosition === PinnedPosition.RIGHT && sectionIndex === 0;
160
- const showRightBorder = rootProps.showCellVerticalBorder && (pinnedPosition !== PinnedPosition.LEFT ? !isSectionLastCell : true) || pinnedPosition === PinnedPosition.LEFT && isSectionLastCell;
165
+ const position = gridPinnedColumnPositionLookup[pinnedPosition];
166
+ const showLeftBorder = shouldCellShowLeftBorder(position, sectionIndex);
167
+ const showRightBorder = shouldCellShowRightBorder(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder);
161
168
  const ownerState = {
162
169
  align,
163
170
  showLeftBorder,
@@ -204,8 +211,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
204
211
  };
205
212
  }
206
213
  const cellStyle = _extends({
207
- '--width': `${width}px`,
208
- '--height': typeof height === 'number' ? `${height}px` : height
214
+ '--width': `${width}px`
209
215
  }, styleProp);
210
216
  if (pinnedPosition === PinnedPosition.LEFT) {
211
217
  cellStyle.left = pinnedOffset;
@@ -214,7 +220,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
214
220
  cellStyle.right = pinnedOffset;
215
221
  }
216
222
  return cellStyle;
217
- }, [width, height, isNotVisible, styleProp, pinnedOffset, pinnedPosition]);
223
+ }, [width, isNotVisible, styleProp, pinnedOffset, pinnedPosition]);
218
224
  React.useEffect(() => {
219
225
  if (!hasFocus || cellMode === GridCellModes.Edit) {
220
226
  return;
@@ -324,8 +330,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
324
330
  isValidating: PropTypes.bool,
325
331
  value: PropTypes.any
326
332
  }),
327
- gridHasScrollX: PropTypes.bool.isRequired,
328
- height: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number]).isRequired,
329
333
  isNotVisible: PropTypes.bool.isRequired,
330
334
  onClick: PropTypes.func,
331
335
  onDoubleClick: PropTypes.func,
@@ -23,6 +23,7 @@ const GridColumnHeadersRoot = styled('div', {
23
23
  overridesResolver: (props, styles) => styles.columnHeaders
24
24
  })({
25
25
  display: 'flex',
26
+ flexDirection: 'column',
26
27
  borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
27
28
  borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
28
29
  });
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { GridPinnedColumnPosition } from '../../hooks/features/columns/gridColumnsInterfaces';
2
3
  interface GridColumnGroupHeaderProps {
3
4
  groupId: string | null;
4
5
  width: number;
@@ -10,6 +11,10 @@ interface GridColumnGroupHeaderProps {
10
11
  height: number;
11
12
  hasFocus?: boolean;
12
13
  tabIndex: 0 | -1;
14
+ pinnedPosition?: GridPinnedColumnPosition;
15
+ style?: React.CSSProperties;
16
+ indexInSection: number;
17
+ sectionLength: number;
13
18
  }
14
19
  declare function GridColumnGroupHeader(props: GridColumnGroupHeaderProps): React.JSX.Element;
15
20
  export { GridColumnGroupHeader };