Browse Source

Add index to the draggable/droppable sorter validation.

pull/5907/head
Artur Arseniev 2 years ago
parent
commit
b247a58075
  1. 11
      src/utils/Sorter.ts

11
src/utils/Sorter.ts

@ -674,11 +674,12 @@ export default class Sorter extends View {
* @return {Boolean} * @return {Boolean}
*/ */
validTarget(trg: HTMLElement, src?: HTMLElement) { validTarget(trg: HTMLElement, src?: HTMLElement) {
const pos = this.lastPos;
const trgModel = this.getTargetModel(trg); const trgModel = this.getTargetModel(trg);
const srcModel = this.getSourceModel(src, { target: trgModel }); const srcModel = this.getSourceModel(src, { target: trgModel });
// @ts-ignore // @ts-ignore
src = srcModel && srcModel.view && srcModel.view.el; src = srcModel?.view?.el;
trg = trgModel && trgModel.view && trgModel.view.el; trg = trgModel?.view?.el;
let result = { let result = {
valid: true, valid: true,
src, src,
@ -696,10 +697,12 @@ export default class Sorter extends View {
return result; return result;
} }
const index = pos ? (pos.method === 'after' ? pos.indexEl + 1 : pos.indexEl) : trgModel.components().length;
// Check if the source is draggable in target // Check if the source is draggable in target
let draggable = srcModel.get('draggable'); let draggable = srcModel.get('draggable');
if (isFunction(draggable)) { if (isFunction(draggable)) {
const res = draggable(srcModel, trgModel); const res = draggable(srcModel, trgModel, index);
result.dragInfo = res; result.dragInfo = res;
result.draggable = res; result.draggable = res;
draggable = res; draggable = res;
@ -713,7 +716,7 @@ export default class Sorter extends View {
// Check if the target could accept the source // Check if the target could accept the source
let droppable = trgModel.get('droppable'); let droppable = trgModel.get('droppable');
if (isFunction(droppable)) { if (isFunction(droppable)) {
const res = droppable(srcModel, trgModel); const res = droppable(srcModel, trgModel, index);
result.droppable = res; result.droppable = res;
result.dropInfo = res; result.dropInfo = res;
droppable = res; droppable = res;

Loading…
Cancel
Save