diff --git a/assets/webui/index.html b/assets/webui/index.html
index 407fb54..2208ec5 100644
--- a/assets/webui/index.html
+++ b/assets/webui/index.html
@@ -356,7 +356,7 @@
-
+
diff --git a/assets/webui/ofdgo.css b/assets/webui/ofdgo.css
index 9d1e126..13a6b01 100644
--- a/assets/webui/ofdgo.css
+++ b/assets/webui/ofdgo.css
@@ -1846,6 +1846,26 @@ button:not(:disabled):hover {
outline-offset: 2px;
}
+#createImageOrder {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(6em, 1fr));
+ gap: 4px;
+}
+
+#createImageOrder span {
+ border-left: 1px solid var(--line);
+ border-radius: var(--radius-control);
+ white-space: nowrap;
+}
+
+#createImageOrder input:not(:disabled):not(:checked) + span:hover {
+ background: var(--hover-fill);
+}
+
+#createImageOrder input:disabled + span {
+ opacity: 0.48;
+}
+
.info-rows textarea,
.gradient-stop-row input[type="number"],
.structure-attribute > input,
diff --git a/assets/webui/ofdgo.js b/assets/webui/ofdgo.js
index 8570a33..e459624 100644
--- a/assets/webui/ofdgo.js
+++ b/assets/webui/ofdgo.js
@@ -1691,7 +1691,7 @@ el.createImageAdd.addEventListener("click", () => {
});
el.createImages.addEventListener("change", addCreateImages);
el.createImages.addEventListener("cancel", () => { createImagePicker = null; });
-el.createImageOrder.addEventListener("change", () => { state.createImageQueue.order = el.createImageOrder.value; sortCreateImages(); });
+el.createImageOrder.addEventListener("change", event => { state.createImageQueue.order = event.target.value; sortCreateImages(); });
el.createImageList.addEventListener("click", event => {
const row = event.target.closest("[data-image-id]");
if (!row || state.imageImporting) return;
@@ -3855,7 +3855,8 @@ function updateCreateOptions() {
el.createSize.querySelector('[value="image"]').disabled = !images;
el.createImageQueue.hidden = !images || !state.createImageQueue?.entries.length;
el.createPanel.classList.toggle("create-images", images);
- el.createImageAdd.disabled = el.createImageOrder.disabled = busy;
+ el.createImageAdd.disabled = busy;
+ for (const input of el.createImageOrder.querySelectorAll("input")) input.disabled = busy;
const dimensions = !images || el.createSize.value !== "image";
toggle("createDimensions", dimensions);
toggle("createDirectionRow", dimensions);
@@ -3960,7 +3961,7 @@ function renderCreateImages() {
const top = el.createImageList.scrollTop;
const focused = el.createImageList.contains(document.activeElement);
el.createImageList.replaceChildren();
- el.createImageOrder.value = queue.order;
+ for (const input of el.createImageOrder.querySelectorAll("input")) input.checked = input.value === queue.order;
el.createImageCount.textContent = String(queue.entries.length);
if (!queue.entries.some(entry => entry.id === queue.selected)) queue.selected = queue.entries[0]?.id ?? null;
queue.observer = new IntersectionObserver(items => {