first-npm-package-nicule
Version:
This isi first npm package
76 lines (62 loc) • 2.63 kB
text/typescript
import { BaseInputComponent } from 'first-npm-package-nicule/forms';
import { ControlContainer, NgForm } from '@angular/forms';
import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';
export class FileFieldComponent extends BaseInputComponent implements OnInit, AfterViewInit {
fileInput;
public fileIsLoading = false;
get fieldInfo(): string {
const fieldInfoKey = this.labelingService.label(this.field.name, this.form.name, 'fieldInfo');
const translatedFieldInfo = this.translateService.instant(fieldInfoKey);
return fieldInfoKey === translatedFieldInfo || translatedFieldInfo === 'fieldInfo' ? '' : translatedFieldInfo;
}
ngOnInit(): void {
this.fileInput.nativeElement.addEventListener('dragover', evt => {
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
}, false);
this.fileInput.nativeElement.addEventListener('drop', evt => {
evt.stopPropagation();
evt.preventDefault();
if (evt.dataTransfer.files && evt.dataTransfer.files.length > 0) {
const file = evt.dataTransfer.files[0];
this.processFile(file);
}
}, false);
}
ngAfterViewInit(): void {
if (this.field.value === null) {
return;
}
const { fileName, contentType, fileContent} = this.field.value;
if (fileName === '' && contentType === '' && fileContent === '') {
this.field.value = null;
}
}
onFileChange(event): void {
if (event.target.files && event.target.files.length > 0) {
const file = event.target.files[0];
this.processFile(file);
}
}
processFile(file): void {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
this.ngModel.control.setValue({
fileName: file.name,
contentType: file.type,
fileContent: reader.result.toString().split(',')[1]
});
};
}
removeFile(): void {
this.ngModel.control.reset();
this.fileInput.nativeElement.value = null;
}
}