diff --git a/packages/designer/src/designer/setting/setting-top-entry.ts b/packages/designer/src/designer/setting/setting-top-entry.ts index 6e03cc66a..1439e464a 100644 --- a/packages/designer/src/designer/setting/setting-top-entry.ts +++ b/packages/designer/src/designer/setting/setting-top-entry.ts @@ -54,6 +54,10 @@ export class SettingTopEntry implements SettingEntry { return this.nodes.length === 1; } + get isLocked(): boolean { + return this.first.isLocked; + } + /** * 多个 */ diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 95175a888..a634a8386 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -44,7 +44,7 @@ import { NodeRemoveOptions } from '../../types'; * conditionGroup use for condition, for exclusive * title display on outline * ignored ignore this node will not publish to render, but will store - * isLocked can not select/hover/ item on canvas but can control on outline + * isLocked can not select/hover/ item on canvas and outline * hidden not visible on canvas * slotArgs like loopArgs, for slot node * @@ -374,6 +374,20 @@ export class Node { } } + /** + * 锁住当前节点 + */ + lock(flag = true) { + this.setExtraProp('isLocked', flag); + } + + /** + * 获取当前节点的锁定状态 + */ + get isLocked(): boolean { + return !!this.getExtraProp('isLocked', false)?.getValue(); + } + /** * 选择当前节点 */ diff --git a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx index ee24c6dcd..c95f3e7d1 100644 --- a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx @@ -123,7 +123,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any render() { const { settings } = this.main; - const editor = globalContext.get(Editor); + const editor = globalContext.get('editor'); if (!settings) { // 未选中节点,提示选中 或者 显示根节点设置 return ( @@ -135,6 +135,16 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any ); } + if (settings.isLocked) { + return ( +
+
+

该节点已被锁定,无法配置

+
+
+ ); + } + if (Array.isArray(settings.items) && settings.items.length === 0) { return (
diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts index 46f792f3e..cc07579bb 100644 --- a/packages/engine/src/engine-core.ts +++ b/packages/engine/src/engine-core.ts @@ -175,7 +175,7 @@ plugins.register((ctx: ILowCodePluginContext) => { }, }; }); -export async function init(container?: Element, options?: EngineOptions) { +export async function init(container?: HTMLElement, options?: EngineOptions) { let engineOptions = null; let engineContainer = null; if (isPlainObject(container)) {