* [COMPLIANCE] Add Copyright and License Headers * chore: 🤖 update Copyright headers to satisfy our lint rules --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Co-authored-by: Cameron Perera <cameron.perera@hashicorp.com>
58 lines
1.3 KiB
JavaScript
58 lines
1.3 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Component from '@glimmer/component';
|
|
import { tracked } from '@glimmer/tracking';
|
|
import { computed, action } from '@ember/object';
|
|
|
|
export default class FormRoleGrantsComponent extends Component {
|
|
// =attributes
|
|
|
|
/**
|
|
* @type {string}
|
|
*/
|
|
@tracked newGrantString = '';
|
|
|
|
/**
|
|
* @type {[object]}
|
|
*/
|
|
@computed('args.model.grant_strings.[]')
|
|
get grants() {
|
|
return this.args.model.grant_strings.map((value) => ({ value }));
|
|
}
|
|
|
|
/**
|
|
* @type {[string]}
|
|
*/
|
|
@computed('grants.@each.value')
|
|
get grantStrings() {
|
|
return this.grants.map((obj) => obj.value);
|
|
}
|
|
|
|
/**
|
|
* True if the grant string field is empty, false otherwise. This is used
|
|
* to disable the submit button.
|
|
* @return {boolean}
|
|
*/
|
|
@computed('newGrantString')
|
|
get cannotSave() {
|
|
return !this.newGrantString;
|
|
}
|
|
|
|
// =actions
|
|
|
|
/**
|
|
* Calls the passed function with the grant string as an argument and then
|
|
* clears the value of the grant string field.
|
|
* `@addGrant` should be passed by the context calling this component.
|
|
* @param {Function} addGrantFn
|
|
*/
|
|
@action
|
|
createGrant(addGrantFn) {
|
|
addGrantFn(this.newGrantString);
|
|
this.newGrantString = '';
|
|
}
|
|
}
|