diff --git a/server/documents/modules/modal.html.eco b/server/documents/modules/modal.html.eco index 16cd36351..ece802be4 100755 --- a/server/documents/modules/modal.html.eco +++ b/server/documents/modules/modal.html.eco @@ -440,12 +440,22 @@ type : 'UI Module' onShow Modal - Is called after a modal is shown. + Is called when a modal starts to show. + + + onVisible + Modal + Is called after a modal has finished showing animating. onHide Modal - Is called after a modal is hidden. + Is called after a modal starts to hide. + + + onHidden + Modal + Is called after a modal has finished hiding animation. onApprove diff --git a/src/modules/modal.js b/src/modules/modal.js index fdedbb079..d257609c6 100755 --- a/src/modules/modal.js +++ b/src/modules/modal.js @@ -253,10 +253,12 @@ $.fn.modal = function(parameters) { module.hideOthers(module.showModal); } else { + $.proxy(settings.onShow, element)(); if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { module.debug('Showing modal with css animations'); $module .transition(settings.transition + ' in', settings.duration, function() { + $.proxy(settings.onVisible, element)(); module.set.active(); callback(); }) @@ -266,12 +268,12 @@ $.fn.modal = function(parameters) { module.debug('Showing modal with javascript'); $module .fadeIn(settings.duration, settings.easing, function() { + $.proxy(settings.onVisible, element)(); module.set.active(); callback(); }) ; } - $.proxy(settings.onShow, element)(); } } else { @@ -333,9 +335,11 @@ $.fn.modal = function(parameters) { } module.debug('Hiding modal'); module.remove.keyboardShortcuts(); + $.proxy(settings.onHide, element)(); if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { $module .transition(settings.transition + ' out', settings.duration, function() { + $.proxy(settings.onHidden, element)(); module.remove.active(); module.restore.focus(); callback(); @@ -345,13 +349,13 @@ $.fn.modal = function(parameters) { else { $module .fadeOut(settings.duration, settings.easing, function() { + $.proxy(settings.onHidden, element)(); module.remove.active(); module.restore.focus(); callback(); }) ; } - $.proxy(settings.onHide, element)(); }, hideAll: function(callback) { @@ -712,6 +716,10 @@ $.fn.modal.settings = { onShow : function(){}, onHide : function(){}, + + onVisible : function(){}, + onHidden : function(){}, + onApprove : function(){ return true; }, onDeny : function(){ return true; },