src/app/directives/file-drop.directive.ts
| Selector | [appFileDrop] |
No results matching.
Properties |
|
Methods |
|
Inputs |
Outputs |
HostListeners |
constructor(element: ElementRef)
|
||||||
|
Defined in src/app/directives/file-drop.directive.ts:20
|
||||||
|
Parameters :
|
| uploader | |
Type : FileUploader
|
|
|
Defined in src/app/directives/file-drop.directive.ts:16
|
|
| fileDrop | |
Type : EventEmitter<File[]>
|
|
|
Defined in src/app/directives/file-drop.directive.ts:18
|
|
| fileOver | |
Type : EventEmitter<any>
|
|
|
Defined in src/app/directives/file-drop.directive.ts:17
|
|
| dragleave |
Arguments : '$event'
|
|
Defined in src/app/directives/file-drop.directive.ts:64
|
| dragover |
Arguments : '$event'
|
|
Defined in src/app/directives/file-drop.directive.ts:50
|
|
Dragging element drag over event |
| drop |
Arguments : '$event'
|
|
Defined in src/app/directives/file-drop.directive.ts:30
|
|
Dragging element drop event |
| Protected _preventAndStop | ||||||
_preventAndStop(event: MouseEvent)
|
||||||
|
Defined in src/app/directives/file-drop.directive.ts:73
|
||||||
|
Prevent propagation trough elements and stop default behavior For particular event
Parameters :
Returns :
void
|
| onDragLeave | ||||||
onDragLeave(event: DragEvent)
|
||||||
Decorators :
@HostListener('dragleave', ['$event'])
|
||||||
|
Defined in src/app/directives/file-drop.directive.ts:64
|
||||||
|
Parameters :
Returns :
void
|
| onDragOver | ||||||
onDragOver(event: DragEvent)
|
||||||
Decorators :
@HostListener('dragover', ['$event'])
|
||||||
|
Defined in src/app/directives/file-drop.directive.ts:50
|
||||||
|
Dragging element drag over event
Parameters :
Returns :
void
|
| onDrop | ||||||
onDrop(event: DragEvent)
|
||||||
Decorators :
@HostListener('drop', ['$event'])
|
||||||
|
Defined in src/app/directives/file-drop.directive.ts:30
|
||||||
|
Dragging element drop event
Parameters :
Returns :
void
|
| Protected element |
Type : ElementRef
|
|
Defined in src/app/directives/file-drop.directive.ts:20
|
import {
Directive,
EventEmitter,
ElementRef,
HostListener,
Input,
Output
} from '@angular/core'
import { FileUploader } from '../models/FileUploader.class'
@Directive({
selector: '[appFileDrop]',
standalone: false
})
export class FileDropDirective {
@Input() uploader?: FileUploader
@Output() fileOver: EventEmitter<any> = new EventEmitter()
@Output() fileDrop: EventEmitter<File[]> = new EventEmitter<File[]>()
protected element: ElementRef
constructor(element: ElementRef) {
this.element = element
}
/**
* Dragging element drop event
*/
@HostListener('drop', ['$event'])
onDrop(event: DragEvent): void {
this._preventAndStop(event)
const files = event.dataTransfer?.files
const fileList: File[] = []
if (files) {
for (let i = 0; i < files.length; i++) {
fileList.push(files[i])
}
}
this.uploader?.addToQueue(fileList)
this.fileOver.emit(false)
this.fileDrop.emit(fileList)
}
/**
* Dragging element drag over event
*/
@HostListener('dragover', ['$event'])
onDragOver(event: DragEvent): void {
this._preventAndStop(event)
const transfer = event.dataTransfer
if (transfer) {
if (transfer.types.indexOf('Files') === -1) return
transfer.dropEffect = 'copy'
}
this.fileOver.emit(true)
}
@HostListener('dragleave', ['$event'])
onDragLeave(event: DragEvent): void {
this._preventAndStop(event)
this.fileOver.emit(false)
}
/**
* Prevent propagation trough elements and stop default behavior
* For particular event
*/
protected _preventAndStop(event: MouseEvent): void {
event.preventDefault()
event.stopPropagation()
}
}