@@ -842,13 +842,6 @@ angular.module('ngAnimate', ['ng'])
842
842
} , 10 , false ) ;
843
843
}
844
844
845
- function applyStyle ( node , style ) {
846
- var oldStyle = node . getAttribute ( 'style' ) || '' ;
847
- var newStyle = ( oldStyle . length > 0 ? '; ' : '' ) + style ;
848
- node . setAttribute ( 'style' , newStyle ) ;
849
- return oldStyle ;
850
- }
851
-
852
845
function getElementAnimationDetails ( element , cacheKey ) {
853
846
var data = cacheKey ? lookupCache [ cacheKey ] : null ;
854
847
if ( ! data ) {
@@ -1002,10 +995,9 @@ angular.module('ngAnimate', ['ng'])
1002
995
var maxDelayTime = Math . max ( timings . transitionDelay , timings . animationDelay ) * 1000 ;
1003
996
var startTime = Date . now ( ) ;
1004
997
var css3AnimationEvents = ANIMATIONEND_EVENT + ' ' + TRANSITIONEND_EVENT ;
1005
- var formerStyle ;
1006
998
var ii = data . ii ;
1007
999
1008
- var applyFallbackStyle , style = '' ;
1000
+ var applyFallbackStyle , style = '' , appliedStyles = [ ] ;
1009
1001
if ( timings . transitionDuration > 0 ) {
1010
1002
node . style [ TRANSITION_PROP + PROPERTY_KEY ] = '' ;
1011
1003
@@ -1015,6 +1007,8 @@ angular.module('ngAnimate', ['ng'])
1015
1007
var fallbackProperty = $sniffer . msie ? '-ms-zoom' : 'clip' ;
1016
1008
style += CSS_PREFIX + 'transition-property: ' + propertyStyle + ', ' + fallbackProperty + '; ' ;
1017
1009
style += CSS_PREFIX + 'transition-duration: ' + timings . transitionDurationStyle + ', ' + timings . transitionDuration + 's; ' ;
1010
+ appliedStyles . push ( CSS_PREFIX + 'transition-property' ) ;
1011
+ appliedStyles . push ( CSS_PREFIX + 'transition-duration' ) ;
1018
1012
}
1019
1013
}
1020
1014
@@ -1027,16 +1021,19 @@ angular.module('ngAnimate', ['ng'])
1027
1021
1028
1022
style += CSS_PREFIX + 'transition-delay: ' +
1029
1023
prepareStaggerDelay ( delayStyle , stagger . transitionDelay , ii ) + '; ' ;
1024
+ appliedStyles . push ( CSS_PREFIX + 'transition-delay' ) ;
1030
1025
}
1031
1026
1032
1027
if ( stagger . animationDelay > 0 && stagger . animationDuration === 0 ) {
1033
1028
style += CSS_PREFIX + 'animation-delay: ' +
1034
1029
prepareStaggerDelay ( timings . animationDelayStyle , stagger . animationDelay , ii ) + '; ' ;
1030
+ appliedStyles . push ( CSS_PREFIX + 'animation-delay' ) ;
1035
1031
}
1036
1032
}
1037
1033
1038
- if ( style . length > 0 ) {
1039
- formerStyle = applyStyle ( node , style ) ;
1034
+ if ( appliedStyles . length > 0 ) {
1035
+ var oldStyle = node . getAttribute ( 'style' ) || '' ;
1036
+ node . setAttribute ( 'style' , oldStyle + '; ' + style ) ;
1040
1037
}
1041
1038
1042
1039
element . on ( css3AnimationEvents , onAnimationProgress ) ;
@@ -1049,10 +1046,13 @@ angular.module('ngAnimate', ['ng'])
1049
1046
element . off ( css3AnimationEvents , onAnimationProgress ) ;
1050
1047
element . removeClass ( activeClassName ) ;
1051
1048
animateClose ( element , className ) ;
1052
- if ( formerStyle != null ) {
1053
- formerStyle . length > 0 ?
1054
- node . setAttribute ( 'style' , formerStyle ) :
1055
- node . removeAttribute ( 'style' ) ;
1049
+ for ( var i in appliedStyles ) {
1050
+
1051
+ // removeProperty is not suppoerted in IE < 9, and FF
1052
+ // doesn't allow clearing style properties via indexing
1053
+ node . style . removeProperty ?
1054
+ node . style . removeProperty ( appliedStyles [ i ] ) :
1055
+ node . style [ appliedStyles [ i ] ] = "" ;
1056
1056
}
1057
1057
} ;
1058
1058
0 commit comments