@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
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.GridScrollArea = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _clsx = _interopRequireDefault(require("clsx"));
12
+ var _utils = require("@mui/utils");
13
+ var _system = require("@mui/system");
14
+ var _useGridRootProps = require("../hooks/utils/useGridRootProps");
15
+ var _constants = require("../constants");
16
+ var _useGridApiContext = require("../hooks/utils/useGridApiContext");
17
+ var _useGridApiEventHandler = require("../hooks/utils/useGridApiEventHandler");
18
+ var _useGridSelector = require("../hooks/utils/useGridSelector");
19
+ var _gridDimensionsSelectors = require("../hooks/features/dimensions/gridDimensionsSelectors");
20
+ var _densitySelector = require("../hooks/features/density/densitySelector");
21
+ var _gridColumnsSelector = require("../hooks/features/columns/gridColumnsSelector");
22
+ var _useTimeout = require("../hooks/utils/useTimeout");
23
+ var _gridColumnsUtils = require("../hooks/features/columns/gridColumnsUtils");
24
+ var _fastMemo = require("../utils/fastMemo");
25
+ var _jsxRuntime = require("react/jsx-runtime");
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); }
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; }
28
+ const CLIFF = 1;
29
+ const SLOP = 1.5;
30
+ const useUtilityClasses = ownerState => {
31
+ const {
32
+ scrollDirection,
33
+ classes
34
+ } = ownerState;
35
+ const slots = {
36
+ root: ['scrollArea', `scrollArea--${scrollDirection}`]
37
+ };
38
+ return (0, _utils.unstable_composeClasses)(slots, _constants.getDataGridUtilityClass, classes);
39
+ };
40
+ const GridScrollAreaRawRoot = (0, _system.styled)('div', {
41
+ name: 'MuiDataGrid',
42
+ slot: 'ScrollArea',
43
+ overridesResolver: (props, styles) => [{
44
+ [`&.${_constants.gridClasses['scrollArea--left']}`]: styles['scrollArea--left']
45
+ }, {
46
+ [`&.${_constants.gridClasses['scrollArea--right']}`]: styles['scrollArea--right']
47
+ }, styles.scrollArea]
48
+ })(() => ({
49
+ position: 'absolute',
50
+ top: 0,
51
+ zIndex: 101,
52
+ width: 20,
53
+ bottom: 0,
54
+ [`&.${_constants.gridClasses['scrollArea--left']}`]: {
55
+ left: 0
56
+ },
57
+ [`&.${_constants.gridClasses['scrollArea--right']}`]: {
58
+ right: 0
59
+ }
60
+ }));
61
+ function GridScrollAreaRaw(props) {
62
+ const {
63
+ scrollDirection
64
+ } = props;
65
+ const rootRef = React.useRef(null);
66
+ const apiRef = (0, _useGridApiContext.useGridApiContext)();
67
+ const timeout = (0, _useTimeout.useTimeout)();
68
+ const densityFactor = (0, _useGridSelector.useGridSelector)(apiRef, _densitySelector.gridDensityFactorSelector);
69
+ const columnsTotalWidth = (0, _useGridSelector.useGridSelector)(apiRef, _gridColumnsSelector.gridColumnsTotalWidthSelector);
70
+ const dimensions = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridDimensionsSelector);
71
+ const scrollPosition = React.useRef({
72
+ left: 0,
73
+ top: 0
74
+ });
75
+ const getCanScrollMore = () => {
76
+ if (scrollDirection === 'left') {
77
+ // Only render if the user has not reached yet the start of the list
78
+ return scrollPosition.current.left > 0;
79
+ }
80
+ if (scrollDirection === 'right') {
81
+ // Only render if the user has not reached yet the end of the list
82
+ const maxScrollLeft = columnsTotalWidth - dimensions.viewportInnerSize.width;
83
+ return scrollPosition.current.left < maxScrollLeft;
84
+ }
85
+ return false;
86
+ };
87
+ const [dragging, setDragging] = React.useState(false);
88
+ const [canScrollMore, setCanScrollMore] = React.useState(getCanScrollMore);
89
+ const rootProps = (0, _useGridRootProps.useGridRootProps)();
90
+ const ownerState = (0, _extends2.default)({}, rootProps, {
91
+ scrollDirection
92
+ });
93
+ const classes = useUtilityClasses(ownerState);
94
+ const totalHeaderHeight = (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, rootProps.columnHeaderHeight);
95
+ const headerHeight = Math.floor(rootProps.columnHeaderHeight * densityFactor);
96
+ const style = {
97
+ height: headerHeight,
98
+ top: totalHeaderHeight - headerHeight
99
+ };
100
+ if (scrollDirection === 'left') {
101
+ style.left = dimensions.leftPinnedWidth;
102
+ } else if (scrollDirection === 'right') {
103
+ style.right = dimensions.rightPinnedWidth + (dimensions.hasScrollX ? dimensions.scrollbarSize : 0);
104
+ }
105
+ const handleScrolling = newScrollPosition => {
106
+ scrollPosition.current = newScrollPosition;
107
+ setCanScrollMore(getCanScrollMore);
108
+ };
109
+ const handleDragOver = (0, _utils.unstable_useEventCallback)(event => {
110
+ let offset;
111
+
112
+ // Prevents showing the forbidden cursor
113
+ event.preventDefault();
114
+ if (scrollDirection === 'left') {
115
+ offset = event.clientX - rootRef.current.getBoundingClientRect().right;
116
+ } else if (scrollDirection === 'right') {
117
+ offset = Math.max(1, event.clientX - rootRef.current.getBoundingClientRect().left);
118
+ } else {
119
+ throw new Error('MUI X: Wrong drag direction');
120
+ }
121
+ offset = (offset - CLIFF) * SLOP + CLIFF;
122
+
123
+ // Avoid freeze and inertia.
124
+ timeout.start(0, () => {
125
+ apiRef.current.scroll({
126
+ left: scrollPosition.current.left + offset,
127
+ top: scrollPosition.current.top
128
+ });
129
+ });
130
+ });
131
+ const handleColumnHeaderDragStart = (0, _utils.unstable_useEventCallback)(() => {
132
+ setDragging(true);
133
+ });
134
+ const handleColumnHeaderDragEnd = (0, _utils.unstable_useEventCallback)(() => {
135
+ setDragging(false);
136
+ });
137
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'scrollPositionChange', handleScrolling);
138
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragStart', handleColumnHeaderDragStart);
139
+ (0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'columnHeaderDragEnd', handleColumnHeaderDragEnd);
140
+ if (!dragging || !canScrollMore) {
141
+ return null;
142
+ }
143
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridScrollAreaRawRoot, {
144
+ ref: rootRef,
145
+ className: (0, _clsx.default)(classes.root),
146
+ ownerState: ownerState,
147
+ onDragOver: handleDragOver,
148
+ style: style
149
+ });
150
+ }
151
+ process.env.NODE_ENV !== "production" ? GridScrollAreaRaw.propTypes = {
152
+ // ----------------------------- Warning --------------------------------
153
+ // | These PropTypes are generated from the TypeScript type definitions |
154
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
155
+ // ----------------------------------------------------------------------
156
+ scrollDirection: _propTypes.default.oneOf(['left', 'right']).isRequired
157
+ } : void 0;
158
+ const GridScrollArea = exports.GridScrollArea = (0, _fastMemo.fastMemo)(GridScrollAreaRaw);
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.PinnedPosition = exports.GridCell = void 0;
7
+ exports.gridPinnedColumnPositionLookup = exports.PinnedPosition = exports.GridCell = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
@@ -20,6 +20,8 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
20
20
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
21
21
  var _gridFocusStateSelector = require("../../hooks/features/focus/gridFocusStateSelector");
22
22
  var _useGridParamsApi = require("../../hooks/features/rows/useGridParamsApi");
23
+ var _cellBorderUtils = require("../../utils/cellBorderUtils");
24
+ var _gridColumnsInterfaces = require("../../hooks/features/columns/gridColumnsInterfaces");
23
25
  var _jsxRuntime = require("react/jsx-runtime");
24
26
  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"],
25
27
  _excluded2 = ["changeReason", "unstable_updateValueOnRender"];
@@ -32,6 +34,12 @@ let PinnedPosition = exports.PinnedPosition = /*#__PURE__*/function (PinnedPosit
32
34
  PinnedPosition[PinnedPosition["VIRTUAL"] = 3] = "VIRTUAL";
33
35
  return PinnedPosition;
34
36
  }({});
37
+ const gridPinnedColumnPositionLookup = exports.gridPinnedColumnPositionLookup = {
38
+ [PinnedPosition.LEFT]: _gridColumnsInterfaces.GridPinnedColumnPosition.LEFT,
39
+ [PinnedPosition.RIGHT]: _gridColumnsInterfaces.GridPinnedColumnPosition.RIGHT,
40
+ [PinnedPosition.NONE]: undefined,
41
+ [PinnedPosition.VIRTUAL]: undefined
42
+ };
35
43
  const EMPTY_CELL_PARAMS = {
36
44
  id: -1,
37
45
  field: '__unset__',
@@ -162,9 +170,9 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
162
170
  const focusElementRef = React.useRef(null);
163
171
  // @ts-expect-error To access `cellSelection` flag as it's a `premium` feature
164
172
  const isSelectionMode = rootProps.cellSelection ?? false;
165
- const isSectionLastCell = sectionIndex === sectionLength - 1;
166
- const showLeftBorder = pinnedPosition === PinnedPosition.RIGHT && sectionIndex === 0;
167
- const showRightBorder = rootProps.showCellVerticalBorder && (pinnedPosition !== PinnedPosition.LEFT ? !isSectionLastCell : true) || pinnedPosition === PinnedPosition.LEFT && isSectionLastCell;
173
+ const position = gridPinnedColumnPositionLookup[pinnedPosition];
174
+ const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(position, sectionIndex);
175
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(position, sectionIndex, sectionLength, rootProps.showCellVerticalBorder);
168
176
  const ownerState = {
169
177
  align,
170
178
  showLeftBorder,
@@ -32,6 +32,7 @@ const GridColumnHeadersRoot = (0, _system.styled)('div', {
32
32
  overridesResolver: (props, styles) => styles.columnHeaders
33
33
  })({
34
34
  display: 'flex',
35
+ flexDirection: 'column',
35
36
  borderTopLeftRadius: 'var(--unstable_DataGrid-radius)',
36
37
  borderTopRightRadius: 'var(--unstable_DataGrid-radius)'
37
38
  });
@@ -15,6 +15,7 @@ var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
15
15
  var _useGridSelector = require("../../hooks/utils/useGridSelector");
16
16
  var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
17
17
  var _domUtils = require("../../utils/domUtils");
18
+ var _cellBorderUtils = require("../../utils/cellBorderUtils");
18
19
  var _jsxRuntime = require("react/jsx-runtime");
19
20
  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); }
20
21
  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; }
@@ -23,11 +24,13 @@ const useUtilityClasses = ownerState => {
23
24
  classes,
24
25
  headerAlign,
25
26
  isDragging,
26
- showColumnBorder,
27
- groupId
27
+ showLeftBorder,
28
+ showRightBorder,
29
+ groupId,
30
+ pinnedPosition
28
31
  } = ownerState;
29
32
  const slots = {
30
- 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'],
33
+ 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'],
31
34
  draggableContainer: ['columnHeaderDraggableContainer'],
32
35
  titleContainer: ['columnHeaderTitleContainer', 'withBorderColor'],
33
36
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -45,7 +48,11 @@ function GridColumnGroupHeader(props) {
45
48
  colIndex,
46
49
  hasFocus,
47
50
  tabIndex,
48
- isLastColumn
51
+ isLastColumn,
52
+ pinnedPosition,
53
+ style,
54
+ indexInSection,
55
+ sectionLength
49
56
  } = props;
50
57
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
51
58
  const headerCellRef = React.useRef(null);
@@ -72,10 +79,12 @@ function GridColumnGroupHeader(props) {
72
79
  if (groupId && render) {
73
80
  headerComponent = render(renderParams);
74
81
  }
75
- const showColumnBorder = rootProps.showColumnVerticalBorder;
82
+ const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
83
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
76
84
  const ownerState = (0, _extends2.default)({}, props, {
77
85
  classes: rootProps.classes,
78
- showColumnBorder,
86
+ showLeftBorder,
87
+ showRightBorder,
79
88
  headerAlign,
80
89
  depth,
81
90
  isDragging: false
@@ -126,11 +135,12 @@ function GridColumnGroupHeader(props) {
126
135
  width: width,
127
136
  columnMenuIconButton: null,
128
137
  columnTitleIconButtons: null,
129
- resizable: false,
138
+ resizable: true,
130
139
  label: label,
131
140
  "aria-colspan": fields.length
132
141
  // The fields are wrapped between |-...-| to avoid confusion between fields "id" and "id2" when using selector data-fields~=
133
142
  ,
134
- "data-fields": `|-${fields.join('-|-')}-|`
143
+ "data-fields": `|-${fields.join('-|-')}-|`,
144
+ style: style
135
145
  }, mouseEventsHandlers));
136
146
  }
@@ -18,6 +18,7 @@ var _gridClasses = require("../../constants/gridClasses");
18
18
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
19
19
  var _GridGenericColumnHeaderItem = require("./GridGenericColumnHeaderItem");
20
20
  var _domUtils = require("../../utils/domUtils");
21
+ var _cellBorderUtils = require("../../utils/cellBorderUtils");
21
22
  var _jsxRuntime = require("react/jsx-runtime");
22
23
  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); }
23
24
  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; }
@@ -28,14 +29,16 @@ const useUtilityClasses = ownerState => {
28
29
  isDragging,
29
30
  sortDirection,
30
31
  showRightBorder,
31
- filterItemsCounter
32
+ showLeftBorder,
33
+ filterItemsCounter,
34
+ pinnedPosition
32
35
  } = ownerState;
33
36
  const isColumnSorted = sortDirection != null;
34
37
  const isColumnFiltered = filterItemsCounter != null && filterItemsCounter > 0;
35
38
  // todo refactor to a prop on col isNumeric or ?? ie: coltype===price wont work
36
39
  const isColumnNumeric = colDef.type === 'number';
37
40
  const slots = {
38
- 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'],
41
+ 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'],
39
42
  draggableContainer: ['columnHeaderDraggableContainer'],
40
43
  titleContainer: ['columnHeaderTitleContainer'],
41
44
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -55,7 +58,11 @@ function GridColumnHeaderItem(props) {
55
58
  hasFocus,
56
59
  tabIndex,
57
60
  disableReorder,
58
- separatorSide
61
+ separatorSide,
62
+ style,
63
+ pinnedPosition,
64
+ indexInSection,
65
+ sectionLength
59
66
  } = props;
60
67
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
61
68
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
@@ -69,9 +76,12 @@ function GridColumnHeaderItem(props) {
69
76
  if (colDef.renderHeader) {
70
77
  headerComponent = colDef.renderHeader(apiRef.current.getColumnHeaderParams(colDef.field));
71
78
  }
79
+ const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, indexInSection);
80
+ const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder);
72
81
  const ownerState = (0, _extends2.default)({}, props, {
73
82
  classes: rootProps.classes,
74
- showRightBorder: rootProps.showColumnVerticalBorder
83
+ showRightBorder,
84
+ showLeftBorder
75
85
  });
76
86
  const classes = useUtilityClasses(ownerState);
77
87
  const publish = React.useCallback(eventName => event => {
@@ -151,7 +161,7 @@ function GridColumnHeaderItem(props) {
151
161
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
152
162
  const elementToFocus = focusableElement || headerCellRef.current;
153
163
  elementToFocus?.focus();
154
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
164
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
155
165
  }
156
166
  }, [apiRef, hasFocus]);
157
167
  const headerClassName = typeof colDef.headerClassName === 'function' ? colDef.headerClassName({
@@ -183,7 +193,8 @@ function GridColumnHeaderItem(props) {
183
193
  "data-field": colDef.field,
184
194
  columnMenu: columnMenu,
185
195
  draggableContainerProps: draggableEventHandlers,
186
- columnHeaderSeparatorProps: columnHeaderSeparatorProps
196
+ columnHeaderSeparatorProps: columnHeaderSeparatorProps,
197
+ style: style
187
198
  }, mouseEventsHandlers));
188
199
  }
189
200
  process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
@@ -198,11 +209,15 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
198
209
  filterItemsCounter: _propTypes.default.number,
199
210
  hasFocus: _propTypes.default.bool,
200
211
  headerHeight: _propTypes.default.number.isRequired,
212
+ indexInSection: _propTypes.default.number.isRequired,
201
213
  isDragging: _propTypes.default.bool.isRequired,
202
214
  isResizing: _propTypes.default.bool.isRequired,
215
+ pinnedPosition: _propTypes.default.oneOf(['left', 'right']),
216
+ sectionLength: _propTypes.default.number.isRequired,
203
217
  separatorSide: _propTypes.default.oneOf(['left', 'right']),
204
218
  sortDirection: _propTypes.default.oneOf(['asc', 'desc']),
205
219
  sortIndex: _propTypes.default.number,
220
+ style: _propTypes.default.object,
206
221
  tabIndex: _propTypes.default.oneOf([-1, 0]).isRequired
207
222
  } : void 0;
208
223
  const Memoized = exports.GridColumnHeaderItem = (0, _fastMemo.fastMemo)(GridColumnHeaderItem);
@@ -15,7 +15,7 @@ var _GridColumnHeaderTitle = require("./GridColumnHeaderTitle");
15
15
  var _GridColumnHeaderSeparator = require("./GridColumnHeaderSeparator");
16
16
  var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
17
17
  var _jsxRuntime = require("react/jsx-runtime");
18
- const _excluded = ["classes", "columnMenuOpen", "colIndex", "height", "isResizing", "sortDirection", "hasFocus", "tabIndex", "separatorSide", "isDraggable", "headerComponent", "description", "elementId", "width", "columnMenuIconButton", "columnMenu", "columnTitleIconButtons", "headerClassName", "label", "resizable", "draggableContainerProps", "columnHeaderSeparatorProps"];
18
+ 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"];
19
19
  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); }
20
20
  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; }
21
21
  const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__PURE__*/React.forwardRef(function GridGenericColumnHeaderItem(props, ref) {
@@ -40,7 +40,8 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__P
40
40
  label,
41
41
  resizable,
42
42
  draggableContainerProps,
43
- columnHeaderSeparatorProps
43
+ columnHeaderSeparatorProps,
44
+ style
44
45
  } = props,
45
46
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
46
47
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
@@ -63,18 +64,18 @@ const GridGenericColumnHeaderItem = exports.GridGenericColumnHeaderItem = /*#__P
63
64
  const focusableElement = headerCellRef.current.querySelector('[tabindex="0"]');
64
65
  const elementToFocus = focusableElement || headerCellRef.current;
65
66
  elementToFocus?.focus();
66
- apiRef.current.columnHeadersContainerElementRef.current.scrollLeft = 0;
67
+ apiRef.current.columnHeadersContainerRef.current.scrollLeft = 0;
67
68
  }
68
69
  }, [apiRef, hasFocus]);
69
70
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({
70
71
  ref: handleRef,
71
72
  className: (0, _clsx.default)(classes.root, headerClassName),
72
- style: {
73
+ style: (0, _extends2.default)({}, style, {
73
74
  height,
74
75
  width,
75
76
  minWidth: width,
76
77
  maxWidth: width
77
- },
78
+ }),
78
79
  role: "columnheader",
79
80
  tabIndex: tabIndex,
80
81
  "aria-colindex": colIndex + 1,
@@ -314,14 +314,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
314
314
  borderBottomStyle: 'solid',
315
315
  boxSizing: 'border-box'
316
316
  },
317
- [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']} .${_gridClasses.gridClasses.columnHeaderTitleContainer}`]: {
318
- borderBottom: `none`
319
- },
320
- [`& .${_gridClasses.gridClasses['columnHeader--filledGroup']}.${_gridClasses.gridClasses['columnHeader--showColumnBorder']}`]: {
321
- borderBottomWidth: '1px',
322
- borderBottomStyle: 'solid',
323
- boxSizing: 'border-box'
324
- },
325
317
  [`& .${_gridClasses.gridClasses.sortIcon}, & .${_gridClasses.gridClasses.filterIcon}`]: {
326
318
  fontSize: 'inherit'
327
319
  },
@@ -345,6 +337,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
345
337
  [`& .${_gridClasses.gridClasses['columnHeader--moving']}`]: {
346
338
  backgroundColor: (t.vars || t).palette.action.hover
347
339
  },
340
+ [`& .${_gridClasses.gridClasses['columnHeader--pinnedLeft']}, & .${_gridClasses.gridClasses['columnHeader--pinnedRight']}`]: {
341
+ position: 'sticky',
342
+ zIndex: 4,
343
+ // Should be above the column separator
344
+ background: 'var(--DataGrid-pinnedBackground)'
345
+ },
348
346
  [`& .${_gridClasses.gridClasses.columnSeparator}`]: {
349
347
  visibility: 'hidden',
350
348
  position: 'absolute',
@@ -435,9 +433,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
435
433
  [`& .${_gridClasses.gridClasses['container--top']}, & .${_gridClasses.gridClasses['container--bottom']}`]: {
436
434
  '[role=row]': {
437
435
  background: 'var(--DataGrid-containerBackground)'
438
- },
439
- [`.${_gridClasses.gridClasses.pinnedColumnHeaders} [role=row]`]: {
440
- background: 'var(--DataGrid-pinnedBackground)'
441
436
  }
442
437
  },
443
438
  /* Cell styles */
@@ -527,20 +522,16 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
527
522
  [`.${_gridClasses.gridClasses.withBorderColor}`]: {
528
523
  borderColor
529
524
  },
530
- [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}`]: {
525
+ [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}, & .${_gridClasses.gridClasses['columnHeader--withLeftBorder']}`]: {
531
526
  borderLeftColor: 'var(--DataGrid-rowBorderColor)',
532
527
  borderLeftWidth: '1px',
533
528
  borderLeftStyle: 'solid'
534
529
  },
535
- [`& .${_gridClasses.gridClasses['cell--withRightBorder']}`]: {
530
+ [`& .${_gridClasses.gridClasses['cell--withRightBorder']}, & .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
536
531
  borderRightColor: 'var(--DataGrid-rowBorderColor)',
537
532
  borderRightWidth: '1px',
538
533
  borderRightStyle: 'solid'
539
534
  },
540
- [`& .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
541
- borderRightWidth: '1px',
542
- borderRightStyle: 'solid'
543
- },
544
535
  [`& .${_gridClasses.gridClasses['cell--flex']}`]: {
545
536
  display: 'flex',
546
537
  alignItems: 'center',
@@ -641,12 +632,13 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
641
632
  borderTop: '1px solid var(--DataGrid-rowBorderColor)'
642
633
  },
643
634
  [`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}`]: {
644
- backgroundColor: 'var(--DataGrid-pinnedBackground)'
645
- },
646
- [`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}:not(.${_gridClasses.gridClasses['scrollbarFiller--header']})`]: {
635
+ backgroundColor: 'var(--DataGrid-pinnedBackground)',
647
636
  position: 'sticky',
648
637
  right: 0
649
638
  }
639
+ },
640
+ [`& .${_gridClasses.gridClasses.filler}`]: {
641
+ flex: 1
650
642
  }
651
643
  });
652
644
  return gridStyle;
@@ -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']);