From 47c28c1456613eccc6023d7dc0172d1d7a2bd001 Mon Sep 17 00:00:00 2001 From: Zep Fietje Date: Tue, 16 May 2023 17:36:55 +0200 Subject: [PATCH 1/5] Improve bulk action group formatting --- .../docs/06-prebuilt-actions/04-delete.md | 10 +++--- .../06-prebuilt-actions/06-force-delete.md | 10 +++--- .../docs/06-prebuilt-actions/07-restore.md | 10 +++--- .../docs/03-resources/01-getting-started.md | 8 +++-- .../docs/03-resources/06-deleting-records.md | 14 ++++---- .../docs/03-resources/07-relation-managers.md | 34 +++++++++++-------- packages/app/stubs/RelationManager.stub | 6 ++-- packages/app/stubs/Resource.stub | 6 ++-- packages/tables/docs/02-getting-started.md | 8 +++-- packages/tables/stubs/Table.stub | 8 +++-- 10 files changed, 69 insertions(+), 45 deletions(-) diff --git a/packages/actions/docs/06-prebuilt-actions/04-delete.md b/packages/actions/docs/06-prebuilt-actions/04-delete.md index 1b254dbb34..2fa86dcb20 100644 --- a/packages/actions/docs/06-prebuilt-actions/04-delete.md +++ b/packages/actions/docs/06-prebuilt-actions/04-delete.md @@ -28,10 +28,12 @@ public function table(Table $table): Table DeleteAction::make(), // ... ]) - ->bulkActions([BulkActionGroup::make([ - DeleteBulkAction::make(), - // ... - ])]); + ->bulkActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + // ... + ]), + ]); } ``` diff --git a/packages/actions/docs/06-prebuilt-actions/06-force-delete.md b/packages/actions/docs/06-prebuilt-actions/06-force-delete.md index 21bd22b469..5cc21d1b6e 100644 --- a/packages/actions/docs/06-prebuilt-actions/06-force-delete.md +++ b/packages/actions/docs/06-prebuilt-actions/06-force-delete.md @@ -28,10 +28,12 @@ public function table(Table $table): Table ForceDeleteAction::make(), // ... ]) - ->bulkActions([BulkActionGroup::make([ - ForceDeleteBulkAction::make(), - // ... - ])]); + ->bulkActions([ + BulkActionGroup::make([ + ForceDeleteBulkAction::make(), + // ... + ]), + ]); } ``` diff --git a/packages/actions/docs/06-prebuilt-actions/07-restore.md b/packages/actions/docs/06-prebuilt-actions/07-restore.md index 318f673e1c..941910cc5b 100644 --- a/packages/actions/docs/06-prebuilt-actions/07-restore.md +++ b/packages/actions/docs/06-prebuilt-actions/07-restore.md @@ -28,10 +28,12 @@ public function table(Table $table): Table RestoreAction::make(), // ... ]) - ->bulkActions([BulkActionGroup::make([ - RestoreBulkAction::make(), - // ... - ])]); + ->bulkActions([ + BulkActionGroup::make([ + RestoreBulkAction::make(), + // ... + ]), + ]); } ``` diff --git a/packages/app/docs/03-resources/01-getting-started.md b/packages/app/docs/03-resources/01-getting-started.md index 7bc9bc069f..dfdcedbeb9 100644 --- a/packages/app/docs/03-resources/01-getting-started.md +++ b/packages/app/docs/03-resources/01-getting-started.md @@ -168,9 +168,11 @@ public static function table(Table $table): Table ->actions([ Tables\Actions\EditAction::make(), ]) - ->bulkActions([Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - ])]); + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); } ``` diff --git a/packages/app/docs/03-resources/06-deleting-records.md b/packages/app/docs/03-resources/06-deleting-records.md index bed9a55b08..abff07d5b8 100644 --- a/packages/app/docs/03-resources/06-deleting-records.md +++ b/packages/app/docs/03-resources/06-deleting-records.md @@ -43,12 +43,14 @@ public static function table(Table $table): Table Tables\Actions\RestoreAction::make(), // ... ]) - ->bulkActions([Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - Tables\Actions\ForceDeleteBulkAction::make(), - Tables\Actions\RestoreBulkAction::make(), - // ... - ])]); + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + Tables\Actions\ForceDeleteBulkAction::make(), + Tables\Actions\RestoreBulkAction::make(), + // ... + ]), + ]); } public static function getEloquentQuery(): Builder diff --git a/packages/app/docs/03-resources/07-relation-managers.md b/packages/app/docs/03-resources/07-relation-managers.md index 20b382aa48..0538781b06 100644 --- a/packages/app/docs/03-resources/07-relation-managers.md +++ b/packages/app/docs/03-resources/07-relation-managers.md @@ -248,10 +248,12 @@ public function table(Table $table): Table // ... Tables\Actions\DetachAction::make(), ]) - ->bulkActions([Tables\Actions\BulkActionGroup::make([ - // ... - Tables\Actions\DetachBulkAction::make(), - ])]); + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + // ... + Tables\Actions\DetachBulkAction::make(), + ]), + ]); } ``` @@ -338,10 +340,12 @@ public function table(Table $table): Table // ... Tables\Actions\DissociateAction::make(), ]) - ->bulkActions([Tables\Actions\BulkActionGroup::make([ - // ... - Tables\Actions\DissociateBulkAction::make(), - ])]); + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + // ... + Tables\Actions\DissociateBulkAction::make(), + ]), + ]); } ``` @@ -426,12 +430,14 @@ public function table(Table $table): Table Tables\Actions\RestoreAction::make(), // ... ]) - ->bulkActions([BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - Tables\Actions\ForceDeleteBulkAction::make(), - Tables\Actions\RestoreBulkAction::make(), - // ... - ])]); + ->bulkActions([ + BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + Tables\Actions\ForceDeleteBulkAction::make(), + Tables\Actions\RestoreBulkAction::make(), + // ... + ]), + ]); } protected function getTableQuery(): Builder diff --git a/packages/app/stubs/RelationManager.stub b/packages/app/stubs/RelationManager.stub index 53970085e2..63b8d2e674 100644 --- a/packages/app/stubs/RelationManager.stub +++ b/packages/app/stubs/RelationManager.stub @@ -41,8 +41,10 @@ class {{ managerClass }} extends RelationManager ->actions([ {{ tableActions }} ]) - ->bulkActions([Tables\Actions\BulkActionGroup::make([ + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ {{ tableBulkActions }} - ])]); + ]), + ]); }{{ eloquentQuery }} } diff --git a/packages/app/stubs/Resource.stub b/packages/app/stubs/Resource.stub index a039d34a6c..414ec4a683 100644 --- a/packages/app/stubs/Resource.stub +++ b/packages/app/stubs/Resource.stub @@ -39,9 +39,11 @@ class {{ resourceClass }} extends Resource ->actions([ {{ tableActions }} ]) - ->bulkActions([Tables\Actions\BulkActionGroup::make([ + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ {{ tableBulkActions }} - ])]); + ]), + ]); } {{ relations }} public static function getPages(): array diff --git a/packages/tables/docs/02-getting-started.md b/packages/tables/docs/02-getting-started.md index bf435b98b6..30dcb40a37 100644 --- a/packages/tables/docs/02-getting-started.md +++ b/packages/tables/docs/02-getting-started.md @@ -134,9 +134,11 @@ public function table(Table $table): Table }) ->visible(fn (Post $record): bool => $record->is_featured), ]) - ->bulkActions([BulkActionGroup::make([ - DeleteBulkAction::make(), - ])]); + ->bulkActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]); } ``` diff --git a/packages/tables/stubs/Table.stub b/packages/tables/stubs/Table.stub index 5b1bb5d169..8f5c713b32 100644 --- a/packages/tables/stubs/Table.stub +++ b/packages/tables/stubs/Table.stub @@ -28,9 +28,11 @@ class {{ class }} extends Component implements HasTable ->actions([ // ]) - ->bulkActions([Tables\Actions\BulkActionGroup::make([ - // - ])]); + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + // + ]), + ]); } public function render(): View From f23d051f43160ea6b7268eced50f00f810535723 Mon Sep 17 00:00:00 2001 From: Zep Fietje Date: Tue, 16 May 2023 22:45:57 +0200 Subject: [PATCH 2/5] Update indentation in make commands --- packages/app/src/Commands/MakeRelationManagerCommand.php | 2 +- packages/app/src/Commands/MakeResourceCommand.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/app/src/Commands/MakeRelationManagerCommand.php b/packages/app/src/Commands/MakeRelationManagerCommand.php index 090174859b..d7ccf2e876 100644 --- a/packages/app/src/Commands/MakeRelationManagerCommand.php +++ b/packages/app/src/Commands/MakeRelationManagerCommand.php @@ -151,7 +151,7 @@ class MakeRelationManagerCommand extends Command 'recordTitleAttribute' => $recordTitleAttribute, 'relationship' => $relationship, 'tableActions' => $this->indentString($tableActions, 4), - 'tableBulkActions' => $this->indentString($tableBulkActions, 4), + 'tableBulkActions' => $this->indentString($tableBulkActions, 5), 'tableFilters' => $this->indentString( $this->option('soft-deletes') ? 'Tables\Filters\TrashedFilter::make()' : '//', 4, diff --git a/packages/app/src/Commands/MakeResourceCommand.php b/packages/app/src/Commands/MakeResourceCommand.php index 9ee1325612..088691d848 100644 --- a/packages/app/src/Commands/MakeResourceCommand.php +++ b/packages/app/src/Commands/MakeResourceCommand.php @@ -181,7 +181,7 @@ class MakeResourceCommand extends Command 'resource' => "{$namespace}\\{$resourceClass}", 'resourceClass' => $resourceClass, 'tableActions' => $this->indentString($tableActions, 4), - 'tableBulkActions' => $this->indentString($tableBulkActions, 4), + 'tableBulkActions' => $this->indentString($tableBulkActions, 5), 'tableColumns' => $this->indentString($this->option('generate') ? $this->getResourceTableColumns( 'App\Models' . ($modelNamespace !== '' ? "\\{$modelNamespace}" : '') . '\\' . $modelClass, ) : '//', 4), From 0ea5c40e079acf5ae5ff0887a7f4a97c8bd55879 Mon Sep 17 00:00:00 2001 From: Zep Fietje Date: Wed, 17 May 2023 00:29:02 +0200 Subject: [PATCH 3/5] Automatically group action group actions in list --- .../views/components/group.blade.php | 34 ++++++++++++++----- packages/actions/src/ActionGroup.php | 1 - .../actions/src/Concerns/CanBeDivided.php | 22 ------------ 3 files changed, 25 insertions(+), 32 deletions(-) delete mode 100644 packages/actions/src/Concerns/CanBeDivided.php diff --git a/packages/actions/resources/views/components/group.blade.php b/packages/actions/resources/views/components/group.blade.php index 7ab24bc033..fd358a4d41 100644 --- a/packages/actions/resources/views/components/group.blade.php +++ b/packages/actions/resources/views/components/group.blade.php @@ -51,13 +51,31 @@ @endforeach @else @php - if ($group->isDivided()) { - $actionLists = array_map( - fn ($action): array => [$action], + $actions = array_values( + array_filter( $group->getActions(), - ); - } else { - $actionLists = [$group->getActions()]; + fn ($action): bool => $action->isVisible(), + ), + ); + + $actionLists = []; + $actionList = []; + + foreach ($actions as $key => $action) { + if ($action instanceof \Filament\Actions\ActionGroup && (! $action->hasDropdown())) { + if (filled($actionList)) { + $actionLists[] = $actionList; + $actionList = []; + } + + $actionLists[] = $action->getActions(); + } else { + $actionList[] = $action; + } + } + + if (filled($actionList)) { + $actionLists[] = $actionList; } @endphp @@ -86,9 +104,7 @@ @foreach ($actionLists as $actions) @foreach ($actions as $action) - @if ($action->isVisible()) - {{ $action }} - @endif + {{ $action }} @endforeach @endforeach diff --git a/packages/actions/src/ActionGroup.php b/packages/actions/src/ActionGroup.php index 6412b80383..2785f6b782 100644 --- a/packages/actions/src/ActionGroup.php +++ b/packages/actions/src/ActionGroup.php @@ -9,7 +9,6 @@ use Livewire\Component; class ActionGroup extends ViewComponent implements HasLivewire { - use Concerns\CanBeDivided; use Concerns\CanBeHidden { isHidden as baseIsHidden; } diff --git a/packages/actions/src/Concerns/CanBeDivided.php b/packages/actions/src/Concerns/CanBeDivided.php deleted file mode 100644 index c992df1ba0..0000000000 --- a/packages/actions/src/Concerns/CanBeDivided.php +++ /dev/null @@ -1,22 +0,0 @@ -isDivided = $condition; - - return $this; - } - - public function isDivided(): bool - { - return $this->evaluate($this->isDivided); - } -} From 2abc7699c56d16cda28bc9284f3fee6ade6da995 Mon Sep 17 00:00:00 2001 From: Zep Fietje Date: Wed, 17 May 2023 00:36:27 +0200 Subject: [PATCH 4/5] Clean up --- .../actions/resources/views/components/group.blade.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/actions/resources/views/components/group.blade.php b/packages/actions/resources/views/components/group.blade.php index fd358a4d41..0dbfe1d28b 100644 --- a/packages/actions/resources/views/components/group.blade.php +++ b/packages/actions/resources/views/components/group.blade.php @@ -51,17 +51,15 @@ @endforeach @else @php - $actions = array_values( - array_filter( - $group->getActions(), - fn ($action): bool => $action->isVisible(), - ), + $actions = array_filter( + $group->getActions(), + fn ($action): bool => $action->isVisible(), ); $actionLists = []; $actionList = []; - foreach ($actions as $key => $action) { + foreach ($actions as $action) { if ($action instanceof \Filament\Actions\ActionGroup && (! $action->hasDropdown())) { if (filled($actionList)) { $actionLists[] = $actionList; From bc611379a7f43b3fb95c0fed075b64196933acfa Mon Sep 17 00:00:00 2001 From: Zep Fietje Date: Wed, 17 May 2023 00:38:13 +0200 Subject: [PATCH 5/5] Use count instead of filled --- packages/actions/resources/views/components/group.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/actions/resources/views/components/group.blade.php b/packages/actions/resources/views/components/group.blade.php index 0dbfe1d28b..ca4832ff4d 100644 --- a/packages/actions/resources/views/components/group.blade.php +++ b/packages/actions/resources/views/components/group.blade.php @@ -61,7 +61,7 @@ foreach ($actions as $action) { if ($action instanceof \Filament\Actions\ActionGroup && (! $action->hasDropdown())) { - if (filled($actionList)) { + if (count($actionList)) { $actionLists[] = $actionList; $actionList = []; } @@ -72,7 +72,7 @@ } } - if (filled($actionList)) { + if (count($actionList)) { $actionLists[] = $actionList; } @endphp