diff --git a/src/helpers/web/WebPanelServer.cpp b/src/helpers/web/WebPanelServer.cpp index 5f107214..0e6828c3 100644 --- a/src/helpers/web/WebPanelServer.cpp +++ b/src/helpers/web/WebPanelServer.cpp @@ -866,39 +866,10 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML(
- + + - +
@@ -2150,6 +2121,8 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML( } function refreshMqttIataWarning() { const input = document.getElementById("mqttIata"); + const saveBtn = document.querySelector('[data-input="mqttIata"][data-prefix]'); + if (saveBtn) saveBtn.disabled = !input || !input.value.trim(); const banner = document.getElementById("mqttIataBanner"); const inlineWarning = document.getElementById("mqttBrokerWarning"); const showWarning = !!(input && isUnsetMqttIata(input.value)); @@ -2402,6 +2375,13 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML( } selectEl.innerHTML = options.join(""); syncRadioPresetUi(); + const datalist = document.getElementById("mqttIataList"); + const iataOptions = ['']; + for (const entry of entries) { + if (!entry.code || !entry.name) continue; + iataOptions.push(``); + } + datalist.innerHTML = iataOptions.join(""); } catch (error) { radioPresetEntries = []; selectEl.innerHTML = ''; @@ -2453,9 +2433,12 @@ const char kWebPanelAppHtml[] PROGMEM = R"HTML( document.querySelectorAll("[data-cmd]").forEach((btn) => btn.onclick = () => runCommand(btn.dataset.cmd)); document.querySelectorAll("[data-prefix]").forEach((btn) => btn.onclick = () => runPrefixed(btn.dataset.prefix, btn.dataset.input)); document.querySelectorAll("[data-load-cmd]").forEach((btn) => btn.onclick = () => loadField(btn.dataset.loadCmd, btn.dataset.loadInput, btn.dataset.loadFormat)); - const mqttIataSelect = document.getElementById("mqttIata"); - if (mqttIataSelect) { - mqttIataSelect.addEventListener("change", refreshMqttIataWarning); + const mqttIataInput = document.getElementById("mqttIata"); + if (mqttIataInput) { + mqttIataInput.addEventListener("input", () => { + const saveBtn = document.querySelector('[data-input="mqttIata"][data-prefix]'); + if (saveBtn) saveBtn.disabled = !mqttIataInput.value.trim(); + }); } async function setMeshcoretelMode(enabled) { if (enabled && getLetsmeshMode() === "both") {