Add support for select to BrickChanger

This commit is contained in:
Gregoo 2025-02-03 16:08:11 +01:00
parent b87ff162c1
commit 187afdc2cf

View File

@ -7,7 +7,7 @@ class BrickChanger {
this.html_clear = document.getElementById(`clear-${prefix}-${id}`); this.html_clear = document.getElementById(`clear-${prefix}-${id}`);
this.html_status = document.getElementById(`status-${prefix}-${id}`); this.html_status = document.getElementById(`status-${prefix}-${id}`);
this.html_status_tooltip = undefined; this.html_status_tooltip = undefined;
this.html_type = this.html_element.getAttribute("type"); this.html_type = undefined;
this.url = url; this.url = url;
if (parent) { if (parent) {
@ -16,12 +16,29 @@ class BrickChanger {
} }
// Register an event depending on the type // Register an event depending on the type
if (this.html_type == "checkbox") { let listener = undefined;
var listener = "change"; switch (this.html_element.tagName) {
} else if(this.html_type == "text") { case "INPUT":
var listener = "change"; this.html_type = this.html_element.getAttribute("type");
} else {
throw Error("Unsupported input type for BrickChanger"); switch (this.html_type) {
case "checkbox":
case "text":
listener = "change";
break;
default:
throw Error(`Unsupported input type for BrickChanger: ${this.html_type}`);
}
break;
case "SELECT":
this.html_type = "select";
listener = "change";
break;
default:
throw Error(`Unsupported HTML tag type for BrickChanger: ${this.html_element.tagName}`);
} }
this.html_element.addEventListener(listener, ((changer) => (e) => { this.html_element.addEventListener(listener, ((changer) => (e) => {
@ -90,11 +107,19 @@ class BrickChanger {
this.status_unknown(); this.status_unknown();
// Grab the value depending on the type // Grab the value depending on the type
if (this.html_type == "checkbox") { let value = undefined;
var value = this.html_element.checked;
} else if(this.html_type == "text") { switch(this.html_type) {
var value = this.html_element.value; case "checkbox":
} else { value = this.html_element.checked;
break;
case "text":
case "select":
value = this.html_element.value;
break;
default:
throw Error("Unsupported input type for BrickChanger"); throw Error("Unsupported input type for BrickChanger");
} }