File

src/lib/fileUploadInputFor.directive.ts

Description

A material design file upload queue component.

Metadata

selector input[fileUploadInputFor], div[fileUploadInputFor]

Index

Properties
Inputs
Outputs
HostListeners
Accessors

Constructor

constructor(element: ElementRef)
Parameters :
Name Type Optional Description
element ElementRef

Inputs

fileUploadInputFor

Type: any

Outputs

onFileSelected $event type: EventEmitter<[]>

HostListeners

change
change()
dragover
Arguments : '$event'
dragover(event: any)
drop
Arguments : '$event'
drop(event: any)

Properties

Private _element
_element: HTMLElement
Type : HTMLElement
Private _queue
_queue: any
Type : any
Default value : null

Accessors

fileUploadQueue
setfileUploadQueue(value: any)
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();
    }

  }

results matching ""

    No results matching ""