Browse Source

Fixes #968 and #1138, Transition can now correctly cancel callbacks when interrupted mid animation

1.0
jlukic 10 years ago
parent
commit
5d02020c37
  1. 2
      src/definitions/modules/modal.js
  2. 30
      src/definitions/modules/transition.js

2
src/definitions/modules/modal.js

@ -389,7 +389,7 @@ $.fn.modal = function(parameters) {
: function(){} : function(){}
; ;
if( $otherModals.is(':visible') ) { if( $otherModals.is(':visible') ) {
module.debug('Hiding other modals'); module.debug('Hiding other modals', $otherModals);
$otherModals $otherModals
.filter(':visible') .filter(':visible')
.modal('hide modal', callback) .modal('hide modal', callback)

30
src/definitions/modules/transition.js

@ -131,14 +131,19 @@ $.fn.transition = function() {
return false; return false;
} }
module.debug('Preparing animation', settings.animation); module.debug('Preparing animation', settings.animation);
if(module.is.animating() && settings.queue) { if(module.is.animating()) {
if(!settings.allowRepeats && module.has.direction() && module.is.occuring() && module.queuing !== true) { if(settings.queue) {
module.error(error.repeated); if(!settings.allowRepeats && module.has.direction() && module.is.occuring() && module.queuing !== true) {
module.error(error.repeated, settings.animation, $module);
}
else {
module.queue(settings.animation);
}
return false;
} }
else { else {
module.queue(settings.animation);
} }
return false;
} }
if(module.can.animate) { if(module.can.animate) {
module.set.animating(settings.animation); module.set.animating(settings.animation);
@ -212,13 +217,17 @@ $.fn.transition = function() {
if(module.can.transition() && !module.has.direction()) { if(module.can.transition() && !module.has.direction()) {
module.set.direction(); module.set.direction();
} }
if(module.is.animating()) {
module.remove.direction();
$module.off('.complete');
}
module.remove.hidden(); module.remove.hidden();
module.set.display(); module.set.display();
$module $module
.addClass(className.animating) .addClass(className.animating)
.addClass(className.transition) .addClass(className.transition)
.addClass(animation) .addClass(animation)
.one(animationEnd + eventNamespace, module.complete) .one(animationEnd + '.complete' + eventNamespace, module.complete)
; ;
module.set.duration(settings.duration); module.set.duration(settings.duration);
$.proxy(settings.start, this)(); $.proxy(settings.start, this)();
@ -350,6 +359,12 @@ $.fn.transition = function() {
$module.css('display', ''); $module.css('display', '');
} }
}, },
direction: function() {
$module
.removeClass(className.inward)
.removeClass(className.outward)
;
},
duration: function() { duration: function() {
$module $module
.css({ .css({
@ -556,7 +571,8 @@ $.fn.transition = function() {
}, },
occuring: function(animation) { occuring: function(animation) {
animation = animation || settings.animation; animation = animation || settings.animation;
return ( $module.hasClass(animation) ); animation = animation.replace(' ', '.');
return ( $module.filter(animation).size() > 0 );
}, },
visible: function() { visible: function() {
return $module.is(':visible'); return $module.is(':visible');

Loading…
Cancel
Save