@mui/x-data-grid 7.8.0 → 7.10.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 +140 -0
- package/DataGrid/DataGrid.js +1 -0
- package/DataGrid/useDataGridProps.js +30 -22
- package/components/GridLoadingOverlay.d.ts +15 -3
- package/components/GridLoadingOverlay.js +48 -4
- package/components/GridRow.js +2 -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 +26 -40
- package/components/cell/GridSkeletonCell.d.ts +13 -6
- package/components/cell/GridSkeletonCell.js +61 -19
- package/components/containers/GridRoot.js +4 -16
- package/components/containers/GridRootStyles.js +11 -2
- package/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
- package/components/virtualization/GridMainContainer.js +11 -3
- package/components/virtualization/GridVirtualScroller.js +10 -6
- package/components/virtualization/GridVirtualScrollerFiller.d.ts +5 -1
- package/components/virtualization/GridVirtualScrollerFiller.js +9 -6
- package/constants/gridClasses.d.ts +9 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/features/filter/gridFilterSelector.d.ts +11 -0
- package/hooks/features/filter/gridFilterSelector.js +13 -0
- package/hooks/features/overlays/useGridOverlays.d.ts +11 -0
- package/hooks/features/overlays/useGridOverlays.js +35 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +4 -12
- package/hooks/utils/index.d.ts +0 -1
- package/hooks/utils/index.js +0 -1
- package/index.js +1 -1
- package/locales/esES.js +1 -2
- package/models/api/gridRowSelectionApi.d.ts +2 -2
- package/models/colDef/gridColDef.d.ts +4 -4
- package/models/gridRowSelectionModel.d.ts +2 -2
- package/models/gridSlotsComponentsProps.d.ts +2 -1
- package/models/props/DataGridProps.d.ts +5 -4
- package/modern/DataGrid/DataGrid.js +1 -0
- package/modern/DataGrid/useDataGridProps.js +30 -22
- 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 +26 -40
- package/modern/components/cell/GridSkeletonCell.js +61 -19
- package/modern/components/containers/GridRoot.js +4 -16
- package/modern/components/containers/GridRootStyles.js +11 -2
- package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
- package/modern/components/virtualization/GridMainContainer.js +11 -3
- package/modern/components/virtualization/GridVirtualScroller.js +10 -6
- package/modern/components/virtualization/GridVirtualScrollerFiller.js +9 -6
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/filter/gridFilterSelector.js +13 -0
- package/modern/hooks/features/overlays/useGridOverlays.js +35 -0
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +4 -12
- package/modern/hooks/utils/index.js +0 -1
- package/modern/index.js +1 -1
- package/modern/locales/esES.js +1 -2
- package/modern/utils/utils.js +10 -2
- package/node/DataGrid/DataGrid.js +1 -0
- package/node/DataGrid/useDataGridProps.js +30 -22
- 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 +26 -40
- package/node/components/cell/GridSkeletonCell.js +60 -18
- package/node/components/containers/GridRoot.js +3 -15
- package/node/components/containers/GridRootStyles.js +11 -2
- package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
- package/node/components/virtualization/GridMainContainer.js +10 -2
- package/node/components/virtualization/GridVirtualScroller.js +9 -5
- package/node/components/virtualization/GridVirtualScrollerFiller.js +9 -6
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/filter/gridFilterSelector.js +14 -1
- package/node/hooks/features/overlays/useGridOverlays.js +42 -0
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -12
- package/node/hooks/utils/index.js +0 -12
- package/node/index.js +1 -1
- package/node/locales/esES.js +1 -2
- package/node/utils/utils.js +11 -3
- package/package.json +5 -4
- package/utils/utils.d.ts +8 -1
- package/utils/utils.js +10 -2
- 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
|
@@ -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,13 +90,15 @@ 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
|
|
95
97
|
})]
|
|
96
98
|
}))
|
|
97
|
-
})),
|
|
99
|
+
})), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerFiller.GridVirtualScrollerFiller, {
|
|
100
|
+
rowsLength: rows.length
|
|
101
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridBottomContainer.GridBottomContainer, {
|
|
98
102
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.pinnedRows, {
|
|
99
103
|
position: "bottom",
|
|
100
104
|
virtualScroller: virtualScroller
|
|
@@ -24,22 +24,24 @@ const Pinned = (0, _system.styled)('div')({
|
|
|
24
24
|
position: 'sticky',
|
|
25
25
|
height: '100%',
|
|
26
26
|
boxSizing: 'border-box',
|
|
27
|
-
borderTop: '1px solid var(--
|
|
27
|
+
borderTop: '1px solid var(--rowBorderColor)',
|
|
28
28
|
backgroundColor: 'var(--DataGrid-pinnedBackground)'
|
|
29
29
|
});
|
|
30
30
|
const PinnedLeft = (0, _system.styled)(Pinned)({
|
|
31
31
|
left: 0,
|
|
32
|
-
borderRight: '1px solid var(--
|
|
32
|
+
borderRight: '1px solid var(--rowBorderColor)'
|
|
33
33
|
});
|
|
34
34
|
const PinnedRight = (0, _system.styled)(Pinned)({
|
|
35
35
|
right: 0,
|
|
36
|
-
borderLeft: '1px solid var(--
|
|
36
|
+
borderLeft: '1px solid var(--rowBorderColor)'
|
|
37
37
|
});
|
|
38
38
|
const Main = (0, _system.styled)('div')({
|
|
39
39
|
flexGrow: 1,
|
|
40
|
-
borderTop: '1px solid var(--
|
|
40
|
+
borderTop: '1px solid var(--rowBorderColor)'
|
|
41
41
|
});
|
|
42
|
-
function GridVirtualScrollerFiller(
|
|
42
|
+
function GridVirtualScrollerFiller({
|
|
43
|
+
rowsLength
|
|
44
|
+
}) {
|
|
43
45
|
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
44
46
|
const {
|
|
45
47
|
viewportOuterSize,
|
|
@@ -60,7 +62,8 @@ function GridVirtualScrollerFiller() {
|
|
|
60
62
|
className: _constants.gridClasses.filler,
|
|
61
63
|
role: "presentation",
|
|
62
64
|
style: {
|
|
63
|
-
height
|
|
65
|
+
height,
|
|
66
|
+
'--rowBorderColor': rowsLength === 0 ? 'transparent' : 'var(--DataGrid-rowBorderColor)'
|
|
64
67
|
},
|
|
65
68
|
children: [leftPinnedWidth > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(PinnedLeft, {
|
|
66
69
|
className: _constants.gridClasses['filler--pinnedLeft'],
|
|
@@ -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', 'treeDataGroupingCellLoadingContainer', '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']);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.gridVisibleRowsLookupSelector = exports.gridQuickFilterValuesSelector = exports.gridFilteredTopLevelRowCountSelector = exports.gridFilteredSortedTopLevelRowEntriesSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = exports.gridExpandedSortedRowIdsSelector = exports.gridExpandedSortedRowEntriesSelector = exports.gridExpandedRowCountSelector = void 0;
|
|
6
|
+
exports.gridVisibleRowsLookupSelector = exports.gridQuickFilterValuesSelector = exports.gridFilteredTopLevelRowCountSelector = exports.gridFilteredSortedTopLevelRowEntriesSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredRowCountSelector = exports.gridFilteredDescendantRowCountSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = exports.gridExpandedSortedRowIdsSelector = exports.gridExpandedSortedRowEntriesSelector = exports.gridExpandedRowCountSelector = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
8
|
var _gridSortingSelector = require("../sorting/gridSortingSelector");
|
|
9
9
|
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
@@ -95,6 +95,19 @@ const gridExpandedRowCountSelector = exports.gridExpandedRowCountSelector = (0,
|
|
|
95
95
|
*/
|
|
96
96
|
const gridFilteredTopLevelRowCountSelector = exports.gridFilteredTopLevelRowCountSelector = (0, _createSelector.createSelector)(gridFilteredSortedTopLevelRowEntriesSelector, visibleSortedTopLevelRows => visibleSortedTopLevelRows.length);
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Get the amount of rows accessible after the filtering process.
|
|
100
|
+
* Includes top level and descendant rows.
|
|
101
|
+
* @category Filtering
|
|
102
|
+
*/
|
|
103
|
+
const gridFilteredRowCountSelector = exports.gridFilteredRowCountSelector = (0, _createSelector.createSelector)(gridFilteredSortedRowEntriesSelector, filteredSortedRowEntries => filteredSortedRowEntries.length);
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get the amount of descendant rows accessible after the filtering process.
|
|
107
|
+
* @category Filtering
|
|
108
|
+
*/
|
|
109
|
+
const gridFilteredDescendantRowCountSelector = exports.gridFilteredDescendantRowCountSelector = (0, _createSelector.createSelector)(gridFilteredRowCountSelector, gridFilteredTopLevelRowCountSelector, (totalRowCount, topLevelRowCount) => totalRowCount - topLevelRowCount);
|
|
110
|
+
|
|
98
111
|
/**
|
|
99
112
|
* @category Filtering
|
|
100
113
|
* @ignore - do not document.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useGridOverlays = void 0;
|
|
7
|
+
var _utils = require("../../utils");
|
|
8
|
+
var _useGridApiContext = require("../../utils/useGridApiContext");
|
|
9
|
+
var _useGridRootProps = require("../../utils/useGridRootProps");
|
|
10
|
+
var _filter = require("../filter");
|
|
11
|
+
var _rows = require("../rows");
|
|
12
|
+
/**
|
|
13
|
+
* Uses the grid state to determine which overlay to display.
|
|
14
|
+
* Returns the active overlay type and the active loading overlay variant.
|
|
15
|
+
*/
|
|
16
|
+
const useGridOverlays = () => {
|
|
17
|
+
const apiRef = (0, _useGridApiContext.useGridApiContext)();
|
|
18
|
+
const rootProps = (0, _useGridRootProps.useGridRootProps)();
|
|
19
|
+
const totalRowCount = (0, _utils.useGridSelector)(apiRef, _rows.gridRowCountSelector);
|
|
20
|
+
const visibleRowCount = (0, _utils.useGridSelector)(apiRef, _filter.gridExpandedRowCountSelector);
|
|
21
|
+
const noRows = totalRowCount === 0;
|
|
22
|
+
const loading = (0, _utils.useGridSelector)(apiRef, _rows.gridRowsLoadingSelector);
|
|
23
|
+
const showNoRowsOverlay = !loading && noRows;
|
|
24
|
+
const showNoResultsOverlay = !loading && totalRowCount > 0 && visibleRowCount === 0;
|
|
25
|
+
let overlayType = null;
|
|
26
|
+
let loadingOverlayVariant = null;
|
|
27
|
+
if (showNoRowsOverlay) {
|
|
28
|
+
overlayType = 'noRowsOverlay';
|
|
29
|
+
}
|
|
30
|
+
if (showNoResultsOverlay) {
|
|
31
|
+
overlayType = 'noResultsOverlay';
|
|
32
|
+
}
|
|
33
|
+
if (loading) {
|
|
34
|
+
overlayType = 'loadingOverlay';
|
|
35
|
+
loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant'] || null;
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
overlayType,
|
|
39
|
+
loadingOverlayVariant
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
exports.useGridOverlays = useGridOverlays;
|
|
@@ -14,11 +14,11 @@ var ReactDOM = _interopRequireWildcard(require("react-dom"));
|
|
|
14
14
|
var _utils = require("@mui/utils");
|
|
15
15
|
var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
|
|
16
16
|
var _useTimeout = _interopRequireDefault(require("@mui/utils/useTimeout"));
|
|
17
|
+
var _useResizeObserver = require("@mui/x-internals/useResizeObserver");
|
|
17
18
|
var _styles = require("@mui/material/styles");
|
|
18
19
|
var _useGridPrivateApiContext = require("../../utils/useGridPrivateApiContext");
|
|
19
20
|
var _useGridRootProps = require("../../utils/useGridRootProps");
|
|
20
21
|
var _useGridSelector = require("../../utils/useGridSelector");
|
|
21
|
-
var _useResizeObserver = require("../../utils/useResizeObserver");
|
|
22
22
|
var _useRunOnce = require("../../utils/useRunOnce");
|
|
23
23
|
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
24
24
|
var _gridDimensionsSelectors = require("../dimensions/gridDimensionsSelectors");
|
|
@@ -373,20 +373,12 @@ const useGridVirtualScroller = () => {
|
|
|
373
373
|
overflowY: rootProps.autoHeight ? 'hidden' : undefined
|
|
374
374
|
}), [needsHorizontalScrollbar, rootProps.autoHeight]);
|
|
375
375
|
const contentSize = React.useMemo(() => {
|
|
376
|
-
// In cases where the columns exceed the available width,
|
|
377
|
-
// the horizontal scrollbar should be shown even when there're no rows.
|
|
378
|
-
// Keeping 1px as minimum height ensures that the scrollbar will visible if necessary.
|
|
379
|
-
const height = Math.max(contentHeight, 1);
|
|
380
376
|
const size = {
|
|
381
377
|
width: needsHorizontalScrollbar ? columnsTotalWidth : 'auto',
|
|
382
|
-
height
|
|
378
|
+
height: contentHeight
|
|
383
379
|
};
|
|
384
|
-
if (rootProps.autoHeight) {
|
|
385
|
-
|
|
386
|
-
size.height = (0, _gridRowsUtils.getMinimalContentHeight)(apiRef); // Give room to show the overlay when there no rows.
|
|
387
|
-
} else {
|
|
388
|
-
size.height = contentHeight;
|
|
389
|
-
}
|
|
380
|
+
if (rootProps.autoHeight && currentPage.rows.length === 0) {
|
|
381
|
+
size.height = (0, _gridRowsUtils.getMinimalContentHeight)(apiRef); // Give room to show the overlay when there no rows.
|
|
390
382
|
}
|
|
391
383
|
return size;
|
|
392
384
|
}, [apiRef, columnsTotalWidth, contentHeight, needsHorizontalScrollbar, rootProps.autoHeight, currentPage.rows.length]);
|
|
@@ -85,18 +85,6 @@ Object.keys(_useOnMount).forEach(function (key) {
|
|
|
85
85
|
}
|
|
86
86
|
});
|
|
87
87
|
});
|
|
88
|
-
var _useResizeObserver = require("./useResizeObserver");
|
|
89
|
-
Object.keys(_useResizeObserver).forEach(function (key) {
|
|
90
|
-
if (key === "default" || key === "__esModule") return;
|
|
91
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
92
|
-
if (key in exports && exports[key] === _useResizeObserver[key]) return;
|
|
93
|
-
Object.defineProperty(exports, key, {
|
|
94
|
-
enumerable: true,
|
|
95
|
-
get: function () {
|
|
96
|
-
return _useResizeObserver[key];
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
88
|
var _useRunOnce = require("./useRunOnce");
|
|
101
89
|
Object.keys(_useRunOnce).forEach(function (key) {
|
|
102
90
|
if (key === "default" || key === "__esModule") return;
|
package/node/index.js
CHANGED
package/node/locales/esES.js
CHANGED
|
@@ -39,8 +39,7 @@ const esESGrid = {
|
|
|
39
39
|
columnsManagementSearchTitle: 'Buscar',
|
|
40
40
|
columnsManagementNoColumns: 'Sin columnas',
|
|
41
41
|
columnsManagementShowHideAllText: 'Mostrar/Ocultar todas',
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
columnsManagementReset: 'Restablecer',
|
|
44
43
|
// Filter panel text
|
|
45
44
|
filterPanelAddFilter: 'Agregar filtro',
|
|
46
45
|
filterPanelRemoveAll: 'Remover todos',
|
package/node/utils/utils.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.clamp = void 0;
|
|
7
|
+
exports.createRandomNumberGenerator = createRandomNumberGenerator;
|
|
7
8
|
exports.deepClone = deepClone;
|
|
8
9
|
exports.escapeRegExp = escapeRegExp;
|
|
9
10
|
exports.eslintUseValue = eslintUseValue;
|
|
@@ -12,7 +13,6 @@ exports.isFunction = isFunction;
|
|
|
12
13
|
exports.isNumber = isNumber;
|
|
13
14
|
exports.isObject = isObject;
|
|
14
15
|
exports.localStorageAvailable = localStorageAvailable;
|
|
15
|
-
exports.randomNumberBetween = randomNumberBetween;
|
|
16
16
|
exports.range = range;
|
|
17
17
|
function isNumber(value) {
|
|
18
18
|
return typeof value === 'number' && !Number.isNaN(value);
|
|
@@ -189,9 +189,17 @@ function mulberry32(a) {
|
|
|
189
189
|
/* eslint-enable */
|
|
190
190
|
};
|
|
191
191
|
}
|
|
192
|
-
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Create a random number generator from a seed. The seed
|
|
195
|
+
* ensures that the random number generator produces the
|
|
196
|
+
* same sequence of 'random' numbers on every render. It
|
|
197
|
+
* returns a function that generates a random number between
|
|
198
|
+
* a specified min and max.
|
|
199
|
+
*/
|
|
200
|
+
function createRandomNumberGenerator(seed) {
|
|
193
201
|
const random = mulberry32(seed);
|
|
194
|
-
return () => min + (max - min) * random();
|
|
202
|
+
return (min, max) => min + (max - min) * random();
|
|
195
203
|
}
|
|
196
204
|
function deepClone(obj) {
|
|
197
205
|
if (typeof structuredClone === 'function') {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-data-grid",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.10.0",
|
|
4
4
|
"description": "The Community plan edition of the Data Grid components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -38,11 +38,12 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@babel/runtime": "^7.24.7",
|
|
41
|
-
"@mui/system": "^5.
|
|
42
|
-
"@mui/utils": "^5.
|
|
41
|
+
"@mui/system": "^5.16.0",
|
|
42
|
+
"@mui/utils": "^5.16.0",
|
|
43
43
|
"clsx": "^2.1.1",
|
|
44
44
|
"prop-types": "^15.8.1",
|
|
45
|
-
"reselect": "^4.1.8"
|
|
45
|
+
"reselect": "^4.1.8",
|
|
46
|
+
"@mui/x-internals": "7.10.0"
|
|
46
47
|
},
|
|
47
48
|
"peerDependencies": {
|
|
48
49
|
"@mui/material": "^5.15.14",
|
package/utils/utils.d.ts
CHANGED
|
@@ -39,7 +39,14 @@ export declare function range(from: number, to: number): number[];
|
|
|
39
39
|
* We only type the public interface to avoid dozens of `as` in the function.
|
|
40
40
|
*/
|
|
41
41
|
export declare function isDeepEqual<T>(actual: any, expected: T): actual is T;
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Create a random number generator from a seed. The seed
|
|
44
|
+
* ensures that the random number generator produces the
|
|
45
|
+
* same sequence of 'random' numbers on every render. It
|
|
46
|
+
* returns a function that generates a random number between
|
|
47
|
+
* a specified min and max.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createRandomNumberGenerator(seed: number): (min: number, max: number) => number;
|
|
43
50
|
export declare function deepClone(obj: Record<string, any>): any;
|
|
44
51
|
/**
|
|
45
52
|
* Mark a value as used so eslint doesn't complain. Use this instead
|
package/utils/utils.js
CHANGED
|
@@ -172,9 +172,17 @@ function mulberry32(a) {
|
|
|
172
172
|
/* eslint-enable */
|
|
173
173
|
};
|
|
174
174
|
}
|
|
175
|
-
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Create a random number generator from a seed. The seed
|
|
178
|
+
* ensures that the random number generator produces the
|
|
179
|
+
* same sequence of 'random' numbers on every render. It
|
|
180
|
+
* returns a function that generates a random number between
|
|
181
|
+
* a specified min and max.
|
|
182
|
+
*/
|
|
183
|
+
export function createRandomNumberGenerator(seed) {
|
|
176
184
|
const random = mulberry32(seed);
|
|
177
|
-
return () => min + (max - min) * random();
|
|
185
|
+
return (min, max) => min + (max - min) * random();
|
|
178
186
|
}
|
|
179
187
|
export function deepClone(obj) {
|
|
180
188
|
if (typeof structuredClone === 'function') {
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
|
|
3
|
-
const isDevEnvironment = process.env.NODE_ENV === 'development';
|
|
4
|
-
const noop = () => {};
|
|
5
|
-
export function useResizeObserver(ref, fn, enabled) {
|
|
6
|
-
const fnRef = React.useRef(null);
|
|
7
|
-
fnRef.current = fn;
|
|
8
|
-
useEnhancedEffect(() => {
|
|
9
|
-
if (enabled === false || typeof ResizeObserver === 'undefined') {
|
|
10
|
-
return noop;
|
|
11
|
-
}
|
|
12
|
-
let frameID = 0;
|
|
13
|
-
const target = ref.current;
|
|
14
|
-
const observer = new ResizeObserver(entries => {
|
|
15
|
-
// See https://github.com/mui/mui-x/issues/8733
|
|
16
|
-
// In dev, we avoid the React warning by moving the task to the next frame.
|
|
17
|
-
// In prod, we want the task to run in the same frame as to avoid tear.
|
|
18
|
-
if (isDevEnvironment) {
|
|
19
|
-
frameID = requestAnimationFrame(() => {
|
|
20
|
-
fnRef.current(entries);
|
|
21
|
-
});
|
|
22
|
-
} else {
|
|
23
|
-
fnRef.current(entries);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
if (target) {
|
|
27
|
-
observer.observe(target);
|
|
28
|
-
}
|
|
29
|
-
return () => {
|
|
30
|
-
if (frameID) {
|
|
31
|
-
cancelAnimationFrame(frameID);
|
|
32
|
-
}
|
|
33
|
-
observer.disconnect();
|
|
34
|
-
};
|
|
35
|
-
}, [ref, enabled]);
|
|
36
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';
|
|
3
|
-
const isDevEnvironment = process.env.NODE_ENV === 'development';
|
|
4
|
-
const noop = () => {};
|
|
5
|
-
export function useResizeObserver(ref, fn, enabled) {
|
|
6
|
-
const fnRef = React.useRef(null);
|
|
7
|
-
fnRef.current = fn;
|
|
8
|
-
useEnhancedEffect(() => {
|
|
9
|
-
if (enabled === false || typeof ResizeObserver === 'undefined') {
|
|
10
|
-
return noop;
|
|
11
|
-
}
|
|
12
|
-
let frameID = 0;
|
|
13
|
-
const target = ref.current;
|
|
14
|
-
const observer = new ResizeObserver(entries => {
|
|
15
|
-
// See https://github.com/mui/mui-x/issues/8733
|
|
16
|
-
// In dev, we avoid the React warning by moving the task to the next frame.
|
|
17
|
-
// In prod, we want the task to run in the same frame as to avoid tear.
|
|
18
|
-
if (isDevEnvironment) {
|
|
19
|
-
frameID = requestAnimationFrame(() => {
|
|
20
|
-
fnRef.current(entries);
|
|
21
|
-
});
|
|
22
|
-
} else {
|
|
23
|
-
fnRef.current(entries);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
if (target) {
|
|
27
|
-
observer.observe(target);
|
|
28
|
-
}
|
|
29
|
-
return () => {
|
|
30
|
-
if (frameID) {
|
|
31
|
-
cancelAnimationFrame(frameID);
|
|
32
|
-
}
|
|
33
|
-
observer.disconnect();
|
|
34
|
-
};
|
|
35
|
-
}, [ref, enabled]);
|
|
36
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useResizeObserver = useResizeObserver;
|
|
7
|
-
var React = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _utils = require("@mui/utils");
|
|
9
|
-
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); }
|
|
10
|
-
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; }
|
|
11
|
-
const isDevEnvironment = process.env.NODE_ENV === 'development';
|
|
12
|
-
const noop = () => {};
|
|
13
|
-
function useResizeObserver(ref, fn, enabled) {
|
|
14
|
-
const fnRef = React.useRef(null);
|
|
15
|
-
fnRef.current = fn;
|
|
16
|
-
(0, _utils.unstable_useEnhancedEffect)(() => {
|
|
17
|
-
if (enabled === false || typeof ResizeObserver === 'undefined') {
|
|
18
|
-
return noop;
|
|
19
|
-
}
|
|
20
|
-
let frameID = 0;
|
|
21
|
-
const target = ref.current;
|
|
22
|
-
const observer = new ResizeObserver(entries => {
|
|
23
|
-
// See https://github.com/mui/mui-x/issues/8733
|
|
24
|
-
// In dev, we avoid the React warning by moving the task to the next frame.
|
|
25
|
-
// In prod, we want the task to run in the same frame as to avoid tear.
|
|
26
|
-
if (isDevEnvironment) {
|
|
27
|
-
frameID = requestAnimationFrame(() => {
|
|
28
|
-
fnRef.current(entries);
|
|
29
|
-
});
|
|
30
|
-
} else {
|
|
31
|
-
fnRef.current(entries);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
if (target) {
|
|
35
|
-
observer.observe(target);
|
|
36
|
-
}
|
|
37
|
-
return () => {
|
|
38
|
-
if (frameID) {
|
|
39
|
-
cancelAnimationFrame(frameID);
|
|
40
|
-
}
|
|
41
|
-
observer.disconnect();
|
|
42
|
-
};
|
|
43
|
-
}, [ref, enabled]);
|
|
44
|
-
}
|