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(){}
;
if( $otherModals.is(':visible') ) {
module.debug('Hiding other modals');
module.debug('Hiding other modals', $otherModals);
$otherModals
.filter(':visible')
.modal('hide modal', callback)

30
src/definitions/modules/transition.js

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

Loading…
Cancel
Save