From 2a49bb26052c3da52019b9c7645c75157da80998 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Tue, 28 Jun 2022 17:03:06 +0200 Subject: [PATCH] Improve Components.canMove --- src/dom_components/index.ts | 5 ++++- src/dom_components/model/Component.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dom_components/index.ts b/src/dom_components/index.ts index 4eddb335e..6876afdfc 100644 --- a/src/dom_components/index.ts +++ b/src/dom_components/index.ts @@ -646,7 +646,10 @@ export default class ComponentManager extends ItemManagerModule { } } - if (!droppable) return { ...result, reason: 2 }; + // Ensure the target is not inside the source + const isTargetInside = [target].concat(target.parents()).indexOf(srcModel) > -1; + + if (!droppable || isTargetInside) return { ...result, reason: 2 }; return { ...result, result: true }; } diff --git a/src/dom_components/model/Component.js b/src/dom_components/model/Component.js index da9699513..3b71c38f0 100644 --- a/src/dom_components/model/Component.js +++ b/src/dom_components/model/Component.js @@ -1052,7 +1052,7 @@ export default class Component extends StyleableModel { /** * Return all parents of the component. - * @returns {Array<[Component]>} + * @returns {Array} */ parents() { const parent = this.parent();