Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions js/tree-v1/tree-node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,12 @@ export class TreeNode {
this.loadChildren();
}

if (this.isLeaf()) {
// initExpanded 时,子节点没有完全加载,无法依赖 isLeaf 状态判断
this.expanded = false;
this.tree.expandedMap.delete(this.value);
}

// checked 状态依赖于子节点状态
// 因此子节点插入之后需要再次更新状态
this.updateChecked();
Expand Down Expand Up @@ -317,6 +323,9 @@ export class TreeNode {
if (list.length <= 0) {
return;
}

const wasLeaf = this.isLeaf();

if (!Array.isArray(this.children)) {
this.children = [];
}
Expand All @@ -331,6 +340,13 @@ export class TreeNode {
children.push(node);
}
});

// 如果之前是叶子节点,现在有了子节点,且 expandAll 为 true,则展开
if (wasLeaf && tree.config.expandAll && !this.isLeaf()) {
tree.expandedMap.set(this.value, true);
this.expanded = true;
}

tree.reflow(this);
this.updateRelated();
}
Expand Down
8 changes: 3 additions & 5 deletions js/tree-v1/tree-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -671,15 +671,13 @@ export class TreeStore {
*/
public setExpandedDirectly(list: TreeNodeValue[], expanded = true): void {
list.forEach((val) => {
if (expanded) {
const node = this.getNode(val);
if (!node?.isLeaf() && expanded) {
this.expandedMap.set(val, true);
} else {
this.expandedMap.delete(val);
}
const node = this.getNode(val);
if (node) {
node.afterExpanded();
}
node?.afterExpanded();
});
}

Expand Down
16 changes: 16 additions & 0 deletions js/tree/tree-node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,12 @@ export class TreeNode {
this.loadChildren();
}

if (this.isLeaf()) {
// initExpanded 时,子节点没有完全加载,无法依赖 isLeaf 状态判断
this.expanded = false;
this.tree.expandedMap.delete(this.value);
}

// 节点的选中状态同时依赖于子节点状态与父节点状态
// 因此在子节点插入之后再更新选中状态
this.initChecked();
Expand Down Expand Up @@ -314,6 +320,9 @@ export class TreeNode {
if (list.length <= 0) {
return;
}

const wasLeaf = this.isLeaf();

if (!Array.isArray(this.children)) {
this.children = [];
}
Expand All @@ -328,6 +337,13 @@ export class TreeNode {
children.push(node);
}
});

// 如果之前是叶子节点,现在有了子节点,且 expandAll 为 true,则展开
if (wasLeaf && tree.config.expandAll && !this.isLeaf()) {
tree.expandedMap.set(this.value, true);
this.expanded = true;
}

tree.reflow(this);
this.updateRelated();
}
Expand Down
8 changes: 3 additions & 5 deletions js/tree/tree-store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -644,15 +644,13 @@ export class TreeStore {
*/
public setExpandedDirectly(list: TreeNodeValue[], expanded = true): void {
list.forEach((val) => {
if (expanded) {
const node = this.getNode(val);
if (!node?.isLeaf() && expanded) {
this.expandedMap.set(val, true);
} else {
this.expandedMap.delete(val);
}
const node = this.getNode(val);
if (node) {
node.afterExpanded();
}
node?.afterExpanded();
});
}

Expand Down
3 changes: 3 additions & 0 deletions test/unit/tree/append.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -631,6 +631,9 @@ describe('tree:append', () => {
}]
}, {
value: 't2',
children: [{
value: 't2.1',
}]
}]);
await delay(0);
tree.setExpanded(['t1', 't2']);
Expand Down