@@ -256,12 +256,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
256
256
bool = ! recordExists ;
257
257
} else {
258
258
// (element, bool) - Element setter
259
- bool = ! ! bool ;
260
- if ( ! bool ) {
261
- disabledElementsLookup . put ( node , true ) ;
262
- } else if ( recordExists ) {
263
- disabledElementsLookup . remove ( node ) ;
264
- }
259
+ disabledElementsLookup . put ( node , ! bool ) ;
265
260
}
266
261
}
267
262
}
@@ -574,6 +569,17 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
574
569
var parentAnimationDetected = false ;
575
570
var animateChildren ;
576
571
572
+ var PARENT_STATE_DISABLED = 1 ;
573
+ var PARENT_STATE_ENABLED = 2 ;
574
+ var parentElementDisabledState = 0 ;
575
+
576
+ var elementDisabledStatus = disabledElementsLookup . get ( getDomNode ( element ) ) ;
577
+ if ( elementDisabledStatus === true ) {
578
+ parentElementDisabledState = PARENT_STATE_DISABLED ;
579
+ } else if ( elementDisabledStatus === false ) {
580
+ parentElementDisabledState = PARENT_STATE_ENABLED ;
581
+ }
582
+
577
583
var parentHost = element . data ( NG_ANIMATE_PIN_DATA ) ;
578
584
if ( parentHost ) {
579
585
parentElement = parentHost ;
@@ -597,7 +603,15 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
597
603
// therefore we can't allow any animations to take place
598
604
// but if a parent animation is class-based then that's ok
599
605
if ( ! parentAnimationDetected ) {
600
- parentAnimationDetected = details . structural || disabledElementsLookup . get ( parentNode ) ;
606
+ var disabledStatus = disabledElementsLookup . get ( parentNode ) ;
607
+
608
+ // the user has `explicitly` allowed for animations to be enabled on this container
609
+ if ( disabledStatus === true && parentElementDisabledState != PARENT_STATE_ENABLED ) {
610
+ parentElementDisabledState = PARENT_STATE_DISABLED ;
611
+ } else if ( disabledStatus === false ) {
612
+ parentElementDisabledState = PARENT_STATE_ENABLED ;
613
+ }
614
+ parentAnimationDetected = details . structural ;
601
615
}
602
616
603
617
if ( isUndefined ( animateChildren ) || animateChildren === true ) {
@@ -632,7 +646,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
632
646
parentElement = parentElement . parent ( ) ;
633
647
}
634
648
635
- var allowAnimation = ! parentAnimationDetected || animateChildren ;
649
+ var allowAnimation = ( ! parentAnimationDetected || animateChildren ) && parentElementDisabledState != PARENT_STATE_DISABLED ;
636
650
return allowAnimation && rootElementDetected && bodyElementDetected ;
637
651
}
638
652
0 commit comments