From 183bde311c7a0353818427efb9e922f2bfca6732 Mon Sep 17 00:00:00 2001 From: hashicc <191911133+hashicc@users.noreply.github.com> Date: Tue, 25 Nov 2025 13:32:58 -0500 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=A4=96=20use=20statically=20refe?= =?UTF-8?q?renced=20credential=20form=20components=20(#3069)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 🤖 use statically referenced credential form components * chore: 🤖 add entry for password credential form --- .../app/components/form/credential/index.hbs | 15 ++++---- .../app/components/form/credential/index.js | 37 ++++++++++++++++++- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/ui/admin/app/components/form/credential/index.hbs b/ui/admin/app/components/form/credential/index.hbs index 7fedeec6e..26302ac71 100644 --- a/ui/admin/app/components/form/credential/index.hbs +++ b/ui/admin/app/components/form/credential/index.hbs @@ -4,12 +4,11 @@ }} {{#if @model.type}} - {{component - (concat 'form/credential/' @model.type) - model=@model - types=this.credentialTypes - submit=@submit - cancel=@cancel - changeType=@changeType - }} + {{/if}} \ No newline at end of file diff --git a/ui/admin/app/components/form/credential/index.js b/ui/admin/app/components/form/credential/index.js index e089aebf1..2b9153d11 100644 --- a/ui/admin/app/components/form/credential/index.js +++ b/ui/admin/app/components/form/credential/index.js @@ -4,7 +4,29 @@ */ import Component from '@glimmer/component'; -import { TYPES_CREDENTIAL } from 'api/models/credential'; +import { assert } from '@ember/debug'; +import { + TYPES_CREDENTIAL, + TYPE_CREDENTIAL_USERNAME_PASSWORD, + TYPE_CREDENTIAL_SSH_PRIVATE_KEY, + TYPE_CREDENTIAL_JSON, + TYPE_CREDENTIAL_USERNAME_PASSWORD_DOMAIN, + TYPE_CREDENTIAL_PASSWORD, +} from 'api/models/credential'; +import usernamePasswordFormComponent from './username_password'; +import sshPrivateKeyFormComponent from './ssh_private_key'; +import jsonFormComponent from './json'; +import usernamePasswordDomainFormComponent from './username_password_domain'; +import passwordFormComponent from './password'; + +const modelTypeToComponent = { + [TYPE_CREDENTIAL_USERNAME_PASSWORD]: usernamePasswordFormComponent, + [TYPE_CREDENTIAL_SSH_PRIVATE_KEY]: sshPrivateKeyFormComponent, + [TYPE_CREDENTIAL_JSON]: jsonFormComponent, + [TYPE_CREDENTIAL_USERNAME_PASSWORD_DOMAIN]: + usernamePasswordDomainFormComponent, + [TYPE_CREDENTIAL_PASSWORD]: passwordFormComponent, +}; export default class FormCredentialComponent extends Component { // =attributes @@ -16,4 +38,17 @@ export default class FormCredentialComponent extends Component { get credentialTypes() { return TYPES_CREDENTIAL; } + + /** + * Returns the form component for the credential model type + * @type {Component} + */ + get credentialFormComponent() { + const component = modelTypeToComponent[this.args.model.type]; + assert( + `Mapped component must exist for credential type: ${this.args.model.type}`, + component, + ); + return component; + } }