import Component from '@glimmer/component'; import { action } from '@ember/object'; /** * @module PkiKeyParameters * PkiKeyParameters components are used to display a list of key bit options depending on the selected key type. The key bits field is disabled until a key type is selected. * If the component renders in a group, other attrs may be passed in and will be rendered using the component * @example * ```js * * ``` * @param {class} model - The pki/role model. * @param {string} fields - Array of attributes from a formFieldGroup generated by the @withFormFields decorator ex: [{ name: 'attrName', type: 'string', options: {...} }] */ // first value in array is the default bits for that key type const KEY_BITS_OPTIONS = { rsa: ['2048', '3072', '4096'], ec: ['256', '224', '384', '521'], ed25519: ['0'], any: ['0'], }; export default class PkiKeyParameters extends Component { get keyBitOptions() { return KEY_BITS_OPTIONS[this.args.model.keyType]; } @action handleSelection(name, selection) { this.args.model[name] = selection; if (name === 'keyType') { this.args.model.keyBits = Object.keys(KEY_BITS_OPTIONS).includes(selection) ? KEY_BITS_OPTIONS[selection][0] : ''; } } @action onKeyBitsChange({ target }) { this.handleSelection(target.name, target.value); } }