diff --git a/packages/designer/src/component-meta.ts b/packages/designer/src/component-meta.ts index 27b145d68..64c1239d7 100644 --- a/packages/designer/src/component-meta.ts +++ b/packages/designer/src/component-meta.ts @@ -208,13 +208,13 @@ export class ComponentMeta { return result as any; } - isRootComponent() { - return this.componentName === 'Page' || this.componentName === 'Block' || this.componentName === 'Component'; + isRootComponent(includeBlock: boolean = true) { + return this.componentName === 'Page' || this.componentName === 'Component' || (includeBlock && this.componentName === 'Block'); } @computed get availableActions() { let { disableBehaviors, actions } = this._transformedMetadata?.configure.component || {}; - const disabled = ensureAList(disableBehaviors) || (this.isRootComponent() ? ['copy', 'remove'] : null); + const disabled = ensureAList(disableBehaviors) || (this.isRootComponent(false) ? ['copy', 'remove'] : null); actions = builtinComponentActions.concat(this.designer.getGlobalComponentActions() || [], actions || []); if (disabled) { diff --git a/packages/designer/src/document/document-model.ts b/packages/designer/src/document/document-model.ts index dbd9f5713..77f3cee83 100644 --- a/packages/designer/src/document/document-model.ts +++ b/packages/designer/src/document/document-model.ts @@ -105,8 +105,6 @@ export class DocumentModel { if (!schema) { this._blank = true; - } else { - this.id = project.getSchema()?.id || this.id; } this.rootNode = this.createNode( diff --git a/packages/editor-preset-vision/src/pages.ts b/packages/editor-preset-vision/src/pages.ts index 65b2cd05c..06bbd957b 100644 --- a/packages/editor-preset-vision/src/pages.ts +++ b/packages/editor-preset-vision/src/pages.ts @@ -1,6 +1,6 @@ -import { designer } from './editor'; import { RootSchema } from '@ali/lowcode-types'; import { DocumentModel } from '@ali/lowcode-designer'; +import { designer } from './editor'; import NodeCacheVisitor from './rootNodeVisitor'; const { project } = designer; @@ -86,7 +86,12 @@ const pages = Object.assign(project, { page.active(); }, getCurrentPage() { - return project.currentDocument; + if (!project.currentDocument) { + return null; + } + const currentPage = { ...project.currentDocument, id: project.getSchema().id }; + Object.setPrototypeOf(currentPage, Object.getPrototypeOf(project.currentDocument || {})); + return currentPage; }, onPagesChange() { // noop @@ -101,7 +106,7 @@ const pages = Object.assign(project, { Object.defineProperty(pages, 'currentPage', { get() { - return project.currentDocument; + return pages.getCurrentPage(); } })