@@ -634,6 +634,86 @@ describe("ngAnimate $animateCss", function() {
634
634
keyframeProgress ( element , 1 , 20 ) ;
635
635
assertAnimationComplete ( true ) ;
636
636
} ) ) ;
637
+
638
+ it ( "should apply all transition shorthand properties that are already on the element" ,
639
+ inject ( function ( $animateCss , $rootElement ) {
640
+
641
+ ss . addRule ( '.action' , 'transition: color 1s cubic-bezier(0.25, 0.1, 0.25, 1) 5s;' ) ;
642
+ element . addClass ( 'action' ) ;
643
+
644
+ var options = {
645
+ to : { background : 'blue' }
646
+ } ;
647
+
648
+ var animator = $animateCss ( element , options ) ;
649
+ animator . start ( ) ;
650
+ triggerAnimationStartFrame ( ) ;
651
+
652
+ expect ( element . css ( 'transition-duration' ) ) . toMatch ( '1s' ) ;
653
+ expect ( element . css ( 'transition-delay' ) ) . toMatch ( '5s' ) ;
654
+ expect ( element . css ( 'transition-property' ) ) . toMatch ( 'color' ) ;
655
+ expect ( element . css ( 'transition-timing-function' ) ) . toBe ( 'cubic-bezier(0.25, 0.1, 0.25, 1)' ) ;
656
+ } ) ) ;
657
+
658
+ it ( "should apply all explicit transition properties that are already on the element" ,
659
+ inject ( function ( $animateCss , $rootElement ) {
660
+
661
+ ss . addRule ( '.action' , 'transition-duration: 1s;' +
662
+ 'transition-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);' +
663
+ 'transition-property: color;' +
664
+ 'transition-delay: 5s' ) ;
665
+ element . addClass ( 'action' ) ;
666
+
667
+ var options = {
668
+ to : { background : 'blue' }
669
+ } ;
670
+
671
+ var animator = $animateCss ( element , options ) ;
672
+ animator . start ( ) ;
673
+ triggerAnimationStartFrame ( ) ;
674
+
675
+ expect ( element . css ( 'transition-duration' ) ) . toMatch ( '1s' ) ;
676
+ expect ( element . css ( 'transition-delay' ) ) . toMatch ( '5s' ) ;
677
+ expect ( element . css ( 'transition-property' ) ) . toMatch ( 'color' ) ;
678
+ expect ( element . css ( 'transition-timing-function' ) ) . toBe ( 'cubic-bezier(0.25, 0.1, 0.25, 1)' ) ;
679
+ } ) ) ;
680
+
681
+ it ( "should use the default transition-property (spec: all) if none is supplied in shorthand" ,
682
+ inject ( function ( $animateCss , $rootElement ) {
683
+
684
+ ss . addRule ( '.action' , 'transition: 1s ease' ) ;
685
+ element . addClass ( 'action' ) ;
686
+
687
+ var options = {
688
+ to : { background : 'blue' }
689
+ } ;
690
+
691
+ var animator = $animateCss ( element , options ) ;
692
+ animator . start ( ) ;
693
+ triggerAnimationStartFrame ( ) ;
694
+
695
+ expect ( element . css ( 'transition-property' ) ) . toBe ( 'all' ) ;
696
+ } ) ) ;
697
+
698
+ it ( "should use the default easing (spec: ease) if none is supplied in shorthand" ,
699
+ inject ( function ( $animateCss , $rootElement ) {
700
+
701
+ ss . addRule ( '.action' , 'transition: color 1s' ) ;
702
+ element . addClass ( 'action' ) ;
703
+
704
+ var options = {
705
+ to : { background : 'blue' }
706
+ } ;
707
+
708
+ var animator = $animateCss ( element , options ) ;
709
+ animator . start ( ) ;
710
+ triggerAnimationStartFrame ( ) ;
711
+
712
+ // IE reports ease in cubic-bezier form
713
+ expect ( element . css ( 'transition-timing-function' ) ) . toBeOneOf ( 'ease' , 'cubic-bezier(0.25, 0.1, 0.25, 1)' ) ;
714
+ } ) ) ;
715
+
716
+
637
717
} ) ;
638
718
639
719
describe ( "staggering" , function ( ) {
@@ -1953,7 +2033,7 @@ describe("ngAnimate $animateCss", function() {
1953
2033
1954
2034
var style = element . attr ( 'style' ) ;
1955
2035
expect ( style ) . toContain ( '3000s' ) ;
1956
- expect ( style ) . toContain ( 'linear ') ;
2036
+ expect ( element . css ( 'transition-timing-function' ) ) . toBeOneOf ( 'ease' , 'cubic-bezier(0.25, 0.1, 0.25, 1) ') ;
1957
2037
} ) ) ;
1958
2038
1959
2039
it ( "should be applied to a CSS keyframe animation directly if keyframes are detected within the CSS class" ,
@@ -2059,7 +2139,7 @@ describe("ngAnimate $animateCss", function() {
2059
2139
expect ( style ) . toMatch ( / a n i m a t i o n (?: - d u r a t i o n ) ? : \s * 4 s / ) ;
2060
2140
expect ( element . css ( 'transition-duration' ) ) . toMatch ( '4s' ) ;
2061
2141
expect ( element . css ( 'transition-property' ) ) . toMatch ( 'all' ) ;
2062
- expect ( style ) . toContain ( 'linear' ) ;
2142
+ expect ( element . css ( 'transition-timing-function' ) ) . toBeOneOf ( 'linear' , 'cubic-bezier(0, 0, 1, 1) ') ;
2063
2143
} ) ) ;
2064
2144
} ) ;
2065
2145
@@ -2223,7 +2303,7 @@ describe("ngAnimate $animateCss", function() {
2223
2303
var animator = $animateCss ( element , options ) ;
2224
2304
2225
2305
expect ( element . attr ( 'style' ) || '' ) . not . toContain ( 'animation-delay' ) ;
2226
- expect ( element . attr ( 'style' ) || '' ) . not . toContain ( 'transition-delay ') ;
2306
+ expect ( element . css ( 'transition-delay' ) ) . toEqual ( '-2s ') ;
2227
2307
expect ( classSpy ) . not . toHaveBeenCalled ( ) ;
2228
2308
2229
2309
//redefine the classSpy to assert that the delay values have been
@@ -2401,10 +2481,9 @@ describe("ngAnimate $animateCss", function() {
2401
2481
animator . start ( ) ;
2402
2482
triggerAnimationStartFrame ( ) ;
2403
2483
2404
- var style = element . attr ( 'style' ) ;
2405
2484
expect ( element . css ( 'transition-duration' ) ) . toMatch ( '4s' ) ;
2406
2485
expect ( element . css ( 'transition-property' ) ) . toMatch ( 'color' ) ;
2407
- expect ( style ) . toContain ( 'ease-in' ) ;
2486
+ expect ( element . css ( 'transition-timing-function' ) ) . toBeOneOf ( 'ease-in' , 'cubic-bezier(0.42, 0, 1, 1) ') ;
2408
2487
} ) ) ;
2409
2488
2410
2489
it ( "should give priority to the provided delay value, but only update the delay style itself" ,
@@ -2655,11 +2734,9 @@ describe("ngAnimate $animateCss", function() {
2655
2734
animator . start ( ) ;
2656
2735
triggerAnimationStartFrame ( ) ;
2657
2736
2658
-
2659
- var style = element . attr ( 'style' ) ;
2660
2737
expect ( element . css ( 'transition-duration' ) ) . toMatch ( '2.5s' ) ;
2661
2738
expect ( element . css ( 'transition-property' ) ) . toMatch ( 'all' ) ;
2662
- expect ( style ) . toContain ( 'linear ') ;
2739
+ expect ( element . css ( 'transition-timing-function' ) ) . toBeOneOf ( 'ease' , 'cubic-bezier(0.25, 0.1, 0.25, 1) ') ;
2663
2740
} ) ) ;
2664
2741
2665
2742
it ( "should remove all inline transition styling when an animation completes" ,
@@ -2790,7 +2867,7 @@ describe("ngAnimate $animateCss", function() {
2790
2867
it ( "should apply a transition duration if the existing transition duration's property value is not 'all'" ,
2791
2868
inject ( function ( $animateCss , $rootElement ) {
2792
2869
2793
- ss . addRule ( '.ng-enter' , 'transition: 1s linear color' ) ;
2870
+ ss . addRule ( '.ng-enter' , 'transition: 1s cubic-bezier(0.25, 0.1, 0.25, 1) color' ) ;
2794
2871
2795
2872
var emptyObject = { } ;
2796
2873
var options = {
@@ -2804,10 +2881,9 @@ describe("ngAnimate $animateCss", function() {
2804
2881
triggerAnimationStartFrame ( ) ;
2805
2882
2806
2883
2807
- var style = element . attr ( 'style' ) ;
2808
2884
expect ( element . css ( 'transition-duration' ) ) . toMatch ( '1s' ) ;
2809
- expect ( element . css ( 'transition-property' ) ) . toMatch ( 'all ' ) ;
2810
- expect ( style ) . toContain ( 'linear ') ;
2885
+ expect ( element . css ( 'transition-property' ) ) . toMatch ( 'color ' ) ;
2886
+ expect ( element . css ( 'transition-timing-function' ) ) . toBe ( 'cubic-bezier(0.25, 0.1, 0.25, 1) ') ;
2811
2887
} ) ) ;
2812
2888
2813
2889
it ( "should apply a transition duration and an animation duration if duration + styles options are provided for a matching keyframe animation" ,
0 commit comments