Files
notebrook-notes/frontend/src/ui/file-input.ts

47 lines
1.4 KiB
TypeScript
Raw Normal View History

2024-09-03 14:50:33 +02:00
import { UINode } from "./node";
export class FileInput extends UINode {
private id: string;
private titleElement: HTMLLabelElement;
private inputElement: HTMLInputElement;
public constructor(title: string, multiple: boolean = false) {
super(title);
this.id = Math.random().toString();
this.titleElement = document.createElement("label");
this.titleElement.innerText = title;
this.titleElement.id = `fileinpt_title_${this.id}`;
this.inputElement = document.createElement("input");
this.inputElement.id = `fileinpt_${this.id}`;
this.inputElement.type = "file";
if (multiple) {
this.inputElement.multiple = true;
}
this.titleElement.appendChild(this.inputElement);
this.element.appendChild(this.titleElement);
}
public focus() {
this.inputElement.focus();
return this;
}
public getElement(): HTMLElement {
return this.inputElement;
}
public setText(text: string) {
this.title = text;
this.titleElement.innerText = text;
return this;
}
public getFiles(): FileList | null {
return this.inputElement.files;
}
public setAccept(accept: string) {
this.inputElement.accept = accept;
return this;
}
}