@mui/x-data-grid 5.15.2 → 5.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +177 -2
- package/DataGrid/DataGrid.js +3 -1
- package/DataGrid/useDataGridComponent.js +5 -0
- package/README.md +2 -1
- package/components/DataGridColumnHeaders.js +4 -3
- package/components/ErrorBoundary.d.ts +1 -0
- package/components/GridAutoSizer.js +7 -0
- package/components/GridRow.d.ts +2 -1
- package/components/GridRow.js +136 -85
- package/components/base/GridBody.js +8 -5
- package/components/base/GridOverlays.js +4 -7
- package/components/cell/GridActionsCellItem.d.ts +2 -2
- package/components/cell/GridBooleanCell.js +2 -1
- package/components/cell/GridEditBooleanCell.js +2 -1
- package/components/cell/GridEditDateCell.js +3 -2
- package/components/cell/GridEditInputCell.js +2 -1
- package/components/cell/GridEditSingleSelectCell.js +11 -2
- package/components/cell/GridSkeletonCell.d.ts +12 -0
- package/components/cell/GridSkeletonCell.js +60 -0
- package/components/cell/index.d.ts +1 -0
- package/components/cell/index.js +2 -1
- package/components/columnHeaders/GridColumnGroupHeader.d.ts +14 -0
- package/components/columnHeaders/GridColumnGroupHeader.js +122 -0
- package/components/columnHeaders/GridColumnHeaderItem.js +55 -71
- package/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/components/columnHeaders/GridGenericColumnHeaderItem.d.ts +32 -0
- package/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/components/containers/GridOverlay.js +7 -1
- package/components/containers/GridRoot.js +3 -3
- package/components/containers/GridRootStyles.js +16 -2
- package/components/menu/GridMenu.d.ts +3 -2
- package/components/menu/GridMenu.js +1 -0
- package/components/menu/columnMenu/GridColumnHeaderMenu.d.ts +1 -1
- package/components/panel/GridColumnsPanel.d.ts +6 -1
- package/components/panel/GridColumnsPanel.js +38 -6
- package/components/panel/GridPanel.d.ts +1 -1
- package/components/panel/GridPanel.js +1 -0
- package/components/panel/filterPanel/GridFilterForm.d.ts +4 -0
- package/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/components/panel/filterPanel/GridFilterInputMultipleValue.d.ts +1 -1
- package/components/panel/filterPanel/GridFilterPanel.d.ts +4 -0
- package/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/components/toolbar/GridToolbarColumnsButton.d.ts +1 -1
- package/components/toolbar/GridToolbarDensitySelector.d.ts +1 -1
- package/components/toolbar/GridToolbarExportContainer.d.ts +1 -1
- package/constants/defaultGridSlotsComponents.js +2 -1
- package/constants/gridClasses.d.ts +24 -0
- package/constants/gridClasses.js +1 -1
- package/hooks/core/pipeProcessing/gridPipeProcessingApi.d.ts +5 -1
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.d.ts +7 -0
- package/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/hooks/features/columnGrouping/index.d.ts +2 -0
- package/hooks/features/columnGrouping/index.js +2 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.d.ts +24 -0
- package/hooks/features/columnGrouping/useGridColumnGrouping.js +153 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.d.ts +4 -0
- package/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +7 -6
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +204 -9
- package/hooks/features/density/densitySelector.d.ts +2 -0
- package/hooks/features/density/densitySelector.js +3 -1
- package/hooks/features/density/densityState.d.ts +1 -0
- package/hooks/features/density/useGridDensity.d.ts +1 -1
- package/hooks/features/density/useGridDensity.js +45 -9
- package/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/hooks/features/export/useGridPrintExport.js +3 -3
- package/hooks/features/filter/gridFilterSelector.d.ts +3 -3
- package/hooks/features/filter/gridFilterUtils.d.ts +1 -1
- package/hooks/features/filter/gridFilterUtils.js +55 -54
- package/hooks/features/filter/useGridFilter.js +1 -1
- package/hooks/features/index.d.ts +1 -0
- package/hooks/features/index.js +1 -0
- package/hooks/features/pagination/gridPaginationSelector.d.ts +1 -1
- package/hooks/features/rows/gridRowsSelector.d.ts +1 -1
- package/hooks/features/rows/useGridParamsApi.js +1 -1
- package/hooks/features/rows/useGridRows.js +65 -8
- package/hooks/features/rows/useGridRowsMeta.js +36 -16
- package/hooks/features/selection/gridSelectionSelector.d.ts +1 -1
- package/hooks/features/sorting/gridSortingSelector.d.ts +1 -1
- package/hooks/features/virtualization/useGridVirtualScroller.d.ts +2 -2
- package/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/hooks/utils/useGridNativeEventListener.d.ts +1 -1
- package/hooks/utils/useGridNativeEventListener.js +2 -2
- package/hooks/utils/useGridVisibleRows.d.ts +2 -2
- package/index.js +1 -1
- package/internals/index.d.ts +2 -0
- package/internals/index.js +2 -0
- package/legacy/DataGrid/DataGrid.js +3 -1
- package/legacy/DataGrid/useDataGridComponent.js +5 -0
- package/legacy/components/DataGridColumnHeaders.js +4 -3
- package/legacy/components/GridAutoSizer.js +7 -0
- package/legacy/components/GridRow.js +138 -85
- package/legacy/components/base/GridBody.js +8 -5
- package/legacy/components/base/GridOverlays.js +4 -7
- package/legacy/components/cell/GridBooleanCell.js +2 -1
- package/legacy/components/cell/GridEditBooleanCell.js +2 -1
- package/legacy/components/cell/GridEditDateCell.js +3 -2
- package/legacy/components/cell/GridEditInputCell.js +2 -1
- package/legacy/components/cell/GridEditSingleSelectCell.js +11 -2
- package/legacy/components/cell/GridSkeletonCell.js +57 -0
- package/legacy/components/cell/index.js +2 -1
- package/legacy/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/legacy/components/columnHeaders/GridColumnHeaderItem.js +78 -88
- package/legacy/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/legacy/components/columnHeaders/GridGenericColumnHeaderItem.js +112 -0
- package/legacy/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/legacy/components/containers/GridOverlay.js +7 -1
- package/legacy/components/containers/GridRoot.js +3 -3
- package/legacy/components/containers/GridRootStyles.js +14 -5
- package/legacy/components/menu/GridMenu.js +1 -0
- package/legacy/components/panel/GridColumnsPanel.js +41 -6
- package/legacy/components/panel/GridPanel.js +1 -0
- package/legacy/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/legacy/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/legacy/constants/defaultGridSlotsComponents.js +2 -1
- package/legacy/constants/gridClasses.js +1 -1
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/legacy/hooks/features/columnGrouping/gridColumnGroupsSelector.js +12 -0
- package/legacy/hooks/features/columnGrouping/index.js +2 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGrouping.js +151 -0
- package/legacy/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +35 -0
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +213 -12
- package/legacy/hooks/features/density/densitySelector.js +6 -0
- package/legacy/hooks/features/density/useGridDensity.js +44 -6
- package/legacy/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/legacy/hooks/features/export/useGridPrintExport.js +3 -3
- package/legacy/hooks/features/filter/gridFilterUtils.js +61 -56
- package/legacy/hooks/features/filter/useGridFilter.js +1 -1
- package/legacy/hooks/features/index.js +1 -0
- package/legacy/hooks/features/rows/useGridParamsApi.js +1 -1
- package/legacy/hooks/features/rows/useGridRows.js +73 -8
- package/legacy/hooks/features/rows/useGridRowsMeta.js +45 -18
- package/legacy/hooks/features/virtualization/useGridVirtualScroller.js +31 -13
- package/legacy/hooks/utils/useGridNativeEventListener.js +2 -2
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +2 -0
- package/legacy/models/api/gridColumnGroupingApi.js +1 -0
- package/legacy/models/events/gridEvents.js +2 -0
- package/legacy/models/gridColumnGrouping.js +6 -0
- package/legacy/models/index.js +2 -1
- package/legacy/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/legacy/models/params/index.js +2 -1
- package/legacy/utils/utils.js +18 -0
- package/models/api/gridApiCommon.d.ts +2 -1
- package/models/api/gridColumnGroupingApi.d.ts +19 -0
- package/models/api/gridColumnGroupingApi.js +1 -0
- package/models/api/gridDensityApi.d.ts +2 -1
- package/models/api/gridParamsApi.d.ts +1 -1
- package/models/api/gridRowApi.d.ts +6 -0
- package/models/api/gridRowsMetaApi.d.ts +6 -1
- package/models/colDef/gridColDef.d.ts +15 -1
- package/models/events/gridEventLookup.d.ts +7 -1
- package/models/events/gridEvents.d.ts +3 -1
- package/models/events/gridEvents.js +2 -0
- package/models/gridColumnGrouping.d.ts +67 -0
- package/models/gridColumnGrouping.js +6 -0
- package/models/gridRows.d.ts +5 -5
- package/models/gridSlotsComponent.d.ts +5 -0
- package/models/gridStateCommunity.d.ts +2 -1
- package/models/index.d.ts +1 -0
- package/models/index.js +2 -1
- package/models/params/gridCellParams.d.ts +7 -2
- package/models/params/gridMenuParams.d.ts +1 -2
- package/models/params/gridRenderedRowsIntervalChangeParams.d.ts +10 -0
- package/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/models/params/index.d.ts +1 -0
- package/models/params/index.js +2 -1
- package/models/props/DataGridProps.d.ts +7 -1
- package/modern/DataGrid/DataGrid.js +3 -1
- package/modern/DataGrid/useDataGridComponent.js +5 -0
- package/modern/components/DataGridColumnHeaders.js +4 -3
- package/modern/components/GridAutoSizer.js +7 -0
- package/modern/components/GridRow.js +133 -84
- package/modern/components/base/GridBody.js +8 -5
- package/modern/components/base/GridOverlays.js +4 -7
- package/modern/components/cell/GridBooleanCell.js +2 -1
- package/modern/components/cell/GridEditBooleanCell.js +2 -1
- package/modern/components/cell/GridEditDateCell.js +3 -2
- package/modern/components/cell/GridEditInputCell.js +2 -1
- package/modern/components/cell/GridEditSingleSelectCell.js +11 -2
- package/modern/components/cell/GridSkeletonCell.js +60 -0
- package/modern/components/cell/index.js +2 -1
- package/modern/components/columnHeaders/GridColumnGroupHeader.js +120 -0
- package/modern/components/columnHeaders/GridColumnHeaderItem.js +53 -69
- package/modern/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/modern/components/columnHeaders/GridGenericColumnHeaderItem.js +104 -0
- package/modern/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/modern/components/containers/GridOverlay.js +7 -1
- package/modern/components/containers/GridRoot.js +3 -3
- package/modern/components/containers/GridRootStyles.js +16 -2
- package/modern/components/menu/GridMenu.js +1 -0
- package/modern/components/panel/GridColumnsPanel.js +38 -6
- package/modern/components/panel/GridPanel.js +1 -0
- package/modern/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/modern/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/modern/constants/defaultGridSlotsComponents.js +2 -1
- package/modern/constants/gridClasses.js +1 -1
- package/modern/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +1 -0
- package/modern/hooks/features/columnGrouping/gridColumnGroupsSelector.js +8 -0
- package/modern/hooks/features/columnGrouping/index.js +2 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGrouping.js +145 -0
- package/modern/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +29 -0
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +186 -9
- package/modern/hooks/features/density/densitySelector.js +3 -1
- package/modern/hooks/features/density/useGridDensity.js +37 -9
- package/modern/hooks/features/dimensions/useGridDimensions.js +4 -4
- package/modern/hooks/features/export/useGridPrintExport.js +3 -3
- package/modern/hooks/features/filter/gridFilterUtils.js +54 -53
- package/modern/hooks/features/filter/useGridFilter.js +1 -1
- package/modern/hooks/features/index.js +1 -0
- package/modern/hooks/features/rows/useGridParamsApi.js +1 -1
- package/modern/hooks/features/rows/useGridRows.js +65 -8
- package/modern/hooks/features/rows/useGridRowsMeta.js +36 -16
- package/modern/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/modern/hooks/utils/useGridNativeEventListener.js +2 -2
- package/modern/index.js +1 -1
- package/modern/internals/index.js +2 -0
- package/modern/models/api/gridColumnGroupingApi.js +1 -0
- package/modern/models/events/gridEvents.js +2 -0
- package/modern/models/gridColumnGrouping.js +6 -0
- package/modern/models/index.js +2 -1
- package/modern/models/params/gridRenderedRowsIntervalChangeParams.js +1 -0
- package/modern/models/params/index.js +2 -1
- package/modern/utils/utils.js +16 -0
- package/node/DataGrid/DataGrid.js +3 -1
- package/node/DataGrid/useDataGridComponent.js +7 -0
- package/node/components/DataGridColumnHeaders.js +4 -3
- package/node/components/GridAutoSizer.js +7 -0
- package/node/components/GridRow.js +136 -77
- package/node/components/base/GridBody.js +7 -4
- package/node/components/base/GridOverlays.js +3 -6
- package/node/components/cell/GridBooleanCell.js +2 -1
- package/node/components/cell/GridEditBooleanCell.js +2 -1
- package/node/components/cell/GridEditDateCell.js +3 -2
- package/node/components/cell/GridEditInputCell.js +2 -1
- package/node/components/cell/GridEditSingleSelectCell.js +11 -2
- package/node/components/cell/GridSkeletonCell.js +81 -0
- package/node/components/cell/index.js +13 -0
- package/node/components/columnHeaders/GridColumnGroupHeader.js +141 -0
- package/node/components/columnHeaders/GridColumnHeaderItem.js +53 -72
- package/node/components/columnHeaders/GridColumnHeadersInner.js +2 -1
- package/node/components/columnHeaders/GridGenericColumnHeaderItem.js +126 -0
- package/node/components/columnSelection/GridCellCheckboxRenderer.js +2 -1
- package/node/components/containers/GridOverlay.js +7 -1
- package/node/components/containers/GridRoot.js +4 -4
- package/node/components/containers/GridRootStyles.js +16 -2
- package/node/components/menu/GridMenu.js +1 -0
- package/node/components/panel/GridColumnsPanel.js +36 -5
- package/node/components/panel/GridPanel.js +1 -0
- package/node/components/panel/filterPanel/GridFilterForm.js +5 -0
- package/node/components/panel/filterPanel/GridFilterPanel.js +5 -0
- package/node/constants/defaultGridSlotsComponents.js +1 -0
- package/node/constants/gridClasses.js +1 -1
- package/node/hooks/features/columnGrouping/gridColumnGroupsInterfaces.js +5 -0
- package/node/hooks/features/columnGrouping/gridColumnGroupsSelector.js +18 -0
- package/node/hooks/features/columnGrouping/index.js +18 -0
- package/node/hooks/features/columnGrouping/useGridColumnGrouping.js +182 -0
- package/node/hooks/features/columnGrouping/useGridColumnGroupingPreProcessors.js +55 -0
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +207 -8
- package/node/hooks/features/density/densitySelector.js +6 -2
- package/node/hooks/features/density/useGridDensity.js +48 -9
- package/node/hooks/features/dimensions/useGridDimensions.js +3 -3
- package/node/hooks/features/export/useGridPrintExport.js +2 -2
- package/node/hooks/features/filter/gridFilterUtils.js +55 -55
- package/node/hooks/features/filter/useGridFilter.js +1 -1
- package/node/hooks/features/index.js +13 -0
- package/node/hooks/features/rows/useGridParamsApi.js +1 -1
- package/node/hooks/features/rows/useGridRows.js +60 -7
- package/node/hooks/features/rows/useGridRowsMeta.js +35 -15
- package/node/hooks/features/virtualization/useGridVirtualScroller.js +17 -5
- package/node/hooks/utils/useGridNativeEventListener.js +2 -2
- package/node/index.js +1 -1
- package/node/internals/index.js +22 -0
- package/node/models/api/gridColumnGroupingApi.js +5 -0
- package/node/models/events/gridEvents.js +2 -0
- package/node/models/gridColumnGrouping.js +13 -0
- package/node/models/index.js +13 -0
- package/node/models/params/gridRenderedRowsIntervalChangeParams.js +5 -0
- package/node/models/params/index.js +13 -0
- package/node/utils/utils.js +18 -0
- package/package.json +3 -3
- package/utils/utils.d.ts +1 -0
- package/utils/utils.js +16 -0
|
@@ -11,6 +11,12 @@ export var gridDensityRowHeightSelector = createSelector(gridDensitySelector, fu
|
|
|
11
11
|
export var gridDensityHeaderHeightSelector = createSelector(gridDensitySelector, function (density) {
|
|
12
12
|
return density.headerHeight;
|
|
13
13
|
});
|
|
14
|
+
export var gridDensityHeaderGroupingMaxDepthSelector = createSelector(gridDensitySelector, function (density) {
|
|
15
|
+
return density.headerGroupingMaxDepth;
|
|
16
|
+
});
|
|
14
17
|
export var gridDensityFactorSelector = createSelector(gridDensitySelector, function (density) {
|
|
15
18
|
return density.factor;
|
|
19
|
+
});
|
|
20
|
+
export var gridDensityTotalHeaderHeightSelector = createSelector(gridDensitySelector, function (density) {
|
|
21
|
+
return density.headerHeight * (1 + density.headerGroupingMaxDepth);
|
|
16
22
|
});
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
3
|
import * as React from 'react';
|
|
3
4
|
import { GridDensityTypes } from '../../../models/gridDensity';
|
|
4
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
5
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
7
|
import { gridDensitySelector } from './densitySelector';
|
|
7
8
|
import { isDeepEqual } from '../../../utils/utils';
|
|
9
|
+
import { useGridSelector } from '../../utils/useGridSelector';
|
|
10
|
+
import { gridVisibleColumnDefinitionsSelector } from '../columns';
|
|
11
|
+
import { unwrapGroupingColumnModel } from '../columnGrouping/useGridColumnGrouping';
|
|
8
12
|
export var COMPACT_DENSITY_FACTOR = 0.7;
|
|
9
13
|
export var COMFORTABLE_DENSITY_FACTOR = 1.3; // TODO v6: revise keeping headerHeight and rowHeight in state
|
|
10
14
|
|
|
11
|
-
var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight) {
|
|
15
|
+
var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight, newMaxDepth) {
|
|
12
16
|
switch (newDensity) {
|
|
13
17
|
case GridDensityTypes.Compact:
|
|
14
18
|
return {
|
|
15
19
|
value: newDensity,
|
|
16
20
|
headerHeight: Math.floor(newHeaderHeight * COMPACT_DENSITY_FACTOR),
|
|
17
21
|
rowHeight: Math.floor(newRowHeight * COMPACT_DENSITY_FACTOR),
|
|
22
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
18
23
|
factor: COMPACT_DENSITY_FACTOR
|
|
19
24
|
};
|
|
20
25
|
|
|
@@ -23,6 +28,7 @@ var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHead
|
|
|
23
28
|
value: newDensity,
|
|
24
29
|
headerHeight: Math.floor(newHeaderHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
25
30
|
rowHeight: Math.floor(newRowHeight * COMFORTABLE_DENSITY_FACTOR),
|
|
31
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
26
32
|
factor: COMFORTABLE_DENSITY_FACTOR
|
|
27
33
|
};
|
|
28
34
|
|
|
@@ -31,25 +37,57 @@ var getUpdatedDensityState = function getUpdatedDensityState(newDensity, newHead
|
|
|
31
37
|
value: newDensity,
|
|
32
38
|
headerHeight: newHeaderHeight,
|
|
33
39
|
rowHeight: newRowHeight,
|
|
40
|
+
headerGroupingMaxDepth: newMaxDepth,
|
|
34
41
|
factor: 1
|
|
35
42
|
};
|
|
36
43
|
}
|
|
37
44
|
};
|
|
38
45
|
|
|
39
46
|
export var densityStateInitializer = function densityStateInitializer(state, props) {
|
|
47
|
+
// TODO: think about improving this initialization. Could it be done in the useColumn initializer?
|
|
48
|
+
// TODO: manage to remove ts-ignore
|
|
49
|
+
var maxDepth;
|
|
50
|
+
|
|
51
|
+
if (props.columnGroupingModel == null || Object.keys(props.columnGroupingModel).length === 0) {
|
|
52
|
+
maxDepth = 0;
|
|
53
|
+
} else {
|
|
54
|
+
var unwrappedGroupingColumnModel = unwrapGroupingColumnModel(props.columnGroupingModel);
|
|
55
|
+
var columnsState = state.columns;
|
|
56
|
+
var visibleColumns = columnsState.all.filter(function (field) {
|
|
57
|
+
return columnsState.columnVisibilityModel[field] !== false;
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
if (visibleColumns.length === 0) {
|
|
61
|
+
maxDepth = 0;
|
|
62
|
+
} else {
|
|
63
|
+
maxDepth = Math.max.apply(Math, _toConsumableArray(visibleColumns.map(function (field) {
|
|
64
|
+
var _unwrappedGroupingCol, _unwrappedGroupingCol2;
|
|
65
|
+
|
|
66
|
+
return (_unwrappedGroupingCol = (_unwrappedGroupingCol2 = unwrappedGroupingColumnModel[field]) == null ? void 0 : _unwrappedGroupingCol2.length) != null ? _unwrappedGroupingCol : 0;
|
|
67
|
+
})));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
40
71
|
return _extends({}, state, {
|
|
41
|
-
density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight)
|
|
72
|
+
density: getUpdatedDensityState(props.density, props.headerHeight, props.rowHeight, maxDepth)
|
|
42
73
|
});
|
|
43
74
|
};
|
|
44
75
|
export var useGridDensity = function useGridDensity(apiRef, props) {
|
|
76
|
+
var visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
|
|
77
|
+
var maxDepth = visibleColumns.length > 0 ? Math.max.apply(Math, _toConsumableArray(visibleColumns.map(function (column) {
|
|
78
|
+
var _column$groupPath$len, _column$groupPath;
|
|
79
|
+
|
|
80
|
+
return (_column$groupPath$len = (_column$groupPath = column.groupPath) == null ? void 0 : _column$groupPath.length) != null ? _column$groupPath$len : 0;
|
|
81
|
+
}))) : 0;
|
|
45
82
|
var logger = useGridLogger(apiRef, 'useDensity');
|
|
46
83
|
var setDensity = React.useCallback(function (newDensity) {
|
|
47
84
|
var newHeaderHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.headerHeight;
|
|
48
85
|
var newRowHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : props.rowHeight;
|
|
86
|
+
var newMaxDepth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : maxDepth;
|
|
49
87
|
logger.debug("Set grid density to ".concat(newDensity));
|
|
50
88
|
apiRef.current.setState(function (state) {
|
|
51
89
|
var currentDensityState = gridDensitySelector(state);
|
|
52
|
-
var newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight);
|
|
90
|
+
var newDensityState = getUpdatedDensityState(newDensity, newHeaderHeight, newRowHeight, newMaxDepth);
|
|
53
91
|
|
|
54
92
|
if (isDeepEqual(currentDensityState, newDensityState)) {
|
|
55
93
|
return state;
|
|
@@ -60,10 +98,10 @@ export var useGridDensity = function useGridDensity(apiRef, props) {
|
|
|
60
98
|
});
|
|
61
99
|
});
|
|
62
100
|
apiRef.current.forceUpdate();
|
|
63
|
-
}, [logger, apiRef, props.headerHeight, props.rowHeight]);
|
|
101
|
+
}, [logger, apiRef, props.headerHeight, props.rowHeight, maxDepth]);
|
|
64
102
|
React.useEffect(function () {
|
|
65
|
-
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight);
|
|
66
|
-
}, [apiRef, props.density, props.rowHeight, props.headerHeight]);
|
|
103
|
+
apiRef.current.setDensity(props.density, props.headerHeight, props.rowHeight, maxDepth);
|
|
104
|
+
}, [apiRef, props.density, props.rowHeight, props.headerHeight, maxDepth]);
|
|
67
105
|
var densityApi = {
|
|
68
106
|
setDensity: setDensity
|
|
69
107
|
};
|
|
@@ -4,7 +4,7 @@ import { useGridApiEventHandler, useGridApiOptionHandler } from '../../utils/use
|
|
|
4
4
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
5
5
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
6
6
|
import { gridColumnsTotalWidthSelector } from '../columns';
|
|
7
|
-
import {
|
|
7
|
+
import { gridDensityTotalHeaderHeightSelector, gridDensityRowHeightSelector } from '../density';
|
|
8
8
|
import { useGridSelector } from '../../utils';
|
|
9
9
|
import { getVisibleRows } from '../../utils/useGridVisibleRows';
|
|
10
10
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
@@ -41,7 +41,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
41
41
|
var rootDimensionsRef = React.useRef(null);
|
|
42
42
|
var fullDimensionsRef = React.useRef(null);
|
|
43
43
|
var rowsMeta = useGridSelector(apiRef, gridRowsMetaSelector);
|
|
44
|
-
var
|
|
44
|
+
var totalHeaderHeight = useGridSelector(apiRef, gridDensityTotalHeaderHeightSelector);
|
|
45
45
|
var updateGridDimensionsRef = React.useCallback(function () {
|
|
46
46
|
var _apiRef$current$rootE;
|
|
47
47
|
|
|
@@ -86,7 +86,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
86
86
|
} else {
|
|
87
87
|
viewportOuterSize = {
|
|
88
88
|
width: rootDimensionsRef.current.width,
|
|
89
|
-
height: rootDimensionsRef.current.height -
|
|
89
|
+
height: rootDimensionsRef.current.height - totalHeaderHeight
|
|
90
90
|
};
|
|
91
91
|
var scrollInformation = hasScroll({
|
|
92
92
|
content: {
|
|
@@ -120,7 +120,7 @@ export function useGridDimensions(apiRef, props) {
|
|
|
120
120
|
if (newFullDimensions.viewportInnerSize.width !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.width) || newFullDimensions.viewportInnerSize.height !== (prevDimensions == null ? void 0 : prevDimensions.viewportInnerSize.height)) {
|
|
121
121
|
apiRef.current.publishEvent('viewportInnerSizeChange', newFullDimensions.viewportInnerSize);
|
|
122
122
|
}
|
|
123
|
-
}, [apiRef, props.scrollbarSize, props.autoHeight,
|
|
123
|
+
}, [apiRef, props.scrollbarSize, props.autoHeight, totalHeaderHeight, rowsMeta.currentPageTotalHeight]);
|
|
124
124
|
var resize = React.useCallback(function () {
|
|
125
125
|
updateGridDimensionsRef();
|
|
126
126
|
apiRef.current.publishEvent('debouncedResize', rootDimensionsRef.current);
|
|
@@ -7,7 +7,7 @@ import { ownerDocument } from '@mui/material/utils';
|
|
|
7
7
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
8
8
|
import { gridVisibleRowCountSelector } from '../filter/gridFilterSelector';
|
|
9
9
|
import { gridColumnDefinitionsSelector, gridColumnVisibilityModelSelector } from '../columns/gridColumnsSelector';
|
|
10
|
-
import {
|
|
10
|
+
import { gridDensityTotalHeaderHeightSelector } from '../density/densitySelector';
|
|
11
11
|
import { gridClasses } from '../../../constants/gridClasses';
|
|
12
12
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
13
13
|
import { gridRowsMetaSelector } from '../rows/gridRowsMetaSelector';
|
|
@@ -86,7 +86,7 @@ export var useGridPrintExport = function useGridPrintExport(apiRef, props) {
|
|
|
86
86
|
return;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
var
|
|
89
|
+
var totalHeaderHeight = gridDensityTotalHeaderHeightSelector(apiRef);
|
|
90
90
|
var rowsMeta = gridRowsMetaSelector(apiRef.current.state);
|
|
91
91
|
var gridRootElement = apiRef.current.rootElementRef.current;
|
|
92
92
|
var gridClone = gridRootElement.cloneNode(true);
|
|
@@ -120,7 +120,7 @@ export var useGridPrintExport = function useGridPrintExport(apiRef, props) {
|
|
|
120
120
|
} // Expand container height to accommodate all rows
|
|
121
121
|
|
|
122
122
|
|
|
123
|
-
gridClone.style.height = "".concat(rowsMeta.currentPageTotalHeight +
|
|
123
|
+
gridClone.style.height = "".concat(rowsMeta.currentPageTotalHeight + totalHeaderHeight + gridToolbarElementHeight + gridFooterElementHeight, "px"); // Remove all loaded elements from the current host
|
|
124
124
|
|
|
125
125
|
printDoc.body.innerHTML = '';
|
|
126
126
|
printDoc.body.appendChild(gridClone);
|
|
@@ -79,76 +79,78 @@ export var mergeStateWithFilterModel = function mergeStateWithFilterModel(filter
|
|
|
79
79
|
});
|
|
80
80
|
};
|
|
81
81
|
};
|
|
82
|
-
/**
|
|
83
|
-
* Generates a method to easily check if a row is matching the current filter model.
|
|
84
|
-
* @param {GridFilterModel} filterModel The model with which we want to filter the rows.
|
|
85
|
-
* @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
|
|
86
|
-
* @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
|
|
87
|
-
*/
|
|
88
82
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if (!filterItem.columnField || !filterItem.operatorValue) {
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
83
|
+
var getFilterCallbackFromItem = function getFilterCallbackFromItem(filterItem, apiRef) {
|
|
84
|
+
if (!filterItem.columnField || !filterItem.operatorValue) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
96
87
|
|
|
97
|
-
|
|
88
|
+
var column = apiRef.current.getColumn(filterItem.columnField);
|
|
98
89
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
90
|
+
if (!column) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
102
93
|
|
|
103
|
-
|
|
94
|
+
var parsedValue;
|
|
104
95
|
|
|
105
|
-
|
|
106
|
-
|
|
96
|
+
if (column.valueParser) {
|
|
97
|
+
var _filterItem$value;
|
|
107
98
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
99
|
+
var parser = column.valueParser;
|
|
100
|
+
parsedValue = Array.isArray(filterItem.value) ? (_filterItem$value = filterItem.value) == null ? void 0 : _filterItem$value.map(function (x) {
|
|
101
|
+
return parser(x);
|
|
102
|
+
}) : parser(filterItem.value);
|
|
103
|
+
} else {
|
|
104
|
+
parsedValue = filterItem.value;
|
|
105
|
+
}
|
|
115
106
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
107
|
+
var newFilterItem = _extends({}, filterItem, {
|
|
108
|
+
value: parsedValue
|
|
109
|
+
});
|
|
119
110
|
|
|
120
|
-
|
|
111
|
+
var filterOperators = column.filterOperators;
|
|
121
112
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
113
|
+
if (!(filterOperators != null && filterOperators.length)) {
|
|
114
|
+
throw new Error("MUI: No filter operators found for column '".concat(column.field, "'."));
|
|
115
|
+
}
|
|
125
116
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
117
|
+
var filterOperator = filterOperators.find(function (operator) {
|
|
118
|
+
return operator.value === newFilterItem.operatorValue;
|
|
119
|
+
});
|
|
129
120
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
121
|
+
if (!filterOperator) {
|
|
122
|
+
throw new Error("MUI: No filter operator found for column '".concat(column.field, "' and operator value '").concat(newFilterItem.operatorValue, "'."));
|
|
123
|
+
}
|
|
133
124
|
|
|
134
|
-
|
|
125
|
+
var applyFilterOnRow = filterOperator.getApplyFilterFn(newFilterItem, column);
|
|
135
126
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
127
|
+
if (typeof applyFilterOnRow !== 'function') {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
139
130
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
131
|
+
var fn = function fn(rowId) {
|
|
132
|
+
var cellParams = apiRef.current.getCellParams(rowId, newFilterItem.columnField);
|
|
133
|
+
return applyFilterOnRow(cellParams);
|
|
134
|
+
};
|
|
144
135
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
};
|
|
136
|
+
return {
|
|
137
|
+
fn: fn,
|
|
138
|
+
item: newFilterItem
|
|
149
139
|
};
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Generates a method to easily check if a row is matching the current filter model.
|
|
143
|
+
* @param {GridFilterModel} filterModel The model with which we want to filter the rows.
|
|
144
|
+
* @param {React.MutableRefObject<GridApiCommunity>} apiRef The API of the grid.
|
|
145
|
+
* @returns {GridAggregatedFilterItemApplier | null} A method that checks if a row is matching the current filter model. If `null`, we consider that all the rows are matching the filters.
|
|
146
|
+
*/
|
|
147
|
+
|
|
150
148
|
|
|
151
|
-
|
|
149
|
+
export var buildAggregatedFilterItemsApplier = function buildAggregatedFilterItemsApplier(filterModel, apiRef) {
|
|
150
|
+
var items = filterModel.items;
|
|
151
|
+
var appliers = items.map(function (item) {
|
|
152
|
+
return getFilterCallbackFromItem(item, apiRef);
|
|
153
|
+
}).filter(function (callback) {
|
|
152
154
|
return !!callback;
|
|
153
155
|
});
|
|
154
156
|
|
|
@@ -242,9 +244,12 @@ export var buildAggregatedFilterApplier = function buildAggregatedFilterApplier(
|
|
|
242
244
|
};
|
|
243
245
|
};
|
|
244
246
|
};
|
|
245
|
-
export var passFilterLogic = function passFilterLogic(allFilterItemResults, allQuickFilterResults, filterModel) {
|
|
247
|
+
export var passFilterLogic = function passFilterLogic(allFilterItemResults, allQuickFilterResults, filterModel, apiRef) {
|
|
246
248
|
var _filterModel$quickFil2, _filterModel$linkOper;
|
|
247
249
|
|
|
250
|
+
var cleanedFilterItems = filterModel.items.filter(function (item) {
|
|
251
|
+
return getFilterCallbackFromItem(item, apiRef) !== null;
|
|
252
|
+
});
|
|
248
253
|
var cleanedAllFilterItemResults = allFilterItemResults.filter(function (result) {
|
|
249
254
|
return result != null;
|
|
250
255
|
});
|
|
@@ -264,13 +269,13 @@ export var passFilterLogic = function passFilterLogic(allFilterItemResults, allQ
|
|
|
264
269
|
};
|
|
265
270
|
|
|
266
271
|
if (linkOperator === GridLinkOperator.And) {
|
|
267
|
-
var passesAllFilters =
|
|
272
|
+
var passesAllFilters = cleanedFilterItems.every(filterItemPredicate);
|
|
268
273
|
|
|
269
274
|
if (!passesAllFilters) {
|
|
270
275
|
return false;
|
|
271
276
|
}
|
|
272
277
|
} else {
|
|
273
|
-
var passesSomeFilters =
|
|
278
|
+
var passesSomeFilters = cleanedFilterItems.some(filterItemPredicate);
|
|
274
279
|
|
|
275
280
|
if (!passesSomeFilters) {
|
|
276
281
|
return false;
|
|
@@ -288,7 +288,7 @@ export var useGridFilter = function useGridFilter(apiRef, props) {
|
|
|
288
288
|
passingFilterItems = _params$isRowMatching.passingFilterItems,
|
|
289
289
|
passingQuickFilterValues = _params$isRowMatching.passingQuickFilterValues;
|
|
290
290
|
|
|
291
|
-
isRowPassing = passFilterLogic([passingFilterItems], [passingQuickFilterValues], params.filterModel);
|
|
291
|
+
isRowPassing = passFilterLogic([passingFilterItems], [passingQuickFilterValues], params.filterModel, apiRef);
|
|
292
292
|
}
|
|
293
293
|
|
|
294
294
|
filteredRowsLookup[rowId] = isRowPassing;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Only export the variable and types that should be publicly exposed and re-exported from `@mui/x-data-grid-pro`
|
|
2
2
|
export * from './columnMenu';
|
|
3
3
|
export * from './columns';
|
|
4
|
+
export * from './columnGrouping';
|
|
4
5
|
export * from './density';
|
|
5
6
|
export * from './editRows';
|
|
6
7
|
export * from './filter';
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
3
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
5
|
import * as React from 'react';
|
|
5
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
7
|
import { useGridLogger } from '../../utils/useGridLogger';
|
|
7
|
-
import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector } from './gridRowsSelector';
|
|
8
|
+
import { gridRowCountSelector, gridRowsLookupSelector, gridRowTreeSelector, gridRowIdsSelector, gridRowGroupingNameSelector, gridRowsIdToIdLookupSelector } from './gridRowsSelector';
|
|
8
9
|
import { GridSignature, useGridApiEventHandler } from '../../utils/useGridApiEventHandler';
|
|
9
10
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
10
11
|
import { gridSortedRowIdsSelector } from '../sorting/gridSortingSelector';
|
|
@@ -109,14 +110,14 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
109
110
|
} // we remove duplicate updates. A server can batch updates, and send several updates for the same row in one fn call.
|
|
110
111
|
|
|
111
112
|
|
|
112
|
-
var
|
|
113
|
+
var uniqueUpdates = new Map();
|
|
113
114
|
updates.forEach(function (update) {
|
|
114
115
|
var id = getRowIdFromRowModel(update, props.getRowId, 'A row was provided without id when calling updateRows():');
|
|
115
116
|
|
|
116
|
-
if (
|
|
117
|
-
|
|
117
|
+
if (uniqueUpdates.has(id)) {
|
|
118
|
+
uniqueUpdates.set(id, _extends({}, uniqueUpdates.get(id), update));
|
|
118
119
|
} else {
|
|
119
|
-
|
|
120
|
+
uniqueUpdates.set(id, update);
|
|
120
121
|
}
|
|
121
122
|
});
|
|
122
123
|
var deletedRowIds = [];
|
|
@@ -128,7 +129,7 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
128
129
|
idToIdLookup: _extends({}, prevCache.idToIdLookup),
|
|
129
130
|
ids: _toConsumableArray(prevCache.ids)
|
|
130
131
|
};
|
|
131
|
-
|
|
132
|
+
uniqueUpdates.forEach(function (partialRow, id) {
|
|
132
133
|
// eslint-disable-next-line no-underscore-dangle
|
|
133
134
|
if (partialRow._action === 'delete') {
|
|
134
135
|
delete newCache.idRowsLookup[id];
|
|
@@ -264,8 +265,71 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
264
265
|
})
|
|
265
266
|
});
|
|
266
267
|
});
|
|
267
|
-
apiRef.current.
|
|
268
|
+
apiRef.current.publishEvent('rowsSet');
|
|
268
269
|
}, [apiRef, logger]);
|
|
270
|
+
var replaceRows = React.useCallback(function (firstRowToRender, newRows) {
|
|
271
|
+
if (props.signature === GridSignature.DataGrid && newRows.length > 1) {
|
|
272
|
+
throw new Error(["MUI: You can't 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
|
+
}
|
|
274
|
+
|
|
275
|
+
if (newRows.length === 0) {
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
var allRows = gridRowIdsSelector(apiRef);
|
|
280
|
+
|
|
281
|
+
var updatedRows = _toConsumableArray(allRows);
|
|
282
|
+
|
|
283
|
+
var idRowsLookup = gridRowsLookupSelector(apiRef);
|
|
284
|
+
var idToIdLookup = gridRowsIdToIdLookupSelector(apiRef);
|
|
285
|
+
var tree = gridRowTreeSelector(apiRef);
|
|
286
|
+
|
|
287
|
+
var updatedIdRowsLookup = _extends({}, idRowsLookup);
|
|
288
|
+
|
|
289
|
+
var updatedIdToIdLookup = _extends({}, idToIdLookup);
|
|
290
|
+
|
|
291
|
+
var updatedTree = _extends({}, tree);
|
|
292
|
+
|
|
293
|
+
var newRowEntries = newRows.map(function (newRowModel) {
|
|
294
|
+
var rowId = getRowIdFromRowModel(newRowModel, props.getRowId, 'A row was provided without id when calling replaceRows().');
|
|
295
|
+
return {
|
|
296
|
+
id: rowId,
|
|
297
|
+
model: newRowModel
|
|
298
|
+
};
|
|
299
|
+
});
|
|
300
|
+
newRowEntries.forEach(function (row, index) {
|
|
301
|
+
var _updatedRows$splice = updatedRows.splice(firstRowToRender + index, 1, row.id),
|
|
302
|
+
_updatedRows$splice2 = _slicedToArray(_updatedRows$splice, 1),
|
|
303
|
+
replacedRowId = _updatedRows$splice2[0];
|
|
304
|
+
|
|
305
|
+
delete updatedIdRowsLookup[replacedRowId];
|
|
306
|
+
delete updatedIdToIdLookup[replacedRowId];
|
|
307
|
+
delete updatedTree[replacedRowId];
|
|
308
|
+
});
|
|
309
|
+
newRowEntries.forEach(function (row) {
|
|
310
|
+
var rowTreeNodeConfig = {
|
|
311
|
+
id: row.id,
|
|
312
|
+
parent: null,
|
|
313
|
+
depth: 0,
|
|
314
|
+
groupingKey: null,
|
|
315
|
+
groupingField: null
|
|
316
|
+
};
|
|
317
|
+
updatedIdRowsLookup[row.id] = row.model;
|
|
318
|
+
updatedIdToIdLookup[row.id] = row.id;
|
|
319
|
+
updatedTree[row.id] = rowTreeNodeConfig;
|
|
320
|
+
});
|
|
321
|
+
apiRef.current.setState(function (state) {
|
|
322
|
+
return _extends({}, state, {
|
|
323
|
+
rows: _extends({}, state.rows, {
|
|
324
|
+
idRowsLookup: updatedIdRowsLookup,
|
|
325
|
+
idToIdLookup: updatedIdToIdLookup,
|
|
326
|
+
tree: updatedTree,
|
|
327
|
+
ids: updatedRows
|
|
328
|
+
})
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
apiRef.current.publishEvent('rowsSet');
|
|
332
|
+
}, [apiRef, props.signature, props.getRowId]);
|
|
269
333
|
var rowApi = {
|
|
270
334
|
getRow: getRow,
|
|
271
335
|
getRowModels: getRowModels,
|
|
@@ -277,7 +341,8 @@ export var useGridRows = function useGridRows(apiRef, props) {
|
|
|
277
341
|
setRowChildrenExpansion: setRowChildrenExpansion,
|
|
278
342
|
getRowNode: getRowNode,
|
|
279
343
|
getRowIndexRelativeToVisibleRows: getRowIndexRelativeToVisibleRows,
|
|
280
|
-
getRowGroupChildren: getRowGroupChildren
|
|
344
|
+
getRowGroupChildren: getRowGroupChildren,
|
|
345
|
+
unstable_replaceRows: replaceRows
|
|
281
346
|
};
|
|
282
347
|
/**
|
|
283
348
|
* EVENTS
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
1
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
3
|
import * as React from 'react';
|
|
3
|
-
import { debounce } from '@mui/material/utils';
|
|
4
|
+
import { debounce, capitalize } from '@mui/material/utils';
|
|
4
5
|
import { useGridVisibleRows } from '../../utils/useGridVisibleRows';
|
|
5
6
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
6
7
|
import { useGridSelector } from '../../utils/useGridSelector';
|
|
@@ -47,7 +48,7 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
47
48
|
if (!rowsHeightLookup.current[row.id]) {
|
|
48
49
|
rowsHeightLookup.current[row.id] = {
|
|
49
50
|
sizes: {
|
|
50
|
-
|
|
51
|
+
baseCenter: rowHeightFromDensity
|
|
51
52
|
},
|
|
52
53
|
isResized: false,
|
|
53
54
|
autoHeight: false,
|
|
@@ -61,7 +62,7 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
61
62
|
needsFirstMeasurement = _rowsHeightLookup$cur.needsFirstMeasurement,
|
|
62
63
|
sizes = _rowsHeightLookup$cur.sizes;
|
|
63
64
|
var baseRowHeight = rowHeightFromDensity;
|
|
64
|
-
var existingBaseRowHeight = sizes.
|
|
65
|
+
var existingBaseRowHeight = sizes.baseCenter;
|
|
65
66
|
|
|
66
67
|
if (isResized) {
|
|
67
68
|
// Do not recalculate resized row height and use the value from the lookup
|
|
@@ -92,12 +93,23 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
92
93
|
}
|
|
93
94
|
} else {
|
|
94
95
|
rowsHeightLookup.current[row.id].needsFirstMeasurement = false;
|
|
95
|
-
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
var existingBaseSizes = Object.entries(sizes).reduce(function (acc, _ref) {
|
|
99
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
100
|
+
key = _ref2[0],
|
|
101
|
+
size = _ref2[1];
|
|
102
|
+
|
|
103
|
+
if (/^base[A-Z]/.test(key)) {
|
|
104
|
+
acc[key] = size;
|
|
105
|
+
}
|
|
96
106
|
|
|
107
|
+
return acc;
|
|
108
|
+
}, {}); // We use an object to make simple to check if a height is already added or not
|
|
97
109
|
|
|
98
|
-
var initialHeights = {
|
|
99
|
-
|
|
100
|
-
};
|
|
110
|
+
var initialHeights = _extends({}, existingBaseSizes, {
|
|
111
|
+
baseCenter: baseRowHeight
|
|
112
|
+
});
|
|
101
113
|
|
|
102
114
|
if (getRowSpacing) {
|
|
103
115
|
var _spacing$top, _spacing$bottom;
|
|
@@ -120,11 +132,21 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
120
132
|
var positions = [];
|
|
121
133
|
var currentPageTotalHeight = currentPage.rows.reduce(function (acc, row) {
|
|
122
134
|
positions.push(acc);
|
|
135
|
+
var maximumBaseSize = 0;
|
|
136
|
+
var otherSizes = 0;
|
|
123
137
|
var processedSizes = calculateRowProcessedSizes(row);
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
138
|
+
Object.entries(processedSizes).forEach(function (_ref3) {
|
|
139
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
140
|
+
size = _ref4[0],
|
|
141
|
+
value = _ref4[1];
|
|
142
|
+
|
|
143
|
+
if (/^base[A-Z]/.test(size)) {
|
|
144
|
+
maximumBaseSize = value > maximumBaseSize ? value : maximumBaseSize;
|
|
145
|
+
} else {
|
|
146
|
+
otherSizes += value;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
return acc + maximumBaseSize + otherSizes;
|
|
128
150
|
}, 0);
|
|
129
151
|
pinnedRows == null ? void 0 : (_pinnedRows$top = pinnedRows.top) == null ? void 0 : _pinnedRows$top.forEach(function (row) {
|
|
130
152
|
calculateRowProcessedSizes(row);
|
|
@@ -150,7 +172,7 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
150
172
|
}, [apiRef, currentPage.rows, rowHeightFromDensity, getRowHeightProp, getRowSpacing, getEstimatedRowHeight, pinnedRows]);
|
|
151
173
|
var getRowHeight = React.useCallback(function (rowId) {
|
|
152
174
|
var height = rowsHeightLookup.current[rowId];
|
|
153
|
-
return height ? height.sizes.
|
|
175
|
+
return height ? height.sizes.baseCenter : rowHeightFromDensity;
|
|
154
176
|
}, [rowHeightFromDensity]);
|
|
155
177
|
|
|
156
178
|
var getRowInternalSizes = function getRowInternalSizes(rowId) {
|
|
@@ -160,7 +182,7 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
160
182
|
};
|
|
161
183
|
|
|
162
184
|
var setRowHeight = React.useCallback(function (id, height) {
|
|
163
|
-
rowsHeightLookup.current[id].sizes.
|
|
185
|
+
rowsHeightLookup.current[id].sizes.baseCenter = height;
|
|
164
186
|
rowsHeightLookup.current[id].isResized = true;
|
|
165
187
|
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
166
188
|
hydrateRowsMeta();
|
|
@@ -168,15 +190,15 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
168
190
|
var debouncedHydrateRowsMeta = React.useMemo(function () {
|
|
169
191
|
return debounce(hydrateRowsMeta);
|
|
170
192
|
}, [hydrateRowsMeta]);
|
|
171
|
-
var storeMeasuredRowHeight = React.useCallback(function (id, height) {
|
|
193
|
+
var storeMeasuredRowHeight = React.useCallback(function (id, height, position) {
|
|
172
194
|
if (!rowsHeightLookup.current[id] || !rowsHeightLookup.current[id].autoHeight) {
|
|
173
195
|
return;
|
|
174
196
|
} // Only trigger hydration if the value is different, otherwise we trigger a loop
|
|
175
197
|
|
|
176
198
|
|
|
177
|
-
var needsHydration = rowsHeightLookup.current[id].sizes.
|
|
199
|
+
var needsHydration = rowsHeightLookup.current[id].sizes["base".concat(capitalize(position))] !== height;
|
|
178
200
|
rowsHeightLookup.current[id].needsFirstMeasurement = false;
|
|
179
|
-
rowsHeightLookup.current[id].sizes.
|
|
201
|
+
rowsHeightLookup.current[id].sizes["base".concat(capitalize(position))] = height;
|
|
180
202
|
|
|
181
203
|
if (needsHydration) {
|
|
182
204
|
debouncedHydrateRowsMeta();
|
|
@@ -194,7 +216,11 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
194
216
|
if (hasRowWithAutoHeight.current && index > lastMeasuredRowIndex.current) {
|
|
195
217
|
lastMeasuredRowIndex.current = index;
|
|
196
218
|
}
|
|
197
|
-
}, []);
|
|
219
|
+
}, []);
|
|
220
|
+
var resetRowHeights = React.useCallback(function () {
|
|
221
|
+
rowsHeightLookup.current = {};
|
|
222
|
+
hydrateRowsMeta();
|
|
223
|
+
}, [hydrateRowsMeta]); // The effect is used to build the rows meta data - currentPageTotalHeight and positions.
|
|
198
224
|
// Because of variable row height this is needed for the virtualization
|
|
199
225
|
|
|
200
226
|
React.useEffect(function () {
|
|
@@ -208,7 +234,8 @@ export var useGridRowsMeta = function useGridRowsMeta(apiRef, props) {
|
|
|
208
234
|
unstable_getRowHeight: getRowHeight,
|
|
209
235
|
unstable_getRowInternalSizes: getRowInternalSizes,
|
|
210
236
|
unstable_setRowHeight: setRowHeight,
|
|
211
|
-
unstable_storeRowHeightMeasurement: storeMeasuredRowHeight
|
|
237
|
+
unstable_storeRowHeightMeasurement: storeMeasuredRowHeight,
|
|
238
|
+
resetRowHeights: resetRowHeights
|
|
212
239
|
};
|
|
213
240
|
useGridApiMethod(apiRef, rowsMetaApi, 'GridRowsMetaApi');
|
|
214
241
|
};
|