Skip to content

Commit 48ddc4d

Browse files
liujupingJackLian
authored andcommitted
fix: fix plugin-outline-pane condition tag not update
1 parent 22d2fdd commit 48ddc4d

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

packages/plugin-outline-pane/src/controllers/tree-node.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ enum EVENT_NAMES {
3535
titleLabelChanged = 'titleLabelChanged',
3636

3737
expandableChanged = 'expandableChanged',
38+
39+
conditionChanged = 'conditionChanged',
3840
}
3941

4042
export default class TreeNode {
@@ -152,6 +154,10 @@ export default class TreeNode {
152154
return this.node.slots.map((node) => this.tree.getTreeNode(node));
153155
}
154156

157+
get condition(): boolean {
158+
return this.node.hasCondition() && !this.node.conditionGroup;
159+
}
160+
155161
get children(): TreeNode[] | null {
156162
return this.node.children?.map((node) => this.tree.getTreeNode(node)) || null;
157163
}
@@ -203,6 +209,15 @@ export default class TreeNode {
203209
this.event.off(EVENT_NAMES.titleLabelChanged, fn);
204210
};
205211
}
212+
213+
onConditionChanged(fn: (treeNode: TreeNode) => void): IPublicTypeDisposable {
214+
this.event.on(EVENT_NAMES.conditionChanged, fn);
215+
216+
return () => {
217+
this.event.off(EVENT_NAMES.conditionChanged, fn);
218+
};
219+
}
220+
206221
onExpandableChanged(fn: (expandable: boolean) => void): IPublicTypeDisposable {
207222
this.event.on(EVENT_NAMES.expandableChanged, fn);
208223
return () => {
@@ -221,6 +236,10 @@ export default class TreeNode {
221236
this.event.emit(EVENT_NAMES.titleLabelChanged, this.title);
222237
}
223238

239+
notifyConditionChanged(): void {
240+
this.event.emit(EVENT_NAMES.conditionChanged, this.condition);
241+
}
242+
224243
setHidden(flag: boolean) {
225244
if (this.node.conditionGroup) {
226245
return;

packages/plugin-outline-pane/src/controllers/tree.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ export class Tree {
3535
if (key === '___title___') {
3636
const treeNode = this.getTreeNodeById(node.id);
3737
treeNode?.notifyTitleLabelChanged();
38+
} else if (key === '___condition___') {
39+
const treeNode = this.getTreeNodeById(node.id);
40+
treeNode?.notifyConditionChanged();
3841
}
3942
});
4043
}

packages/plugin-outline-pane/src/views/tree-title.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export default class TreeTitle extends PureComponent<{
2727
state: {
2828
editing: boolean;
2929
title: string;
30+
condition?: boolean;
3031
} = {
3132
editing: false,
3233
title: '',
@@ -80,12 +81,18 @@ export default class TreeTitle extends PureComponent<{
8081
this.setState({
8182
editing: false,
8283
title: treeNode.titleLabel,
84+
condition: treeNode.condition,
8385
});
8486
treeNode.onTitleLabelChanged(() => {
8587
this.setState({
8688
title: treeNode.titleLabel,
8789
});
8890
});
91+
treeNode.onConditionChanged(() => {
92+
this.setState({
93+
condition: treeNode.condition,
94+
});
95+
});
8996
}
9097

9198
render() {
@@ -188,7 +195,7 @@ export default class TreeTitle extends PureComponent<{
188195
<Tip>{intlNode('Loop')}</Tip>
189196
</a>
190197
)}
191-
{node.hasCondition() && !node.conditionGroup && (
198+
{this.state.condition && (
192199
<a className="tree-node-tag cond">
193200
{/* todo: click todo something */}
194201
<IconCond />

0 commit comments

Comments
 (0)