From 7426d0db0b96aa9ae1e148abf928bb9a3d91d56b Mon Sep 17 00:00:00 2001 From: JuneMinazuki Date: Wed, 24 Jun 2026 13:50:14 +0800 Subject: [PATCH] Sync overlay selection to all inputs by field name --- .../controllers/overlay_controller.js | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/app/javascript/controllers/overlay_controller.js b/app/javascript/controllers/overlay_controller.js index 62ccbd47..cfba783e 100644 --- a/app/javascript/controllers/overlay_controller.js +++ b/app/javascript/controllers/overlay_controller.js @@ -114,15 +114,17 @@ export default class extends Controller { if (!selectedOption || selectedOption.value === "") return; // Skip if 'Keep Empty' const newValue = selectedOption.dataset.value; - const mainInput = document.getElementById(targetId); - - if (mainInput) { - if (mainInput.type === "radio" || mainInput.tagName === "FIELDSET") { - const name = mainInput.name || `fields[${targetId.split("_")[1]}]`; - const radioToSelect = document.querySelector( - `input[name="${name}"][value="${newValue}"]`, - ); - if (radioToSelect) radioToSelect.checked = true; + + const fieldId = targetId.replace("fields_", ""); + const fieldName = `fields[${fieldId}]`; + + const mainInputs = document.querySelectorAll(`[name="${fieldName}"]`); + + mainInputs.forEach((mainInput) => { + if (mainInput.type === "radio") { + if (mainInput.value === newValue) { + mainInput.checked = true; + } } else if (mainInput.tagName === "SELECT") { mainInput.value = newValue; mainInput.dispatchEvent(new Event("change", { bubbles: true })); @@ -131,7 +133,7 @@ export default class extends Controller { mainInput.dispatchEvent(new Event("input", { bubbles: true })); mainInput.dispatchEvent(new CustomEvent("text-editor:update", { detail: { value: newValue }})); } - } + }); }); this.close(event);