Newton-Editor/src/app/common/directives/dnd.directive.ts

50 lines
1.0 KiB
TypeScript
Raw Normal View History

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);
}
}