Skip to content

Commit

Permalink
MDL-59784 core: Modal factory should listen before fetching templates
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewnicols committed Aug 18, 2017
1 parent 5607739 commit 1896e25
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
2 changes: 1 addition & 1 deletion lib/amd/build/modal_factory.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

29 changes: 20 additions & 9 deletions lib/amd/src/modal_factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,19 +55,27 @@ define(['jquery', 'core/modal_events', 'core/modal_registry', 'core/modal',
* is closed.
*
* @method setUpTrigger
* @param {object} modal The modal instance
* @param {Promise} modalPromise The modal instance
* @param {object} triggerElement The jQuery element to open the modal
*/
var setUpTrigger = function(modal, triggerElement) {
var setUpTrigger = function(modalPromise, triggerElement) {
if (typeof triggerElement != 'undefined') {
CustomEvents.define(triggerElement, [CustomEvents.events.activate]);
triggerElement.on(CustomEvents.events.activate, function(e, data) {
modal.show();
modalPromise.then(function(modal) {
modal.show();

return modal;
});
data.originalEvent.preventDefault();
});

modal.getRoot().on(ModalEvents.hidden, function() {
triggerElement.focus();
modalPromise.then(function(modal) {
modal.getRoot().on(ModalEvents.hidden, function() {
triggerElement.focus();
});

return modal;
});
}
};
Expand All @@ -82,11 +90,10 @@ define(['jquery', 'core/modal_events', 'core/modal_registry', 'core/modal',
* @param {object} triggerElement The trigger HTML jQuery object
* @return {object} Modal instance
*/
var createFromElement = function(registryConf, modalElement, triggerElement) {
var createFromElement = function(registryConf, modalElement) {
modalElement = $(modalElement);
var module = registryConf.module;
var modal = new module(modalElement);
setUpTrigger(modal, triggerElement);

return modal;
};
Expand All @@ -104,12 +111,16 @@ define(['jquery', 'core/modal_events', 'core/modal_registry', 'core/modal',
var createFromType = function(registryConf, triggerElement) {
var templateName = registryConf.template;

return Templates.render(templateName, {})
var modalPromise = Templates.render(templateName, {})
.then(function(html) {
var modalElement = $(html);
return createFromElement(registryConf, modalElement, triggerElement);
return createFromElement(registryConf, modalElement);
})
.fail(Notification.exception);

setUpTrigger(modalPromise, triggerElement);

return modalPromise;
};

/**
Expand Down

0 comments on commit 1896e25

Please sign in to comment.