@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.
Files changed (84) hide show
  1. package/CHANGELOG.md +140 -0
  2. package/DataGrid/DataGrid.js +1 -0
  3. package/DataGrid/useDataGridProps.js +30 -22
  4. package/components/GridLoadingOverlay.d.ts +15 -3
  5. package/components/GridLoadingOverlay.js +48 -4
  6. package/components/GridRow.js +2 -1
  7. package/components/GridSkeletonLoadingOverlay.d.ts +3 -0
  8. package/components/GridSkeletonLoadingOverlay.js +181 -0
  9. package/components/base/GridOverlays.d.ts +11 -1
  10. package/components/base/GridOverlays.js +26 -40
  11. package/components/cell/GridSkeletonCell.d.ts +13 -6
  12. package/components/cell/GridSkeletonCell.js +61 -19
  13. package/components/containers/GridRoot.js +4 -16
  14. package/components/containers/GridRootStyles.js +11 -2
  15. package/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
  16. package/components/virtualization/GridMainContainer.js +11 -3
  17. package/components/virtualization/GridVirtualScroller.js +10 -6
  18. package/components/virtualization/GridVirtualScrollerFiller.d.ts +5 -1
  19. package/components/virtualization/GridVirtualScrollerFiller.js +9 -6
  20. package/constants/gridClasses.d.ts +9 -0
  21. package/constants/gridClasses.js +1 -1
  22. package/hooks/features/filter/gridFilterSelector.d.ts +11 -0
  23. package/hooks/features/filter/gridFilterSelector.js +13 -0
  24. package/hooks/features/overlays/useGridOverlays.d.ts +11 -0
  25. package/hooks/features/overlays/useGridOverlays.js +35 -0
  26. package/hooks/features/virtualization/useGridVirtualScroller.js +4 -12
  27. package/hooks/utils/index.d.ts +0 -1
  28. package/hooks/utils/index.js +0 -1
  29. package/index.js +1 -1
  30. package/locales/esES.js +1 -2
  31. package/models/api/gridRowSelectionApi.d.ts +2 -2
  32. package/models/colDef/gridColDef.d.ts +4 -4
  33. package/models/gridRowSelectionModel.d.ts +2 -2
  34. package/models/gridSlotsComponentsProps.d.ts +2 -1
  35. package/models/props/DataGridProps.d.ts +5 -4
  36. package/modern/DataGrid/DataGrid.js +1 -0
  37. package/modern/DataGrid/useDataGridProps.js +30 -22
  38. package/modern/components/GridLoadingOverlay.js +48 -4
  39. package/modern/components/GridRow.js +2 -1
  40. package/modern/components/GridSkeletonLoadingOverlay.js +181 -0
  41. package/modern/components/base/GridOverlays.js +26 -40
  42. package/modern/components/cell/GridSkeletonCell.js +61 -19
  43. package/modern/components/containers/GridRoot.js +4 -16
  44. package/modern/components/containers/GridRootStyles.js +11 -2
  45. package/modern/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
  46. package/modern/components/virtualization/GridMainContainer.js +11 -3
  47. package/modern/components/virtualization/GridVirtualScroller.js +10 -6
  48. package/modern/components/virtualization/GridVirtualScrollerFiller.js +9 -6
  49. package/modern/constants/gridClasses.js +1 -1
  50. package/modern/hooks/features/filter/gridFilterSelector.js +13 -0
  51. package/modern/hooks/features/overlays/useGridOverlays.js +35 -0
  52. package/modern/hooks/features/virtualization/useGridVirtualScroller.js +4 -12
  53. package/modern/hooks/utils/index.js +0 -1
  54. package/modern/index.js +1 -1
  55. package/modern/locales/esES.js +1 -2
  56. package/modern/utils/utils.js +10 -2
  57. package/node/DataGrid/DataGrid.js +1 -0
  58. package/node/DataGrid/useDataGridProps.js +30 -22
  59. package/node/components/GridLoadingOverlay.js +48 -4
  60. package/node/components/GridRow.js +2 -1
  61. package/node/components/GridSkeletonLoadingOverlay.js +189 -0
  62. package/node/components/base/GridOverlays.js +26 -40
  63. package/node/components/cell/GridSkeletonCell.js +60 -18
  64. package/node/components/containers/GridRoot.js +3 -15
  65. package/node/components/containers/GridRootStyles.js +11 -2
  66. package/node/components/panel/filterPanel/GridFilterInputMultipleValue.js +1 -1
  67. package/node/components/virtualization/GridMainContainer.js +10 -2
  68. package/node/components/virtualization/GridVirtualScroller.js +9 -5
  69. package/node/components/virtualization/GridVirtualScrollerFiller.js +9 -6
  70. package/node/constants/gridClasses.js +1 -1
  71. package/node/hooks/features/filter/gridFilterSelector.js +14 -1
  72. package/node/hooks/features/overlays/useGridOverlays.js +42 -0
  73. package/node/hooks/features/virtualization/useGridVirtualScroller.js +4 -12
  74. package/node/hooks/utils/index.js +0 -12
  75. package/node/index.js +1 -1
  76. package/node/locales/esES.js +1 -2
  77. package/node/utils/utils.js +11 -3
  78. package/package.json +5 -4
  79. package/utils/utils.d.ts +8 -1
  80. package/utils/utils.js +10 -2
  81. package/hooks/utils/useResizeObserver.d.ts +0 -2
  82. package/hooks/utils/useResizeObserver.js +0 -36
  83. package/modern/hooks/utils/useResizeObserver.js +0 -36
  84. 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 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,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
- })), rows.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridVirtualScrollerFiller.GridVirtualScrollerFiller, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridBottomContainer.GridBottomContainer, {
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(--DataGrid-rowBorderColor)',
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(--DataGrid-rowBorderColor)'
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(--DataGrid-rowBorderColor)'
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(--DataGrid-rowBorderColor)'
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
- if (currentPage.rows.length === 0) {
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v7.8.0
2
+ * @mui/x-data-grid v7.10.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -39,8 +39,7 @@ const esESGrid = {
39
39
  columnsManagementSearchTitle: 'Buscar',
40
40
  columnsManagementNoColumns: 'Sin columnas',
41
41
  columnsManagementShowHideAllText: 'Mostrar/Ocultar todas',
42
- // columnsManagementReset: 'Reset',
43
-
42
+ columnsManagementReset: 'Restablecer',
44
43
  // Filter panel text
45
44
  filterPanelAddFilter: 'Agregar filtro',
46
45
  filterPanelRemoveAll: 'Remover todos',
@@ -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
- function randomNumberBetween(seed, min, max) {
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.8.0",
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.15.20",
42
- "@mui/utils": "^5.15.20",
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
- export declare function randomNumberBetween(seed: number, min: number, max: number): () => number;
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
- export function randomNumberBetween(seed, min, max) {
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,2 +0,0 @@
1
- import * as React from 'react';
2
- export declare function useResizeObserver(ref: React.MutableRefObject<HTMLElement | undefined | null>, fn: (entries: ResizeObserverEntry[]) => void, enabled?: boolean): void;
@@ -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
- }