import { UINode } from "./node";

export class Checkbox extends UINode {
    private id: string;
    private titleElement: HTMLLabelElement;
    private checkboxElement: HTMLInputElement;
    public constructor(title: string) {
        super(title);
        this.id = Math.random().toString();
        this.titleElement = document.createElement("label");
        this.titleElement.id = `chkbx_title_${this.id}`;
        this.checkboxElement = document.createElement("input");
        this.checkboxElement.id = `chkbx_${this.id}`;
        this.checkboxElement.type = "checkbox";
        this.titleElement.appendChild(this.checkboxElement);
        this.titleElement.appendChild(document.createTextNode(this.title));
        this.element.appendChild(this.titleElement);
    }

    public focus() {
        this.checkboxElement.focus();
        return this;
    }

    public click() {
        this.checkboxElement.click();
        return this;
    }

    public getElement(): HTMLElement {
        return this.checkboxElement;
    }

    public setText(text: string) {
        this.title = text;
        this.titleElement.innerText = text;
        this.element.setAttribute("aria-label", this.title);
        this.element.setAttribute("aria-roledescription", "checkbox");
        return this;
    }

    public isChecked(): boolean {
        return this.checkboxElement.checked;
    }

    public setChecked(value: boolean) {
        this.checkboxElement.checked = value;
        return this;
    }
}