Files
threshold-ui/ui/admin/app/components/form/credential-library/vault-generic/index.js
T
Dharini Jeeva 6397cd80a6 Refactor key value comp (#2180)
* refactor: 💡 keyvalue comp
2024-06-03 13:38:42 -07:00

82 lines
2.0 KiB
JavaScript

/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import Component from '@glimmer/component';
import {
options,
TYPES_CREDENTIAL_LIBRARY,
} from 'api/models/credential-library';
import { action } from '@ember/object';
export default class FormCredentialLibraryVaultGenericComponent extends Component {
// =properties
/**
* @type {object}
*/
httpMethodOptions = options.http_method;
credentialTypes = options.credential_types;
/**
*
* @type {Array.<string>}
*/
types = TYPES_CREDENTIAL_LIBRARY;
/**
* Only allow HTTP request body field if http_method is set to POST.
* @type {boolean}
*/
get isHttpRequestBodyAllowed() {
return this.args.model.http_method?.match(/post/i);
}
get mappingOverrides() {
return options.mapping_overrides[this.args.model.credential_type];
}
get allowedEntries() {
return this.mappingOverrides.length;
}
/**
* Clear the previously selected key value pair when toggling between credential types on a new form
*/
@action
selectCredentialType({ target: { value } }) {
this.args.model.credential_mapping_overrides = [];
this.args.model.credential_type = value;
}
/**
* Prevents users from selecting duplicate keys from the select list if the arg is set to true
* @type {array}
*/
get selectOptions() {
const previouslySelectedKeys =
this.args.model.credential_mapping_overrides || [];
if (previouslySelectedKeys.length) {
return this.mappingOverrides.filter((key) =>
previouslySelectedKeys.every((obj) => obj.key !== key),
);
} else {
return this.mappingOverrides;
}
}
/**
* Determines if we need to show an empty row to the users to enter more key/value pairs based on removeDuplicates arg,
* by default it is true
* @type {object}
*/
@action
showNewRow() {
return (
this.args.model.credential_mapping_overrides?.length !==
this.allowedEntries
);
}
}