@@ -49,7 +49,7 @@ export class MdSidenav {
49
49
@Input ( ) mode : 'over' | 'push' | 'side' = 'over' ;
50
50
51
51
/** Whether the sidenav is opened. */
52
- @Input ( 'opened' ) private _opened : boolean ;
52
+ @Input ( 'opened' ) private _opened : boolean = false ;
53
53
54
54
/** Event emitted when the sidenav is being opened. Use this to synchronize animations. */
55
55
@Output ( 'open-start' ) onOpenStart = new EventEmitter < void > ( ) ;
@@ -318,9 +318,13 @@ export class MdSidenavLayout implements AfterContentInit {
318
318
}
319
319
}
320
320
321
- private _isShowingBackdrop ( ) {
322
- return ( this . _start != null && this . _start . mode != 'side' && this . _start . opened )
323
- || ( this . _end != null && this . _end . mode != 'side' && this . _end . opened ) ;
321
+ private _isShowingBackdrop ( ) : boolean {
322
+ return ( this . _isSidenavOpen ( this . _start ) && this . _start . mode != 'side' )
323
+ || ( this . _isSidenavOpen ( this . _end ) && this . _end . mode != 'side' ) ;
324
+ }
325
+
326
+ private _isSidenavOpen ( side : MdSidenav ) : boolean {
327
+ return side != null && side . opened ;
324
328
}
325
329
326
330
/**
@@ -330,10 +334,7 @@ export class MdSidenavLayout implements AfterContentInit {
330
334
* @private
331
335
*/
332
336
private _getSidenavEffectiveWidth ( sidenav : MdSidenav , mode : string ) : number {
333
- if ( sidenav != null && sidenav . mode == mode && sidenav . opened ) {
334
- return sidenav . _width ;
335
- }
336
- return 0 ;
337
+ return ( this . _isSidenavOpen ( sidenav ) && sidenav . mode == mode ) ? sidenav . _width : 0 ;
337
338
}
338
339
339
340
private _getMarginLeft ( ) {
@@ -351,6 +352,10 @@ export class MdSidenavLayout implements AfterContentInit {
351
352
private _getPositionRight ( ) {
352
353
return this . _getSidenavEffectiveWidth ( this . _right , 'push' ) ;
353
354
}
355
+
356
+ @HostBinding ( 'class.md-sidenav-opened' ) private get _isOpened ( ) {
357
+ return this . _isShowingBackdrop ( ) ;
358
+ }
354
359
}
355
360
356
361
0 commit comments