mirror of
https://github.com/hashicorp/vault.git
synced 2025-12-11 04:21:10 +01:00
* created new JsonTemplate component * used JsonTemplate in modal PolicyTemplate to replace code there * renamed component and fixed when the editor content shows up * changed PolicyForm to render example modal only conditionally. added desription to policy-example.js * fixed bug in policy-example.js & edited description of that file, removed functionality from policy-template.js (it is already in policy-example.js) * changed margin on text to better match Figma design, added example modal for when editing a policy * added tests for PolicyExample in policy-example-tests * added PolicyForm tests for (1) cancelling the creation/edit of policy and (2) properly rendering the policy example modal * add changelog * clean up code by removing unnecessary comments * changed a conditional in policy-form.hbs for better readability (Kianna's comment) * fixed description in policy-example.js, changed wording for RGP example, changed wording in policy-form-test.js * added 2 more asserts in policy-form-test.js. Changed some naming for selectors in the test file * added EGP policy to PolicyExample component, moved some functionality from .hbs to .js file and vise versa * added tests to policy-exammple-test.js and policy-form-test.js to account for new EGP policy * simplified all PolicyExample tests in policy-exmaple-test.js * removed beforeEach hook in policy-exmaple-test.js
55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import Component from '@glimmer/component';
|
|
import { action } from '@ember/object';
|
|
import { inject as service } from '@ember/service';
|
|
import { tracked } from '@glimmer/tracking';
|
|
|
|
/**
|
|
* @module ModalForm::PolicyTemplate
|
|
* ModalForm::PolicyTemplate components are meant to render within a modal for creating a new policy of unknown type.
|
|
*
|
|
* @example
|
|
* <ModalForm::PolicyTemplate
|
|
* @nameInput="new-item-name"
|
|
* @onSave={{this.closeModal}}
|
|
* @onCancel={{this.closeModal}}
|
|
* />
|
|
* ```
|
|
* @callback onCancel - callback triggered when cancel button is clicked
|
|
* @callback onSave - callback triggered when save button is clicked
|
|
* @param {string} nameInput - the name of the newly created policy
|
|
*/
|
|
|
|
export default class PolicyTemplate extends Component {
|
|
@service store;
|
|
@service version;
|
|
|
|
@tracked policy = null; // model record passed to policy-form
|
|
@tracked showExamplePolicy = false;
|
|
|
|
get policyOptions() {
|
|
return [
|
|
{ label: 'ACL Policy', value: 'acl', isDisabled: false },
|
|
{ label: 'Role Governing Policy', value: 'rgp', isDisabled: !this.version.hasSentinel },
|
|
];
|
|
}
|
|
|
|
@action
|
|
setPolicyType(type) {
|
|
if (this.policy) this.policy.unloadRecord(); // if user selects a different type, clear from store before creating a new record
|
|
// Create form model once type is chosen
|
|
this.policy = this.store.createRecord(`policy/${type}`, { name: this.args.nameInput });
|
|
}
|
|
|
|
@action
|
|
onSave(policyModel) {
|
|
this.args.onSave(policyModel);
|
|
// Reset component policy for next use
|
|
this.policy = null;
|
|
}
|
|
}
|