@@ -12,27 +12,38 @@ angular.module('ui.bootstrap.collapse', [])
12
12
13
13
return {
14
14
link : function ( scope , element , attrs ) {
15
- element . addClass ( collapseConfig . inactiveClass ) ;
15
+
16
+ element . on ( '$animate:before' , function ( e , data ) {
17
+ if ( data . className == collapseConfig . visibleClass ) {
18
+ element . css ( { height : data . event == 'addClass' ? '0' : _fullHeight ( ) } ) ;
19
+ }
20
+ } ) ;
21
+
22
+ element . on ( '$animate:after' , function ( e , data ) {
23
+ if ( data . className == collapseConfig . visibleClass ) {
24
+ element . css ( { height : data . event == 'addClass' ? _fullHeight ( ) : '0' } ) ;
25
+ }
26
+ } ) ;
27
+
28
+ element . on ( '$animate:close' , function ( e , data ) {
29
+ if ( data . className == collapseConfig . visibleClass ) {
30
+ element . css ( { height : data . event == 'addClass' ? 'auto' : '0' } ) ;
31
+ animateDone ( ) ;
32
+ }
33
+ } ) ;
34
+
35
+ function _fullHeight ( ) {
36
+ return element [ 0 ] . scrollHeight + 'px' ;
37
+ }
16
38
17
39
function expand ( ) {
18
40
animateStart ( ) ;
19
- $animate . addClass ( element , collapseConfig . visibleClass , function ( ) {
20
- // Doing height: '' to remove this property works too as "height:
21
- // auto" is already in the Bootstrap stylesheet but may break
22
- // compatibility with IE8 according to warning on
23
- // http://api.jquery.com/css/
24
- element . css ( { height : 'auto' } ) ;
25
- animateDone ( ) ;
26
- } ) ;
41
+ $animate . addClass ( element , collapseConfig . visibleClass ) ;
27
42
}
28
43
29
44
function collapse ( ) {
30
45
animateStart ( ) ;
31
- $animate . removeClass ( element , collapseConfig . visibleClass , function ( ) {
32
- // Read note above about IE8
33
- element . css ( { height : '0' } ) ;
34
- animateDone ( ) ;
35
- } ) ;
46
+ $animate . removeClass ( element , collapseConfig . visibleClass ) ;
36
47
}
37
48
38
49
function animateStart ( ) {
@@ -58,32 +69,4 @@ angular.module('ui.bootstrap.collapse', [])
58
69
} ;
59
70
} ] )
60
71
61
- . animation ( '.collapsing' , [
62
- 'collapseConfig' ,
63
- function ( collapseConfig ) {
64
-
65
- // Check for addition/removal of 'in' class
66
- return {
67
- beforeAddClass : _setZeroHeight ,
68
- addClass : _setFullHeight ,
69
- beforeRemoveClass : _setFullHeight ,
70
- removeClass : _setZeroHeight
71
- } ;
72
-
73
- function _setFullHeight ( element , className , done ) {
74
- if ( className == collapseConfig . visibleClass ) {
75
- element . css ( { height : element [ 0 ] . scrollHeight + 'px' } ) ;
76
- }
77
- done ( ) ;
78
- }
79
-
80
- function _setZeroHeight ( element , className , done ) {
81
- if ( className == collapseConfig . visibleClass ) {
82
- element . css ( { height : '0' } ) ;
83
- }
84
- done ( ) ;
85
- }
86
-
87
- } ] )
88
-
89
72
;
0 commit comments