39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { UINode } from "./node";
|
|
|
|
export class Button extends UINode {
|
|
private buttonElement: HTMLButtonElement;
|
|
public constructor(title: string, hasPopup: boolean = false) {
|
|
super(title);
|
|
this.buttonElement = document.createElement("button");
|
|
this.buttonElement.innerText = title;
|
|
if (hasPopup) this.buttonElement.setAttribute("aria-haspopup", "true");
|
|
this.element.appendChild(this.buttonElement);
|
|
this.element.setAttribute("aria-label", this.title);
|
|
}
|
|
|
|
public focus() {
|
|
this.buttonElement.focus();
|
|
return this;
|
|
}
|
|
|
|
public click() {
|
|
this.buttonElement.click();
|
|
return this;
|
|
}
|
|
|
|
public getElement(): HTMLElement {
|
|
return this.buttonElement;
|
|
}
|
|
|
|
public setText(text: string) {
|
|
this.title = text;
|
|
this.buttonElement.innerText = text;
|
|
this.element.setAttribute("aria-label", this.title);
|
|
return this;
|
|
}
|
|
|
|
public setDisabled(val: boolean) {
|
|
this.buttonElement.disabled = val;
|
|
return this;
|
|
}
|
|
} |