From 5b2f889061f9952fc65ebc5609bd1ef95faba853 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 16 Aug 2024 14:37:09 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=84=20Improve=20menu=20location=20form?= =?UTF-8?q?=20styling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/lang/en/menu-builder.php | 4 ++++ resources/lang/vi/menu-builder.php | 4 ++++ src/Resources/MenuResource.php | 19 ++++++++++++++++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/resources/lang/en/menu-builder.php b/resources/lang/en/menu-builder.php index 3974f31..275e60a 100644 --- a/resources/lang/en/menu-builder.php +++ b/resources/lang/en/menu-builder.php @@ -15,6 +15,10 @@ 'label' => 'Locations', 'description' => 'Choose where to display the menu.', 'empty' => 'Unassigned', + 'actions' => [ + 'select_all' => 'Select all', + 'deselect_all' => 'Deselect all', + ], ], 'is_visible' => [ 'label' => 'Visible', diff --git a/resources/lang/vi/menu-builder.php b/resources/lang/vi/menu-builder.php index 7bde323..5789ccb 100644 --- a/resources/lang/vi/menu-builder.php +++ b/resources/lang/vi/menu-builder.php @@ -15,6 +15,10 @@ 'label' => 'Vị trí', 'description' => 'Chọn vị trí hiển thị menu.', 'empty' => 'Chưa gán', + 'actions' => [ + 'select_all' => 'Chọn tất cả', + 'deselect_all' => 'Bỏ chọn tất cả', + ], ], 'is_visible' => [ 'label' => 'Hiển thị', diff --git a/src/Resources/MenuResource.php b/src/Resources/MenuResource.php index 31ff936..2c011d5 100644 --- a/src/Resources/MenuResource.php +++ b/src/Resources/MenuResource.php @@ -6,12 +6,14 @@ use Datlechin\FilamentMenuBuilder\FilamentMenuBuilderPlugin; use Datlechin\FilamentMenuBuilder\Models\Menu; -use Filament\Forms\Components\CheckboxList; +use Filament\Forms\Components\Actions\Action; use Filament\Forms\Components\Component; use Filament\Forms\Components\Group; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Toggle; +use Filament\Forms\Components\ToggleButtons; use Filament\Forms\Form; +use Filament\Forms\Get; use Filament\Forms\Set; use Filament\Resources\Resource; use Filament\Tables; @@ -33,12 +35,23 @@ public static function form(Form $form): Form TextInput::make('name') ->label(__('filament-menu-builder::menu-builder.resource.name.label')) ->required(), - CheckboxList::make('locations') - ->bulkToggleable() + ToggleButtons::make('locations') + ->multiple() + ->inline() + ->reactive() ->visible(fn (string $context) => $context === 'edit' && $locations) ->label(__('filament-menu-builder::menu-builder.resource.locations.label')) ->afterStateHydrated(fn (Menu $menu, Set $set) => $set('locations', $menu->locations->pluck('location'))) ->helperText(__('filament-menu-builder::menu-builder.resource.locations.description')) + ->hintActions([ + Action::make(__('filament-menu-builder::menu-builder.resource.locations.actions.select_all')) + ->action(fn (Set $set) => $set('locations', array_keys($locations))) + ->visible(fn (Get $get) => count($get('locations')) !== count($locations)), + + Action::make(__('filament-menu-builder::menu-builder.resource.locations.actions.deselect_all')) + ->action(fn (Set $set) => $set('locations', [])) + ->visible(fn (Get $get) => count($get('locations')) === count($locations)), + ]) ->options($locations), Toggle::make('is_visible') ->label(__('filament-menu-builder::menu-builder.resource.is_visible.label'))