@mui/x-data-grid 8.8.0 → 8.9.2
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 +225 -24
- package/DataGrid/DataGrid.js +5 -0
- package/DataGrid/index.d.ts +0 -1
- package/DataGrid/useDataGridComponent.js +10 -0
- package/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/components/GridDetailPanels.d.ts +2 -2
- package/components/GridPinnedRows.d.ts +2 -2
- package/components/GridRow.js +5 -0
- package/components/GridScrollArea.js +1 -1
- package/components/cell/GridCell.js +7 -5
- package/components/cell/GridEditSingleSelectCell.js +1 -1
- package/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
- package/components/columnsManagement/GridColumnsManagement.js +17 -5
- package/components/containers/GridRootStyles.d.ts +1 -1
- package/components/containers/GridRootStyles.js +39 -0
- package/components/toolbarV8/Toolbar.d.ts +1 -1
- package/components/virtualization/GridVirtualScroller.js +5 -5
- package/constants/dataGridPropsDefaultValues.js +1 -0
- package/constants/gridClasses.d.ts +12 -0
- package/constants/gridClasses.js +3 -1
- package/esm/DataGrid/DataGrid.js +5 -0
- package/esm/DataGrid/index.d.ts +0 -1
- package/esm/DataGrid/useDataGridComponent.js +10 -0
- package/esm/colDef/gridCheckboxSelectionColDef.js +1 -0
- package/esm/components/GridDetailPanels.d.ts +2 -2
- package/esm/components/GridPinnedRows.d.ts +2 -2
- package/esm/components/GridRow.js +5 -0
- package/esm/components/GridScrollArea.js +1 -1
- package/esm/components/cell/GridCell.js +7 -5
- package/esm/components/cell/GridEditSingleSelectCell.js +1 -1
- package/esm/components/columnsManagement/GridColumnsManagement.d.ts +6 -0
- package/esm/components/columnsManagement/GridColumnsManagement.js +17 -5
- package/esm/components/containers/GridRootStyles.d.ts +1 -1
- package/esm/components/containers/GridRootStyles.js +39 -0
- package/esm/components/toolbarV8/Toolbar.d.ts +1 -1
- package/esm/components/virtualization/GridVirtualScroller.js +5 -5
- package/esm/constants/dataGridPropsDefaultValues.js +1 -0
- package/esm/constants/gridClasses.d.ts +12 -0
- package/esm/constants/gridClasses.js +3 -1
- package/esm/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -0
- package/esm/hooks/core/pipeProcessing/useGridPipeProcessing.js +20 -5
- package/esm/hooks/core/useGridProps.d.ts +2 -2
- package/esm/hooks/core/useGridProps.js +3 -1
- package/esm/hooks/core/useGridVirtualizer.d.ts +9 -0
- package/esm/hooks/core/useGridVirtualizer.js +223 -0
- package/esm/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +4 -1
- package/esm/hooks/features/columnGrouping/gridColumnGroupsUtils.js +35 -32
- package/esm/hooks/features/columnGrouping/useGridColumnGrouping.js +18 -13
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/esm/hooks/features/columnHeaders/useGridColumnHeaders.js +3 -2
- package/esm/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -3
- package/esm/hooks/features/columns/gridColumnsSelector.js +6 -2
- package/esm/hooks/features/columns/gridColumnsUtils.js +6 -4
- package/esm/hooks/features/columns/useGridColumnSpanning.js +5 -90
- package/esm/hooks/features/columns/useGridColumns.js +8 -10
- package/esm/hooks/features/dimensions/useGridDimensions.js +18 -188
- package/esm/hooks/features/export/utils.js +1 -1
- package/esm/hooks/features/filter/useGridFilter.js +3 -3
- package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/esm/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -10
- package/esm/hooks/features/keyboardNavigation/utils.d.ts +3 -3
- package/esm/hooks/features/keyboardNavigation/utils.js +5 -5
- package/esm/hooks/features/listView/gridListViewSelectors.d.ts +8 -1
- package/esm/hooks/features/listView/gridListViewSelectors.js +7 -0
- package/esm/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
- package/esm/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
- package/esm/hooks/features/pivoting/gridPivotingSelectors.js +1 -2
- package/esm/hooks/features/rowSelection/useGridRowSelection.js +5 -4
- package/esm/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
- package/esm/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
- package/esm/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/esm/hooks/features/rows/gridRowsUtils.js +5 -2
- package/esm/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
- package/esm/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
- package/esm/hooks/features/rows/useGridRowSpanning.js +54 -85
- package/esm/hooks/features/rows/useGridRows.js +4 -3
- package/esm/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/esm/hooks/features/rows/useGridRowsMeta.js +17 -187
- package/esm/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/esm/hooks/features/scroll/useGridScroll.js +2 -3
- package/esm/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/esm/hooks/features/virtualization/index.d.ts +1 -0
- package/esm/hooks/features/virtualization/index.js +1 -0
- package/esm/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
- package/esm/hooks/features/virtualization/useGridVirtualization.js +41 -22
- package/esm/hooks/utils/index.d.ts +2 -1
- package/esm/hooks/utils/index.js +2 -1
- package/esm/hooks/utils/useFirstRender.d.ts +1 -1
- package/esm/hooks/utils/useFirstRender.js +1 -8
- package/esm/hooks/utils/useGridInitializeState.d.ts +1 -1
- package/esm/hooks/utils/useGridInitializeState.js +6 -1
- package/esm/hooks/utils/useRunOncePerLoop.d.ts +1 -0
- package/esm/hooks/utils/useRunOncePerLoop.js +26 -0
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +1 -1
- package/esm/internals/index.js +1 -1
- package/esm/internals/utils/getPinnedCellOffset.js +5 -0
- package/esm/locales/frFR.js +18 -21
- package/esm/locales/heIL.js +12 -12
- package/esm/locales/plPL.js +22 -24
- package/esm/models/api/gridApiCommon.d.ts +4 -1
- package/esm/models/api/gridColumnSpanning.d.ts +5 -11
- package/esm/models/api/gridRowApi.d.ts +5 -0
- package/esm/models/events/gridEventLookup.d.ts +2 -1
- package/esm/models/gridApiCaches.d.ts +8 -2
- package/esm/models/gridStateCommunity.d.ts +2 -2
- package/esm/models/props/DataGridProps.d.ts +5 -0
- package/esm/utils/roundToDecimalPlaces.d.ts +1 -1
- package/esm/utils/roundToDecimalPlaces.js +1 -3
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -0
- package/hooks/core/pipeProcessing/useGridPipeProcessing.js +20 -5
- package/hooks/core/useGridProps.d.ts +2 -2
- package/hooks/core/useGridProps.js +3 -1
- package/hooks/core/useGridVirtualizer.d.ts +9 -0
- package/hooks/core/useGridVirtualizer.js +231 -0
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +4 -1
- package/hooks/features/columnGrouping/gridColumnGroupsUtils.js +35 -32
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +18 -13
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +1 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +4 -3
- package/hooks/features/columns/gridColumnsInterfaces.d.ts +3 -3
- package/hooks/features/columns/gridColumnsSelector.js +6 -2
- package/hooks/features/columns/gridColumnsUtils.js +6 -4
- package/hooks/features/columns/useGridColumnSpanning.js +5 -91
- package/hooks/features/columns/useGridColumns.js +8 -10
- package/hooks/features/dimensions/useGridDimensions.js +18 -188
- package/hooks/features/export/utils.js +1 -1
- package/hooks/features/filter/useGridFilter.js +3 -3
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.d.ts +1 -1
- package/hooks/features/keyboardNavigation/useGridKeyboardNavigation.js +6 -10
- package/hooks/features/keyboardNavigation/utils.d.ts +3 -3
- package/hooks/features/keyboardNavigation/utils.js +5 -5
- package/hooks/features/listView/gridListViewSelectors.d.ts +8 -1
- package/hooks/features/listView/gridListViewSelectors.js +8 -1
- package/hooks/features/pivoting/gridPivotingInterfaces.d.ts +0 -1
- package/hooks/features/pivoting/gridPivotingSelectors.d.ts +1 -4
- package/hooks/features/pivoting/gridPivotingSelectors.js +2 -3
- package/hooks/features/rowSelection/useGridRowSelection.js +5 -4
- package/hooks/features/rows/gridRowsMetaInterfaces.d.ts +2 -8
- package/hooks/features/rows/gridRowsMetaState.d.ts +2 -18
- package/hooks/features/rows/gridRowsUtils.d.ts +1 -1
- package/hooks/features/rows/gridRowsUtils.js +5 -2
- package/hooks/features/rows/useGridRowAriaAttributes.js +3 -1
- package/hooks/features/rows/useGridRowSpanning.d.ts +2 -12
- package/hooks/features/rows/useGridRowSpanning.js +54 -85
- package/hooks/features/rows/useGridRows.js +4 -3
- package/hooks/features/rows/useGridRowsMeta.d.ts +1 -1
- package/hooks/features/rows/useGridRowsMeta.js +15 -186
- package/hooks/features/scroll/useGridScroll.d.ts +1 -1
- package/hooks/features/scroll/useGridScroll.js +2 -3
- package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
- package/hooks/features/virtualization/index.d.ts +1 -0
- package/hooks/features/virtualization/index.js +12 -0
- package/hooks/features/virtualization/useGridVirtualization.d.ts +5 -16
- package/hooks/features/virtualization/useGridVirtualization.js +42 -24
- package/hooks/utils/index.d.ts +2 -1
- package/hooks/utils/index.js +16 -4
- package/hooks/utils/useFirstRender.d.ts +1 -1
- package/hooks/utils/useFirstRender.js +11 -11
- package/hooks/utils/useGridInitializeState.d.ts +1 -1
- package/hooks/utils/useGridInitializeState.js +6 -1
- package/hooks/utils/useRunOncePerLoop.d.ts +1 -0
- package/hooks/utils/useRunOncePerLoop.js +33 -0
- package/index.js +1 -1
- package/internals/index.d.ts +1 -1
- package/internals/index.js +4 -11
- package/internals/utils/getPinnedCellOffset.js +5 -0
- package/locales/frFR.js +18 -21
- package/locales/heIL.js +12 -12
- package/locales/plPL.js +22 -24
- package/models/api/gridApiCommon.d.ts +4 -1
- package/models/api/gridColumnSpanning.d.ts +5 -11
- package/models/api/gridRowApi.d.ts +5 -0
- package/models/events/gridEventLookup.d.ts +2 -1
- package/models/gridApiCaches.d.ts +8 -2
- package/models/gridStateCommunity.d.ts +2 -2
- package/models/props/DataGridProps.d.ts +5 -0
- package/package.json +5 -5
- package/utils/roundToDecimalPlaces.d.ts +1 -1
- package/utils/roundToDecimalPlaces.js +7 -4
- package/esm/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
- package/esm/hooks/features/rows/gridRowSpanningSelectors.js +0 -5
- package/esm/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
- package/esm/hooks/features/virtualization/useGridVirtualScroller.js +0 -846
- package/esm/hooks/utils/useRunOnce.d.ts +0 -5
- package/esm/hooks/utils/useRunOnce.js +0 -18
- package/esm/utils/platform.d.ts +0 -1
- package/esm/utils/platform.js +0 -2
- package/hooks/features/rows/gridRowSpanningSelectors.d.ts +0 -10
- package/hooks/features/rows/gridRowSpanningSelectors.js +0 -11
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +0 -56
- package/hooks/features/virtualization/useGridVirtualScroller.js +0 -857
- package/hooks/utils/useRunOnce.d.ts +0 -5
- package/hooks/utils/useRunOnce.js +0 -27
- package/utils/platform.d.ts +0 -1
- package/utils/platform.js +0 -8
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.useGridColumnSpanning = void 0;
|
|
8
|
-
var React = _interopRequireWildcard(require("react"));
|
|
9
7
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
10
8
|
var _useGridEvent = require("../../utils/useGridEvent");
|
|
11
9
|
/**
|
|
@@ -13,36 +11,10 @@ var _useGridEvent = require("../../utils/useGridEvent");
|
|
|
13
11
|
* @requires useGridParamsApi (method)
|
|
14
12
|
*/
|
|
15
13
|
const useGridColumnSpanning = apiRef => {
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const resetColSpan = () => {
|
|
21
|
-
lookup.current = {};
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// Calculate `colSpan` for each cell in the row
|
|
25
|
-
const calculateColSpan = React.useCallback(({
|
|
26
|
-
rowId,
|
|
27
|
-
minFirstColumn,
|
|
28
|
-
maxLastColumn,
|
|
29
|
-
columns
|
|
30
|
-
}) => {
|
|
31
|
-
for (let i = minFirstColumn; i < maxLastColumn; i += 1) {
|
|
32
|
-
const cellProps = calculateCellColSpan({
|
|
33
|
-
apiRef,
|
|
34
|
-
lookup: lookup.current,
|
|
35
|
-
columnIndex: i,
|
|
36
|
-
rowId,
|
|
37
|
-
minFirstColumnIndex: minFirstColumn,
|
|
38
|
-
maxLastColumnIndex: maxLastColumn,
|
|
39
|
-
columns
|
|
40
|
-
});
|
|
41
|
-
if (cellProps.colSpan > 1) {
|
|
42
|
-
i += cellProps.colSpan - 1;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}, [apiRef]);
|
|
14
|
+
const virtualizer = apiRef.current.virtualizer;
|
|
15
|
+
const resetColSpan = virtualizer.api.resetColSpan;
|
|
16
|
+
const getCellColSpanInfo = virtualizer.api.getCellColSpanInfo;
|
|
17
|
+
const calculateColSpan = virtualizer.api.calculateColSpan;
|
|
46
18
|
const columnSpanningPublicApi = {
|
|
47
19
|
unstable_getCellColSpanInfo: getCellColSpanInfo
|
|
48
20
|
};
|
|
@@ -54,62 +26,4 @@ const useGridColumnSpanning = apiRef => {
|
|
|
54
26
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, columnSpanningPrivateApi, 'private');
|
|
55
27
|
(0, _useGridEvent.useGridEvent)(apiRef, 'columnOrderChange', resetColSpan);
|
|
56
28
|
};
|
|
57
|
-
exports.useGridColumnSpanning = useGridColumnSpanning;
|
|
58
|
-
function calculateCellColSpan(params) {
|
|
59
|
-
const {
|
|
60
|
-
apiRef,
|
|
61
|
-
lookup,
|
|
62
|
-
columnIndex,
|
|
63
|
-
rowId,
|
|
64
|
-
minFirstColumnIndex,
|
|
65
|
-
maxLastColumnIndex,
|
|
66
|
-
columns
|
|
67
|
-
} = params;
|
|
68
|
-
const columnsLength = columns.length;
|
|
69
|
-
const column = columns[columnIndex];
|
|
70
|
-
const row = apiRef.current.getRow(rowId);
|
|
71
|
-
const value = apiRef.current.getRowValue(row, column);
|
|
72
|
-
const colSpan = typeof column.colSpan === 'function' ? column.colSpan(value, row, column, apiRef) : column.colSpan;
|
|
73
|
-
if (!colSpan || colSpan === 1) {
|
|
74
|
-
setCellColSpanInfo(lookup, rowId, columnIndex, {
|
|
75
|
-
spannedByColSpan: false,
|
|
76
|
-
cellProps: {
|
|
77
|
-
colSpan: 1,
|
|
78
|
-
width: column.computedWidth
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
return {
|
|
82
|
-
colSpan: 1
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
let width = column.computedWidth;
|
|
86
|
-
for (let j = 1; j < colSpan; j += 1) {
|
|
87
|
-
const nextColumnIndex = columnIndex + j;
|
|
88
|
-
// Cells should be spanned only within their column section (left-pinned, right-pinned and unpinned).
|
|
89
|
-
if (nextColumnIndex >= minFirstColumnIndex && nextColumnIndex < maxLastColumnIndex) {
|
|
90
|
-
const nextColumn = columns[nextColumnIndex];
|
|
91
|
-
width += nextColumn.computedWidth;
|
|
92
|
-
setCellColSpanInfo(lookup, rowId, columnIndex + j, {
|
|
93
|
-
spannedByColSpan: true,
|
|
94
|
-
rightVisibleCellIndex: Math.min(columnIndex + colSpan, columnsLength - 1),
|
|
95
|
-
leftVisibleCellIndex: columnIndex
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
setCellColSpanInfo(lookup, rowId, columnIndex, {
|
|
99
|
-
spannedByColSpan: false,
|
|
100
|
-
cellProps: {
|
|
101
|
-
colSpan,
|
|
102
|
-
width
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
return {
|
|
107
|
-
colSpan
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
function setCellColSpanInfo(lookup, rowId, columnIndex, cellColSpanInfo) {
|
|
111
|
-
if (!lookup[rowId]) {
|
|
112
|
-
lookup[rowId] = {};
|
|
113
|
-
}
|
|
114
|
-
lookup[rowId][columnIndex] = cellColSpanInfo;
|
|
115
|
-
}
|
|
29
|
+
exports.useGridColumnSpanning = useGridColumnSpanning;
|
|
@@ -22,6 +22,9 @@ var _preferencesPanel = require("../preferencesPanel");
|
|
|
22
22
|
var _pivoting = require("../pivoting");
|
|
23
23
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
24
|
const columnsStateInitializer = (state, props, apiRef) => {
|
|
25
|
+
apiRef.current.caches.columns = {
|
|
26
|
+
lastColumnsProp: props.columns
|
|
27
|
+
};
|
|
25
28
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
26
29
|
apiRef,
|
|
27
30
|
columnsToUpsert: props.columns,
|
|
@@ -45,7 +48,6 @@ const columnsStateInitializer = (state, props, apiRef) => {
|
|
|
45
48
|
exports.columnsStateInitializer = columnsStateInitializer;
|
|
46
49
|
function useGridColumns(apiRef, props) {
|
|
47
50
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridColumns');
|
|
48
|
-
const previousColumnsProp = React.useRef(props.columns);
|
|
49
51
|
apiRef.current.registerControlState({
|
|
50
52
|
stateId: 'visibleColumns',
|
|
51
53
|
propModel: props.columnVisibilityModel,
|
|
@@ -308,27 +310,23 @@ function useGridColumns(apiRef, props) {
|
|
|
308
310
|
*/
|
|
309
311
|
// The effect do not track any value defined synchronously during the 1st render by hooks called after `useGridColumns`
|
|
310
312
|
// As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one
|
|
311
|
-
const isFirstRender = React.useRef(true);
|
|
312
313
|
React.useEffect(() => {
|
|
313
|
-
if (
|
|
314
|
-
isFirstRender.current = false;
|
|
314
|
+
if (apiRef.current.caches.columns.lastColumnsProp === props.columns) {
|
|
315
315
|
return;
|
|
316
316
|
}
|
|
317
|
+
apiRef.current.caches.columns.lastColumnsProp = props.columns;
|
|
317
318
|
logger.info(`GridColumns have changed, new length ${props.columns.length}`);
|
|
318
|
-
if (previousColumnsProp.current === props.columns) {
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
319
|
const columnsState = (0, _gridColumnsUtils.createColumnsState)({
|
|
322
320
|
apiRef,
|
|
323
321
|
initialState: undefined,
|
|
324
322
|
// If the user provides a model, we don't want to set it in the state here because it has it's dedicated `useEffect` which calls `setColumnVisibilityModel`
|
|
325
323
|
columnsToUpsert: props.columns,
|
|
326
324
|
keepOnlyColumnsToUpsert: true,
|
|
327
|
-
updateInitialVisibilityModel: true
|
|
325
|
+
updateInitialVisibilityModel: true,
|
|
326
|
+
columnVisibilityModel: props.columnVisibilityModel
|
|
328
327
|
});
|
|
329
|
-
previousColumnsProp.current = props.columns;
|
|
330
328
|
setGridColumnsState(columnsState);
|
|
331
|
-
}, [logger, apiRef, setGridColumnsState, props.columns]);
|
|
329
|
+
}, [logger, apiRef, setGridColumnsState, props.columns, props.columnVisibilityModel]);
|
|
332
330
|
React.useEffect(() => {
|
|
333
331
|
if (props.columnVisibilityModel !== undefined) {
|
|
334
332
|
apiRef.current.setColumnVisibilityModel(props.columnVisibilityModel);
|
|
@@ -10,11 +10,8 @@ exports.dimensionsStateInitializer = void 0;
|
|
|
10
10
|
exports.useGridDimensions = useGridDimensions;
|
|
11
11
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
12
12
|
var React = _interopRequireWildcard(require("react"));
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var _ownerDocument = _interopRequireDefault(require("@mui/utils/ownerDocument"));
|
|
16
|
-
var _throttle = require("@mui/x-internals/throttle");
|
|
17
|
-
var _isDeepEqual = require("@mui/x-internals/isDeepEqual");
|
|
13
|
+
var _store = require("@mui/x-internals/store");
|
|
14
|
+
var _xVirtualizer = require("@mui/x-virtualizer");
|
|
18
15
|
var _useGridEvent = require("../../utils/useGridEvent");
|
|
19
16
|
var _useGridApiMethod = require("../../utils/useGridApiMethod");
|
|
20
17
|
var _createSelector = require("../../../utils/createSelector");
|
|
@@ -22,10 +19,6 @@ var _useGridLogger = require("../../utils/useGridLogger");
|
|
|
22
19
|
var _columns = require("../columns");
|
|
23
20
|
var _gridDimensionsSelectors = require("./gridDimensionsSelectors");
|
|
24
21
|
var _density = require("../density");
|
|
25
|
-
var _virtualization = require("../virtualization");
|
|
26
|
-
var _utils = require("../../utils");
|
|
27
|
-
var _useGridVisibleRows = require("../../utils/useGridVisibleRows");
|
|
28
|
-
var _gridRowsMetaSelector = require("../rows/gridRowsMetaSelector");
|
|
29
22
|
var _gridRowsUtils = require("../rows/gridRowsUtils");
|
|
30
23
|
var _gridColumnsUtils = require("../columns/gridColumnsUtils");
|
|
31
24
|
var _dataGridPropsDefaultValues = require("../../../constants/dataGridPropsDefaultValues");
|
|
@@ -75,148 +68,10 @@ const columnsTotalWidthSelector = (0, _createSelector.createSelector)(_columns.g
|
|
|
75
68
|
function useGridDimensions(apiRef, props) {
|
|
76
69
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useResizeContainer');
|
|
77
70
|
const errorShown = React.useRef(false);
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
const columnsTotalWidth = (0, _utils.useGridSelector)(apiRef, columnsTotalWidthSelector);
|
|
82
|
-
const isFirstSizing = React.useRef(true);
|
|
83
|
-
const {
|
|
84
|
-
rowHeight,
|
|
85
|
-
headerHeight,
|
|
86
|
-
groupHeaderHeight,
|
|
87
|
-
headerFilterHeight,
|
|
88
|
-
headersTotalHeight,
|
|
89
|
-
leftPinnedWidth,
|
|
90
|
-
rightPinnedWidth
|
|
91
|
-
} = getStaticDimensions(props, apiRef, densityFactor, pinnedColumns);
|
|
71
|
+
const virtualizer = apiRef.current.virtualizer;
|
|
72
|
+
const updateDimensions = virtualizer.api.updateDimensions;
|
|
73
|
+
const getViewportPageSize = virtualizer.api.getViewportPageSize;
|
|
92
74
|
const getRootDimensions = React.useCallback(() => (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef), [apiRef]);
|
|
93
|
-
const setDimensions = React.useCallback(dimensions => {
|
|
94
|
-
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
|
|
95
|
-
dimensions
|
|
96
|
-
}));
|
|
97
|
-
if (apiRef.current.rootElementRef.current) {
|
|
98
|
-
setCSSVariables(apiRef.current.rootElementRef.current, (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef));
|
|
99
|
-
}
|
|
100
|
-
}, [apiRef]);
|
|
101
|
-
const getViewportPageSize = React.useCallback(() => {
|
|
102
|
-
const dimensions = (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef);
|
|
103
|
-
if (!dimensions.isReady) {
|
|
104
|
-
return 0;
|
|
105
|
-
}
|
|
106
|
-
const currentPage = (0, _useGridVisibleRows.getVisibleRows)(apiRef);
|
|
107
|
-
|
|
108
|
-
// TODO: Use a combination of scrollTop, dimensions.viewportInnerSize.height and rowsMeta.possitions
|
|
109
|
-
// to find out the maximum number of rows that can fit in the visible part of the grid
|
|
110
|
-
if (props.getRowHeight) {
|
|
111
|
-
const renderContext = (0, _virtualization.gridRenderContextSelector)(apiRef);
|
|
112
|
-
const viewportPageSize = renderContext.lastRowIndex - renderContext.firstRowIndex;
|
|
113
|
-
return Math.min(viewportPageSize - 1, currentPage.rows.length);
|
|
114
|
-
}
|
|
115
|
-
const maximumPageSizeWithoutScrollBar = Math.floor(dimensions.viewportInnerSize.height / rowHeight);
|
|
116
|
-
return Math.min(maximumPageSizeWithoutScrollBar, currentPage.rows.length);
|
|
117
|
-
}, [apiRef, props.getRowHeight, rowHeight]);
|
|
118
|
-
const updateDimensions = React.useCallback(() => {
|
|
119
|
-
if (isFirstSizing.current) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
// All the floating point dimensions should be rounded to .1 decimal places to avoid subpixel rendering issues
|
|
123
|
-
// https://github.com/mui/mui-x/issues/9550#issuecomment-1619020477
|
|
124
|
-
// https://github.com/mui/mui-x/issues/15721
|
|
125
|
-
const scrollbarSize = measureScrollbarSize(apiRef.current.mainElementRef.current, props.scrollbarSize);
|
|
126
|
-
const rowsMeta = (0, _gridRowsMetaSelector.gridRowsMetaSelector)(apiRef);
|
|
127
|
-
const topContainerHeight = headersTotalHeight + rowsMeta.pinnedTopRowsTotalHeight;
|
|
128
|
-
const bottomContainerHeight = rowsMeta.pinnedBottomRowsTotalHeight;
|
|
129
|
-
const contentSize = {
|
|
130
|
-
width: columnsTotalWidth,
|
|
131
|
-
height: (0, _roundToDecimalPlaces.roundToDecimalPlaces)(rowsMeta.currentPageTotalHeight, 1)
|
|
132
|
-
};
|
|
133
|
-
let viewportOuterSize;
|
|
134
|
-
let viewportInnerSize;
|
|
135
|
-
let hasScrollX = false;
|
|
136
|
-
let hasScrollY = false;
|
|
137
|
-
if (props.autoHeight) {
|
|
138
|
-
hasScrollY = false;
|
|
139
|
-
hasScrollX = Math.round(columnsTotalWidth) > Math.round(rootDimensionsRef.current.width);
|
|
140
|
-
viewportOuterSize = {
|
|
141
|
-
width: rootDimensionsRef.current.width,
|
|
142
|
-
height: topContainerHeight + bottomContainerHeight + contentSize.height
|
|
143
|
-
};
|
|
144
|
-
viewportInnerSize = {
|
|
145
|
-
width: Math.max(0, viewportOuterSize.width - (hasScrollY ? scrollbarSize : 0)),
|
|
146
|
-
height: Math.max(0, viewportOuterSize.height - (hasScrollX ? scrollbarSize : 0))
|
|
147
|
-
};
|
|
148
|
-
} else {
|
|
149
|
-
viewportOuterSize = {
|
|
150
|
-
width: rootDimensionsRef.current.width,
|
|
151
|
-
height: rootDimensionsRef.current.height
|
|
152
|
-
};
|
|
153
|
-
viewportInnerSize = {
|
|
154
|
-
width: Math.max(0, viewportOuterSize.width),
|
|
155
|
-
height: Math.max(0, viewportOuterSize.height - topContainerHeight - bottomContainerHeight)
|
|
156
|
-
};
|
|
157
|
-
const content = contentSize;
|
|
158
|
-
const container = viewportInnerSize;
|
|
159
|
-
const hasScrollXIfNoYScrollBar = content.width > container.width;
|
|
160
|
-
const hasScrollYIfNoXScrollBar = content.height > container.height;
|
|
161
|
-
if (hasScrollXIfNoYScrollBar || hasScrollYIfNoXScrollBar) {
|
|
162
|
-
hasScrollY = hasScrollYIfNoXScrollBar;
|
|
163
|
-
hasScrollX = content.width + (hasScrollY ? scrollbarSize : 0) > container.width;
|
|
164
|
-
|
|
165
|
-
// We recalculate the scroll y to consider the size of the x scrollbar.
|
|
166
|
-
if (hasScrollX) {
|
|
167
|
-
hasScrollY = content.height + scrollbarSize > container.height;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
if (hasScrollY) {
|
|
171
|
-
viewportInnerSize.width -= scrollbarSize;
|
|
172
|
-
}
|
|
173
|
-
if (hasScrollX) {
|
|
174
|
-
viewportInnerSize.height -= scrollbarSize;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
const rowWidth = Math.max(viewportOuterSize.width, columnsTotalWidth + (hasScrollY ? scrollbarSize : 0));
|
|
178
|
-
const minimumSize = {
|
|
179
|
-
width: columnsTotalWidth,
|
|
180
|
-
height: topContainerHeight + contentSize.height + bottomContainerHeight
|
|
181
|
-
};
|
|
182
|
-
const newDimensions = {
|
|
183
|
-
isReady: true,
|
|
184
|
-
root: rootDimensionsRef.current,
|
|
185
|
-
viewportOuterSize,
|
|
186
|
-
viewportInnerSize,
|
|
187
|
-
contentSize,
|
|
188
|
-
minimumSize,
|
|
189
|
-
hasScrollX,
|
|
190
|
-
hasScrollY,
|
|
191
|
-
scrollbarSize,
|
|
192
|
-
headerHeight,
|
|
193
|
-
groupHeaderHeight,
|
|
194
|
-
headerFilterHeight,
|
|
195
|
-
rowWidth,
|
|
196
|
-
rowHeight,
|
|
197
|
-
columnsTotalWidth,
|
|
198
|
-
leftPinnedWidth,
|
|
199
|
-
rightPinnedWidth,
|
|
200
|
-
headersTotalHeight,
|
|
201
|
-
topContainerHeight,
|
|
202
|
-
bottomContainerHeight
|
|
203
|
-
};
|
|
204
|
-
const prevDimensions = apiRef.current.state.dimensions;
|
|
205
|
-
if ((0, _isDeepEqual.isDeepEqual)(prevDimensions, newDimensions)) {
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
setDimensions(newDimensions);
|
|
209
|
-
if (!areElementSizesEqual(newDimensions.viewportInnerSize, prevDimensions.viewportInnerSize)) {
|
|
210
|
-
apiRef.current.publishEvent('viewportInnerSizeChange', newDimensions.viewportInnerSize);
|
|
211
|
-
}
|
|
212
|
-
apiRef.current.updateRenderContext?.();
|
|
213
|
-
}, [apiRef, setDimensions, props.scrollbarSize, props.autoHeight, rowHeight, headerHeight, groupHeaderHeight, headerFilterHeight, columnsTotalWidth, headersTotalHeight, leftPinnedWidth, rightPinnedWidth]);
|
|
214
|
-
const updateDimensionCallback = (0, _useEventCallback.default)(updateDimensions);
|
|
215
|
-
const debouncedUpdateDimensions = React.useMemo(() => props.resizeThrottleMs > 0 ? (0, _throttle.throttle)(() => {
|
|
216
|
-
updateDimensionCallback();
|
|
217
|
-
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
218
|
-
}, props.resizeThrottleMs) : undefined, [apiRef, props.resizeThrottleMs, updateDimensionCallback]);
|
|
219
|
-
React.useEffect(() => debouncedUpdateDimensions?.clear, [debouncedUpdateDimensions]);
|
|
220
75
|
const apiPublic = {
|
|
221
76
|
getRootDimensions
|
|
222
77
|
};
|
|
@@ -224,14 +79,12 @@ function useGridDimensions(apiRef, props) {
|
|
|
224
79
|
updateDimensions,
|
|
225
80
|
getViewportPageSize
|
|
226
81
|
};
|
|
227
|
-
(0, _useEnhancedEffect.default)(updateDimensions, [updateDimensions]);
|
|
228
82
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPublic, 'public');
|
|
229
83
|
(0, _useGridApiMethod.useGridApiMethod)(apiRef, apiPrivate, 'private');
|
|
230
|
-
const handleRootMount =
|
|
84
|
+
const handleRootMount = root => {
|
|
231
85
|
setCSSVariables(root, (0, _gridDimensionsSelectors.gridDimensionsSelector)(apiRef));
|
|
232
|
-
}
|
|
233
|
-
const handleResize =
|
|
234
|
-
rootDimensionsRef.current = size;
|
|
86
|
+
};
|
|
87
|
+
const handleResize = size => {
|
|
235
88
|
if (size.height === 0 && !errorShown.current && !props.autoHeight && !_isJSDOM.isJSDOM) {
|
|
236
89
|
logger.error(['The parent DOM element of the Data Grid has an empty height.', 'Please make sure that this element has an intrinsic height.', 'The grid displays with a height of 0px.', '', 'More details: https://mui.com/r/x-data-grid-no-dimensions.'].join('\n'));
|
|
237
90
|
errorShown.current = true;
|
|
@@ -240,17 +93,19 @@ function useGridDimensions(apiRef, props) {
|
|
|
240
93
|
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'));
|
|
241
94
|
errorShown.current = true;
|
|
242
95
|
}
|
|
243
|
-
|
|
244
|
-
// We want to initialize the grid dimensions as soon as possible to avoid flickering
|
|
245
|
-
isFirstSizing.current = false;
|
|
246
|
-
updateDimensions();
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
debouncedUpdateDimensions();
|
|
250
|
-
}, [updateDimensions, props.autoHeight, debouncedUpdateDimensions, logger]);
|
|
96
|
+
};
|
|
251
97
|
(0, _useGridEvent.useGridEventPriority)(apiRef, 'rootMount', handleRootMount);
|
|
252
98
|
(0, _useGridEvent.useGridEventPriority)(apiRef, 'resize', handleResize);
|
|
253
99
|
(0, _useGridEvent.useGridEventPriority)(apiRef, 'debouncedResize', props.onResize);
|
|
100
|
+
(0, _store.useStoreEffect)(virtualizer.store, _xVirtualizer.Dimensions.selectors.dimensions, (previous, next) => {
|
|
101
|
+
if (apiRef.current.rootElementRef.current) {
|
|
102
|
+
setCSSVariables(apiRef.current.rootElementRef.current, next);
|
|
103
|
+
}
|
|
104
|
+
if (!areElementSizesEqual(next.viewportInnerSize, previous.viewportInnerSize)) {
|
|
105
|
+
apiRef.current.publishEvent('viewportInnerSizeChange', next.viewportInnerSize);
|
|
106
|
+
}
|
|
107
|
+
apiRef.current.publishEvent('debouncedResize', next.root);
|
|
108
|
+
});
|
|
254
109
|
}
|
|
255
110
|
function setCSSVariables(root, dimensions) {
|
|
256
111
|
const set = (k, v) => root.style.setProperty(k, v);
|
|
@@ -280,31 +135,6 @@ function getStaticDimensions(props, apiRef, density, pinnedColumnns) {
|
|
|
280
135
|
rightPinnedWidth: pinnedColumnns.right.reduce((w, col) => w + col.computedWidth, 0)
|
|
281
136
|
};
|
|
282
137
|
}
|
|
283
|
-
const scrollbarSizeCache = new WeakMap();
|
|
284
|
-
function measureScrollbarSize(element, scrollbarSize) {
|
|
285
|
-
if (scrollbarSize !== undefined) {
|
|
286
|
-
return scrollbarSize;
|
|
287
|
-
}
|
|
288
|
-
if (element === null) {
|
|
289
|
-
return 0;
|
|
290
|
-
}
|
|
291
|
-
const cachedSize = scrollbarSizeCache.get(element);
|
|
292
|
-
if (cachedSize !== undefined) {
|
|
293
|
-
return cachedSize;
|
|
294
|
-
}
|
|
295
|
-
const doc = (0, _ownerDocument.default)(element);
|
|
296
|
-
const scrollDiv = doc.createElement('div');
|
|
297
|
-
scrollDiv.style.width = '99px';
|
|
298
|
-
scrollDiv.style.height = '99px';
|
|
299
|
-
scrollDiv.style.position = 'absolute';
|
|
300
|
-
scrollDiv.style.overflow = 'scroll';
|
|
301
|
-
scrollDiv.className = 'scrollDiv';
|
|
302
|
-
element.appendChild(scrollDiv);
|
|
303
|
-
const size = scrollDiv.offsetWidth - scrollDiv.clientWidth;
|
|
304
|
-
element.removeChild(scrollDiv);
|
|
305
|
-
scrollbarSizeCache.set(element, size);
|
|
306
|
-
return size;
|
|
307
|
-
}
|
|
308
138
|
function areElementSizesEqual(a, b) {
|
|
309
139
|
return a.width === b.width && a.height === b.height;
|
|
310
140
|
}
|
|
@@ -23,7 +23,7 @@ const getColumnsToExport = ({
|
|
|
23
23
|
}, []);
|
|
24
24
|
}
|
|
25
25
|
const validColumns = options.allColumns ? columns : (0, _columns.gridVisibleColumnDefinitionsSelector)(apiRef);
|
|
26
|
-
return validColumns.filter(column =>
|
|
26
|
+
return validColumns.filter(column => column.disableExport !== true);
|
|
27
27
|
};
|
|
28
28
|
exports.getColumnsToExport = getColumnsToExport;
|
|
29
29
|
const defaultGetRowsToExport = ({
|
|
@@ -351,9 +351,9 @@ const useGridFilter = (apiRef, props) => {
|
|
|
351
351
|
(0, _useGridEvent.useGridEvent)(apiRef, 'rowExpansionChange', updateVisibleRowsLookupState);
|
|
352
352
|
(0, _useGridEvent.useGridEvent)(apiRef, 'columnVisibilityModelChange', () => {
|
|
353
353
|
const filterModel = (0, _gridFilterSelector.gridFilterModelSelector)(apiRef);
|
|
354
|
-
if (filterModel.quickFilterValues && (0, _gridFilterUtils.shouldQuickFilterExcludeHiddenColumns)(filterModel)) {
|
|
354
|
+
if (filterModel.quickFilterValues?.length && (0, _gridFilterUtils.shouldQuickFilterExcludeHiddenColumns)(filterModel)) {
|
|
355
355
|
// re-apply filters because the quick filter results may have changed
|
|
356
|
-
|
|
356
|
+
updateFilteredRows();
|
|
357
357
|
}
|
|
358
358
|
});
|
|
359
359
|
|
|
@@ -361,7 +361,7 @@ const useGridFilter = (apiRef, props) => {
|
|
|
361
361
|
* 1ST RENDER
|
|
362
362
|
*/
|
|
363
363
|
(0, _useFirstRender.useFirstRender)(() => {
|
|
364
|
-
|
|
364
|
+
updateFilteredRows();
|
|
365
365
|
});
|
|
366
366
|
|
|
367
367
|
/**
|
|
@@ -10,4 +10,4 @@ import { DataGridProcessedProps } from "../../../models/props/DataGridProps.js";
|
|
|
10
10
|
* @requires useGridScroll (method) - can be after
|
|
11
11
|
* @requires useGridColumnSpanning (method) - can be after
|
|
12
12
|
*/
|
|
13
|
-
export declare const useGridKeyboardNavigation: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode" | "getRowId" | "signature" | "headerFilters"
|
|
13
|
+
export declare const useGridKeyboardNavigation: (apiRef: RefObject<GridPrivateApiCommunity>, props: Pick<DataGridProcessedProps, "pagination" | "paginationMode" | "getRowId" | "signature" | "headerFilters">) => void;
|
|
@@ -23,7 +23,6 @@ var _gridHeaderFilteringSelectors = require("../headerFiltering/gridHeaderFilter
|
|
|
23
23
|
var _pipeProcessing = require("../../core/pipeProcessing");
|
|
24
24
|
var _domUtils = require("../../../utils/domUtils");
|
|
25
25
|
var _utils = require("./utils");
|
|
26
|
-
var _gridListViewSelectors = require("../listView/gridListViewSelectors");
|
|
27
26
|
var _createSelector = require("../../../utils/createSelector");
|
|
28
27
|
var _pagination = require("../pagination");
|
|
29
28
|
var _gridRowsSelector = require("../rows/gridRowsSelector");
|
|
@@ -43,7 +42,6 @@ const gridVisibleRowsWithPinnedRowsSelector = (0, _createSelector.createSelector
|
|
|
43
42
|
const useGridKeyboardNavigation = (apiRef, props) => {
|
|
44
43
|
const logger = (0, _useGridLogger.useGridLogger)(apiRef, 'useGridKeyboardNavigation');
|
|
45
44
|
const isRtl = (0, _RtlProvider.useRtl)();
|
|
46
|
-
const listView = props.listView;
|
|
47
45
|
const getCurrentPageRows = React.useCallback(() => {
|
|
48
46
|
return gridVisibleRowsWithPinnedRowsSelector(apiRef);
|
|
49
47
|
}, [apiRef]);
|
|
@@ -66,8 +64,8 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
66
64
|
colIndex = nextCellColSpanInfo.rightVisibleCellIndex;
|
|
67
65
|
}
|
|
68
66
|
}
|
|
69
|
-
const field =
|
|
70
|
-
const nonRowSpannedRowId = (0, _utils.findNonRowSpannedCell)(apiRef, rowId,
|
|
67
|
+
const field = (0, _gridColumnsSelector.gridVisibleColumnFieldsSelector)(apiRef)[colIndex];
|
|
68
|
+
const nonRowSpannedRowId = (0, _utils.findNonRowSpannedCell)(apiRef, rowId, colIndex, rowSpanScanDirection);
|
|
71
69
|
// `scrollToIndexes` requires a rowIndex relative to all visible rows.
|
|
72
70
|
// Those rows do not include pinned rows, but pinned rows do not need scroll anyway.
|
|
73
71
|
const rowIndexRelativeToAllRows = visibleSortedRows.findIndex(row => row.id === nonRowSpannedRowId);
|
|
@@ -77,7 +75,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
77
75
|
rowIndex: rowIndexRelativeToAllRows
|
|
78
76
|
});
|
|
79
77
|
apiRef.current.setCellFocus(nonRowSpannedRowId, field);
|
|
80
|
-
}, [apiRef, logger
|
|
78
|
+
}, [apiRef, logger]);
|
|
81
79
|
const goToHeader = React.useCallback((colIndex, event) => {
|
|
82
80
|
logger.debug(`Navigating to header col ${colIndex}`);
|
|
83
81
|
apiRef.current.scrollToIndexes({
|
|
@@ -402,14 +400,12 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
402
400
|
return;
|
|
403
401
|
}
|
|
404
402
|
const viewportPageSize = apiRef.current.getViewportPageSize();
|
|
405
|
-
const
|
|
406
|
-
const colIndexBefore = params.field ? getColumnIndexFn(params.field) : 0;
|
|
403
|
+
const colIndexBefore = params.field ? apiRef.current.getColumnIndex(params.field) : 0;
|
|
407
404
|
const rowIndexBefore = currentPageRows.findIndex(row => row.id === params.id);
|
|
408
405
|
const firstRowIndexInPage = 0;
|
|
409
406
|
const lastRowIndexInPage = currentPageRows.length - 1;
|
|
410
407
|
const firstColIndex = 0;
|
|
411
|
-
const
|
|
412
|
-
const lastColIndex = visibleColumns.length - 1;
|
|
408
|
+
const lastColIndex = (0, _gridColumnsSelector.gridVisibleColumnDefinitionsSelector)(apiRef).length - 1;
|
|
413
409
|
let shouldPreventDefault = true;
|
|
414
410
|
switch (event.key) {
|
|
415
411
|
case 'ArrowDown':
|
|
@@ -526,7 +522,7 @@ const useGridKeyboardNavigation = (apiRef, props) => {
|
|
|
526
522
|
if (shouldPreventDefault) {
|
|
527
523
|
event.preventDefault();
|
|
528
524
|
}
|
|
529
|
-
}, [apiRef, getCurrentPageRows, isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader
|
|
525
|
+
}, [apiRef, getCurrentPageRows, isRtl, goToCell, getRowIdFromIndex, headerFilteringEnabled, goToHeaderFilter, goToHeader]);
|
|
530
526
|
const checkIfCanStartEditing = React.useCallback((initialValue, {
|
|
531
527
|
event
|
|
532
528
|
}) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RefObject } from '@mui/x-internals/types';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { GridRowId } from "../../../models/index.js";
|
|
3
|
+
import { GridPrivateApiCommunity } from "../../../models/api/gridApiCommunity.js";
|
|
4
4
|
export declare const getLeftColumnIndex: ({
|
|
5
5
|
currentColIndex,
|
|
6
6
|
firstColIndex,
|
|
@@ -23,4 +23,4 @@ export declare const getRightColumnIndex: ({
|
|
|
23
23
|
lastColIndex: number;
|
|
24
24
|
isRtl: boolean;
|
|
25
25
|
}) => number | null;
|
|
26
|
-
export declare function findNonRowSpannedCell(apiRef: RefObject<
|
|
26
|
+
export declare function findNonRowSpannedCell(apiRef: RefObject<GridPrivateApiCommunity>, rowId: GridRowId, colIndex: number, rowSpanScanDirection: 'up' | 'down'): GridRowId;
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.findNonRowSpannedCell = findNonRowSpannedCell;
|
|
7
7
|
exports.getRightColumnIndex = exports.getLeftColumnIndex = void 0;
|
|
8
|
+
var _xVirtualizer = require("@mui/x-virtualizer");
|
|
8
9
|
var _gridFilterSelector = require("../filter/gridFilterSelector");
|
|
9
|
-
var _gridRowSpanningSelectors = require("../rows/gridRowSpanningSelectors");
|
|
10
10
|
const getLeftColumnIndex = ({
|
|
11
11
|
currentColIndex,
|
|
12
12
|
firstColIndex,
|
|
@@ -43,9 +43,9 @@ const getRightColumnIndex = ({
|
|
|
43
43
|
return null;
|
|
44
44
|
};
|
|
45
45
|
exports.getRightColumnIndex = getRightColumnIndex;
|
|
46
|
-
function findNonRowSpannedCell(apiRef, rowId,
|
|
47
|
-
const rowSpanHiddenCells =
|
|
48
|
-
if (!rowSpanHiddenCells[rowId]?.[
|
|
46
|
+
function findNonRowSpannedCell(apiRef, rowId, colIndex, rowSpanScanDirection) {
|
|
47
|
+
const rowSpanHiddenCells = _xVirtualizer.Rowspan.selectors.hiddenCells(apiRef.current.virtualizer.store.state);
|
|
48
|
+
if (!rowSpanHiddenCells[rowId]?.[colIndex]) {
|
|
49
49
|
return rowId;
|
|
50
50
|
}
|
|
51
51
|
const filteredSortedRowIds = (0, _gridFilterSelector.gridFilteredSortedRowIdsSelector)(apiRef);
|
|
@@ -53,7 +53,7 @@ function findNonRowSpannedCell(apiRef, rowId, field, rowSpanScanDirection) {
|
|
|
53
53
|
let nextRowIndex = filteredSortedRowIds.indexOf(rowId) + (rowSpanScanDirection === 'down' ? 1 : -1);
|
|
54
54
|
while (nextRowIndex >= 0 && nextRowIndex < filteredSortedRowIds.length) {
|
|
55
55
|
const nextRowId = filteredSortedRowIds[nextRowIndex];
|
|
56
|
-
if (!rowSpanHiddenCells[nextRowId]?.[
|
|
56
|
+
if (!rowSpanHiddenCells[nextRowId]?.[colIndex]) {
|
|
57
57
|
return nextRowId;
|
|
58
58
|
}
|
|
59
59
|
nextRowIndex += rowSpanScanDirection === 'down' ? 1 : -1;
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { GridStateCommunity } from "../../../models/gridStateCommunity.js";
|
|
2
|
+
import type { GridStateColDef } from "../../../models/colDef/gridColDef.js";
|
|
3
|
+
/**
|
|
4
|
+
* Get the list view state
|
|
5
|
+
* @category List View
|
|
6
|
+
* @ignore - Do not document
|
|
7
|
+
*/
|
|
8
|
+
export declare const gridListViewSelector: import("@mui/x-data-grid").OutputSelector<GridStateCommunity, unknown, boolean>;
|
|
2
9
|
/**
|
|
3
10
|
* Get the list column definition
|
|
4
11
|
* @category List View
|
|
5
12
|
* @ignore - Do not document
|
|
6
13
|
*/
|
|
7
|
-
export declare const gridListColumnSelector: import("@mui/x-data-grid").OutputSelector<GridStateCommunity, unknown,
|
|
14
|
+
export declare const gridListColumnSelector: import("@mui/x-data-grid").OutputSelector<GridStateCommunity, unknown, GridStateColDef>;
|
|
@@ -3,8 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.gridListColumnSelector = void 0;
|
|
6
|
+
exports.gridListViewSelector = exports.gridListColumnSelector = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
|
+
/**
|
|
9
|
+
* Get the list view state
|
|
10
|
+
* @category List View
|
|
11
|
+
* @ignore - Do not document
|
|
12
|
+
*/
|
|
13
|
+
const gridListViewSelector = exports.gridListViewSelector = (0, _createSelector.createRootSelector)(state => state.props.listView ?? false);
|
|
14
|
+
|
|
8
15
|
/**
|
|
9
16
|
* Get the list column definition
|
|
10
17
|
* @category List View
|
|
@@ -2,7 +2,6 @@ import type { GridRowModelUpdate } from '@mui/x-data-grid';
|
|
|
2
2
|
import type { GridColDef } from "../../../models/colDef/index.js";
|
|
3
3
|
export interface GridPivotingStatePartial {
|
|
4
4
|
active: boolean;
|
|
5
|
-
panelOpen: boolean;
|
|
6
5
|
initialColumns: Map<string, GridColDef> | undefined;
|
|
7
6
|
}
|
|
8
7
|
export interface GridPivotingPrivateApiCommunity {
|
|
@@ -5,7 +5,4 @@ export declare const gridPivotActiveSelector: (args_0: import("react").RefObject
|
|
|
5
5
|
} | null>) => boolean;
|
|
6
6
|
export declare const gridPivotInitialColumnsSelector: (args_0: import("react").RefObject<{
|
|
7
7
|
state: GridStateCommunity;
|
|
8
|
-
} | null>) => Map<string, GridColDef>;
|
|
9
|
-
export declare const gridPivotPanelOpenSelector: (args_0: import("react").RefObject<{
|
|
10
|
-
state: GridStateCommunity;
|
|
11
|
-
} | null>) => boolean;
|
|
8
|
+
} | null>) => Map<string, GridColDef>;
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.gridPivotInitialColumnsSelector = exports.gridPivotActiveSelector = void 0;
|
|
7
7
|
var _createSelector = require("../../../utils/createSelector");
|
|
8
8
|
const gridPivotingStateSelector = (0, _createSelector.createRootSelector)(
|
|
9
9
|
// @ts-ignore
|
|
10
10
|
state => state.pivoting);
|
|
11
11
|
const gridPivotActiveSelector = exports.gridPivotActiveSelector = (0, _createSelector.createSelector)(gridPivotingStateSelector, pivoting => pivoting?.active);
|
|
12
12
|
const emptyColumns = new Map();
|
|
13
|
-
const gridPivotInitialColumnsSelector = exports.gridPivotInitialColumnsSelector = (0, _createSelector.createSelector)(gridPivotingStateSelector, pivoting => pivoting?.initialColumns || emptyColumns);
|
|
14
|
-
const gridPivotPanelOpenSelector = exports.gridPivotPanelOpenSelector = (0, _createSelector.createSelector)(gridPivotingStateSelector, pivoting => pivoting?.panelOpen);
|
|
13
|
+
const gridPivotInitialColumnsSelector = exports.gridPivotInitialColumnsSelector = (0, _createSelector.createSelector)(gridPivotingStateSelector, pivoting => pivoting?.initialColumns || emptyColumns);
|