diff --git a/static/js/managers/BannerService.js b/static/js/managers/BannerService.js index 3711585f..c2226fce 100644 --- a/static/js/managers/BannerService.js +++ b/static/js/managers/BannerService.js @@ -62,6 +62,12 @@ class BannerService { */ registerBanner(id, bannerConfig) { this.banners.set(id, bannerConfig); + + // If already initialized, render the banner immediately + if (this.initialized && !this.isBannerDismissed(id) && this.container) { + this.renderBanner(bannerConfig); + this.updateContainerVisibility(); + } } /** @@ -88,6 +94,12 @@ class BannerService { // Remove banner from DOM const bannerElement = document.querySelector(`[data-banner-id="${bannerId}"]`); if (bannerElement) { + // Call onRemove callback if provided + const banner = this.banners.get(bannerId); + if (banner && typeof banner.onRemove === 'function') { + banner.onRemove(bannerElement); + } + bannerElement.style.animation = 'banner-slide-up 0.3s ease-in-out forwards'; setTimeout(() => { bannerElement.remove(); @@ -122,12 +134,16 @@ class BannerService { bannerElement.className = 'banner-item'; bannerElement.setAttribute('data-banner-id', banner.id); - const actionsHtml = banner.actions ? banner.actions.map(action => - `` - ).join('') : ''; + `; + }).join('') : ''; const dismissButtonHtml = banner.dismissible ? `