diff --git a/packages/editor-skeleton/src/widget/panel.ts b/packages/editor-skeleton/src/widget/panel.ts index 249c3688c..3de55a643 100644 --- a/packages/editor-skeleton/src/widget/panel.ts +++ b/packages/editor-skeleton/src/widget/panel.ts @@ -78,7 +78,7 @@ export default class Panel implements IWidget { private container?: WidgetContainer; - private parent?: WidgetContainer; + @obx.ref private parent?: WidgetContainer; constructor(readonly skeleton: Skeleton, readonly config: PanelConfig) { makeObservable(this); diff --git a/packages/plugin-outline-pane/src/tree-node.ts b/packages/plugin-outline-pane/src/tree-node.ts index 662501748..77c1132d4 100644 --- a/packages/plugin-outline-pane/src/tree-node.ts +++ b/packages/plugin-outline-pane/src/tree-node.ts @@ -28,8 +28,8 @@ export default class TreeNode { return this.node.zLevel; } - isRoot() { - return this.tree.root === this; + isRoot(includeOriginalRoot = false) { + return this.tree.root === this || (includeOriginalRoot && this.tree.document.rootNode === this.node); } /** @@ -60,7 +60,7 @@ export default class TreeNode { @obx.ref private _expanded = false; get expanded(): boolean { - return this.isRoot() || (this.expandable && this._expanded); + return this.isRoot(true) || (this.expandable && this._expanded); } setExpanded(value: boolean) { diff --git a/packages/plugin-outline-pane/src/views/root-tree-node.tsx b/packages/plugin-outline-pane/src/views/root-tree-node.tsx index 198620b2d..46d1d52f1 100644 --- a/packages/plugin-outline-pane/src/views/root-tree-node.tsx +++ b/packages/plugin-outline-pane/src/views/root-tree-node.tsx @@ -1,10 +1,10 @@ import { Component } from 'react'; import classNames from 'classnames'; import { observer } from '@ali/lowcode-editor-core'; +import { ModalNodesManager } from '@ali/lowcode-designer'; import TreeNode from '../tree-node'; import TreeTitle from './tree-title'; import TreeBranches from './tree-branches'; -import { ModalNodesManager } from '@ali/lowcode-designer'; import { IconEyeClose } from '../icons/eye-close'; @observer @@ -24,7 +24,9 @@ class ModalTreeNodeView extends Component<{ treeNode: TreeNode }> { render() { const { treeNode } = this.props; - const modalNodes = treeNode.children?.filter((item) => { + // 当指定了新的根节点时,要从原始的根节点去获取模态节点 + const rootTreeNode = treeNode.tree.getTreeNode(treeNode.document.rootNode!); + const modalNodes = rootTreeNode.children?.filter((item) => { return item.node.componentMeta.isModal; }); if (!modalNodes || modalNodes.length === 0) { @@ -44,7 +46,7 @@ class ModalTreeNodeView extends Component<{ treeNode: TreeNode }> {
- +
);