@@ -263,12 +263,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
263
263
bool = ! recordExists ;
264
264
} else {
265
265
// (element, bool) - Element setter
266
- bool = ! ! bool ;
267
- if ( ! bool ) {
268
- disabledElementsLookup . put ( node , true ) ;
269
- } else if ( recordExists ) {
270
- disabledElementsLookup . remove ( node ) ;
271
- }
266
+ disabledElementsLookup . put ( node , ! bool ) ;
272
267
}
273
268
}
274
269
}
@@ -580,6 +575,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
580
575
var rootElementDetected = isMatchingElement ( element , $rootElement ) ;
581
576
var parentAnimationDetected = false ;
582
577
var animateChildren ;
578
+ var elementDisabled = disabledElementsLookup . get ( getDomNode ( element ) ) ;
583
579
584
580
var parentHost = element . data ( NG_ANIMATE_PIN_DATA ) ;
585
581
if ( parentHost ) {
@@ -604,7 +600,16 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
604
600
// therefore we can't allow any animations to take place
605
601
// but if a parent animation is class-based then that's ok
606
602
if ( ! parentAnimationDetected ) {
607
- parentAnimationDetected = details . structural || disabledElementsLookup . get ( parentNode ) ;
603
+ var parentElementDisabled = disabledElementsLookup . get ( parentNode ) ;
604
+
605
+ // disable animations if the user hasn't explicitly enabled animations on the
606
+ // current element
607
+ if ( parentElementDisabled === true && elementDisabled !== false ) {
608
+ elementDisabled = true ;
609
+ } else if ( parentElementDisabled === false ) {
610
+ elementDisabled = false ;
611
+ }
612
+ parentAnimationDetected = details . structural ;
608
613
}
609
614
610
615
if ( isUndefined ( animateChildren ) || animateChildren === true ) {
@@ -639,7 +644,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
639
644
parentElement = parentElement . parent ( ) ;
640
645
}
641
646
642
- var allowAnimation = ! parentAnimationDetected || animateChildren ;
647
+ var allowAnimation = ( ! parentAnimationDetected || animateChildren ) && elementDisabled !== true ;
643
648
return allowAnimation && rootElementDetected && bodyElementDetected ;
644
649
}
645
650
0 commit comments