@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.
- package/CHANGELOG.md +121 -0
- package/DataGrid/DataGrid.js +2 -1
- package/DataGrid/useDataGridComponent.js +2 -2
- package/components/GridLoadingOverlay.d.ts +1 -1
- package/components/GridRow.js +3 -7
- package/components/GridScrollShadows.d.ts +6 -0
- package/components/GridScrollShadows.js +108 -0
- package/components/GridScrollbarFillerCell.d.ts +0 -6
- package/components/GridScrollbarFillerCell.js +1 -7
- package/components/GridSkeletonLoadingOverlay.js +3 -10
- package/components/base/GridOverlays.d.ts +1 -3
- package/components/columnHeaders/GridColumnHeaderItem.d.ts +0 -1
- package/components/columnHeaders/GridColumnHeaderItem.js +1 -3
- package/components/containers/GridRootStyles.js +6 -21
- package/components/toolbarV8/GridToolbar.js +12 -10
- package/components/virtualization/GridMainContainer.d.ts +1 -2
- package/components/virtualization/GridVirtualScrollbar.d.ts +1 -0
- package/components/virtualization/GridVirtualScrollbar.js +21 -25
- package/components/virtualization/GridVirtualScroller.js +31 -12
- package/components/virtualization/GridVirtualScrollerFiller.js +2 -4
- package/constants/gridClasses.d.ts +0 -20
- package/constants/gridClasses.js +2 -2
- package/esm/DataGrid/DataGrid.js +2 -1
- package/esm/DataGrid/useDataGridComponent.js +2 -2
- package/esm/components/GridLoadingOverlay.d.ts +1 -1
- package/esm/components/GridRow.js +3 -7
- package/esm/components/GridScrollShadows.d.ts +6 -0
- package/esm/components/GridScrollShadows.js +103 -0
- package/esm/components/GridScrollbarFillerCell.d.ts +0 -6
- package/esm/components/GridScrollbarFillerCell.js +1 -7
- package/esm/components/GridSkeletonLoadingOverlay.js +3 -10
- package/esm/components/base/GridOverlays.d.ts +1 -3
- package/esm/components/columnHeaders/GridColumnHeaderItem.d.ts +0 -1
- package/esm/components/columnHeaders/GridColumnHeaderItem.js +1 -3
- package/esm/components/containers/GridRootStyles.js +6 -21
- package/esm/components/toolbarV8/GridToolbar.js +12 -10
- package/esm/components/virtualization/GridMainContainer.d.ts +1 -2
- package/esm/components/virtualization/GridVirtualScrollbar.d.ts +1 -0
- package/esm/components/virtualization/GridVirtualScrollbar.js +20 -24
- package/esm/components/virtualization/GridVirtualScroller.js +32 -13
- package/esm/components/virtualization/GridVirtualScrollerFiller.js +2 -4
- package/esm/constants/gridClasses.d.ts +0 -20
- package/esm/constants/gridClasses.js +2 -2
- package/esm/hooks/core/useGridVirtualizer.js +4 -0
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -10
- package/esm/hooks/features/columnResize/useGridColumnResize.js +16 -0
- package/esm/hooks/features/dataSource/useGridDataSourceBase.js +6 -0
- package/esm/hooks/features/index.d.ts +2 -1
- package/esm/hooks/features/index.js +2 -1
- package/esm/hooks/features/overlays/gridOverlaysInterfaces.d.ts +3 -0
- package/esm/hooks/features/overlays/gridOverlaysInterfaces.js +1 -0
- package/esm/hooks/features/overlays/index.d.ts +1 -0
- package/esm/hooks/features/overlays/index.js +1 -0
- package/esm/hooks/features/overlays/useGridOverlays.d.ts +6 -8
- package/esm/hooks/features/overlays/useGridOverlays.js +3 -27
- package/esm/hooks/features/rows/useGridParamsApi.d.ts +2 -1
- package/esm/hooks/features/rows/useGridParamsApi.js +5 -24
- package/esm/hooks/features/rows/useGridParamsOverridableMethods.d.ts +7 -0
- package/esm/hooks/features/rows/useGridParamsOverridableMethods.js +28 -0
- package/esm/hooks/features/rows/useGridRowSpanning.js +4 -1
- package/esm/hooks/features/rows/useGridRows.js +41 -1
- package/esm/hooks/features/sorting/gridSortingUtils.d.ts +1 -3
- package/esm/hooks/features/sorting/gridSortingUtils.js +4 -6
- package/esm/hooks/features/sorting/useGridSorting.d.ts +1 -2
- package/esm/hooks/features/sorting/useGridSorting.js +3 -4
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +1 -0
- package/esm/internals/index.js +1 -0
- package/esm/material/variables.js +2 -2
- package/esm/models/api/gridRowApi.d.ts +10 -0
- package/esm/models/configuration/gridAggregationConfiguration.d.ts +0 -6
- package/esm/models/configuration/gridConfiguration.d.ts +2 -1
- package/esm/models/configuration/gridParamsConfiguration.d.ts +12 -0
- package/esm/models/configuration/gridParamsConfiguration.js +1 -0
- package/esm/models/props/DataGridProps.d.ts +10 -0
- package/esm/utils/cellBorderUtils.d.ts +3 -2
- package/esm/utils/cellBorderUtils.js +7 -4
- package/hooks/core/useGridVirtualizer.js +4 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +5 -10
- package/hooks/features/columnResize/useGridColumnResize.js +16 -0
- package/hooks/features/dataSource/useGridDataSourceBase.js +6 -0
- package/hooks/features/index.d.ts +2 -1
- package/hooks/features/index.js +11 -0
- package/hooks/features/overlays/gridOverlaysInterfaces.d.ts +3 -0
- package/hooks/features/overlays/gridOverlaysInterfaces.js +5 -0
- package/hooks/features/overlays/index.d.ts +1 -0
- package/hooks/features/overlays/index.js +5 -0
- package/hooks/features/overlays/useGridOverlays.d.ts +6 -8
- package/hooks/features/overlays/useGridOverlays.js +3 -28
- package/hooks/features/rows/useGridParamsApi.d.ts +2 -1
- package/hooks/features/rows/useGridParamsApi.js +5 -24
- package/hooks/features/rows/useGridParamsOverridableMethods.d.ts +7 -0
- package/hooks/features/rows/useGridParamsOverridableMethods.js +36 -0
- package/hooks/features/rows/useGridRowSpanning.js +4 -1
- package/hooks/features/rows/useGridRows.js +41 -1
- package/hooks/features/sorting/gridSortingUtils.d.ts +1 -3
- package/hooks/features/sorting/gridSortingUtils.js +4 -6
- package/hooks/features/sorting/useGridSorting.d.ts +1 -2
- package/hooks/features/sorting/useGridSorting.js +3 -4
- package/index.js +1 -1
- package/internals/index.d.ts +1 -0
- package/internals/index.js +8 -0
- package/material/variables.js +2 -2
- package/models/api/gridRowApi.d.ts +10 -0
- package/models/configuration/gridAggregationConfiguration.d.ts +0 -6
- package/models/configuration/gridConfiguration.d.ts +2 -1
- package/models/configuration/gridParamsConfiguration.d.ts +12 -0
- package/models/configuration/gridParamsConfiguration.js +5 -0
- package/models/props/DataGridProps.d.ts +10 -0
- package/package.json +3 -3
- package/utils/cellBorderUtils.d.ts +3 -2
- 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-
|
|
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-
|
|
56
|
-
right:
|
|
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:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
153
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
} = (0, _useGridOverlays.useGridOverlays)();
|
|
82
|
-
const
|
|
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
|
-
|
|
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
|
-
}),
|
|
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 &&
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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.
|
package/constants/gridClasses.js
CHANGED
|
@@ -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--
|
|
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--
|
|
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']);
|
package/esm/DataGrid/DataGrid.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
|
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,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,
|
|
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 "
|
|
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;
|
|
@@ -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
|
-
|
|
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,
|