From 76a76c206e5011e608f2728166a0f50ca360a687 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Wed, 1 Apr 2026 14:01:51 -0700 Subject: [PATCH] Make redownload modal buttons sticky at bottom MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step 1 and Step 2 action buttons (Cancel, Search/Download) now render in a sticky footer outside the scrollable body — always visible regardless of how many results are shown. Footer has backdrop blur and top border separator matching the modal glass theme. --- webui/static/script.js | 22 ++++++++++++++++++++-- webui/static/style.css | 16 +++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/webui/static/script.js b/webui/static/script.js index 78dba4aa..6d53eed8 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -42962,13 +42962,21 @@ function _renderRedownloadStep1(overlay, track, data) { `; }).join(''); - body.innerHTML = ` -
${columnsHtml}
+ body.innerHTML = `
${columnsHtml}
`; + + // Add sticky footer for Step 1 + const modal = overlay.querySelector('.redownload-modal'); + const oldFooter = modal.querySelector('.redownload-sticky-footer'); + if (oldFooter) oldFooter.remove(); + const footer = document.createElement('div'); + footer.className = 'redownload-sticky-footer'; + footer.innerHTML = `
`; + modal.appendChild(footer); // Next button document.getElementById('redownload-next-btn').addEventListener('click', async () => { @@ -42983,10 +42991,19 @@ function _renderRedownloadStep1(overlay, track, data) { overlay.querySelector('.redownload-step[data-step="2"]').classList.add('active'); // Stream results from all download sources — columns appear as each source responds + // Body gets the scrollable content, footer is sticky outside the scroll body.innerHTML = `
Searching download sources...
+ `; + // Add sticky footer outside the scrollable body + const existingFooter = overlay.querySelector('.redownload-sticky-footer'); + if (existingFooter) existingFooter.remove(); + const modal = overlay.querySelector('.redownload-modal'); + const footer = document.createElement('div'); + footer.className = 'redownload-sticky-footer'; + footer.innerHTML = `