@mui/x-data-grid 8.0.0-alpha.10 → 8.0.0-alpha.11
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 +107 -2
- package/DataGrid/useDataGridComponent.js +2 -2
- package/components/GridRow.js +6 -2
- package/components/GridScrollArea.d.ts +5 -2
- package/components/GridScrollArea.js +31 -24
- package/components/GridSkeletonLoadingOverlay.js +2 -1
- package/components/containers/GridRoot.js +11 -9
- package/components/containers/GridRootStyles.js +3 -3
- package/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
- package/components/virtualization/GridMainContainer.d.ts +2 -2
- package/components/virtualization/GridMainContainer.js +1 -1
- package/components/virtualization/GridVirtualScroller.js +21 -14
- package/constants/index.d.ts +1 -0
- package/constants/index.js +2 -1
- package/constants/signature.d.ts +9 -0
- package/constants/signature.js +10 -0
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.d.ts +1 -1
- package/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
- package/hooks/core/useGridApiInitialization.js +1 -1
- package/hooks/core/useGridStateInitialization.js +3 -2
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
- package/hooks/features/columns/gridColumnsSelector.d.ts +0 -5
- package/hooks/features/columns/gridColumnsSelector.js +0 -12
- package/hooks/features/columns/useGridColumns.js +2 -1
- package/hooks/features/dimensions/gridDimensionsSelectors.d.ts +16 -0
- package/hooks/features/dimensions/gridDimensionsSelectors.js +26 -1
- package/hooks/features/dimensions/index.d.ts +1 -1
- package/hooks/features/dimensions/index.js +1 -2
- package/hooks/features/dimensions/useGridDimensions.js +97 -70
- package/hooks/features/editing/gridEditingSelectors.d.ts +5 -1
- package/hooks/features/editing/gridEditingSelectors.js +6 -1
- package/hooks/features/editing/useGridRowEditing.js +4 -4
- package/hooks/features/filter/gridFilterSelector.d.ts +2 -2
- package/hooks/features/filter/gridFilterSelector.js +4 -3
- package/hooks/features/filter/gridFilterState.d.ts +8 -3
- package/hooks/features/filter/gridFilterState.js +5 -0
- package/hooks/features/filter/useGridFilter.js +9 -14
- package/hooks/features/overlays/useGridOverlays.js +1 -1
- package/hooks/features/pagination/gridPaginationUtils.js +1 -1
- package/hooks/features/pagination/useGridPagination.js +1 -1
- package/hooks/features/rowSelection/useGridRowSelection.js +3 -2
- package/hooks/features/rowSelection/utils.js +2 -2
- package/hooks/features/rows/gridRowsMetaState.d.ts +8 -0
- package/hooks/features/rows/gridRowsUtils.d.ts +0 -4
- package/hooks/features/rows/gridRowsUtils.js +0 -16
- package/hooks/features/rows/useGridRows.js +4 -2
- package/hooks/features/rows/useGridRowsMeta.js +33 -17
- package/hooks/features/sorting/gridSortingSelector.js +10 -9
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +6 -0
- package/hooks/features/virtualization/useGridVirtualScroller.js +43 -27
- package/hooks/utils/index.d.ts +1 -1
- package/hooks/utils/index.js +1 -1
- package/hooks/utils/useGridApiEventHandler.d.ts +7 -17
- package/hooks/utils/useGridApiEventHandler.js +68 -75
- package/hooks/utils/useGridSelector.js +23 -5
- package/hooks/utils/useIsSSR.d.ts +1 -0
- package/hooks/utils/useIsSSR.js +5 -0
- package/index.js +1 -1
- package/internals/index.d.ts +3 -1
- package/internals/index.js +3 -1
- package/internals/utils/propValidation.js +1 -1
- package/models/api/gridStateApi.d.ts +1 -0
- package/models/events/gridEventLookup.d.ts +6 -0
- package/modern/DataGrid/useDataGridComponent.js +2 -2
- package/modern/components/GridRow.js +6 -2
- package/modern/components/GridScrollArea.js +31 -24
- package/modern/components/GridSkeletonLoadingOverlay.js +2 -1
- package/modern/components/containers/GridRoot.js +11 -9
- package/modern/components/containers/GridRootStyles.js +3 -3
- package/modern/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
- package/modern/components/virtualization/GridMainContainer.js +1 -1
- package/modern/components/virtualization/GridVirtualScroller.js +21 -14
- package/modern/constants/index.js +2 -1
- package/modern/constants/signature.js +10 -0
- package/modern/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
- package/modern/hooks/core/useGridApiInitialization.js +1 -1
- package/modern/hooks/core/useGridStateInitialization.js +3 -2
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
- package/modern/hooks/features/columns/gridColumnsSelector.js +0 -12
- package/modern/hooks/features/columns/useGridColumns.js +2 -1
- package/modern/hooks/features/dimensions/gridDimensionsSelectors.js +26 -1
- package/modern/hooks/features/dimensions/index.js +1 -2
- package/modern/hooks/features/dimensions/useGridDimensions.js +97 -70
- package/modern/hooks/features/editing/gridEditingSelectors.js +6 -1
- package/modern/hooks/features/editing/useGridRowEditing.js +4 -4
- package/modern/hooks/features/filter/gridFilterSelector.js +4 -3
- package/modern/hooks/features/filter/gridFilterState.js +5 -0
- package/modern/hooks/features/filter/useGridFilter.js +9 -14
- package/modern/hooks/features/overlays/useGridOverlays.js +1 -1
- package/modern/hooks/features/pagination/gridPaginationUtils.js +1 -1
- package/modern/hooks/features/pagination/useGridPagination.js +1 -1
- package/modern/hooks/features/rowSelection/useGridRowSelection.js +3 -2
- package/modern/hooks/features/rowSelection/utils.js +2 -2
- package/modern/hooks/features/rows/gridRowsUtils.js +0 -16
- package/modern/hooks/features/rows/useGridRows.js +4 -2
- package/modern/hooks/features/rows/useGridRowsMeta.js +33 -17
- package/modern/hooks/features/sorting/gridSortingSelector.js +10 -9
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +43 -27
- package/modern/hooks/utils/index.js +1 -1
- package/modern/hooks/utils/useGridApiEventHandler.js +68 -75
- package/modern/hooks/utils/useGridSelector.js +23 -5
- package/modern/hooks/utils/useIsSSR.js +5 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.js +3 -1
- package/modern/internals/utils/propValidation.js +1 -1
- package/node/DataGrid/useDataGridComponent.js +2 -2
- package/node/components/GridRow.js +6 -2
- package/node/components/GridScrollArea.js +31 -24
- package/node/components/GridSkeletonLoadingOverlay.js +2 -1
- package/node/components/containers/GridRoot.js +10 -8
- package/node/components/containers/GridRootStyles.js +3 -3
- package/node/components/menu/columnMenu/GridColumnMenuContainer.js +5 -2
- package/node/components/virtualization/GridMainContainer.js +1 -1
- package/node/components/virtualization/GridVirtualScroller.js +21 -14
- package/node/constants/index.js +11 -0
- package/node/constants/signature.js +16 -0
- package/node/hooks/core/pipeProcessing/useGridRegisterPipeProcessor.js +6 -4
- package/node/hooks/core/useGridApiInitialization.js +2 -2
- package/node/hooks/core/useGridStateInitialization.js +3 -2
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +10 -14
- package/node/hooks/features/columns/gridColumnsSelector.js +1 -13
- package/node/hooks/features/columns/useGridColumns.js +2 -1
- package/node/hooks/features/dimensions/gridDimensionsSelectors.js +38 -2
- package/node/hooks/features/dimensions/index.js +13 -11
- package/node/hooks/features/dimensions/useGridDimensions.js +94 -67
- package/node/hooks/features/editing/gridEditingSelectors.js +5 -1
- package/node/hooks/features/editing/useGridRowEditing.js +4 -4
- package/node/hooks/features/filter/gridFilterSelector.js +4 -3
- package/node/hooks/features/filter/gridFilterState.js +6 -1
- package/node/hooks/features/filter/useGridFilter.js +8 -13
- package/node/hooks/features/overlays/useGridOverlays.js +1 -1
- package/node/hooks/features/pagination/gridPaginationUtils.js +2 -2
- package/node/hooks/features/pagination/useGridPagination.js +1 -1
- package/node/hooks/features/rowSelection/useGridRowSelection.js +5 -4
- package/node/hooks/features/rowSelection/utils.js +3 -3
- package/node/hooks/features/rows/gridRowsUtils.js +0 -17
- package/node/hooks/features/rows/useGridRows.js +6 -4
- package/node/hooks/features/rows/useGridRowsMeta.js +31 -15
- package/node/hooks/features/sorting/gridSortingSelector.js +10 -9
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +42 -26
- package/node/hooks/utils/index.js +21 -11
- package/node/hooks/utils/useGridApiEventHandler.js +71 -78
- package/node/hooks/utils/useGridSelector.js +23 -5
- package/node/hooks/utils/useIsSSR.js +12 -0
- package/node/index.js +1 -1
- package/node/internals/index.js +32 -7
- package/node/internals/utils/propValidation.js +2 -2
- package/package.json +3 -2
|
@@ -13,6 +13,7 @@ var _utils = require("@mui/utils");
|
|
|
13
13
|
var _throttle = require("@mui/x-internals/throttle");
|
|
14
14
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
15
15
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
16
|
+
var _createSelector = require("../../../utils/createSelector");
|
|
16
17
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
17
18
|
var _columns = require("../columns");
|
|
18
19
|
var _gridDimensionsSelectors = require("./gridDimensionsSelectors");
|
|
@@ -26,6 +27,7 @@ var _gridColumnsUtils = require("../columns/gridColumnsUtils");
|
|
|
26
27
|
var _dataGridPropsDefaultValues = require("../../../constants/dataGridPropsDefaultValues");
|
|
27
28
|
var _roundToDecimalPlaces = require("../../../utils/roundToDecimalPlaces");
|
|
28
29
|
var _isJSDOM = require("../../../utils/isJSDOM");
|
|
30
|
+
var _utils3 = require("../../../utils/utils");
|
|
29
31
|
const EMPTY_SIZE = {
|
|
30
32
|
width: 0,
|
|
31
33
|
height: 0
|
|
@@ -52,48 +54,53 @@ const EMPTY_DIMENSIONS = {
|
|
|
52
54
|
topContainerHeight: 0,
|
|
53
55
|
bottomContainerHeight: 0
|
|
54
56
|
};
|
|
55
|
-
const dimensionsStateInitializer = state => {
|
|
57
|
+
const dimensionsStateInitializer = (state, props, apiRef) => {
|
|
56
58
|
const dimensions = EMPTY_DIMENSIONS;
|
|
59
|
+
const density = (0, _density.gridDensityFactorSelector)(apiRef);
|
|
57
60
|
return (0, _extends2.default)({}, state, {
|
|
58
|
-
dimensions
|
|
61
|
+
dimensions: (0, _extends2.default)({}, dimensions, getStaticDimensions(props, apiRef, density, (0, _columns.gridVisiblePinnedColumnDefinitionsSelector)(apiRef)))
|
|
59
62
|
});
|
|
60
63
|
};
|
|
61
64
|
exports.dimensionsStateInitializer = dimensionsStateInitializer;
|
|
65
|
+
const columnsTotalWidthSelector = (0, _createSelector.createSelector)(_columns.gridVisibleColumnDefinitionsSelector, _columns.gridColumnPositionsSelector, (visibleColumns, positions) => {
|
|
66
|
+
const colCount = visibleColumns.length;
|
|
67
|
+
if (colCount === 0) {
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
return (0, _roundToDecimalPlaces.roundToDecimalPlaces)(positions[colCount - 1] + visibleColumns[colCount - 1].computedWidth, 1);
|
|
71
|
+
});
|
|
62
72
|
function useGridDimensions(apiRef, props) {
|
|
63
73
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useResizeContainer');
|
|
64
74
|
const errorShown = React.useRef(false);
|
|
65
75
|
const rootDimensionsRef = React.useRef(EMPTY_SIZE);
|
|
66
|
-
const dimensionsState = (0, _utils2.useGridSelector)(apiRef, _gridDimensionsSelectors.gridDimensionsSelector);
|
|
67
|
-
const rowsMeta = (0, _utils2.useGridSelector)(apiRef, _gridRowsMetaSelector.gridRowsMetaSelector);
|
|
68
76
|
const pinnedColumns = (0, _utils2.useGridSelector)(apiRef, _columns.gridVisiblePinnedColumnDefinitionsSelector);
|
|
69
77
|
const densityFactor = (0, _utils2.useGridSelector)(apiRef, _density.gridDensityFactorSelector);
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
React.
|
|
82
|
-
const
|
|
83
|
-
const setDimensions = (0, _utils.unstable_useEventCallback)(dimensions => {
|
|
78
|
+
const columnsTotalWidth = (0, _utils2.useGridSelector)(apiRef, columnsTotalWidthSelector);
|
|
79
|
+
const isFirstSizing = React.useRef(true);
|
|
80
|
+
const {
|
|
81
|
+
rowHeight,
|
|
82
|
+
headerHeight,
|
|
83
|
+
groupHeaderHeight,
|
|
84
|
+
headerFilterHeight,
|
|
85
|
+
headersTotalHeight,
|
|
86
|
+
leftPinnedWidth,
|
|
87
|
+
rightPinnedWidth
|
|
88
|
+
} = getStaticDimensions(props, apiRef, densityFactor, pinnedColumns);
|
|
89
|
+
const getRootDimensions = React.useCallback(() => (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state), [apiRef]);
|
|
90
|
+
const setDimensions = React.useCallback(dimensions => {
|
|
84
91
|
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
85
92
|
dimensions
|
|
86
93
|
}));
|
|
87
|
-
|
|
94
|
+
if (apiRef.current.rootElementRef.current) {
|
|
95
|
+
setCSSVariables(apiRef.current.rootElementRef.current, (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state));
|
|
96
|
+
}
|
|
97
|
+
}, [apiRef]);
|
|
88
98
|
const getViewportPageSize = React.useCallback(() => {
|
|
89
99
|
const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state);
|
|
90
100
|
if (!dimensions.isReady) {
|
|
91
101
|
return 0;
|
|
92
102
|
}
|
|
93
|
-
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef
|
|
94
|
-
pagination: props.pagination,
|
|
95
|
-
paginationMode: props.paginationMode
|
|
96
|
-
});
|
|
103
|
+
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef);
|
|
97
104
|
|
|
98
105
|
// TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
|
|
99
106
|
// to find out the maximum number of rows that can fit in the visible part of the grid
|
|
@@ -104,16 +111,19 @@ function useGridDimensions(apiRef, props) {
|
|
|
104
111
|
}
|
|
105
112
|
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
106
113
|
return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
|
|
107
|
-
}, [apiRef, props.
|
|
114
|
+
}, [apiRef, props.getRowHeight, rowHeight]);
|
|
108
115
|
const updateDimensions = React.useCallback(() => {
|
|
116
|
+
if (isFirstSizing.current) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
109
119
|
// All the floating point dimensions should be rounded to .1 decimal places to avoid subpixel rendering issues
|
|
110
120
|
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
|
|
111
121
|
// https://github.com/mui/mui-x/issues/15721
|
|
112
122
|
const rootElement = apiRef.current.rootElementRef.current;
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
const topContainerHeight = headersTotalHeight +
|
|
116
|
-
const bottomContainerHeight =
|
|
123
|
+
const scrollbarSize = measureScrollbarSize(rootElement, props.scrollbarSize);
|
|
124
|
+
const rowsMeta = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef.current.state);
|
|
125
|
+
const topContainerHeight = headersTotalHeight + rowsMeta.pinnedTopRowsTotalHeight;
|
|
126
|
+
const bottomContainerHeight = rowsMeta.pinnedBottomRowsTotalHeight;
|
|
117
127
|
const contentSize = {
|
|
118
128
|
width: columnsTotalWidth,
|
|
119
129
|
height: (0, _roundToDecimalPlaces.roundToDecimalPlaces)(rowsMeta.currentPageTotalHeight, 1)
|
|
@@ -190,12 +200,21 @@ function useGridDimensions(apiRef, props) {
|
|
|
190
200
|
bottomContainerHeight
|
|
191
201
|
};
|
|
192
202
|
const prevDimensions = apiRef.current.state.dimensions;
|
|
203
|
+
if ((0, _utils3.isDeepEqual)(prevDimensions, newDimensions)) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
193
206
|
setDimensions(newDimensions);
|
|
194
207
|
if (!areElementSizesEqual(newDimensions.viewportInnerSize, prevDimensions.viewportInnerSize)) {
|
|
195
208
|
apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
|
|
196
209
|
}
|
|
197
210
|
apiRef.current.updateRenderContext?.();
|
|
198
|
-
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight,
|
|
211
|
+
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowHeight, headerHeight, groupHeaderHeight, headerFilterHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
|
|
212
|
+
const updateDimensionCallback = (0, _utils.unstable_useEventCallback)(updateDimensions);
|
|
213
|
+
const debouncedUpdateDimensions = React.useMemo(() => props.resizeThrottleMs > 0 ? (0, _throttle.throttle)(() => {
|
|
214
|
+
updateDimensionCallback();
|
|
215
|
+
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
216
|
+
}, props.resizeThrottleMs) : undefined, [apiRef, props.resizeThrottleMs, updateDimensionCallback]);
|
|
217
|
+
React.useEffect(() => debouncedUpdateDimensions?.clear, [debouncedUpdateDimensions]);
|
|
199
218
|
const apiPublic = {
|
|
200
219
|
getRootDimensions
|
|
201
220
|
};
|
|
@@ -203,35 +222,12 @@ function useGridDimensions(apiRef, props) {
|
|
|
203
222
|
updateDimensions,
|
|
204
223
|
getViewportPageSize
|
|
205
224
|
};
|
|
225
|
+
(0, _utils.unstable_useEnhancedEffect)(updateDimensions, [updateDimensions]);
|
|
206
226
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPublic, 'public');
|
|
207
227
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPrivate, 'private');
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
212
|
-
}
|
|
213
|
-
}, [apiRef, savedSize, updateDimensions]);
|
|
214
|
-
const root = apiRef.current.rootElementRef.current;
|
|
215
|
-
(0, _utils.unstable_useEnhancedEffect)(() => {
|
|
216
|
-
if (!root) {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
const set = (k, v) => root.style.setProperty(k, v);
|
|
220
|
-
set('--DataGrid-width', `${dimensionsState.viewportOuterSize.width}px`);
|
|
221
|
-
set('--DataGrid-hasScrollX', `${Number(dimensionsState.hasScrollX)}`);
|
|
222
|
-
set('--DataGrid-hasScrollY', `${Number(dimensionsState.hasScrollY)}`);
|
|
223
|
-
set('--DataGrid-scrollbarSize', `${dimensionsState.scrollbarSize}px`);
|
|
224
|
-
set('--DataGrid-rowWidth', `${dimensionsState.rowWidth}px`);
|
|
225
|
-
set('--DataGrid-columnsTotalWidth', `${dimensionsState.columnsTotalWidth}px`);
|
|
226
|
-
set('--DataGrid-leftPinnedWidth', `${dimensionsState.leftPinnedWidth}px`);
|
|
227
|
-
set('--DataGrid-rightPinnedWidth', `${dimensionsState.rightPinnedWidth}px`);
|
|
228
|
-
set('--DataGrid-headerHeight', `${dimensionsState.headerHeight}px`);
|
|
229
|
-
set('--DataGrid-headersTotalHeight', `${dimensionsState.headersTotalHeight}px`);
|
|
230
|
-
set('--DataGrid-topContainerHeight', `${dimensionsState.topContainerHeight}px`);
|
|
231
|
-
set('--DataGrid-bottomContainerHeight', `${dimensionsState.bottomContainerHeight}px`);
|
|
232
|
-
set('--height', `${dimensionsState.rowHeight}px`);
|
|
233
|
-
}, [root, dimensionsState]);
|
|
234
|
-
const isFirstSizing = React.useRef(true);
|
|
228
|
+
const handleRootMount = React.useCallback(root => {
|
|
229
|
+
setCSSVariables(root, (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef.current.state));
|
|
230
|
+
}, [apiRef]);
|
|
235
231
|
const handleResize = React.useCallback(size => {
|
|
236
232
|
rootDimensionsRef.current = size;
|
|
237
233
|
if (size.height === 0 && !errorShown.current && !props.autoHeight && !_isJSDOM.isJSDOM) {
|
|
@@ -242,28 +238,58 @@ function useGridDimensions(apiRef, props) {
|
|
|
242
238
|
logger.error(['The parent DOM element of the Data Grid has an empty width.', 'Please make sure that this element has an intrinsic width.', 'The grid displays with a width of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
243
239
|
errorShown.current = true;
|
|
244
240
|
}
|
|
245
|
-
if (isFirstSizing.current) {
|
|
241
|
+
if (isFirstSizing.current || !debouncedUpdateDimensions) {
|
|
246
242
|
// We want to initialize the grid dimensions as soon as possible to avoid flickering
|
|
247
|
-
setSavedSize(size);
|
|
248
243
|
isFirstSizing.current = false;
|
|
244
|
+
updateDimensions();
|
|
249
245
|
return;
|
|
250
246
|
}
|
|
251
|
-
|
|
252
|
-
}, [props.autoHeight,
|
|
253
|
-
(0,
|
|
254
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, '
|
|
255
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'paginationModelChange', updateDimensions);
|
|
256
|
-
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'columnsChange', updateDimensions);
|
|
257
|
-
(0, _useGridApiEventHandler.useGridApiEventHandler)(apiRef, 'resize', handleResize);
|
|
247
|
+
debouncedUpdateDimensions();
|
|
248
|
+
}, [updateDimensions, props.autoHeight, debouncedUpdateDimensions, logger]);
|
|
249
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rootMount', handleRootMount);
|
|
250
|
+
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'resize', handleResize);
|
|
258
251
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'debouncedResize', props.onResize);
|
|
259
252
|
}
|
|
260
|
-
function
|
|
253
|
+
function setCSSVariables(root, dimensions) {
|
|
254
|
+
const set = (k, v) => root.style.setProperty(k, v);
|
|
255
|
+
set('--DataGrid-hasScrollX', `${Number(dimensions.hasScrollX)}`);
|
|
256
|
+
set('--DataGrid-hasScrollY', `${Number(dimensions.hasScrollY)}`);
|
|
257
|
+
set('--DataGrid-scrollbarSize', `${dimensions.scrollbarSize}px`);
|
|
258
|
+
set('--DataGrid-rowWidth', `${dimensions.rowWidth}px`);
|
|
259
|
+
set('--DataGrid-columnsTotalWidth', `${dimensions.columnsTotalWidth}px`);
|
|
260
|
+
set('--DataGrid-leftPinnedWidth', `${dimensions.leftPinnedWidth}px`);
|
|
261
|
+
set('--DataGrid-rightPinnedWidth', `${dimensions.rightPinnedWidth}px`);
|
|
262
|
+
set('--DataGrid-headerHeight', `${dimensions.headerHeight}px`);
|
|
263
|
+
set('--DataGrid-headersTotalHeight', `${dimensions.headersTotalHeight}px`);
|
|
264
|
+
set('--DataGrid-topContainerHeight', `${dimensions.topContainerHeight}px`);
|
|
265
|
+
set('--DataGrid-bottomContainerHeight', `${dimensions.bottomContainerHeight}px`);
|
|
266
|
+
set('--height', `${dimensions.rowHeight}px`);
|
|
267
|
+
}
|
|
268
|
+
function getStaticDimensions(props, apiRef, density, pinnedColumnns) {
|
|
269
|
+
const validRowHeight = (0, _gridRowsUtils.getValidRowHeight)(props.rowHeight, _dataGridPropsDefaultValues.DATA_GRID_PROPS_DEFAULT_VALUES.rowHeight, _gridRowsUtils.rowHeightWarning);
|
|
270
|
+
return {
|
|
271
|
+
rowHeight: Math.floor(validRowHeight * density),
|
|
272
|
+
headerHeight: Math.floor(props.columnHeaderHeight * density),
|
|
273
|
+
groupHeaderHeight: Math.floor((props.columnGroupHeaderHeight ?? props.columnHeaderHeight) * density),
|
|
274
|
+
headerFilterHeight: Math.floor((props.headerFilterHeight ?? props.columnHeaderHeight) * density),
|
|
275
|
+
columnsTotalWidth: columnsTotalWidthSelector(apiRef),
|
|
276
|
+
headersTotalHeight: (0, _gridColumnsUtils.getTotalHeaderHeight)(apiRef, props),
|
|
277
|
+
leftPinnedWidth: pinnedColumnns.left.reduce((w, col) => w + col.computedWidth, 0),
|
|
278
|
+
rightPinnedWidth: pinnedColumnns.right.reduce((w, col) => w + col.computedWidth, 0)
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
const scrollbarSizeCache = new WeakMap();
|
|
282
|
+
function measureScrollbarSize(rootElement, scrollbarSize) {
|
|
261
283
|
if (scrollbarSize !== undefined) {
|
|
262
284
|
return scrollbarSize;
|
|
263
285
|
}
|
|
264
|
-
if (rootElement === null
|
|
286
|
+
if (rootElement === null) {
|
|
265
287
|
return 0;
|
|
266
288
|
}
|
|
289
|
+
const cachedSize = scrollbarSizeCache.get(rootElement);
|
|
290
|
+
if (cachedSize !== undefined) {
|
|
291
|
+
return cachedSize;
|
|
292
|
+
}
|
|
267
293
|
const doc = (0, _utils.unstable_ownerDocument)(rootElement);
|
|
268
294
|
const scrollDiv = doc.createElement('div');
|
|
269
295
|
scrollDiv.style.width = '99px';
|
|
@@ -274,6 +300,7 @@ function measureScrollbarSize(rootElement, columnsTotalWidth, scrollbarSize) {
|
|
|
274
300
|
rootElement.appendChild(scrollDiv);
|
|
275
301
|
const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
276
302
|
rootElement.removeChild(scrollDiv);
|
|
303
|
+
scrollbarSizeCache.set(rootElement, size);
|
|
277
304
|
return size;
|
|
278
305
|
}
|
|
279
306
|
function areElementSizesEqual(a, b) {
|
|
@@ -5,12 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.gridRowIsEditingSelector = exports.gridEditRowsStateSelector = exports.gridEditCellStateSelector = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
|
+
var _gridEditRowModel = require("../../../models/gridEditRowModel");
|
|
8
9
|
/**
|
|
9
10
|
* Select the row editing state.
|
|
10
11
|
*/
|
|
11
12
|
const gridEditRowsStateSelector = state => state.editRows;
|
|
12
13
|
exports.gridEditRowsStateSelector = gridEditRowsStateSelector;
|
|
13
|
-
const gridRowIsEditingSelector = exports.gridRowIsEditingSelector = (0, _createSelector.createSelector)(gridEditRowsStateSelector, (editRows,
|
|
14
|
+
const gridRowIsEditingSelector = exports.gridRowIsEditingSelector = (0, _createSelector.createSelector)(gridEditRowsStateSelector, (editRows, {
|
|
15
|
+
rowId,
|
|
16
|
+
editMode
|
|
17
|
+
}) => editMode === _gridEditRowModel.GridEditModes.Row && Boolean(editRows[rowId]));
|
|
14
18
|
const gridEditCellStateSelector = exports.gridEditCellStateSelector = (0, _createSelector.createSelector)(gridEditRowsStateSelector, (editRows, {
|
|
15
19
|
rowId,
|
|
16
20
|
field
|
|
@@ -240,10 +240,10 @@ const useGridRowEditing = (apiRef, props) => {
|
|
|
240
240
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rowEditStart', props.onRowEditStart);
|
|
241
241
|
(0, _useGridApiEventHandler.useGridApiOptionHandler)(apiRef, 'rowEditStop', props.onRowEditStop);
|
|
242
242
|
const getRowMode = React.useCallback(id => {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
243
|
+
const isEditing = (0, _gridEditingSelectors.gridRowIsEditingSelector)(apiRef.current.state, {
|
|
244
|
+
rowId: id,
|
|
245
|
+
editMode: props.editMode
|
|
246
|
+
});
|
|
247
247
|
return isEditing ? _gridEditRowModel.GridRowModes.Edit : _gridEditRowModel.GridRowModes.View;
|
|
248
248
|
}, [apiRef, props.editMode]);
|
|
249
249
|
const updateRowModesModel = (0, _utils.unstable_useEventCallback)(newModel => {
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.gridVisibleRowsLookupSelector = exports.gridQuickFilterValuesSelector = exports.gridFilteredTopLevelRowCountSelector = exports.gridFilteredSortedTopLevelRowEntriesSelector = exports.gridFilteredSortedRowIdsSelector = exports.gridFilteredSortedRowEntriesSelector = exports.gridFilteredRowsLookupSelector = exports.gridFilteredRowCountSelector = exports.gridFilteredDescendantRowCountSelector = exports.gridFilteredDescendantCountLookupSelector = exports.gridFilteredChildrenCountLookupSelector = exports.gridFilterModelSelector = exports.gridFilterActiveItemsSelector = exports.gridFilterActiveItemsLookupSelector = exports.gridExpandedSortedRowTreeLevelPositionLookupSelector = exports.gridExpandedSortedRowIdsSelector = exports.gridExpandedSortedRowEntriesSelector = exports.gridExpandedRowCountSelector = void 0;
|
|
7
|
+
var _isObjectEmpty = require("@mui/x-internals/isObjectEmpty");
|
|
7
8
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
9
|
var _gridSortingSelector = require("../sorting/gridSortingSelector");
|
|
9
10
|
var _gridColumnsSelector = require("../columns/gridColumnsSelector");
|
|
@@ -55,8 +56,8 @@ const gridFilteredDescendantCountLookupSelector = exports.gridFilteredDescendant
|
|
|
55
56
|
* Does not contain the collapsed children.
|
|
56
57
|
* @category Filtering
|
|
57
58
|
*/
|
|
58
|
-
const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector,
|
|
59
|
-
if (
|
|
59
|
+
const gridExpandedSortedRowEntriesSelector = exports.gridExpandedSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridVisibleRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (visibleRowsLookup, sortedRows) => {
|
|
60
|
+
if ((0, _isObjectEmpty.isObjectEmpty)(visibleRowsLookup)) {
|
|
60
61
|
return sortedRows;
|
|
61
62
|
}
|
|
62
63
|
return sortedRows.filter(row => visibleRowsLookup[row.id] !== false);
|
|
@@ -74,7 +75,7 @@ const gridExpandedSortedRowIdsSelector = exports.gridExpandedSortedRowIdsSelecto
|
|
|
74
75
|
* Contains the collapsed children.
|
|
75
76
|
* @category Filtering
|
|
76
77
|
*/
|
|
77
|
-
const gridFilteredSortedRowEntriesSelector = exports.gridFilteredSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridFilteredRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => sortedRows.filter(row => filteredRowsLookup[row.id] !== false));
|
|
78
|
+
const gridFilteredSortedRowEntriesSelector = exports.gridFilteredSortedRowEntriesSelector = (0, _createSelector.createSelectorMemoized)(gridFilteredRowsLookupSelector, _gridSortingSelector.gridSortedRowEntriesSelector, (filteredRowsLookup, sortedRows) => (0, _isObjectEmpty.isObjectEmpty)(filteredRowsLookup) ? sortedRows : sortedRows.filter(row => filteredRowsLookup[row.id] !== false));
|
|
78
79
|
|
|
79
80
|
/**
|
|
80
81
|
* Get the id of the rows accessible after the filtering process.
|
|
@@ -3,8 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getDefaultGridFilterModel = void 0;
|
|
6
|
+
exports.getDefaultGridFilterModel = exports.defaultGridFilterLookup = void 0;
|
|
7
7
|
var _gridFilterItem = require("../../../models/gridFilterItem");
|
|
8
|
+
const defaultGridFilterLookup = exports.defaultGridFilterLookup = {
|
|
9
|
+
filteredRowsLookup: {},
|
|
10
|
+
filteredChildrenCountLookup: {},
|
|
11
|
+
filteredDescendantCountLookup: {}
|
|
12
|
+
};
|
|
8
13
|
const getDefaultGridFilterModel = () => ({
|
|
9
14
|
items: [],
|
|
10
15
|
logicOperator: _gridFilterItem.GridLogicOperator.And,
|
|
@@ -28,12 +28,9 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
28
28
|
const filterStateInitializer = (state, props, apiRef) => {
|
|
29
29
|
const filterModel = props.filterModel ?? props.initialState?.filter?.filterModel ?? (0, _gridFilterState.getDefaultGridFilterModel)();
|
|
30
30
|
return (0, _extends2.default)({}, state, {
|
|
31
|
-
filter: {
|
|
32
|
-
filterModel: (0, _gridFilterUtils.sanitizeFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef)
|
|
33
|
-
|
|
34
|
-
filteredChildrenCountLookup: {},
|
|
35
|
-
filteredDescendantCountLookup: {}
|
|
36
|
-
},
|
|
31
|
+
filter: (0, _extends2.default)({
|
|
32
|
+
filterModel: (0, _gridFilterUtils.sanitizeFilterModel)(filterModel, props.disableMultipleColumnsFiltering, apiRef)
|
|
33
|
+
}, _gridFilterState.defaultGridFilterLookup),
|
|
37
34
|
visibleRowsLookup: {}
|
|
38
35
|
});
|
|
39
36
|
};
|
|
@@ -280,12 +277,8 @@ const useGridFilter = (apiRef, props) => {
|
|
|
280
277
|
} = props;
|
|
281
278
|
const getRowsRef = (0, _useLazyRef.useLazyRef)(createMemoizedValues);
|
|
282
279
|
const flatFilteringMethod = React.useCallback(params => {
|
|
283
|
-
if (props.filterMode !== 'client' || !params.isRowMatchingFilters) {
|
|
284
|
-
return
|
|
285
|
-
filteredRowsLookup: {},
|
|
286
|
-
filteredChildrenCountLookup: {},
|
|
287
|
-
filteredDescendantCountLookup: {}
|
|
288
|
-
};
|
|
280
|
+
if (props.filterMode !== 'client' || !params.isRowMatchingFilters || !params.filterModel.items.length && !params.filterModel.quickFilterValues?.length) {
|
|
281
|
+
return _gridFilterState.defaultGridFilterLookup;
|
|
289
282
|
}
|
|
290
283
|
const dataRowIdToModelLookup = (0, _rows.gridRowsLookupSelector)(apiRef);
|
|
291
284
|
const filteredRowsLookup = {};
|
|
@@ -303,7 +296,9 @@ const useGridFilter = (apiRef, props) => {
|
|
|
303
296
|
const id = getRowId ? getRowId(row) : row.id;
|
|
304
297
|
isRowMatchingFilters(row, undefined, result);
|
|
305
298
|
const isRowPassing = (0, _gridFilterUtils.passFilterLogic)([result.passingFilterItems], [result.passingQuickFilterValues], params.filterModel, apiRef, filterCache);
|
|
306
|
-
|
|
299
|
+
if (!isRowPassing) {
|
|
300
|
+
filteredRowsLookup[id] = isRowPassing;
|
|
301
|
+
}
|
|
307
302
|
}
|
|
308
303
|
const footerId = 'auto-generated-group-footer-root';
|
|
309
304
|
const footer = dataRowIdToModelLookup[footerId];
|
|
@@ -40,7 +40,7 @@ const useGridOverlays = () => {
|
|
|
40
40
|
}
|
|
41
41
|
if (loading) {
|
|
42
42
|
overlayType = 'loadingOverlay';
|
|
43
|
-
loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant']
|
|
43
|
+
loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant'] ?? (noRows ? 'skeleton' : 'linear-progress');
|
|
44
44
|
}
|
|
45
45
|
const overlaysProps = {
|
|
46
46
|
overlayType,
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.throwIfPageSizeExceedsTheLimit = exports.getValidPage = exports.getPageCount = exports.getDefaultGridPaginationModel = exports.defaultPageSize = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _signature = require("../../../constants/signature");
|
|
8
8
|
const MAX_PAGE_SIZE = 100;
|
|
9
9
|
const defaultPageSize = autoPageSize => autoPageSize ? 0 : 100;
|
|
10
10
|
exports.defaultPageSize = defaultPageSize;
|
|
@@ -32,7 +32,7 @@ const getValidPage = (page, pageCount = 0) => {
|
|
|
32
32
|
};
|
|
33
33
|
exports.getValidPage = getValidPage;
|
|
34
34
|
const throwIfPageSizeExceedsTheLimit = (pageSize, signatureProp) => {
|
|
35
|
-
if (signatureProp ===
|
|
35
|
+
if (signatureProp === _signature.GridSignature.DataGrid && pageSize > MAX_PAGE_SIZE) {
|
|
36
36
|
throw new Error(['MUI X: `pageSize` cannot exceed 100 in the MIT version of the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
37
37
|
}
|
|
38
38
|
};
|
|
@@ -13,7 +13,7 @@ var _useGridPaginationMeta = require("./useGridPaginationMeta");
|
|
|
13
13
|
const paginationStateInitializer = (state, props) => {
|
|
14
14
|
const paginationModel = (0, _extends2.default)({}, (0, _gridPaginationUtils.getDefaultGridPaginationModel)(props.autoPageSize), props.paginationModel ?? props.initialState?.pagination?.paginationModel);
|
|
15
15
|
(0, _gridPaginationUtils.throwIfPageSizeExceedsTheLimit)(paginationModel.pageSize, props.signature);
|
|
16
|
-
const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount;
|
|
16
|
+
const rowCount = props.rowCount ?? props.initialState?.pagination?.rowCount ?? (props.paginationMode === 'client' ? state.rows?.totalRowCount : undefined);
|
|
17
17
|
const meta = props.paginationMeta ?? props.initialState?.pagination?.meta ?? {};
|
|
18
18
|
return (0, _extends2.default)({}, state, {
|
|
19
19
|
pagination: (0, _extends2.default)({}, state.pagination, {
|
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.useGridRowSelection = exports.rowSelectionStateInitializer = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _signature = require("../../../constants/signature");
|
|
11
12
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
12
13
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
13
14
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
@@ -55,7 +56,7 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
55
56
|
callback(...args);
|
|
56
57
|
}
|
|
57
58
|
}, [props.rowSelection]);
|
|
58
|
-
const applyAutoSelection = props.signature !==
|
|
59
|
+
const applyAutoSelection = props.signature !== _signature.GridSignature.DataGrid && (props.rowSelectionPropagation?.parents || props.rowSelectionPropagation?.descendants);
|
|
59
60
|
const propRowSelectionModel = React.useMemo(() => {
|
|
60
61
|
return getSelectionModelPropValue(props.rowSelectionModel, (0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state));
|
|
61
62
|
}, [apiRef, props.rowSelectionModel]);
|
|
@@ -103,7 +104,7 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
103
104
|
* API METHODS
|
|
104
105
|
*/
|
|
105
106
|
const setRowSelectionModel = React.useCallback(model => {
|
|
106
|
-
if (props.signature ===
|
|
107
|
+
if (props.signature === _signature.GridSignature.DataGrid && !canHaveMultipleSelection && Array.isArray(model) && model.length > 1) {
|
|
107
108
|
throw new Error(['MUI X: `rowSelectionModel` can only contain 1 item in DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock multiple selection.'].join('\n'));
|
|
108
109
|
}
|
|
109
110
|
const currentModel = (0, _gridRowSelectionSelector.gridRowSelectionStateSelector)(apiRef.current.state);
|
|
@@ -251,7 +252,7 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
251
252
|
selectRowRange
|
|
252
253
|
};
|
|
253
254
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPublicApi, 'public');
|
|
254
|
-
(0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPrivateApi, props.signature ===
|
|
255
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, selectionPrivateApi, props.signature === _signature.GridSignature.DataGrid ? 'private' : 'public');
|
|
255
256
|
|
|
256
257
|
/*
|
|
257
258
|
* EVENTS
|
|
@@ -267,7 +268,7 @@ const useGridRowSelection = (apiRef, props) => {
|
|
|
267
268
|
if (props.filterMode === 'server') {
|
|
268
269
|
return !rowsLookup[id];
|
|
269
270
|
}
|
|
270
|
-
return filteredRowsLookup[id]
|
|
271
|
+
return !rowsLookup[id] || filteredRowsLookup[id] === false;
|
|
271
272
|
};
|
|
272
273
|
let hasChanged = false;
|
|
273
274
|
currentSelection.forEach(id => {
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.findRowsToSelect = exports.findRowsToDeselect = exports.ROW_SELECTION_PROPAGATION_DEFAULT = void 0;
|
|
7
7
|
exports.getCheckboxPropsSelector = getCheckboxPropsSelector;
|
|
8
8
|
exports.isMultipleRowSelectionEnabled = isMultipleRowSelectionEnabled;
|
|
9
|
-
var
|
|
9
|
+
var _signature = require("../../../constants/signature");
|
|
10
10
|
var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
11
11
|
var _gridFilterSelector = require("../filter/gridFilterSelector");
|
|
12
12
|
var _gridSortingSelector = require("../sorting/gridSortingSelector");
|
|
@@ -71,7 +71,7 @@ function getCheckboxPropsSelector(groupId, autoSelectParents) {
|
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
73
|
function isMultipleRowSelectionEnabled(props) {
|
|
74
|
-
if (props.signature ===
|
|
74
|
+
if (props.signature === _signature.GridSignature.DataGrid) {
|
|
75
75
|
// DataGrid Community has multiple row selection enabled only if checkbox selection is enabled.
|
|
76
76
|
return props.checkboxSelection && props.disableMultipleRowSelection !== true;
|
|
77
77
|
}
|
|
@@ -100,7 +100,7 @@ const getFilteredRowNodeSiblings = (tree, filteredRows, id) => {
|
|
|
100
100
|
return [];
|
|
101
101
|
}
|
|
102
102
|
const parentNode = tree[parent];
|
|
103
|
-
return parentNode.children.filter(childId => childId !== id && filteredRows[childId]);
|
|
103
|
+
return parentNode.children.filter(childId => childId !== id && filteredRows[childId] !== false);
|
|
104
104
|
};
|
|
105
105
|
const findRowsToSelect = (apiRef, tree, selectedRow, autoSelectDescendants, autoSelectParents, addRow) => {
|
|
106
106
|
const filteredRows = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
|
|
@@ -5,12 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.buildRootGroup = exports.GRID_ROOT_GROUP_ID = exports.GRID_ID_AUTOGENERATED = void 0;
|
|
8
|
-
exports.calculatePinnedRowsHeight = calculatePinnedRowsHeight;
|
|
9
8
|
exports.checkGridRowIdIsValid = checkGridRowIdIsValid;
|
|
10
9
|
exports.computeRowsUpdates = computeRowsUpdates;
|
|
11
10
|
exports.updateCacheWithNewRows = exports.rowHeightWarning = exports.minimalContentHeight = exports.isAutogeneratedRowNode = exports.isAutogeneratedRow = exports.getValidRowHeight = exports.getTreeNodeDescendants = exports.getTopLevelRowCount = exports.getRowsStateFromCache = exports.getRowIdFromRowModel = exports.getRowHeightWarning = exports.createRowsInternalCache = void 0;
|
|
12
11
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
var _gridRowsSelector = require("./gridRowsSelector");
|
|
14
12
|
const GRID_ROOT_GROUP_ID = exports.GRID_ROOT_GROUP_ID = `auto-generated-group-node-root`;
|
|
15
13
|
const GRID_ID_AUTOGENERATED = exports.GRID_ID_AUTOGENERATED = Symbol('mui.id_autogenerated');
|
|
16
14
|
const buildRootGroup = () => ({
|
|
@@ -280,21 +278,6 @@ const updateCacheWithNewRows = ({
|
|
|
280
278
|
};
|
|
281
279
|
};
|
|
282
280
|
exports.updateCacheWithNewRows = updateCacheWithNewRows;
|
|
283
|
-
function calculatePinnedRowsHeight(apiRef) {
|
|
284
|
-
const pinnedRows = (0, _gridRowsSelector.gridPinnedRowsSelector)(apiRef);
|
|
285
|
-
const topPinnedRowsHeight = pinnedRows?.top?.reduce((acc, value) => {
|
|
286
|
-
acc += apiRef.current.unstable_getRowHeight(value.id);
|
|
287
|
-
return acc;
|
|
288
|
-
}, 0) || 0;
|
|
289
|
-
const bottomPinnedRowsHeight = pinnedRows?.bottom?.reduce((acc, value) => {
|
|
290
|
-
acc += apiRef.current.unstable_getRowHeight(value.id);
|
|
291
|
-
return acc;
|
|
292
|
-
}, 0) || 0;
|
|
293
|
-
return {
|
|
294
|
-
top: topPinnedRowsHeight,
|
|
295
|
-
bottom: bottomPinnedRowsHeight
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
281
|
const minimalContentHeight = exports.minimalContentHeight = 'var(--DataGrid-overlayHeight, calc(var(--height) * 2))';
|
|
299
282
|
function computeRowsUpdates(apiRef, updates, getRowId) {
|
|
300
283
|
const nonPinnedRowsUpdates = [];
|
|
@@ -9,10 +9,12 @@ exports.useGridRows = exports.rowsStateInitializer = void 0;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
|
|
12
|
+
var _isObjectEmpty = require("@mui/x-internals/isObjectEmpty");
|
|
12
13
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
13
14
|
var _useGridLogger = require("../../utils/useGridLogger");
|
|
14
15
|
var _gridRowsSelector = require("./gridRowsSelector");
|
|
15
16
|
var _useTimeout = require("../../utils/useTimeout");
|
|
17
|
+
var _signature = require("../../../constants/signature");
|
|
16
18
|
var _useGridApiEventHandler = require("../../utils/useGridApiEventHandler");
|
|
17
19
|
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
18
20
|
var _gridSortingSelector = require("../sorting/gridSortingSelector");
|
|
@@ -127,7 +129,7 @@ const useGridRows = (apiRef, props) => {
|
|
|
127
129
|
});
|
|
128
130
|
}, [logger, props.getRowId, props.loading, props.rowCount, throttledRowsChange, apiRef]);
|
|
129
131
|
const updateRows = React.useCallback(updates => {
|
|
130
|
-
if (props.signature ===
|
|
132
|
+
if (props.signature === _signature.GridSignature.DataGrid && updates.length > 1) {
|
|
131
133
|
throw new Error(['MUI X: You cannot update several rows at once in `apiRef.current.updateRows` on the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
132
134
|
}
|
|
133
135
|
const nonPinnedRowsUpdates = (0, _gridRowsUtils.computeRowsUpdates)(apiRef, updates, props.getRowId);
|
|
@@ -230,7 +232,7 @@ const useGridRows = (apiRef, props) => {
|
|
|
230
232
|
}
|
|
231
233
|
if (applyFiltering) {
|
|
232
234
|
const filteredRowsLookup = (0, _gridFilterSelector.gridFilteredRowsLookupSelector)(apiRef);
|
|
233
|
-
children = children.filter(childId => filteredRowsLookup[childId] !== false);
|
|
235
|
+
children = (0, _isObjectEmpty.isObjectEmpty)(filteredRowsLookup) ? children : children.filter(childId => filteredRowsLookup[childId] !== false);
|
|
234
236
|
}
|
|
235
237
|
return children;
|
|
236
238
|
}, [apiRef]);
|
|
@@ -268,7 +270,7 @@ const useGridRows = (apiRef, props) => {
|
|
|
268
270
|
apiRef.current.publishEvent('rowsSet');
|
|
269
271
|
}, [apiRef, logger]);
|
|
270
272
|
const replaceRows = React.useCallback((firstRowToRender, newRows) => {
|
|
271
|
-
if (props.signature ===
|
|
273
|
+
if (props.signature === _signature.GridSignature.DataGrid && newRows.length > 1) {
|
|
272
274
|
throw new Error(['MUI X: You cannot replace rows using `apiRef.current.unstable_replaceRows` on the DataGrid.', 'You need to upgrade to DataGridPro or DataGridPremium component to unlock this feature.'].join('\n'));
|
|
273
275
|
}
|
|
274
276
|
if (newRows.length === 0) {
|
|
@@ -418,7 +420,7 @@ const useGridRows = (apiRef, props) => {
|
|
|
418
420
|
}, [apiRef, props.rowCount]);
|
|
419
421
|
(0, _pipeProcessing.useGridRegisterPipeApplier)(apiRef, 'hydrateRows', applyHydrateRowsProcessor);
|
|
420
422
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, rowApi, 'public');
|
|
421
|
-
(0, _useGridApiMethod.useGridApiMethod)(apiRef, rowProApi, props.signature ===
|
|
423
|
+
(0, _useGridApiMethod.useGridApiMethod)(apiRef, rowProApi, props.signature === _signature.GridSignature.DataGrid ? 'private' : 'public');
|
|
422
424
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, rowProPrivateApi, 'private');
|
|
423
425
|
|
|
424
426
|
// The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridRows`
|