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 = `