diff --git a/resources/dist/filament-sticky-header.js b/resources/dist/filament-sticky-header.js index 71d8cd2..e4744b3 100644 --- a/resources/dist/filament-sticky-header.js +++ b/resources/dist/filament-sticky-header.js @@ -1 +1 @@ -(()=>{var a=document.querySelector(".fi-topbar"),e=document.querySelector(".fi-main"),r=document.querySelector(".fi-header");a&&e&&r&&window.addEventListener("load",function(){let t=document.createElement("div"),n=(filamentData==null?void 0:filamentData.stickyHeaderTheme)||"default";t.classList.add("filament-sticky-trigger"),e.prepend(t),e.classList.add(`sticky-theme-${n}`);let o=a.offsetHeight,i=null;new IntersectionObserver(([s])=>{if(s.isIntersecting){if(i&&s.time-i<1e3)return;i=s.time,e.classList.remove("is-sticky");return}let c=0;n.includes("floating")&&(c+=8),r.style.top=o+c+"px",r.setAttribute("wire:ignore.self","true"),e.classList.add("is-sticky")},{rootMargin:`-${o}px`,threshold:[0]}).observe(t)});})(); +(()=>{var c=document.querySelector(".fi-topbar"),e=document.querySelector(".fi-main"),r=document.querySelector(".fi-header");c&&e&&r&&filamentData!=null&&filamentData.stickyHeaderActive&&window.addEventListener("load",function(){let t=document.createElement("div"),n=(filamentData==null?void 0:filamentData.stickyHeaderTheme)||"default";t.classList.add("filament-sticky-trigger"),e.prepend(t),e.classList.add(`sticky-theme-${n}`);let o=c.offsetHeight,i=null;new IntersectionObserver(([s])=>{if(s.isIntersecting){if(i&&s.time-i<1e3)return;i=s.time,e.classList.remove("is-sticky");return}let a=0;n.includes("floating")&&(a+=8),r.style.top=o+a+"px",r.setAttribute("wire:ignore.self","true"),e.classList.add("is-sticky")},{rootMargin:`-${o}px`,threshold:[0]}).observe(t)});})(); diff --git a/resources/js/plugin.js b/resources/js/plugin.js index b06531e..9c84c8b 100644 --- a/resources/js/plugin.js +++ b/resources/js/plugin.js @@ -3,46 +3,48 @@ const filamentMainContent = document.querySelector(".fi-main"); const filamentHeader = document.querySelector(".fi-header"); if (filamentTopbar && filamentMainContent && filamentHeader) { - window.addEventListener("load", function () { - const trigger = document.createElement("div"); - const theme = filamentData?.stickyHeaderTheme || 'default'; - trigger.classList.add("filament-sticky-trigger"); - filamentMainContent.prepend(trigger); + if (filamentData?.stickyHeaderActive) { + window.addEventListener("load", function () { + const trigger = document.createElement("div"); + const theme = filamentData?.stickyHeaderTheme || 'default'; + trigger.classList.add("filament-sticky-trigger"); + filamentMainContent.prepend(trigger); - filamentMainContent.classList.add(`sticky-theme-${theme}`); + filamentMainContent.classList.add(`sticky-theme-${theme}`); - let offsetHeight = filamentTopbar.offsetHeight; + let offsetHeight = filamentTopbar.offsetHeight; - let intersectingTime = null; + let intersectingTime = null; - const observer = new IntersectionObserver( - ([e]) => { + const observer = new IntersectionObserver( + ([e]) => { - if (e.isIntersecting) { - if (intersectingTime && (e.time - intersectingTime) < 1000) { + if (e.isIntersecting) { + if (intersectingTime && (e.time - intersectingTime) < 1000) { + return; + } + intersectingTime = e.time; + filamentMainContent.classList.remove("is-sticky"); return; } - intersectingTime = e.time; - filamentMainContent.classList.remove("is-sticky"); - return; - } - let offsetModifier = 0; + let offsetModifier = 0; + + if (theme.includes('floating')) { + offsetModifier += 8; + } - if (theme.includes('floating')) { - offsetModifier += 8; + filamentHeader.style.top = (offsetHeight + offsetModifier) + "px"; + filamentHeader.setAttribute("wire:ignore.self", "true"); + filamentMainContent.classList.add("is-sticky"); + }, + { + rootMargin: `-${offsetHeight}px`, + threshold: [0], } + ); - filamentHeader.style.top = (offsetHeight + offsetModifier) + "px"; - filamentHeader.setAttribute("wire:ignore.self", "true"); - filamentMainContent.classList.add("is-sticky"); - }, - { - rootMargin: `-${offsetHeight}px`, - threshold: [0], - } - ); - - observer.observe(trigger); - }); + observer.observe(trigger); + }); + } } \ No newline at end of file diff --git a/src/StickyHeaderPlugin.php b/src/StickyHeaderPlugin.php index 0583df8..1be42ef 100644 --- a/src/StickyHeaderPlugin.php +++ b/src/StickyHeaderPlugin.php @@ -5,6 +5,8 @@ use Closure; use Filament\Contracts\Plugin; use Filament\Panel; +use Filament\Support\Assets\Css; +use Filament\Support\Assets\Js; use Filament\Support\Concerns\EvaluatesClosures; use Filament\Support\Facades\FilamentAsset; @@ -20,6 +22,7 @@ public function boot(Panel $panel): void { FilamentAsset::registerScriptData([ 'stickyHeaderTheme' => $this->getTheme(), + 'stickyHeaderActive' => true, ], 'awcodes-sticky-header'); }