* feat(upgrade): updated up to angular 11 tests are failed * chore(bump): updated versions * chore(bump): updated package * fix(style): delete extra rule * disabled ivy build, added prod config, changed demo serve script * feat(bump): added strict mode, doesn't build in dist, should be resolved * feat(core): added nx * feat(core): updated dependencies list * feat(github actions): check gh actions * feat(gh actions): try gh actions * feat(gh actions): try gh actions * feat(gh actions): try gh actions * feat(gh actions): try gh actions * feat(gh actions): try gh actions * feat(github actions): delete codecov * feat(firebase): try firebase actions * feat(firebase): try firebase actions * feat(firebase): try firebase actions * feat(firebase): try firebase actions * feat(firebase): try firebase actions * feat(strict): added strict mode * feat(github actions): updated yml file * fix(lint): fixed linting errors * fix(lint): fixed linting errors * fix(lint): fixed lint errors * Delete hosting.ZGlzdC9hcHBzL2RlbW8.cache * feat(github actions): added publish action * fix(firebase): test extra folder https Co-authored-by: Mishchenko Dmitriy <ripatrip@gmail.com> Co-authored-by: Dmitriy Shekhovtsov <valorkin@gmail.com>
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { Directive, EventEmitter, ElementRef, Input, HostListener, Output } from '@angular/core';
|
|
|
|
import { FileUploader, FileUploaderOptions } from './file-uploader.class';
|
|
|
|
@Directive({ selector: '[ng2FileSelect]' })
|
|
export class FileSelectDirective {
|
|
@Input() uploader?: FileUploader;
|
|
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
|
@Output() onFileSelected: EventEmitter<File[]> = new EventEmitter<File[]>();
|
|
|
|
protected element: ElementRef;
|
|
|
|
constructor(element: ElementRef) {
|
|
this.element = element;
|
|
}
|
|
|
|
getOptions(): FileUploaderOptions | undefined {
|
|
return this.uploader?.options;
|
|
}
|
|
|
|
getFilters(): string {
|
|
return '';
|
|
}
|
|
|
|
isEmptyAfterSelection(): boolean {
|
|
return !!this.element.nativeElement.attributes.multiple;
|
|
}
|
|
|
|
@HostListener('change')
|
|
onChange(): void {
|
|
const files = this.element.nativeElement.files;
|
|
const options = this.getOptions();
|
|
const filters = this.getFilters();
|
|
this.uploader?.addToQueue(files, options, filters);
|
|
|
|
this.onFileSelected.emit(files);
|
|
if (this.isEmptyAfterSelection()) {
|
|
this.element.nativeElement.value = '';
|
|
}
|
|
}
|
|
}
|