Browse Source

Fix drag and drop from outside of the canvas

pull/2062/head
Artur Arseniev 7 years ago
parent
commit
7c9c6bde3f
  1. 19
      src/utils/Sorter.js

19
src/utils/Sorter.js

@ -353,6 +353,7 @@ module.exports = Backbone.View.extend({
const isTextable = src => const isTextable = src =>
src && src &&
target && target &&
src.opt &&
src.opt.avoidChildren && src.opt.avoidChildren &&
this.isTextableActive(src, target); this.isTextableActive(src, target);
@ -370,7 +371,8 @@ module.exports = Backbone.View.extend({
}; };
const tempModel = comps.add(dropContent, { ...opts, temporary: 1 }); const tempModel = comps.add(dropContent, { ...opts, temporary: 1 });
dropModel = comps.remove(tempModel, opts); dropModel = comps.remove(tempModel, opts);
this.dropModel = dropModel instanceof Array ? dropModel[0] : dropModel; dropModel = dropModel instanceof Array ? dropModel[0] : dropModel;
this.dropModel = dropModel;
if (isTextable(dropModel)) { if (isTextable(dropModel)) {
return this.getSourceModel(src, { target, avoidChildren: 0 }); return this.getSourceModel(src, { target, avoidChildren: 0 });
@ -489,7 +491,7 @@ module.exports = Backbone.View.extend({
}, },
isTextableActive(src, trg) { isTextableActive(src, trg) {
return src && src.get('textable') && trg && trg.is('text'); return src && src.get && src.get('textable') && trg && trg.is('text');
}, },
disableTextable() { disableTextable() {
@ -1039,7 +1041,7 @@ module.exports = Backbone.View.extend({
* @param {Object} pos Object with position coordinates * @param {Object} pos Object with position coordinates
* */ * */
move(dst, src, pos) { move(dst, src, pos) {
const { em, activeTextModel } = this; const { em, activeTextModel, dropContent } = this;
const srcEl = getElement(src); const srcEl = getElement(src);
em && em.trigger('component:dragEnd:before', dst, srcEl, pos); // @depricated em && em.trigger('component:dragEnd:before', dst, srcEl, pos); // @depricated
var warns = []; var warns = [];
@ -1052,7 +1054,6 @@ module.exports = Backbone.View.extend({
var draggable = validResult.draggable; var draggable = validResult.draggable;
var dropInfo = validResult.dropInfo; var dropInfo = validResult.dropInfo;
var dragInfo = validResult.dragInfo; var dragInfo = validResult.dragInfo;
var dropContent = this.dropContent;
const { trgModel } = validResult; const { trgModel } = validResult;
droppable = trgModel instanceof Backbone.Collection ? 1 : droppable; droppable = trgModel instanceof Backbone.Collection ? 1 : droppable;
const isTextableActive = this.isTextableActive(model, trgModel); const isTextableActive = this.isTextableActive(model, trgModel);
@ -1114,7 +1115,15 @@ module.exports = Backbone.View.extend({
} }
em && em.trigger('component:dragEnd', targetCollection, modelToDrop, warns); // @depricated em && em.trigger('component:dragEnd', targetCollection, modelToDrop, warns); // @depricated
em && em.trigger('sorter:drag:end', targetCollection, modelToDrop, warns); em &&
em.trigger('sorter:drag:end', {
targetCollection,
modelToDrop,
warns,
validResult,
dst,
srcEl
});
return created; return created;
}, },

Loading…
Cancel
Save