import Component from '@ember/component';
import hbs from 'htmlbars-inline-precompile';
/**
* @module ConfirmAction
* `ConfirmAction` is a button followed by a confirmation message and button used to prevent users from performing actions they do not intend to.
*
* @example
* ```js
* { console.log('Action!') } }}
* @confirmMessage="Are you sure you want to delete this config?">
* Delete
*
* ```
*
* @property {Func} onConfirmAction=null - The action to take upon confirming.
* @property {String} [confirmMessage=Are you sure you want to do this?] - The message to display upon confirming.
* @property {String} [confirmButtonText=Delete] - The confirm button text.
* @property {String} [cancelButtonText=Cancel] - The cancel button text.
* @property {String} [disabledMessage=Complete the form to complete this action] - The message to display when the button is disabled.
*
*/
export default Component.extend({
tagName: 'span',
classNames: ['confirm-action'],
layout: hbs`
{{#if showConfirm ~}}
{{if disabled disabledMessage confirmMessage}}
{{else}}
{{~/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');
}
},
},
});