From dd77555c421c0bb8a182e7fb0a73707ccb437781 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 27 Jan 2026 20:07:18 -0500 Subject: [PATCH] Add tooltips to actions across admin area (#2134) Co-authored-by: Boy132 --- app/Enums/CustomizationKey.php | 3 + app/Filament/Admin/Pages/Health.php | 5 +- app/Filament/Admin/Pages/ListLogs.php | 14 +- app/Filament/Admin/Pages/Settings.php | 10 +- app/Filament/Admin/Pages/ViewLogs.php | 12 +- .../Resources/ApiKeys/ApiKeyResource.php | 10 +- .../Resources/ApiKeys/Pages/CreateApiKey.php | 8 +- .../Resources/ApiKeys/Pages/ListApiKeys.php | 15 --- .../DatabaseHosts/DatabaseHostResource.php | 11 +- .../DatabaseHosts/Pages/EditDatabaseHost.php | 13 +- .../DatabaseHosts/Pages/ListDatabaseHosts.php | 15 --- .../DatabaseHosts/Pages/ViewDatabaseHost.php | 4 +- .../DatabasesRelationManager.php | 4 +- .../Admin/Resources/Eggs/Pages/CreateEgg.php | 8 +- .../Admin/Resources/Eggs/Pages/EditEgg.php | 17 ++- .../Admin/Resources/Eggs/Pages/ListEggs.php | 105 +++++++-------- .../Admin/Resources/Mounts/MountResource.php | 11 +- .../Resources/Mounts/Pages/CreateMount.php | 8 +- .../Resources/Mounts/Pages/EditMount.php | 11 +- .../Resources/Mounts/Pages/ListMounts.php | 15 --- .../Resources/Mounts/Pages/ViewMount.php | 5 +- .../Resources/Nodes/Pages/CreateNode.php | 2 +- .../Admin/Resources/Nodes/Pages/EditNode.php | 25 ++-- .../Admin/Resources/Nodes/Pages/ListNodes.php | 18 +-- .../AllocationsRelationManager.php | 7 +- .../Resources/Plugins/PluginResource.php | 27 ++-- .../Resources/Roles/Pages/CreateRole.php | 8 +- .../Admin/Resources/Roles/Pages/EditRole.php | 13 +- .../Admin/Resources/Roles/Pages/ListRoles.php | 15 --- .../Admin/Resources/Roles/Pages/ViewRole.php | 4 +- .../Admin/Resources/Roles/RoleResource.php | 15 ++- .../Resources/Servers/Pages/CreateServer.php | 2 +- .../Resources/Servers/Pages/EditServer.php | 26 ++-- .../Resources/Servers/Pages/ListServers.php | 23 +--- .../AllocationsRelationManager.php | 7 +- .../DatabasesRelationManager.php | 6 +- .../Resources/Users/Pages/CreateUser.php | 8 +- .../Admin/Resources/Users/Pages/EditUser.php | 13 +- .../Admin/Resources/Users/Pages/ListUsers.php | 15 --- .../Admin/Resources/Users/Pages/ViewUser.php | 4 +- .../Admin/Resources/Users/UserResource.php | 17 ++- .../Pages/CreateWebhookConfiguration.php | 13 +- .../Pages/EditWebhookConfiguration.php | 11 +- .../Pages/ListWebhookConfigurations.php | 15 --- .../Pages/ViewWebhookConfiguration.php | 4 +- .../Resources/Webhooks/WebhookResource.php | 11 +- app/Filament/Admin/Widgets/CanaryWidget.php | 2 +- app/Filament/Admin/Widgets/HelpWidget.php | 2 +- app/Filament/Admin/Widgets/NoNodesWidget.php | 2 +- app/Filament/Admin/Widgets/SupportWidget.php | 2 +- app/Filament/Admin/Widgets/UpdateWidget.php | 2 +- .../Components/Actions/DeleteServerIcon.php | 7 +- .../Components/Actions/ExportEggAction.php | 11 +- .../Actions/ExportScheduleAction.php | 5 - .../Components/Actions/ImportEggAction.php | 7 +- .../Actions/PreviewStartupAction.php | 2 +- .../Actions/RotateDatabasePasswordAction.php | 4 +- .../Components/Actions/UpdateEggAction.php | 7 +- .../Actions/UpdateNodeAllocations.php | 7 +- app/Filament/Pages/Auth/EditProfile.php | 31 ++++- app/Filament/Server/Pages/Settings.php | 6 +- .../Resources/Activities/ActivityResource.php | 2 +- .../Allocations/AllocationResource.php | 3 +- .../Allocations/Pages/ListAllocations.php | 8 -- .../Resources/Backups/BackupResource.php | 2 +- .../Resources/Backups/Pages/ListBackups.php | 8 -- .../Resources/Databases/DatabaseResource.php | 3 +- .../Databases/Pages/ListDatabases.php | 8 -- .../Resources/Files/Pages/EditFiles.php | 6 +- .../Resources/Files/Pages/ListFiles.php | 59 ++++++--- .../Schedules/Pages/EditSchedule.php | 12 +- .../Schedules/Pages/ListSchedules.php | 8 -- .../Schedules/Pages/ViewSchedule.php | 3 +- .../Resources/Schedules/ScheduleResource.php | 5 +- .../Resources/Subusers/Pages/ListSubusers.php | 8 -- .../Resources/Subusers/SubuserResource.php | 3 +- .../Server/ServerInstalledListener.php | 2 +- app/Listeners/Server/SubUserAddedListener.php | 2 +- .../Filament/FilamentServiceProvider.php | 120 +++++++++++++++++- lang/en/admin/egg.php | 1 + lang/en/admin/server.php | 2 + .../server/pages/file-upload.blade.php | 17 +-- .../server/pages/list-files.blade.php | 8 +- 83 files changed, 505 insertions(+), 495 deletions(-) diff --git a/app/Enums/CustomizationKey.php b/app/Enums/CustomizationKey.php index c76aa8157..c5de12425 100644 --- a/app/Enums/CustomizationKey.php +++ b/app/Enums/CustomizationKey.php @@ -11,6 +11,8 @@ enum CustomizationKey: string case TopNavigation = 'top_navigation'; case DashboardLayout = 'dashboard_layout'; + case ButtonStyle = 'button_style'; + public function getDefaultValue(): string|int|bool { return match ($this) { @@ -20,6 +22,7 @@ enum CustomizationKey: string self::ConsoleGraphPeriod => 30, self::TopNavigation => config('panel.filament.default-navigation', 'sidebar'), self::DashboardLayout => 'grid', + self::ButtonStyle => true, }; } diff --git a/app/Filament/Admin/Pages/Health.php b/app/Filament/Admin/Pages/Health.php index 55b7dd3f7..7518d5ab7 100644 --- a/app/Filament/Admin/Pages/Health.php +++ b/app/Filament/Admin/Pages/Health.php @@ -8,7 +8,6 @@ use Carbon\Carbon; use Filament\Actions\Action; use Filament\Notifications\Notification; use Filament\Pages\Page; -use Filament\Support\Enums\IconSize; use Illuminate\Support\Facades\Artisan; use Spatie\Health\Commands\RunHealthChecksCommand; use Spatie\Health\Enums\Status; @@ -49,8 +48,8 @@ class Health extends Page { return [ Action::make('refresh') - ->label(trans('admin/health.refresh')) - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() + ->tooltip(trans('admin/health.refresh')) ->icon(TablerIcon::Refresh) ->action('refresh'), ]; diff --git a/app/Filament/Admin/Pages/ListLogs.php b/app/Filament/Admin/Pages/ListLogs.php index 69d2177b7..032d3c66a 100644 --- a/app/Filament/Admin/Pages/ListLogs.php +++ b/app/Filament/Admin/Pages/ListLogs.php @@ -9,10 +9,10 @@ use Boquizo\FilamentLogViewer\Actions\ViewLogAction; use Boquizo\FilamentLogViewer\Pages\ListLogs as BaseListLogs; use Boquizo\FilamentLogViewer\Tables\Columns\LevelColumn; use Boquizo\FilamentLogViewer\Tables\Columns\NameColumn; +use Boquizo\FilamentLogViewer\UseCases\ParseDateUseCase; use Boquizo\FilamentLogViewer\Utils\Level; use Filament\Actions\Action; use Filament\Notifications\Notification; -use Filament\Support\Enums\IconSize; use Filament\Tables\Table; use Illuminate\Support\Facades\Http; @@ -47,12 +47,14 @@ class ListLogs extends BaseListLogs ]) ->recordActions([ ViewLogAction::make() - ->icon(TablerIcon::FileDescription)->iconSize(IconSize::Large)->iconButton(), + ->icon(TablerIcon::FileDescription)->iconButton(), DownloadAction::make() - ->icon(TablerIcon::FileDownload)->iconSize(IconSize::Large)->iconButton(), + ->tooltip(fn ($record) => trans('filament-log-viewer::log.table.actions.download.label', ['log' => ParseDateUseCase::execute($record['date'])])) + ->icon(TablerIcon::FileDownload)->iconButton(), Action::make('uploadLogs') ->hiddenLabel() - ->icon(TablerIcon::WorldUpload)->iconSize(IconSize::Large)->iconButton() + ->tooltip(trans('admin/log.actions.upload_tooltip', ['url' => 'logs.pelican.dev'])) + ->icon(TablerIcon::WorldUpload) ->requiresConfirmation() ->modalHeading(trans('admin/log.actions.upload_logs')) ->modalDescription(fn ($record) => trans('admin/log.actions.upload_logs_description', ['file' => $record['date'], 'url' => 'https://logs.pelican.dev'])) @@ -101,7 +103,7 @@ class ListLogs extends BaseListLogs ->body("{$url}") ->success() ->actions([ - Action::make('viewLogs') + Action::make('exclude_viewLogs') ->label(trans('admin/log.actions.view_logs')) ->url($url) ->openUrlInNewTab(true), @@ -120,7 +122,7 @@ class ListLogs extends BaseListLogs } }), DeleteAction::make() - ->iconSize(IconSize::Medium)->iconButton(), + ->icon(TablerIcon::Trash)->iconButton(), ]); } } diff --git a/app/Filament/Admin/Pages/Settings.php b/app/Filament/Admin/Pages/Settings.php index fbc26f7db..2fdfd9df0 100644 --- a/app/Filament/Admin/Pages/Settings.php +++ b/app/Filament/Admin/Pages/Settings.php @@ -38,7 +38,6 @@ use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Contracts\HasSchemas; use Filament\Schemas\Schema; -use Filament\Support\Enums\IconSize; use Filament\Support\Enums\Width; use Illuminate\Http\Client\Factory; use Illuminate\Support\Arr; @@ -245,14 +244,14 @@ class Settings extends Page implements HasSchemas ->placeholder(trans('admin/setting.general.trusted_proxies_help')) ->default(env('TRUSTED_PROXIES', implode(',', Arr::wrap(config('trustedproxy.proxies'))))) ->hintActions([ - Action::make('clear') + Action::make('hint_clear') ->label(trans('admin/setting.general.clear')) ->color('danger') ->icon(TablerIcon::Trash) ->requiresConfirmation() ->authorize(fn () => user()?->can('update settings')) ->action(fn (Set $set) => $set('TRUSTED_PROXIES', [])), - Action::make('cloudflare') + Action::make('hint_cloudflare') ->label(trans('admin/setting.general.set_to_cf')) ->icon(TablerIcon::BrandCloudflare) ->authorize(fn () => user()?->can('update settings')) @@ -350,7 +349,7 @@ class Settings extends Page implements HasSchemas ->live() ->default(env('MAIL_MAILER', config('mail.default'))) ->hintAction( - Action::make('test') + Action::make('hint_test') ->label(trans('admin/setting.mail.test_mail')) ->icon(TablerIcon::Send) ->hidden(fn (Get $get) => $get('MAIL_MAILER') === 'log') @@ -853,9 +852,10 @@ class Settings extends Page implements HasSchemas { return [ Action::make('save') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(TablerIcon::DeviceFloppy) ->action('save') + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->authorize(fn () => user()?->can('update settings')) ->keyBindings(['mod+s']), ]; diff --git a/app/Filament/Admin/Pages/ViewLogs.php b/app/Filament/Admin/Pages/ViewLogs.php index 3d2f5d19d..f17a70eac 100644 --- a/app/Filament/Admin/Pages/ViewLogs.php +++ b/app/Filament/Admin/Pages/ViewLogs.php @@ -10,7 +10,6 @@ use Boquizo\FilamentLogViewer\Actions\DownloadAction; use Boquizo\FilamentLogViewer\Pages\ViewLog as BaseViewLog; use Filament\Actions\Action; use Filament\Notifications\Notification; -use Filament\Support\Enums\IconSize; use Illuminate\Support\Facades\Http; class ViewLogs extends BaseViewLog @@ -21,14 +20,15 @@ class ViewLogs extends BaseViewLog { return [ BackAction::make() - ->icon(TablerIcon::ArrowLeft)->iconSize(IconSize::ExtraLarge)->iconButton(), + ->tooltip(trans('filament-log-viewer::log.table.actions.close.label')) + ->icon(TablerIcon::ArrowLeft)->iconButton(), DeleteAction::make(withTooltip: true) - ->iconSize(IconSize::ExtraLarge)->iconButton(), + ->icon(TablerIcon::Trash)->iconButton(), DownloadAction::make(withTooltip: true) - ->icon(TablerIcon::FileDownload)->iconSize(IconSize::ExtraLarge)->iconButton(), + ->icon(TablerIcon::FileDownload)->iconButton(), Action::make('uploadLogs') ->hiddenLabel() - ->icon(TablerIcon::WorldUpload)->iconSize(IconSize::ExtraLarge)->iconButton() + ->icon(TablerIcon::WorldUpload) ->requiresConfirmation() ->tooltip(trans('admin/log.actions.upload_tooltip', ['url' => 'logs.pelican.dev'])) ->modalHeading(trans('admin/log.actions.upload_logs')) @@ -78,7 +78,7 @@ class ViewLogs extends BaseViewLog ->body("{$url}") ->success() ->actions([ - Action::make('viewLogs') + Action::make('exclude_viewLogs') ->label(trans('admin/log.actions.view_logs')) ->url($url) ->openUrlInNewTab(true), diff --git a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php index 73a72258c..e5eb939e4 100644 --- a/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php +++ b/app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php @@ -14,6 +14,7 @@ use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use BackedEnum; use Exception; +use Filament\Actions\CreateAction; use Filament\Actions\DeleteAction; use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\Textarea; @@ -22,7 +23,6 @@ use Filament\Resources\Pages\PageRegistration; use Filament\Resources\Resource; use Filament\Schemas\Components\Fieldset; use Filament\Schemas\Schema; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; @@ -98,8 +98,12 @@ class ApiKeyResource extends Resource ->url(fn (ApiKey $apiKey) => user()?->can('update', $apiKey->user) ? EditUser::getUrl(['record' => $apiKey->user]) : null), ]) ->recordActions([ - DeleteAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), + DeleteAction::make(), + ]) + ->toolbarActions([ + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), ]) ->emptyStateIcon(TablerIcon::Key) ->emptyStateDescription('') diff --git a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php index 1ad431494..0b4b38263 100644 --- a/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php +++ b/app/Filament/Admin/Resources/ApiKeys/Pages/CreateApiKey.php @@ -10,7 +10,6 @@ use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Resources\Pages\CreateRecord; -use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; @@ -27,8 +26,11 @@ class CreateApiKey extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('create') + ->hiddenLabel() + ->action('create') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.create.label')) ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php b/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php index adaa15e20..fc5fc9648 100644 --- a/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php +++ b/app/Filament/Admin/Resources/ApiKeys/Pages/ListApiKeys.php @@ -2,15 +2,10 @@ namespace App\Filament\Admin\Resources\ApiKeys\Pages; -use App\Enums\TablerIcon; use App\Filament\Admin\Resources\ApiKeys\ApiKeyResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; class ListApiKeys extends ListRecords { @@ -18,14 +13,4 @@ class ListApiKeys extends ListRecords use CanCustomizeHeaderWidgets; protected static string $resource = ApiKeyResource::class; - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::FilePlus), - ]; - } } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php index bd0ef622d..df20c38ea 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php @@ -15,6 +15,8 @@ use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use BackedEnum; use Exception; +use Filament\Actions\BulkActionGroup; +use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ViewAction; @@ -96,8 +98,13 @@ class DatabaseHostResource extends Resource ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()), EditAction::make(), ]) - ->groupedBulkActions([ - DeleteBulkAction::make(), + ->toolbarActions([ + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), ]) ->emptyStateIcon(TablerIcon::Database) ->emptyStateDescription('') diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php index 103a73a7d..a7672cf57 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/EditDatabaseHost.php @@ -13,7 +13,6 @@ use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Notifications\Notification; use Filament\Resources\Pages\EditRecord; -use Filament\Support\Enums\IconSize; use Filament\Support\Exceptions\Halt; use Illuminate\Database\Eloquent\Model; use PDOException; @@ -37,11 +36,13 @@ class EditDatabaseHost extends EditRecord { return [ DeleteAction::make() - ->label(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0 ? trans('admin/databasehost.delete_help') : trans('filament-actions::delete.single.modal.actions.delete.label')) - ->disabled(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0) - ->iconButton()->iconSize(IconSize::ExtraLarge), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->tooltip(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0 ? trans('admin/databasehost.delete_help') : trans('filament-actions::delete.single.modal.actions.delete.label')) + ->disabled(fn (DatabaseHost $databaseHost) => $databaseHost->databases()->count() > 0), + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php index 39737c36d..7cae7c055 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ListDatabaseHosts.php @@ -2,15 +2,10 @@ namespace App\Filament\Admin\Resources\DatabaseHosts\Pages; -use App\Enums\TablerIcon; use App\Filament\Admin\Resources\DatabaseHosts\DatabaseHostResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; class ListDatabaseHosts extends ListRecords { @@ -18,14 +13,4 @@ class ListDatabaseHosts extends ListRecords use CanCustomizeHeaderWidgets; protected static string $resource = DatabaseHostResource::class; - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::DatabasePlus), - ]; - } } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ViewDatabaseHost.php b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ViewDatabaseHost.php index a89affbb7..318d979b2 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/Pages/ViewDatabaseHost.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/Pages/ViewDatabaseHost.php @@ -9,7 +9,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; -use Filament\Support\Enums\IconSize; class ViewDatabaseHost extends ViewRecord { @@ -22,8 +21,7 @@ class ViewDatabaseHost extends ViewRecord protected function getDefaultHeaderActions(): array { return [ - EditAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), + EditAction::make(), ]; } } diff --git a/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php b/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php index 74053ff5d..73eda7ece 100644 --- a/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php +++ b/app/Filament/Admin/Resources/DatabaseHosts/RelationManagers/DatabasesRelationManager.php @@ -10,7 +10,6 @@ use Filament\Actions\ViewAction; use Filament\Forms\Components\TextInput; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Schema; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -70,8 +69,7 @@ class DatabasesRelationManager extends RelationManager ->recordActions([ ViewAction::make() ->color('primary'), - DeleteAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), + DeleteAction::make(), ]); } } diff --git a/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php b/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php index b5dd8cbb1..d782eca25 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/CreateEgg.php @@ -29,7 +29,6 @@ use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; -use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; use Illuminate\Validation\Rules\Unique; @@ -48,8 +47,11 @@ class CreateEgg extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('create') + ->hiddenLabel() + ->action('create') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.create.label')) ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php b/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php index a534e900d..d0fc33781 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php @@ -85,7 +85,8 @@ class EditEgg extends EditRecord ->columnSpanFull(), Flex::make([ Action::make('uploadImage') - ->iconButton() + ->hiddenLabel() + ->tooltip(trans('admin/egg.import.import_image')) ->iconSize(IconSize::Large) ->icon(TablerIcon::PhotoUp) ->modal() @@ -210,8 +211,8 @@ class EditEgg extends EditRecord Action::make('delete_image') ->visible(fn ($record) => $record->image) ->hiddenLabel() + ->tooltip(trans('admin/egg.import.delete_image')) ->icon(TablerIcon::Trash) - ->iconButton() ->iconSize(IconSize::Large) ->color('danger') ->action(function ($record) { @@ -449,7 +450,7 @@ class EditEgg extends EditRecord return [ DeleteAction::make() ->disabled(fn (Egg $egg): bool => $egg->servers()->count() > 0) - ->label(fn (Egg $egg): string => $egg->servers()->count() <= 0 ? trans('filament-actions::delete.single.label') : trans('admin/egg.in_use')) + ->tooltip(fn (Egg $egg): string => $egg->servers()->count() <= 0 ? trans('filament-actions::delete.single.label') : trans('admin/egg.in_use')) ->successNotification(fn (Egg $egg) => Notification::make() ->success() ->title(trans('admin/egg.delete_success')) @@ -459,13 +460,15 @@ class EditEgg extends EditRecord ->danger() ->title(trans('admin/egg.delete_failed')) ->body(trans('admin/egg.could_not_delete', ['egg' => $egg->name])) - ) - ->iconButton()->iconSize(IconSize::ExtraLarge), + ), ExportEggAction::make(), ImportEggAction::make() ->multiple(false), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php index f4161fdc3..c904393fd 100644 --- a/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php +++ b/app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php @@ -13,15 +13,13 @@ use App\Models\Egg; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; use Exception; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; +use Filament\Actions\BulkActionGroup; use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ReplicateAction; use Filament\Notifications\Notification; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -66,19 +64,13 @@ class ListEggs extends ListRecords ]) ->recordActions([ EditAction::make() - ->iconButton() - ->tooltip(trans('filament-actions::edit.single.label')) - ->iconSize(IconSize::Large), + ->tooltip(trans('filament-actions::edit.single.label')), ExportEggAction::make() - ->tooltip(trans('filament-actions::export.modal.actions.export.label')) - ->iconSize(IconSize::Large), + ->tooltip(trans('filament-actions::export.modal.actions.export.label')), UpdateEggAction::make() - ->tooltip(trans_choice('admin/egg.update', 1)) - ->iconSize(IconSize::Large), + ->tooltip(trans_choice('admin/egg.update', 1)), ReplicateAction::make() - ->iconButton() ->tooltip(trans('filament-actions::replicate.single.label')) - ->iconSize(IconSize::Large) ->modal(false) ->excludeAttributes(['author', 'uuid', 'update_url', 'servers_count', 'created_at', 'updated_at']) ->beforeReplicaSaved(function (Egg $replica) { @@ -89,47 +81,54 @@ class ListEggs extends ListRecords ->after(fn (Egg $record, Egg $replica) => $record->variables->each(fn ($variable) => $variable->replicate()->fill(['egg_id' => $replica->id])->save())) ->successRedirectUrl(fn (Egg $replica) => EditEgg::getUrl(['record' => $replica])), ]) - ->groupedBulkActions([ - DeleteBulkAction::make() - ->before(function (Collection &$records) { - $eggsWithServers = $records->filter(fn (Egg $egg) => $egg->servers_count > 0); + ->toolbarActions([ + ImportEggAction::make() + ->multiple(), + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), + BulkActionGroup::make([ + DeleteBulkAction::make() + ->before(function (Collection &$records) { + $eggsWithServers = $records->filter(fn (Egg $egg) => $egg->servers_count > 0); - if ($eggsWithServers->isNotEmpty()) { - $eggNames = $eggsWithServers->map(fn (Egg $egg) => sprintf('%s (%d server%s)', $egg->name, $egg->servers_count, $egg->servers_count > 1 ? 's' : '')) - ->join(', '); - Notification::make() - ->danger() - ->title(trans('admin/egg.cannot_delete', ['count' => $eggsWithServers->count()])) - ->body(trans('admin/egg.eggs_have_servers', ['eggs' => $eggNames])) - ->send(); - } + if ($eggsWithServers->isNotEmpty()) { + $eggNames = $eggsWithServers->map(fn (Egg $egg) => sprintf('%s (%d server%s)', $egg->name, $egg->servers_count, $egg->servers_count > 1 ? 's' : '')) + ->join(', '); + Notification::make() + ->danger() + ->title(trans('admin/egg.cannot_delete', ['count' => $eggsWithServers->count()])) + ->body(trans('admin/egg.eggs_have_servers', ['eggs' => $eggNames])) + ->send(); + } - $records = $records->filter(fn (Egg $egg) => $egg->servers_count <= 0); + $records = $records->filter(fn (Egg $egg) => $egg->servers_count <= 0); - if ($records->isEmpty()) { - $this->halt(); - } - }), - UpdateEggBulkAction::make() - ->before(function (Collection &$records) { - $eggsWithoutUpdateUrl = $records->filter(fn (Egg $egg) => $egg->update_url === null); + if ($records->isEmpty()) { + $this->halt(); + } + }), + UpdateEggBulkAction::make() + ->before(function (Collection &$records) { + $eggsWithoutUpdateUrl = $records->filter(fn (Egg $egg) => $egg->update_url === null); - if ($eggsWithoutUpdateUrl->isNotEmpty()) { - $eggNames = $eggsWithoutUpdateUrl->pluck('name')->join(', '); + if ($eggsWithoutUpdateUrl->isNotEmpty()) { + $eggNames = $eggsWithoutUpdateUrl->pluck('name')->join(', '); - Notification::make() - ->warning() - ->title(trans('admin/egg.cannot_update', ['count' => $eggsWithoutUpdateUrl->count()])) - ->body(trans('admin/egg.no_update_url', ['eggs' => $eggNames])) - ->send(); - } + Notification::make() + ->warning() + ->title(trans('admin/egg.cannot_update', ['count' => $eggsWithoutUpdateUrl->count()])) + ->body(trans('admin/egg.no_update_url', ['eggs' => $eggNames])) + ->send(); + } - $records = $records->filter(fn (Egg $egg) => $egg->update_url !== null); + $records = $records->filter(fn (Egg $egg) => $egg->update_url !== null); - if ($records->isEmpty()) { - $this->halt(); - } - }), + if ($records->isEmpty()) { + $this->halt(); + } + }), + ]), ]) ->emptyStateIcon(TablerIcon::Eggs) ->emptyStateDescription('') @@ -139,18 +138,4 @@ class ListEggs extends ListRecords ->model(Egg::class), ]); } - - /** @return array - * @throws Exception - */ - protected function getDefaultHeaderActions(): array - { - return [ - ImportEggAction::make() - ->multiple(), - CreateAction::make() - ->icon(TablerIcon::FilePlus) - ->iconButton()->iconSize(IconSize::ExtraLarge), - ]; - } } diff --git a/app/Filament/Admin/Resources/Mounts/MountResource.php b/app/Filament/Admin/Resources/Mounts/MountResource.php index f4b6b05a5..f02fbfb3a 100644 --- a/app/Filament/Admin/Resources/Mounts/MountResource.php +++ b/app/Filament/Admin/Resources/Mounts/MountResource.php @@ -14,6 +14,8 @@ use App\Traits\Filament\CanModifyForm; use App\Traits\Filament\CanModifyTable; use BackedEnum; use Exception; +use Filament\Actions\BulkActionGroup; +use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ViewAction; @@ -99,8 +101,13 @@ class MountResource extends Resource ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()), EditAction::make(), ]) - ->groupedBulkActions([ - DeleteBulkAction::make(), + ->toolbarActions([ + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), ]) ->emptyStateIcon(TablerIcon::LayersLinked) ->emptyStateDescription('') diff --git a/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php b/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php index 413c3d87a..e35eb5ec1 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/CreateMount.php @@ -9,7 +9,6 @@ use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Resources\Pages\CreateRecord; -use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; @@ -26,8 +25,11 @@ class CreateMount extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('create') + ->hiddenLabel() + ->action('create') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.create.label')) ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php b/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php index e2c2ddf03..f520ab78a 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/EditMount.php @@ -10,7 +10,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; -use Filament\Support\Enums\IconSize; class EditMount extends EditRecord { @@ -23,10 +22,12 @@ class EditMount extends EditRecord protected function getDefaultHeaderActions(): array { return [ - DeleteAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + DeleteAction::make(), + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php b/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php index d124e7296..3bc47be46 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/ListMounts.php @@ -2,15 +2,10 @@ namespace App\Filament\Admin\Resources\Mounts\Pages; -use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Mounts\MountResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; class ListMounts extends ListRecords { @@ -18,14 +13,4 @@ class ListMounts extends ListRecords use CanCustomizeHeaderWidgets; protected static string $resource = MountResource::class; - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::FilePlus), - ]; - } } diff --git a/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php b/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php index 9f5e275f0..7e4fab51c 100644 --- a/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php +++ b/app/Filament/Admin/Resources/Mounts/Pages/ViewMount.php @@ -9,7 +9,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; -use Filament\Support\Enums\IconSize; class ViewMount extends ViewRecord { @@ -22,9 +21,7 @@ class ViewMount extends ViewRecord protected function getDefaultHeaderActions(): array { return [ - EditAction::make() - ->iconSize(IconSize::ExtraLarge) - ->iconButton(), + EditAction::make(), ]; } } diff --git a/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php b/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php index c79fe14f6..8fa088122 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/CreateNode.php @@ -46,7 +46,7 @@ class CreateNode extends CreateRecord {{ trans('admin/node.create') }} diff --git a/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php b/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php index 9e49ed1f3..c30609d42 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/EditNode.php @@ -38,7 +38,6 @@ use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Components\View; use Filament\Schemas\Schema; use Filament\Support\Enums\Alignment; -use Filament\Support\Enums\IconSize; use Filament\Support\RawJs; use Illuminate\Http\Client\ConnectionException; use Illuminate\Support\Facades\Http; @@ -647,8 +646,8 @@ class EditNode extends EditRecord ->disabled(fn (Get $get) => $get('pulled')) ->headerActions([ Action::make('pull') - ->label(trans('admin/node.diagnostics.pull')) - ->icon(TablerIcon::CloudDownload)->iconButton()->iconSize(IconSize::ExtraLarge) + ->tooltip(trans('admin/node.diagnostics.pull')) + ->icon(TablerIcon::CloudDownload) ->hidden(fn (Get $get) => $get('pulled')) ->action(function (Get $get, Set $set, Node $node) { $includeEndpoints = $get('include_endpoints') ?? true; @@ -685,9 +684,9 @@ class EditNode extends EditRecord } }), Action::make('upload') - ->label(trans('admin/node.diagnostics.upload')) + ->tooltip(trans('admin/node.diagnostics.upload')) ->visible(fn (Get $get) => $get('pulled') ?? false) - ->icon(TablerIcon::CloudUpload)->iconButton()->iconSize(IconSize::ExtraLarge) + ->icon(TablerIcon::CloudUpload) ->action(function (Get $get, Set $set) { try { $response = Http::asMultipart() @@ -713,7 +712,7 @@ class EditNode extends EditRecord ->body("{$url}") ->success() ->actions([ - Action::make('viewLogs') + Action::make('exclude_viewLogs') ->label(trans('admin/node.diagnostics.view_logs')) ->url($url) ->openUrlInNewTab(true), @@ -733,9 +732,9 @@ class EditNode extends EditRecord } }), Action::make('clear') - ->label(trans('admin/node.diagnostics.clear')) + ->tooltip(trans('admin/node.diagnostics.clear')) ->visible(fn (Get $get) => $get('pulled') ?? false) - ->icon(TablerIcon::Trash)->iconButton()->iconSize(IconSize::ExtraLarge)->color('danger') + ->icon(TablerIcon::Trash)->color('danger') ->action(function (Get $get, Set $set) { $set('pulled', false); $set('uploaded', false); @@ -809,10 +808,12 @@ class EditNode extends EditRecord return [ DeleteAction::make() ->disabled(fn (Node $node) => $node->servers()->count() > 0) - ->label(fn (Node $node) => $node->servers()->count() > 0 ? trans('admin/node.node_has_servers') : trans('filament-actions::delete.single.label')) - ->iconButton()->iconSize(IconSize::ExtraLarge), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->tooltip(fn (Node $node) => $node->servers()->count() > 0 ? trans('admin/node.node_has_servers') : trans('filament-actions::delete.single.label')), + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php b/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php index b7eb0e54d..2bfc1623a 100644 --- a/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php +++ b/app/Filament/Admin/Resources/Nodes/Pages/ListNodes.php @@ -9,12 +9,9 @@ use App\Filament\Components\Tables\Filters\TagsFilter; use App\Models\Node; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Actions\EditAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -66,6 +63,11 @@ class ListNodes extends ListRecords ->recordActions([ EditAction::make(), ]) + ->toolbarActions([ + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), + ]) ->emptyStateIcon(TablerIcon::Server2) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/node.no_nodes')) @@ -74,14 +76,4 @@ class ListNodes extends ListRecords ->model(Node::class), ]); } - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::FilePlus), - ]; - } } diff --git a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php index 8712e37d7..2ddeaf841 100644 --- a/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php +++ b/app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php @@ -18,7 +18,6 @@ use Filament\Forms\Components\TextInput; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\SelectColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextInputColumn; @@ -88,9 +87,8 @@ class AllocationsRelationManager extends RelationManager DeleteBulkAction::make() ->authorize(fn () => user()?->can('update', $this->getOwnerRecord())), Action::make('create new allocation') - ->label(trans('admin/node.create_allocation')) + ->tooltip(trans('admin/node.create_allocation')) ->icon(TablerIcon::WorldPlus) - ->iconButton()->iconSize(IconSize::ExtraLarge) ->schema(fn () => [ Select::make('allocation_ip') ->options(fn () => collect($this->getOwnerRecord()->ipAddresses())->mapWithKeys(fn (string $ip) => [$ip => $ip])) @@ -101,8 +99,7 @@ class AllocationsRelationManager extends RelationManager ->afterStateUpdated(fn (Set $set) => $set('allocation_ports', [])) ->live() ->hintAction( - Action::make('refresh') - ->iconButton() + Action::make('hint_refresh') ->icon(TablerIcon::Refresh) ->tooltip(trans('admin/node.refresh')) ->action(function () { diff --git a/app/Filament/Admin/Resources/Plugins/PluginResource.php b/app/Filament/Admin/Resources/Plugins/PluginResource.php index 4770b1d2d..a9c42da62 100644 --- a/app/Filament/Admin/Resources/Plugins/PluginResource.php +++ b/app/Filament/Admin/Resources/Plugins/PluginResource.php @@ -16,7 +16,6 @@ use Filament\Forms\Components\TextInput; use Filament\Infolists\Components\TextEntry; use Filament\Notifications\Notification; use Filament\Resources\Resource; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; use Illuminate\Http\UploadedFile; @@ -84,7 +83,7 @@ class PluginResource extends Resource ->sortable(), ]) ->recordActions([ - Action::make('view') + Action::make('exclude_view') ->label(trans('filament-actions::view.single.label')) ->icon(fn (Plugin $plugin) => $plugin->getReadme() ? TablerIcon::Eye : TablerIcon::EyeShare) ->color('gray') @@ -104,7 +103,7 @@ class PluginResource extends Resource ->markdown() ->state(fn (Plugin $plugin) => $plugin->getReadme()), ] : null), - Action::make('settings') + Action::make('exclude_settings') ->label(trans('admin/plugin.settings')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->icon(TablerIcon::Settings) @@ -114,7 +113,7 @@ class PluginResource extends Resource ->action(fn (array $data, Plugin $plugin) => $plugin->saveSettings($data)) ->slideOver(), ActionGroup::make([ - Action::make('install') + Action::make('exclude_install') ->label(trans('admin/plugin.install')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->icon(TablerIcon::Terminal) @@ -138,7 +137,7 @@ class PluginResource extends Resource ->send(); } }), - Action::make('update') + Action::make('exclude_update') ->label(trans('admin/plugin.update')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->icon(TablerIcon::Download) @@ -162,7 +161,7 @@ class PluginResource extends Resource ->send(); } }), - Action::make('enable') + Action::make('exclude_enable') ->label(trans('admin/plugin.enable')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->icon(TablerIcon::Check) @@ -181,7 +180,7 @@ class PluginResource extends Resource ->title(trans('admin/plugin.notifications.enabled')) ->send(); }), - Action::make('disable') + Action::make('exclude_disable') ->label(trans('admin/plugin.disable')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->icon(TablerIcon::X) @@ -197,7 +196,7 @@ class PluginResource extends Resource ->title(trans('admin/plugin.notifications.disabled')) ->send(); }), - Action::make('delete') + Action::make('exclude_delete') ->label(trans('filament-actions::delete.single.label')) ->authorize(fn (Plugin $plugin) => user()?->can('delete', $plugin)) ->icon(TablerIcon::Trash) @@ -214,7 +213,7 @@ class PluginResource extends Resource ->title(trans('admin/plugin.notifications.deleted')) ->send(); }), - Action::make('uninstall') + Action::make('exclude_uninstall') ->label(trans('admin/plugin.uninstall')) ->authorize(fn (Plugin $plugin) => user()?->can('update', $plugin)) ->icon(TablerIcon::Terminal) @@ -243,11 +242,10 @@ class PluginResource extends Resource ]) ->headerActions([ Action::make('import_from_file') - ->label(trans('admin/plugin.import_from_file')) + ->hiddenLabel() + ->tooltip(trans('admin/plugin.import_from_file')) ->authorize(fn () => user()?->can('create', Plugin::class)) ->icon(TablerIcon::FileDownload) - ->iconButton() - ->iconSize(IconSize::ExtraLarge) ->schema([ // TODO: switch to new file upload FileUpload::make('file') @@ -287,11 +285,10 @@ class PluginResource extends Resource } }), Action::make('import_from_url') - ->label(trans('admin/plugin.import_from_url')) + ->hiddenLabel() + ->tooltip(trans('admin/plugin.import_from_url')) ->authorize(fn () => user()?->can('create', Plugin::class)) ->icon(TablerIcon::WorldDownload) - ->iconButton() - ->iconSize(IconSize::ExtraLarge) ->schema([ TextInput::make('url') ->required() diff --git a/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php b/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php index 72af628b9..f131d86f2 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php +++ b/app/Filament/Admin/Resources/Roles/Pages/CreateRole.php @@ -10,7 +10,6 @@ use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Resources\Pages\CreateRecord; -use Filament\Support\Enums\IconSize; use Illuminate\Support\Arr; use Illuminate\Support\Collection; use Spatie\Permission\Models\Permission; @@ -33,8 +32,11 @@ class CreateRole extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('create') + ->hiddenLabel() + ->action('create') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.create.label')) ->icon(TablerIcon::FilePlus), ]; } diff --git a/app/Filament/Admin/Resources/Roles/Pages/EditRole.php b/app/Filament/Admin/Resources/Roles/Pages/EditRole.php index 302c38595..9f531ec74 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/EditRole.php +++ b/app/Filament/Admin/Resources/Roles/Pages/EditRole.php @@ -11,7 +11,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; -use Filament\Support\Enums\IconSize; use Illuminate\Support\Arr; use Illuminate\Support\Collection; use Spatie\Permission\Models\Permission; @@ -59,11 +58,13 @@ class EditRole extends EditRecord { return [ DeleteAction::make() - ->label(fn (Role $role) => $role->isRootAdmin() ? trans('admin/role.root_admin_delete') : ($role->users_count >= 1 ? trans('admin/role.in_use') : trans('filament-actions::delete.single.label'))) - ->disabled(fn (Role $role) => $role->isRootAdmin() || $role->users_count >= 1) - ->iconButton()->iconSize(IconSize::ExtraLarge), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->tooltip(fn (Role $role) => $role->isRootAdmin() ? trans('admin/role.root_admin_delete') : ($role->users_count >= 1 ? trans('admin/role.in_use') : trans('filament-actions::delete.single.label'))) + ->disabled(fn (Role $role) => $role->isRootAdmin() || $role->users_count >= 1), + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php b/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php index ada967185..c018e6874 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php +++ b/app/Filament/Admin/Resources/Roles/Pages/ListRoles.php @@ -2,15 +2,10 @@ namespace App\Filament\Admin\Resources\Roles\Pages; -use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Roles\RoleResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; class ListRoles extends ListRecords { @@ -18,14 +13,4 @@ class ListRoles extends ListRecords use CanCustomizeHeaderWidgets; protected static string $resource = RoleResource::class; - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->icon(TablerIcon::FilePlus) - ->iconButton()->iconSize(IconSize::ExtraLarge), - ]; - } } diff --git a/app/Filament/Admin/Resources/Roles/Pages/ViewRole.php b/app/Filament/Admin/Resources/Roles/Pages/ViewRole.php index c7054b996..aacca83a6 100644 --- a/app/Filament/Admin/Resources/Roles/Pages/ViewRole.php +++ b/app/Filament/Admin/Resources/Roles/Pages/ViewRole.php @@ -9,7 +9,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; -use Filament\Support\Enums\IconSize; class ViewRole extends ViewRecord { @@ -22,8 +21,7 @@ class ViewRole extends ViewRecord protected function getDefaultHeaderActions(): array { return [ - EditAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), + EditAction::make(), ]; } } diff --git a/app/Filament/Admin/Resources/Roles/RoleResource.php b/app/Filament/Admin/Resources/Roles/RoleResource.php index f1266c2bb..d090300ce 100644 --- a/app/Filament/Admin/Resources/Roles/RoleResource.php +++ b/app/Filament/Admin/Resources/Roles/RoleResource.php @@ -16,6 +16,8 @@ use App\Traits\Filament\CanModifyTable; use BackedEnum; use Exception; use Filament\Actions\Action; +use Filament\Actions\BulkActionGroup; +use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ViewAction; @@ -101,10 +103,15 @@ class RoleResource extends Resource ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()), EditAction::make(), ]) - ->checkIfRecordIsSelectableUsing(fn (Role $role) => !$role->isRootAdmin() && $role->users_count <= 0) - ->groupedBulkActions([ - DeleteBulkAction::make(), - ]); + ->toolbarActions([ + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + ]) + ->checkIfRecordIsSelectableUsing(fn (Role $role) => !$role->isRootAdmin() && $role->users_count <= 0); } /** diff --git a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php index 75c31e463..a74fc7b4d 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php @@ -255,7 +255,7 @@ class CreateServer extends CreateRecord ->ip() ->live() ->hintAction( - Action::make('refresh') + Action::make('hint_refresh') ->iconButton() ->icon(TablerIcon::Refresh) ->tooltip(trans('admin/node.refresh')) diff --git a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php index 1e6657cee..4db2eba28 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php @@ -57,7 +57,6 @@ use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; use Filament\Support\Enums\Alignment; -use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Client\ConnectionException; use Illuminate\Support\Arr; @@ -122,8 +121,8 @@ class EditServer extends EditRecord ->columnSpan(2) ->alignJustify(), Action::make('uploadIcon') - ->iconButton()->iconSize(IconSize::Large) ->icon(TablerIcon::PhotoUp) + ->tooltip(trans('admin/server.import_image')) ->modal() ->modalSubmitActionLabel(trans('server/setting.server_info.icon.upload')) ->schema([ @@ -260,7 +259,7 @@ class EditServer extends EditRecord TextInput::make('name') ->prefixIcon(TablerIcon::Server) ->label(trans('admin/server.name')) - ->suffixAction(Action::make('random') + ->suffixAction(Action::make('hint_random') ->icon('tabler-dice-' . random_int(1, 6)) ->action(function (Set $set, Get $get) { $egg = Egg::find($get('egg_id')); @@ -729,7 +728,7 @@ class EditServer extends EditRecord ->preload() ->required() ->hintAction( - Action::make('change_egg') + Action::make('hint_change_egg') ->label(trans('admin/server.change_egg')) ->action(function (array $data, Server $server, EggChangerService $service) { $service->handle($server, $data['egg_id'], $data['keep_old_variables']); @@ -796,7 +795,7 @@ class EditServer extends EditRecord }) ->selectablePlaceholder(false) ->columnSpanFull() - ->hintAction(PreviewStartupAction::make('preview')), + ->hintAction(PreviewStartupAction::make('hint_preview')), Textarea::make('startup') ->hiddenLabel() @@ -1101,7 +1100,8 @@ class EditServer extends EditRecord return [ Action::make('Delete') ->color('danger') - ->label(trans('filament-actions::delete.single.label')) + ->hiddenLabel() + ->tooltip(trans('filament-actions::delete.single.label')) ->modalHeading(trans('filament-actions::delete.single.modal.heading', ['label' => $this->getRecordTitle()])) ->modalSubmitActionLabel(trans('filament-actions::delete.single.label')) ->requiresConfirmation() @@ -1124,8 +1124,7 @@ class EditServer extends EditRecord }) ->hidden(fn () => $canForceDelete) ->authorize(fn (Server $server) => user()?->can('delete server', $server)) - ->icon(TablerIcon::Trash) - ->iconButton()->iconSize(IconSize::ExtraLarge), + ->icon(TablerIcon::Trash), Action::make('ForceDelete') ->color('danger') ->label(trans('filament-actions::force-delete.single.label')) @@ -1144,12 +1143,15 @@ class EditServer extends EditRecord ->visible(fn () => $canForceDelete) ->authorize(fn (Server $server) => user()?->can('delete server', $server)), Action::make('console') - ->label(trans('admin/server.console')) + ->hiddenLabel() + ->tooltip(trans('admin/server.console')) ->icon(TablerIcon::Terminal) - ->iconButton()->iconSize(IconSize::ExtraLarge) ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; diff --git a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php index 99417d3b9..418fbaa0b 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/ListServers.php +++ b/app/Filament/Admin/Resources/Servers/Pages/ListServers.php @@ -9,11 +9,9 @@ use App\Models\Server; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; -use Filament\Actions\ActionGroup; use Filament\Actions\CreateAction; use Filament\Actions\EditAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\SelectColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Grouping\Group; @@ -92,28 +90,21 @@ class ListServers extends ListRecords ->sortable(), ]) ->recordActions([ - Action::make('View') - ->label(trans('admin/server.view')) - ->iconButton() + Action::make('view') + ->tooltip(trans('admin/server.view')) ->icon(TablerIcon::Terminal) - ->iconSize(IconSize::Large) ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)) ->authorize(fn (Server $server) => user()?->canAccessTenant($server)), EditAction::make(), ]) + ->toolbarActions([ + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), + ]) ->searchable() ->emptyStateIcon(TablerIcon::BrandDocker) ->emptyStateDescription('') ->emptyStateHeading(trans('admin/server.no_servers')); } - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::FilePlus), - ]; - } } diff --git a/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php b/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php index c9fbcc10b..57f7d1dbc 100644 --- a/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php +++ b/app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php @@ -107,9 +107,9 @@ class AllocationsRelationManager extends RelationManager } }), CreateAction::make() - ->label(trans('admin/server.create_allocation')) + ->hiddenLabel() + ->tooltip(trans('admin/server.create_allocation')) ->icon(TablerIcon::Network) - ->iconButton()->iconSize(IconSize::ExtraLarge) ->createAnother(false) ->schema(fn () => [ Select::make('allocation_ip') @@ -120,7 +120,6 @@ class AllocationsRelationManager extends RelationManager ->live() ->hintAction( Action::make('refresh') - ->iconButton() ->icon(TablerIcon::Refresh) ->tooltip(trans('admin/node.refresh')) ->action(function () { @@ -155,7 +154,7 @@ class AllocationsRelationManager extends RelationManager ->preloadRecordSelect() ->recordSelectOptionsQuery(fn ($query) => $query->whereBelongsTo($this->getOwnerRecord()->node)->whereNull('server_id')) ->recordSelectSearchColumns(['ip', 'port']) - ->label(trans('admin/server.add_allocation')) + ->tooltip(trans('admin/server.add_allocation')) ->after(function (array $data) { Allocation::whereIn('id', array_values(array_unique($data['recordId'])))->update(['is_locked' => true]); diff --git a/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php b/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php index 24266f328..069e60c32 100644 --- a/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php +++ b/app/Filament/Admin/Resources/Servers/RelationManagers/DatabasesRelationManager.php @@ -19,7 +19,6 @@ use Filament\Forms\Components\TextInput; use Filament\Notifications\Notification; use Filament\Resources\RelationManagers\RelationManager; use Filament\Schemas\Schema; -use Filament\Support\Enums\IconSize; use Filament\Support\Exceptions\Halt; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -84,7 +83,6 @@ class DatabasesRelationManager extends RelationManager ViewAction::make() ->color('primary'), DeleteAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) ->successNotificationTitle(null) ->using(function (Database $database, DatabaseManagementService $service) { try { @@ -106,11 +104,11 @@ class DatabasesRelationManager extends RelationManager ]) ->toolbarActions([ CreateAction::make() + ->hiddenLabel() ->disabled(fn () => DatabaseHost::count() < 1) - ->label(fn () => DatabaseHost::count() < 1 ? trans('admin/server.no_db_hosts') : trans('admin/server.create_database')) + ->tooltip(fn () => DatabaseHost::count() < 1 ? trans('admin/server.no_db_hosts') : trans('admin/server.create_database')) ->color(fn () => DatabaseHost::count() < 1 ? 'danger' : 'primary') ->icon(fn () => DatabaseHost::count() < 1 ? TablerIcon::DatabaseX : TablerIcon::DatabasePlus) - ->iconButton()->iconSize(IconSize::ExtraLarge) ->createAnother(false) ->action(function (array $data, DatabaseManagementService $service, RandomWordService $randomWordService) { $data['database'] ??= $randomWordService->word() . random_int(1, 420); diff --git a/app/Filament/Admin/Resources/Users/Pages/CreateUser.php b/app/Filament/Admin/Resources/Users/Pages/CreateUser.php index 3f282c7e7..a0034b3c2 100644 --- a/app/Filament/Admin/Resources/Users/Pages/CreateUser.php +++ b/app/Filament/Admin/Resources/Users/Pages/CreateUser.php @@ -11,7 +11,6 @@ use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Resources\Pages\CreateRecord; -use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; class CreateUser extends CreateRecord @@ -34,8 +33,11 @@ class CreateUser extends CreateRecord protected function getDefaultHeaderActions(): array { return [ - $this->getCreateFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('create') + ->hiddenLabel() + ->action('create') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.create.label')) ->icon(TablerIcon::UserPlus), ]; } diff --git a/app/Filament/Admin/Resources/Users/Pages/EditUser.php b/app/Filament/Admin/Resources/Users/Pages/EditUser.php index 0d5accc23..5b575b5d2 100644 --- a/app/Filament/Admin/Resources/Users/Pages/EditUser.php +++ b/app/Filament/Admin/Resources/Users/Pages/EditUser.php @@ -12,7 +12,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; -use Filament\Support\Enums\IconSize; use Illuminate\Database\Eloquent\Model; class EditUser extends EditRecord @@ -34,11 +33,13 @@ class EditUser extends EditRecord { return [ DeleteAction::make() - ->label(fn (User $user) => user()?->id === $user->id ? trans('admin/user.self_delete') : ($user->servers()->count() > 0 ? trans('admin/user.has_servers') : trans('filament-actions::delete.single.modal.actions.delete.label'))) - ->disabled(fn (User $user) => user()?->id === $user->id || $user->servers()->count() > 0) - ->iconButton()->iconSize(IconSize::ExtraLarge), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->tooltip(fn (User $user) => user()?->id === $user->id ? trans('admin/user.self_delete') : ($user->servers()->count() > 0 ? trans('admin/user.has_servers') : trans('filament-actions::delete.single.modal.actions.delete.label'))) + ->disabled(fn (User $user) => user()?->id === $user->id || $user->servers()->count() > 0), + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Users/Pages/ListUsers.php b/app/Filament/Admin/Resources/Users/Pages/ListUsers.php index 9942e8698..b714fde20 100644 --- a/app/Filament/Admin/Resources/Users/Pages/ListUsers.php +++ b/app/Filament/Admin/Resources/Users/Pages/ListUsers.php @@ -2,15 +2,10 @@ namespace App\Filament\Admin\Resources\Users\Pages; -use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Users\UserResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; class ListUsers extends ListRecords { @@ -18,14 +13,4 @@ class ListUsers extends ListRecords use CanCustomizeHeaderWidgets; protected static string $resource = UserResource::class; - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::UserPlus), - ]; - } } diff --git a/app/Filament/Admin/Resources/Users/Pages/ViewUser.php b/app/Filament/Admin/Resources/Users/Pages/ViewUser.php index 615ca5d5f..386deece2 100644 --- a/app/Filament/Admin/Resources/Users/Pages/ViewUser.php +++ b/app/Filament/Admin/Resources/Users/Pages/ViewUser.php @@ -9,7 +9,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; -use Filament\Support\Enums\IconSize; class ViewUser extends ViewRecord { @@ -22,8 +21,7 @@ class ViewUser extends ViewRecord protected function getDefaultHeaderActions(): array { return [ - EditAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), + EditAction::make(), ]; } } diff --git a/app/Filament/Admin/Resources/Users/UserResource.php b/app/Filament/Admin/Resources/Users/UserResource.php index 0cc78be68..1a7cfe316 100644 --- a/app/Filament/Admin/Resources/Users/UserResource.php +++ b/app/Filament/Admin/Resources/Users/UserResource.php @@ -26,6 +26,8 @@ use BackedEnum; use DateTimeZone; use Exception; use Filament\Actions\Action; +use Filament\Actions\BulkActionGroup; +use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ViewAction; @@ -138,10 +140,15 @@ class UserResource extends Resource ->hidden(fn ($record) => static::getEditAuthorizationResponse($record)->allowed()), EditAction::make(), ]) - ->checkIfRecordIsSelectableUsing(fn (User $user) => user()?->id !== $user->id && !$user->servers_count) - ->groupedBulkActions([ - DeleteBulkAction::make(), - ]); + ->toolbarActions([ + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::UserPlus), + ]) + ->checkIfRecordIsSelectableUsing(fn (User $user) => user()?->id !== $user->id && !$user->servers_count); } public static function defaultForm(Schema $schema): Schema @@ -199,7 +206,7 @@ class UserResource extends Resource ->hintIcon(fn ($operation) => $operation === 'create' ? TablerIcon::QuestionMark : null, fn ($operation) => $operation === 'create' ? trans('admin/user.password_help') : null) ->password() ->hintAction( - Action::make('password_reset') + Action::make('hint_password_reset') ->label(trans('admin/user.password_reset')) ->hidden(fn (string $operation) => $operation === 'create' || config('mail.default', 'log') === 'log') ->icon(TablerIcon::Send) diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php b/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php index 3f52d912d..2fdc7375d 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php @@ -10,7 +10,6 @@ use App\Traits\Filament\CanCustomizeHeaderWidgets; use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Resources\Pages\CreateRecord; -use Filament\Support\Enums\IconSize; class CreateWebhookConfiguration extends CreateRecord { @@ -26,11 +25,15 @@ class CreateWebhookConfiguration extends CreateRecord { return [ $this->getCancelFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() + ->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.cancel.label')) ->icon(TablerIcon::ArrowLeft), - $this->getCreateFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::FilePlus), + Action::make('create') + ->hiddenLabel() + ->action('create') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/create-record.form.actions.create.label')) + ->icon(TablerIcon::Plus), ]; } diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php b/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php index fe08e7db4..5b80927a7 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php @@ -12,7 +12,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Resources\Pages\EditRecord; -use Filament\Support\Enums\IconSize; class EditWebhookConfiguration extends EditRecord { @@ -25,16 +24,18 @@ class EditWebhookConfiguration extends EditRecord protected function getDefaultHeaderActions(): array { return [ - DeleteAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), + DeleteAction::make(), Action::make('test_now') ->label(trans('admin/webhook.test_now')) ->color('primary') ->disabled(fn (WebhookConfiguration $webhookConfiguration) => count($webhookConfiguration->events) === 0) ->action(fn (WebhookConfiguration $webhookConfiguration) => $webhookConfiguration->run()) ->tooltip(trans('admin/webhook.test_now_help')), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; } diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php b/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php index cfe2f186b..50a1f17b1 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/ListWebhookConfigurations.php @@ -2,15 +2,10 @@ namespace App\Filament\Admin\Resources\Webhooks\Pages; -use App\Enums\TablerIcon; use App\Filament\Admin\Resources\Webhooks\WebhookResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; -use Filament\Actions\CreateAction; use Filament\Resources\Pages\ListRecords; -use Filament\Support\Enums\IconSize; class ListWebhookConfigurations extends ListRecords { @@ -18,14 +13,4 @@ class ListWebhookConfigurations extends ListRecords use CanCustomizeHeaderWidgets; protected static string $resource = WebhookResource::class; - - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return [ - CreateAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->icon(TablerIcon::FilePlus), - ]; - } } diff --git a/app/Filament/Admin/Resources/Webhooks/Pages/ViewWebhookConfiguration.php b/app/Filament/Admin/Resources/Webhooks/Pages/ViewWebhookConfiguration.php index bde009ea6..226b64cda 100644 --- a/app/Filament/Admin/Resources/Webhooks/Pages/ViewWebhookConfiguration.php +++ b/app/Filament/Admin/Resources/Webhooks/Pages/ViewWebhookConfiguration.php @@ -9,7 +9,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; -use Filament\Support\Enums\IconSize; class ViewWebhookConfiguration extends ViewRecord { @@ -22,8 +21,7 @@ class ViewWebhookConfiguration extends ViewRecord protected function getDefaultHeaderActions(): array { return [ - EditAction::make() - ->iconButton()->iconSize(IconSize::ExtraLarge), + EditAction::make(), ]; } } diff --git a/app/Filament/Admin/Resources/Webhooks/WebhookResource.php b/app/Filament/Admin/Resources/Webhooks/WebhookResource.php index 64c8505ce..34eb4342e 100644 --- a/app/Filament/Admin/Resources/Webhooks/WebhookResource.php +++ b/app/Filament/Admin/Resources/Webhooks/WebhookResource.php @@ -17,6 +17,8 @@ use App\Traits\Filament\CanModifyTable; use BackedEnum; use Exception; use Filament\Actions\Action; +use Filament\Actions\BulkActionGroup; +use Filament\Actions\CreateAction; use Filament\Actions\DeleteBulkAction; use Filament\Actions\EditAction; use Filament\Actions\ReplicateAction; @@ -109,8 +111,13 @@ class WebhookResource extends Resource ->beforeReplicaSaved(fn (WebhookConfiguration $replica) => $replica->description .= ' Copy ' . now()->format('Y-m-d H:i:s')) ->successRedirectUrl(fn (WebhookConfiguration $replica) => EditWebhookConfiguration::getUrl(['record' => $replica])), ]) - ->groupedBulkActions([ - DeleteBulkAction::make(), + ->toolbarActions([ + CreateAction::make() + ->hiddenLabel() + ->icon(TablerIcon::Plus), + BulkActionGroup::make([ + DeleteBulkAction::make(), + ]), ]) ->emptyStateIcon(TablerIcon::Webhook) ->emptyStateDescription('') diff --git a/app/Filament/Admin/Widgets/CanaryWidget.php b/app/Filament/Admin/Widgets/CanaryWidget.php index 3606dcdff..d73bc0171 100644 --- a/app/Filament/Admin/Widgets/CanaryWidget.php +++ b/app/Filament/Admin/Widgets/CanaryWidget.php @@ -40,7 +40,7 @@ class CanaryWidget extends FormWidget ->state(trans('admin/dashboard.sections.intro-developers.extra_note')), ]) ->headerActions([ - Action::make('issues') + Action::make('db_issues') ->label(trans('admin/dashboard.sections.intro-developers.button_issues')) ->icon(TablerIcon::BrandGithub) ->url('https://github.com/pelican-dev/panel/issues', true), diff --git a/app/Filament/Admin/Widgets/HelpWidget.php b/app/Filament/Admin/Widgets/HelpWidget.php index 66f441405..2c994dcbf 100644 --- a/app/Filament/Admin/Widgets/HelpWidget.php +++ b/app/Filament/Admin/Widgets/HelpWidget.php @@ -31,7 +31,7 @@ class HelpWidget extends FormWidget ->state(trans('admin/dashboard.sections.intro-help.content')), ]) ->headerActions([ - Action::make('docs') + Action::make('db_docs') ->label(trans('admin/dashboard.sections.intro-help.button_docs')) ->icon(TablerIcon::Speedboat) ->url('https://pelican.dev/docs', true), diff --git a/app/Filament/Admin/Widgets/NoNodesWidget.php b/app/Filament/Admin/Widgets/NoNodesWidget.php index 87358c426..3cd458821 100644 --- a/app/Filament/Admin/Widgets/NoNodesWidget.php +++ b/app/Filament/Admin/Widgets/NoNodesWidget.php @@ -38,7 +38,7 @@ class NoNodesWidget extends FormWidget ->state(trans('admin/dashboard.sections.intro-first-node.content')), ]) ->headerActions([ - Action::make('create-node') + Action::make('db_create-node') ->label(trans('admin/dashboard.sections.intro-first-node.button_label')) ->icon(TablerIcon::Server2) ->url(CreateNode::getUrl()), diff --git a/app/Filament/Admin/Widgets/SupportWidget.php b/app/Filament/Admin/Widgets/SupportWidget.php index ba7d7bd41..1010aed66 100644 --- a/app/Filament/Admin/Widgets/SupportWidget.php +++ b/app/Filament/Admin/Widgets/SupportWidget.php @@ -34,7 +34,7 @@ class SupportWidget extends FormWidget ->state(trans('admin/dashboard.sections.intro-support.extra_note')), ]) ->headerActions([ - Action::make('donate') + Action::make('db_donate') ->label(trans('admin/dashboard.sections.intro-support.button_donate')) ->icon(TablerIcon::Cash) ->url('https://pelican.dev/donate', true) diff --git a/app/Filament/Admin/Widgets/UpdateWidget.php b/app/Filament/Admin/Widgets/UpdateWidget.php index cb2312570..181de8d36 100644 --- a/app/Filament/Admin/Widgets/UpdateWidget.php +++ b/app/Filament/Admin/Widgets/UpdateWidget.php @@ -58,7 +58,7 @@ class UpdateWidget extends FormWidget ]), ]) ->headerActions([ - Action::make('update') + Action::make('db_update') ->label(trans('admin/dashboard.sections.intro-update-available.heading')) ->icon(TablerIcon::ClipboardText) ->url('https://pelican.dev/docs/panel/update', true) diff --git a/app/Filament/Components/Actions/DeleteServerIcon.php b/app/Filament/Components/Actions/DeleteServerIcon.php index a85eedb55..d2d1e8398 100644 --- a/app/Filament/Components/Actions/DeleteServerIcon.php +++ b/app/Filament/Components/Actions/DeleteServerIcon.php @@ -6,7 +6,6 @@ use App\Enums\TablerIcon; use App\Models\Server; use Filament\Actions\Action; use Filament\Notifications\Notification; -use Filament\Support\Enums\IconSize; use Illuminate\Support\Facades\Storage; class DeleteServerIcon extends Action @@ -24,12 +23,10 @@ class DeleteServerIcon extends Action $this->hiddenLabel(); + $this->tooltip(trans('admin/server.import_image')); + $this->icon(TablerIcon::Trash); - $this->iconButton(); - - $this->iconSize(IconSize::Large); - $this->color('danger'); $this->action(function ($record) { diff --git a/app/Filament/Components/Actions/ExportEggAction.php b/app/Filament/Components/Actions/ExportEggAction.php index 9006b0fed..94d5e8459 100644 --- a/app/Filament/Components/Actions/ExportEggAction.php +++ b/app/Filament/Components/Actions/ExportEggAction.php @@ -8,7 +8,6 @@ use App\Models\Egg; use Filament\Actions\Action; use Filament\Infolists\Components\TextEntry; use Filament\Support\Enums\Alignment; -use Filament\Support\Enums\IconSize; class ExportEggAction extends Action { @@ -21,16 +20,12 @@ class ExportEggAction extends Action { parent::setUp(); - $this->label(trans('filament-actions::export.modal.actions.export.label')); - - $this->iconButton(); + $this->tooltip(trans('filament-actions::export.modal.actions.export.label')); $this->icon(TablerIcon::Download); $this->tableIcon(TablerIcon::Download); - $this->iconSize(IconSize::ExtraLarge); - $this->authorize(fn () => user()?->can('export egg')); $this->modalHeading(fn (Egg $egg) => trans('filament-actions::export.modal.actions.export.label') . ' ' . $egg->name); @@ -46,11 +41,11 @@ class ExportEggAction extends Action $this->modalFooterActionsAlignment(Alignment::Center); $this->modalFooterActions([ - Action::make('json') + Action::make('exclude_json') ->label(trans('admin/egg.export.as', ['format' => 'json'])) ->url(fn (Egg $egg) => route('api.application.eggs.eggs.export', ['egg' => $egg, 'format' => EggFormat::JSON->value]), true) ->close(), - Action::make('yaml') + Action::make('exclude_yaml') ->label(trans('admin/egg.export.as', ['format' => 'yaml'])) ->url(fn (Egg $egg) => route('api.application.eggs.eggs.export', ['egg' => $egg, 'format' => EggFormat::YAML->value]), true) ->close(), diff --git a/app/Filament/Components/Actions/ExportScheduleAction.php b/app/Filament/Components/Actions/ExportScheduleAction.php index ea7092fb2..1e46b666c 100644 --- a/app/Filament/Components/Actions/ExportScheduleAction.php +++ b/app/Filament/Components/Actions/ExportScheduleAction.php @@ -9,7 +9,6 @@ use App\Models\Server; use App\Services\Schedules\Sharing\ScheduleExporterService; use Filament\Actions\Action; use Filament\Facades\Filament; -use Filament\Support\Enums\IconSize; class ExportScheduleAction extends Action { @@ -24,10 +23,6 @@ class ExportScheduleAction extends Action $this->hiddenLabel(); - $this->iconButton(); - - $this->iconSize(IconSize::ExtraLarge); - $this->icon(TablerIcon::Download); $this->tooltip(trans('server/schedule.export')); diff --git a/app/Filament/Components/Actions/ImportEggAction.php b/app/Filament/Components/Actions/ImportEggAction.php index 0d53b62bf..e8afc3ce8 100644 --- a/app/Filament/Components/Actions/ImportEggAction.php +++ b/app/Filament/Components/Actions/ImportEggAction.php @@ -18,7 +18,6 @@ use Filament\Infolists\Components\TextEntry; use Filament\Notifications\Notification; use Filament\Schemas\Components\Tabs; use Filament\Schemas\Components\Tabs\Tab; -use Filament\Support\Enums\IconSize; use Filament\Support\Enums\Width; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Artisan; @@ -35,14 +34,12 @@ class ImportEggAction extends Action { parent::setUp(); - $this->label(trans('filament-actions::import.modal.actions.import.label')); + $this->tooltip(trans('filament-actions::import.modal.actions.import.label')); - $this->iconButton(); + $this->hiddenLabel(); $this->icon(TablerIcon::FileImport); - $this->iconSize(IconSize::ExtraLarge); - $this->modalWidth(Width::ScreenExtraLarge); $this->authorize(fn () => user()?->can('import egg')); diff --git a/app/Filament/Components/Actions/PreviewStartupAction.php b/app/Filament/Components/Actions/PreviewStartupAction.php index a7d7b4a45..fde287b00 100644 --- a/app/Filament/Components/Actions/PreviewStartupAction.php +++ b/app/Filament/Components/Actions/PreviewStartupAction.php @@ -12,7 +12,7 @@ class PreviewStartupAction extends Action { public static function getDefaultName(): ?string { - return 'preview'; + return 'hint_preview'; } protected function setUp(): void diff --git a/app/Filament/Components/Actions/RotateDatabasePasswordAction.php b/app/Filament/Components/Actions/RotateDatabasePasswordAction.php index c893f7da8..ae3204023 100644 --- a/app/Filament/Components/Actions/RotateDatabasePasswordAction.php +++ b/app/Filament/Components/Actions/RotateDatabasePasswordAction.php @@ -16,14 +16,14 @@ class RotateDatabasePasswordAction extends Action { public static function getDefaultName(): ?string { - return 'rotate'; + return 'hint_rotate'; } protected function setUp(): void { parent::setUp(); - $this->label(trans('admin/databasehost.rotate')); + $this->tooltip(trans('admin/databasehost.rotate')); $this->icon(TablerIcon::Refresh); diff --git a/app/Filament/Components/Actions/UpdateEggAction.php b/app/Filament/Components/Actions/UpdateEggAction.php index 22a0b35f9..3f5793a61 100644 --- a/app/Filament/Components/Actions/UpdateEggAction.php +++ b/app/Filament/Components/Actions/UpdateEggAction.php @@ -8,7 +8,6 @@ use App\Services\Eggs\Sharing\EggImporterService; use Exception; use Filament\Actions\Action; use Filament\Notifications\Notification; -use Filament\Support\Enums\IconSize; class UpdateEggAction extends Action { @@ -21,14 +20,10 @@ class UpdateEggAction extends Action { parent::setUp(); - $this->label(trans_choice('admin/egg.update', 1)); - - $this->iconButton(); + $this->tooltip(trans_choice('admin/egg.update', 1)); $this->icon(TablerIcon::CloudDownload); - $this->iconSize(IconSize::ExtraLarge); - $this->color('success'); $this->requiresConfirmation(); diff --git a/app/Filament/Components/Actions/UpdateNodeAllocations.php b/app/Filament/Components/Actions/UpdateNodeAllocations.php index 3dfeb5b27..91459f5f4 100644 --- a/app/Filament/Components/Actions/UpdateNodeAllocations.php +++ b/app/Filament/Components/Actions/UpdateNodeAllocations.php @@ -9,7 +9,6 @@ use Exception; use Filament\Actions\Action; use Filament\Forms\Components\Select; use Filament\Notifications\Notification; -use Filament\Support\Enums\IconSize; class UpdateNodeAllocations extends Action { @@ -22,14 +21,10 @@ class UpdateNodeAllocations extends Action { parent::setUp(); - $this->label(trans('admin/node.bulk_update_ip')); + $this->tooltip(trans('admin/node.bulk_update_ip')); $this->icon(TablerIcon::Replace); - $this->iconSize(IconSize::ExtraLarge); - - $this->iconButton(); - $this->color('warning'); $this->requiresConfirmation(); diff --git a/app/Filament/Pages/Auth/EditProfile.php b/app/Filament/Pages/Auth/EditProfile.php index 10f754f6e..0ab26c4f6 100644 --- a/app/Filament/Pages/Auth/EditProfile.php +++ b/app/Filament/Pages/Auth/EditProfile.php @@ -41,7 +41,6 @@ use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Schema; use Filament\Support\Colors\Color; -use Filament\Support\Enums\IconSize; use Filament\Support\Enums\Width; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Hash; @@ -465,6 +464,15 @@ class EditProfile extends BaseEditProfile 'topbar' => trans('profile.topbar'), 'mixed' => trans('profile.mixed'), ]), + ToggleButtons::make('button_style') + ->label('Button Style') + ->inline() + ->default('icon') + + ->options([ + true => 'Icon', + false => 'Icon Button', + ]), ]), Section::make(trans('profile.console')) ->collapsible() @@ -568,10 +576,14 @@ class EditProfile extends BaseEditProfile { return [ $this->getCancelFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->tooltip(trans('filament-panels::auth/pages/edit-profile.actions.cancel.label')) + ->hiddenLabel() ->icon(TablerIcon::ArrowLeft), - $this->getSaveFormAction()->formId('form') - ->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) + ->tooltip(trans('filament-panels::resources/pages/edit-record.form.actions.save.label')) ->icon(TablerIcon::DeviceFloppy), ]; @@ -586,9 +598,17 @@ class EditProfile extends BaseEditProfile 'console_graph_period' => $data['console_graph_period'], 'dashboard_layout' => $data['dashboard_layout'], 'top_navigation' => $data['top_navigation'], + 'button_style' => $data['button_style'], ]; - unset($data['console_font'],$data['console_font_size'], $data['console_rows'], $data['dashboard_layout'], $data['top_navigation']); + unset( + $data['console_font'], + $data['console_font_size'], + $data['console_rows'], + $data['dashboard_layout'], + $data['top_navigation'], + $data['button_style'], + ); $data['customization'] = json_encode($customization); @@ -602,6 +622,7 @@ class EditProfile extends BaseEditProfile $data['console_rows'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleRows); $data['console_graph_period'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleGraphPeriod); $data['dashboard_layout'] = $this->getUser()->getCustomization(CustomizationKey::DashboardLayout); + $data['button_style'] = $this->getUser()->getCustomization(CustomizationKey::ButtonStyle); // Handle migration from boolean to string navigation types $topNavigation = $this->getUser()->getCustomization(CustomizationKey::TopNavigation); diff --git a/app/Filament/Server/Pages/Settings.php b/app/Filament/Server/Pages/Settings.php index 430930e6a..73e0f9de1 100644 --- a/app/Filament/Server/Pages/Settings.php +++ b/app/Filament/Server/Pages/Settings.php @@ -27,7 +27,6 @@ use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; use Filament\Support\Enums\Alignment; -use Filament\Support\Enums\IconSize; use Illuminate\Support\Facades\Storage; use Livewire\Features\SupportFileUploads\TemporaryUploadedFile; @@ -90,7 +89,8 @@ class Settings extends ServerFormPage ->columnSpan(2) ->alignJustify(), Action::make('uploadIcon') - ->iconButton()->iconSize(IconSize::Large) + ->hiddenLabel() + ->tooltip(trans('admin/server.import_image')) ->icon(TablerIcon::PhotoUp) ->modal() ->modalSubmitActionLabel(trans('server/setting.server_info.icon.upload')) @@ -307,7 +307,7 @@ class Settings extends ServerFormPage ->disabled() ->copyable() ->hintAction( - Action::make('connect_sftp') + Action::make('hint_connect_sftp') ->label(trans('server/setting.server_info.sftp.action')) ->color('success') ->icon(TablerIcon::Plug) diff --git a/app/Filament/Server/Resources/Activities/ActivityResource.php b/app/Filament/Server/Resources/Activities/ActivityResource.php index d876ae8ab..f26d9258a 100644 --- a/app/Filament/Server/Resources/Activities/ActivityResource.php +++ b/app/Filament/Server/Resources/Activities/ActivityResource.php @@ -118,7 +118,7 @@ class ActivityResource extends Resource return $user; }) ->hintAction( - Action::make('edit') + Action::make('hint_edit') ->label(trans('filament-actions::edit.single.label')) ->icon(TablerIcon::Edit) ->visible(fn (ActivityLog $activityLog) => $activityLog->actor instanceof User && user()?->can('update', $activityLog->actor)) diff --git a/app/Filament/Server/Resources/Allocations/AllocationResource.php b/app/Filament/Server/Resources/Allocations/AllocationResource.php index 05b3462ec..5ce49991f 100644 --- a/app/Filament/Server/Resources/Allocations/AllocationResource.php +++ b/app/Filament/Server/Resources/Allocations/AllocationResource.php @@ -20,7 +20,6 @@ use Filament\Actions\DetachAction; use Filament\Facades\Filament; use Filament\Resources\Pages\PageRegistration; use Filament\Resources\Resource; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextInputColumn; @@ -101,7 +100,7 @@ class AllocationResource extends Resource ]) ->toolbarActions([ Action::make('add_allocation') - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(fn () => $server->allocations()->count() >= $server->allocation_limit ? TablerIcon::NetworkOff : TablerIcon::Network) ->authorize(fn () => user()?->can(SubuserPermission::AllocationCreate, $server)) ->tooltip(fn () => $server->allocations()->count() >= $server->allocation_limit ? trans('server/network.limit') : trans('server/network.add')) diff --git a/app/Filament/Server/Resources/Allocations/Pages/ListAllocations.php b/app/Filament/Server/Resources/Allocations/Pages/ListAllocations.php index 35ceef0e0..143c6879d 100644 --- a/app/Filament/Server/Resources/Allocations/Pages/ListAllocations.php +++ b/app/Filament/Server/Resources/Allocations/Pages/ListAllocations.php @@ -5,8 +5,6 @@ namespace App\Filament\Server\Resources\Allocations\Pages; use App\Filament\Server\Resources\Allocations\AllocationResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; use Filament\Resources\Pages\ListRecords; class ListAllocations extends ListRecords @@ -16,12 +14,6 @@ class ListAllocations extends ListRecords protected static string $resource = AllocationResource::class; - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return []; - } - public function getBreadcrumbs(): array { return []; diff --git a/app/Filament/Server/Resources/Backups/BackupResource.php b/app/Filament/Server/Resources/Backups/BackupResource.php index 148172d02..ebcafd69c 100644 --- a/app/Filament/Server/Resources/Backups/BackupResource.php +++ b/app/Filament/Server/Resources/Backups/BackupResource.php @@ -266,7 +266,7 @@ class BackupResource extends Resource ->disabled(fn () => $server->backups()->count() >= $server->backup_limit) ->color(fn () => $server->backups()->count() >= $server->backup_limit ? 'danger' : 'primary') ->createAnother(false) - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->successNotificationTitle(null) ->action(function (InitiateBackupService $initiateBackupService, $data) use ($server) { $action = $initiateBackupService->setIgnoredFiles(explode(PHP_EOL, $data['ignored'] ?? '')); diff --git a/app/Filament/Server/Resources/Backups/Pages/ListBackups.php b/app/Filament/Server/Resources/Backups/Pages/ListBackups.php index 8ce269220..effbb70c9 100644 --- a/app/Filament/Server/Resources/Backups/Pages/ListBackups.php +++ b/app/Filament/Server/Resources/Backups/Pages/ListBackups.php @@ -5,8 +5,6 @@ namespace App\Filament\Server\Resources\Backups\Pages; use App\Filament\Server\Resources\Backups\BackupResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; use Filament\Resources\Pages\ListRecords; class ListBackups extends ListRecords @@ -16,12 +14,6 @@ class ListBackups extends ListRecords protected static string $resource = BackupResource::class; - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return []; - } - public function getBreadcrumbs(): array { return []; diff --git a/app/Filament/Server/Resources/Databases/DatabaseResource.php b/app/Filament/Server/Resources/Databases/DatabaseResource.php index 56d15bc3c..232b3835e 100644 --- a/app/Filament/Server/Resources/Databases/DatabaseResource.php +++ b/app/Filament/Server/Resources/Databases/DatabaseResource.php @@ -30,7 +30,6 @@ use Filament\Resources\Pages\PageRegistration; use Filament\Resources\Resource; use Filament\Schemas\Components\Grid; use Filament\Schemas\Schema; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; use Illuminate\Support\Str; @@ -160,7 +159,7 @@ class DatabaseResource extends Resource ]) ->toolbarActions([ CreateAction::make('new') - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(fn () => $server->databases()->count() >= $server->database_limit ? TablerIcon::DatabaseX : TablerIcon::DatabasePlus) ->tooltip(fn () => $server->databases()->count() >= $server->database_limit ? trans('server/database.limit') : trans('server/database.create_database')) ->disabled(fn () => $server->databases()->count() >= $server->database_limit) diff --git a/app/Filament/Server/Resources/Databases/Pages/ListDatabases.php b/app/Filament/Server/Resources/Databases/Pages/ListDatabases.php index b7fc59130..25667cf23 100644 --- a/app/Filament/Server/Resources/Databases/Pages/ListDatabases.php +++ b/app/Filament/Server/Resources/Databases/Pages/ListDatabases.php @@ -5,8 +5,6 @@ namespace App\Filament\Server\Resources\Databases\Pages; use App\Filament\Server\Resources\Databases\DatabaseResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; use Filament\Resources\Pages\ListRecords; class ListDatabases extends ListRecords @@ -16,12 +14,6 @@ class ListDatabases extends ListRecords protected static string $resource = DatabaseResource::class; - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return []; - } - public function getBreadcrumbs(): array { return []; diff --git a/app/Filament/Server/Resources/Files/Pages/EditFiles.php b/app/Filament/Server/Resources/Files/Pages/EditFiles.php index 18645e528..a3108b7c7 100644 --- a/app/Filament/Server/Resources/Files/Pages/EditFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/EditFiles.php @@ -82,7 +82,7 @@ class EditFiles extends Page ->components([ Section::make(trans('server/file.actions.edit.title', ['file' => $this->path])) ->footerActions([ - Action::make('save_and_close') + Action::make('fm_save_and_close') ->label(trans('server/file.actions.edit.save_close')) ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->icon(TablerIcon::DeviceFloppy) @@ -102,7 +102,7 @@ class EditFiles extends Page $this->redirectToList(); }), - Action::make('save') + Action::make('fm_save') ->label(trans('server/file.actions.edit.save')) ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->icon(TablerIcon::DeviceFloppy) @@ -120,7 +120,7 @@ class EditFiles extends Page ->body(fn () => $this->path) ->send(); }), - Action::make('cancel') + Action::make('fm_cancel') ->label(trans('server/file.actions.edit.cancel')) ->color('danger') ->icon(TablerIcon::X) diff --git a/app/Filament/Server/Resources/Files/Pages/ListFiles.php b/app/Filament/Server/Resources/Files/Pages/ListFiles.php index 6fdd36da8..4d42786e6 100644 --- a/app/Filament/Server/Resources/Files/Pages/ListFiles.php +++ b/app/Filament/Server/Resources/Files/Pages/ListFiles.php @@ -2,6 +2,7 @@ namespace App\Filament\Server\Resources\Files\Pages; +use App\Enums\CustomizationKey; use App\Enums\EditorLanguages; use App\Enums\SubuserPermission; use App\Enums\TablerIcon; @@ -134,7 +135,7 @@ class ListFiles extends ListRecords Action::make('view') ->authorize(fn () => user()?->can(SubuserPermission::FileRead, $server)) ->label(trans('server/file.actions.open')) - ->icon(TablerIcon::Eye)->iconSize(IconSize::Large) + ->icon(TablerIcon::Eye) ->visible(fn (File $file) => $file->is_directory) ->url(fn (File $file) => self::getUrl(['path' => encode_path(join_paths($this->path, $file->name))])), EditAction::make('edit') @@ -142,7 +143,7 @@ class ListFiles extends ListRecords ->visible(fn (File $file) => $file->canEdit()) ->url(fn (File $file) => EditFiles::getUrl(['path' => encode_path(join_paths($this->path, $file->name))])), ActionGroup::make([ - Action::make('rename') + Action::make('fm_rename') ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->label(trans('server/file.actions.rename.title')) ->icon(TablerIcon::Forms)->iconSize(IconSize::Large) @@ -172,7 +173,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), - Action::make('copy') + Action::make('fm_copy') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) ->label(trans('server/file.actions.copy.title')) ->icon(TablerIcon::Copy)->iconSize(IconSize::Large) @@ -191,13 +192,13 @@ class ListFiles extends ListRecords $this->refreshPage(); }), - Action::make('download') + Action::make('fm_download') ->authorize(fn () => user()?->can(SubuserPermission::FileReadContent, $server)) ->label(trans('server/file.actions.download')) ->icon(TablerIcon::Download)->iconSize(IconSize::Large) ->visible(fn (File $file) => $file->is_file) ->url(fn (File $file) => DownloadFiles::getUrl(['path' => encode_path(join_paths($this->path, $file->name))]), true), - Action::make('move') + Action::make('fm_move') ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->label(trans('server/file.actions.move.title')) ->icon(TablerIcon::Replace)->iconSize(IconSize::Large) @@ -234,7 +235,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), - Action::make('permissions') + Action::make('fm_permissions') ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->label(trans('server/file.actions.permissions.title')) ->icon(TablerIcon::License)->iconSize(IconSize::Large) @@ -296,7 +297,7 @@ class ListFiles extends ListRecords ->success() ->send(); }), - Action::make('archive') + Action::make('fm_archive') ->authorize(fn () => user()?->can(SubuserPermission::FileArchive, $server)) ->label(trans('server/file.actions.archive.title')) ->icon(TablerIcon::Archive)->iconSize(IconSize::Large) @@ -336,7 +337,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), - Action::make('unarchive') + Action::make('fm_unarchive') ->authorize(fn () => user()?->can(SubuserPermission::FileArchive, $server)) ->label(trans('server/file.actions.unarchive.title')) ->icon(TablerIcon::Archive)->iconSize(IconSize::Large) @@ -359,8 +360,6 @@ class ListFiles extends ListRecords ])->iconSize(IconSize::Large), DeleteAction::make() ->authorize(fn () => user()?->can(SubuserPermission::FileDelete, $server)) - ->hiddenLabel() - ->iconSize(IconSize::Large) ->requiresConfirmation() ->modalHeading(fn (File $file) => trans('filament-actions::delete.single.modal.heading', ['label' => $file->name . ' ' . ($file->is_directory ? 'folder' : 'file')])) ->action(function (File $file) { @@ -377,7 +376,9 @@ class ListFiles extends ListRecords ]) ->toolbarActions([ BulkActionGroup::make([ - BulkAction::make('move') + BulkAction::make('fm_move') + ->label(trans('server/file.actions.move.title')) + ->icon(TablerIcon::Replace)->iconSize(IconSize::Large) ->authorize(fn () => user()?->can(SubuserPermission::FileUpdate, $server)) ->schema([ TextInput::make('location') @@ -406,7 +407,9 @@ class ListFiles extends ListRecords $this->refreshPage(); }), - BulkAction::make('archive') + BulkAction::make('fm_archive') + ->label(trans('server/file.actions.archive.title')) + ->icon(TablerIcon::Archive)->iconSize(IconSize::Large) ->authorize(fn () => user()?->can(SubuserPermission::FileArchive, $server)) ->schema([ Grid::make(3) @@ -446,7 +449,7 @@ class ListFiles extends ListRecords $this->refreshPage(); }), - DeleteBulkAction::make() + DeleteBulkAction::make('fm_delete') ->successNotificationTitle(null) ->authorize(fn () => user()?->can(SubuserPermission::FileDelete, $server)) ->action(function (Collection $files) { @@ -470,7 +473,7 @@ class ListFiles extends ListRecords Action::make('new_file') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) ->tooltip(trans('server/file.actions.new_file.title')) - ->hiddenLabel()->icon(TablerIcon::FilePlus)->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel()->icon(TablerIcon::FilePlus) ->color('primary') ->modalSubmitActionLabel(trans('server/file.actions.new_file.create')) ->action(function ($data) { @@ -511,7 +514,7 @@ class ListFiles extends ListRecords ]), Action::make('new_folder') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) - ->hiddenLabel()->icon(TablerIcon::FolderPlus)->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel()->icon(TablerIcon::FolderPlus) ->tooltip(trans('server/file.actions.new_folder.title')) ->color('primary') ->action(function ($data) { @@ -545,7 +548,7 @@ class ListFiles extends ListRecords ->view('filament.server.pages.file-upload'), Action::make('uploadURL') ->authorize(fn () => user()?->can(SubuserPermission::FileCreate, $server)) - ->hiddenLabel()->icon(TablerIcon::Download)->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel()->icon(TablerIcon::WorldDownload) ->tooltip(trans('server/file.actions.upload.from_url')) ->modalHeading(trans('server/file.actions.upload.from_url')) ->color('success') @@ -567,10 +570,10 @@ class ListFiles extends ListRecords ]), Action::make('search') ->authorize(fn () => user()?->can(SubuserPermission::FileRead, $server)) - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->tooltip(trans('server/file.actions.nested_search.title')) ->color('primary') - ->icon(TablerIcon::WorldSearch) + ->icon(TablerIcon::FolderSearch) ->modalHeading(trans('server/file.actions.nested_search.title')) ->modalSubmitActionLabel(trans('server/file.actions.nested_search.search')) ->schema([ @@ -705,4 +708,24 @@ class ListFiles extends ListRecords ->where('path', '.*'), ); } + + public function fileUploadAction(): Action + { + if (user()?->getCustomization(CustomizationKey::ButtonStyle)) { + return Action::make('fileUpload') + ->iconSize(IconSize::ExtraLarge) + ->iconButton() + ->color('success') + ->icon(TablerIcon::Upload) + ->tooltip(trans('server/file.actions.upload.title')) + ->extraAttributes(['@click' => 'triggerBrowse']); + } + + return Action::make('fileUpload') + ->hiddenLabel() + ->color('success') + ->icon(TablerIcon::Upload) + ->tooltip(trans('server/file.actions.upload.title')) + ->extraAttributes(['@click' => 'triggerBrowse']); + } } diff --git a/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php b/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php index c05ee6179..eff631ff9 100644 --- a/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php +++ b/app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php @@ -17,7 +17,6 @@ use Filament\Actions\ActionGroup; use Filament\Actions\DeleteAction; use Filament\Facades\Filament; use Filament\Resources\Pages\EditRecord; -use Filament\Support\Enums\IconSize; class EditSchedule extends EditRecord { @@ -54,16 +53,13 @@ class EditSchedule extends EditRecord { return [ DeleteAction::make() - ->hiddenLabel() - ->iconButton()->iconSize(IconSize::ExtraLarge) - ->tooltip(trans('server/schedule.delete')) ->after(function ($record) { Activity::event('server:schedule.delete') ->property('name', $record->name) ->log(); }), Action::make('run_now') - ->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(TablerIcon::Run) ->authorize(fn () => user()?->can(SubuserPermission::ScheduleUpdate, Filament::getTenant())) ->tooltip(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->status === ScheduleStatus::Processing ? ScheduleStatus::Processing->getLabel() : trans('server/schedule.run_now'))) @@ -80,8 +76,10 @@ class EditSchedule extends EditRecord $this->fillForm(); }), ExportScheduleAction::make(), - $this->getSaveFormAction()->formId('form') - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + Action::make('save') + ->hiddenLabel() + ->action('save') + ->keyBindings(['mod+s']) ->icon(TablerIcon::DeviceFloppy) ->tooltip(trans('server/schedule.save')), ]; diff --git a/app/Filament/Server/Resources/Schedules/Pages/ListSchedules.php b/app/Filament/Server/Resources/Schedules/Pages/ListSchedules.php index 32f48ef17..94920db25 100644 --- a/app/Filament/Server/Resources/Schedules/Pages/ListSchedules.php +++ b/app/Filament/Server/Resources/Schedules/Pages/ListSchedules.php @@ -5,8 +5,6 @@ namespace App\Filament\Server\Resources\Schedules\Pages; use App\Filament\Server\Resources\Schedules\ScheduleResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; use Filament\Resources\Pages\ListRecords; class ListSchedules extends ListRecords @@ -16,12 +14,6 @@ class ListSchedules extends ListRecords protected static string $resource = ScheduleResource::class; - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return []; - } - public function getBreadcrumbs(): array { return []; diff --git a/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php b/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php index 82ddd2eda..6809f4370 100644 --- a/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php +++ b/app/Filament/Server/Resources/Schedules/Pages/ViewSchedule.php @@ -10,7 +10,6 @@ use Filament\Actions\Action; use Filament\Actions\ActionGroup; use Filament\Actions\EditAction; use Filament\Resources\Pages\ViewRecord; -use Filament\Support\Enums\IconSize; class ViewSchedule extends ViewRecord { @@ -24,7 +23,7 @@ class ViewSchedule extends ViewRecord { return [ EditAction::make() - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(TablerIcon::CalendarCode) ->tooltip(trans('server/schedule.edit')), ]; diff --git a/app/Filament/Server/Resources/Schedules/ScheduleResource.php b/app/Filament/Server/Resources/Schedules/ScheduleResource.php index c9a9e9cd2..a9ed0e4cf 100644 --- a/app/Filament/Server/Resources/Schedules/ScheduleResource.php +++ b/app/Filament/Server/Resources/Schedules/ScheduleResource.php @@ -41,7 +41,6 @@ use Filament\Schemas\Components\Section; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; use Filament\Schemas\Schema; -use Filament\Support\Enums\IconSize; use Filament\Support\Exceptions\Halt; use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\TextColumn; @@ -349,12 +348,12 @@ class ScheduleResource extends Resource ]) ->toolbarActions([ CreateAction::make() - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(TablerIcon::CalendarPlus) ->color('primary') ->tooltip(trans('server/schedule.new')), ImportScheduleAction::make() - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(TablerIcon::FileImport) ->color('success') ->tooltip(trans('server/schedule.import')), diff --git a/app/Filament/Server/Resources/Subusers/Pages/ListSubusers.php b/app/Filament/Server/Resources/Subusers/Pages/ListSubusers.php index 7fef5a180..d42c99529 100644 --- a/app/Filament/Server/Resources/Subusers/Pages/ListSubusers.php +++ b/app/Filament/Server/Resources/Subusers/Pages/ListSubusers.php @@ -5,8 +5,6 @@ namespace App\Filament\Server\Resources\Subusers\Pages; use App\Filament\Server\Resources\Subusers\SubuserResource; use App\Traits\Filament\CanCustomizeHeaderActions; use App\Traits\Filament\CanCustomizeHeaderWidgets; -use Filament\Actions\Action; -use Filament\Actions\ActionGroup; use Filament\Resources\Pages\ListRecords; use Illuminate\Contracts\Support\Htmlable; @@ -17,12 +15,6 @@ class ListSubusers extends ListRecords protected static string $resource = SubuserResource::class; - /** @return array */ - protected function getDefaultHeaderActions(): array - { - return []; - } - public function getBreadcrumbs(): array { return []; diff --git a/app/Filament/Server/Resources/Subusers/SubuserResource.php b/app/Filament/Server/Resources/Subusers/SubuserResource.php index 0d6cf0990..c55d5058a 100644 --- a/app/Filament/Server/Resources/Subusers/SubuserResource.php +++ b/app/Filament/Server/Resources/Subusers/SubuserResource.php @@ -35,7 +35,6 @@ use Filament\Schemas\Components\Tabs; use Filament\Schemas\Components\Tabs\Tab; use Filament\Schemas\Components\Utilities\Get; use Filament\Schemas\Components\Utilities\Set; -use Filament\Support\Enums\IconSize; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Table; @@ -218,7 +217,7 @@ class SubuserResource extends Resource ]) ->toolbarActions([ CreateAction::make('invite') - ->hiddenLabel()->iconButton()->iconSize(IconSize::ExtraLarge) + ->hiddenLabel() ->icon(TablerIcon::UserPlus) ->tooltip(trans('server/user.invite_user')) ->createAnother(false) diff --git a/app/Listeners/Server/ServerInstalledListener.php b/app/Listeners/Server/ServerInstalledListener.php index cdf60604c..9f9ca262d 100644 --- a/app/Listeners/Server/ServerInstalledListener.php +++ b/app/Listeners/Server/ServerInstalledListener.php @@ -21,7 +21,7 @@ class ServerInstalledListener ->title(trans('notifications.' . ($event->initialInstall ? 'installation' : 'reinstallation') . '_' . ($event->successful ? 'completed' : 'failed'), locale: $locale)) ->body(trans('server/setting.server_info.server_name', ['name' => $event->server->name], $locale)) ->actions([ - Action::make('view') + Action::make('exclude_view') ->button() ->label(trans('notifications.open_server', locale: $locale)) ->markAsRead() diff --git a/app/Listeners/Server/SubUserAddedListener.php b/app/Listeners/Server/SubUserAddedListener.php index e1dcd85bd..22121e9cb 100644 --- a/app/Listeners/Server/SubUserAddedListener.php +++ b/app/Listeners/Server/SubUserAddedListener.php @@ -21,7 +21,7 @@ class SubUserAddedListener ->title(trans('notifications.user_added.title', locale: $locale)) ->body(trans('notifications.user_added.body', ['server' => $event->subuser->server->name], $locale)) ->actions([ - Action::make('view') + Action::make('exclude_view') ->button() ->label(trans('notifications.open_server', locale: $locale)) ->markAsRead() diff --git a/app/Providers/Filament/FilamentServiceProvider.php b/app/Providers/Filament/FilamentServiceProvider.php index 788172eba..48d636737 100644 --- a/app/Providers/Filament/FilamentServiceProvider.php +++ b/app/Providers/Filament/FilamentServiceProvider.php @@ -2,16 +2,26 @@ namespace App\Providers\Filament; +use App\Enums\CustomizationKey; use App\Enums\TablerIcon; +use Filament\Actions\Action; +use Filament\Actions\CreateAction; use Filament\Actions\DeleteAction; +use Filament\Actions\EditAction; use Filament\Actions\View\ActionsIconAlias; +use Filament\Actions\ViewAction; use Filament\Forms\Components\Field; +use Filament\Forms\Components\KeyValue; +use Filament\Forms\Components\Repeater; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput\Actions\CopyAction; +use Filament\Forms\Components\TextInput\Actions\HidePasswordAction; +use Filament\Forms\Components\TextInput\Actions\ShowPasswordAction; use Filament\Forms\View\FormsIconAlias; use Filament\Notifications\View\NotificationsIconAlias; use Filament\Schemas\View\SchemaIconAlias; use Filament\Support\Colors\Color; +use Filament\Support\Enums\IconSize; use Filament\Support\Facades\FilamentColor; use Filament\Support\Facades\FilamentIcon; use Filament\Support\Facades\FilamentView; @@ -86,7 +96,115 @@ class FilamentServiceProvider extends ServiceProvider }); Select::configureUsing(fn (Select $select) => $select->native(false)); - DeleteAction::configureUsing(fn (DeleteAction $action) => $action->icon(TablerIcon::Trash)); + + KeyValue::configureUsing(fn (KeyValue $keyValue) => $keyValue->deleteAction(function (Action $action) { + $action->tooltip(trans('filament-forms::components.key_value.actions.delete.label')); + $action->iconSize(IconSize::Large); + })); + + Repeater::configureUsing(fn (Repeater $repeater) => $repeater->deleteAction(function (Action $action) { + $action->tooltip(trans('filament-forms::components.repeater.actions.delete.label')); + $action->iconSize(IconSize::Large); + })); + + ShowPasswordAction::configureUsing(function (ShowPasswordAction $action) { + $action->tooltip(trans('filament-forms::components.text_input.actions.show_password.label')); + $action->iconSize(IconSize::Large); + }); + + HidePasswordAction::configureUsing(function (HidePasswordAction $action) { + $action->tooltip(trans('filament-forms::components.text_input.actions.hide_password.label')); + $action->iconSize(IconSize::Large); + }); + + CopyAction::configureUsing(function (CopyAction $action) { + $action->tooltip(trans('filament-forms::components.text_input.actions.copy.label')); + $action->iconSize(IconSize::Large); + }); + + DeleteAction::configureUsing(function (DeleteAction $action) { + $action->icon(TablerIcon::Trash); + $action->tooltip(trans('filament-actions::delete.single.modal.actions.delete.label')); + $action->hiddenLabel(); + $action->iconSize(IconSize::Large); + + if (user()?->getCustomization(CustomizationKey::ButtonStyle)) { + $action->iconButton(); + $action->iconSize(IconSize::ExtraLarge); + } + }); + + CreateAction::configureUsing(function (CreateAction $action) { + $action->tooltip(fn (): string => trans('filament-actions::create.single.label', ['label' => $action->getModelLabel()])); + $action->iconSize(IconSize::Large); + + if (user()?->getCustomization(CustomizationKey::ButtonStyle)) { + $action->iconButton(); + $action->iconSize(IconSize::ExtraLarge); + } + }); + + EditAction::configureUsing(function (EditAction $action) { + $action->tooltip(trans('filament-actions::edit.single.label')); + $action->iconSize(IconSize::Large); + + if (user()?->getCustomization(CustomizationKey::ButtonStyle)) { + $action->iconButton(); + $action->iconSize(IconSize::ExtraLarge); + } + }); + + ViewAction::configureUsing(function (ViewAction $action) { + $action->tooltip(trans('filament-actions::view.single.label')); + $action->iconSize(IconSize::Large); + + if (user()?->getCustomization(CustomizationKey::ButtonStyle)) { + $action->iconButton(); + $action->iconSize(IconSize::ExtraLarge); + } + }); + + Action::configureUsing(function (Action $action) { + $action->iconSize(IconSize::Large); + + if (user()?->getCustomization(CustomizationKey::ButtonStyle)) { + $name = $action->getName(); + + $excludedPrefixes = [ + 'enable_oauth_', + 'disable_oauth_', + 'enable_captcha_', + 'disable_captcha_', + 'db_', // dashboard + 'fm_', // file manager + 'hint_', // hint actions + 'exclude_', // exclude actions + ]; + + $excludeActions = [ + 'profile', + 'logout', + 'start', + 'stop', + 'restart', + 'kill', + 'fileUpload', + ]; + + foreach ($excludedPrefixes as $prefix) { + if (str_starts_with($name, $prefix)) { + return; + } + } + + if (in_array($name, $excludeActions, true)) { + return; + } + + $action->iconButton(); + $action->iconSize(IconSize::ExtraLarge); + } + }); FilamentIcon::register([ ActionsIconAlias::DELETE_ACTION => TablerIcon::Trash, diff --git a/lang/en/admin/egg.php b/lang/en/admin/egg.php index 65416a7da..2f06b46af 100644 --- a/lang/en/admin/egg.php +++ b/lang/en/admin/egg.php @@ -27,6 +27,7 @@ return [ 'github' => 'GitHub', 'refresh' => 'Refresh', 'import_image' => 'Import Image', + 'delete_image' => 'Delete Image', 'no_local_ip' => 'Local IP Addresses are not allowed', 'unsupported_format' => 'Unsupported Format. Supported Formats: :formats', 'invalid_url' => 'The provided URL is invalid', diff --git a/lang/en/admin/server.php b/lang/en/admin/server.php index efa8b5919..e0bb2beba 100644 --- a/lang/en/admin/server.php +++ b/lang/en/admin/server.php @@ -7,6 +7,8 @@ return [ 'no_servers' => 'No Servers', 'create' => 'Create Server', 'ip_address' => 'IP Address', + 'import_image' => 'Import Image', + 'delete_image' => 'Delete Image', 'ip_address_helper' => 'Usually your machine\'s public IP unless you are port forwarding.', 'port' => 'Port', 'ports' => 'Ports', diff --git a/resources/views/filament/server/pages/file-upload.blade.php b/resources/views/filament/server/pages/file-upload.blade.php index c59899b23..cffa0364e 100644 --- a/resources/views/filament/server/pages/file-upload.blade.php +++ b/resources/views/filament/server/pages/file-upload.blade.php @@ -162,17 +162,17 @@ if (failed.length === 0) { new window.FilamentNotification() - .title('{{ trans('server/file.actions.upload.success') }}') + .title('{{ preg_replace("/'/", "\\'", trans('server/file.actions.upload.success')) }}') .success() .send(); } else if (failed.length === this.totalFiles) { new window.FilamentNotification() - .title('{{ trans('server/file.actions.upload.failed') }}') + .title('{{ preg_replace("/'/", "\\'", trans('server/file.actions.upload.failed')) }}') .danger() .send(); } else { new window.FilamentNotification() - .title('{{ trans('server/file.actions.upload.failed') }}') + .title('{{ preg_replace("/'/", "\\'", trans('server/file.actions.upload.failed')) }}') .danger() .send(); } @@ -199,7 +199,7 @@ } catch (error) { console.error('Upload error:', error); new window.FilamentNotification() - .title('{{ trans('server/file.actions.upload.error') }}') + .title('{{ preg_replace("/'/", "\\'", trans('server/file.actions.upload.failed')) }}') .danger() .send(); this.isUploading = false; @@ -303,13 +303,8 @@ }, }" > - - + {{ $this->fileUploadAction }} +