open-vault/ui/app/components/confirm-action.js
Matthew Irish 463a3ebea9
UI - identity details (#4502)
* add popups
* add ability to disable entity and banner when entity is disabled
* re-add alias-popup template
* add accpetance tests for creating entities
* add more entity creation acceptance tests
* add delete to edit-form
* add more identity tests and associated selectors
* add onSuccess hook and use UnloadModel route mixins
* add ability to toggle entity disabling from the popover
* fix store list cache because unloadAll isn't synchronous
* fill out tests for identity items and aliases
* add ability to enable entity from the detail page
* toArray on the peekAll
* fix other tests/behavior that relied on a RecordArray
* adjust layout for disabled entity and label for disabling an entity on the edit form
* add item-details integration tests
* move disable field on the entity form
* use ghost buttons for delete in identity and policy edit forms
* adding computed macros for lazy capability fetching and using them in the identity models
2018-05-23 22:10:21 -05:00

59 lines
1.8 KiB
JavaScript

import Ember from 'ember';
import hbs from 'htmlbars-inline-precompile';
export default Ember.Component.extend({
tagName: 'span',
classNames: ['confirm-action'],
layout: hbs`
{{#if showConfirm ~}}
<span class={{containerClasses}}>
<span class={{concat 'confirm-action-text ' messageClasses}}>{{if disabled disabledMessage confirmMessage}}</span>
<button {{action 'onConfirm'}} disabled={{disabled}} class={{confirmButtonClasses}} type="button" data-test-confirm-button=true>{{confirmButtonText}}</button>
<button {{action 'toggleConfirm'}} type="button" class={{cancelButtonClasses}} data-test-confirm-cancel-button=true>{{cancelButtonText}}</button>
</span>
{{else}}
<button
class={{buttonClasses}}
type="button"
disabled={{disabled}}
data-test-confirm-action-trigger=true
{{action 'toggleConfirm'}}
>
{{yield}}
</button>
{{~/if}}
`,
disabled: false,
disabledMessage: 'Complete the form to complete this action',
showConfirm: false,
messageClasses: 'is-size-8 has-text-grey',
confirmButtonClasses: 'is-danger is-outlined button',
containerClasses: '',
buttonClasses: 'button',
buttonText: 'Delete',
confirmMessage: 'Are you sure you want to do this?',
confirmButtonText: 'Delete',
cancelButtonClasses: 'button',
cancelButtonText: 'Cancel',
// the action to take when we confirm
onConfirmAction: null,
actions: {
toggleConfirm() {
this.toggleProperty('showConfirm');
},
onConfirm() {
const confirmAction = this.get('onConfirmAction');
if (typeof confirmAction !== 'function') {
throw new Error('confirm-action components expects `onConfirmAction` attr to be a function');
} else {
confirmAction();
this.toggleProperty('showConfirm');
}
},
},
});