@@ -532,6 +532,60 @@ describe('ngAnimate $animateCss', function() {
532
532
assertAnimationComplete ( true ) ;
533
533
} ) ) ;
534
534
535
+ it ( 'should not close a transition when a child element fires the transitionend event' ,
536
+ inject ( function ( $animateCss ) {
537
+
538
+ ss . addPossiblyPrefixedRule ( '.ng-enter' , 'transition:4s linear all;' ) ;
539
+ ss . addPossiblyPrefixedRule ( '.non-angular-animation' , 'transition:5s linear all;' ) ;
540
+
541
+ var child = angular . element ( '<div class="non-angular-animation"></div>' ) ;
542
+ element . append ( child ) ;
543
+
544
+ var animator = $animateCss ( element , options ) ;
545
+ animator . start ( ) ;
546
+ triggerAnimationStartFrame ( ) ;
547
+
548
+ browserTrigger ( child , 'transitionend' , {
549
+ timeStamp : Date . now ( ) ,
550
+ elapsedTime : 5 ,
551
+ bubbles : true
552
+ } ) ;
553
+
554
+ transitionProgress ( element , 1 ) ;
555
+
556
+ assertAnimationComplete ( false ) ;
557
+
558
+ transitionProgress ( element , 4 ) ;
559
+ assertAnimationComplete ( true ) ;
560
+ } ) ) ;
561
+
562
+ it ( 'should not close a keyframe animation when a child element fires the animationend event' ,
563
+ inject ( function ( $animateCss ) {
564
+
565
+ ss . addPossiblyPrefixedRule ( '.ng-enter' , 'animation:animation 4s;' ) ;
566
+ ss . addPossiblyPrefixedRule ( '.non-angular-animation' , 'animation:animation 5s;' ) ;
567
+
568
+ var child = angular . element ( '<div class="non-angular-animation"></div>' ) ;
569
+ element . append ( child ) ;
570
+
571
+ var animator = $animateCss ( element , options ) ;
572
+ animator . start ( ) ;
573
+ triggerAnimationStartFrame ( ) ;
574
+
575
+ browserTrigger ( child , 'animationend' , {
576
+ timeStamp : Date . now ( ) ,
577
+ elapsedTime : 5 ,
578
+ bubbles : true
579
+ } ) ;
580
+
581
+ keyframeProgress ( element , 1 ) ;
582
+
583
+ assertAnimationComplete ( false ) ;
584
+
585
+ keyframeProgress ( element , 4 ) ;
586
+ assertAnimationComplete ( true ) ;
587
+ } ) ) ;
588
+
535
589
it ( 'should use the highest keyframe duration value detected in the CSS class' , inject ( function ( $animateCss ) {
536
590
ss . addPossiblyPrefixedRule ( '.ng-enter' , 'animation:animation 1s, animation 2s, animation 3s;' ) ;
537
591
0 commit comments