@mui/x-data-grid 7.7.1 → 7.9.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 +166 -1
- package/DataGrid/useDataGridComponent.d.ts +0 -1
- package/DataGrid/useDataGridProps.js +9 -2
- package/components/GridFooter.d.ts +1 -1
- package/components/GridLoadingOverlay.d.ts +15 -3
- package/components/GridLoadingOverlay.js +48 -4
- package/components/GridNoResultsOverlay.d.ts +1 -1
- package/components/GridNoRowsOverlay.d.ts +1 -1
- package/components/GridRow.js +2 -1
- package/components/GridRowCount.d.ts +1 -1
- package/components/GridSelectedRowCount.d.ts +1 -1
- package/components/GridSkeletonLoadingOverlay.d.ts +3 -0
- package/components/GridSkeletonLoadingOverlay.js +181 -0
- package/components/base/GridOverlays.d.ts +11 -1
- package/components/base/GridOverlays.js +25 -39
- package/components/cell/GridActionsCellItem.d.ts +3 -3
- package/components/cell/GridSkeletonCell.d.ts +13 -6
- package/components/cell/GridSkeletonCell.js +61 -19
- package/components/columnHeaders/GridColumnHeaderItem.js +3 -3
- package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
- package/components/columnHeaders/GridColumnHeaderSortIcon.js +11 -6
- package/components/containers/GridFooterContainer.d.ts +1 -1
- package/components/containers/GridOverlay.d.ts +1 -1
- package/components/containers/GridRootStyles.d.ts +0 -1
- package/components/containers/GridRootStyles.js +19 -2
- package/components/containers/GridToolbarContainer.d.ts +1 -1
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
- package/components/virtualization/GridMainContainer.d.ts +1 -1
- package/components/virtualization/GridVirtualScroller.js +7 -5
- package/components/virtualization/GridVirtualScrollerContent.d.ts +1 -1
- package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +1 -1
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/gridClasses.d.ts +14 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +2 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +2 -2
- package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +2 -2
- package/hooks/core/useGridInitialization.d.ts +1 -1
- package/hooks/core/useGridLocaleText.d.ts +1 -1
- package/hooks/core/useGridLoggerFactory.d.ts +1 -1
- package/hooks/features/clipboard/useGridClipboard.d.ts +1 -1
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
- package/hooks/features/columnResize/useGridColumnResize.d.ts +1 -1
- package/hooks/features/density/useGridDensity.d.ts +1 -1
- package/hooks/features/dimensions/useGridDimensions.js +15 -15
- package/hooks/features/editing/useGridCellEditing.d.ts +1 -1
- package/hooks/features/editing/useGridEditing.d.ts +1 -1
- package/hooks/features/editing/useGridRowEditing.d.ts +1 -1
- package/hooks/features/export/serializers/csvSerializer.d.ts +0 -1
- package/hooks/features/export/useGridCsvExport.d.ts +1 -1
- package/hooks/features/export/useGridPrintExport.d.ts +1 -1
- package/hooks/features/export/useGridPrintExport.js +9 -8
- package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
- package/hooks/features/filter/useGridFilter.d.ts +1 -1
- package/hooks/features/focus/useGridFocus.d.ts +1 -1
- package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +1 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/hooks/features/overlays/useGridOverlays.d.ts +11 -0
- package/hooks/features/overlays/useGridOverlays.js +35 -0
- package/hooks/features/pagination/gridPaginationUtils.d.ts +1 -1
- package/hooks/features/pagination/index.d.ts +1 -1
- package/hooks/features/pagination/useGridPaginationMeta.d.ts +1 -1
- package/hooks/features/pagination/useGridPaginationModel.d.ts +2 -2
- package/hooks/features/pagination/useGridRowCount.d.ts +1 -1
- package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +1 -1
- package/hooks/features/rowSelection/useGridRowSelection.d.ts +1 -1
- package/hooks/features/rows/gridRowsInterfaces.d.ts +10 -2
- package/hooks/features/rows/gridRowsSelector.d.ts +2 -1
- package/hooks/features/rows/gridRowsSelector.js +1 -0
- package/hooks/features/rows/gridRowsUtils.d.ts +8 -6
- package/hooks/features/rows/gridRowsUtils.js +30 -6
- package/hooks/features/rows/useGridRows.d.ts +2 -2
- package/hooks/features/rows/useGridRows.js +39 -21
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/hooks/features/sorting/useGridSorting.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
- package/hooks/utils/index.d.ts +0 -1
- package/hooks/utils/index.js +0 -1
- package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
- package/hooks/utils/useGridApiRef.d.ts +1 -1
- package/hooks/utils/useGridInitializeState.d.ts +1 -1
- package/hooks/utils/useGridRootProps.d.ts +1 -1
- package/hooks/utils/useGridSelector.d.ts +1 -1
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +2 -0
- package/internals/index.js +1 -0
- package/internals/utils/propValidation.js +1 -1
- package/models/api/gridApiCommon.d.ts +2 -2
- package/models/api/gridInfiniteLoaderApi.d.ts +0 -1
- package/models/api/gridRowApi.d.ts +14 -0
- package/models/gridColumnGrouping.d.ts +0 -1
- package/models/gridDataSource.d.ts +87 -0
- package/models/gridDataSource.js +1 -0
- package/models/gridRows.d.ts +10 -0
- package/models/gridSlotsComponent.d.ts +5 -0
- package/models/gridSlotsComponentsProps.d.ts +7 -2
- package/models/props/DataGridProps.d.ts +2 -0
- package/modern/DataGrid/useDataGridProps.js +9 -2
- package/modern/components/GridLoadingOverlay.js +48 -4
- package/modern/components/GridRow.js +2 -1
- package/modern/components/GridSkeletonLoadingOverlay.js +181 -0
- package/modern/components/base/GridOverlays.js +25 -39
- package/modern/components/cell/GridSkeletonCell.js +61 -19
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +3 -3
- package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +11 -6
- package/modern/components/containers/GridRootStyles.js +19 -2
- package/modern/components/virtualization/GridVirtualScroller.js +7 -5
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/dimensions/useGridDimensions.js +15 -15
- package/modern/hooks/features/export/useGridPrintExport.js +9 -8
- package/modern/hooks/features/overlays/useGridOverlays.js +35 -0
- package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
- package/modern/hooks/features/rows/gridRowsUtils.js +30 -6
- package/modern/hooks/features/rows/useGridRows.js +39 -21
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
- package/modern/hooks/utils/index.js +0 -1
- package/modern/index.js +1 -1
- package/modern/internals/index.js +1 -0
- package/modern/internals/utils/propValidation.js +1 -1
- package/modern/models/gridDataSource.js +1 -0
- package/modern/utils/utils.js +10 -2
- package/node/DataGrid/useDataGridProps.js +9 -2
- package/node/components/GridLoadingOverlay.js +48 -4
- package/node/components/GridRow.js +2 -1
- package/node/components/GridSkeletonLoadingOverlay.js +189 -0
- package/node/components/base/GridOverlays.js +25 -39
- package/node/components/cell/GridSkeletonCell.js +60 -18
- package/node/components/columnHeaders/GridColumnHeaderItem.js +3 -3
- package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +11 -6
- package/node/components/containers/GridRootStyles.js +19 -2
- package/node/components/virtualization/GridVirtualScroller.js +6 -4
- package/node/constants/defaultGridSlotsComponents.js +1 -0
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/dimensions/useGridDimensions.js +15 -15
- package/node/hooks/features/export/useGridPrintExport.js +9 -8
- package/node/hooks/features/overlays/useGridOverlays.js +42 -0
- package/node/hooks/features/rows/gridRowsSelector.js +2 -1
- package/node/hooks/features/rows/gridRowsUtils.js +31 -6
- package/node/hooks/features/rows/useGridRows.js +37 -19
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
- package/node/hooks/utils/index.js +0 -12
- package/node/index.js +1 -1
- package/node/internals/index.js +7 -0
- package/node/internals/utils/propValidation.js +1 -1
- package/node/models/gridDataSource.js +5 -0
- package/node/utils/utils.js +11 -3
- package/package.json +5 -4
- package/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -1
- package/utils/domUtils.d.ts +0 -1
- package/utils/getPublicApiRef.d.ts +1 -2
- package/utils/keyboardUtils.d.ts +1 -1
- package/utils/utils.d.ts +8 -1
- package/utils/utils.js +10 -2
- package/utils/warning.d.ts +1 -1
- package/hooks/utils/useResizeObserver.d.ts +0 -2
- package/hooks/utils/useResizeObserver.js +0 -36
- package/modern/hooks/utils/useResizeObserver.js +0 -36
- package/node/hooks/utils/useResizeObserver.js +0 -44
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.GridSkeletonLoadingOverlay = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
11
|
+
var _system = require("@mui/system");
|
|
12
|
+
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
13
|
+
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
|
|
14
|
+
var _useGridApiContext = require("../hooks/utils/useGridApiContext");
|
|
15
|
+
var _useGridRootProps = require("../hooks/utils/useGridRootProps");
|
|
16
|
+
var _hooks = require("../hooks");
|
|
17
|
+
var _gridClasses = require("../constants/gridClasses");
|
|
18
|
+
var _getPinnedCellOffset = require("../internals/utils/getPinnedCellOffset");
|
|
19
|
+
var _cellBorderUtils = require("../utils/cellBorderUtils");
|
|
20
|
+
var _domUtils = require("../utils/domUtils");
|
|
21
|
+
var _GridScrollbarFillerCell = require("./GridScrollbarFillerCell");
|
|
22
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
23
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
24
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
25
|
+
const SkeletonOverlay = (0, _system.styled)('div', {
|
|
26
|
+
name: 'MuiDataGrid',
|
|
27
|
+
slot: 'SkeletonLoadingOverlay',
|
|
28
|
+
overridesResolver: (props, styles) => styles.skeletonLoadingOverlay
|
|
29
|
+
})({
|
|
30
|
+
minWidth: '100%',
|
|
31
|
+
width: 'max-content',
|
|
32
|
+
// prevents overflow: clip; cutting off the x axis
|
|
33
|
+
height: '100%',
|
|
34
|
+
overflow: 'clip' // y axis is hidden while the x axis is allowed to overflow
|
|
35
|
+
});
|
|
36
|
+
const useUtilityClasses = ownerState => {
|
|
37
|
+
const {
|
|
38
|
+
classes
|
|
39
|
+
} = ownerState;
|
|
40
|
+
const slots = {
|
|
41
|
+
root: ['skeletonLoadingOverlay']
|
|
42
|
+
};
|
|
43
|
+
return (0, _composeClasses.default)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
44
|
+
};
|
|
45
|
+
const getColIndex = el => parseInt(el.getAttribute('data-colindex'), 10);
|
|
46
|
+
const GridSkeletonLoadingOverlay = exports.GridSkeletonLoadingOverlay = /*#__PURE__*/React.forwardRef(function GridSkeletonLoadingOverlay(props, forwardedRef) {
|
|
47
|
+
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
48
|
+
const {
|
|
49
|
+
slots
|
|
50
|
+
} = rootProps;
|
|
51
|
+
const classes = useUtilityClasses({
|
|
52
|
+
classes: rootProps.classes
|
|
53
|
+
});
|
|
54
|
+
const ref = React.useRef(null);
|
|
55
|
+
const handleRef = (0, _useForkRef.default)(ref, forwardedRef);
|
|
56
|
+
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
57
|
+
const dimensions = (0, _hooks.useGridSelector)(apiRef, _hooks.gridDimensionsSelector);
|
|
58
|
+
const viewportHeight = dimensions?.viewportInnerSize.height ?? 0;
|
|
59
|
+
const skeletonRowsCount = Math.ceil(viewportHeight / dimensions.rowHeight);
|
|
60
|
+
const totalWidth = (0, _hooks.useGridSelector)(apiRef, _hooks.gridColumnsTotalWidthSelector);
|
|
61
|
+
const positions = (0, _hooks.useGridSelector)(apiRef, _hooks.gridColumnPositionsSelector);
|
|
62
|
+
const inViewportCount = React.useMemo(() => positions.filter(value => value <= totalWidth).length, [totalWidth, positions]);
|
|
63
|
+
const allVisibleColumns = (0, _hooks.useGridSelector)(apiRef, _hooks.gridVisibleColumnDefinitionsSelector);
|
|
64
|
+
const columns = React.useMemo(() => allVisibleColumns.slice(0, inViewportCount), [allVisibleColumns, inViewportCount]);
|
|
65
|
+
const pinnedColumns = (0, _hooks.useGridSelector)(apiRef, _hooks.gridVisiblePinnedColumnDefinitionsSelector);
|
|
66
|
+
const getPinnedStyle = React.useCallback((computedWidth, index, position) => {
|
|
67
|
+
const pinnedOffset = (0, _getPinnedCellOffset.getPinnedCellOffset)(position, computedWidth, index, positions, dimensions);
|
|
68
|
+
return {
|
|
69
|
+
[position]: pinnedOffset
|
|
70
|
+
};
|
|
71
|
+
}, [dimensions, positions]);
|
|
72
|
+
const getPinnedPosition = React.useCallback(field => {
|
|
73
|
+
if (pinnedColumns.left.findIndex(col => col.field === field) !== -1) {
|
|
74
|
+
return _hooks.GridPinnedColumnPosition.LEFT;
|
|
75
|
+
}
|
|
76
|
+
if (pinnedColumns.right.findIndex(col => col.field === field) !== -1) {
|
|
77
|
+
return _hooks.GridPinnedColumnPosition.RIGHT;
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}, [pinnedColumns.left, pinnedColumns.right]);
|
|
81
|
+
const children = React.useMemo(() => {
|
|
82
|
+
const array = [];
|
|
83
|
+
for (let i = 0; i < skeletonRowsCount; i += 1) {
|
|
84
|
+
const rowCells = [];
|
|
85
|
+
for (let colIndex = 0; colIndex < columns.length; colIndex += 1) {
|
|
86
|
+
const column = columns[colIndex];
|
|
87
|
+
const pinnedPosition = getPinnedPosition(column.field);
|
|
88
|
+
const isPinnedLeft = pinnedPosition === _hooks.GridPinnedColumnPosition.LEFT;
|
|
89
|
+
const isPinnedRight = pinnedPosition === _hooks.GridPinnedColumnPosition.RIGHT;
|
|
90
|
+
const sectionLength = pinnedPosition ? pinnedColumns[pinnedPosition].length // pinned section
|
|
91
|
+
: columns.length - pinnedColumns.left.length - pinnedColumns.right.length; // middle section
|
|
92
|
+
const sectionIndex = pinnedPosition ? pinnedColumns[pinnedPosition].findIndex(col => col.field === column.field) // pinned section
|
|
93
|
+
: colIndex - pinnedColumns.left.length; // middle section
|
|
94
|
+
const pinnedStyle = pinnedPosition && getPinnedStyle(column.computedWidth, colIndex, pinnedPosition);
|
|
95
|
+
const gridHasFiller = dimensions.columnsTotalWidth < dimensions.viewportOuterSize.width;
|
|
96
|
+
const showRightBorder = (0, _cellBorderUtils.shouldCellShowRightBorder)(pinnedPosition, sectionIndex, sectionLength, rootProps.showCellVerticalBorder, gridHasFiller);
|
|
97
|
+
const showLeftBorder = (0, _cellBorderUtils.shouldCellShowLeftBorder)(pinnedPosition, sectionIndex);
|
|
98
|
+
const isLastColumn = colIndex === columns.length - 1;
|
|
99
|
+
const isFirstPinnedRight = isPinnedRight && sectionIndex === 0;
|
|
100
|
+
const hasFillerBefore = isFirstPinnedRight && gridHasFiller;
|
|
101
|
+
const hasFillerAfter = isLastColumn && !isFirstPinnedRight && gridHasFiller;
|
|
102
|
+
const expandedWidth = dimensions.viewportOuterSize.width - dimensions.columnsTotalWidth;
|
|
103
|
+
const emptyCellWidth = Math.max(0, expandedWidth);
|
|
104
|
+
const emptyCell = /*#__PURE__*/(0, _jsxRuntime.jsx)(slots.skeletonCell, {
|
|
105
|
+
width: emptyCellWidth,
|
|
106
|
+
empty: true
|
|
107
|
+
}, `skeleton-filler-column-${i}`);
|
|
108
|
+
const scrollbarWidth = dimensions.hasScrollY ? dimensions.scrollbarSize : 0;
|
|
109
|
+
const hasScrollbarFiller = isLastColumn && scrollbarWidth !== 0;
|
|
110
|
+
if (hasFillerBefore) {
|
|
111
|
+
rowCells.push(emptyCell);
|
|
112
|
+
}
|
|
113
|
+
rowCells.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(slots.skeletonCell, {
|
|
114
|
+
field: column.field,
|
|
115
|
+
type: column.type,
|
|
116
|
+
align: column.align,
|
|
117
|
+
width: "var(--width)",
|
|
118
|
+
height: dimensions.rowHeight,
|
|
119
|
+
"data-colindex": colIndex,
|
|
120
|
+
className: (0, _clsx.default)(isPinnedLeft && _gridClasses.gridClasses['cell--pinnedLeft'], isPinnedRight && _gridClasses.gridClasses['cell--pinnedRight'], showRightBorder && _gridClasses.gridClasses['cell--withRightBorder'], showLeftBorder && _gridClasses.gridClasses['cell--withLeftBorder']),
|
|
121
|
+
style: (0, _extends2.default)({
|
|
122
|
+
'--width': `${column.computedWidth}px`
|
|
123
|
+
}, pinnedStyle)
|
|
124
|
+
}, `skeleton-column-${i}-${column.field}`));
|
|
125
|
+
if (hasFillerAfter) {
|
|
126
|
+
rowCells.push(emptyCell);
|
|
127
|
+
}
|
|
128
|
+
if (hasScrollbarFiller) {
|
|
129
|
+
rowCells.push( /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridScrollbarFillerCell.GridScrollbarFillerCell, {
|
|
130
|
+
pinnedRight: pinnedColumns.right.length > 0
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
array.push( /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
135
|
+
className: (0, _clsx.default)(_gridClasses.gridClasses.row, _gridClasses.gridClasses.rowSkeleton, i === 0 && _gridClasses.gridClasses['row--firstVisible']),
|
|
136
|
+
children: rowCells
|
|
137
|
+
}, `skeleton-row-${i}`));
|
|
138
|
+
}
|
|
139
|
+
return array;
|
|
140
|
+
}, [slots, columns, pinnedColumns, skeletonRowsCount, rootProps.showCellVerticalBorder, dimensions.columnsTotalWidth, dimensions.viewportOuterSize.width, dimensions.rowHeight, dimensions.hasScrollY, dimensions.scrollbarSize, getPinnedPosition, getPinnedStyle]);
|
|
141
|
+
|
|
142
|
+
// Sync the column resize of the overlay columns with the grid
|
|
143
|
+
const handleColumnResize = params => {
|
|
144
|
+
const {
|
|
145
|
+
colDef,
|
|
146
|
+
width
|
|
147
|
+
} = params;
|
|
148
|
+
const cells = ref.current?.querySelectorAll(`[data-field="${(0, _domUtils.escapeOperandAttributeSelector)(colDef.field)}"]`);
|
|
149
|
+
if (!cells) {
|
|
150
|
+
throw new Error('MUI X: Expected skeleton cells to be defined with `data-field` attribute.');
|
|
151
|
+
}
|
|
152
|
+
const resizedColIndex = columns.findIndex(col => col.field === colDef.field);
|
|
153
|
+
const pinnedPosition = getPinnedPosition(colDef.field);
|
|
154
|
+
const isPinnedLeft = pinnedPosition === _hooks.GridPinnedColumnPosition.LEFT;
|
|
155
|
+
const isPinnedRight = pinnedPosition === _hooks.GridPinnedColumnPosition.RIGHT;
|
|
156
|
+
const currentWidth = getComputedStyle(cells[0]).getPropertyValue('--width');
|
|
157
|
+
const delta = parseInt(currentWidth, 10) - width;
|
|
158
|
+
if (cells) {
|
|
159
|
+
cells.forEach(element => {
|
|
160
|
+
element.style.setProperty('--width', `${width}px`);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (isPinnedLeft) {
|
|
164
|
+
const pinnedCells = ref.current?.querySelectorAll(`.${_gridClasses.gridClasses['cell--pinnedLeft']}`);
|
|
165
|
+
pinnedCells?.forEach(element => {
|
|
166
|
+
const colIndex = getColIndex(element);
|
|
167
|
+
if (colIndex > resizedColIndex) {
|
|
168
|
+
element.style.left = `${parseInt(getComputedStyle(element).left, 10) - delta}px`;
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
if (isPinnedRight) {
|
|
173
|
+
const pinnedCells = ref.current?.querySelectorAll(`.${_gridClasses.gridClasses['cell--pinnedRight']}`);
|
|
174
|
+
pinnedCells?.forEach(element => {
|
|
175
|
+
const colIndex = getColIndex(element);
|
|
176
|
+
if (colIndex < resizedColIndex) {
|
|
177
|
+
element.style.right = `${parseInt(getComputedStyle(element).right, 10) + delta}px`;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
(0, _hooks.useGridApiEventHandler)(apiRef, 'columnResize', handleColumnResize);
|
|
183
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(SkeletonOverlay, (0, _extends2.default)({
|
|
184
|
+
className: classes.root,
|
|
185
|
+
ref: handleRef
|
|
186
|
+
}, props, {
|
|
187
|
+
children: children
|
|
188
|
+
}));
|
|
189
|
+
});
|
|
@@ -12,8 +12,6 @@ var _system = require("@mui/system");
|
|
|
12
12
|
var _utils = require("@mui/utils");
|
|
13
13
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
14
14
|
var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
15
|
-
var _gridFilterSelector = require("../../hooks/features/filter/gridFilterSelector");
|
|
16
|
-
var _gridRowsSelector = require("../../hooks/features/rows/gridRowsSelector");
|
|
17
15
|
var _dimensions = require("../../hooks/features/dimensions");
|
|
18
16
|
var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
|
|
19
17
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
@@ -26,11 +24,14 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
26
24
|
const GridOverlayWrapperRoot = (0, _system.styled)('div', {
|
|
27
25
|
name: 'MuiDataGrid',
|
|
28
26
|
slot: 'OverlayWrapper',
|
|
29
|
-
shouldForwardProp: prop => prop !== 'overlayType',
|
|
27
|
+
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant',
|
|
30
28
|
overridesResolver: (props, styles) => styles.overlayWrapper
|
|
31
29
|
})(({
|
|
32
|
-
overlayType
|
|
33
|
-
|
|
30
|
+
overlayType,
|
|
31
|
+
loadingOverlayVariant
|
|
32
|
+
}) =>
|
|
33
|
+
// Skeleton overlay should flow with the scroll container and not be sticky
|
|
34
|
+
loadingOverlayVariant !== 'skeleton' ? {
|
|
34
35
|
position: 'sticky',
|
|
35
36
|
// To stay in place while scrolling
|
|
36
37
|
top: 'var(--DataGrid-headersTotalHeight)',
|
|
@@ -41,11 +42,11 @@ const GridOverlayWrapperRoot = (0, _system.styled)('div', {
|
|
|
41
42
|
// To stay above the content instead of shifting it down
|
|
42
43
|
zIndex: overlayType === 'loadingOverlay' ? 5 // Should be above pinned columns, pinned rows, and detail panel
|
|
43
44
|
: 4 // Should be above pinned columns and detail panel
|
|
44
|
-
})
|
|
45
|
+
} : {});
|
|
45
46
|
const GridOverlayWrapperInner = (0, _system.styled)('div', {
|
|
46
47
|
name: 'MuiDataGrid',
|
|
47
48
|
slot: 'OverlayWrapperInner',
|
|
48
|
-
shouldForwardProp: prop => prop !== 'overlayType',
|
|
49
|
+
shouldForwardProp: prop => prop !== 'overlayType' && prop !== 'loadingOverlayVariant',
|
|
49
50
|
overridesResolver: (props, styles) => styles.overlayWrapperInner
|
|
50
51
|
})({});
|
|
51
52
|
const useUtilityClasses = ownerState => {
|
|
@@ -70,9 +71,9 @@ function GridOverlayWrapper(props) {
|
|
|
70
71
|
const classes = useUtilityClasses((0, _extends2.default)({}, props, {
|
|
71
72
|
classes: rootProps.classes
|
|
72
73
|
}));
|
|
73
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverlayWrapperRoot, {
|
|
74
|
-
className: (0, _clsx.default)(classes.root)
|
|
75
|
-
|
|
74
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverlayWrapperRoot, (0, _extends2.default)({
|
|
75
|
+
className: (0, _clsx.default)(classes.root)
|
|
76
|
+
}, props, {
|
|
76
77
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverlayWrapperInner, (0, _extends2.default)({
|
|
77
78
|
className: (0, _clsx.default)(classes.inner),
|
|
78
79
|
style: {
|
|
@@ -80,42 +81,27 @@ function GridOverlayWrapper(props) {
|
|
|
80
81
|
width: dimensions.viewportOuterSize.width
|
|
81
82
|
}
|
|
82
83
|
}, props))
|
|
83
|
-
});
|
|
84
|
+
}));
|
|
84
85
|
}
|
|
85
|
-
process.env.NODE_ENV !== "production" ?
|
|
86
|
+
process.env.NODE_ENV !== "production" ? GridOverlays.propTypes = {
|
|
86
87
|
// ----------------------------- Warning --------------------------------
|
|
87
88
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
88
89
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
89
90
|
// ----------------------------------------------------------------------
|
|
90
|
-
|
|
91
|
+
loadingOverlayVariant: _propTypes.default.oneOf(['circular-progress', 'linear-progress', 'skeleton']),
|
|
92
|
+
overlayType: _propTypes.default.oneOf(['loadingOverlay', 'noResultsOverlay', 'noRowsOverlay'])
|
|
91
93
|
} : void 0;
|
|
92
|
-
function GridOverlays() {
|
|
93
|
-
const
|
|
94
|
+
function GridOverlays(props) {
|
|
95
|
+
const {
|
|
96
|
+
overlayType
|
|
97
|
+
} = props;
|
|
94
98
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
95
|
-
|
|
96
|
-
const visibleRowCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridFilterSelector.gridExpandedRowCountSelector);
|
|
97
|
-
const loading = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowsLoadingSelector);
|
|
98
|
-
const showNoRowsOverlay = !loading && totalRowCount === 0;
|
|
99
|
-
const showNoResultsOverlay = !loading && totalRowCount > 0 && visibleRowCount === 0;
|
|
100
|
-
let overlay = null;
|
|
101
|
-
let overlayType = '';
|
|
102
|
-
if (showNoRowsOverlay) {
|
|
103
|
-
overlay = /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.noRowsOverlay, (0, _extends2.default)({}, rootProps.slotProps?.noRowsOverlay));
|
|
104
|
-
overlayType = 'noRowsOverlay';
|
|
105
|
-
}
|
|
106
|
-
if (showNoResultsOverlay) {
|
|
107
|
-
overlay = /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.noResultsOverlay, (0, _extends2.default)({}, rootProps.slotProps?.noResultsOverlay));
|
|
108
|
-
overlayType = 'noResultsOverlay';
|
|
109
|
-
}
|
|
110
|
-
if (loading) {
|
|
111
|
-
overlay = /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.loadingOverlay, (0, _extends2.default)({}, rootProps.slotProps?.loadingOverlay));
|
|
112
|
-
overlayType = 'loadingOverlay';
|
|
113
|
-
}
|
|
114
|
-
if (overlay === null) {
|
|
99
|
+
if (!overlayType) {
|
|
115
100
|
return null;
|
|
116
101
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
102
|
+
const Overlay = rootProps.slots?.[overlayType];
|
|
103
|
+
const overlayProps = rootProps.slotProps?.[overlayType];
|
|
104
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverlayWrapper, (0, _extends2.default)({}, props, {
|
|
105
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Overlay, (0, _extends2.default)({}, overlayProps))
|
|
106
|
+
}));
|
|
121
107
|
}
|
|
@@ -11,51 +11,87 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
12
|
var _Skeleton = _interopRequireDefault(require("@mui/material/Skeleton"));
|
|
13
13
|
var _utils = require("@mui/utils");
|
|
14
|
+
var _clsx = _interopRequireDefault(require("clsx"));
|
|
14
15
|
var _fastMemo = require("../../utils/fastMemo");
|
|
15
16
|
var _utils2 = require("../../utils/utils");
|
|
16
17
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
17
18
|
var _gridClasses = require("../../constants/gridClasses");
|
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
-
const _excluded = ["field", "align", "width", "height"];
|
|
20
|
+
const _excluded = ["field", "type", "align", "width", "height", "empty", "style", "className"];
|
|
20
21
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
22
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
22
|
-
const
|
|
23
|
+
const CIRCULAR_CONTENT_SIZE = '1.3em';
|
|
24
|
+
const CONTENT_HEIGHT = '1.2em';
|
|
25
|
+
const DEFAULT_CONTENT_WIDTH_RANGE = [40, 80];
|
|
26
|
+
const CONTENT_WIDTH_RANGE_BY_TYPE = {
|
|
27
|
+
number: [40, 60],
|
|
28
|
+
string: [40, 80],
|
|
29
|
+
date: [40, 60],
|
|
30
|
+
dateTime: [60, 80],
|
|
31
|
+
singleSelect: [40, 80]
|
|
32
|
+
};
|
|
23
33
|
const useUtilityClasses = ownerState => {
|
|
24
34
|
const {
|
|
25
35
|
align,
|
|
26
|
-
classes
|
|
36
|
+
classes,
|
|
37
|
+
empty
|
|
27
38
|
} = ownerState;
|
|
28
39
|
const slots = {
|
|
29
|
-
root: ['cell', 'cellSkeleton', `cell--text${(0, _utils.unstable_capitalize)(align)}`, '
|
|
40
|
+
root: ['cell', 'cellSkeleton', `cell--text${align ? (0, _utils.unstable_capitalize)(align) : 'Left'}`, empty && 'cellEmpty']
|
|
30
41
|
};
|
|
31
42
|
return (0, _utils.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
32
43
|
};
|
|
44
|
+
const randomNumberGenerator = (0, _utils2.createRandomNumberGenerator)(12345);
|
|
33
45
|
function GridSkeletonCell(props) {
|
|
34
46
|
const {
|
|
47
|
+
field,
|
|
48
|
+
type,
|
|
35
49
|
align,
|
|
36
50
|
width,
|
|
37
|
-
height
|
|
51
|
+
height,
|
|
52
|
+
empty = false,
|
|
53
|
+
style,
|
|
54
|
+
className
|
|
38
55
|
} = props,
|
|
39
56
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
40
57
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
41
58
|
const ownerState = {
|
|
42
59
|
classes: rootProps.classes,
|
|
43
|
-
align
|
|
60
|
+
align,
|
|
61
|
+
empty
|
|
44
62
|
};
|
|
45
63
|
const classes = useUtilityClasses(ownerState);
|
|
46
|
-
|
|
64
|
+
|
|
65
|
+
// Memo prevents the non-circular skeleton widths changing to random widths on every render
|
|
66
|
+
const skeletonProps = React.useMemo(() => {
|
|
67
|
+
const isCircularContent = type === 'boolean' || type === 'actions';
|
|
68
|
+
if (isCircularContent) {
|
|
69
|
+
return {
|
|
70
|
+
variant: 'circular',
|
|
71
|
+
width: CIRCULAR_CONTENT_SIZE,
|
|
72
|
+
height: CIRCULAR_CONTENT_SIZE
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// The width of the skeleton is a random number between the min and max values
|
|
77
|
+
// The min and max values are determined by the type of the column
|
|
78
|
+
const [min, max] = type ? CONTENT_WIDTH_RANGE_BY_TYPE[type] ?? DEFAULT_CONTENT_WIDTH_RANGE : DEFAULT_CONTENT_WIDTH_RANGE;
|
|
79
|
+
return {
|
|
80
|
+
variant: 'text',
|
|
81
|
+
width: `${Math.round(randomNumberGenerator(min, max))}%`,
|
|
82
|
+
height: CONTENT_HEIGHT
|
|
83
|
+
};
|
|
84
|
+
}, [type]);
|
|
47
85
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _extends2.default)({
|
|
48
|
-
|
|
49
|
-
|
|
86
|
+
"data-field": field,
|
|
87
|
+
className: (0, _clsx.default)(classes.root, className),
|
|
88
|
+
style: (0, _extends2.default)({
|
|
50
89
|
height,
|
|
51
90
|
maxWidth: width,
|
|
52
91
|
minWidth: width
|
|
53
|
-
}
|
|
92
|
+
}, style)
|
|
54
93
|
}, other, {
|
|
55
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.default, {
|
|
56
|
-
width: `${contentWidth}%`,
|
|
57
|
-
height: 25
|
|
58
|
-
})
|
|
94
|
+
children: !empty && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.default, (0, _extends2.default)({}, skeletonProps))
|
|
59
95
|
}));
|
|
60
96
|
}
|
|
61
97
|
process.env.NODE_ENV !== "production" ? GridSkeletonCell.propTypes = {
|
|
@@ -63,9 +99,15 @@ process.env.NODE_ENV !== "production" ? GridSkeletonCell.propTypes = {
|
|
|
63
99
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
64
100
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
65
101
|
// ----------------------------------------------------------------------
|
|
66
|
-
align: _propTypes.default.string
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
102
|
+
align: _propTypes.default.string,
|
|
103
|
+
/**
|
|
104
|
+
* If `true`, the cell will not display the skeleton but still reserve the cell space.
|
|
105
|
+
* @default false
|
|
106
|
+
*/
|
|
107
|
+
empty: _propTypes.default.bool,
|
|
108
|
+
field: _propTypes.default.string,
|
|
109
|
+
height: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]),
|
|
110
|
+
type: _propTypes.default.oneOf(['actions', 'boolean', 'custom', 'date', 'dateTime', 'number', 'singleSelect', 'string']),
|
|
111
|
+
width: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])
|
|
70
112
|
} : void 0;
|
|
71
113
|
const Memoized = exports.GridSkeletonCell = (0, _fastMemo.fastMemo)(GridSkeletonCell);
|
|
@@ -12,7 +12,6 @@ var _clsx = _interopRequireDefault(require("clsx"));
|
|
|
12
12
|
var _utils = require("@mui/utils");
|
|
13
13
|
var _fastMemo = require("../../utils/fastMemo");
|
|
14
14
|
var _useGridPrivateApiContext = require("../../hooks/utils/useGridPrivateApiContext");
|
|
15
|
-
var _GridColumnHeaderSortIcon = require("./GridColumnHeaderSortIcon");
|
|
16
15
|
var _ColumnHeaderMenuIcon = require("./ColumnHeaderMenuIcon");
|
|
17
16
|
var _GridColumnHeaderMenu = require("../menu/columnMenu/GridColumnHeaderMenu");
|
|
18
17
|
var _gridClasses = require("../../constants/gridClasses");
|
|
@@ -151,12 +150,13 @@ function GridColumnHeaderItem(props) {
|
|
|
151
150
|
children: [!rootProps.disableColumnFilter && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.columnHeaderFilterIconButton, (0, _extends2.default)({
|
|
152
151
|
field: colDef.field,
|
|
153
152
|
counter: filterItemsCounter
|
|
154
|
-
}, rootProps.slotProps?.columnHeaderFilterIconButton)), showSortIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
153
|
+
}, rootProps.slotProps?.columnHeaderFilterIconButton)), showSortIcon && /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.columnHeaderSortIcon, (0, _extends2.default)({
|
|
154
|
+
field: colDef.field,
|
|
155
155
|
direction: sortDirection,
|
|
156
156
|
index: sortIndex,
|
|
157
157
|
sortingOrder: sortingOrder,
|
|
158
158
|
disabled: !colDef.sortable
|
|
159
|
-
})]
|
|
159
|
+
}, rootProps.slotProps?.columnHeaderSortIcon))]
|
|
160
160
|
});
|
|
161
161
|
React.useLayoutEffect(() => {
|
|
162
162
|
const columnMenuState = apiRef.current.state.columnMenu;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.GridColumnHeaderSortIcon = void 0;
|
|
8
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
8
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
10
|
var React = _interopRequireWildcard(require("react"));
|
|
10
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -15,6 +16,7 @@ var _gridClasses = require("../../constants/gridClasses");
|
|
|
15
16
|
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
|
|
16
17
|
var _GridIconButtonContainer = require("./GridIconButtonContainer");
|
|
17
18
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
const _excluded = ["direction", "index", "sortingOrder", "disabled"];
|
|
18
20
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
19
21
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
20
22
|
const useUtilityClasses = ownerState => {
|
|
@@ -44,11 +46,12 @@ function getIcon(icons, direction, className, sortingOrder) {
|
|
|
44
46
|
}
|
|
45
47
|
function GridColumnHeaderSortIconRaw(props) {
|
|
46
48
|
const {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
direction,
|
|
50
|
+
index,
|
|
51
|
+
sortingOrder,
|
|
52
|
+
disabled
|
|
53
|
+
} = props,
|
|
54
|
+
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
52
55
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
53
56
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
54
57
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
@@ -65,13 +68,14 @@ function GridColumnHeaderSortIconRaw(props) {
|
|
|
65
68
|
title: apiRef.current.getLocaleText('columnHeaderSortIconLabel'),
|
|
66
69
|
size: "small",
|
|
67
70
|
disabled: disabled
|
|
68
|
-
}, rootProps.slotProps?.baseIconButton, {
|
|
71
|
+
}, rootProps.slotProps?.baseIconButton, other, {
|
|
69
72
|
children: iconElement
|
|
70
73
|
}));
|
|
71
74
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridIconButtonContainer.GridIconButtonContainer, {
|
|
72
75
|
children: [index != null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Badge.default, {
|
|
73
76
|
badgeContent: index,
|
|
74
77
|
color: "default",
|
|
78
|
+
overlap: "circular",
|
|
75
79
|
children: iconButton
|
|
76
80
|
}), index == null && iconButton]
|
|
77
81
|
});
|
|
@@ -84,6 +88,7 @@ process.env.NODE_ENV !== "production" ? GridColumnHeaderSortIconRaw.propTypes =
|
|
|
84
88
|
// ----------------------------------------------------------------------
|
|
85
89
|
direction: _propTypes.default.oneOf(['asc', 'desc']),
|
|
86
90
|
disabled: _propTypes.default.bool,
|
|
91
|
+
field: _propTypes.default.string.isRequired,
|
|
87
92
|
index: _propTypes.default.number,
|
|
88
93
|
sortingOrder: _propTypes.default.arrayOf(_propTypes.default.oneOf(['asc', 'desc'])).isRequired
|
|
89
94
|
} : void 0;
|
|
@@ -148,6 +148,8 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
148
148
|
[`& .${_gridClasses.gridClasses.treeDataGroupingCell}`]: styles.treeDataGroupingCell
|
|
149
149
|
}, {
|
|
150
150
|
[`& .${_gridClasses.gridClasses.treeDataGroupingCellToggle}`]: styles.treeDataGroupingCellToggle
|
|
151
|
+
}, {
|
|
152
|
+
[`& .${_gridClasses.gridClasses.treeDataGroupingCellLoadingContainer}`]: styles.treeDataGroupingCellLoadingContainer
|
|
151
153
|
}, {
|
|
152
154
|
[`& .${_gridClasses.gridClasses.detailPanelToggleCell}`]: styles.detailPanelToggleCell
|
|
153
155
|
}, {
|
|
@@ -166,7 +168,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
166
168
|
const selectedOpacity = (t.vars || t).palette.action.selectedOpacity;
|
|
167
169
|
const selectedBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / ${selectedOpacity})` : (0, _styles.alpha)(t.palette.primary.main, selectedOpacity);
|
|
168
170
|
const selectedHoverBackground = t.vars ? `rgba(${t.vars.palette.primary.mainChannel} / calc(
|
|
169
|
-
${t.vars.palette.action.selectedOpacity} +
|
|
171
|
+
${t.vars.palette.action.selectedOpacity} +
|
|
170
172
|
${t.vars.palette.action.hoverOpacity}
|
|
171
173
|
))` : (0, _styles.alpha)(t.palette.primary.main, t.palette.action.selectedOpacity + t.palette.action.hoverOpacity);
|
|
172
174
|
const pinnedHoverBackground = t.vars ? hoverColor : blend(pinnedBackground, hoverColor, hoverOpacity);
|
|
@@ -430,6 +432,9 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
430
432
|
backgroundColor: 'transparent'
|
|
431
433
|
}
|
|
432
434
|
},
|
|
435
|
+
[`&.${_gridClasses.gridClasses.rowSkeleton}:hover`]: {
|
|
436
|
+
backgroundColor: 'transparent'
|
|
437
|
+
},
|
|
433
438
|
'&.Mui-selected': selectedStyles
|
|
434
439
|
},
|
|
435
440
|
[`& .${_gridClasses.gridClasses['container--top']}, & .${_gridClasses.gridClasses['container--bottom']}`]: {
|
|
@@ -615,6 +620,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
615
620
|
alignSelf: 'stretch',
|
|
616
621
|
marginRight: t.spacing(2)
|
|
617
622
|
},
|
|
623
|
+
[`& .${_gridClasses.gridClasses.treeDataGroupingCellLoadingContainer}`]: {
|
|
624
|
+
display: 'flex',
|
|
625
|
+
alignItems: 'center',
|
|
626
|
+
justifyContent: 'center',
|
|
627
|
+
height: '100%'
|
|
628
|
+
},
|
|
618
629
|
[`& .${_gridClasses.gridClasses.groupingCriteriaCell}`]: {
|
|
619
630
|
display: 'flex',
|
|
620
631
|
alignItems: 'center',
|
|
@@ -630,7 +641,7 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
630
641
|
minWidth: 'calc(var(--DataGrid-hasScrollY) * var(--DataGrid-scrollbarSize))',
|
|
631
642
|
alignSelf: 'stretch',
|
|
632
643
|
[`&.${_gridClasses.gridClasses['scrollbarFiller--borderTop']}`]: {
|
|
633
|
-
borderTop: '1px solid var(--
|
|
644
|
+
borderTop: '1px solid var(--rowBorderColor)'
|
|
634
645
|
},
|
|
635
646
|
[`&.${_gridClasses.gridClasses['scrollbarFiller--pinnedRight']}`]: {
|
|
636
647
|
backgroundColor: 'var(--DataGrid-pinnedBackground)',
|
|
@@ -643,6 +654,12 @@ const GridRootStyles = exports.GridRootStyles = (0, _styles.styled)('div', {
|
|
|
643
654
|
},
|
|
644
655
|
[`& .${_gridClasses.gridClasses['filler--borderTop']}`]: {
|
|
645
656
|
borderTop: '1px solid var(--DataGrid-rowBorderColor)'
|
|
657
|
+
},
|
|
658
|
+
/* Hide grid rows and vertical scrollbar when skeleton overlay is visible */
|
|
659
|
+
[`& .${_gridClasses.gridClasses['main--hasSkeletonLoadingOverlay']}`]: {
|
|
660
|
+
[`& .${_gridClasses.gridClasses.virtualScrollerContent}, & .${_gridClasses.gridClasses['scrollbar--vertical']}, & .${_gridClasses.gridClasses.pinnedRows}`]: {
|
|
661
|
+
display: 'none'
|
|
662
|
+
}
|
|
646
663
|
}
|
|
647
664
|
});
|
|
648
665
|
return gridStyle;
|
|
@@ -16,6 +16,7 @@ var _useGridSelector = require("../../hooks/utils/useGridSelector");
|
|
|
16
16
|
var _gridClasses = require("../../constants/gridClasses");
|
|
17
17
|
var _dimensions = require("../../hooks/features/dimensions");
|
|
18
18
|
var _useGridVirtualScroller = require("../../hooks/features/virtualization/useGridVirtualScroller");
|
|
19
|
+
var _useGridOverlays = require("../../hooks/features/overlays/useGridOverlays");
|
|
19
20
|
var _GridOverlays = require("../base/GridOverlays");
|
|
20
21
|
var _GridHeaders = require("../GridHeaders");
|
|
21
22
|
var _GridMainContainer = require("./GridMainContainer");
|
|
@@ -28,12 +29,12 @@ var _GridVirtualScrollbar = require("./GridVirtualScrollbar");
|
|
|
28
29
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
30
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
30
31
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
31
|
-
const useUtilityClasses = (ownerState, dimensions) => {
|
|
32
|
+
const useUtilityClasses = (ownerState, dimensions, loadingOverlayVariant) => {
|
|
32
33
|
const {
|
|
33
34
|
classes
|
|
34
35
|
} = ownerState;
|
|
35
36
|
const slots = {
|
|
36
|
-
root: ['main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight'],
|
|
37
|
+
root: ['main', dimensions.rightPinnedWidth > 0 && 'main--hasPinnedRight', loadingOverlayVariant === 'skeleton' && 'main--hasSkeletonLoadingOverlay'],
|
|
37
38
|
scroller: ['virtualScroller']
|
|
38
39
|
};
|
|
39
40
|
return (0, _utils.unstable_composeClasses)(slots, _gridClasses.getDataGridUtilityClass, classes);
|
|
@@ -60,7 +61,8 @@ function GridVirtualScroller(props) {
|
|
|
60
61
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
61
62
|
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
62
63
|
const dimensions = (0, _useGridSelector.useGridSelector)(apiRef, _dimensions.gridDimensionsSelector);
|
|
63
|
-
const
|
|
64
|
+
const overlaysProps = (0, _useGridOverlays.useGridOverlays)();
|
|
65
|
+
const classes = useUtilityClasses(rootProps, dimensions, overlaysProps.loadingOverlayVariant);
|
|
64
66
|
const virtualScroller = (0, _useGridVirtualScroller.useGridVirtualScroller)();
|
|
65
67
|
const {
|
|
66
68
|
getContainerProps,
|
|
@@ -88,7 +90,7 @@ function GridVirtualScroller(props) {
|
|
|
88
90
|
position: "top",
|
|
89
91
|
virtualScroller: virtualScroller
|
|
90
92
|
})]
|
|
91
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridOverlays.GridOverlays, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerContent.GridVirtualScrollerContent, (0, _extends2.default)({}, getContentProps(), {
|
|
93
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridOverlays.GridOverlays, (0, _extends2.default)({}, overlaysProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerContent.GridVirtualScrollerContent, (0, _extends2.default)({}, getContentProps(), {
|
|
92
94
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_GridVirtualScrollerRenderZone.GridVirtualScrollerRenderZone, (0, _extends2.default)({}, getRenderZoneProps(), {
|
|
93
95
|
children: [rows, /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.detailPanels, {
|
|
94
96
|
virtualScroller: virtualScroller
|
|
@@ -20,6 +20,7 @@ const DATA_GRID_DEFAULT_SLOTS_COMPONENTS = exports.DATA_GRID_DEFAULT_SLOTS_COMPO
|
|
|
20
20
|
cell: _GridCell.GridCell,
|
|
21
21
|
skeletonCell: _components.GridSkeletonCell,
|
|
22
22
|
columnHeaderFilterIconButton: _components.GridColumnHeaderFilterIconButton,
|
|
23
|
+
columnHeaderSortIcon: _components.GridColumnHeaderSortIcon,
|
|
23
24
|
columnMenu: _GridColumnMenu.GridColumnMenu,
|
|
24
25
|
columnHeaders: _GridColumnHeaders.GridColumnHeaders,
|
|
25
26
|
detailPanels: _GridDetailPanels.GridDetailPanels,
|
|
@@ -9,4 +9,4 @@ var _utils = require("@mui/utils");
|
|
|
9
9
|
function getDataGridUtilityClass(slot) {
|
|
10
10
|
return (0, _utils.unstable_generateUtilityClass)('MuiDataGrid', slot);
|
|
11
11
|
}
|
|
12
|
-
const gridClasses = exports.gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderTop', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|
|
12
|
+
const gridClasses = exports.gridClasses = (0, _utils.unstable_generateUtilityClasses)('MuiDataGrid', ['actionsCell', 'aggregationColumnHeader', 'aggregationColumnHeader--alignLeft', 'aggregationColumnHeader--alignCenter', 'aggregationColumnHeader--alignRight', 'aggregationColumnHeaderLabel', 'autoHeight', 'autosizing', 'booleanCell', 'cell--editable', 'cell--editing', 'cell--flex', 'cell--textCenter', 'cell--textLeft', 'cell--textRight', 'cell--rangeTop', 'cell--rangeBottom', 'cell--rangeLeft', 'cell--rangeRight', 'cell--pinnedLeft', 'cell--pinnedRight', 'cell--selectionMode', 'cell', 'cellCheckbox', 'cellEmpty', 'cellSkeleton', 'cellOffsetLeft', 'checkboxInput', 'columnHeader', 'columnHeader--alignCenter', 'columnHeader--alignLeft', 'columnHeader--alignRight', 'columnHeader--dragging', 'columnHeader--moving', 'columnHeader--numeric', 'columnHeader--sortable', 'columnHeader--sorted', 'columnHeader--filtered', 'columnHeader--pinnedLeft', 'columnHeader--pinnedRight', 'columnHeader--last', 'columnHeaderCheckbox', 'columnHeaderDraggableContainer', 'columnHeaderTitle', 'columnHeaderTitleContainer', 'columnHeaderTitleContainerContent', 'columnHeader--filledGroup', 'columnHeader--emptyGroup', 'columnHeaders', 'columnSeparator--resizable', 'columnSeparator--resizing', 'columnSeparator--sideLeft', 'columnSeparator--sideRight', 'columnSeparator', 'columnsManagement', 'columnsManagementRow', 'columnsManagementHeader', 'columnsManagementFooter', 'container--top', 'container--bottom', 'detailPanel', 'detailPanels', 'detailPanelToggleCell', 'detailPanelToggleCell--expanded', 'footerCell', 'panel', 'panelHeader', 'panelWrapper', 'panelContent', 'panelFooter', 'paper', 'editBooleanCell', 'editInputCell', 'filler', 'filler--borderTop', 'filler--pinnedLeft', 'filler--pinnedRight', 'filterForm', 'filterFormDeleteIcon', 'filterFormLogicOperatorInput', 'filterFormColumnInput', 'filterFormOperatorInput', 'filterFormValueInput', 'filterIcon', 'footerContainer', 'headerFilterRow', 'iconButtonContainer', 'iconSeparator', 'main', 'main--hasPinnedRight', 'main--hasSkeletonLoadingOverlay', 'menu', 'menuIcon', 'menuIconButton', 'menuOpen', 'menuList', 'overlay', 'overlayWrapper', 'overlayWrapperInner', 'root', 'root--densityStandard', 'root--densityComfortable', 'root--densityCompact', 'root--disableUserSelection', 'row', 'row--editable', 'row--editing', 'row--firstVisible', 'row--lastVisible', 'row--dragging', 'row--dynamicHeight', 'row--detailPanelExpanded', 'rowReorderCellPlaceholder', 'rowCount', 'rowReorderCellContainer', 'rowReorderCell', 'rowReorderCell--draggable', 'rowSkeleton', 'scrollArea--left', 'scrollArea--right', 'scrollArea', 'scrollbar', 'scrollbar--vertical', 'scrollbar--horizontal', 'scrollbarFiller', 'scrollbarFiller--header', 'scrollbarFiller--borderTop', 'scrollbarFiller--pinnedRight', 'selectedRowCount', 'sortIcon', 'toolbarContainer', 'toolbarFilterList', 'virtualScroller', 'virtualScrollerContent', 'virtualScrollerContent--overflowed', 'virtualScrollerRenderZone', 'pinnedColumns', 'withVerticalBorder', 'withBorderColor', 'cell--withRightBorder', 'cell--withLeftBorder', 'columnHeader--withRightBorder', 'columnHeader--withLeftBorder', 'treeDataGroupingCell', 'treeDataGroupingCellToggle', 'treeDataGroupingCellLoadingContainer', 'groupingCriteriaCell', 'groupingCriteriaCellToggle', 'pinnedRows', 'pinnedRows--top', 'pinnedRows--bottom', 'pinnedRowsRenderZone']);
|