Skip to content

Commit c319ca2

Browse files
committed
refactor(material/sidenav): run listener through renderer
Switches the sidenav to bind the escape key listener through the renderer like the rest of the repo. (cherry picked from commit d6a834e)
1 parent 4ceac36 commit c319ca2

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

src/material/sidenav/drawer.ts

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import {
4444
DOCUMENT,
4545
signal,
4646
} from '@angular/core';
47-
import {fromEvent, merge, Observable, Subject} from 'rxjs';
47+
import {merge, Observable, Subject} from 'rxjs';
4848
import {debounceTime, filter, map, mapTo, startWith, take, takeUntil} from 'rxjs/operators';
4949
import {_animationsDisabled} from '../core';
5050

@@ -350,27 +350,23 @@ export class MatDrawer implements AfterViewInit, OnDestroy {
350350
* time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed
351351
* and we don't have close disabled.
352352
*/
353-
this._ngZone.runOutsideAngular(() => {
353+
this._eventCleanups = this._ngZone.runOutsideAngular(() => {
354+
const renderer = this._renderer;
354355
const element = this._elementRef.nativeElement;
355-
(fromEvent(element, 'keydown') as Observable<KeyboardEvent>)
356-
.pipe(
357-
filter(event => {
358-
return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);
359-
}),
360-
takeUntil(this._destroyed),
361-
)
362-
.subscribe(event =>
363-
this._ngZone.run(() => {
364-
this.close();
365-
event.stopPropagation();
366-
event.preventDefault();
367-
}),
368-
);
369356

370-
this._eventCleanups = [
371-
this._renderer.listen(element, 'transitionrun', this._handleTransitionEvent),
372-
this._renderer.listen(element, 'transitionend', this._handleTransitionEvent),
373-
this._renderer.listen(element, 'transitioncancel', this._handleTransitionEvent),
357+
return [
358+
renderer.listen(element, 'keydown', (event: KeyboardEvent) => {
359+
if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {
360+
this._ngZone.run(() => {
361+
this.close();
362+
event.stopPropagation();
363+
event.preventDefault();
364+
});
365+
}
366+
}),
367+
renderer.listen(element, 'transitionrun', this._handleTransitionEvent),
368+
renderer.listen(element, 'transitionend', this._handleTransitionEvent),
369+
renderer.listen(element, 'transitioncancel', this._handleTransitionEvent),
374370
];
375371
});
376372

0 commit comments

Comments
 (0)