Improving formItem mixin and form dialog component behavior

This commit is contained in:
Bruno Alves de Faria committed 2017-07-14 07:37:14 -03:00
1 parent 4315f47b61
commit fddf486064
5 files changed
+46 -18

No files matched your search

@@ -13,12 +13,14 @@
{{>section 'dialogFooter'}}
{{#unless this.hideCancel}}
{{#button action='cancel'
disabled=this.cancelDisabled
class=(concat 'btn btn-cancel ' (choose this.cancelClass 'btn-default'))
tagAttributes=(extend this.tagAttributes data-dismiss='modal')
}}{{choose this.cancelLabel 'Cancel'}}{{/button}}
{{/unless}}
{{#unless this.hideConfirm}}
{{#button action='confirm'
disabled=this.confirmDisabled
class=(concat 'btn btn-confirm ' (choose this.confirmClass 'btn-primary'))
}}{{choose this.confirmLabel 'Confirm'}}{{/button}}
{{/unless}}
@@ -5,6 +5,14 @@ import { OHIF } from 'meteor/ohif:core';
Template.dialogForm.onCreated(() => {
const instance = Template.instance();
const dismissModal = (promiseFunction, param) => {
// Hide the modal, removing the backdrop
instance.$('.modal').one('hidden.bs.modal', event => {
// Resolve or reject the promise with the given parameter
promiseFunction(param);
}).modal('hide');
};
instance.api = {
confirm() {
@@ -14,28 +22,34 @@ Template.dialogForm.onCreated(() => {
return;
}
// Hide the modal, removing the backdrop
instance.$('.modal').one('hidden.bs.modal', event => {
// Get the form value and call the confirm callback or resolve the promise
const formData = form.value();
if (_.isFunction(instance.data.confirmCallback)) {
instance.data.confirmCallback(formData, instance.data.promiseResolve);
const formData = form.value();
const dismiss = param => dismissModal(instance.data.promiseResolve, param);
if (_.isFunction(instance.data.confirmCallback)) {
const result = instance.data.confirmCallback(formData);
if (result instanceof Promise) {
return result.then(dismiss);
} else {
instance.data.promiseResolve(formData);
return dismiss(result);
}
}).modal('hide');
}
dismiss(formData);
},
cancel() {
// Hide the modal, removing the backdrop
instance.$('.modal').one('hidden.bs.modal', event => {
// Call the cancel callback or resolve the promise
if (_.isFunction(instance.data.cancelCallback)) {
instance.data.cancelCallback(instance.data.promiseReject);
const dismiss = param => dismissModal(instance.data.promiseReject, param);
if (_.isFunction(instance.data.cancelCallback)) {
const result = instance.data.cancelCallback();
if (result instanceof Promise) {
return result.then(dismiss);
} else {
instance.data.promiseReject();
return dismiss(result);
}
}).modal('hide');
}
dismiss();
}
};