@@ -60,19 +60,20 @@ export class MdSidenavToggleResult {
60
60
encapsulation : ViewEncapsulation . None ,
61
61
animations : [
62
62
trigger ( 'transform' , [
63
- state ( 'open' , style ( {
63
+ state ( 'open, initial-open ' , style ( {
64
64
transform : 'translate3d(0, 0, 0)' ,
65
65
visibility : 'visible' ,
66
66
} ) ) ,
67
67
state ( 'void' , style ( {
68
68
visibility : 'hidden' ,
69
69
} ) ) ,
70
- transition ( '* => *' , animate ( '400ms cubic-bezier(0.25, 0.8, 0.25, 1)' ) )
70
+ transition ( 'void => initial-open' , animate ( '0ms' ) ) ,
71
+ transition ( 'void <=> open' , animate ( '400ms cubic-bezier(0.25, 0.8, 0.25, 1)' ) )
71
72
] )
72
73
] ,
73
74
host : {
74
75
'class' : 'mat-sidenav' ,
75
- '[@transform]' : 'opened ? "open" : "void" ' ,
76
+ '[@transform]' : '_getAnimationState() ' ,
76
77
'(@transform.start)' : '_isAnimating = true' ,
77
78
'(@transform.done)' : '_onAnimationEnd($event)' ,
78
79
'(keydown)' : 'handleKeydown($event)' ,
@@ -89,6 +90,9 @@ export class MdSidenav implements AfterContentInit, OnDestroy {
89
90
private _focusTrap : FocusTrap ;
90
91
private _elementFocusedBeforeSidenavWasOpened : HTMLElement | null = null ;
91
92
93
+ /** Whether the sidenav is initialized. Used for disabling the initial animation. */
94
+ private _isInitialized = false ;
95
+
92
96
/** Alignment of the sidenav (direction neutral); whether 'start' or 'end'. */
93
97
private _align : 'start' | 'end' = 'start' ;
94
98
@@ -176,6 +180,7 @@ export class MdSidenav implements AfterContentInit, OnDestroy {
176
180
ngAfterContentInit ( ) {
177
181
this . _focusTrap = this . _focusTrapFactory . create ( this . _elementRef . nativeElement ) ;
178
182
this . _focusTrap . enabled = this . isFocusTrapEnabled ;
183
+ Promise . resolve ( ) . then ( ( ) => this . _isInitialized = true ) ;
179
184
}
180
185
181
186
ngOnDestroy ( ) {
@@ -237,6 +242,17 @@ export class MdSidenav implements AfterContentInit, OnDestroy {
237
242
}
238
243
}
239
244
245
+ /**
246
+ * Figures out the state of the sidenav animation.
247
+ */
248
+ _getAnimationState ( ) : 'initial-open' | 'open' | 'void' {
249
+ if ( this . opened ) {
250
+ return this . _isInitialized ? 'open' : 'initial-open' ;
251
+ }
252
+
253
+ return 'void' ;
254
+ }
255
+
240
256
_onAnimationEnd ( event : AnimationEvent ) {
241
257
if ( event . toState === 'open' ) {
242
258
this . onOpen . emit ( new MdSidenavToggleResult ( 'open' , true ) ) ;
0 commit comments