mirror of
https://github.com/Pax1601/DCSOlympus.git
synced 2025-10-29 16:56:34 +00:00
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { Control } from "./control";
|
|
|
|
export class Switch extends Control {
|
|
#value: boolean | undefined = false;
|
|
#callback: CallableFunction | null = null;
|
|
|
|
// TODO: allow for null ID so that the element is created automatically
|
|
constructor(ID: string, callback: CallableFunction, initialValue?: boolean) {
|
|
super(ID);
|
|
this.getContainer()?.addEventListener('click', (e) => this.#onToggle());
|
|
this.setValue(initialValue !== undefined? initialValue: true);
|
|
|
|
this.#callback = callback;
|
|
|
|
/* Add the toggle itself to the document */
|
|
const container = this.getContainer();
|
|
if (container != undefined){
|
|
const width = getComputedStyle(container).width;
|
|
const height = getComputedStyle(container).height;
|
|
var el = document.createElement("div");
|
|
el.classList.add("ol-switch-fill");
|
|
el.style.setProperty("--width", width? width: "0");
|
|
el.style.setProperty("--height", height? height: "0");
|
|
this.getContainer()?.appendChild(el);
|
|
}
|
|
}
|
|
|
|
setValue(newValue: boolean | undefined, ignoreExpectedValue: boolean = true) {
|
|
if (ignoreExpectedValue || this.checkExpectedValue(newValue)) {
|
|
this.#value = newValue;
|
|
this.getContainer()?.setAttribute("data-value", String(newValue));
|
|
}
|
|
}
|
|
|
|
getValue() {
|
|
return this.#value;
|
|
}
|
|
|
|
#onToggle() {
|
|
this.resetExpectedValue();
|
|
this.setValue(!this.getValue());
|
|
if (this.#callback) {
|
|
this.#callback(this.getValue());
|
|
this.setExpectedValue(this.getValue());
|
|
}
|
|
}
|
|
} |