diff --git a/packages/panels/resources/views/components/layout/index.blade.php b/packages/panels/resources/views/components/layout/index.blade.php index 7887dab856..b639994a49 100644 --- a/packages/panels/resources/views/components/layout/index.blade.php +++ b/packages/panels/resources/views/components/layout/index.blade.php @@ -47,7 +47,7 @@ class="fi-sidebar-close-overlay" > - @livewire(\Filament\Livewire\Sidebar::class) + @livewire(filament()->getSidebarLivewireComponent()) @endif
getCurrentOrDefaultPanel()->getProfilePage(); } + public function getSidebarLivewireComponent(): string + { + return $this->getCurrentOrDefaultPanel()->getSidebarLivewireComponent(); + } + public function getTenantProfilePage(): ?string { return $this->getCurrentOrDefaultPanel()->getTenantProfilePage(); diff --git a/packages/panels/src/Panel/Concerns/HasComponents.php b/packages/panels/src/Panel/Concerns/HasComponents.php index cff4409358..1cb2282ee6 100644 --- a/packages/panels/src/Panel/Concerns/HasComponents.php +++ b/packages/panels/src/Panel/Concerns/HasComponents.php @@ -7,7 +7,6 @@ use Filament\Auth\Pages\EditProfile; use Filament\Clusters\Cluster; use Filament\Livewire\GlobalSearch; use Filament\Livewire\Notifications; -use Filament\Livewire\Sidebar; use Filament\Livewire\SimpleUserMenu; use Filament\Livewire\Topbar; use Filament\Pages\Page; @@ -491,7 +490,7 @@ trait HasComponents $this->queueLivewireComponentForRegistration(EditProfile::class); $this->queueLivewireComponentForRegistration(GlobalSearch::class); $this->queueLivewireComponentForRegistration(Notifications::class); - $this->queueLivewireComponentForRegistration(Sidebar::class); + $this->queueLivewireComponentForRegistration($this->getSidebarLivewireComponent()); $this->queueLivewireComponentForRegistration(SimpleUserMenu::class); $this->queueLivewireComponentForRegistration(Topbar::class); diff --git a/packages/panels/src/Panel/Concerns/HasSidebar.php b/packages/panels/src/Panel/Concerns/HasSidebar.php index 87ded63957..4e1622dfb9 100644 --- a/packages/panels/src/Panel/Concerns/HasSidebar.php +++ b/packages/panels/src/Panel/Concerns/HasSidebar.php @@ -3,6 +3,8 @@ namespace Filament\Panel\Concerns; use Closure; +use Filament\Livewire\Sidebar; +use Livewire\Component; trait HasSidebar { @@ -16,6 +18,8 @@ trait HasSidebar protected bool | Closure $hasCollapsibleNavigationGroups = true; + protected string | Closure | null $sidebarLivewireComponent = null; + public function sidebarCollapsibleOnDesktop(bool | Closure $condition = true): static { $this->isSidebarCollapsibleOnDesktop = $condition; @@ -37,6 +41,16 @@ trait HasSidebar return $this; } + /** + * @param class-string | Closure | null $component + */ + public function sidebarLivewireComponent(string | Closure | null $component): static + { + $this->sidebarLivewireComponent = $component; + + return $this; + } + public function sidebarWidth(string $width): static { $this->sidebarWidth = $width; @@ -75,4 +89,12 @@ trait HasSidebar { return (bool) $this->evaluate($this->hasCollapsibleNavigationGroups); } + + /** + * @return class-string + */ + public function getSidebarLivewireComponent(): string + { + return $this->evaluate($this->sidebarLivewireComponent) ?? Sidebar::class; + } }