mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2025-01-25 15:55:18 +00:00
Support numeric settings, tooltip, extra attrs
This commit is contained in:
parent
27fc64ad46
commit
5aefd6cdf3
@ -198,7 +198,7 @@ class ComfySettingsDialog extends ComfyDialog {
|
|||||||
localStorage[settingId] = JSON.stringify(value);
|
localStorage[settingId] = JSON.stringify(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
addSetting({ id, name, type, defaultValue, onChange }) {
|
addSetting({ id, name, type, defaultValue, onChange, attrs = {}, tooltip = "", }) {
|
||||||
if (!id) {
|
if (!id) {
|
||||||
throw new Error("Settings must have an ID");
|
throw new Error("Settings must have an ID");
|
||||||
}
|
}
|
||||||
@ -225,42 +225,72 @@ class ComfySettingsDialog extends ComfyDialog {
|
|||||||
value = v;
|
value = v;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let element;
|
||||||
|
|
||||||
if (typeof type === "function") {
|
if (typeof type === "function") {
|
||||||
return type(name, setter, value);
|
element = type(name, setter, value, attrs);
|
||||||
|
} else {
|
||||||
|
switch (type) {
|
||||||
|
case "boolean":
|
||||||
|
element = $el("div", [
|
||||||
|
$el("label", { textContent: name || id }, [
|
||||||
|
$el("input", {
|
||||||
|
type: "checkbox",
|
||||||
|
checked: !!value,
|
||||||
|
oninput: (e) => {
|
||||||
|
setter(e.target.checked);
|
||||||
|
},
|
||||||
|
...attrs
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
case "number":
|
||||||
|
element = $el("div", [
|
||||||
|
$el("label", { textContent: name || id }, [
|
||||||
|
$el("input", {
|
||||||
|
type,
|
||||||
|
value,
|
||||||
|
oninput: (e) => {
|
||||||
|
setter(e.target.value);
|
||||||
|
},
|
||||||
|
...attrs
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
console.warn("Unsupported setting type, defaulting to text");
|
||||||
|
element = $el("div", [
|
||||||
|
$el("label", { textContent: name || id }, [
|
||||||
|
$el("input", {
|
||||||
|
value,
|
||||||
|
oninput: (e) => {
|
||||||
|
setter(e.target.value);
|
||||||
|
},
|
||||||
|
...attrs
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(tooltip) {
|
||||||
|
element.title = tooltip;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type) {
|
return element;
|
||||||
case "boolean":
|
|
||||||
return $el("div", [
|
|
||||||
$el("label", { textContent: name || id }, [
|
|
||||||
$el("input", {
|
|
||||||
type: "checkbox",
|
|
||||||
checked: !!value,
|
|
||||||
oninput: (e) => {
|
|
||||||
setter(e.target.checked);
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
]),
|
|
||||||
]);
|
|
||||||
default:
|
|
||||||
console.warn("Unsupported setting type, defaulting to text");
|
|
||||||
return $el("div", [
|
|
||||||
$el("label", { textContent: name || id }, [
|
|
||||||
$el("input", {
|
|
||||||
value,
|
|
||||||
oninput: (e) => {
|
|
||||||
setter(e.target.value);
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
]),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
show() {
|
show() {
|
||||||
super.show();
|
super.show();
|
||||||
|
Object.assign(this.textElement.style, {
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
gap: "10px"
|
||||||
|
});
|
||||||
this.textElement.replaceChildren(...this.settings.map((s) => s.render()));
|
this.textElement.replaceChildren(...this.settings.map((s) => s.render()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user