Skip to content

Commit 4dede8a

Browse files
committed
create event for ESCAPE keydown
1 parent 70bd5fc commit 4dede8a

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/lib/sidenav/drawer.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export class MdDrawer implements AfterContentInit, OnDestroy {
118118
/** Mode of the drawer; one of 'over', 'push' or 'side'. */
119119
@Input() mode: 'over' | 'push' | 'side' = 'over';
120120

121-
/** Whether the drawer can be closed with the escape key or not. */
121+
/** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */
122122
@Input()
123123
get disableClose(): boolean { return this._disableClose; }
124124
set disableClose(value: boolean) { this._disableClose = coerceBooleanProperty(value); }
@@ -152,6 +152,9 @@ export class MdDrawer implements AfterContentInit, OnDestroy {
152152
/** Event emitted when the drawer's position changes. */
153153
@Output('positionChanged') onPositionChanged = new EventEmitter<void>();
154154

155+
/** Event emitted when ESCAPE is pressed. */
156+
@Output() escapeKeydown = new EventEmitter<void>();
157+
155158
/** @deprecated */
156159
@Output('align-changed') onAlignChanged = new EventEmitter<void>();
157160

@@ -259,9 +262,12 @@ export class MdDrawer implements AfterContentInit, OnDestroy {
259262
* @docs-private
260263
*/
261264
handleKeydown(event: KeyboardEvent) {
262-
if (event.keyCode === ESCAPE && !this.disableClose) {
263-
this.close();
264-
event.stopPropagation();
265+
if (event.keyCode === ESCAPE) {
266+
this.escapeKeydown.emit();
267+
if (!this.disableClose) {
268+
this.close();
269+
event.stopPropagation();
270+
}
265271
}
266272
}
267273

0 commit comments

Comments
 (0)