diff --git a/static/app.js b/static/app.js index f566bf6..22a192f 100644 --- a/static/app.js +++ b/static/app.js @@ -658,7 +658,8 @@ function render() { setHtml($("#top"), topbar()); // The fires keep burning through a re-render: put the old canvases back in place of the new ones. const burning = [...document.querySelectorAll("canvas[data-flame]")]; - setHtml($("#main"), S.me ? pageHtml() : register()); + // Replacing a focused dropdown closes it mid-pick: hold the page until it lets go. + if (!document.activeElement?.matches("#main select")) setHtml($("#main"), S.me ? pageHtml() : register()); for (const old of burning) { const fresh = document.querySelector(`canvas[data-flame="${old.dataset.flame}"]`); if (fresh && fresh !== old) fresh.replaceWith(old); @@ -3030,7 +3031,12 @@ document.addEventListener("input", (e) => { render(); }); +document.addEventListener("focusout", (e) => { + if (S && e.target.matches("#main select")) setTimeout(render); +}); + document.addEventListener("change", (e) => { + if (e.target.matches("#main select")) e.target.blur(); if (e.target.dataset.qset) { const n = Math.floor(Number(e.target.value)); if (!(n >= 1 && n <= C.make_max)) return toast(`1 to ${fmt(C.make_max)}`, "bad");