Browse Source

Handle drag cancel for absolute mode

pull/2062/head
Artur Arseniev 7 years ago
parent
commit
567fd6363b
  1. 4
      src/commands/view/ComponentDrag.js
  2. 6
      src/utils/Dragger.js
  3. 27
      src/utils/Droppable.js

4
src/commands/view/ComponentDrag.js

@ -420,8 +420,8 @@ module.exports = {
const { ppfx, editor } = this; const { ppfx, editor } = this;
const methodCls = on ? 'add' : 'remove'; const methodCls = on ? 'add' : 'remove';
const canvas = this.getCanvas(); const canvas = this.getCanvas();
const classes = [`${ppfx}is__grabbing`]; // const classes = [`${ppfx}is__grabbing`];
classes.forEach(cls => canvas.classList[methodCls](cls)); // classes.forEach(cls => canvas.classList[methodCls](cls));
editor.Canvas[on ? 'startAutoscroll' : 'stopAutoscroll'](); editor.Canvas[on ? 'startAutoscroll' : 'stopAutoscroll']();
} }
}; };

6
src/utils/Dragger.js

@ -61,7 +61,7 @@ export default class Dragger {
// Scale result points, can also be a function // Scale result points, can also be a function
scale: 1 scale: 1
}; };
bindAll(this, 'drag', 'stop', 'cancel'); bindAll(this, 'drag', 'stop', 'keyHandle');
this.setOptions(opts); this.setOptions(opts);
this.delta = { x: 0, y: 0 }; this.delta = { x: 0, y: 0 };
return this; return this;
@ -85,7 +85,7 @@ export default class Dragger {
const methods = { on, off }; const methods = { on, off };
methods[method](container, 'mousemove dragover', this.drag); methods[method](container, 'mousemove dragover', this.drag);
methods[method](docs, 'mouseup dragend touchend', this.stop); methods[method](docs, 'mouseup dragend touchend', this.stop);
methods[method](docs, 'keydown', this.cancel); methods[method](docs, 'keydown', this.keyHandle);
} }
/** /**
@ -245,7 +245,7 @@ export default class Dragger {
isFunction(onEnd) && onEnd(ev, this, { cancelled }); isFunction(onEnd) && onEnd(ev, this, { cancelled });
} }
cancel(ev) { keyHandle(ev) {
if (isEscKey(ev)) { if (isEscKey(ev)) {
this.stop(ev, { cancel: 1 }); this.stop(ev, { cancel: 1 });
} }

27
src/utils/Droppable.js

@ -30,17 +30,10 @@ export default class Droppable {
} }
endDrop(cancel, ev) { endDrop(cancel, ev) {
const em = this.em; const { em, dragStop } = this;
this.counter = 0; this.counter = 0;
this.over = 0; this.over = 0;
// force out like in BlockView dragStop && dragStop(cancel);
const { sorter } = this;
if (sorter) {
cancel && (sorter.moved = 0);
sorter.endMove();
}
em.runDefault(); em.runDefault();
em.trigger('canvas:dragend', ev); em.trigger('canvas:dragend', ev);
} }
@ -68,11 +61,12 @@ export default class Droppable {
const content = em.get('dragContent') || '<br>'; const content = em.get('dragContent') || '<br>';
const container = canvas.getBody(); const container = canvas.getBody();
em.stopDefault(); em.stopDefault();
let dragStop;
if (em.inAbsoluteMode()) { if (em.inAbsoluteMode()) {
const wrapper = em.get('DomComponents').getWrapper(); const wrapper = em.get('DomComponents').getWrapper();
const target = wrapper.append({})[0]; const target = wrapper.append({})[0];
em.get('Commands').run('core:component-drag', { const dragger = em.get('Commands').run('core:component-drag', {
event: ev, event: ev,
guidesInfo: 1, guidesInfo: 1,
center: 1, center: 1,
@ -87,8 +81,9 @@ export default class Droppable {
target.remove(); target.remove();
} }
}); });
dragStop = cancel => dragger.stop(ev, { cancel });
} else { } else {
this.sorter = new utils.Sorter({ const sorter = new utils.Sorter({
em, em,
wmargin: 1, wmargin: 1,
nested: 1, nested: 1,
@ -102,10 +97,16 @@ export default class Droppable {
onEndMove: model => this.handleDragEnd(model, dt), onEndMove: model => this.handleDragEnd(model, dt),
document: canvas.getFrameEl().contentDocument document: canvas.getFrameEl().contentDocument
}); });
this.sorter.setDropContent(content); sorter.setDropContent(content);
this.sorter.startSort(); sorter.startSort();
this.sorter = sorter;
dragStop = cancel => {
cancel && (sorter.moved = 0);
sorter.endMove();
};
} }
this.dragStop = dragStop;
em.trigger('canvas:dragenter', dt, content); em.trigger('canvas:dragenter', dt, content);
} }

Loading…
Cancel
Save