Improving formItem mixin and form dialog component behavior
This commit is contained in:
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();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user