unicorn-components
Version:
<a target="_blank" href="https://getunicorn.io"><img src="https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2017/Jul/07/2615006260-5-nitsnetsstudios-ondemand-UNI_avatar.png" align="left"></a>
41 lines (36 loc) • 1.24 kB
text/typescript
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
export class UniDroppableDirective {
dragenter = this.onDragEnter;
dragleave = this.onDragLeave;
uniDragenter: EventEmitter<{ dataTransfer: DataTransfer, sourceEvent: DragEvent }> = new EventEmitter();
uniDragleave: EventEmitter<{ dataTransfer: DataTransfer, sourceEvent: DragEvent }> = new EventEmitter();
first = false;
second = false;
onDragEnter(e: DragEvent) {
if (this.first) {
return this.second = true;
} else {
this.first = true;
this.uniDragenter.emit({
dataTransfer: e.dataTransfer,
sourceEvent: e
});
}
}
onDragLeave(e: DragEvent) {
if (this.second) {
this.second = false;
} else if (this.first) {
this.first = false;
}
if (!this.first && !this.second) {
this.uniDragleave.emit({
dataTransfer: e.dataTransfer,
sourceEvent: e
});
}
}
}