@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.
Files changed (162) hide show
  1. package/CHANGELOG.md +166 -1
  2. package/DataGrid/useDataGridComponent.d.ts +0 -1
  3. package/DataGrid/useDataGridProps.js +9 -2
  4. package/components/GridFooter.d.ts +1 -1
  5. package/components/GridLoadingOverlay.d.ts +15 -3
  6. package/components/GridLoadingOverlay.js +48 -4
  7. package/components/GridNoResultsOverlay.d.ts +1 -1
  8. package/components/GridNoRowsOverlay.d.ts +1 -1
  9. package/components/GridRow.js +2 -1
  10. package/components/GridRowCount.d.ts +1 -1
  11. package/components/GridSelectedRowCount.d.ts +1 -1
  12. package/components/GridSkeletonLoadingOverlay.d.ts +3 -0
  13. package/components/GridSkeletonLoadingOverlay.js +181 -0
  14. package/components/base/GridOverlays.d.ts +11 -1
  15. package/components/base/GridOverlays.js +25 -39
  16. package/components/cell/GridActionsCellItem.d.ts +3 -3
  17. package/components/cell/GridSkeletonCell.d.ts +13 -6
  18. package/components/cell/GridSkeletonCell.js +61 -19
  19. package/components/columnHeaders/GridColumnHeaderItem.js +3 -3
  20. package/components/columnHeaders/GridColumnHeaderSortIcon.d.ts +1 -0
  21. package/components/columnHeaders/GridColumnHeaderSortIcon.js +11 -6
  22. package/components/containers/GridFooterContainer.d.ts +1 -1
  23. package/components/containers/GridOverlay.d.ts +1 -1
  24. package/components/containers/GridRootStyles.d.ts +0 -1
  25. package/components/containers/GridRootStyles.js +19 -2
  26. package/components/containers/GridToolbarContainer.d.ts +1 -1
  27. package/components/panel/GridPanel.d.ts +1 -1
  28. package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
  29. package/components/virtualization/GridMainContainer.d.ts +1 -1
  30. package/components/virtualization/GridVirtualScroller.js +7 -5
  31. package/components/virtualization/GridVirtualScrollerContent.d.ts +1 -1
  32. package/components/virtualization/GridVirtualScrollerRenderZone.d.ts +1 -1
  33. package/constants/defaultGridSlotsComponents.js +2 -1
  34. package/constants/gridClasses.d.ts +14 -0
  35. package/constants/gridClasses.js +1 -1
  36. package/hooks/core/pipeProcessing/useGridRegisterPipeApplier.d.ts +2 -1
  37. package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +2 -2
  38. package/hooks/core/strategyProcessing/useGridRegisterStrategyProcessor.d.ts +2 -2
  39. package/hooks/core/useGridInitialization.d.ts +1 -1
  40. package/hooks/core/useGridLocaleText.d.ts +1 -1
  41. package/hooks/core/useGridLoggerFactory.d.ts +1 -1
  42. package/hooks/features/clipboard/useGridClipboard.d.ts +1 -1
  43. package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +1 -1
  44. package/hooks/features/columnResize/useGridColumnResize.d.ts +1 -1
  45. package/hooks/features/density/useGridDensity.d.ts +1 -1
  46. package/hooks/features/dimensions/useGridDimensions.js +15 -15
  47. package/hooks/features/editing/useGridCellEditing.d.ts +1 -1
  48. package/hooks/features/editing/useGridEditing.d.ts +1 -1
  49. package/hooks/features/editing/useGridRowEditing.d.ts +1 -1
  50. package/hooks/features/export/serializers/csvSerializer.d.ts +0 -1
  51. package/hooks/features/export/useGridCsvExport.d.ts +1 -1
  52. package/hooks/features/export/useGridPrintExport.d.ts +1 -1
  53. package/hooks/features/export/useGridPrintExport.js +9 -8
  54. package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
  55. package/hooks/features/filter/useGridFilter.d.ts +1 -1
  56. package/hooks/features/focus/useGridFocus.d.ts +1 -1
  57. package/hooks/features/headerFiltering/useGridHeaderFiltering.d.ts +1 -1
  58. package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
  59. package/hooks/features/overlays/useGridOverlays.d.ts +11 -0
  60. package/hooks/features/overlays/useGridOverlays.js +35 -0
  61. package/hooks/features/pagination/gridPaginationUtils.d.ts +1 -1
  62. package/hooks/features/pagination/index.d.ts +1 -1
  63. package/hooks/features/pagination/useGridPaginationMeta.d.ts +1 -1
  64. package/hooks/features/pagination/useGridPaginationModel.d.ts +2 -2
  65. package/hooks/features/pagination/useGridRowCount.d.ts +1 -1
  66. package/hooks/features/preferencesPanel/useGridPreferencesPanel.d.ts +1 -1
  67. package/hooks/features/rowSelection/useGridRowSelection.d.ts +1 -1
  68. package/hooks/features/rows/gridRowsInterfaces.d.ts +10 -2
  69. package/hooks/features/rows/gridRowsSelector.d.ts +2 -1
  70. package/hooks/features/rows/gridRowsSelector.js +1 -0
  71. package/hooks/features/rows/gridRowsUtils.d.ts +8 -6
  72. package/hooks/features/rows/gridRowsUtils.js +30 -6
  73. package/hooks/features/rows/useGridRows.d.ts +2 -2
  74. package/hooks/features/rows/useGridRows.js +39 -21
  75. package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
  76. package/hooks/features/scroll/useGridScroll.d.ts +1 -1
  77. package/hooks/features/sorting/useGridSorting.d.ts +1 -1
  78. package/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
  79. package/hooks/utils/index.d.ts +0 -1
  80. package/hooks/utils/index.js +0 -1
  81. package/hooks/utils/useGridApiEventHandler.d.ts +2 -2
  82. package/hooks/utils/useGridApiRef.d.ts +1 -1
  83. package/hooks/utils/useGridInitializeState.d.ts +1 -1
  84. package/hooks/utils/useGridRootProps.d.ts +1 -1
  85. package/hooks/utils/useGridSelector.d.ts +1 -1
  86. package/hooks/utils/useGridVisibleRows.d.ts +2 -2
  87. package/index.js +1 -1
  88. package/internals/index.d.ts +2 -0
  89. package/internals/index.js +1 -0
  90. package/internals/utils/propValidation.js +1 -1
  91. package/models/api/gridApiCommon.d.ts +2 -2
  92. package/models/api/gridInfiniteLoaderApi.d.ts +0 -1
  93. package/models/api/gridRowApi.d.ts +14 -0
  94. package/models/gridColumnGrouping.d.ts +0 -1
  95. package/models/gridDataSource.d.ts +87 -0
  96. package/models/gridDataSource.js +1 -0
  97. package/models/gridRows.d.ts +10 -0
  98. package/models/gridSlotsComponent.d.ts +5 -0
  99. package/models/gridSlotsComponentsProps.d.ts +7 -2
  100. package/models/props/DataGridProps.d.ts +2 -0
  101. package/modern/DataGrid/useDataGridProps.js +9 -2
  102. package/modern/components/GridLoadingOverlay.js +48 -4
  103. package/modern/components/GridRow.js +2 -1
  104. package/modern/components/GridSkeletonLoadingOverlay.js +181 -0
  105. package/modern/components/base/GridOverlays.js +25 -39
  106. package/modern/components/cell/GridSkeletonCell.js +61 -19
  107. package/modern/components/columnHeaders/GridColumnHeaderItem.js +3 -3
  108. package/modern/components/columnHeaders/GridColumnHeaderSortIcon.js +11 -6
  109. package/modern/components/containers/GridRootStyles.js +19 -2
  110. package/modern/components/virtualization/GridVirtualScroller.js +7 -5
  111. package/modern/constants/defaultGridSlotsComponents.js +2 -1
  112. package/modern/constants/gridClasses.js +1 -1
  113. package/modern/hooks/features/dimensions/useGridDimensions.js +15 -15
  114. package/modern/hooks/features/export/useGridPrintExport.js +9 -8
  115. package/modern/hooks/features/overlays/useGridOverlays.js +35 -0
  116. package/modern/hooks/features/rows/gridRowsSelector.js +1 -0
  117. package/modern/hooks/features/rows/gridRowsUtils.js +30 -6
  118. package/modern/hooks/features/rows/useGridRows.js +39 -21
  119. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
  120. package/modern/hooks/utils/index.js +0 -1
  121. package/modern/index.js +1 -1
  122. package/modern/internals/index.js +1 -0
  123. package/modern/internals/utils/propValidation.js +1 -1
  124. package/modern/models/gridDataSource.js +1 -0
  125. package/modern/utils/utils.js +10 -2
  126. package/node/DataGrid/useDataGridProps.js +9 -2
  127. package/node/components/GridLoadingOverlay.js +48 -4
  128. package/node/components/GridRow.js +2 -1
  129. package/node/components/GridSkeletonLoadingOverlay.js +189 -0
  130. package/node/components/base/GridOverlays.js +25 -39
  131. package/node/components/cell/GridSkeletonCell.js +60 -18
  132. package/node/components/columnHeaders/GridColumnHeaderItem.js +3 -3
  133. package/node/components/columnHeaders/GridColumnHeaderSortIcon.js +11 -6
  134. package/node/components/containers/GridRootStyles.js +19 -2
  135. package/node/components/virtualization/GridVirtualScroller.js +6 -4
  136. package/node/constants/defaultGridSlotsComponents.js +1 -0
  137. package/node/constants/gridClasses.js +1 -1
  138. package/node/hooks/features/dimensions/useGridDimensions.js +15 -15
  139. package/node/hooks/features/export/useGridPrintExport.js +9 -8
  140. package/node/hooks/features/overlays/useGridOverlays.js +42 -0
  141. package/node/hooks/features/rows/gridRowsSelector.js +2 -1
  142. package/node/hooks/features/rows/gridRowsUtils.js +31 -6
  143. package/node/hooks/features/rows/useGridRows.js +37 -19
  144. package/node/hooks/features/virtualization/useGridVirtualScroller.js +1 -1
  145. package/node/hooks/utils/index.js +0 -12
  146. package/node/index.js +1 -1
  147. package/node/internals/index.js +7 -0
  148. package/node/internals/utils/propValidation.js +1 -1
  149. package/node/models/gridDataSource.js +5 -0
  150. package/node/utils/utils.js +11 -3
  151. package/package.json +5 -4
  152. package/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -1
  153. package/utils/domUtils.d.ts +0 -1
  154. package/utils/getPublicApiRef.d.ts +1 -2
  155. package/utils/keyboardUtils.d.ts +1 -1
  156. package/utils/utils.d.ts +8 -1
  157. package/utils/utils.js +10 -2
  158. package/utils/warning.d.ts +1 -1
  159. package/hooks/utils/useResizeObserver.d.ts +0 -2
  160. package/hooks/utils/useResizeObserver.js +0 -36
  161. package/modern/hooks/utils/useResizeObserver.js +0 -36
  162. 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
- overlayType: props.overlayType,
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" ? GridOverlayWrapper.propTypes = {
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
- overlayType: _propTypes.default.string.isRequired
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 apiRef = (0, _useGridApiContext.useGridApiContext)();
94
+ function GridOverlays(props) {
95
+ const {
96
+ overlayType
97
+ } = props;
94
98
  const rootProps = (0, _useGridRootProps.useGridRootProps)();
95
- const totalRowCount = (0, _useGridSelector.useGridSelector)(apiRef, _gridRowsSelector.gridRowCountSelector);
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
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridOverlayWrapper, {
118
- overlayType: overlayType,
119
- children: overlay
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 randomWidth = (0, _utils2.randomNumberBetween)(10000, 20, 80);
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)}`, 'withBorderColor']
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
- const contentWidth = Math.round(randomWidth());
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
- className: classes.root,
49
- style: {
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.isRequired,
67
- field: _propTypes.default.string.isRequired,
68
- height: _propTypes.default.oneOfType([_propTypes.default.oneOf(['auto']), _propTypes.default.number]).isRequired,
69
- width: _propTypes.default.number.isRequired
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)(_GridColumnHeaderSortIcon.GridColumnHeaderSortIcon, {
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
- direction,
48
- index,
49
- sortingOrder,
50
- disabled
51
- } = props;
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(--DataGrid-rowBorderColor)'
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 classes = useUtilityClasses(rootProps, dimensions);
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']);