@mui/x-data-grid 7.0.0-beta.6 → 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 (189) hide show
  1. package/CHANGELOG.md +117 -1
  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/GridRow.d.ts +1 -1
  10. package/components/GridRow.js +4 -19
  11. package/components/GridScrollArea.d.ts +10 -0
  12. package/components/GridScrollArea.js +150 -0
  13. package/components/cell/GridCell.d.ts +7 -0
  14. package/components/cell/GridCell.js +11 -3
  15. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  16. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
  17. package/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  18. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
  19. package/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  20. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
  21. package/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  22. package/components/containers/GridRootStyles.js +12 -20
  23. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  24. package/components/virtualization/GridVirtualScroller.js +6 -1
  25. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  26. package/constants/gridClasses.d.ts +6 -32
  27. package/constants/gridClasses.js +1 -1
  28. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  29. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
  30. package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -99
  31. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  32. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  33. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  34. package/hooks/features/columnResize/columnResizeState.js +1 -0
  35. package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
  36. package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  37. package/hooks/features/columnResize/index.d.ts +3 -0
  38. package/hooks/features/columnResize/index.js +3 -0
  39. package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
  40. package/hooks/features/columnResize/useGridColumnResize.js +563 -0
  41. package/hooks/features/columns/gridColumnsUtils.js +4 -1
  42. package/hooks/features/dimensions/useGridDimensions.js +4 -5
  43. package/hooks/features/editing/useGridCellEditing.js +21 -2
  44. package/hooks/features/export/useGridPrintExport.js +8 -7
  45. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
  46. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +6 -0
  47. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +30 -7
  48. package/hooks/features/index.d.ts +1 -0
  49. package/hooks/features/index.js +1 -0
  50. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
  51. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  52. package/hooks/features/pagination/gridPaginationSelector.js +8 -2
  53. package/hooks/features/pagination/useGridPagination.d.ts +1 -6
  54. package/hooks/features/pagination/useGridPagination.js +9 -157
  55. package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
  56. package/hooks/features/pagination/useGridPaginationModel.js +170 -0
  57. package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
  58. package/hooks/features/pagination/useGridRowCount.js +97 -0
  59. package/hooks/features/scroll/useGridScroll.js +1 -1
  60. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
  61. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  62. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  63. package/hooks/utils/useLazyRef.d.ts +1 -2
  64. package/hooks/utils/useLazyRef.js +1 -11
  65. package/hooks/utils/useOnMount.d.ts +1 -2
  66. package/hooks/utils/useOnMount.js +1 -7
  67. package/hooks/utils/useTimeout.d.ts +1 -11
  68. package/hooks/utils/useTimeout.js +1 -36
  69. package/index.js +1 -1
  70. package/internals/index.d.ts +1 -1
  71. package/internals/index.js +1 -1
  72. package/internals/utils/getPinnedCellOffset.d.ts +3 -0
  73. package/internals/utils/getPinnedCellOffset.js +17 -0
  74. package/joy/joySlots.js +13 -52
  75. package/locales/jaJP.js +3 -4
  76. package/material/index.js +0 -2
  77. package/models/api/gridApiCommon.d.ts +3 -3
  78. package/models/api/gridCoreApi.d.ts +1 -5
  79. package/models/events/gridEventLookup.d.ts +6 -0
  80. package/models/gridHeaderFilteringModel.d.ts +1 -0
  81. package/models/gridSlotsComponent.d.ts +0 -5
  82. package/models/gridStateCommunity.d.ts +2 -0
  83. package/models/params/gridScrollParams.d.ts +5 -3
  84. package/models/props/DataGridProps.d.ts +35 -1
  85. package/modern/DataGrid/DataGrid.js +44 -0
  86. package/modern/DataGrid/useDataGridComponent.js +3 -0
  87. package/modern/DataGrid/useDataGridProps.js +3 -2
  88. package/modern/components/GridColumnHeaders.js +6 -17
  89. package/modern/components/GridHeaders.js +1 -4
  90. package/modern/components/GridPagination.js +2 -4
  91. package/modern/components/GridRow.js +4 -19
  92. package/modern/components/GridScrollArea.js +150 -0
  93. package/modern/components/cell/GridCell.js +11 -3
  94. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  95. package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  96. package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  97. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  98. package/modern/components/containers/GridRootStyles.js +12 -20
  99. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  100. package/modern/components/virtualization/GridVirtualScroller.js +6 -1
  101. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  102. package/modern/constants/gridClasses.js +1 -1
  103. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
  104. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  105. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  106. package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  107. package/modern/hooks/features/columnResize/index.js +3 -0
  108. package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
  109. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -1
  110. package/modern/hooks/features/dimensions/useGridDimensions.js +4 -5
  111. package/modern/hooks/features/editing/useGridCellEditing.js +21 -2
  112. package/modern/hooks/features/export/useGridPrintExport.js +8 -7
  113. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  114. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  115. package/modern/hooks/features/index.js +1 -0
  116. package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
  117. package/modern/hooks/features/pagination/useGridPagination.js +8 -149
  118. package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
  119. package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
  120. package/modern/hooks/features/scroll/useGridScroll.js +1 -1
  121. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  122. package/modern/hooks/utils/useLazyRef.js +1 -11
  123. package/modern/hooks/utils/useOnMount.js +1 -7
  124. package/modern/hooks/utils/useTimeout.js +1 -36
  125. package/modern/index.js +1 -1
  126. package/modern/internals/index.js +1 -1
  127. package/modern/internals/utils/getPinnedCellOffset.js +17 -0
  128. package/modern/joy/joySlots.js +11 -50
  129. package/modern/locales/jaJP.js +3 -4
  130. package/modern/material/index.js +0 -2
  131. package/modern/utils/cellBorderUtils.js +8 -0
  132. package/modern/utils/domUtils.js +144 -0
  133. package/node/DataGrid/DataGrid.js +44 -0
  134. package/node/DataGrid/useDataGridComponent.js +3 -0
  135. package/node/DataGrid/useDataGridProps.js +3 -2
  136. package/node/components/GridColumnHeaders.js +6 -16
  137. package/node/components/GridHeaders.js +1 -4
  138. package/node/components/GridPagination.js +1 -3
  139. package/node/components/GridRow.js +3 -18
  140. package/node/components/GridScrollArea.js +158 -0
  141. package/node/components/cell/GridCell.js +12 -4
  142. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  143. package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  144. package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  145. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  146. package/node/components/containers/GridRootStyles.js +12 -20
  147. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  148. package/node/components/virtualization/GridVirtualScroller.js +6 -1
  149. package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  150. package/node/constants/gridClasses.js +1 -1
  151. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
  152. package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
  153. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  154. package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
  155. package/node/hooks/features/columnResize/index.js +38 -0
  156. package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
  157. package/node/hooks/features/columns/gridColumnsUtils.js +4 -1
  158. package/node/hooks/features/dimensions/useGridDimensions.js +4 -5
  159. package/node/hooks/features/editing/useGridCellEditing.js +21 -2
  160. package/node/hooks/features/export/useGridPrintExport.js +8 -7
  161. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
  162. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  163. package/node/hooks/features/index.js +11 -0
  164. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  165. package/node/hooks/features/pagination/useGridPagination.js +9 -153
  166. package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
  167. package/node/hooks/features/pagination/useGridRowCount.js +103 -0
  168. package/node/hooks/features/scroll/useGridScroll.js +1 -1
  169. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  170. package/node/hooks/utils/useLazyRef.js +7 -13
  171. package/node/hooks/utils/useOnMount.js +8 -10
  172. package/node/hooks/utils/useTimeout.js +7 -37
  173. package/node/index.js +1 -1
  174. package/node/internals/index.js +15 -8
  175. package/node/internals/utils/getPinnedCellOffset.js +24 -0
  176. package/node/joy/joySlots.js +11 -50
  177. package/node/locales/jaJP.js +3 -4
  178. package/node/material/index.js +0 -2
  179. package/node/utils/cellBorderUtils.js +16 -0
  180. package/node/utils/domUtils.js +155 -0
  181. package/package.json +1 -1
  182. package/utils/cellBorderUtils.d.ts +3 -0
  183. package/utils/cellBorderUtils.js +8 -0
  184. package/utils/domUtils.d.ts +14 -1
  185. package/utils/domUtils.js +147 -0
  186. package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
  187. package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  188. package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  189. package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
@@ -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 };
@@ -8,17 +8,20 @@ import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
8
8
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
9
9
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
10
10
  import { isEventTargetInPortal } from '../../utils/domUtils';
11
+ import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from '../../utils/cellBorderUtils';
11
12
  import { jsx as _jsx } from "react/jsx-runtime";
12
13
  const useUtilityClasses = ownerState => {
13
14
  const {
14
15
  classes,
15
16
  headerAlign,
16
17
  isDragging,
17
- showColumnBorder,
18
- groupId
18
+ showLeftBorder,
19
+ showRightBorder,
20
+ groupId,
21
+ pinnedPosition
19
22
  } = ownerState;
20
23
  const slots = {
21
- root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showColumnBorder && 'columnHeader--showColumnBorder', showColumnBorder && 'columnHeader--withRightBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup'],
24
+ root: ['columnHeader', headerAlign === 'left' && 'columnHeader--alignLeft', headerAlign === 'center' && 'columnHeader--alignCenter', headerAlign === 'right' && 'columnHeader--alignRight', isDragging && 'columnHeader--moving', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', 'withBorderColor', groupId === null ? 'columnHeader--emptyGroup' : 'columnHeader--filledGroup', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight'],
22
25
  draggableContainer: ['columnHeaderDraggableContainer'],
23
26
  titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'],
24
27
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -37,7 +40,11 @@ function GridColumnGroupHeader(props) {
37
40
  colIndex,
38
41
  hasFocus,
39
42
  tabIndex,
40
- isLastColumn
43
+ isLastColumn,
44
+ pinnedPosition,
45
+ style,
46
+ indexInSection,
47
+ sectionLength
41
48
  } = props;
42
49
  const rootProps = useGridRootProps();
43
50
  const headerCellRef = React.useRef(null);
@@ -64,10 +71,12 @@ function GridColumnGroupHeader(props) {
64
71
  if (groupId && render) {
65
72
  headerComponent = render(renderParams);
66
73
  }
67
- const showColumnBorder = rootProps.showColumnVerticalBorder;
74
+ const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
75
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
68
76
  const ownerState = _extends({}, props, {
69
77
  classes: rootProps.classes,
70
- showColumnBorder,
78
+ showLeftBorder,
79
+ showRightBorder,
71
80
  headerAlign,
72
81
  depth,
73
82
  isDragging: false
@@ -118,12 +127,13 @@ function GridColumnGroupHeader(props) {
118
127
  width: width,
119
128
  columnMenuIconButton: null,
120
129
  columnTitleIconButtons: null,
121
- resizable: false,
130
+ resizable: true,
122
131
  label: label,
123
132
  "aria-colspan": fields.length
124
133
  // The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
125
134
  ,
126
- "data-fields": `|-${fields.join('-|-')}-|`
135
+ "data-fields": `|-${fields.join('-|-')}-|`,
136
+ style: style
127
137
  }, mouseEventsHandlers));
128
138
  }
129
139
  export { GridColumnGroupHeader };
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { GridStateColDef } from '../../models/colDef/gridColDef';
3
3
  import { GridSortDirection } from '../../models/gridSortModel';
4
4
  import { GridColumnHeaderSeparatorProps } from './GridColumnHeaderSeparator';
5
+ import { GridPinnedColumnPosition } from '../../hooks/features/columns/gridColumnsInterfaces';
5
6
  interface GridColumnHeaderItemProps {
6
7
  colIndex: number;
7
8
  colDef: GridStateColDef;
@@ -16,6 +17,10 @@ interface GridColumnHeaderItemProps {
16
17
  tabIndex: 0 | -1;
17
18
  disableReorder?: boolean;
18
19
  separatorSide?: GridColumnHeaderSeparatorProps['side'];
20
+ pinnedPosition?: GridPinnedColumnPosition;
21
+ style?: React.CSSProperties;
22
+ indexInSection: number;
23
+ sectionLength: number;
19
24
  }
20
25
  declare function GridColumnHeaderItem(props: GridColumnHeaderItemProps): React.JSX.Element;
21
26
  declare namespace GridColumnHeaderItem {
@@ -11,6 +11,7 @@ import { getDataGridUtilityClass } from '../../constants/gridClasses';
11
11
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
12
12
  import { GridGenericColumnHeaderItem } from './GridGenericColumnHeaderItem';
13
13
  import { isEventTargetInPortal } from '../../utils/domUtils';
14
+ import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from '../../utils/cellBorderUtils';
14
15
  import { jsx as _jsx } from "react/jsx-runtime";
15
16
  import { jsxs as _jsxs } from "react/jsx-runtime";
16
17
  const useUtilityClasses = ownerState => {
@@ -20,14 +21,16 @@ const useUtilityClasses = ownerState => {
20
21
  isDragging,
21
22
  sortDirection,
22
23
  showRightBorder,
23
- filterItemsCounter
24
+ showLeftBorder,
25
+ filterItemsCounter,
26
+ pinnedPosition
24
27
  } = ownerState;
25
28
  const isColumnSorted = sortDirection != null;
26
29
  const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;
27
30
  // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work
28
31
  const isColumnNumeric = colDef.type === 'number';
29
32
  const slots = {
30
- root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder'],
33
+ root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', colDef.sortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', pinnedPosition === 'left' && 'columnHeader--pinnedLeft', pinnedPosition === 'right' && 'columnHeader--pinnedRight'],
31
34
  draggableContainer: ['columnHeaderDraggableContainer'],
32
35
  titleContainer: ['columnHeaderTitleContainer'],
33
36
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -48,7 +51,11 @@ function GridColumnHeaderItem(props) {
48
51
  hasFocus,
49
52
  tabIndex,
50
53
  disableReorder,
51
- separatorSide
54
+ separatorSide,
55
+ style,
56
+ pinnedPosition,
57
+ indexInSection,
58
+ sectionLength
52
59
  } = props;
53
60
  const apiRef = useGridPrivateApiContext();
54
61
  const rootProps = useGridRootProps();
@@ -62,9 +69,12 @@ function GridColumnHeaderItem(props) {
62
69
  if (colDef.renderHeader) {
63
70
  headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
64
71
  }
72
+ const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
73
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
65
74
  const ownerState = _extends({}, props, {
66
75
  classes: rootProps.classes,
67
- showRightBorder: rootProps.showColumnVerticalBorder
76
+ showRightBorder,
77
+ showLeftBorder
68
78
  });
69
79
  const classes = useUtilityClasses(ownerState);
70
80
  const publish = React.useCallback(eventName => event => {
@@ -144,7 +154,7 @@ function GridColumnHeaderItem(props) {
144
154
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
145
155
  const elementToFocus = focusableElement || headerCellRef.current;
146
156
  elementToFocus == null || elementToFocus.focus();
147
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
157
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
148
158
  }
149
159
  }, [apiRef, hasFocus]);
150
160
  const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({
@@ -176,7 +186,8 @@ function GridColumnHeaderItem(props) {
176
186
  "data-field": colDef.field,
177
187
  columnMenu: columnMenu,
178
188
  draggableContainerProps: draggableEventHandlers,
179
- columnHeaderSeparatorProps: columnHeaderSeparatorProps
189
+ columnHeaderSeparatorProps: columnHeaderSeparatorProps,
190
+ style: style
180
191
  }, mouseEventsHandlers));
181
192
  }
182
193
  process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
@@ -191,11 +202,15 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
191
202
  filterItemsCounter: PropTypes.number,
192
203
  hasFocus: PropTypes.bool,
193
204
  headerHeight: PropTypes.number.isRequired,
205
+ indexInSection: PropTypes.number.isRequired,
194
206
  isDragging: PropTypes.bool.isRequired,
195
207
  isResizing: PropTypes.bool.isRequired,
208
+ pinnedPosition: PropTypes.oneOf(['left', 'right']),
209
+ sectionLength: PropTypes.number.isRequired,
196
210
  separatorSide: PropTypes.oneOf(['left', 'right']),
197
211
  sortDirection: PropTypes.oneOf(['asc', 'desc']),
198
212
  sortIndex: PropTypes.number,
213
+ style: PropTypes.object,
199
214
  tabIndex: PropTypes.oneOf([-1, 0]).isRequired
200
215
  } : void 0;
201
216
  const Memoized = fastMemo(GridColumnHeaderItem);
@@ -26,6 +26,7 @@ interface GridGenericColumnHeaderItemProps extends Pick<GridStateColDef, 'header
26
26
  label: string;
27
27
  draggableContainerProps?: Partial<React.HTMLProps<HTMLDivElement>>;
28
28
  columnHeaderSeparatorProps?: Partial<GridColumnHeaderSeparatorProps>;
29
+ style?: React.CSSProperties;
29
30
  }
30
31
  declare const GridGenericColumnHeaderItem: React.ForwardRefExoticComponent<GridGenericColumnHeaderItemProps & React.RefAttributes<unknown>>;
31
32
  export { GridGenericColumnHeaderItem };
@@ -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 = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps"];
3
+ const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps", "style"];
4
4
  import * as React from 'react';
5
5
  import clsx from 'clsx';
6
6
  import { unstable_useForkRef as useForkRef } from '@mui/utils';
@@ -32,7 +32,8 @@ const GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridG
32
32
  label,
33
33
  resizable,
34
34
  draggableContainerProps,
35
- columnHeaderSeparatorProps
35
+ columnHeaderSeparatorProps,
36
+ style
36
37
  } = props,
37
38
  other = _objectWithoutPropertiesLoose(props, _excluded);
38
39
  const apiRef = useGridPrivateApiContext();
@@ -55,18 +56,18 @@ const GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridG
55
56
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
56
57
  const elementToFocus = focusableElement || headerCellRef.current;
57
58
  elementToFocus == null || elementToFocus.focus();
58
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
59
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
59
60
  }
60
61
  }, [apiRef, hasFocus]);
61
62
  return /*#__PURE__*/_jsxs("div", _extends({
62
63
  ref: handleRef,
63
64
  className: clsx(classes.root, headerClassName),
64
- style: {
65
+ style: _extends({}, style, {
65
66
  height,
66
67
  width,
67
68
  minWidth: width,
68
69
  maxWidth: width
69
- },
70
+ }),
70
71
  role: "columnheader",
71
72
  tabIndex: tabIndex,
72
73
  "aria-colindex": colIndex + 1,
@@ -307,14 +307,6 @@ export const GridRootStyles = styled('div', {
307
307
  borderBottomStyle: 'solid',
308
308
  boxSizing: 'border-box'
309
309
  },
310
- [`& .${c['columnHeader--filledGroup']}.${c['columnHeader--showColumnBorder']} .${c.columnHeaderTitleContainer}`]: {
311
- borderBottom: `none`
312
- },
313
- [`& .${c['columnHeader--filledGroup']}.${c['columnHeader--showColumnBorder']}`]: {
314
- borderBottomWidth: '1px',
315
- borderBottomStyle: 'solid',
316
- boxSizing: 'border-box'
317
- },
318
310
  [`& .${c.sortIcon}, & .${c.filterIcon}`]: {
319
311
  fontSize: 'inherit'
320
312
  },
@@ -338,6 +330,12 @@ export const GridRootStyles = styled('div', {
338
330
  [`& .${c['columnHeader--moving']}`]: {
339
331
  backgroundColor: (t.vars || t).palette.action.hover
340
332
  },
333
+ [`& .${c['columnHeader--pinnedLeft']}, & .${c['columnHeader--pinnedRight']}`]: {
334
+ position: 'sticky',
335
+ zIndex: 4,
336
+ // Should be above the column separator
337
+ background: 'var(--DataGrid-pinnedBackground)'
338
+ },
341
339
  [`& .${c.columnSeparator}`]: {
342
340
  visibility: 'hidden',
343
341
  position: 'absolute',
@@ -428,9 +426,6 @@ export const GridRootStyles = styled('div', {
428
426
  [`& .${c['container--top']}, & .${c['container--bottom']}`]: {
429
427
  '[role=row]': {
430
428
  background: 'var(--DataGrid-containerBackground)'
431
- },
432
- [`.${c.pinnedColumnHeaders} [role=row]`]: {
433
- background: 'var(--DataGrid-pinnedBackground)'
434
429
  }
435
430
  },
436
431
  /* Cell styles */
@@ -520,20 +515,16 @@ export const GridRootStyles = styled('div', {
520
515
  [`.${c.withBorderColor}`]: {
521
516
  borderColor
522
517
  },
523
- [`& .${c['cell--withLeftBorder']}`]: {
518
+ [`& .${c['cell--withLeftBorder']}, & .${c['columnHeader--withLeftBorder']}`]: {
524
519
  borderLeftColor: 'var(--DataGrid-rowBorderColor)',
525
520
  borderLeftWidth: '1px',
526
521
  borderLeftStyle: 'solid'
527
522
  },
528
- [`& .${c['cell--withRightBorder']}`]: {
523
+ [`& .${c['cell--withRightBorder']}, & .${c['columnHeader--withRightBorder']}`]: {
529
524
  borderRightColor: 'var(--DataGrid-rowBorderColor)',
530
525
  borderRightWidth: '1px',
531
526
  borderRightStyle: 'solid'
532
527
  },
533
- [`& .${c['columnHeader--withRightBorder']}`]: {
534
- borderRightWidth: '1px',
535
- borderRightStyle: 'solid'
536
- },
537
528
  [`& .${c['cell--flex']}`]: {
538
529
  display: 'flex',
539
530
  alignItems: 'center',
@@ -634,12 +625,13 @@ export const GridRootStyles = styled('div', {
634
625
  borderTop: '1px solid var(--DataGrid-rowBorderColor)'
635
626
  },
636
627
  [`&.${c['scrollbarFiller--pinnedRight']}`]: {
637
- backgroundColor: 'var(--DataGrid-pinnedBackground)'
638
- },
639
- [`&.${c['scrollbarFiller--pinnedRight']}:not(.${c['scrollbarFiller--header']})`]: {
628
+ backgroundColor: 'var(--DataGrid-pinnedBackground)',
640
629
  position: 'sticky',
641
630
  right: 0
642
631
  }
632
+ },
633
+ [`& .${c.filler}`]: {
634
+ flex: 1
643
635
  }
644
636
  });
645
637
  return gridStyle;
@@ -35,6 +35,8 @@ const ScrollbarVertical = styled(Scrollbar)({
35
35
  height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
36
36
  overflowY: 'auto',
37
37
  overflowX: 'hidden',
38
+ // Disable focus-visible style, it's a scrollbar.
39
+ outline: 0,
38
40
  '& > div': {
39
41
  width: 'var(--size)'
40
42
  },
@@ -46,6 +48,8 @@ const ScrollbarHorizontal = styled(Scrollbar)({
46
48
  height: 'var(--size)',
47
49
  overflowY: 'hidden',
48
50
  overflowX: 'auto',
51
+ // Disable focus-visible style, it's a scrollbar.
52
+ outline: 0,
49
53
  '& > div': {
50
54
  height: 'var(--size)'
51
55
  },
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { styled } from '@mui/system';
4
4
  import { unstable_composeClasses as composeClasses } from '@mui/utils';
5
+ import { GridScrollArea } from '../GridScrollArea';
5
6
  import { useGridRootProps } from '../../hooks/utils/useGridRootProps';
6
7
  import { useGridApiContext } from '../../hooks/utils/useGridApiContext';
7
8
  import { useGridSelector } from '../../hooks/utils/useGridSelector';
@@ -66,7 +67,11 @@ function GridVirtualScroller(props) {
66
67
  return /*#__PURE__*/_jsxs(Container, _extends({
67
68
  className: classes.root
68
69
  }, getContainerProps(), {
69
- children: [/*#__PURE__*/_jsxs(Scroller, _extends({
70
+ children: [/*#__PURE__*/_jsx(GridScrollArea, {
71
+ scrollDirection: "left"
72
+ }), /*#__PURE__*/_jsx(GridScrollArea, {
73
+ scrollDirection: "right"
74
+ }), /*#__PURE__*/_jsxs(Scroller, _extends({
70
75
  className: classes.scroller
71
76
  }, getScrollerProps(), {
72
77
  ownerState: rootProps,
@@ -38,6 +38,7 @@ function GridVirtualScrollerFiller() {
38
38
  viewportOuterSize,
39
39
  minimumSize,
40
40
  hasScrollX,
41
+ hasScrollY,
41
42
  scrollbarSize,
42
43
  leftPinnedWidth,
43
44
  rightPinnedWidth
@@ -62,7 +63,7 @@ function GridVirtualScrollerFiller() {
62
63
  }), /*#__PURE__*/_jsx(Main, {}), rightPinnedWidth > 0 && /*#__PURE__*/_jsx(PinnedRight, {
63
64
  className: gridClasses['filler--pinnedRight'],
64
65
  style: {
65
- width: rightPinnedWidth
66
+ width: rightPinnedWidth + (hasScrollY ? scrollbarSize : 0)
66
67
  }
67
68
  })]
68
69
  });
@@ -148,14 +148,12 @@ export interface GridClasses {
148
148
  * Styles applied to the column header if the column has a filter applied to it.
149
149
  */
150
150
  'columnHeader--filtered': string;
151
+ 'columnHeader--pinnedLeft': string;
152
+ 'columnHeader--pinnedRight': string;
151
153
  /**
152
154
  * Styles applied to the column header element.
153
155
  */
154
156
  columnHeader: string;
155
- /**
156
- * Styles applied to the column group header element.
157
- */
158
- columnGroupHeader: string;
159
157
  /**
160
158
  * Styles applied to the header checkbox cell element.
161
159
  */
@@ -168,10 +166,6 @@ export interface GridClasses {
168
166
  * Styles applied to the row's draggable placeholder element inside the special row reorder cell.
169
167
  */
170
168
  rowReorderCellPlaceholder: string;
171
- /**
172
- * Styles applied to the column headers wrapper if a column is being dragged.
173
- */
174
- columnHeaderDropZone: string;
175
169
  /**
176
170
  * Styles applied to the column header's title element;
177
171
  */
@@ -192,22 +186,10 @@ export interface GridClasses {
192
186
  * Styles applied to the empty column group header cell.
193
187
  */
194
188
  'columnHeader--emptyGroup': string;
195
- /**
196
- * Styles applied to the column group header cell when show column border.
197
- */
198
- 'columnHeader--showColumnBorder': string;
199
189
  /**
200
190
  * Styles applied to the column headers.
201
191
  */
202
192
  columnHeaders: string;
203
- /**
204
- * Styles applied to the column headers's inner element.
205
- */
206
- columnHeadersInner: string;
207
- /**
208
- * Styles applied to the column headers's inner element if there is a horizontal scrollbar.
209
- */
210
- 'columnHeadersInner--scrollable': string;
211
193
  /**
212
194
  * Styles applied to the column header separator if the column is resizable.
213
195
  */
@@ -302,14 +284,17 @@ export interface GridClasses {
302
284
  editBooleanCell: string;
303
285
  /**
304
286
  * Styles applied to the filler row.
287
+ * @ignore - do not document.
305
288
  */
306
289
  filler: string;
307
290
  /**
308
291
  * Styles applied to the filler row pinned left section.
292
+ * @ignore - do not document.
309
293
  */
310
294
  'filler--pinnedLeft': string;
311
295
  /**
312
296
  * Styles applied to the filler row pinned right section.
297
+ * @ignore - do not document.
313
298
  */
314
299
  'filler--pinnedRight': string;
315
300
  /**
@@ -420,18 +405,6 @@ export interface GridClasses {
420
405
  * Styles applied to the pinned columns.
421
406
  */
422
407
  pinnedColumns: string;
423
- /**
424
- * Styles applied to the pinned column headers.
425
- */
426
- pinnedColumnHeaders: string;
427
- /**
428
- * Styles applied to the left pinned column headers.
429
- */
430
- 'pinnedColumnHeaders--left': string;
431
- /**
432
- * Styles applied to the right pinned column headers.
433
- */
434
- 'pinnedColumnHeaders--right': string;
435
408
  /**
436
409
  * Styles applied to the root element.
437
410
  */
@@ -582,6 +555,7 @@ export interface GridClasses {
582
555
  * Styles applied the column header if `showColumnVerticalBorder={true}`.
583
556
  */
584
557
  'columnHeader--withRightBorder': string;
558
+ 'columnHeader--withLeftBorder': string;
585
559
  /**
586
560
  * Styles applied to the root of the grouping column of the tree data.
587
561
  */
@@ -2,4 +2,4 @@ import { unstable_generateUtilityClasses as generateUtilityClasses, unstable_gen
2
2
  export function getDataGridUtilityClass(slot) {
3
3
  return generateUtilityClass('MuiDataGrid', slot);
4
4
  }
5
- export const gridClasses = generateUtilityClasses('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--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']);
5
+ export const gridClasses = 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']);
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { GridCellIndexCoordinates, GridScrollParams, GridColDef, GridCellCoordinates, GridCellParams, GridEditMode } from '../../../models';
3
3
  import { GridInitialStateCommunity } from '../../../models/gridStateCommunity';
4
4
  import { GridExportStateParams, GridRestoreStatePreProcessingContext, GridRestoreStatePreProcessingValue } from '../../features/statePersistence/gridStatePersistenceInterface';
5
- import { GridHydrateColumnsValue } from '../../features/columns/gridColumnsInterfaces';
5
+ import { GridHydrateColumnsValue, GridPinnedColumnPosition } from '../../features/columns/gridColumnsInterfaces';
6
6
  import { GridRowEntry, GridRowId } from '../../../models/gridRows';
7
7
  import { GridHydrateRowsValue } from '../../features/rows/gridRowsInterfaces';
8
8
  import { GridPreferencePanelsValue } from '../../features/preferencesPanel';
@@ -75,6 +75,10 @@ export interface GridPipeProcessingLookup {
75
75
  editMode: GridEditMode;
76
76
  };
77
77
  };
78
+ isColumnPinned: {
79
+ value: GridPinnedColumnPosition | false;
80
+ context: string;
81
+ };
78
82
  }
79
83
  export type GridPipeProcessor<P extends GridPipeProcessorGroup> = (value: GridPipeProcessingLookup[P]['value'], context: GridPipeProcessingLookup[P] extends {
80
84
  context: any;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { DataGridProcessedProps } from '../../../models/props/DataGridProps';
3
- import { GridRenderContext } from '../../../models/params/gridScrollParams';
3
+ import type { GridColumnsRenderContext } from '../../../models/params/gridScrollParams';
4
4
  import { GridStateColDef } from '../../../models/colDef/gridColDef';
5
5
  import { GridSortColumnLookup } from '../sorting';
6
6
  import { GridFilterActiveItemsLookup } from '../filter';
@@ -9,7 +9,6 @@ import { GridColumnMenuState } from '../columnMenu';
9
9
  import { GridPinnedColumnPosition, GridColumnVisibilityModel } from '../columns';
10
10
  import { GridGroupingStructure } from '../columnGrouping/gridColumnGroupsInterfaces';
11
11
  export interface UseGridColumnHeadersProps {
12
- innerRef?: React.Ref<HTMLDivElement>;
13
12
  visibleColumns: GridStateColDef[];
14
13
  sortColumnLookup: GridSortColumnLookup;
15
14
  filterColumnLookup: GridFilterActiveItemsLookup;
@@ -25,7 +24,7 @@ export interface UseGridColumnHeadersProps {
25
24
  }
26
25
  export interface GetHeadersParams {
27
26
  position?: GridPinnedColumnPosition;
28
- renderContext?: GridRenderContext;
27
+ renderContext?: GridColumnsRenderContext;
29
28
  minFirstColumn?: number;
30
29
  maxLastColumn?: number;
31
30
  }
@@ -34,18 +33,35 @@ export declare const GridColumnHeaderRow: import("@emotion/styled").StyledCompon
34
33
  ownerState: OwnerState;
35
34
  }, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
36
35
  export declare const useGridColumnHeaders: (props: UseGridColumnHeadersProps) => {
37
- renderContext: GridRenderContext;
36
+ renderContext: GridColumnsRenderContext;
37
+ leftRenderContext: {
38
+ firstColumnIndex: number;
39
+ lastColumnIndex: number;
40
+ } | null;
41
+ rightRenderContext: {
42
+ firstColumnIndex: number;
43
+ lastColumnIndex: number;
44
+ } | null;
45
+ pinnedColumns: {
46
+ left: GridStateColDef[];
47
+ right: GridStateColDef[];
48
+ };
49
+ visibleColumns: GridStateColDef[];
50
+ getCellOffsetStyle: ({ pinnedPosition, columnIndex, computedWidth, }: {
51
+ pinnedPosition?: GridPinnedColumnPosition | undefined;
52
+ columnIndex: number;
53
+ computedWidth: number;
54
+ }) => React.CSSProperties | undefined;
38
55
  getFillers: (params: GetHeadersParams | undefined, children: React.ReactNode, leftOverflow: number, borderTop?: boolean) => React.JSX.Element;
39
- getColumnHeaders: (params?: GetHeadersParams, other?: {}) => React.JSX.Element;
56
+ getColumnHeadersRow: () => React.JSX.Element;
40
57
  getColumnsToRender: (params?: GetHeadersParams) => {
41
58
  renderedColumns: GridStateColDef[];
42
59
  firstColumnToRender: number;
43
60
  lastColumnToRender: number;
44
61
  };
45
- getColumnGroupHeaders: (params?: GetHeadersParams) => React.JSX.Element[] | null;
62
+ getColumnGroupHeadersRows: () => React.JSX.Element[] | null;
46
63
  isDragging: boolean;
47
64
  getInnerProps: () => {
48
- ref: ((instance: HTMLDivElement | null) => void) | null;
49
65
  role: string;
50
66
  };
51
67
  };