@mui/x-data-grid 8.12.1 → 8.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/DataGrid/DataGrid.js +2 -1
  3. package/DataGrid/useDataGridComponent.js +2 -2
  4. package/components/GridLoadingOverlay.d.ts +1 -1
  5. package/components/GridRow.js +3 -7
  6. package/components/GridScrollShadows.d.ts +6 -0
  7. package/components/GridScrollShadows.js +108 -0
  8. package/components/GridScrollbarFillerCell.d.ts +0 -6
  9. package/components/GridScrollbarFillerCell.js +1 -7
  10. package/components/GridSkeletonLoadingOverlay.js +3 -10
  11. package/components/base/GridOverlays.d.ts +1 -3
  12. package/components/columnHeaders/GridColumnHeaderItem.d.ts +0 -1
  13. package/components/columnHeaders/GridColumnHeaderItem.js +1 -3
  14. package/components/containers/GridRootStyles.js +6 -21
  15. package/components/toolbarV8/GridToolbar.js +12 -10
  16. package/components/virtualization/GridMainContainer.d.ts +1 -2
  17. package/components/virtualization/GridVirtualScrollbar.d.ts +1 -0
  18. package/components/virtualization/GridVirtualScrollbar.js +21 -25
  19. package/components/virtualization/GridVirtualScroller.js +31 -12
  20. package/components/virtualization/GridVirtualScrollerFiller.js +2 -4
  21. package/constants/gridClasses.d.ts +0 -20
  22. package/constants/gridClasses.js +2 -2
  23. package/esm/DataGrid/DataGrid.js +2 -1
  24. package/esm/DataGrid/useDataGridComponent.js +2 -2
  25. package/esm/components/GridLoadingOverlay.d.ts +1 -1
  26. package/esm/components/GridRow.js +3 -7
  27. package/esm/components/GridScrollShadows.d.ts +6 -0
  28. package/esm/components/GridScrollShadows.js +103 -0
  29. package/esm/components/GridScrollbarFillerCell.d.ts +0 -6
  30. package/esm/components/GridScrollbarFillerCell.js +1 -7
  31. package/esm/components/GridSkeletonLoadingOverlay.js +3 -10
  32. package/esm/components/base/GridOverlays.d.ts +1 -3
  33. package/esm/components/columnHeaders/GridColumnHeaderItem.d.ts +0 -1
  34. package/esm/components/columnHeaders/GridColumnHeaderItem.js +1 -3
  35. package/esm/components/containers/GridRootStyles.js +6 -21
  36. package/esm/components/toolbarV8/GridToolbar.js +12 -10
  37. package/esm/components/virtualization/GridMainContainer.d.ts +1 -2
  38. package/esm/components/virtualization/GridVirtualScrollbar.d.ts +1 -0
  39. package/esm/components/virtualization/GridVirtualScrollbar.js +20 -24
  40. package/esm/components/virtualization/GridVirtualScroller.js +32 -13
  41. package/esm/components/virtualization/GridVirtualScrollerFiller.js +2 -4
  42. package/esm/constants/gridClasses.d.ts +0 -20
  43. package/esm/constants/gridClasses.js +2 -2
  44. package/esm/hooks/core/useGridVirtualizer.js +4 -0
  45. package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -10
  46. package/esm/hooks/features/columnResize/useGridColumnResize.js +16 -0
  47. package/esm/hooks/features/dataSource/useGridDataSourceBase.js +6 -0
  48. package/esm/hooks/features/index.d.ts +2 -1
  49. package/esm/hooks/features/index.js +2 -1
  50. package/esm/hooks/features/overlays/gridOverlaysInterfaces.d.ts +3 -0
  51. package/esm/hooks/features/overlays/gridOverlaysInterfaces.js +1 -0
  52. package/esm/hooks/features/overlays/index.d.ts +1 -0
  53. package/esm/hooks/features/overlays/index.js +1 -0
  54. package/esm/hooks/features/overlays/useGridOverlays.d.ts +6 -8
  55. package/esm/hooks/features/overlays/useGridOverlays.js +3 -27
  56. package/esm/hooks/features/rows/useGridParamsApi.d.ts +2 -1
  57. package/esm/hooks/features/rows/useGridParamsApi.js +5 -24
  58. package/esm/hooks/features/rows/useGridParamsOverridableMethods.d.ts +7 -0
  59. package/esm/hooks/features/rows/useGridParamsOverridableMethods.js +28 -0
  60. package/esm/hooks/features/rows/useGridRowSpanning.js +4 -1
  61. package/esm/hooks/features/rows/useGridRows.js +41 -1
  62. package/esm/hooks/features/sorting/gridSortingUtils.d.ts +1 -3
  63. package/esm/hooks/features/sorting/gridSortingUtils.js +4 -6
  64. package/esm/hooks/features/sorting/useGridSorting.d.ts +1 -2
  65. package/esm/hooks/features/sorting/useGridSorting.js +3 -4
  66. package/esm/index.js +1 -1
  67. package/esm/internals/index.d.ts +1 -0
  68. package/esm/internals/index.js +1 -0
  69. package/esm/material/variables.js +2 -2
  70. package/esm/models/api/gridRowApi.d.ts +10 -0
  71. package/esm/models/configuration/gridAggregationConfiguration.d.ts +0 -6
  72. package/esm/models/configuration/gridConfiguration.d.ts +2 -1
  73. package/esm/models/configuration/gridParamsConfiguration.d.ts +12 -0
  74. package/esm/models/configuration/gridParamsConfiguration.js +1 -0
  75. package/esm/models/props/DataGridProps.d.ts +10 -0
  76. package/esm/utils/cellBorderUtils.d.ts +3 -2
  77. package/esm/utils/cellBorderUtils.js +7 -4
  78. package/hooks/core/useGridVirtualizer.js +4 -0
  79. package/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -10
  80. package/hooks/features/columnResize/useGridColumnResize.js +16 -0
  81. package/hooks/features/dataSource/useGridDataSourceBase.js +6 -0
  82. package/hooks/features/index.d.ts +2 -1
  83. package/hooks/features/index.js +11 -0
  84. package/hooks/features/overlays/gridOverlaysInterfaces.d.ts +3 -0
  85. package/hooks/features/overlays/gridOverlaysInterfaces.js +5 -0
  86. package/hooks/features/overlays/index.d.ts +1 -0
  87. package/hooks/features/overlays/index.js +5 -0
  88. package/hooks/features/overlays/useGridOverlays.d.ts +6 -8
  89. package/hooks/features/overlays/useGridOverlays.js +3 -28
  90. package/hooks/features/rows/useGridParamsApi.d.ts +2 -1
  91. package/hooks/features/rows/useGridParamsApi.js +5 -24
  92. package/hooks/features/rows/useGridParamsOverridableMethods.d.ts +7 -0
  93. package/hooks/features/rows/useGridParamsOverridableMethods.js +36 -0
  94. package/hooks/features/rows/useGridRowSpanning.js +4 -1
  95. package/hooks/features/rows/useGridRows.js +41 -1
  96. package/hooks/features/sorting/gridSortingUtils.d.ts +1 -3
  97. package/hooks/features/sorting/gridSortingUtils.js +4 -6
  98. package/hooks/features/sorting/useGridSorting.d.ts +1 -2
  99. package/hooks/features/sorting/useGridSorting.js +3 -4
  100. package/index.js +1 -1
  101. package/internals/index.d.ts +1 -0
  102. package/internals/index.js +8 -0
  103. package/material/variables.js +2 -2
  104. package/models/api/gridRowApi.d.ts +10 -0
  105. package/models/configuration/gridAggregationConfiguration.d.ts +0 -6
  106. package/models/configuration/gridConfiguration.d.ts +2 -1
  107. package/models/configuration/gridParamsConfiguration.d.ts +12 -0
  108. package/models/configuration/gridParamsConfiguration.js +5 -0
  109. package/models/props/DataGridProps.d.ts +10 -0
  110. package/package.json +3 -3
  111. package/utils/cellBorderUtils.d.ts +3 -2
  112. package/utils/cellBorderUtils.js +7 -4
@@ -6,7 +6,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.GridVirtualScrollbar = void 0;
9
+ exports.ScrollbarCorner = exports.GridVirtualScrollbar = void 0;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _system = require("@mui/system");
12
12
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
@@ -44,7 +44,7 @@ const Scrollbar = (0, _system.styled)('div')({
44
44
  });
45
45
  const ScrollbarVertical = (0, _system.styled)(Scrollbar)({
46
46
  width: 'var(--size)',
47
- height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-topContainerHeight) - var(--DataGrid-bottomContainerHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
47
+ height: 'calc(var(--DataGrid-hasScrollY) * (100% - var(--DataGrid-headersTotalHeight) - var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize)))',
48
48
  overflowY: 'auto',
49
49
  overflowX: 'hidden',
50
50
  // Disable focus-visible style, it's a scrollbar.
@@ -52,11 +52,11 @@ const ScrollbarVertical = (0, _system.styled)(Scrollbar)({
52
52
  '& > div': {
53
53
  width: 'var(--size)'
54
54
  },
55
- top: 'var(--DataGrid-topContainerHeight)',
56
- right: '0px'
55
+ top: 'var(--DataGrid-headersTotalHeight)',
56
+ right: 0
57
57
  });
58
58
  const ScrollbarHorizontal = (0, _system.styled)(Scrollbar)({
59
- width: '100%',
59
+ width: 'calc(var(--DataGrid-hasScrollX) * (100% - var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize)))',
60
60
  height: 'var(--size)',
61
61
  overflowY: 'hidden',
62
62
  overflowX: 'auto',
@@ -65,7 +65,14 @@ const ScrollbarHorizontal = (0, _system.styled)(Scrollbar)({
65
65
  '& > div': {
66
66
  height: 'var(--size)'
67
67
  },
68
- bottom: '0px'
68
+ bottom: 0
69
+ });
70
+ const ScrollbarCorner = exports.ScrollbarCorner = (0, _system.styled)(Scrollbar)({
71
+ width: 'var(--size)',
72
+ height: 'var(--size)',
73
+ right: 0,
74
+ bottom: 0,
75
+ overflow: 'scroll'
69
76
  });
70
77
  const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forwardRef)(function GridVirtualScrollbar(props, ref) {
71
78
  const apiRef = (0, _useGridPrivateApiContext.useGridPrivateApiContext)();
@@ -73,16 +80,12 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forw
73
80
  const isLocked = React.useRef(false);
74
81
  const lastPosition = React.useRef(0);
75
82
  const scrollbarRef = React.useRef(null);
76
- const contentRef = React.useRef(null);
77
83
  const classes = useUtilityClasses(rootProps, props.position);
78
84
  const dimensions = (0, _hooks.useGridSelector)(apiRef, _hooks.gridDimensionsSelector);
79
85
  const propertyDimension = props.position === 'vertical' ? 'height' : 'width';
80
86
  const propertyScroll = props.position === 'vertical' ? 'scrollTop' : 'scrollLeft';
81
87
  const propertyScrollPosition = props.position === 'vertical' ? 'top' : 'left';
82
- const hasScroll = props.position === 'vertical' ? dimensions.hasScrollX : dimensions.hasScrollY;
83
- const contentSize = dimensions.minimumSize[propertyDimension] + (hasScroll ? dimensions.scrollbarSize : 0);
84
- const scrollbarSize = props.position === 'vertical' ? dimensions.viewportInnerSize.height : dimensions.viewportOuterSize.width;
85
- const scrollbarInnerSize = scrollbarSize * (contentSize / dimensions.viewportOuterSize[propertyDimension]);
88
+ const scrollbarInnerSize = props.position === 'horizontal' ? dimensions.minimumSize.width : dimensions.minimumSize.height - dimensions.headersTotalHeight;
86
89
  const onScrollerScroll = (0, _useEventCallback.default)(() => {
87
90
  const scrollbar = scrollbarRef.current;
88
91
  const scrollPosition = props.scrollPosition.current;
@@ -98,8 +101,7 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forw
98
101
  return;
99
102
  }
100
103
  isLocked.current = true;
101
- const value = scrollPosition[propertyScrollPosition] / contentSize;
102
- scrollbar[propertyScroll] = value * scrollbarInnerSize;
104
+ scrollbar[propertyScroll] = scrollPosition[propertyScrollPosition];
103
105
  });
104
106
  const onScrollbarScroll = (0, _useEventCallback.default)(() => {
105
107
  const scroller = apiRef.current.virtualScrollerRef.current;
@@ -112,8 +114,7 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forw
112
114
  return;
113
115
  }
114
116
  isLocked.current = true;
115
- const value = scrollbar[propertyScroll] / scrollbarInnerSize;
116
- scroller[propertyScroll] = value * contentSize;
117
+ scroller[propertyScroll] = scrollbar[propertyScroll];
117
118
  });
118
119
  (0, _useOnMount.useOnMount)(() => {
119
120
  const scroller = apiRef.current.virtualScrollerRef.current;
@@ -128,18 +129,13 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forw
128
129
  scrollbar.removeEventListener('scroll', onScrollbarScroll, options);
129
130
  };
130
131
  });
131
- React.useEffect(() => {
132
- const content = contentRef.current;
133
- content.style.setProperty(propertyDimension, `${scrollbarInnerSize}px`);
134
- }, [scrollbarInnerSize, propertyDimension]);
135
132
  const Container = props.position === 'vertical' ? ScrollbarVertical : ScrollbarHorizontal;
133
+ const scrollbarInnerStyle = React.useMemo(() => ({
134
+ [propertyDimension]: `${scrollbarInnerSize}px`
135
+ }), [propertyDimension, scrollbarInnerSize]);
136
136
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
137
137
  ref: (0, _useForkRef.default)(ref, scrollbarRef),
138
138
  className: classes.root,
139
- style: props.position === 'vertical' && rootProps.listView ? {
140
- height: '100%',
141
- top: 0
142
- } : undefined,
143
139
  tabIndex: -1,
144
140
  "aria-hidden": "true"
145
141
  // tabIndex does not prevent focus with a mouse click, throwing a console error
@@ -149,8 +145,8 @@ const GridVirtualScrollbar = exports.GridVirtualScrollbar = (0, _forwardRef.forw
149
145
  event.target.blur();
150
146
  },
151
147
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
152
- ref: contentRef,
153
- className: classes.content
148
+ className: classes.content,
149
+ style: scrollbarInnerStyle
154
150
  })
155
151
  });
156
152
  });
@@ -25,6 +25,8 @@ var _GridVirtualScrollerContent = require("./GridVirtualScrollerContent");
25
25
  var _GridVirtualScrollerFiller = require("./GridVirtualScrollerFiller");
26
26
  var _GridVirtualScrollerRenderZone = require("./GridVirtualScrollerRenderZone");
27
27
  var _GridVirtualScrollbar = require("./GridVirtualScrollbar");
28
+ var _GridScrollShadows = require("../GridScrollShadows");
29
+ var _GridOverlays = require("../base/GridOverlays");
28
30
  var _jsxRuntime = require("react/jsx-runtime");
29
31
  const useUtilityClasses = ownerState => {
30
32
  const {
@@ -76,14 +78,17 @@ function GridVirtualScroller(props) {
76
78
  const hasPinnedRight = (0, _useGridSelector.useGridSelector)(apiRef, hasPinnedRightSelector);
77
79
  const hasBottomFiller = (0, _useGridSelector.useGridSelector)(apiRef, _gridDimensionsSelectors.gridHasBottomFillerSelector);
78
80
  const {
79
- getOverlay,
80
- overlaysProps
81
- } = (0, _useGridOverlays.useGridOverlays)();
82
- const ownerState = (0, _extends2.default)({
81
+ overlayType,
82
+ loadingOverlayVariant
83
+ } = (0, _useGridOverlays.useGridOverlays)(apiRef, rootProps);
84
+ const Overlay = rootProps.slots?.[overlayType];
85
+ const ownerState = {
83
86
  classes: rootProps.classes,
84
87
  hasScrollX,
85
- hasPinnedRight
86
- }, overlaysProps);
88
+ hasPinnedRight,
89
+ overlayType,
90
+ loadingOverlayVariant
91
+ };
87
92
  const classes = useUtilityClasses(ownerState);
88
93
  const virtualScroller = apiRef.current.virtualizer.api.useVirtualization().getters;
89
94
  const {
@@ -117,7 +122,11 @@ function GridVirtualScroller(props) {
117
122
  position: "top",
118
123
  virtualScroller: virtualScroller
119
124
  })]
120
- }), getOverlay(), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerContent.GridVirtualScrollerContent, (0, _extends2.default)({}, getContentProps(), {
125
+ }), overlayType && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridOverlays.GridOverlayWrapper, {
126
+ overlayType: overlayType,
127
+ loadingOverlayVariant: loadingOverlayVariant,
128
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Overlay, (0, _extends2.default)({}, rootProps.slotProps?.[overlayType]))
129
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerContent.GridVirtualScrollerContent, (0, _extends2.default)({}, getContentProps(), {
121
130
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridVirtualScrollerRenderZone.GridVirtualScrollerRenderZone, {
122
131
  role: "rowgroup",
123
132
  children: [rows, /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.detailPanels, {
@@ -132,10 +141,20 @@ function GridVirtualScroller(props) {
132
141
  virtualScroller: virtualScroller
133
142
  })
134
143
  })]
135
- })), hasScrollX && !rootProps.listView && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
136
- position: "horizontal"
137
- }, getScrollbarHorizontalProps())), hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
138
- position: "vertical"
139
- }, getScrollbarVerticalProps())), props.children]
144
+ })), hasScrollX && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
145
+ children: [rootProps.pinnedColumnsSectionSeparator?.endsWith('shadow') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollShadows.GridScrollShadows, {
146
+ position: "horizontal"
147
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
148
+ position: "horizontal"
149
+ }, getScrollbarHorizontalProps()))]
150
+ }), hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
151
+ children: [rootProps.pinnedRowsSectionSeparator?.endsWith('shadow') && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollShadows.GridScrollShadows, {
152
+ position: "vertical"
153
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.GridVirtualScrollbar, (0, _extends2.default)({
154
+ position: "vertical"
155
+ }, getScrollbarVerticalProps()))]
156
+ }), hasScrollX && hasScrollY && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollbar.ScrollbarCorner, {
157
+ "aria-hidden": "true"
158
+ }), props.children]
140
159
  }));
141
160
  }
@@ -28,12 +28,10 @@ const Pinned = (0, _system.styled)('div')({
28
28
  backgroundColor: _cssVariables.vars.cell.background.pinned
29
29
  });
30
30
  const PinnedLeft = (0, _system.styled)(Pinned)({
31
- left: 0,
32
- borderRight: '1px solid var(--rowBorderColor)'
31
+ left: 0
33
32
  });
34
33
  const PinnedRight = (0, _system.styled)(Pinned)({
35
- right: 0,
36
- borderLeft: '1px solid var(--rowBorderColor)'
34
+ right: 0
37
35
  });
38
36
  const Main = (0, _system.styled)('div')({
39
37
  flexGrow: 1,
@@ -235,11 +235,6 @@ export interface GridClasses {
235
235
  * Styles applied to the last column header element.
236
236
  */
237
237
  'columnHeader--last': string;
238
- /**
239
- * Styles applied to the last unpinned column header item.
240
- * @ignore - do not document.
241
- */
242
- 'columnHeader--lastUnpinned': string;
243
238
  /**
244
239
  * Styles applied to a column header item when its sibling with a bordering separator is focused.
245
240
  * @ignore - do not document.
@@ -676,21 +671,6 @@ export interface GridClasses {
676
671
  * Styles applied to the scrollbar filler cell.
677
672
  */
678
673
  scrollbarFiller: string;
679
- /**
680
- * @ignore - do not document.
681
- * Styles applied to the scrollbar filler cell, in header position.
682
- */
683
- 'scrollbarFiller--header': string;
684
- /**
685
- * @ignore - do not document.
686
- * Styles applied to the scrollbar filler cell, with a border top.
687
- */
688
- 'scrollbarFiller--borderTop': string;
689
- /**
690
- * @ignore - do not document.
691
- * Styles applied to the scrollbar filler cell, with a border bottom.
692
- */
693
- 'scrollbarFiller--borderBottom': string;
694
674
  /**
695
675
  * @ignore - do not document.
696
676
  * Styles applied to the scrollbar filler cell.
@@ -11,6 +11,6 @@ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generat
11
11
  function getDataGridUtilityClass(slot) {
12
12
  return (0, _generateUtilityClass.default)('MuiDataGrid', slot);
13
13
  }
14
- const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', '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', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--lastUnpinned', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
14
+ const gridClasses = exports.gridClasses = (0, _generateUtilityClasses.default)('MuiDataGrid', ['aiAssistantPanel', 'aiAssistantPanelHeader', 'aiAssistantPanelTitleContainer', 'aiAssistantPanelTitle', 'aiAssistantPanelBody', 'aiAssistantPanelEmptyText', 'aiAssistantPanelFooter', 'aiAssistantPanelConversation', 'aiAssistantPanelConversationList', 'aiAssistantPanelConversationTitle', 'aiAssistantPanelSuggestions', 'aiAssistantPanelSuggestionsList', 'aiAssistantPanelSuggestionsItem', 'aiAssistantPanelSuggestionsLabel', 'actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'aggregationRowOverlayWrapper', 'autoHeight', 'autosizing', 'mainContent', 'withSidePanel', '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', 'collapsible', 'collapsibleTrigger', 'collapsibleIcon', 'collapsiblePanel', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeader--siblingFocused', 'columnHeader--filter', 'columnHeaderFilterInput', 'columnHeaderFilterOperatorLabel', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementSearchInput', 'columnsManagementFooter', 'columnsManagementScrollArea', 'columnsManagementEmptyText', 'container--top', 'container--bottom', 'detailPanel', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderBottom', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hiddenContent', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'root--noToolbar', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible',
15
15
  // TODO v9: Rename to `cell--dragging`
16
- 'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--borderBottom', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
16
+ 'row--dragging', 'row--dropAbove', 'row--dropBelow', 'row--beingDragged', 'row--dynamicHeight', 'row--detailPanelExpanded', 'row--borderBottom', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowReorderIcon', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea--up', 'scrollArea--down', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortButton', 'sortIcon', 'shadowScrollArea', 'sidebar', 'sidebarHeader', 'toolbarContainer', 'toolbar', 'toolbarLabel', 'toolbarDivider', 'toolbarFilterList', 'toolbarQuickFilter', 'toolbarQuickFilterTrigger', 'toolbarQuickFilterControl', 'virtualScroller', 'virtualScroller--hasScrollX', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'groupingCriteriaCellLoadingContainer', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pivotPanelAvailableFields', 'pivotPanelField', 'pivotPanelField--sorted', 'pivotPanelFieldActionContainer', 'pivotPanelFieldCheckbox', 'pivotPanelFieldDragIcon', 'pivotPanelFieldList', 'pivotPanelFieldName', 'pivotPanelHeader', 'pivotPanelPlaceholder', 'pivotPanelScrollArea', 'pivotPanelSearchContainer', 'pivotPanelSection', 'pivotPanelSectionTitle', 'pivotPanelSections', 'pivotPanelSwitch', 'pivotPanelSwitchLabel', 'prompt', 'promptContent', 'promptText', 'promptFeedback', 'promptChangeList', 'promptChangesToggle', 'promptChangesToggleIcon', 'promptIcon', 'promptIconContainer', 'promptError', 'promptAction']);
@@ -8,6 +8,7 @@ import { GridRoot } from "../components/index.js";
8
8
  import { useGridAriaAttributes } from "../hooks/utils/useGridAriaAttributes.js";
9
9
  import { useGridRowAriaAttributes } from "../hooks/features/rows/useGridRowAriaAttributes.js";
10
10
  import { useGridRowsOverridableMethods } from "../hooks/features/rows/useGridRowsOverridableMethods.js";
11
+ import { useGridParamsOverridableMethods } from "../hooks/features/rows/useGridParamsOverridableMethods.js";
11
12
  import { GridContextProvider } from "../context/GridContextProvider.js";
12
13
  import { useDataGridComponent } from "./useDataGridComponent.js";
13
14
  import { useDataGridProps } from "./useDataGridProps.js";
@@ -21,8 +22,8 @@ const configuration = {
21
22
  useGridAriaAttributes,
22
23
  useGridRowAriaAttributes,
23
24
  useGridRowsOverridableMethods,
25
+ useGridParamsOverridableMethods,
24
26
  useCellAggregationResult: () => null,
25
- useSortValueGetter: apiRef => apiRef.current.getCellValue,
26
27
  useFilterValueGetter: apiRef => apiRef.current.getRowValue
27
28
  }
28
29
  };
@@ -72,14 +72,14 @@ export const useDataGridComponent = (apiRef, props, configuration) => {
72
72
  useGridColumns(apiRef, props);
73
73
  useGridRows(apiRef, props, configuration);
74
74
  useGridRowSpanning(apiRef, props);
75
- useGridParamsApi(apiRef, props);
75
+ useGridParamsApi(apiRef, props, configuration);
76
76
  useGridColumnSpanning(apiRef);
77
77
  useGridColumnGrouping(apiRef, props);
78
78
  useGridEditing(apiRef, props);
79
79
  useGridFocus(apiRef, props);
80
80
  useGridPreferencesPanel(apiRef, props);
81
81
  useGridFilter(apiRef, props, configuration);
82
- useGridSorting(apiRef, props, configuration);
82
+ useGridSorting(apiRef, props);
83
83
  useGridDensity(apiRef, props);
84
84
  useGridColumnResize(apiRef, props);
85
85
  useGridPagination(apiRef, props);
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { GridOverlayProps } from "./containers/GridOverlay.js";
3
- export type GridLoadingOverlayVariant = 'circular-progress' | 'linear-progress' | 'skeleton';
3
+ import type { GridLoadingOverlayVariant } from "../hooks/features/overlays/gridOverlaysInterfaces.js";
4
4
  export interface GridLoadingOverlayProps extends GridOverlayProps {
5
5
  /**
6
6
  * The variant of the overlay.
@@ -26,7 +26,6 @@ import { gridSortModelSelector } from "../hooks/features/sorting/gridSortingSele
26
26
  import { gridRowNodeSelector } from "../hooks/features/rows/gridRowsSelector.js";
27
27
  import { gridEditRowsStateSelector, gridRowIsEditingSelector } from "../hooks/features/editing/gridEditingSelectors.js";
28
28
  import { gridIsRowDragActiveSelector } from "../hooks/features/rowReorder/gridRowReorderSelector.js";
29
- import { GridScrollbarFillerCell as ScrollbarFiller } from "./GridScrollbarFillerCell.js";
30
29
  import { getPinnedCellOffset } from "../internals/utils/getPinnedCellOffset.js";
31
30
  import { useGridConfiguration } from "../hooks/utils/useGridConfiguration.js";
32
31
  import { useGridPrivateApiContext } from "../hooks/utils/useGridPrivateApiContext.js";
@@ -240,8 +239,8 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
240
239
  const canReorderRow = isRowReorderingEnabled && !sortModel.length;
241
240
  const disableDragEvents = !(canReorderColumn || isReorderCell && canReorderRow || isRowDragActive);
242
241
  const cellIsNotVisible = pinnedPosition === PinnedColumnPosition.VIRTUAL;
243
- const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection);
244
- const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
242
+ const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, indexInSection, rootProps.showCellVerticalBorder, rootProps.pinnedColumnsSectionSeparator);
243
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, indexInSection, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller, rootProps.pinnedColumnsSectionSeparator);
245
244
  return /*#__PURE__*/_jsx(slots.cell, _extends({
246
245
  column: column,
247
246
  width: width,
@@ -309,10 +308,7 @@ const GridRow = forwardRef(function GridRow(props, refProp) {
309
308
  }), cells, /*#__PURE__*/_jsx("div", {
310
309
  role: "presentation",
311
310
  className: clsx(gridClasses.cell, gridClasses.cellEmpty)
312
- }), rightCells, scrollbarWidth !== 0 && /*#__PURE__*/_jsx(ScrollbarFiller, {
313
- pinnedRight: pinnedColumns.right.length > 0,
314
- borderTop: !isFirstVisible
315
- })]
311
+ }), rightCells]
316
312
  }));
317
313
  });
318
314
  if (process.env.NODE_ENV !== "production") GridRow.displayName = "GridRow";
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ interface GridScrollShadowsProps {
3
+ position: 'vertical' | 'horizontal';
4
+ }
5
+ declare function GridScrollShadows(props: GridScrollShadowsProps): React.JSX.Element;
6
+ export { GridScrollShadows };
@@ -0,0 +1,103 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import { styled } from '@mui/system';
5
+ import { useRtl } from '@mui/system/RtlProvider';
6
+ import { gridDimensionsSelector, gridPinnedColumnsSelector, useGridEvent, useGridSelector } from "../hooks/index.js";
7
+ import { gridPinnedRowsSelector } from "../hooks/features/rows/gridRowsSelector.js";
8
+ import { useGridRootProps } from "../hooks/utils/useGridRootProps.js";
9
+ import { vars } from "../constants/cssVariables.js";
10
+ import { useGridPrivateApiContext } from "../hooks/utils/useGridPrivateApiContext.js";
11
+ import { gridHasScrollXSelector, gridHasScrollYSelector } from "../hooks/features/dimensions/gridDimensionsSelectors.js";
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ const ScrollShadow = styled('div')(({
14
+ theme
15
+ }) => ({
16
+ position: 'absolute',
17
+ inset: 0,
18
+ pointerEvents: 'none',
19
+ transition: vars.transition(['box-shadow'], {
20
+ duration: vars.transitions.duration.short
21
+ }),
22
+ '--length': theme.palette.mode === 'dark' ? '8px' : '6px',
23
+ '--length-inverse': 'calc(var(--length) * -1)',
24
+ '--opacity': theme.palette.mode === 'dark' ? '0.7' : '0.18',
25
+ '--blur': 'var(--length)',
26
+ '--spread': 'calc(var(--length) * -1)',
27
+ '--color-start': 'rgba(0, 0, 0, calc(var(--hasScrollStart) * var(--opacity)))',
28
+ '--color-end': 'rgba(0, 0, 0, calc(var(--hasScrollEnd) * var(--opacity)))',
29
+ variants: [{
30
+ props: {
31
+ position: 'vertical'
32
+ },
33
+ style: {
34
+ top: 'var(--DataGrid-topContainerHeight)',
35
+ bottom: 'calc(var(--DataGrid-bottomContainerHeight) + var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize))',
36
+ boxShadow: 'inset 0 var(--length) var(--blur) var(--spread) var(--color-start), inset 0 var(--length-inverse) var(--blur) var(--spread) var(--color-end)'
37
+ }
38
+ }, {
39
+ props: {
40
+ position: 'horizontal'
41
+ },
42
+ style: {
43
+ left: 'var(--DataGrid-leftPinnedWidth)',
44
+ right: 'calc(var(--DataGrid-rightPinnedWidth) + var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize))',
45
+ boxShadow: 'inset var(--length) 0 var(--blur) var(--spread) var(--color-start), inset var(--length-inverse) 0 var(--blur) var(--spread) var(--color-end)'
46
+ }
47
+ }]
48
+ }));
49
+ function GridScrollShadows(props) {
50
+ const {
51
+ position
52
+ } = props;
53
+ const rootProps = useGridRootProps();
54
+ const ownerState = {
55
+ classes: rootProps.classes,
56
+ position
57
+ };
58
+ const ref = React.useRef(null);
59
+ const apiRef = useGridPrivateApiContext();
60
+ const hasScrollX = useGridSelector(apiRef, gridHasScrollXSelector);
61
+ const hasScrollY = useGridSelector(apiRef, gridHasScrollYSelector);
62
+ const pinnedRows = useGridSelector(apiRef, gridPinnedRowsSelector);
63
+ const pinnedColumns = useGridSelector(apiRef, gridPinnedColumnsSelector);
64
+ const initialScrollable = position === 'vertical' ? hasScrollY && pinnedRows?.bottom?.length > 0 : hasScrollX && pinnedColumns?.right?.length !== undefined && pinnedColumns?.right?.length > 0;
65
+ const isRtl = useRtl();
66
+ const updateScrollShadowVisibility = React.useCallback(scrollPosition => {
67
+ if (!ref.current) {
68
+ return;
69
+ }
70
+ // Math.abs to convert negative scroll position (RTL) to positive
71
+ const scroll = Math.abs(Math.round(scrollPosition));
72
+ const dimensions = gridDimensionsSelector(apiRef);
73
+ const maxScroll = Math.round(dimensions.contentSize[position === 'vertical' ? 'height' : 'width'] - dimensions.viewportInnerSize[position === 'vertical' ? 'height' : 'width']);
74
+ const hasPinnedStart = position === 'vertical' ? pinnedRows?.top?.length > 0 : pinnedColumns?.left?.length !== undefined && pinnedColumns?.left?.length > 0;
75
+ const hasPinnedEnd = position === 'vertical' ? pinnedRows?.bottom?.length > 0 : pinnedColumns?.right?.length !== undefined && pinnedColumns?.right?.length > 0;
76
+ const scrollIsNotAtStart = isRtl ? scroll < maxScroll : scroll > 0;
77
+ const scrollIsNotAtEnd = isRtl ? scroll > 0 : scroll < maxScroll;
78
+ ref.current.style.setProperty('--hasScrollStart', hasPinnedStart && scrollIsNotAtStart ? '1' : '0');
79
+ ref.current.style.setProperty('--hasScrollEnd', hasPinnedEnd && scrollIsNotAtEnd ? '1' : '0');
80
+ }, [pinnedRows, pinnedColumns, isRtl, position, apiRef]);
81
+ const handleScrolling = scrollParams => {
82
+ updateScrollShadowVisibility(scrollParams[position === 'vertical' ? 'top' : 'left']);
83
+ };
84
+ const handleColumnResizeStop = () => {
85
+ if (position === 'horizontal') {
86
+ updateScrollShadowVisibility(apiRef.current.virtualScrollerRef?.current?.scrollLeft || 0);
87
+ }
88
+ };
89
+ useGridEvent(apiRef, 'scrollPositionChange', handleScrolling);
90
+ useGridEvent(apiRef, 'columnResizeStop', handleColumnResizeStop);
91
+ React.useEffect(() => {
92
+ updateScrollShadowVisibility((position === 'horizontal' ? apiRef.current.virtualScrollerRef?.current?.scrollLeft : apiRef.current.virtualScrollerRef?.current?.scrollTop) ?? 0);
93
+ }, [updateScrollShadowVisibility, apiRef, position]);
94
+ return /*#__PURE__*/_jsx(ScrollShadow, {
95
+ ownerState: ownerState,
96
+ ref: ref,
97
+ style: {
98
+ '--hasScrollStart': 0,
99
+ '--hasScrollEnd': initialScrollable ? '1' : '0'
100
+ }
101
+ });
102
+ }
103
+ export { GridScrollShadows };
@@ -1,13 +1,7 @@
1
1
  import * as React from 'react';
2
2
  declare function GridScrollbarFillerCell({
3
- header,
4
- borderTop,
5
- borderBottom,
6
3
  pinnedRight
7
4
  }: {
8
- header?: boolean;
9
- borderTop?: boolean;
10
- borderBottom?: boolean;
11
5
  pinnedRight?: boolean;
12
6
  }): React.JSX.Element;
13
7
  export { GridScrollbarFillerCell };
@@ -4,20 +4,14 @@ import { gridClasses } from "../constants/index.js";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  const classes = {
6
6
  root: gridClasses.scrollbarFiller,
7
- header: gridClasses['scrollbarFiller--header'],
8
- borderTop: gridClasses['scrollbarFiller--borderTop'],
9
- borderBottom: gridClasses['scrollbarFiller--borderBottom'],
10
7
  pinnedRight: gridClasses['scrollbarFiller--pinnedRight']
11
8
  };
12
9
  function GridScrollbarFillerCell({
13
- header,
14
- borderTop = true,
15
- borderBottom,
16
10
  pinnedRight
17
11
  }) {
18
12
  return /*#__PURE__*/_jsx("div", {
19
13
  role: "presentation",
20
- className: clsx(classes.root, header && classes.header, borderTop && classes.borderTop, borderBottom && classes.borderBottom, pinnedRight && classes.pinnedRight)
14
+ className: clsx(classes.root, pinnedRight && classes.pinnedRight)
21
15
  });
22
16
  }
23
17
  export { GridScrollbarFillerCell };
@@ -17,7 +17,6 @@ import { getDataGridUtilityClass, gridClasses } from "../constants/gridClasses.j
17
17
  import { getPinnedCellOffset } from "../internals/utils/getPinnedCellOffset.js";
18
18
  import { shouldCellShowLeftBorder, shouldCellShowRightBorder } from "../utils/cellBorderUtils.js";
19
19
  import { escapeOperandAttributeSelector } from "../utils/domUtils.js";
20
- import { GridScrollbarFillerCell } from "./GridScrollbarFillerCell.js";
21
20
  import { rtlFlipSide } from "../utils/rtlFlipSide.js";
22
21
  import { attachPinnedStyle } from "../internals/utils/index.js";
23
22
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -92,8 +91,8 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
92
91
  const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
93
92
  const pinnedStyle = attachPinnedStyle({}, isRtl, pinnedPosition, getPinnedCellOffset(pinnedPosition, column.computedWidth, colIndex, positions, dimensions.columnsTotalWidth, scrollbarWidth));
94
93
  const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
95
- const showRightBorder = shouldCellShowRightBorder(pinnedPosition, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
96
- const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, sectionIndex);
94
+ const showRightBorder = shouldCellShowRightBorder(pinnedPosition, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller, rootProps.pinnedColumnsSectionSeparator);
95
+ const showLeftBorder = shouldCellShowLeftBorder(pinnedPosition, sectionIndex, rootProps.showCellVerticalBorder, rootProps.pinnedColumnsSectionSeparator);
97
96
  const isLastColumn = colIndex === columns.length - 1;
98
97
  const isFirstPinnedRight = isPinnedRight && sectionIndex === 0;
99
98
  const hasFillerBefore = isFirstPinnedRight && gridHasFiller;
@@ -104,7 +103,6 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
104
103
  width: emptyCellWidth,
105
104
  empty: true
106
105
  }, `skeleton-filler-column-${i}`);
107
- const hasScrollbarFiller = isLastColumn && scrollbarWidth !== 0;
108
106
  if (hasFillerBefore) {
109
107
  rowCells.push(emptyCell);
110
108
  }
@@ -124,11 +122,6 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
124
122
  if (hasFillerAfter) {
125
123
  rowCells.push(emptyCell);
126
124
  }
127
- if (hasScrollbarFiller) {
128
- rowCells.push(/*#__PURE__*/_jsx(GridScrollbarFillerCell, {
129
- pinnedRight: pinnedColumns.right.length > 0
130
- }, `skeleton-scrollbar-filler-${i}`));
131
- }
132
125
  }
133
126
  array.push(/*#__PURE__*/_jsx("div", {
134
127
  className: clsx(gridClasses.row, gridClasses.rowSkeleton, i === 0 && !showFirstRowBorder && gridClasses['row--firstVisible']),
@@ -136,7 +129,7 @@ export const GridSkeletonLoadingOverlayInner = forwardRef(function GridSkeletonL
136
129
  }, `skeleton-row-${i}`));
137
130
  }
138
131
  return array;
139
- }, [skeletonRowsCount, columns, getPinnedPosition, isRtl, pinnedColumns, dimensions.hasScrollY, dimensions.scrollbarSize, dimensions.columnsTotalWidth, dimensions.viewportOuterSize.width, dimensions.rowHeight, positions, rootProps.showCellVerticalBorder, slots, visibleColumns, showFirstRowBorder]);
132
+ }, [skeletonRowsCount, columns, getPinnedPosition, isRtl, pinnedColumns, dimensions.hasScrollY, dimensions.scrollbarSize, dimensions.columnsTotalWidth, dimensions.viewportOuterSize.width, dimensions.rowHeight, positions, rootProps.showCellVerticalBorder, rootProps.pinnedColumnsSectionSeparator, slots, visibleColumns, showFirstRowBorder]);
140
133
 
141
134
  // Sync the column resize of the overlay columns with the grid
142
135
  const handleColumnResize = params => {
@@ -1,7 +1,5 @@
1
1
  import * as React from 'react';
2
- import { GridLoadingOverlayVariant } from "../GridLoadingOverlay.js";
3
- import { GridSlotsComponent } from "../../models/index.js";
4
- export type GridOverlayType = keyof Pick<GridSlotsComponent, 'noColumnsOverlay' | 'noRowsOverlay' | 'noResultsOverlay' | 'loadingOverlay'> | null;
2
+ import type { GridOverlayType, GridLoadingOverlayVariant } from "../../hooks/features/overlays/gridOverlaysInterfaces.js";
5
3
  interface GridOverlaysProps {
6
4
  overlayType: GridOverlayType;
7
5
  loadingOverlayVariant: GridLoadingOverlayVariant | null;
@@ -21,7 +21,6 @@ interface GridColumnHeaderItemProps {
21
21
  pinnedPosition?: PinnedColumnPosition;
22
22
  pinnedOffset?: number;
23
23
  style?: React.CSSProperties;
24
- isLastUnpinned: boolean;
25
24
  isSiblingFocused: boolean;
26
25
  showLeftBorder: boolean;
27
26
  showRightBorder: boolean;
@@ -32,7 +32,6 @@ const useUtilityClasses = ownerState => {
32
32
  showLeftBorder,
33
33
  filterItemsCounter,
34
34
  pinnedPosition,
35
- isLastUnpinned,
36
35
  isSiblingFocused
37
36
  } = ownerState;
38
37
  const isColumnSortable = colDef.sortable && !disableColumnSorting;
@@ -44,7 +43,7 @@ const useUtilityClasses = ownerState => {
44
43
  root: ['columnHeader', colDef.headerAlign === 'left' && 'columnHeader--alignLeft', colDef.headerAlign === 'center' && 'columnHeader--alignCenter', colDef.headerAlign === 'right' && 'columnHeader--alignRight', isColumnSortable && 'columnHeader--sortable', isDragging && 'columnHeader--moving', isColumnSorted && 'columnHeader--sorted', isColumnFiltered && 'columnHeader--filtered', isColumnNumeric && 'columnHeader--numeric', 'withBorderColor', showRightBorder && 'columnHeader--withRightBorder', showLeftBorder && 'columnHeader--withLeftBorder', pinnedPosition === PinnedColumnPosition.LEFT && 'columnHeader--pinnedLeft', pinnedPosition === PinnedColumnPosition.RIGHT && 'columnHeader--pinnedRight',
45
44
  // TODO: Remove classes below and restore `:has` selectors when they are supported in jsdom
46
45
  // See https://github.com/mui/mui-x/pull/14559
47
- isLastUnpinned && 'columnHeader--lastUnpinned', isSiblingFocused && 'columnHeader--siblingFocused'],
46
+ isSiblingFocused && 'columnHeader--siblingFocused'],
48
47
  draggableContainer: ['columnHeaderDraggableContainer'],
49
48
  titleContainer: ['columnHeaderTitleContainer'],
50
49
  titleContainerContent: ['columnHeaderTitleContainerContent']
@@ -230,7 +229,6 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderItem.propTypes = {
230
229
  headerHeight: PropTypes.number.isRequired,
231
230
  isDragging: PropTypes.bool.isRequired,
232
231
  isLast: PropTypes.bool.isRequired,
233
- isLastUnpinned: PropTypes.bool.isRequired,
234
232
  isResizing: PropTypes.bool.isRequired,
235
233
  isSiblingFocused: PropTypes.bool.isRequired,
236
234
  pinnedOffset: PropTypes.number,