mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-31 18:16:55 +01:00 
			
		
		
		
	Refactor: add FilamentServiceProvider & globally make Select native(false) (#1836)
				
					
				
			This commit is contained in:
		
							parent
							
								
									d38075e3cb
								
							
						
					
					
						commit
						e6aa76ef2c
					
				| @ -56,8 +56,7 @@ class JavaVersionSchema implements FeatureSchemaInterface | ||||
|                     ->default(fn () => $server->image) | ||||
|                     ->notIn(fn () => $server->image) | ||||
|                     ->required() | ||||
|                     ->preload() | ||||
|                     ->native(false), | ||||
|                     ->preload(), | ||||
|             ]) | ||||
|             ->action(function (array $data, DaemonServerRepository $serverRepository) use ($server) { | ||||
|                 try { | ||||
|  | ||||
| @ -181,7 +181,6 @@ class Settings extends Page implements HasSchemas | ||||
|                 ->schema([ | ||||
|                     Select::make('FILAMENT_AVATAR_PROVIDER') | ||||
|                         ->label(trans('admin/setting.general.avatar_provider')) | ||||
|                         ->native(false) | ||||
|                         ->options($this->avatarService->getMappings()) | ||||
|                         ->selectablePlaceholder(false) | ||||
|                         ->default(env('FILAMENT_AVATAR_PROVIDER', config('panel.filament.avatar-provider'))), | ||||
| @ -217,7 +216,6 @@ class Settings extends Page implements HasSchemas | ||||
|                 ->default(env('APP_2FA_REQUIRED', config('panel.auth.2fa_required'))), | ||||
|             Select::make('FILAMENT_WIDTH') | ||||
|                 ->label(trans('admin/setting.general.display_width')) | ||||
|                 ->native(false) | ||||
|                 ->options(Width::class) | ||||
|                 ->selectablePlaceholder(false) | ||||
|                 ->default(env('FILAMENT_WIDTH', config('panel.filament.display-width'))), | ||||
|  | ||||
| @ -257,7 +257,6 @@ class CreateEgg extends CreateRecord | ||||
|                                 ->default('ghcr.io/pelican-eggs/installers:debian'), | ||||
|                             Select::make('script_entry') | ||||
|                                 ->label(trans('admin/egg.script_entry')) | ||||
|                                 ->native(false) | ||||
|                                 ->selectablePlaceholder(false) | ||||
|                                 ->default('bash') | ||||
|                                 ->options([ | ||||
|  | ||||
| @ -248,7 +248,6 @@ class EditEgg extends EditRecord | ||||
|                                 ->placeholder('ghcr.io/pelican-eggs/installers:debian'), | ||||
|                             Select::make('script_entry') | ||||
|                                 ->label(trans('admin/egg.script_entry')) | ||||
|                                 ->native(false) | ||||
|                                 ->selectablePlaceholder(false) | ||||
|                                 ->options([ | ||||
|                                     'bash' => 'bash', | ||||
|  | ||||
| @ -236,8 +236,7 @@ class UserResource extends Resource | ||||
|                                     ->default(fn () => config('app.timezone', 'UTC')) | ||||
|                                     ->selectablePlaceholder(false) | ||||
|                                     ->options(fn () => collect(DateTimeZone::listIdentifiers())->mapWithKeys(fn ($tz) => [$tz => $tz])) | ||||
|                                     ->searchable() | ||||
|                                     ->native(false), | ||||
|                                     ->searchable(), | ||||
|                                 Select::make('language') | ||||
|                                     ->label(trans('profile.language')) | ||||
|                                     ->columnSpan([ | ||||
| @ -251,8 +250,7 @@ class UserResource extends Resource | ||||
|                                     ->default('en') | ||||
|                                     ->searchable() | ||||
|                                     ->selectablePlaceholder(false) | ||||
|                                     ->options(fn (LanguageService $languageService) => $languageService->getAvailableLanguages()) | ||||
|                                     ->native(false), | ||||
|                                     ->options(fn (LanguageService $languageService) => $languageService->getAvailableLanguages()), | ||||
|                                 FileUpload::make('avatar') | ||||
|                                     ->visible(fn (?User $user, FileUpload $fileUpload) => $user ? $fileUpload->getDisk()->exists($fileUpload->getDirectory() . '/' . $user->id . '.png') : false) | ||||
|                                     ->avatar() | ||||
|  | ||||
| @ -21,8 +21,6 @@ class CopyFrom extends Select | ||||
| 
 | ||||
|         $this->searchable(); | ||||
| 
 | ||||
|         $this->native(false); | ||||
| 
 | ||||
|         $this->live(); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -132,8 +132,7 @@ class EditProfile extends BaseEditProfile | ||||
|                                     ->default(config('app.timezone', 'UTC')) | ||||
|                                     ->selectablePlaceholder(false) | ||||
|                                     ->options(fn () => collect(DateTimeZone::listIdentifiers())->mapWithKeys(fn ($tz) => [$tz => $tz])) | ||||
|                                     ->searchable() | ||||
|                                     ->native(false), | ||||
|                                     ->searchable(), | ||||
|                                 Select::make('language') | ||||
|                                     ->label(trans('profile.language')) | ||||
|                                     ->required() | ||||
| @ -143,8 +142,7 @@ class EditProfile extends BaseEditProfile | ||||
|                                     ->selectablePlaceholder(false) | ||||
|                                     ->helperText(fn ($state, LanguageService $languageService) => new HtmlString($languageService->isLanguageTranslated($state) ? '' | ||||
|                                             : trans('profile.language_help', ['state' => $state]) . ' <u><a href="https://crowdin.com/project/pelican-dev/">Update On Crowdin</a></u>')) | ||||
|                                     ->options(fn (LanguageService $languageService) => $languageService->getAvailableLanguages()) | ||||
|                                     ->native(false), | ||||
|                                     ->options(fn (LanguageService $languageService) => $languageService->getAvailableLanguages()), | ||||
|                                 FileUpload::make('avatar') | ||||
|                                     ->visible(fn () => config('panel.filament.uploadable-avatars')) | ||||
|                                     ->avatar() | ||||
|  | ||||
| @ -308,7 +308,6 @@ class ListFiles extends ListRecords | ||||
|                                     Select::make('extension') | ||||
|                                         ->label(trans('server/file.actions.archive.extension')) | ||||
|                                         ->selectablePlaceholder(false) | ||||
|                                         ->native(false) | ||||
|                                         ->options([ | ||||
|                                             'tar.gz' => 'tar.gz', | ||||
|                                             'zip' => 'zip', | ||||
| @ -417,7 +416,6 @@ class ListFiles extends ListRecords | ||||
|                                     Select::make('extension') | ||||
|                                         ->label(trans('server/file.actions.archive.extension')) | ||||
|                                         ->selectablePlaceholder(false) | ||||
|                                         ->native(false) | ||||
|                                         ->options([ | ||||
|                                             'tar.gz' => 'tar.gz', | ||||
|                                             'zip' => 'zip', | ||||
|  | ||||
| @ -255,8 +255,7 @@ class ScheduleResource extends Resource | ||||
|                                             '6' => trans('server/schedule.time.saturday'), | ||||
|                                             '0' => trans('server/schedule.time.sunday'), | ||||
|                                         ]) | ||||
|                                         ->selectablePlaceholder(false) | ||||
|                                         ->native(false), | ||||
|                                         ->selectablePlaceholder(false), | ||||
|                                 ]) | ||||
|                                 ->action(function (Set $set, $data) { | ||||
|                                     $set('cron_minute', '0'); | ||||
|  | ||||
| @ -117,7 +117,6 @@ class PanelInstaller extends SimplePage implements HasForms | ||||
|             ->selectablePlaceholder(false) | ||||
|             ->options(fn (LanguageService $languageService) => $languageService->getAvailableLanguages()) | ||||
|             ->afterStateUpdated(fn ($state, Application $app) => $app->setLocale($state ?? config('app.locale'))) | ||||
|             ->native(false) | ||||
|             ->columnStart(4); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -26,30 +26,18 @@ use App\Services\Helpers\SoftwareVersionService; | ||||
| use Dedoc\Scramble\Scramble; | ||||
| use Dedoc\Scramble\Support\Generator\OpenApi; | ||||
| use Dedoc\Scramble\Support\Generator\SecurityScheme; | ||||
| use Filament\Forms\Components\Field; | ||||
| use Filament\Forms\Components\TextInput\Actions\CopyAction; | ||||
| use Filament\Support\Colors\Color; | ||||
| use Filament\Support\Facades\FilamentColor; | ||||
| use Filament\Support\Facades\FilamentView; | ||||
| use Filament\View\PanelsRenderHook; | ||||
| use Illuminate\Config\Repository; | ||||
| use Illuminate\Database\Eloquent\Relations\Relation; | ||||
| use Illuminate\Foundation\Application; | ||||
| use Illuminate\Foundation\Console\AboutCommand; | ||||
| use Illuminate\Support\Facades\Blade; | ||||
| use Illuminate\Support\Facades\Gate; | ||||
| use Illuminate\Support\Facades\Http; | ||||
| use Illuminate\Support\Facades\URL; | ||||
| use Illuminate\Support\ServiceProvider; | ||||
| use Illuminate\Support\Str; | ||||
| use Laravel\Sanctum\Sanctum; | ||||
| use Livewire\Component; | ||||
| use Livewire\Livewire; | ||||
| use Spatie\Health\Facades\Health; | ||||
| 
 | ||||
| use function Livewire\on; | ||||
| use function Livewire\store; | ||||
| 
 | ||||
| class AppServiceProvider extends ServiceProvider | ||||
| { | ||||
|     /** | ||||
| @ -104,57 +92,6 @@ class AppServiceProvider extends ServiceProvider | ||||
|         Scramble::registerApi('application', ['api_path' => 'api/application', 'info' => ['version' => '1.0']])->afterOpenApiGenerated($bearerTokens); | ||||
|         Scramble::registerApi('client', ['api_path' => 'api/client', 'info' => ['version' => '1.0']])->afterOpenApiGenerated($bearerTokens); | ||||
| 
 | ||||
|         FilamentColor::register([ | ||||
|             'danger' => Color::Red, | ||||
|             'gray' => Color::Zinc, | ||||
|             'info' => Color::Sky, | ||||
|             'primary' => Color::Blue, | ||||
|             'success' => Color::Green, | ||||
|             'warning' => Color::Amber, | ||||
|             'blurple' => Color::hex('#5865F2'), | ||||
|         ]); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::PAGE_START, | ||||
|             fn () => Blade::render('@livewire(\App\Livewire\AlertBannerContainer::class)'), | ||||
|         ); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::FOOTER, | ||||
|             fn () => Blade::render('filament.layouts.footer'), | ||||
|         ); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::STYLES_BEFORE, | ||||
|             fn () => Blade::render("@vite(['resources/css/app.css'])") | ||||
|         ); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::SCRIPTS_AFTER, | ||||
|             fn () => Blade::render("@vite(['resources/js/app.js'])"), | ||||
|         ); | ||||
| 
 | ||||
|         on('dehydrate', function (Component $component) { | ||||
|             if (!Livewire::isLivewireRequest()) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (store($component)->has('redirect')) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (count(session()->get('alert-banners') ?? []) <= 0) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             $component->dispatch('alertBannerSent'); | ||||
|         }); | ||||
| 
 | ||||
|         Field::macro('hintCopy', function () { | ||||
|             /** @var Field $this */ | ||||
|             return $this->hintAction(CopyAction::make()); // @phpstan-ignore varTag.nativeType
 | ||||
|         }); | ||||
| 
 | ||||
|         // Don't run any health checks during tests
 | ||||
|         if (!$app->runningUnitTests()) { | ||||
|             Health::checks([ | ||||
|  | ||||
							
								
								
									
										82
									
								
								app/Providers/Filament/FilamentServiceProvider.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								app/Providers/Filament/FilamentServiceProvider.php
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,82 @@ | ||||
| <?php | ||||
| 
 | ||||
| namespace App\Providers\Filament; | ||||
| 
 | ||||
| use Filament\Forms\Components\Field; | ||||
| use Filament\Forms\Components\Select; | ||||
| use Filament\Forms\Components\TextInput\Actions\CopyAction; | ||||
| use Filament\Support\Colors\Color; | ||||
| use Filament\Support\Facades\FilamentColor; | ||||
| use Filament\Support\Facades\FilamentView; | ||||
| use Filament\View\PanelsRenderHook; | ||||
| use Illuminate\Support\Facades\Blade; | ||||
| use Illuminate\Support\ServiceProvider; | ||||
| use Livewire\Component; | ||||
| use Livewire\Livewire; | ||||
| 
 | ||||
| use function Livewire\on; | ||||
| use function Livewire\store; | ||||
| 
 | ||||
| class FilamentServiceProvider extends ServiceProvider | ||||
| { | ||||
|     /** | ||||
|      * Bootstrap any application services. | ||||
|      */ | ||||
|     public function boot(): void | ||||
|     { | ||||
|         FilamentColor::register([ | ||||
|             'danger' => Color::Red, | ||||
|             'gray' => Color::Zinc, | ||||
|             'info' => Color::Sky, | ||||
|             'primary' => Color::Blue, | ||||
|             'success' => Color::Green, | ||||
|             'warning' => Color::Amber, | ||||
|             'blurple' => Color::hex('#5865F2'), | ||||
|         ]); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::PAGE_START, | ||||
|             fn () => Blade::render('@livewire(\App\Livewire\AlertBannerContainer::class)'), | ||||
|         ); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::FOOTER, | ||||
|             fn () => Blade::render('filament.layouts.footer'), | ||||
|         ); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::STYLES_BEFORE, | ||||
|             fn () => Blade::render("@vite(['resources/css/app.css'])") | ||||
|         ); | ||||
| 
 | ||||
|         FilamentView::registerRenderHook( | ||||
|             PanelsRenderHook::SCRIPTS_AFTER, | ||||
|             fn () => Blade::render("@vite(['resources/js/app.js'])"), | ||||
|         ); | ||||
| 
 | ||||
|         on('dehydrate', function (Component $component) { | ||||
|             if (!Livewire::isLivewireRequest()) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (store($component)->has('redirect')) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (count(session()->get('alert-banners') ?? []) <= 0) { | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             $component->dispatch('alertBannerSent'); | ||||
|         }); | ||||
| 
 | ||||
|         Field::macro('hintCopy', function () { | ||||
|             /** @var Field $this */ | ||||
|             return $this->hintAction(CopyAction::make()); // @phpstan-ignore varTag.nativeType
 | ||||
|         }); | ||||
| 
 | ||||
|         Select::configureUsing(fn (Select $select) => $select->native(false)); | ||||
|     } | ||||
| 
 | ||||
|     public function register(): void {} | ||||
| } | ||||
| @ -5,13 +5,14 @@ return [ | ||||
|     App\Providers\AppServiceProvider::class, | ||||
|     App\Providers\BackupsServiceProvider::class, | ||||
|     App\Providers\EventServiceProvider::class, | ||||
|     App\Providers\Filament\AdminPanelProvider::class, | ||||
|     App\Providers\Filament\AppPanelProvider::class, | ||||
|     App\Providers\Filament\ServerPanelProvider::class, | ||||
|     App\Providers\Extensions\AvatarServiceProvider::class, | ||||
|     App\Providers\Extensions\CaptchaServiceProvider::class, | ||||
|     App\Providers\Extensions\FeatureServiceProvider::class, | ||||
|     App\Providers\Extensions\OAuthServiceProvider::class, | ||||
|     App\Providers\Filament\AdminPanelProvider::class, | ||||
|     App\Providers\Filament\AppPanelProvider::class, | ||||
|     App\Providers\Filament\FilamentServiceProvider::class, | ||||
|     App\Providers\Filament\ServerPanelProvider::class, | ||||
|     App\Providers\RouteServiceProvider::class, | ||||
|     SocialiteProviders\Manager\ServiceProvider::class, | ||||
| ]; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 MartinOscar
						MartinOscar