fix: 粘贴时判断 canDropIn

This commit is contained in:
mario.gk 2020-12-10 20:25:27 +08:00
parent d48e6ae0c8
commit 07dab6db8e
3 changed files with 14 additions and 6 deletions

View File

@ -277,13 +277,21 @@ export class ComponentMeta {
return true;
}
checkNestingDown(my: Node, target: Node | NodeSchema) {
checkNestingDown(my: Node, target: Node | NodeSchema | NodeSchema[]) {
// 检查父子关系,直接约束型,在画布中拖拽直接掠过目标容器
if (this.childWhitelist) {
if (!isNode(target)) {
target = new Node(my.document, target);
let _target: any = target;
if (!Array.isArray(_target)) {
_target = [_target];
}
return this.childWhitelist(target, my);
return !_target.some((item: Node | NodeSchema) => {
let _item = item;
if (!isNode(_item)) {
_item = new Node(my.document, _item);
}
return this.childWhitelist && !this.childWhitelist(_item, my);
});
}
return true;
}

View File

@ -151,7 +151,7 @@ hotkey.bind(['command+v', 'ctrl+v'], (e) => {
}
clipboard.waitPasteData(e, ({ componentsTree }) => {
if (componentsTree) {
const { target, index } = designer.getSuitableInsertion() || {};
const { target, index } = designer.getSuitableInsertion(componentsTree) || {};
if (!target) {
return;
}

View File

@ -295,7 +295,7 @@ export class Designer {
/**
*
*/
getSuitableInsertion(insertNode?: Node | NodeSchema): { target: ParentalNode; index?: number } | null {
getSuitableInsertion(insertNode?: Node | NodeSchema | NodeSchema[]): { target: ParentalNode; index?: number } | null {
const activedDoc = this.project.currentDocument;
if (!activedDoc) {
return null;