From 17137d471d704f38cb60a0083fd9f0fca4dd4221 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Fri, 18 Aug 2017 10:53:28 +0800 Subject: [PATCH] MDL-59859 core: Accept Promise for save button Accept either a promise, or a string for the content of the save button in the save / cancel modal. --- lib/amd/build/modal_save_cancel.min.js | 2 +- lib/amd/src/modal_save_cancel.js | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/amd/build/modal_save_cancel.min.js b/lib/amd/build/modal_save_cancel.min.js index 96737e88ad3..e2d2ab77118 100644 --- a/lib/amd/build/modal_save_cancel.min.js +++ b/lib/amd/build/modal_save_cancel.min.js @@ -1 +1 @@ -define(["jquery","core/notification","core/custom_interaction_events","core/modal","core/modal_events"],function(a,b,c,d,e){var f={SAVE_BUTTON:'[data-action="save"]',CANCEL_BUTTON:'[data-action="cancel"]'},g=function(a){d.call(this,a),this.getFooter().find(f.SAVE_BUTTON).length||b.exception({message:"No save button found"}),this.getFooter().find(f.CANCEL_BUTTON).length||b.exception({message:"No cancel button found"})};return g.prototype=Object.create(d.prototype),g.prototype.constructor=g,g.prototype.setFooter=function(){b.exception({message:"Can not change the footer of a save cancel modal"})},g.prototype.registerEventListeners=function(){d.prototype.registerEventListeners.call(this),this.getModal().on(c.events.activate,f.SAVE_BUTTON,function(b,c){var d=a.Event(e.save);this.getRoot().trigger(d,this),d.isDefaultPrevented()||(this.hide(),c.originalEvent.preventDefault())}.bind(this)),this.getModal().on(c.events.activate,f.CANCEL_BUTTON,function(b,c){var d=a.Event(e.cancel);this.getRoot().trigger(d,this),d.isDefaultPrevented()||(this.hide(),c.originalEvent.preventDefault())}.bind(this))},g.prototype.setSaveButtonText=function(a){this.getFooter().find(f.SAVE_BUTTON).text(a)},g}); \ No newline at end of file +define(["jquery","core/notification","core/custom_interaction_events","core/modal","core/modal_events"],function(a,b,c,d,e){var f={SAVE_BUTTON:'[data-action="save"]',CANCEL_BUTTON:'[data-action="cancel"]'},g=function(a){d.call(this,a),this.getFooter().find(f.SAVE_BUTTON).length||b.exception({message:"No save button found"}),this.getFooter().find(f.CANCEL_BUTTON).length||b.exception({message:"No cancel button found"})};return g.prototype=Object.create(d.prototype),g.prototype.constructor=g,g.prototype.setFooter=function(){b.exception({message:"Can not change the footer of a save cancel modal"})},g.prototype.registerEventListeners=function(){d.prototype.registerEventListeners.call(this),this.getModal().on(c.events.activate,f.SAVE_BUTTON,function(b,c){var d=a.Event(e.save);this.getRoot().trigger(d,this),d.isDefaultPrevented()||(this.hide(),c.originalEvent.preventDefault())}.bind(this)),this.getModal().on(c.events.activate,f.CANCEL_BUTTON,function(b,c){var d=a.Event(e.cancel);this.getRoot().trigger(d,this),d.isDefaultPrevented()||(this.hide(),c.originalEvent.preventDefault())}.bind(this))},g.prototype.setSaveButtonText=function(a){var b=this.getFooter().find(f.SAVE_BUTTON);this.asyncSet(a,b.text.bind(b))},g}); \ No newline at end of file diff --git a/lib/amd/src/modal_save_cancel.js b/lib/amd/src/modal_save_cancel.js index 5949bb6ab02..f62751c48db 100644 --- a/lib/amd/src/modal_save_cancel.js +++ b/lib/amd/src/modal_save_cancel.js @@ -91,10 +91,15 @@ define(['jquery', 'core/notification', 'core/custom_interaction_events', 'core/m /** * Allows to overwrite the text of "Save changes" button. * - * @param {String} text + * This method is overloaded to take either a string value for the button title or a jQuery promise that is resolved with + * text most commonly from a Str.get_string call. + * + * @param {(String|object)} value The button text, or a jQuery promise which will resolve it */ - ModalSaveCancel.prototype.setSaveButtonText = function(text) { - this.getFooter().find(SELECTORS.SAVE_BUTTON).text(text); + ModalSaveCancel.prototype.setSaveButtonText = function(value) { + var button = this.getFooter().find(SELECTORS.SAVE_BUTTON); + + this.asyncSet(value, button.text.bind(button)); }; return ModalSaveCancel;