*/ public static function form(SourceControl $sourceControl): array { return [ TextInput::make('name') ->rules(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['name']), TextInput::make('token') ->label('API Key') ->validationAttribute('API Key') ->visible(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['token'] ?? false) ->rules(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['token']), TextInput::make('url') ->label('URL (optional)') ->visible(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['url'] ?? false) ->rules(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['url']) ->helperText('If you run a self-managed gitlab enter the url here, leave empty to use gitlab.com'), TextInput::make('username') ->visible(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['username'] ?? false) ->rules(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['username']), TextInput::make('password') ->visible(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['password'] ?? false) ->rules(fn (Get $get) => EditSourceControl::rules($sourceControl, $get())['password']), Checkbox::make('global') ->label('Is Global (Accessible in all projects)'), ]; } /** * @param array $data * * @throws Exception */ public static function action(SourceControl $sourceControl, array $data): void { /** @var User $user */ $user = auth()->user(); try { app(EditSourceControl::class)->edit($sourceControl, $user->currentProject, $data); } catch (Exception $e) { Notification::make() ->title($e->getMessage()) ->danger() ->send(); throw $e; } } }