As soon as you start dragging an element, a drag event is fired
Whenever an element is cloned because copy: true, a cloned event fires
The shadow event fires whenever the placeholder showing where an element would be dropped is moved to a different container or position
A drop event is fired whenever an element is dropped anywhere other than its origin (where it was initially dragged from)
If the element gets removed from the DOM as a result of dropping outside of any containers, a remove event gets fired
A cancel event is fired when an element would be dropped onto an invalid target, but retains its original placement instead
The over event fires when you drag something over a container, and out fires when you drag it away from the container
Lastly, a dragend event is fired whenever a drag operation ends, regardless of whether it ends in a cancellation, removal, or drop
<div [dragula]='"second-bag"'></div>
<div [dragula]='"second-bag"'></div>
class ExampleB {
constructor(private dragulaService: DragulaService) {
dragulaService.drag.subscribe((value) => {
this.onDrag(value.slice(1));
});
dragulaService.drop.subscribe((value) => {
this.onDrop(value.slice(1));
});
dragulaService.over.subscribe((value) => {
this.onOver(value.slice(1));
});
dragulaService.out.subscribe((value) => {
this.onOut(value.slice(1));
});
}
private hasClass(el: any, name: string) {
return new RegExp('(?:^|\\s+)' + name + '(?:\\s+|$)').test(el.className);
}
private addClass(el: any, name: string) {
if (!this.hasClass(el, name)) {
el.className = el.className ? [el.className, name].join(' ') : name;
}
}
private removeClass(el: any, name: string) {
if (this.hasClass(el, name)) {
el.className = el.className.replace(new RegExp('(?:^|\\s+)' + name + '(?:\\s+|$)', 'g'), '');
}
}
private onDrag(args) {
let [e, el] = args;
this.removeClass(e, 'ex-moved');
}
private onDrop(args) {
let [e, el] = args;
this.addClass(e, 'ex-moved');
}
private onOver(args) {
let [e, el, container] = args;
this.addClass(el, 'ex-over');
}
private onOut(args) {
let [e, el, container] = args;
this.removeClass(el, 'ex-over');
}
}