From e28aeccfd158db67529d71da04742213a8ec4272 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Tue, 24 Mar 2026 11:16:37 -0700 Subject: [PATCH] Redesign pool fix match modal: fixed height, no layout shift (#186) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modal now uses a fixed 600px height from open — results scroll within a dedicated area instead of growing the modal and pushing inputs up. This eliminates the layout shift that caused accidental result clicks. Other fixes: - Input fields now have labels (Track, Artist) - Overlay dismiss uses mousedown with stopPropagation to prevent accidental close when clicking near inputs - Reduced results from 50 to 20 for faster response - Clean minimal design matching app style - Mobile: full-screen modal, stacked inputs with 44px touch targets --- webui/static/script.js | 87 ++++++----- webui/static/style.css | 331 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 372 insertions(+), 46 deletions(-) diff --git a/webui/static/script.js b/webui/static/script.js index e4131d7f..cf860332 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -57806,39 +57806,52 @@ function openPoolFixModal(trackId, trackName, artistName) { fixOverlay = document.createElement('div'); fixOverlay.className = 'pool-fix-overlay'; fixOverlay.id = 'pool-fix-overlay'; - fixOverlay.onclick = (e) => { if (e.target === fixOverlay) closePoolFixModal(); }; + + // Only close on click to the overlay itself — use a dedicated close zone + // to prevent accidental dismissal when clicking near inputs + fixOverlay.addEventListener('mousedown', (e) => { + if (e.target === fixOverlay) { + e.preventDefault(); // Prevent stealing focus from inputs + closePoolFixModal(); + } + }); fixOverlay.innerHTML = ` -