From a6067e8d74ace33728b06126b82fcf4421c8663b Mon Sep 17 00:00:00 2001 From: "mario.gk" Date: Sat, 17 Oct 2020 14:37:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BD=8E=E6=88=90=E6=9C=AC=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E6=94=AF=E6=8C=81=E7=BB=9D=E5=AF=B9=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E5=AE=B9=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/src/builtin-simulator/bem-tools/insertion.tsx | 5 +++++ .../editor-preset-vision/src/bundle/upgrade-metadata.ts | 6 +++++- packages/types/src/metadata.ts | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx index 02e17ece5..d06fbec40 100644 --- a/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx +++ b/packages/designer/src/builtin-simulator/bem-tools/insertion.tsx @@ -122,6 +122,11 @@ export class InsertionView extends Component<{ host: BuiltinSimulatorHost }> { if (!loc) { return null; } + + // 如果是个绝对定位容器,不需要渲染插入标记 + if (loc.target.componentMeta.getMetadata().experimental?.isAbsoluteLayoutContainer) { + return null; + } const { scale, scrollX, scrollY } = host.viewport; const { edge, insertType, coverRect, nearRect, vertical } = processDetail(loc); diff --git a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts index b0931d6ca..4c74719f6 100644 --- a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts +++ b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts @@ -136,6 +136,7 @@ export interface OldPrototypeConfig { }; isContainer?: boolean; // => configure.component.isContainer + isAbsoluteLayoutContainer?: boolean; // => meta.experimental.isAbsoluteLayoutContainer 是否是绝对定位容器 isModal?: boolean; // => configure.component.isModal isFloating?: boolean; // => configure.component.isFloating descriptor?: string; // => configure.component.descriptor @@ -592,6 +593,7 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) { configure, transducers, isContainer, + isAbsoluteLayoutContainer, rectSelector, isModal, isFloating, @@ -678,7 +680,9 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) { component.nestingRule = nestingRule; // 未考虑清楚的,放在实验性段落 - const experimental: any = {}; + const experimental: any = { + isAbsoluteLayoutContainer, + }; if (context) { // for prototype.getContextInfo experimental.context = context; diff --git a/packages/types/src/metadata.ts b/packages/types/src/metadata.ts index d43495fe9..3f5365e0c 100644 --- a/packages/types/src/metadata.ts +++ b/packages/types/src/metadata.ts @@ -65,6 +65,7 @@ export interface Experimental { autoruns?: AutorunItem[]; callbacks?: Callbacks; initialChildren?: NodeData[] | ((target: SettingTarget) => NodeData[]); + isAbsoluteLayoutContainer: boolean; // 样式 及 位置,handle上必须有明确的标识以便事件路由判断,或者主动设置事件独占模式 // NWSE 是交给引擎计算放置位置,ReactElement 必须自己控制初始位置