install
This commit is contained in:
135
resources/views/vendor/filament-panels/components/user-menu.blade.php
vendored
Normal file
135
resources/views/vendor/filament-panels/components/user-menu.blade.php
vendored
Normal file
@@ -0,0 +1,135 @@
|
||||
@props([
|
||||
'position' => null,
|
||||
])
|
||||
|
||||
@php
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Enums\UserMenuPosition;
|
||||
use Illuminate\Support\Arr;
|
||||
|
||||
$user = filament()->auth()->user();
|
||||
|
||||
$items = $this->getUserMenuItems();
|
||||
|
||||
$itemsBeforeAndAfterThemeSwitcher = collect($items)
|
||||
->groupBy(fn (Action $item): bool => $item->getSort() < 0, preserveKeys: true)
|
||||
->all();
|
||||
$itemsBeforeThemeSwitcher = $itemsBeforeAndAfterThemeSwitcher[true] ?? collect();
|
||||
$itemsAfterThemeSwitcher = $itemsBeforeAndAfterThemeSwitcher[false] ?? collect();
|
||||
|
||||
$hasProfileHeader = $itemsBeforeThemeSwitcher->has('profile') &&
|
||||
blank(($item = Arr::first($itemsBeforeThemeSwitcher))->getUrl()) &&
|
||||
(! $item->hasAction());
|
||||
|
||||
if ($itemsBeforeThemeSwitcher->has('profile')) {
|
||||
$itemsBeforeThemeSwitcher = $itemsBeforeThemeSwitcher->prepend($itemsBeforeThemeSwitcher->pull('profile'), 'profile');
|
||||
}
|
||||
|
||||
$position ??= filament()->getUserMenuPosition();
|
||||
|
||||
$isSidebarCollapsibleOnDesktop = filament()->isSidebarCollapsibleOnDesktop();
|
||||
@endphp
|
||||
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_BEFORE) }}
|
||||
|
||||
<x-filament::dropdown
|
||||
:placement="($position === UserMenuPosition::Topbar) ? 'bottom-end' : 'top-end'"
|
||||
:teleport="$position === UserMenuPosition::Topbar"
|
||||
:attributes="
|
||||
\Filament\Support\prepare_inherited_attributes($attributes)
|
||||
->class(['fi-user-menu'])
|
||||
"
|
||||
>
|
||||
<x-slot name="trigger">
|
||||
@if ($position === UserMenuPosition::Topbar)
|
||||
<button
|
||||
aria-label="{{ __('filament-panels::layout.actions.open_user_menu.label') }}"
|
||||
type="button"
|
||||
class="fi-user-menu-trigger"
|
||||
>
|
||||
<x-filament-panels::avatar.user :user="$user" loading="lazy" />
|
||||
</button>
|
||||
@else
|
||||
<button
|
||||
aria-label="{{ __('filament-panels::layout.actions.open_user_menu.label') }}"
|
||||
type="button"
|
||||
class="fi-user-menu-trigger"
|
||||
>
|
||||
<x-filament-panels::avatar.user :user="$user" loading="lazy" />
|
||||
|
||||
<span
|
||||
@if ($isSidebarCollapsibleOnDesktop)
|
||||
x-show="$store.sidebar.isOpen"
|
||||
@endif
|
||||
class="fi-user-menu-trigger-text"
|
||||
>
|
||||
{{ filament()->getUserName($user) }}
|
||||
</span>
|
||||
|
||||
{{
|
||||
\Filament\Support\generate_icon_html(\Filament\Support\Icons\Heroicon::ChevronUp, alias: \Filament\View\PanelsIconAlias::USER_MENU_TOGGLE_BUTTON, attributes: new \Illuminate\View\ComponentAttributeBag([
|
||||
'x-show' => $isSidebarCollapsibleOnDesktop ? '$store.sidebar.isOpen' : null,
|
||||
]))
|
||||
}}
|
||||
</button>
|
||||
@endif
|
||||
</x-slot>
|
||||
|
||||
@if ($hasProfileHeader)
|
||||
@php
|
||||
$item = $itemsBeforeThemeSwitcher['profile'];
|
||||
$itemColor = $item->getColor();
|
||||
$itemIcon = $item->getIcon();
|
||||
|
||||
unset($itemsBeforeThemeSwitcher['profile']);
|
||||
@endphp
|
||||
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_PROFILE_BEFORE) }}
|
||||
|
||||
<x-filament::dropdown.header :color="$itemColor" :icon="$itemIcon">
|
||||
{{ $item->getLabel() }}
|
||||
</x-filament::dropdown.header>
|
||||
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_PROFILE_AFTER) }}
|
||||
@endif
|
||||
|
||||
@if ($itemsBeforeThemeSwitcher->isNotEmpty())
|
||||
<x-filament::dropdown.list>
|
||||
@foreach ($itemsBeforeThemeSwitcher as $key => $item)
|
||||
@if ($key === 'profile')
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_PROFILE_BEFORE) }}
|
||||
|
||||
{{ $item }}
|
||||
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_PROFILE_AFTER) }}
|
||||
@else
|
||||
{{ $item }}
|
||||
@endif
|
||||
@endforeach
|
||||
</x-filament::dropdown.list>
|
||||
@endif
|
||||
|
||||
@if (filament()->hasDarkMode() && (! filament()->hasDarkModeForced()))
|
||||
<x-filament::dropdown.list>
|
||||
<x-filament-panels::theme-switcher />
|
||||
</x-filament::dropdown.list>
|
||||
@endif
|
||||
|
||||
@if ($itemsAfterThemeSwitcher->isNotEmpty())
|
||||
<x-filament::dropdown.list>
|
||||
@foreach ($itemsAfterThemeSwitcher as $key => $item)
|
||||
@if ($key === 'profile')
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_PROFILE_BEFORE) }}
|
||||
|
||||
{{ $item }}
|
||||
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_PROFILE_AFTER) }}
|
||||
@else
|
||||
{{ $item }}
|
||||
@endif
|
||||
@endforeach
|
||||
</x-filament::dropdown.list>
|
||||
@endif
|
||||
</x-filament::dropdown>
|
||||
|
||||
{{ \Filament\Support\Facades\FilamentView::renderHook(\Filament\View\PanelsRenderHook::USER_MENU_AFTER) }}
|
||||
Reference in New Issue
Block a user