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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/CHANGELOG.md +252 -50
  2. package/DataGrid/DataGrid.js +44 -0
  3. package/DataGrid/useDataGridComponent.js +3 -0
  4. package/DataGrid/useDataGridProps.js +3 -2
  5. package/components/GridColumnHeaders.d.ts +1 -2
  6. package/components/GridColumnHeaders.js +6 -17
  7. package/components/GridHeaders.js +1 -4
  8. package/components/GridPagination.js +2 -7
  9. package/components/GridPinnedRows.d.ts +1 -2
  10. package/components/GridRow.d.ts +1 -1
  11. package/components/GridRow.js +9 -26
  12. package/components/GridScrollArea.d.ts +10 -0
  13. package/components/GridScrollArea.js +150 -0
  14. package/components/cell/GridCell.d.ts +7 -2
  15. package/components/cell/GridCell.js +14 -10
  16. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  17. package/components/columnHeaders/GridColumnGroupHeader.d.ts +5 -0
  18. package/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  19. package/components/columnHeaders/GridColumnHeaderItem.d.ts +5 -0
  20. package/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  21. package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +1 -0
  22. package/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  23. package/components/containers/GridRootStyles.js +12 -22
  24. package/components/virtualization/GridVirtualScrollbar.js +4 -0
  25. package/components/virtualization/GridVirtualScroller.js +11 -4
  26. package/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  27. package/constants/gridClasses.d.ts +6 -32
  28. package/constants/gridClasses.js +1 -1
  29. package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
  30. package/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
  31. package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +23 -7
  32. package/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -99
  33. package/hooks/features/columnResize/columnResizeSelector.d.ts +3 -0
  34. package/hooks/features/columnResize/columnResizeSelector.js +3 -0
  35. package/hooks/features/columnResize/columnResizeState.d.ts +3 -0
  36. package/hooks/features/columnResize/columnResizeState.js +1 -0
  37. package/hooks/features/columnResize/gridColumnResizeApi.d.ts +44 -0
  38. package/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  39. package/hooks/features/columnResize/index.d.ts +3 -0
  40. package/hooks/features/columnResize/index.js +3 -0
  41. package/hooks/features/columnResize/useGridColumnResize.d.ts +10 -0
  42. package/hooks/features/columnResize/useGridColumnResize.js +563 -0
  43. package/hooks/features/columns/gridColumnsUtils.js +4 -1
  44. package/hooks/features/dimensions/useGridDimensions.js +5 -5
  45. package/hooks/features/editing/useGridCellEditing.js +21 -2
  46. package/hooks/features/export/useGridPrintExport.js +8 -7
  47. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.d.ts +1 -0
  48. package/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +6 -0
  49. package/hooks/features/headerFiltering/useGridHeaderFiltering.js +30 -7
  50. package/hooks/features/index.d.ts +1 -0
  51. package/hooks/features/index.js +1 -0
  52. package/hooks/features/pagination/gridPaginationInterfaces.d.ts +19 -2
  53. package/hooks/features/pagination/gridPaginationSelector.d.ts +5 -0
  54. package/hooks/features/pagination/gridPaginationSelector.js +8 -2
  55. package/hooks/features/pagination/useGridPagination.d.ts +1 -6
  56. package/hooks/features/pagination/useGridPagination.js +9 -157
  57. package/hooks/features/pagination/useGridPaginationModel.d.ts +11 -0
  58. package/hooks/features/pagination/useGridPaginationModel.js +170 -0
  59. package/hooks/features/pagination/useGridRowCount.d.ts +8 -0
  60. package/hooks/features/pagination/useGridRowCount.js +97 -0
  61. package/hooks/features/rows/useGridParamsApi.js +6 -10
  62. package/hooks/features/scroll/useGridScroll.js +1 -1
  63. package/hooks/features/sorting/useGridSorting.js +2 -2
  64. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +4 -4
  65. package/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  66. package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
  67. package/hooks/features/virtualization/useGridVirtualScroller.js +6 -0
  68. package/hooks/utils/useLazyRef.d.ts +1 -2
  69. package/hooks/utils/useLazyRef.js +1 -11
  70. package/hooks/utils/useOnMount.d.ts +1 -2
  71. package/hooks/utils/useOnMount.js +1 -7
  72. package/hooks/utils/useTimeout.d.ts +1 -11
  73. package/hooks/utils/useTimeout.js +1 -36
  74. package/index.js +1 -1
  75. package/internals/index.d.ts +2 -2
  76. package/internals/index.js +2 -2
  77. package/internals/utils/getPinnedCellOffset.d.ts +3 -0
  78. package/internals/utils/getPinnedCellOffset.js +17 -0
  79. package/joy/joySlots.js +13 -52
  80. package/locales/jaJP.js +3 -4
  81. package/material/index.js +0 -2
  82. package/models/api/gridApiCommon.d.ts +2 -1
  83. package/models/api/gridCoreApi.d.ts +1 -5
  84. package/models/api/gridInfiniteLoaderApi.d.ts +6 -0
  85. package/models/api/gridInfiniteLoaderApi.js +1 -0
  86. package/models/events/gridEventLookup.d.ts +6 -0
  87. package/models/gridHeaderFilteringModel.d.ts +1 -0
  88. package/models/gridSlotsComponent.d.ts +0 -5
  89. package/models/gridStateCommunity.d.ts +2 -0
  90. package/models/params/gridScrollParams.d.ts +5 -3
  91. package/models/props/DataGridProps.d.ts +35 -1
  92. package/modern/DataGrid/DataGrid.js +44 -0
  93. package/modern/DataGrid/useDataGridComponent.js +3 -0
  94. package/modern/DataGrid/useDataGridProps.js +3 -2
  95. package/modern/components/GridColumnHeaders.js +6 -17
  96. package/modern/components/GridHeaders.js +1 -4
  97. package/modern/components/GridPagination.js +2 -4
  98. package/modern/components/GridRow.js +9 -26
  99. package/modern/components/GridScrollArea.js +150 -0
  100. package/modern/components/cell/GridCell.js +14 -10
  101. package/modern/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  102. package/modern/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  103. package/modern/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  104. package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  105. package/modern/components/containers/GridRootStyles.js +12 -22
  106. package/modern/components/virtualization/GridVirtualScrollbar.js +4 -0
  107. package/modern/components/virtualization/GridVirtualScroller.js +11 -4
  108. package/modern/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  109. package/modern/constants/gridClasses.js +1 -1
  110. package/modern/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
  111. package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +184 -97
  112. package/modern/hooks/features/columnResize/columnResizeSelector.js +3 -0
  113. package/modern/hooks/features/columnResize/columnResizeState.js +1 -0
  114. package/modern/hooks/features/columnResize/gridColumnResizeApi.js +10 -0
  115. package/modern/hooks/features/columnResize/index.js +3 -0
  116. package/modern/hooks/features/columnResize/useGridColumnResize.js +553 -0
  117. package/modern/hooks/features/columns/gridColumnsUtils.js +4 -1
  118. package/modern/hooks/features/dimensions/useGridDimensions.js +5 -5
  119. package/modern/hooks/features/editing/useGridCellEditing.js +21 -2
  120. package/modern/hooks/features/export/useGridPrintExport.js +8 -7
  121. package/modern/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +3 -0
  122. package/modern/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  123. package/modern/hooks/features/index.js +1 -0
  124. package/modern/hooks/features/pagination/gridPaginationSelector.js +8 -2
  125. package/modern/hooks/features/pagination/useGridPagination.js +8 -149
  126. package/modern/hooks/features/pagination/useGridPaginationModel.js +165 -0
  127. package/modern/hooks/features/pagination/useGridRowCount.js +94 -0
  128. package/modern/hooks/features/rows/useGridParamsApi.js +6 -10
  129. package/modern/hooks/features/scroll/useGridScroll.js +1 -1
  130. package/modern/hooks/features/sorting/useGridSorting.js +2 -2
  131. package/modern/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  132. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +5 -0
  133. package/modern/hooks/utils/useLazyRef.js +1 -11
  134. package/modern/hooks/utils/useOnMount.js +1 -7
  135. package/modern/hooks/utils/useTimeout.js +1 -36
  136. package/modern/index.js +1 -1
  137. package/modern/internals/index.js +2 -2
  138. package/modern/internals/utils/getPinnedCellOffset.js +17 -0
  139. package/modern/joy/joySlots.js +11 -50
  140. package/modern/locales/jaJP.js +3 -4
  141. package/modern/material/index.js +0 -2
  142. package/modern/models/api/gridInfiniteLoaderApi.js +1 -0
  143. package/modern/utils/cellBorderUtils.js +8 -0
  144. package/modern/utils/createSelector.js +12 -20
  145. package/modern/utils/domUtils.js +144 -0
  146. package/node/DataGrid/DataGrid.js +44 -0
  147. package/node/DataGrid/useDataGridComponent.js +3 -0
  148. package/node/DataGrid/useDataGridProps.js +3 -2
  149. package/node/components/GridColumnHeaders.js +6 -16
  150. package/node/components/GridHeaders.js +1 -4
  151. package/node/components/GridPagination.js +1 -3
  152. package/node/components/GridRow.js +8 -25
  153. package/node/components/GridScrollArea.js +158 -0
  154. package/node/components/cell/GridCell.js +15 -11
  155. package/node/components/columnHeaders/GridBaseColumnHeaders.js +1 -0
  156. package/node/components/columnHeaders/GridColumnGroupHeader.js +18 -8
  157. package/node/components/columnHeaders/GridColumnHeaderItem.js +21 -6
  158. package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +6 -5
  159. package/node/components/containers/GridRootStyles.js +12 -22
  160. package/node/components/virtualization/GridVirtualScrollbar.js +4 -0
  161. package/node/components/virtualization/GridVirtualScroller.js +11 -4
  162. package/node/components/virtualization/GridVirtualScrollerFiller.js +2 -1
  163. package/node/constants/gridClasses.js +1 -1
  164. package/node/hooks/core/pipeProcessing/useGridPipeProcessing.js +22 -20
  165. package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +190 -103
  166. package/node/hooks/features/columnResize/columnResizeSelector.js +10 -0
  167. package/node/hooks/features/columnResize/columnResizeState.js +5 -0
  168. package/node/hooks/features/columnResize/gridColumnResizeApi.js +16 -0
  169. package/node/hooks/features/columnResize/index.js +38 -0
  170. package/node/hooks/features/columnResize/useGridColumnResize.js +564 -0
  171. package/node/hooks/features/columns/gridColumnsUtils.js +4 -1
  172. package/node/hooks/features/dimensions/useGridDimensions.js +5 -5
  173. package/node/hooks/features/editing/useGridCellEditing.js +21 -2
  174. package/node/hooks/features/export/useGridPrintExport.js +8 -7
  175. package/node/hooks/features/headerFiltering/gridHeaderFilteringSelectors.js +4 -1
  176. package/node/hooks/features/headerFiltering/useGridHeaderFiltering.js +21 -2
  177. package/node/hooks/features/index.js +11 -0
  178. package/node/hooks/features/pagination/gridPaginationSelector.js +8 -2
  179. package/node/hooks/features/pagination/useGridPagination.js +9 -153
  180. package/node/hooks/features/pagination/useGridPaginationModel.js +176 -0
  181. package/node/hooks/features/pagination/useGridRowCount.js +103 -0
  182. package/node/hooks/features/rows/useGridParamsApi.js +6 -10
  183. package/node/hooks/features/scroll/useGridScroll.js +1 -1
  184. package/node/hooks/features/sorting/useGridSorting.js +2 -2
  185. package/node/hooks/features/virtualization/gridVirtualizationSelectors.js +0 -2
  186. package/node/hooks/features/virtualization/useGridVirtualScroller.js +5 -0
  187. package/node/hooks/utils/useLazyRef.js +7 -13
  188. package/node/hooks/utils/useOnMount.js +8 -10
  189. package/node/hooks/utils/useTimeout.js +7 -37
  190. package/node/index.js +1 -1
  191. package/node/internals/index.js +15 -15
  192. package/node/internals/utils/getPinnedCellOffset.js +24 -0
  193. package/node/joy/joySlots.js +11 -50
  194. package/node/locales/jaJP.js +3 -4
  195. package/node/material/index.js +0 -2
  196. package/node/models/api/gridInfiniteLoaderApi.js +5 -0
  197. package/node/utils/cellBorderUtils.js +16 -0
  198. package/node/utils/createSelector.js +14 -23
  199. package/node/utils/domUtils.js +155 -0
  200. package/package.json +2 -2
  201. package/utils/cellBorderUtils.d.ts +3 -0
  202. package/utils/cellBorderUtils.js +8 -0
  203. package/utils/createSelector.d.ts +0 -1
  204. package/utils/createSelector.js +12 -22
  205. package/utils/domUtils.d.ts +14 -1
  206. package/utils/domUtils.js +147 -0
  207. package/components/columnHeaders/GridColumnHeadersInner.d.ts +0 -8
  208. package/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  209. package/modern/components/columnHeaders/GridColumnHeadersInner.js +0 -58
  210. package/node/components/columnHeaders/GridColumnHeadersInner.js +0 -67
@@ -12,7 +12,6 @@ var _styles = require("@mui/material/styles");
12
12
  var _useGridSelector = require("../hooks/utils/useGridSelector");
13
13
  var _useGridApiContext = require("../hooks/utils/useGridApiContext");
14
14
  var _useGridRootProps = require("../hooks/utils/useGridRootProps");
15
- var _filter = require("../hooks/features/filter");
16
15
  var _gridPaginationSelector = require("../hooks/features/pagination/gridPaginationSelector");
17
16
  var _jsxRuntime = require("react/jsx-runtime");
18
17
  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); }
@@ -40,8 +39,7 @@ const GridPagination = exports.GridPagination = /*#__PURE__*/React.forwardRef(fu
40
39
  const apiRef = (0, _useGridApiContext.useGridApiContext)();
41
40
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
42
41
  const paginationModel = (0, _useGridSelector.useGridSelector)(apiRef, _gridPaginationSelector.gridPaginationModelSelector);
43
- const visibleTopLevelRowCount = (0, _useGridSelector.useGridSelector)(apiRef, _filter.gridFilteredTopLevelRowCountSelector);
44
- const rowCount = React.useMemo(() => rootProps.rowCount ?? visibleTopLevelRowCount ?? 0, [rootProps.rowCount, visibleTopLevelRowCount]);
42
+ const rowCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridPaginationSelector.gridPaginationRowCountSelector);
45
43
  const lastPage = React.useMemo(() => {
46
44
  const calculatedValue = Math.ceil(rowCount / (paginationModel.pageSize || 1)) - 1;
47
45
  return Math.max(0, calculatedValue);
@@ -29,6 +29,7 @@ var _gridColumnGroupsSelector = require("../hooks/features/columnGrouping/gridCo
29
29
  var _gridEditingSelectors = require("../hooks/features/editing/gridEditingSelectors");
30
30
  var _GridCell = require("./cell/GridCell");
31
31
  var _GridScrollbarFillerCell = require("./GridScrollbarFillerCell");
32
+ var _getPinnedCellOffset = require("../internals/utils/getPinnedCellOffset");
32
33
  var _jsxRuntime = require("react/jsx-runtime");
33
34
  const _excluded = ["selected", "rowId", "row", "index", "style", "rowHeight", "className", "visibleColumns", "pinnedColumns", "offsetTop", "offsetLeft", "dimensions", "renderContext", "focusedColumnIndex", "isFirstVisible", "isLastVisible", "isNotVisible", "focusedCell", "tabbableCell", "onClick", "onDoubleClick", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseOver"];
34
35
  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); }
@@ -223,7 +224,8 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
223
224
  const rowStyle = (0, _extends2.default)({}, styleProp, {
224
225
  maxHeight: rowHeight === 'auto' ? 'none' : rowHeight,
225
226
  // max-height doesn't support "auto"
226
- minHeight
227
+ minHeight,
228
+ '--height': typeof rowHeight === 'number' ? `${rowHeight}px` : rowHeight
227
229
  });
228
230
  if (sizes?.spacingTop) {
229
231
  const property = rootProps.rowSpacingType === 'border' ? 'borderTopWidth' : 'marginTop';
@@ -258,21 +260,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
258
260
  }
259
261
  const width = cellColSpanInfo?.cellProps.width ?? column.computedWidth;
260
262
  const colSpan = cellColSpanInfo?.cellProps.colSpan ?? 1;
261
- let pinnedOffset;
262
- // FIXME: Why is the switch check exhaustiveness not validated with typescript-eslint?
263
- // eslint-disable-next-line default-case
264
- switch (pinnedPosition) {
265
- case _GridCell.PinnedPosition.LEFT:
266
- pinnedOffset = columnPositions[indexRelativeToAllColumns];
267
- break;
268
- case _GridCell.PinnedPosition.RIGHT:
269
- pinnedOffset = dimensions.columnsTotalWidth - columnPositions[indexRelativeToAllColumns] - column.computedWidth + scrollbarWidth;
270
- break;
271
- case _GridCell.PinnedPosition.NONE:
272
- case _GridCell.PinnedPosition.VIRTUAL:
273
- pinnedOffset = 0;
274
- break;
275
- }
263
+ const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(_GridCell.gridPinnedColumnPositionLookup[pinnedPosition], column.computedWidth, indexRelativeToAllColumns, columnPositions, dimensions);
276
264
  if (rowNode?.type === 'skeletonRow') {
277
265
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(slots.skeletonCell, {
278
266
  width: width,
@@ -295,20 +283,17 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
295
283
  column: column,
296
284
  width: width,
297
285
  rowId: rowId,
298
- height: rowHeight,
299
286
  align: column.align || 'left',
300
287
  colIndex: indexRelativeToAllColumns,
301
288
  colSpan: colSpan,
302
289
  disableDragEvents: disableDragEvents,
303
290
  editCellState: editCellState,
304
- isNotVisible: cellIsNotVisible
305
- }, slotProps?.cell, {
291
+ isNotVisible: cellIsNotVisible,
306
292
  pinnedOffset: pinnedOffset,
307
293
  pinnedPosition: pinnedPosition,
308
294
  sectionIndex: indexInSection,
309
- sectionLength: sectionLength,
310
- gridHasScrollX: dimensions.hasScrollX
311
- }), column.field);
295
+ sectionLength: sectionLength
296
+ }, slotProps?.cell), column.field);
312
297
  };
313
298
 
314
299
  /* Start of rendering */
@@ -367,9 +352,7 @@ const GridRow = /*#__PURE__*/React.forwardRef(function GridRow(props, refProp) {
367
352
  width: emptyCellWidth
368
353
  }), rightCells.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
369
354
  role: "presentation",
370
- style: {
371
- flex: '1'
372
- }
355
+ className: _gridClasses.gridClasses.filler
373
356
  }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
374
357
  pinnedRight: pinnedColumns.right.length > 0
375
358
  })]
@@ -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,8 +20,10 @@ 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
- const _excluded = ["column", "rowId", "editCellState", "align", "children", "colIndex", "height", "width", "className", "style", "gridHasScrollX", "colSpan", "disableDragEvents", "isNotVisible", "pinnedOffset", "pinnedPosition", "sectionIndex", "sectionLength", "onClick", "onDoubleClick", "onMouseDown", "onMouseUp", "onMouseOver", "onKeyDown", "onKeyUp", "onDragEnter", "onDragOver"],
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"];
26
28
  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
29
  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; }
@@ -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__',
@@ -83,7 +91,6 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
83
91
  editCellState,
84
92
  align,
85
93
  colIndex,
86
- height,
87
94
  width,
88
95
  className,
89
96
  style: styleProp,
@@ -163,9 +170,9 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
163
170
  const focusElementRef = React.useRef(null);
164
171
  // @ts-expect-error To access `cellSelection` flag as it's a `premium` feature
165
172
  const isSelectionMode = rootProps.cellSelection ?? false;
166
- const isSectionLastCell = sectionIndex === sectionLength - 1;
167
- const showLeftBorder = pinnedPosition === PinnedPosition.RIGHT && sectionIndex === 0;
168
- 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);
169
176
  const ownerState = {
170
177
  align,
171
178
  showLeftBorder,
@@ -212,8 +219,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
212
219
  };
213
220
  }
214
221
  const cellStyle = (0, _extends2.default)({
215
- '--width': `${width}px`,
216
- '--height': typeof height === 'number' ? `${height}px` : height
222
+ '--width': `${width}px`
217
223
  }, styleProp);
218
224
  if (pinnedPosition === PinnedPosition.LEFT) {
219
225
  cellStyle.left = pinnedOffset;
@@ -222,7 +228,7 @@ const GridCell = /*#__PURE__*/React.forwardRef((props, ref) => {
222
228
  cellStyle.right = pinnedOffset;
223
229
  }
224
230
  return cellStyle;
225
- }, [width, height, isNotVisible, styleProp, pinnedOffset, pinnedPosition]);
231
+ }, [width, isNotVisible, styleProp, pinnedOffset, pinnedPosition]);
226
232
  React.useEffect(() => {
227
233
  if (!hasFocus || cellMode === _models.GridCellModes.Edit) {
228
234
  return;
@@ -332,8 +338,6 @@ process.env.NODE_ENV !== "production" ? GridCell.propTypes = {
332
338
  isValidating: _propTypes.default.bool,
333
339
  value: _propTypes.default.any
334
340
  }),
335
- gridHasScrollX: _propTypes.default.bool.isRequired,
336
- height: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]).isRequired,
337
341
  isNotVisible: _propTypes.default.bool.isRequired,
338
342
  onClick: _propTypes.default.func,
339
343
  onDoubleClick: _propTypes.default.func,
@@ -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 */
@@ -448,8 +443,6 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
448
443
  lineHeight: 'calc(var(--height) - 1px)',
449
444
  // -1px for the border
450
445
 
451
- '--width': '0px',
452
- '--height': '0px',
453
446
  boxSizing: 'border-box',
454
447
  borderTop: `1px solid var(--rowBorderColor)`,
455
448
  overflow: 'hidden',
@@ -529,20 +522,16 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
529
522
  [`.${_gridClasses.gridClasses.withBorderColor}`]: {
530
523
  borderColor
531
524
  },
532
- [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}`]: {
525
+ [`& .${_gridClasses.gridClasses['cell--withLeftBorder']}, & .${_gridClasses.gridClasses['columnHeader--withLeftBorder']}`]: {
533
526
  borderLeftColor: 'var(--DataGrid-rowBorderColor)',
534
527
  borderLeftWidth: '1px',
535
528
  borderLeftStyle: 'solid'
536
529
  },
537
- [`& .${_gridClasses.gridClasses['cell--withRightBorder']}`]: {
530
+ [`& .${_gridClasses.gridClasses['cell--withRightBorder']}, & .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
538
531
  borderRightColor: 'var(--DataGrid-rowBorderColor)',
539
532
  borderRightWidth: '1px',
540
533
  borderRightStyle: 'solid'
541
534
  },
542
- [`& .${_gridClasses.gridClasses['columnHeader--withRightBorder']}`]: {
543
- borderRightWidth: '1px',
544
- borderRightStyle: 'solid'
545
- },
546
535
  [`& .${_gridClasses.gridClasses['cell--flex']}`]: {
547
536
  display: 'flex',
548
537
  alignItems: 'center',
@@ -643,12 +632,13 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
643
632
  borderTop: '1px solid var(--DataGrid-rowBorderColor)'
644
633
  },
645
634
  [`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}`]: {
646
- backgroundColor: 'var(--DataGrid-pinnedBackground)'
647
- },
648
- [`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}:not(.${_gridClasses.gridClasses['scrollbarFiller--header']})`]: {
635
+ backgroundColor: 'var(--DataGrid-pinnedBackground)',
649
636
  position: 'sticky',
650
637
  right: 0
651
638
  }
639
+ },
640
+ [`& .${_gridClasses.gridClasses.filler}`]: {
641
+ flex: 1
652
642
  }
653
643
  });
654
644
  return gridStyle;