@mui/x-data-grid-pro 6.4.0 → 6.6.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 +134 -2
- package/DataGridPro/DataGridPro.js +15 -3
- package/DataGridPro/useDataGridProComponent.js +3 -1
- package/DataGridPro/useDataGridProProps.js +7 -13
- package/README.md +2 -2
- package/components/DataGridProVirtualScroller.js +12 -12
- package/components/GridColumnHeaders.js +23 -3
- package/components/GridColumnMenuPinningItem.d.ts +2 -2
- package/components/GridDetailPanel.d.ts +1 -1
- package/components/GridDetailPanel.js +1 -1
- package/components/GridDetailPanelToggleCell.d.ts +2 -2
- package/components/GridRowReorderCell.d.ts +3 -3
- package/components/GridScrollArea.d.ts +10 -0
- package/components/GridScrollArea.js +140 -0
- package/components/GridTreeDataGroupingCell.d.ts +2 -2
- package/components/headerFiltering/GridHeaderFilterAdornment.d.ts +14 -0
- package/components/headerFiltering/GridHeaderFilterAdornment.js +99 -0
- package/components/headerFiltering/GridHeaderFilterCell.d.ts +20 -0
- package/components/headerFiltering/GridHeaderFilterCell.js +224 -0
- package/components/headerFiltering/GridHeaderFilterClearButton.d.ts +6 -0
- package/components/headerFiltering/GridHeaderFilterClearButton.js +25 -0
- package/components/headerFiltering/GridHeaderFilterMenu.d.ts +14 -0
- package/components/headerFiltering/GridHeaderFilterMenu.js +69 -0
- package/components/headerFiltering/constants.d.ts +3 -0
- package/components/headerFiltering/constants.js +30 -0
- package/components/headerFiltering/index.d.ts +2 -0
- package/components/headerFiltering/index.js +2 -0
- package/components/index.d.ts +1 -0
- package/components/index.js +2 -1
- package/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/hooks/features/columnHeaders/useGridColumnHeaders.d.ts +21 -0
- package/hooks/features/columnHeaders/useGridColumnHeaders.js +111 -0
- package/hooks/features/columnResize/useGridColumnResize.js +23 -13
- package/hooks/features/detailPanel/useGridDetailPanel.js +4 -6
- package/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/hooks/features/treeData/gridTreeDataUtils.js +0 -8
- package/hooks/features/treeData/useGridTreeDataPreProcessors.js +3 -0
- package/index.js +1 -1
- package/internals/index.d.ts +2 -1
- package/internals/index.js +5 -1
- package/legacy/DataGridPro/DataGridPro.js +15 -3
- package/legacy/DataGridPro/useDataGridProComponent.js +3 -1
- package/legacy/DataGridPro/useDataGridProProps.js +10 -9
- package/legacy/components/DataGridProVirtualScroller.js +12 -12
- package/legacy/components/GridColumnHeaders.js +23 -3
- package/legacy/components/GridDetailPanel.js +1 -1
- package/legacy/components/GridScrollArea.js +143 -0
- package/legacy/components/headerFiltering/GridHeaderFilterAdornment.js +97 -0
- package/legacy/components/headerFiltering/GridHeaderFilterCell.js +230 -0
- package/legacy/components/headerFiltering/GridHeaderFilterClearButton.js +24 -0
- package/legacy/components/headerFiltering/GridHeaderFilterMenu.js +68 -0
- package/legacy/components/headerFiltering/constants.js +30 -0
- package/legacy/components/headerFiltering/index.js +2 -0
- package/legacy/components/index.js +2 -1
- package/legacy/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/legacy/hooks/features/columnHeaders/useGridColumnHeaders.js +120 -0
- package/legacy/hooks/features/columnResize/useGridColumnResize.js +23 -13
- package/legacy/hooks/features/detailPanel/useGridDetailPanel.js +4 -6
- package/legacy/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/legacy/hooks/features/treeData/gridTreeDataUtils.js +0 -8
- package/legacy/hooks/features/treeData/useGridTreeDataPreProcessors.js +3 -0
- package/legacy/index.js +1 -1
- package/legacy/internals/index.js +5 -1
- package/legacy/material/icons.js +4 -1
- package/legacy/material/index.js +3 -2
- package/legacy/models/gridProSlotProps.js +1 -0
- package/legacy/utils/releaseInfo.js +1 -1
- package/legacy/utils/tree/createRowTree.js +1 -0
- package/legacy/utils/tree/insertDataRowInTree.js +4 -0
- package/legacy/utils/tree/removeDataRowFromTree.js +1 -0
- package/legacy/utils/tree/updateRowTree.js +2 -0
- package/legacy/utils/tree/utils.js +51 -12
- package/material/icons.d.ts +3 -0
- package/material/icons.js +4 -1
- package/material/index.d.ts +1 -0
- package/material/index.js +3 -2
- package/models/dataGridProProps.d.ts +16 -1
- package/models/gridProIconSlotsComponent.d.ts +5 -0
- package/models/gridProSlotProps.d.ts +9 -0
- package/models/gridProSlotProps.js +1 -0
- package/models/gridProSlotsComponent.d.ts +13 -2
- package/modern/DataGridPro/DataGridPro.js +15 -3
- package/modern/DataGridPro/useDataGridProComponent.js +3 -1
- package/modern/DataGridPro/useDataGridProProps.js +7 -13
- package/modern/components/DataGridProVirtualScroller.js +12 -12
- package/modern/components/GridColumnHeaders.js +23 -3
- package/modern/components/GridDetailPanel.js +1 -1
- package/modern/components/GridScrollArea.js +140 -0
- package/modern/components/headerFiltering/GridHeaderFilterAdornment.js +98 -0
- package/modern/components/headerFiltering/GridHeaderFilterCell.js +222 -0
- package/modern/components/headerFiltering/GridHeaderFilterClearButton.js +24 -0
- package/modern/components/headerFiltering/GridHeaderFilterMenu.js +68 -0
- package/modern/components/headerFiltering/constants.js +30 -0
- package/modern/components/headerFiltering/index.js +2 -0
- package/modern/components/index.js +2 -1
- package/modern/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/modern/hooks/features/columnHeaders/useGridColumnHeaders.js +110 -0
- package/modern/hooks/features/columnResize/useGridColumnResize.js +22 -12
- package/modern/hooks/features/detailPanel/useGridDetailPanel.js +4 -6
- package/modern/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/modern/hooks/features/treeData/gridTreeDataUtils.js +0 -8
- package/modern/hooks/features/treeData/useGridTreeDataPreProcessors.js +3 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.js +5 -1
- package/modern/material/icons.js +4 -1
- package/modern/material/index.js +3 -2
- package/modern/models/gridProSlotProps.js +1 -0
- package/modern/utils/releaseInfo.js +1 -1
- package/modern/utils/tree/createRowTree.js +1 -0
- package/modern/utils/tree/insertDataRowInTree.js +4 -0
- package/modern/utils/tree/removeDataRowFromTree.js +1 -0
- package/modern/utils/tree/updateRowTree.js +2 -0
- package/modern/utils/tree/utils.js +52 -14
- package/node/DataGridPro/DataGridPro.js +15 -3
- package/node/DataGridPro/useDataGridProComponent.js +2 -0
- package/node/DataGridPro/useDataGridProProps.js +6 -12
- package/node/components/DataGridProVirtualScroller.js +12 -12
- package/node/components/GridColumnHeaders.js +22 -3
- package/node/components/GridDetailPanel.js +2 -2
- package/node/components/GridScrollArea.js +149 -0
- package/node/components/headerFiltering/GridHeaderFilterAdornment.js +105 -0
- package/node/components/headerFiltering/GridHeaderFilterCell.js +230 -0
- package/node/components/headerFiltering/GridHeaderFilterClearButton.js +32 -0
- package/node/components/headerFiltering/GridHeaderFilterMenu.js +75 -0
- package/node/components/headerFiltering/constants.js +37 -0
- package/node/components/headerFiltering/index.js +27 -0
- package/node/components/index.js +11 -0
- package/node/constants/dataGridProDefaultSlotsComponents.js +5 -1
- package/node/hooks/features/columnHeaders/useGridColumnHeaders.js +120 -0
- package/node/hooks/features/columnResize/useGridColumnResize.js +22 -12
- package/node/hooks/features/detailPanel/useGridDetailPanel.js +4 -6
- package/node/hooks/features/rowPinning/useGridRowPinningPreProcessors.js +1 -0
- package/node/hooks/features/treeData/gridTreeDataUtils.js +0 -8
- package/node/hooks/features/treeData/useGridTreeDataPreProcessors.js +3 -0
- package/node/index.js +1 -1
- package/node/internals/index.js +16 -1
- package/node/material/icons.js +6 -2
- package/node/material/index.js +2 -1
- package/node/models/gridProSlotProps.js +5 -0
- package/node/utils/releaseInfo.js +1 -1
- package/node/utils/tree/createRowTree.js +1 -0
- package/node/utils/tree/insertDataRowInTree.js +4 -0
- package/node/utils/tree/removeDataRowFromTree.js +1 -0
- package/node/utils/tree/updateRowTree.js +2 -0
- package/node/utils/tree/utils.js +54 -15
- package/package.json +6 -6
- package/typeOverloads/modules.d.ts +13 -1
- package/utils/releaseInfo.js +1 -1
- package/utils/tree/createRowTree.d.ts +2 -0
- package/utils/tree/createRowTree.js +1 -0
- package/utils/tree/insertDataRowInTree.d.ts +5 -1
- package/utils/tree/insertDataRowInTree.js +4 -0
- package/utils/tree/removeDataRowFromTree.js +1 -0
- package/utils/tree/updateRowTree.js +2 -0
- package/utils/tree/utils.d.ts +9 -3
- package/utils/tree/utils.js +52 -14
|
@@ -19,7 +19,6 @@ const filterRowTreeFromTreeData = params => {
|
|
|
19
19
|
disableChildrenFiltering,
|
|
20
20
|
isRowMatchingFilters
|
|
21
21
|
} = params;
|
|
22
|
-
const visibleRowsLookup = {};
|
|
23
22
|
const filteredRowsLookup = {};
|
|
24
23
|
const filteredDescendantCountLookup = {};
|
|
25
24
|
const filterTreeNode = (node, isParentMatchingFilters, areAncestorsExpanded) => {
|
|
@@ -62,13 +61,7 @@ const filterRowTreeFromTreeData = params => {
|
|
|
62
61
|
break;
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
|
-
visibleRowsLookup[node.id] = shouldPassFilters && areAncestorsExpanded;
|
|
66
64
|
filteredRowsLookup[node.id] = shouldPassFilters;
|
|
67
|
-
|
|
68
|
-
// TODO: Should we keep storing the visibility status of footer independently or rely on the group visibility in the selector ?
|
|
69
|
-
if (node.type === 'group' && node.footerId != null) {
|
|
70
|
-
visibleRowsLookup[node.footerId] = shouldPassFilters && areAncestorsExpanded && !!node.childrenExpanded;
|
|
71
|
-
}
|
|
72
65
|
if (!shouldPassFilters) {
|
|
73
66
|
return 0;
|
|
74
67
|
}
|
|
@@ -86,7 +79,6 @@ const filterRowTreeFromTreeData = params => {
|
|
|
86
79
|
}
|
|
87
80
|
}
|
|
88
81
|
return {
|
|
89
|
-
visibleRowsLookup,
|
|
90
82
|
filteredRowsLookup,
|
|
91
83
|
filteredDescendantCountLookup
|
|
92
84
|
};
|
|
@@ -16,6 +16,7 @@ var _components = require("../../../components");
|
|
|
16
16
|
var _createRowTree = require("../../../utils/tree/createRowTree");
|
|
17
17
|
var _sortRowTree = require("../../../utils/tree/sortRowTree");
|
|
18
18
|
var _updateRowTree = require("../../../utils/tree/updateRowTree");
|
|
19
|
+
var _utils = require("../../../utils/tree/utils");
|
|
19
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
21
|
const _excluded = ["hideDescendantCount"];
|
|
21
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -86,6 +87,7 @@ const useGridTreeDataPreProcessors = (privateApiRef, props) => {
|
|
|
86
87
|
};
|
|
87
88
|
if (params.updates.type === 'full') {
|
|
88
89
|
return (0, _createRowTree.createRowTree)({
|
|
90
|
+
previousTree: params.previousTree,
|
|
89
91
|
nodes: params.updates.rows.map(getRowTreeBuilderNode),
|
|
90
92
|
defaultGroupingExpansionDepth: props.defaultGroupingExpansionDepth,
|
|
91
93
|
isGroupExpandedByDefault: props.isGroupExpandedByDefault,
|
|
@@ -129,6 +131,7 @@ const useGridTreeDataPreProcessors = (privateApiRef, props) => {
|
|
|
129
131
|
(0, _internals.useGridRegisterStrategyProcessor)(privateApiRef, _gridTreeDataUtils.TREE_DATA_STRATEGY, 'rowTreeCreation', createRowTreeForTreeData);
|
|
130
132
|
(0, _internals.useGridRegisterStrategyProcessor)(privateApiRef, _gridTreeDataUtils.TREE_DATA_STRATEGY, 'filtering', filterRows);
|
|
131
133
|
(0, _internals.useGridRegisterStrategyProcessor)(privateApiRef, _gridTreeDataUtils.TREE_DATA_STRATEGY, 'sorting', sortRows);
|
|
134
|
+
(0, _internals.useGridRegisterStrategyProcessor)(privateApiRef, _gridTreeDataUtils.TREE_DATA_STRATEGY, 'visibleRowsLookupCreation', _utils.getVisibleRowsLookup);
|
|
132
135
|
|
|
133
136
|
/**
|
|
134
137
|
* 1ST RENDER
|
package/node/index.js
CHANGED
package/node/internals/index.js
CHANGED
|
@@ -7,6 +7,7 @@ var _exportNames = {
|
|
|
7
7
|
DataGridProVirtualScroller: true,
|
|
8
8
|
GridColumnHeaders: true,
|
|
9
9
|
DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS: true,
|
|
10
|
+
useGridColumnHeaders: true,
|
|
10
11
|
useGridColumnResize: true,
|
|
11
12
|
columnResizeStateInitializer: true,
|
|
12
13
|
useGridColumnPinning: true,
|
|
@@ -33,7 +34,8 @@ var _exportNames = {
|
|
|
33
34
|
updateRowTree: true,
|
|
34
35
|
sortRowTree: true,
|
|
35
36
|
insertNodeInTree: true,
|
|
36
|
-
removeNodeFromTree: true
|
|
37
|
+
removeNodeFromTree: true,
|
|
38
|
+
getVisibleRowsLookup: true
|
|
37
39
|
};
|
|
38
40
|
Object.defineProperty(exports, "DATA_GRID_PRO_DEFAULT_SLOTS_COMPONENTS", {
|
|
39
41
|
enumerable: true,
|
|
@@ -95,6 +97,12 @@ Object.defineProperty(exports, "detailPanelStateInitializer", {
|
|
|
95
97
|
return _useGridDetailPanel.detailPanelStateInitializer;
|
|
96
98
|
}
|
|
97
99
|
});
|
|
100
|
+
Object.defineProperty(exports, "getVisibleRowsLookup", {
|
|
101
|
+
enumerable: true,
|
|
102
|
+
get: function () {
|
|
103
|
+
return _utils.getVisibleRowsLookup;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
98
106
|
Object.defineProperty(exports, "insertNodeInTree", {
|
|
99
107
|
enumerable: true,
|
|
100
108
|
get: function () {
|
|
@@ -125,6 +133,12 @@ Object.defineProperty(exports, "updateRowTree", {
|
|
|
125
133
|
return _updateRowTree.updateRowTree;
|
|
126
134
|
}
|
|
127
135
|
});
|
|
136
|
+
Object.defineProperty(exports, "useGridColumnHeaders", {
|
|
137
|
+
enumerable: true,
|
|
138
|
+
get: function () {
|
|
139
|
+
return _useGridColumnHeaders.useGridColumnHeaders;
|
|
140
|
+
}
|
|
141
|
+
});
|
|
128
142
|
Object.defineProperty(exports, "useGridColumnPinning", {
|
|
129
143
|
enumerable: true,
|
|
130
144
|
get: function () {
|
|
@@ -230,6 +244,7 @@ Object.keys(_internals).forEach(function (key) {
|
|
|
230
244
|
var _DataGridProVirtualScroller = require("../components/DataGridProVirtualScroller");
|
|
231
245
|
var _GridColumnHeaders = require("../components/GridColumnHeaders");
|
|
232
246
|
var _dataGridProDefaultSlotsComponents = require("../constants/dataGridProDefaultSlotsComponents");
|
|
247
|
+
var _useGridColumnHeaders = require("../hooks/features/columnHeaders/useGridColumnHeaders");
|
|
233
248
|
var _useGridColumnResize = require("../hooks/features/columnResize/useGridColumnResize");
|
|
234
249
|
var _useGridColumnPinning = require("../hooks/features/columnPinning/useGridColumnPinning");
|
|
235
250
|
var _useGridColumnPinningPreProcessors = require("../hooks/features/columnPinning/useGridColumnPinningPreProcessors");
|
package/node/material/icons.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.GridPushPinRightIcon = exports.GridPushPinLeftIcon = void 0;
|
|
6
|
+
exports.GridPushPinRightIcon = exports.GridPushPinLeftIcon = exports.GridHighlightOffIcon = void 0;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _utils = require("@mui/material/utils");
|
|
9
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -24,4 +24,8 @@ const GridPushPinLeftIcon = (0, _utils.createSvgIcon)( /*#__PURE__*/(0, _jsxRunt
|
|
|
24
24
|
fillRule: "evenodd"
|
|
25
25
|
})
|
|
26
26
|
}), 'PushPinLeft');
|
|
27
|
-
exports.GridPushPinLeftIcon = GridPushPinLeftIcon;
|
|
27
|
+
exports.GridPushPinLeftIcon = GridPushPinLeftIcon;
|
|
28
|
+
const GridHighlightOffIcon = (0, _utils.createSvgIcon)( /*#__PURE__*/(0, _jsxRuntime.jsx)("path", {
|
|
29
|
+
d: "M14.59 8L12 10.59 9.41 8 8 9.41 10.59 12 8 14.59 9.41 16 12 13.41 14.59 16 16 14.59 13.41 12 16 9.41 14.59 8zM12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"
|
|
30
|
+
}), 'HighlightOff');
|
|
31
|
+
exports.GridHighlightOffIcon = GridHighlightOffIcon;
|
package/node/material/index.js
CHANGED
|
@@ -9,7 +9,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var _icons = require("./icons");
|
|
10
10
|
const iconSlots = {
|
|
11
11
|
ColumnMenuPinRightIcon: _icons.GridPushPinRightIcon,
|
|
12
|
-
ColumnMenuPinLeftIcon: _icons.GridPushPinLeftIcon
|
|
12
|
+
ColumnMenuPinLeftIcon: _icons.GridPushPinLeftIcon,
|
|
13
|
+
HeaderFilterClearIcon: _icons.GridHighlightOffIcon
|
|
13
14
|
};
|
|
14
15
|
const materialSlots = (0, _extends2.default)({}, iconSlots);
|
|
15
16
|
var _default = materialSlots;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getReleaseInfo = void 0;
|
|
7
7
|
var _utils = require("@mui/utils");
|
|
8
8
|
const getReleaseInfo = () => {
|
|
9
|
-
const releaseInfo = "
|
|
9
|
+
const releaseInfo = "MTY4NTU3MDQwMDAwMA==";
|
|
10
10
|
if (process.env.NODE_ENV !== 'production') {
|
|
11
11
|
// A simple hack to set the value in the test environment (has no build step).
|
|
12
12
|
// eslint-disable-next-line no-useless-concat
|
|
@@ -16,6 +16,7 @@ const insertDataRowInTree = ({
|
|
|
16
16
|
id,
|
|
17
17
|
path,
|
|
18
18
|
updatedGroupsManager,
|
|
19
|
+
previousTree,
|
|
19
20
|
tree,
|
|
20
21
|
treeDepths,
|
|
21
22
|
onDuplicatePath,
|
|
@@ -48,6 +49,7 @@ const insertDataRowInTree = ({
|
|
|
48
49
|
updatedGroupsManager?.addAction(parentNodeId, 'insertChildren');
|
|
49
50
|
(0, _utils.insertNodeInTree)({
|
|
50
51
|
node: leafNode,
|
|
52
|
+
previousTree,
|
|
51
53
|
tree,
|
|
52
54
|
treeDepths
|
|
53
55
|
});
|
|
@@ -61,6 +63,7 @@ const insertDataRowInTree = ({
|
|
|
61
63
|
updatedGroupsManager?.addAction(parentNodeId, 'insertChildren');
|
|
62
64
|
(0, _utils.updateGroupNodeIdAndAutoGenerated)({
|
|
63
65
|
tree,
|
|
66
|
+
previousTree,
|
|
64
67
|
treeDepths,
|
|
65
68
|
node: existingNodeWithPartialPath,
|
|
66
69
|
updatedNode: {
|
|
@@ -100,6 +103,7 @@ const insertDataRowInTree = ({
|
|
|
100
103
|
defaultGroupingExpansionDepth,
|
|
101
104
|
isGroupExpandedByDefault
|
|
102
105
|
}),
|
|
106
|
+
previousTree,
|
|
103
107
|
tree,
|
|
104
108
|
treeDepths
|
|
105
109
|
});
|
|
@@ -54,6 +54,7 @@ const replaceDataGroupWithAutoGeneratedGroup = ({
|
|
|
54
54
|
updatedGroupsManager?.addAction(node.parent, 'removeChildren');
|
|
55
55
|
updatedGroupsManager?.addAction(node.parent, 'insertChildren');
|
|
56
56
|
(0, _utils.updateGroupNodeIdAndAutoGenerated)({
|
|
57
|
+
previousTree: null,
|
|
57
58
|
tree,
|
|
58
59
|
treeDepths,
|
|
59
60
|
node,
|
|
@@ -21,6 +21,7 @@ const updateRowTree = params => {
|
|
|
21
21
|
path
|
|
22
22
|
} = params.nodes.inserted[i];
|
|
23
23
|
(0, _insertDataRowInTree.insertDataRowInTree)({
|
|
24
|
+
previousTree: params.previousTree,
|
|
24
25
|
tree,
|
|
25
26
|
treeDepths,
|
|
26
27
|
updatedGroupsManager,
|
|
@@ -58,6 +59,7 @@ const updateRowTree = params => {
|
|
|
58
59
|
id
|
|
59
60
|
});
|
|
60
61
|
(0, _insertDataRowInTree.insertDataRowInTree)({
|
|
62
|
+
previousTree: params.previousTree,
|
|
61
63
|
tree,
|
|
62
64
|
treeDepths,
|
|
63
65
|
updatedGroupsManager,
|
package/node/utils/tree/utils.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateGroupNodeIdAndAutoGenerated = exports.removeNodeFromTree = exports.insertNodeInTree = exports.getNodePathInTree = exports.getGroupRowIdFromPath = exports.createUpdatedGroupsManager = exports.addGroupDefaultExpansion = void 0;
|
|
7
|
+
exports.updateGroupNodeIdAndAutoGenerated = exports.removeNodeFromTree = exports.insertNodeInTree = exports.getVisibleRowsLookup = exports.getNodePathInTree = exports.getGroupRowIdFromPath = exports.createUpdatedGroupsManager = exports.addGroupDefaultExpansion = void 0;
|
|
8
8
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
9
9
|
var _toPropertyKey2 = _interopRequireDefault(require("@babel/runtime/helpers/toPropertyKey"));
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
@@ -55,6 +55,7 @@ const addGroupDefaultExpansion = ({
|
|
|
55
55
|
exports.addGroupDefaultExpansion = addGroupDefaultExpansion;
|
|
56
56
|
const insertNodeInTree = ({
|
|
57
57
|
node,
|
|
58
|
+
previousTree,
|
|
58
59
|
tree,
|
|
59
60
|
treeDepths
|
|
60
61
|
}) => {
|
|
@@ -69,22 +70,25 @@ const insertNodeInTree = ({
|
|
|
69
70
|
if (node.type === 'footer') {
|
|
70
71
|
// For footers,
|
|
71
72
|
// Register the node from its parent `footerId` property.
|
|
72
|
-
|
|
73
|
-
footerId: node.id
|
|
74
|
-
});
|
|
73
|
+
parentNode.footerId = node.id;
|
|
75
74
|
} else if (node.type === 'group' || node.type === 'leaf') {
|
|
76
75
|
// For groups and leaves,
|
|
77
76
|
// Register the node from its parents `children` and `childrenFromPath` properties.
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
77
|
+
const groupingFieldName = node.groupingField ?? '__no_field__';
|
|
78
|
+
const groupingKeyName = node.groupingKey ?? '__no_key__';
|
|
79
|
+
const groupingField = parentNode.childrenFromPath?.[groupingFieldName];
|
|
80
|
+
if (previousTree !== null && previousTree[parentNode.id] === tree[parentNode.id]) {
|
|
81
|
+
parentNode.children = [...parentNode.children, node.id];
|
|
82
|
+
} else {
|
|
83
|
+
parentNode.children.push(node.id);
|
|
84
|
+
}
|
|
85
|
+
if (groupingField == null) {
|
|
86
|
+
parentNode.childrenFromPath[groupingFieldName] = {
|
|
87
|
+
[groupingKeyName.toString()]: node.id
|
|
88
|
+
};
|
|
89
|
+
} else {
|
|
90
|
+
groupingField[groupingKeyName.toString()] = node.id;
|
|
91
|
+
}
|
|
88
92
|
}
|
|
89
93
|
};
|
|
90
94
|
|
|
@@ -149,6 +153,7 @@ exports.removeNodeFromTree = removeNodeFromTree;
|
|
|
149
153
|
const updateGroupNodeIdAndAutoGenerated = ({
|
|
150
154
|
node,
|
|
151
155
|
updatedNode,
|
|
156
|
+
previousTree,
|
|
152
157
|
tree,
|
|
153
158
|
treeDepths
|
|
154
159
|
}) => {
|
|
@@ -169,6 +174,7 @@ const updateGroupNodeIdAndAutoGenerated = ({
|
|
|
169
174
|
// 3. Add the new group in the tree
|
|
170
175
|
const groupNode = (0, _extends2.default)({}, node, updatedNode);
|
|
171
176
|
insertNodeInTree({
|
|
177
|
+
previousTree,
|
|
172
178
|
node: groupNode,
|
|
173
179
|
tree,
|
|
174
180
|
treeDepths
|
|
@@ -184,4 +190,37 @@ const createUpdatedGroupsManager = () => ({
|
|
|
184
190
|
this.value[groupId][action] = true;
|
|
185
191
|
}
|
|
186
192
|
});
|
|
187
|
-
exports.createUpdatedGroupsManager = createUpdatedGroupsManager;
|
|
193
|
+
exports.createUpdatedGroupsManager = createUpdatedGroupsManager;
|
|
194
|
+
const getVisibleRowsLookup = ({
|
|
195
|
+
tree,
|
|
196
|
+
filteredRowsLookup
|
|
197
|
+
}) => {
|
|
198
|
+
if (!filteredRowsLookup) {
|
|
199
|
+
return {};
|
|
200
|
+
}
|
|
201
|
+
const visibleRowsLookup = {};
|
|
202
|
+
const handleTreeNode = (node, areAncestorsExpanded) => {
|
|
203
|
+
const isPassingFiltering = filteredRowsLookup[node.id];
|
|
204
|
+
if (node.type === 'group') {
|
|
205
|
+
node.children.forEach(childId => {
|
|
206
|
+
const childNode = tree[childId];
|
|
207
|
+
handleTreeNode(childNode, areAncestorsExpanded && !!node.childrenExpanded);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
visibleRowsLookup[node.id] = isPassingFiltering && areAncestorsExpanded;
|
|
211
|
+
|
|
212
|
+
// TODO rows v6: Should we keep storing the visibility status of footer independently or rely on the group visibility in the selector ?
|
|
213
|
+
if (node.type === 'group' && node.footerId != null) {
|
|
214
|
+
visibleRowsLookup[node.footerId] = isPassingFiltering && areAncestorsExpanded && !!node.childrenExpanded;
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
const nodes = Object.values(tree);
|
|
218
|
+
for (let i = 0; i < nodes.length; i += 1) {
|
|
219
|
+
const node = nodes[i];
|
|
220
|
+
if (node.depth === 0) {
|
|
221
|
+
handleTreeNode(node, true);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return visibleRowsLookup;
|
|
225
|
+
};
|
|
226
|
+
exports.getVisibleRowsLookup = getVisibleRowsLookup;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-data-grid-pro",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.6.0",
|
|
4
4
|
"description": "The Pro plan edition of the data grid component (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@babel/runtime": "^7.21.0",
|
|
35
|
-
"@mui/utils": "^5.
|
|
36
|
-
"@mui/x-data-grid": "6.
|
|
37
|
-
"@mui/x-license-pro": "6.0
|
|
35
|
+
"@mui/utils": "^5.13.1",
|
|
36
|
+
"@mui/x-data-grid": "6.6.0",
|
|
37
|
+
"@mui/x-license-pro": "6.6.0",
|
|
38
38
|
"@types/format-util": "^1.0.2",
|
|
39
39
|
"clsx": "^1.2.1",
|
|
40
40
|
"prop-types": "^15.8.1",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@mui/material": "^5.4.1",
|
|
45
45
|
"@mui/system": "^5.4.1",
|
|
46
|
-
"react": "^17.0.
|
|
47
|
-
"react-dom": "^17.0.
|
|
46
|
+
"react": "^17.0.0 || ^18.0.0",
|
|
47
|
+
"react-dom": "^17.0.0 || ^18.0.0"
|
|
48
48
|
},
|
|
49
49
|
"setupFiles": [
|
|
50
50
|
"<rootDir>/src/setupTests.js"
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { GridRowId, GridColumnHeaderParams, GridValidRowModel } from '@mui/x-data-grid';
|
|
2
3
|
import type { GridRowScrollEndParams, GridRowOrderChangeParams, GridFetchRowsParams } from '../models';
|
|
3
4
|
import type { GridColumnPinningInternalCache, GridPinnedColumns } from '../hooks/features/columnPinning/gridColumnPinningInterface';
|
|
4
5
|
import type { GridCanBeReorderedPreProcessingContext } from '../hooks/features/columnReorder/columnReorderInterfaces';
|
|
5
6
|
import { GridRowPinningInternalCache } from '../hooks/features/rowPinning/gridRowPinningInterface';
|
|
7
|
+
export interface GridColDefPro<R extends GridValidRowModel = any, V = any, F = V> {
|
|
8
|
+
/**
|
|
9
|
+
* Allows to render a component in the column header filter cell.
|
|
10
|
+
* @template R, V, F
|
|
11
|
+
* @param {GridColumnHeaderParams<R, V, F>} params Object containing parameters for the renderer.
|
|
12
|
+
* @returns {React.ReactNode} The element to be rendered.
|
|
13
|
+
*/
|
|
14
|
+
renderHeaderFilter?: (params: GridColumnHeaderParams<R, V, F>) => React.ReactNode;
|
|
15
|
+
}
|
|
6
16
|
export interface GridControlledStateEventLookupPro {
|
|
7
17
|
/**
|
|
8
18
|
* Fired when the open detail panels are changed.
|
|
@@ -60,4 +70,6 @@ declare module '@mui/x-data-grid' {
|
|
|
60
70
|
declare module '@mui/x-data-grid/internals' {
|
|
61
71
|
interface GridApiCaches extends GridApiCachesPro {
|
|
62
72
|
}
|
|
73
|
+
interface GridBaseColDef<R, V, F> extends GridColDefPro<R, V, F> {
|
|
74
|
+
}
|
|
63
75
|
}
|
package/utils/releaseInfo.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ponyfillGlobal } from '@mui/utils';
|
|
2
2
|
export const getReleaseInfo = () => {
|
|
3
|
-
const releaseInfo = "
|
|
3
|
+
const releaseInfo = "MTY4NTU3MDQwMDAwMA==";
|
|
4
4
|
if (process.env.NODE_ENV !== 'production') {
|
|
5
5
|
// A simple hack to set the value in the test environment (has no build step).
|
|
6
6
|
// eslint-disable-next-line no-useless-concat
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { GridRowTreeConfig } from '@mui/x-data-grid';
|
|
1
2
|
import { GridRowTreeCreationValue } from '@mui/x-data-grid/internals';
|
|
2
3
|
import { RowTreeBuilderNode, GridTreePathDuplicateHandler } from './models';
|
|
3
4
|
import { DataGridProProps } from '../../models/dataGridProProps';
|
|
4
5
|
interface CreateRowTreeParams {
|
|
6
|
+
previousTree: GridRowTreeConfig | null;
|
|
5
7
|
nodes: RowTreeBuilderNode[];
|
|
6
8
|
defaultGroupingExpansionDepth: number;
|
|
7
9
|
isGroupExpandedByDefault?: DataGridProProps['isGroupExpandedByDefault'];
|
|
@@ -20,6 +20,10 @@ interface InsertDataRowInTreeParams {
|
|
|
20
20
|
* - `tree[nodeId].children.push(newNodeId)` => invalid
|
|
21
21
|
*/
|
|
22
22
|
tree: GridRowTreeConfig;
|
|
23
|
+
/**
|
|
24
|
+
* Previous tree instance for comparison.
|
|
25
|
+
*/
|
|
26
|
+
previousTree: GridRowTreeConfig | null;
|
|
23
27
|
/**
|
|
24
28
|
* Amount of nodes at each depth of the tree.
|
|
25
29
|
* This object can be mutated.
|
|
@@ -47,5 +51,5 @@ interface InsertDataRowInTreeParams {
|
|
|
47
51
|
* - if a node exists with the same partial path, it will register this node as the ancestor of the data row.
|
|
48
52
|
* - if not, it will create an auto-generated node and register it as ancestor of the data row.
|
|
49
53
|
*/
|
|
50
|
-
export declare const insertDataRowInTree: ({ id, path, updatedGroupsManager, tree, treeDepths, onDuplicatePath, isGroupExpandedByDefault, defaultGroupingExpansionDepth, }: InsertDataRowInTreeParams) => void;
|
|
54
|
+
export declare const insertDataRowInTree: ({ id, path, updatedGroupsManager, previousTree, tree, treeDepths, onDuplicatePath, isGroupExpandedByDefault, defaultGroupingExpansionDepth, }: InsertDataRowInTreeParams) => void;
|
|
51
55
|
export {};
|
|
@@ -10,6 +10,7 @@ export const insertDataRowInTree = ({
|
|
|
10
10
|
id,
|
|
11
11
|
path,
|
|
12
12
|
updatedGroupsManager,
|
|
13
|
+
previousTree,
|
|
13
14
|
tree,
|
|
14
15
|
treeDepths,
|
|
15
16
|
onDuplicatePath,
|
|
@@ -43,6 +44,7 @@ export const insertDataRowInTree = ({
|
|
|
43
44
|
updatedGroupsManager == null ? void 0 : updatedGroupsManager.addAction(parentNodeId, 'insertChildren');
|
|
44
45
|
insertNodeInTree({
|
|
45
46
|
node: leafNode,
|
|
47
|
+
previousTree,
|
|
46
48
|
tree,
|
|
47
49
|
treeDepths
|
|
48
50
|
});
|
|
@@ -56,6 +58,7 @@ export const insertDataRowInTree = ({
|
|
|
56
58
|
updatedGroupsManager == null ? void 0 : updatedGroupsManager.addAction(parentNodeId, 'insertChildren');
|
|
57
59
|
updateGroupNodeIdAndAutoGenerated({
|
|
58
60
|
tree,
|
|
61
|
+
previousTree,
|
|
59
62
|
treeDepths,
|
|
60
63
|
node: existingNodeWithPartialPath,
|
|
61
64
|
updatedNode: {
|
|
@@ -95,6 +98,7 @@ export const insertDataRowInTree = ({
|
|
|
95
98
|
defaultGroupingExpansionDepth,
|
|
96
99
|
isGroupExpandedByDefault
|
|
97
100
|
}),
|
|
101
|
+
previousTree,
|
|
98
102
|
tree,
|
|
99
103
|
treeDepths
|
|
100
104
|
});
|
|
@@ -48,6 +48,7 @@ const replaceDataGroupWithAutoGeneratedGroup = ({
|
|
|
48
48
|
updatedGroupsManager == null ? void 0 : updatedGroupsManager.addAction(node.parent, 'removeChildren');
|
|
49
49
|
updatedGroupsManager == null ? void 0 : updatedGroupsManager.addAction(node.parent, 'insertChildren');
|
|
50
50
|
updateGroupNodeIdAndAutoGenerated({
|
|
51
|
+
previousTree: null,
|
|
51
52
|
tree,
|
|
52
53
|
treeDepths,
|
|
53
54
|
node,
|
|
@@ -14,6 +14,7 @@ export const updateRowTree = params => {
|
|
|
14
14
|
path
|
|
15
15
|
} = params.nodes.inserted[i];
|
|
16
16
|
insertDataRowInTree({
|
|
17
|
+
previousTree: params.previousTree,
|
|
17
18
|
tree,
|
|
18
19
|
treeDepths,
|
|
19
20
|
updatedGroupsManager,
|
|
@@ -51,6 +52,7 @@ export const updateRowTree = params => {
|
|
|
51
52
|
id
|
|
52
53
|
});
|
|
53
54
|
insertDataRowInTree({
|
|
55
|
+
previousTree: params.previousTree,
|
|
54
56
|
tree,
|
|
55
57
|
treeDepths,
|
|
56
58
|
updatedGroupsManager,
|
package/utils/tree/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GridChildrenFromPathLookup, GridGroupNode, GridRowId, GridRowTreeConfig, GridTreeNode } from '@mui/x-data-grid';
|
|
1
|
+
import { GridChildrenFromPathLookup, GridFilterState, GridGroupNode, GridRowId, GridRowTreeConfig, GridRowsState, GridTreeNode } from '@mui/x-data-grid';
|
|
2
2
|
import { GridTreeDepths, GridRowTreeUpdatedGroupsManager } from '@mui/x-data-grid/internals';
|
|
3
3
|
import { RowTreeBuilderGroupingCriterion } from './models';
|
|
4
4
|
import { DataGridProProps } from '../../models/dataGridProProps';
|
|
@@ -41,8 +41,9 @@ export declare const addGroupDefaultExpansion: ({ node, isGroupExpandedByDefault
|
|
|
41
41
|
/**
|
|
42
42
|
* Insert a node in the tree
|
|
43
43
|
*/
|
|
44
|
-
export declare const insertNodeInTree: ({ node, tree, treeDepths, }: {
|
|
44
|
+
export declare const insertNodeInTree: ({ node, previousTree, tree, treeDepths, }: {
|
|
45
45
|
node: GridTreeNode;
|
|
46
|
+
previousTree: GridRowTreeConfig | null;
|
|
46
47
|
tree: GridRowTreeConfig;
|
|
47
48
|
treeDepths: GridTreeDepths;
|
|
48
49
|
}) => void;
|
|
@@ -57,10 +58,15 @@ export declare const removeNodeFromTree: ({ node, tree, treeDepths, }: {
|
|
|
57
58
|
/**
|
|
58
59
|
* Updates the `id` and `isAutoGenerated` properties of a group node.
|
|
59
60
|
*/
|
|
60
|
-
export declare const updateGroupNodeIdAndAutoGenerated: ({ node, updatedNode, tree, treeDepths, }: {
|
|
61
|
+
export declare const updateGroupNodeIdAndAutoGenerated: ({ node, updatedNode, previousTree, tree, treeDepths, }: {
|
|
62
|
+
previousTree: GridRowTreeConfig | null;
|
|
61
63
|
node: GridGroupNode;
|
|
62
64
|
updatedNode: Pick<GridGroupNode, 'id' | 'isAutoGenerated'>;
|
|
63
65
|
tree: GridRowTreeConfig;
|
|
64
66
|
treeDepths: GridTreeDepths;
|
|
65
67
|
}) => void;
|
|
66
68
|
export declare const createUpdatedGroupsManager: () => GridRowTreeUpdatedGroupsManager;
|
|
69
|
+
export declare const getVisibleRowsLookup: ({ tree, filteredRowsLookup, }: {
|
|
70
|
+
tree: GridRowsState['tree'];
|
|
71
|
+
filteredRowsLookup: GridFilterState['filteredRowsLookup'];
|
|
72
|
+
}) => Record<GridRowId, boolean>;
|
package/utils/tree/utils.js
CHANGED
|
@@ -45,6 +45,7 @@ export const addGroupDefaultExpansion = ({
|
|
|
45
45
|
*/
|
|
46
46
|
export const insertNodeInTree = ({
|
|
47
47
|
node,
|
|
48
|
+
previousTree,
|
|
48
49
|
tree,
|
|
49
50
|
treeDepths
|
|
50
51
|
}) => {
|
|
@@ -60,23 +61,26 @@ export const insertNodeInTree = ({
|
|
|
60
61
|
if (node.type === 'footer') {
|
|
61
62
|
// For footers,
|
|
62
63
|
// Register the node from its parent `footerId` property.
|
|
63
|
-
|
|
64
|
-
footerId: node.id
|
|
65
|
-
});
|
|
64
|
+
parentNode.footerId = node.id;
|
|
66
65
|
} else if (node.type === 'group' || node.type === 'leaf') {
|
|
67
66
|
var _groupingField, _groupingKey, _parentNode$childrenF;
|
|
68
67
|
// For groups and leaves,
|
|
69
68
|
// Register the node from its parents `children` and `childrenFromPath` properties.
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
69
|
+
const groupingFieldName = (_groupingField = node.groupingField) != null ? _groupingField : '__no_field__';
|
|
70
|
+
const groupingKeyName = (_groupingKey = node.groupingKey) != null ? _groupingKey : '__no_key__';
|
|
71
|
+
const groupingField = (_parentNode$childrenF = parentNode.childrenFromPath) == null ? void 0 : _parentNode$childrenF[groupingFieldName];
|
|
72
|
+
if (previousTree !== null && previousTree[parentNode.id] === tree[parentNode.id]) {
|
|
73
|
+
parentNode.children = [...parentNode.children, node.id];
|
|
74
|
+
} else {
|
|
75
|
+
parentNode.children.push(node.id);
|
|
76
|
+
}
|
|
77
|
+
if (groupingField == null) {
|
|
78
|
+
parentNode.childrenFromPath[groupingFieldName] = {
|
|
79
|
+
[groupingKeyName.toString()]: node.id
|
|
80
|
+
};
|
|
81
|
+
} else {
|
|
82
|
+
groupingField[groupingKeyName.toString()] = node.id;
|
|
83
|
+
}
|
|
80
84
|
}
|
|
81
85
|
};
|
|
82
86
|
|
|
@@ -140,6 +144,7 @@ export const removeNodeFromTree = ({
|
|
|
140
144
|
export const updateGroupNodeIdAndAutoGenerated = ({
|
|
141
145
|
node,
|
|
142
146
|
updatedNode,
|
|
147
|
+
previousTree,
|
|
143
148
|
tree,
|
|
144
149
|
treeDepths
|
|
145
150
|
}) => {
|
|
@@ -160,6 +165,7 @@ export const updateGroupNodeIdAndAutoGenerated = ({
|
|
|
160
165
|
// 3. Add the new group in the tree
|
|
161
166
|
const groupNode = _extends({}, node, updatedNode);
|
|
162
167
|
insertNodeInTree({
|
|
168
|
+
previousTree,
|
|
163
169
|
node: groupNode,
|
|
164
170
|
tree,
|
|
165
171
|
treeDepths
|
|
@@ -173,4 +179,36 @@ export const createUpdatedGroupsManager = () => ({
|
|
|
173
179
|
}
|
|
174
180
|
this.value[groupId][action] = true;
|
|
175
181
|
}
|
|
176
|
-
});
|
|
182
|
+
});
|
|
183
|
+
export const getVisibleRowsLookup = ({
|
|
184
|
+
tree,
|
|
185
|
+
filteredRowsLookup
|
|
186
|
+
}) => {
|
|
187
|
+
if (!filteredRowsLookup) {
|
|
188
|
+
return {};
|
|
189
|
+
}
|
|
190
|
+
const visibleRowsLookup = {};
|
|
191
|
+
const handleTreeNode = (node, areAncestorsExpanded) => {
|
|
192
|
+
const isPassingFiltering = filteredRowsLookup[node.id];
|
|
193
|
+
if (node.type === 'group') {
|
|
194
|
+
node.children.forEach(childId => {
|
|
195
|
+
const childNode = tree[childId];
|
|
196
|
+
handleTreeNode(childNode, areAncestorsExpanded && !!node.childrenExpanded);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
visibleRowsLookup[node.id] = isPassingFiltering && areAncestorsExpanded;
|
|
200
|
+
|
|
201
|
+
// TODO rows v6: Should we keep storing the visibility status of footer independently or rely on the group visibility in the selector ?
|
|
202
|
+
if (node.type === 'group' && node.footerId != null) {
|
|
203
|
+
visibleRowsLookup[node.footerId] = isPassingFiltering && areAncestorsExpanded && !!node.childrenExpanded;
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
const nodes = Object.values(tree);
|
|
207
|
+
for (let i = 0; i < nodes.length; i += 1) {
|
|
208
|
+
const node = nodes[i];
|
|
209
|
+
if (node.depth === 0) {
|
|
210
|
+
handleTreeNode(node, true);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return visibleRowsLookup;
|
|
214
|
+
};
|