From e7159c9dc72fb8bc524d0052209d19558e1c77cc Mon Sep 17 00:00:00 2001 From: shuki Date: Wed, 4 Mar 2026 03:14:30 +0200 Subject: [PATCH] Fix toast: single instance, bottom-right, proper styling Remove previous toast before showing new one to prevent stacking. Position bottom-right with padding, rounded corners, and proper font size for a clean toast appearance. Co-Authored-By: Claude Opus 4.6 --- whm/gniza-whm/remotes.cgi | 14 +++++--------- whm/gniza-whm/setup.cgi | 14 +++++--------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/whm/gniza-whm/remotes.cgi b/whm/gniza-whm/remotes.cgi index ccd86fe..cfeae10 100644 --- a/whm/gniza-whm/remotes.cgi +++ b/whm/gniza-whm/remotes.cgi @@ -712,18 +712,14 @@ function gnizaTestConnection() { } function gnizaToast(type, msg) { - var toast = document.getElementById('gniza-toast'); - if (!toast) { - toast = document.createElement('div'); - toast.id = 'gniza-toast'; - toast.style.cssText = 'position:fixed;top:12px;right:12px;z-index:9999;display:flex;flex-direction:column;gap:8px;max-width:400px'; - document.body.appendChild(toast); - } + var prev = document.getElementById('gniza-toast'); + if (prev) prev.remove(); var el = document.createElement('div'); + el.id = 'gniza-toast'; el.className = 'alert alert-' + type; - el.style.cssText = 'transition:opacity .3s;box-shadow:0 4px 12px rgba(0,0,0,.15)'; + el.style.cssText = 'position:fixed;bottom:24px;right:24px;z-index:9999;max-width:400px;padding:12px 20px;border-radius:8px;font-size:14px;box-shadow:0 4px 12px rgba(0,0,0,.15);transition:opacity .3s'; el.textContent = msg; - toast.appendChild(el); + document.body.appendChild(el); setTimeout(function() { el.style.opacity = '0'; }, type === 'error' ? 6000 : 3000); setTimeout(function() { el.remove(); }, type === 'error' ? 6500 : 3500); } diff --git a/whm/gniza-whm/setup.cgi b/whm/gniza-whm/setup.cgi index fe8546d..5b1a5bf 100644 --- a/whm/gniza-whm/setup.cgi +++ b/whm/gniza-whm/setup.cgi @@ -314,18 +314,14 @@ function gnizaTestConnection() { } function gnizaToast(type, msg) { - var toast = document.getElementById('gniza-toast'); - if (!toast) { - toast = document.createElement('div'); - toast.id = 'gniza-toast'; - toast.style.cssText = 'position:fixed;top:12px;right:12px;z-index:9999;display:flex;flex-direction:column;gap:8px;max-width:400px'; - document.body.appendChild(toast); - } + var prev = document.getElementById('gniza-toast'); + if (prev) prev.remove(); var el = document.createElement('div'); + el.id = 'gniza-toast'; el.className = 'alert alert-' + type; - el.style.cssText = 'transition:opacity .3s;box-shadow:0 4px 12px rgba(0,0,0,.15)'; + el.style.cssText = 'position:fixed;bottom:24px;right:24px;z-index:9999;max-width:400px;padding:12px 20px;border-radius:8px;font-size:14px;box-shadow:0 4px 12px rgba(0,0,0,.15);transition:opacity .3s'; el.textContent = msg; - toast.appendChild(el); + document.body.appendChild(el); setTimeout(function() { el.style.opacity = '0'; }, type === 'error' ? 6000 : 3000); setTimeout(function() { el.remove(); }, type === 'error' ? 6500 : 3500); }