From b247a580751b626017c44ddac2981b9dff6772df Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Fri, 24 May 2024 19:36:18 +0400 Subject: [PATCH] Add index to the draggable/droppable sorter validation. --- src/utils/Sorter.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/utils/Sorter.ts b/src/utils/Sorter.ts index b87a14226..9bf3e92a9 100644 --- a/src/utils/Sorter.ts +++ b/src/utils/Sorter.ts @@ -674,11 +674,12 @@ export default class Sorter extends View { * @return {Boolean} */ validTarget(trg: HTMLElement, src?: HTMLElement) { + const pos = this.lastPos; const trgModel = this.getTargetModel(trg); const srcModel = this.getSourceModel(src, { target: trgModel }); // @ts-ignore - src = srcModel && srcModel.view && srcModel.view.el; - trg = trgModel && trgModel.view && trgModel.view.el; + src = srcModel?.view?.el; + trg = trgModel?.view?.el; let result = { valid: true, src, @@ -696,10 +697,12 @@ export default class Sorter extends View { return result; } + const index = pos ? (pos.method === 'after' ? pos.indexEl + 1 : pos.indexEl) : trgModel.components().length; + // Check if the source is draggable in target let draggable = srcModel.get('draggable'); if (isFunction(draggable)) { - const res = draggable(srcModel, trgModel); + const res = draggable(srcModel, trgModel, index); result.dragInfo = res; result.draggable = res; draggable = res; @@ -713,7 +716,7 @@ export default class Sorter extends View { // Check if the target could accept the source let droppable = trgModel.get('droppable'); if (isFunction(droppable)) { - const res = droppable(srcModel, trgModel); + const res = droppable(srcModel, trgModel, index); result.droppable = res; result.dropInfo = res; droppable = res;