apim-developer-portal2
Version:
API management developer portal
49 lines (40 loc) • 1.32 kB
text/typescript
import * as ko from "knockout";
import template from "./file-input.html";
import { Utils } from "../../utils";
import { Component, Event } from "@paperbits/common/ko/decorators";
export class FileInput {
private readonly input: HTMLInputElement;
public selectedFileInfo: ko.Observable<string>;
public onSelect: (file: File) => void;
constructor() {
this.selectedFileInfo = ko.observable<string>();
this.input = document.createElement("input");
this.input.type = "file";
this.input.onchange = this.onChange.bind(this);
}
public onKeyDown(event: KeyboardEvent): void {
if (event.keyCode === 13) {
event.preventDefault();
this.input.click();
}
}
public onClick(): void {
this.input.value = "";
this.input.click();
}
public onChange(event: any): void {
if (event.target.files.length > 0) {
const file: File = event.target.files[0];
this.selectedFileInfo(`${file.name} (${Utils.formatBytes(file.size)})`);
this.onSelect(file);
}
else {
this.onSelect(null);
}
}
}