diff --git a/packages/editor-core/src/config.ts b/packages/editor-core/src/config.ts index 0ba720b59..cd0f9f4ba 100644 --- a/packages/editor-core/src/config.ts +++ b/packages/editor-core/src/config.ts @@ -56,6 +56,10 @@ export interface EngineOptions { * 打开画布的锁定操作,默认值:false */ enableCanvasLock?: boolean; + /** + * 容器锁定后,容器本身是否可以设置属性,仅当画布锁定特性开启时生效, 默认值为:false + */ + enableLockedNodeSetting?: boolean; /** * 当选中节点切换时,是否停留在相同的设置 tab 上,默认值:false */ 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 8237fda86..a42bb4848 100644 --- a/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx +++ b/packages/editor-skeleton/src/components/settings/settings-primary-pane.tsx @@ -7,6 +7,7 @@ import { SettingsPane } from './settings-pane'; import { StageBox } from '../stage-box'; import { SkeletonContext } from '../../context'; import { createIcon } from '@ali/lowcode-utils'; + @observer export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any }, { shouldIgnoreRoot: boolean }> { state = { @@ -67,7 +68,7 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any const designer = editor.get('designer'); const current = designer?.currentSelection?.getNodes()?.[0]; let node: Node | null = settings.first; - const focusNode = node.document.focusNode; + const { focusNode } = node.document; const items = []; let l = 3; @@ -138,7 +139,8 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any ); } - if (settings.isLocked) { + // 当节点被锁定,且未开启锁定后容器可设置属性 + if (settings.isLocked && !engineConfig.get('enableLockedNodeSetting', false)) { return (
@@ -147,7 +149,6 @@ export class SettingsPrimaryPane extends Component<{ editor: Editor; config: any
); } - if (Array.isArray(settings.items) && settings.items.length === 0) { return (