From 6ce5e7d680bac8fb4073c880268e6979dacd622a Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 8 Aug 2024 13:08:53 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20Add=20empty=20state=20for=20menu?= =?UTF-8?q?=20panels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/lang/en/menu-builder.php | 6 ++++++ resources/lang/vi/menu-builder.php | 6 ++++++ resources/views/components/empty-state.blade.php | 11 +++++++++++ resources/views/livewire/panel.blade.php | 12 +++++++----- src/FilamentMenuBuilderPlugin.php | 4 +--- src/Livewire/MenuPanel.php | 12 +++++++++--- 6 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 resources/views/components/empty-state.blade.php diff --git a/resources/lang/en/menu-builder.php b/resources/lang/en/menu-builder.php index 852097d..91f2d20 100644 --- a/resources/lang/en/menu-builder.php +++ b/resources/lang/en/menu-builder.php @@ -44,4 +44,10 @@ 'title' => 'Link created', ], ], + 'panel' => [ + 'empty' => [ + 'heading' => 'No items found', + 'description' => 'There are no items in this menu.', + ], + ], ]; diff --git a/resources/lang/vi/menu-builder.php b/resources/lang/vi/menu-builder.php index 1bc440f..377d4e1 100644 --- a/resources/lang/vi/menu-builder.php +++ b/resources/lang/vi/menu-builder.php @@ -44,4 +44,10 @@ 'title' => 'Liên kết đã được tạo', ], ], + 'panel' => [ + 'empty' => [ + 'heading' => 'Không tìm thấy mục nào', + 'description' => 'Không có mục nào trong menu này.', + ], + ], ]; diff --git a/resources/views/components/empty-state.blade.php b/resources/views/components/empty-state.blade.php new file mode 100644 index 0000000..62261d4 --- /dev/null +++ b/resources/views/components/empty-state.blade.php @@ -0,0 +1,11 @@ +@props([ + 'heading' => __('filament-menu-builder::menu-builder.panel.empty.heading'), + 'description' => __('filament-menu-builder::menu-builder.panel.empty.description'), + 'icon' => 'heroicon-o-link-slash', +]) + + diff --git a/resources/views/livewire/panel.blade.php b/resources/views/livewire/panel.blade.php index 4443bee..51c5a4b 100644 --- a/resources/views/livewire/panel.blade.php +++ b/resources/views/livewire/panel.blade.php @@ -7,10 +7,12 @@ > {{ $this->form }} - - - {{ __('filament-menu-builder::menu-builder.actions.add.label') }} - - + @if ($this->items) + + + {{ __('filament-menu-builder::menu-builder.actions.add.label') }} + + + @endif diff --git a/src/FilamentMenuBuilderPlugin.php b/src/FilamentMenuBuilderPlugin.php index a08333c..a97f8cd 100644 --- a/src/FilamentMenuBuilderPlugin.php +++ b/src/FilamentMenuBuilderPlugin.php @@ -61,9 +61,7 @@ public function addLocation(string $key, string $label): static public function addMenuPanel(MenuPanel $menuPanel): static { - if ($menuPanel->getItems()) { - $this->menuPanels[] = $menuPanel; - } + $this->menuPanels[] = $menuPanel; return $this; } diff --git a/src/Livewire/MenuPanel.php b/src/Livewire/MenuPanel.php index 31be95b..1fff63f 100644 --- a/src/Livewire/MenuPanel.php +++ b/src/Livewire/MenuPanel.php @@ -6,7 +6,7 @@ use Datlechin\FilamentMenuBuilder\Contracts\MenuPanel as ContractsMenuPanel; use Datlechin\FilamentMenuBuilder\Models\Menu; -use Filament\Forms\Components\CheckboxList; +use Filament\Forms\Components; use Filament\Forms\Concerns\InteractsWithForms; use Filament\Forms\Contracts\HasForms; use Filament\Forms\Form; @@ -75,13 +75,19 @@ public function add(): void public function form(Form $form): Form { + $items = collect($this->items)->mapWithKeys(fn ($item) => [$item['title'] => $item['title']]); + return $form ->schema([ - CheckboxList::make('data') + Components\View::make('filament-menu-builder::components.empty-state') + ->visible($items->isEmpty()), + + Components\CheckboxList::make('data') ->hiddenLabel() ->required() ->bulkToggleable() - ->options(collect($this->items)->mapWithKeys(fn ($item) => [$item['title'] => $item['title']])), + ->visible($items->isNotEmpty()) + ->options($items), ]); }