@@ -634,6 +634,86 @@ describe("ngAnimate $animateCss", function() {
634634 keyframeProgress ( element , 1 , 20 ) ;
635635 assertAnimationComplete ( true ) ;
636636 } ) ) ;
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+
637717 } ) ;
638718
639719 describe ( "staggering" , function ( ) {
@@ -1953,7 +2033,7 @@ describe("ngAnimate $animateCss", function() {
19532033
19542034 var style = element . attr ( 'style' ) ;
19552035 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) ') ;
19572037 } ) ) ;
19582038
19592039 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() {
20592139 expect ( style ) . toMatch ( / a n i m a t i o n (?: - d u r a t i o n ) ? : \s * 4 s / ) ;
20602140 expect ( element . css ( 'transition-duration' ) ) . toMatch ( '4s' ) ;
20612141 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) ') ;
20632143 } ) ) ;
20642144 } ) ;
20652145
@@ -2223,7 +2303,7 @@ describe("ngAnimate $animateCss", function() {
22232303 var animator = $animateCss ( element , options ) ;
22242304
22252305 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 ') ;
22272307 expect ( classSpy ) . not . toHaveBeenCalled ( ) ;
22282308
22292309 //redefine the classSpy to assert that the delay values have been
@@ -2401,10 +2481,9 @@ describe("ngAnimate $animateCss", function() {
24012481 animator . start ( ) ;
24022482 triggerAnimationStartFrame ( ) ;
24032483
2404- var style = element . attr ( 'style' ) ;
24052484 expect ( element . css ( 'transition-duration' ) ) . toMatch ( '4s' ) ;
24062485 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) ') ;
24082487 } ) ) ;
24092488
24102489 it ( "should give priority to the provided delay value, but only update the delay style itself" ,
@@ -2655,11 +2734,9 @@ describe("ngAnimate $animateCss", function() {
26552734 animator . start ( ) ;
26562735 triggerAnimationStartFrame ( ) ;
26572736
2658-
2659- var style = element . attr ( 'style' ) ;
26602737 expect ( element . css ( 'transition-duration' ) ) . toMatch ( '2.5s' ) ;
26612738 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) ') ;
26632740 } ) ) ;
26642741
26652742 it ( "should remove all inline transition styling when an animation completes" ,
@@ -2790,7 +2867,7 @@ describe("ngAnimate $animateCss", function() {
27902867 it ( "should apply a transition duration if the existing transition duration's property value is not 'all'" ,
27912868 inject ( function ( $animateCss , $rootElement ) {
27922869
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' ) ;
27942871
27952872 var emptyObject = { } ;
27962873 var options = {
@@ -2804,10 +2881,9 @@ describe("ngAnimate $animateCss", function() {
28042881 triggerAnimationStartFrame ( ) ;
28052882
28062883
2807- var style = element . attr ( 'style' ) ;
28082884 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) ') ;
28112887 } ) ) ;
28122888
28132889 it ( "should apply a transition duration and an animation duration if duration + styles options are provided for a matching keyframe animation" ,
0 commit comments