diff --git a/src/components/sidenav/sidenav.spec.ts b/src/components/sidenav/sidenav.spec.ts index f63429e3443f..be9b8385d006 100644 --- a/src/components/sidenav/sidenav.spec.ts +++ b/src/components/sidenav/sidenav.spec.ts @@ -238,6 +238,45 @@ export function main() { }).toThrow(); })); }); + + describe('attributes', () => { + + it('should correctly parse opened="false"', fakeAsyncAdaptor(() => { + let newBuilder = builder.overrideTemplate(BasicTestApp, ` + + + Closed Sidenav. + + `); + + let fixture = createFixture(BasicTestApp, newBuilder, template, style); + fixture.detectChanges(); + + let sidenavEl = fixture.debugElement.query(By.css('md-sidenav')).nativeElement; + + expect(sidenavEl.classList).toContain('md-sidenav-closed'); + expect(sidenavEl.classList).not.toContain('md-sidenav-opened'); + })); + + it('should correctly parse opened="true"', fakeAsyncAdaptor(() => { + let newBuilder = builder.overrideTemplate(BasicTestApp, ` + + + Closed Sidenav. + + `); + + let fixture = createFixture(BasicTestApp, newBuilder, template, style); + fixture.detectChanges(); + + let sidenavEl = fixture.debugElement.query(By.css('md-sidenav')).nativeElement; + + expect(sidenavEl.classList).not.toContain('md-sidenav-closed'); + expect(sidenavEl.classList).toContain('md-sidenav-opened'); + })); + + }); + }); } diff --git a/src/components/sidenav/sidenav.ts b/src/components/sidenav/sidenav.ts index 9007cd2b5c71..ac579ab1e8e5 100644 --- a/src/components/sidenav/sidenav.ts +++ b/src/components/sidenav/sidenav.ts @@ -18,6 +18,7 @@ import { import {Dir} from '../../core/rtl/dir'; import {PromiseCompleter} from '../../core/async/promise-completer'; import {MdError} from '../../core/errors/error'; +import { BooleanFieldValue } from '../../core/annotations/field-value'; /** @@ -50,7 +51,7 @@ export class MdSidenav { @Input() mode: 'over' | 'push' | 'side' = 'over'; /** Whether the sidenav is opened. */ - @Input('opened') private _opened: boolean = false; + @Input('opened') @BooleanFieldValue() private _opened: boolean = false; /** Event emitted when the sidenav is being opened. Use this to synchronize animations. */ @Output('open-start') onOpenStart = new EventEmitter();