Skip to content

Commit ce2abfe

Browse files
rootroot
authored andcommitted
Improving the file browser for importing metadata
1 parent a6e3bc3 commit ce2abfe

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

src/app/shared/upload/file-dropzone-no-uploader/file-dropzone-no-uploader.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
<span><i class="fas fa-cloud-upload"
2020
aria-hidden="true"></i> {{ ((fileObject === null || fileObject === undefined) ? dropMessageLabel : dropMessageLabelReplacement) | translate}} {{'uploader.or' | translate}}</span>
2121
<label class="btn btn-link m-0 p-0 ml-1">
22-
<input class="form-control-file d-none" requireFile #file="ngModel" type="file" name="file-upload"
22+
<input class="form-control-file d-none" type="file" name="file-upload"
2323
id="file-upload"
24-
[ngModel]="fileObject" (ngModelChange)="setFile($event)">
24+
(change)="handleFileInput($event)">
2525
{{'uploader.browse' | translate}}
2626
</label>
2727
</p>

src/app/shared/upload/file-dropzone-no-uploader/file-dropzone-no-uploader.component.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export class FileDropzoneNoUploaderComponent implements OnInit {
5454
/**
5555
* The function to call when file is added
5656
*/
57-
@Output() onFileAdded: EventEmitter<any> = new EventEmitter<any>();
57+
@Output() onFileAdded: EventEmitter<File> = new EventEmitter<File>();
5858

5959
/**
6060
* The uploader configuration options
@@ -83,15 +83,17 @@ export class FileDropzoneNoUploaderComponent implements OnInit {
8383
}
8484

8585
@HostListener('window:drop', ['$event'])
86-
onDrop(event: any) {
86+
onDrop(event: DragEvent) {
8787
event.preventDefault();
88+
event.stopPropagation();
8889
}
8990

9091
@HostListener('window:dragover', ['$event'])
91-
onDragOver(event: any) {
92+
onDragOver(event: DragEvent) {
9293
// Show drop area on the page
9394
event.preventDefault();
94-
if ((event.target as any).tagName !== 'HTML') {
95+
event.stopPropagation();
96+
if ((event.target as HTMLElement).tagName !== 'HTML') {
9597
this.isOverDocumentDropZone = observableOf(true);
9698
}
9799
}
@@ -105,11 +107,18 @@ export class FileDropzoneNoUploaderComponent implements OnInit {
105107
}
106108
}
107109

110+
public handleFileInput(event: Event) {
111+
const input = event.target as HTMLInputElement;
112+
if (input.files && input.files.length > 0) {
113+
this.setFile(input.files);
114+
}
115+
}
116+
108117
/**
109118
* Set file
110119
* @param files
111120
*/
112-
setFile(files) {
121+
public setFile(files: FileList) {
113122
this.fileObject = files.length > 0 ? files[0] : undefined;
114123
this.onFileAdded.emit(this.fileObject);
115124
}

0 commit comments

Comments
 (0)