Skip to content

Commit e977984

Browse files
devversionjelbourn
authored andcommitted
fix(sidenav): treat opened as boolean attribute. (#444)
Fixes #300.
1 parent be5e93a commit e977984

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/components/sidenav/sidenav.spec.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,45 @@ export function main() {
238238
}).toThrow();
239239
}));
240240
});
241+
242+
describe('attributes', () => {
243+
244+
it('should correctly parse opened="false"', fakeAsyncAdaptor(() => {
245+
let newBuilder = builder.overrideTemplate(BasicTestApp, `
246+
<md-sidenav-layout>
247+
<md-sidenav #sidenav mode="side" opened="false">
248+
Closed Sidenav.
249+
</md-sidenav>
250+
</md-sidenav-layout>`);
251+
252+
let fixture = createFixture(BasicTestApp, newBuilder, template, style);
253+
fixture.detectChanges();
254+
255+
let sidenavEl = fixture.debugElement.query(By.css('md-sidenav')).nativeElement;
256+
257+
expect(sidenavEl.classList).toContain('md-sidenav-closed');
258+
expect(sidenavEl.classList).not.toContain('md-sidenav-opened');
259+
}));
260+
261+
it('should correctly parse opened="true"', fakeAsyncAdaptor(() => {
262+
let newBuilder = builder.overrideTemplate(BasicTestApp, `
263+
<md-sidenav-layout>
264+
<md-sidenav #sidenav mode="side" opened="true">
265+
Closed Sidenav.
266+
</md-sidenav>
267+
</md-sidenav-layout>`);
268+
269+
let fixture = createFixture(BasicTestApp, newBuilder, template, style);
270+
fixture.detectChanges();
271+
272+
let sidenavEl = fixture.debugElement.query(By.css('md-sidenav')).nativeElement;
273+
274+
expect(sidenavEl.classList).not.toContain('md-sidenav-closed');
275+
expect(sidenavEl.classList).toContain('md-sidenav-opened');
276+
}));
277+
278+
});
279+
241280
});
242281
}
243282

src/components/sidenav/sidenav.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
import {Dir} from '../../core/rtl/dir';
1919
import {PromiseCompleter} from '../../core/async/promise-completer';
2020
import {MdError} from '../../core/errors/error';
21+
import { BooleanFieldValue } from '../../core/annotations/field-value';
2122

2223

2324
/**
@@ -50,7 +51,7 @@ export class MdSidenav {
5051
@Input() mode: 'over' | 'push' | 'side' = 'over';
5152

5253
/** Whether the sidenav is opened. */
53-
@Input('opened') private _opened: boolean = false;
54+
@Input('opened') @BooleanFieldValue() private _opened: boolean = false;
5455

5556
/** Event emitted when the sidenav is being opened. Use this to synchronize animations. */
5657
@Output('open-start') onOpenStart = new EventEmitter<void>();

0 commit comments

Comments
 (0)