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); }