diff --git a/src/lib/sidenav/sidenav.html b/src/lib/sidenav/sidenav.html
index fe7f020b5642..2e278d672083 100644
--- a/src/lib/sidenav/sidenav.html
+++ b/src/lib/sidenav/sidenav.html
@@ -1,4 +1,4 @@
-
diff --git a/src/lib/sidenav/sidenav.spec.ts b/src/lib/sidenav/sidenav.spec.ts
index 7949279ece82..5cb17badcbe7 100644
--- a/src/lib/sidenav/sidenav.spec.ts
+++ b/src/lib/sidenav/sidenav.spec.ts
@@ -194,6 +194,49 @@ describe('MdSidenav', () => {
tick();
}).not.toThrow();
}));
+
+ it('should emit the backdrop-clicked event when the backdrop is clicked', fakeAsync(() => {
+ let fixture = TestBed.createComponent(BasicTestApp);
+
+ let testComponent: BasicTestApp = fixture.debugElement.componentInstance;
+ let openButtonElement = fixture.debugElement.query(By.css('.open'));
+ openButtonElement.nativeElement.click();
+ fixture.detectChanges();
+ tick();
+
+ endSidenavTransition(fixture);
+ tick();
+
+ expect(testComponent.backdropClickedCount).toBe(0);
+
+ let sidenavBackdropElement = fixture.debugElement.query(By.css('.md-sidenav-backdrop'));
+ sidenavBackdropElement.nativeElement.click();
+ fixture.detectChanges();
+ tick();
+
+ expect(testComponent.backdropClickedCount).toBe(1);
+
+ endSidenavTransition(fixture);
+ tick();
+
+ openButtonElement.nativeElement.click();
+ fixture.detectChanges();
+ tick();
+
+ endSidenavTransition(fixture);
+ tick();
+
+ let closeButtonElement = fixture.debugElement.query(By.css('.close'));
+ closeButtonElement.nativeElement.click();
+ fixture.detectChanges();
+ tick();
+
+ endSidenavTransition(fixture);
+ tick();
+
+ expect(testComponent.backdropClickedCount).toBe(1);
+ }));
+
});
describe('attributes', () => {
@@ -271,7 +314,7 @@ class SidenavLayoutTwoSidenavTestApp { }
/** Test component that contains an MdSidenavLayout and one MdSidenav. */
@Component({
template: `
-
+
();
+
/** The sidenav at the start/end alignment, independent of direction. */
private _start: MdSidenav;
private _end: MdSidenav;
@@ -397,6 +400,11 @@ export class MdSidenavLayout implements AfterContentInit {
this._setDrawersValid(true);
}
+ _onBackdropClicked() {
+ this.onBackdropClicked.emit();
+ this._closeModalSidenav();
+ }
+
_closeModalSidenav() {
if (this._start != null && this._start.mode != 'side') {
this._start.close();