function initAlerts() { document.querySelectorAll("[data-alert]").forEach(function (alert) { if (alert.dataset.alertInitialized) return; alert.dataset.alertInitialized = "true"; var dismissButton = alert.querySelector("[data-alert-dismiss]"); var autoTimeout = setTimeout(function () { dismissAlert(alert); }, 5000); if (dismissButton) { dismissButton.addEventListener("click", function () { clearTimeout(autoTimeout); dismissAlert(alert); }); } }); } function dismissAlert(alert) { alert.classList.add("dismissing"); alert.addEventListener("animationend", function () { alert.remove(); }); } document.addEventListener("DOMContentLoaded", initAlerts); document.body.addEventListener("htmx:afterSwap", initAlerts);