aboutsummaryrefslogtreecommitdiffstats
path: root/src/angular/buttons/button-file-opener.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/angular/buttons/button-file-opener.component.ts')
-rw-r--r--src/angular/buttons/button-file-opener.component.ts61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/angular/buttons/button-file-opener.component.ts b/src/angular/buttons/button-file-opener.component.ts
new file mode 100644
index 0000000..399eb9a
--- /dev/null
+++ b/src/angular/buttons/button-file-opener.component.ts
@@ -0,0 +1,61 @@
+import { Component, Input, Output, EventEmitter, HostBinding, ViewChild, AfterViewInit } from '@angular/core';
+import { ButtonComponent } from './button.component';
+import { template } from "./button-file-opener.component.html";
+
+export class FileObject {
+ filesize: string;
+ filetype: string;
+ filename: string;
+ base64: string;
+}
+
+@Component({
+ selector: "sdc-button-file-opener",
+ template: template,
+ styles: [`
+ input[type=file] {
+ display: none;
+ }
+ `]
+})
+export class ButtonFileOpenerComponent extends ButtonComponent implements AfterViewInit {
+
+ @Input() public extensions: string;
+ @Output() public fileUpload: EventEmitter<any>;
+ @HostBinding('class.sdc-button__wrapper') true;
+
+ public allowedExtensions: string;
+ private fileObject: FileObject;
+
+ constructor() {
+ super();
+ this.fileUpload = new EventEmitter<any>();
+ this.fileObject = new FileObject();
+ }
+
+ ngAfterViewInit() : void {
+ this.allowedExtensions = this.extensions && this.extensions.split(',').map(x => '.' + x).join(',');
+ }
+
+ public onFileSelectaa(event): void {
+ let file = event.srcElement.files[0];
+ debugger
+ this.fileUpload.emit({file: file});
+ }
+
+ public onFileSelect(e): void {
+ var file = e.dataTransfer ? e.dataTransfer.files[0] : e.target.files[0];
+ var reader = new FileReader();
+ this.fileObject.filesize = file.size;
+ this.fileObject.filetype = file.type;
+ this.fileObject.filename = file.name;
+ reader.onload = this._handleReaderLoaded.bind(this);
+ reader.readAsDataURL(file);
+ }
+ private _handleReaderLoaded(e) {
+ let base64 = e.target.result;
+ this.fileObject.base64 = base64.split('base64,')[1];
+ this.fileUpload.emit(this.fileObject);
+ }
+
+}