*/ protected function getDefaultHeaderActions(): array { /** @var Server $server */ $server = Filament::getTenant(); return [ CreateAction::make('new') ->hiddenLabel()->iconButton()->iconSize(IconSize::Large) ->icon(fn () => $server->databases()->count() >= $server->database_limit ? 'tabler-database-x' : 'tabler-database-plus') ->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) ->color(fn () => $server->databases()->count() >= $server->database_limit ? 'danger' : 'primary') ->createAnother(false) ->form([ Grid::make() ->columns(2) ->schema([ Select::make('database_host_id') ->label(trans('server/database.database_host')) ->columnSpan(2) ->required() ->placeholder(trans('server/database.database_host_select')) ->options(fn () => $server->node->databaseHosts->mapWithKeys(fn (DatabaseHost $databaseHost) => [$databaseHost->id => $databaseHost->name])), TextInput::make('database') ->label(trans('server/database.name')) ->columnSpan(1) ->prefix('s'. $server->id . '_') ->hintIcon('tabler-question-mark') ->hintIconTooltip(trans('server/database.name_hint')), TextInput::make('remote') ->label(trans('server/database.connections_from')) ->columnSpan(1) ->default('%'), ]), ]) ->action(function ($data, DatabaseManagementService $service) use ($server) { if (empty($data['database'])) { $data['database'] = Str::random(12); } $data['database'] = 's'. $server->id . '_' . $data['database']; $service->create($server, $data); }), ]; } public function getBreadcrumbs(): array { return []; } public function getTitle(): string { return trans('server/database.title'); } }