2025-05-28 02:10:45 +00:00
|
|
|
import {
|
|
|
|
Directive,
|
|
|
|
Output,
|
|
|
|
Input,
|
|
|
|
EventEmitter,
|
|
|
|
HostBinding,
|
|
|
|
HostListener
|
|
|
|
} from '@angular/core';
|
|
|
|
|
|
|
|
import { NewtonFile } from '../types/file.type';
|
|
|
|
|
|
|
|
|
2025-06-05 05:07:21 +00:00
|
|
|
|
2025-05-28 02:10:45 +00:00
|
|
|
@Directive({
|
|
|
|
selector: '[dropzone]'
|
|
|
|
})
|
|
|
|
export class DndDirective {
|
|
|
|
@HostBinding('class.fileover') fileOver!: boolean;
|
|
|
|
@Output() fileDropped = new EventEmitter<any>();
|
|
|
|
|
2025-06-05 05:07:21 +00:00
|
|
|
@HostListener('dragover', ['$event'])
|
|
|
|
onDragOver(evt: any) {
|
2025-05-28 02:10:45 +00:00
|
|
|
evt.preventDefault();
|
|
|
|
evt.stopPropagation();
|
|
|
|
|
|
|
|
this.fileOver = true;
|
|
|
|
}
|
|
|
|
|
2025-06-05 05:07:21 +00:00
|
|
|
@HostListener('dragleave', ['$event'])
|
|
|
|
public onDragLeave(evt: any) {
|
2025-05-28 02:10:45 +00:00
|
|
|
evt.preventDefault();
|
|
|
|
evt.stopPropagation();
|
|
|
|
|
|
|
|
this.fileOver = false;
|
|
|
|
}
|
|
|
|
|
2025-06-05 05:07:21 +00:00
|
|
|
@HostListener('drop', ['$event'])
|
|
|
|
publicondrop(evt: any) {
|
2025-05-28 02:10:45 +00:00
|
|
|
evt.preventDefault();
|
|
|
|
evt.stopPropagation();
|
|
|
|
|
|
|
|
this.fileOver = false;
|
|
|
|
let files: Array<NewtonFile> = evt.dataTransfer.files;
|
|
|
|
|
|
|
|
if (files.length == 0) return;
|
|
|
|
|
|
|
|
this.fileDropped.emit(files);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|