src/lib/fileUploadInputFor.directive.ts
A material design file upload queue component.
selector | input[fileUploadInputFor], div[fileUploadInputFor] |
Properties |
Inputs |
Outputs |
HostListeners |
Accessors |
constructor(element: ElementRef)
|
||||||||
Defined in src/lib/fileUploadInputFor.directive.ts:24
|
||||||||
Parameters :
|
fileUploadInputFor
|
Type: |
Defined in src/lib/fileUploadInputFor.directive.ts:32
|
onFileSelected
|
$event type: EventEmitter<[]>
|
Defined in src/lib/fileUploadInputFor.directive.ts:24
|
change |
change()
|
Defined in src/lib/fileUploadInputFor.directive.ts:39
|
dragover |
Arguments : '$event'
|
dragover(event: any)
|
Defined in src/lib/fileUploadInputFor.directive.ts:63
|
drop |
Arguments : '$event'
|
drop(event: any)
|
Defined in src/lib/fileUploadInputFor.directive.ts:50
|
Private _element |
_element:
|
Type : HTMLElement
|
Defined in src/lib/fileUploadInputFor.directive.ts:23
|
Private _queue |
_queue:
|
Type : any
|
Default value : null
|
Defined in src/lib/fileUploadInputFor.directive.ts:22
|
fileUploadQueue |
setfileUploadQueue(value: any)
|
Defined in src/lib/fileUploadInputFor.directive.ts:32
|
import {
Component,
Directive,
ElementRef,
EventEmitter,
HostListener,
Input,
OnDestroy,
OnInit,
Output,
} from '@angular/core';
/**
* A material design file upload queue component.
*/
@Directive({
selector: 'input[fileUploadInputFor], div[fileUploadInputFor]',
})
export class FileUploadInputFor {
private _queue: any = null;
private _element: HTMLElement;
@Output() public onFileSelected: EventEmitter<File[]> = new EventEmitter<File[]>();
constructor(private element: ElementRef) {
this._element = this.element.nativeElement;
}
@Input('fileUploadInputFor')
set fileUploadQueue(value: any) {
if (value) {
this._queue = value;
}
}
@HostListener('change')
public onChange(): any {
let files = this.element.nativeElement.files;
this.onFileSelected.emit(files);
for (var i = 0; i < files.length; i++) {
this._queue.add(files[i]);
}
this.element.nativeElement.value = '';
}
@HostListener('drop', [ '$event' ])
public onDrop(event: any): any {
let files = event.dataTransfer.files;
this.onFileSelected.emit(files);
for (var i = 0; i < files.length; i++) {
this._queue.add(files[i]);
}
event.preventDefault();
event.stopPropagation();
this.element.nativeElement.value = '';
}
@HostListener('dragover', [ '$event' ])
public onDropOver(event: any): any {
event.preventDefault();
}
}