Skip to content

Commit 3162a12

Browse files
Yousef OudaYousef Ouda
authored andcommitted
Update event handeling code to be co-located
1 parent 00f2400 commit 3162a12

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/dialog/dialog.directive.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -114,19 +114,6 @@ export class DialogDirective implements OnInit, OnDestroy, OnChanges {
114114
this.toggle();
115115
}
116116

117-
@HostListener("keydown", ["$event"])
118-
onKeydown(event: KeyboardEvent) {
119-
if (this.trigger === "click" && (event.key === "Enter" || event.key === " " )) {
120-
this.open();
121-
}
122-
if (event.key === "Escape") {
123-
this.close();
124-
}
125-
if (event.target === this.dialogConfig.parentRef.nativeElement && (event.key === "Tab" || event.key === "Tab" && event.shiftKey)) {
126-
this.close();
127-
}
128-
}
129-
130117
ngOnChanges() {
131118
// set the config object (this can [and should!] be added to in child classes depending on what they need)
132119
this.dialogConfig = {
@@ -150,6 +137,14 @@ export class DialogDirective implements OnInit, OnDestroy, OnChanges {
150137
// fix for safari hijacking clicks
151138
this.dialogService.singletonClickListen();
152139

140+
fromEvent(this.elementRef.nativeElement, "keydown").subscribe((event: KeyboardEvent) => {
141+
// "Esc" is an IE specific value
142+
if (event.target === this.dialogConfig.parentRef.nativeElement && (event.key === "Tab" || event.key === "Tab" && event.shiftKey) ||
143+
event.key === "Escape" || event.key === "Esc") {
144+
this.close();
145+
}
146+
});
147+
153148
// bind events for hovering or clicking the host
154149
if (this.trigger === "hover" || this.trigger === "mouseenter") {
155150
fromEvent(this.elementRef.nativeElement, "mouseenter").subscribe(() => this.toggle());
@@ -158,6 +153,12 @@ export class DialogDirective implements OnInit, OnDestroy, OnChanges {
158153
fromEvent(this.elementRef.nativeElement, "blur").subscribe(() => this.close());
159154
} else {
160155
fromEvent(this.elementRef.nativeElement, "click").subscribe(() => this.toggle());
156+
fromEvent(this.elementRef.nativeElement, "keydown").subscribe((event: KeyboardEvent) => {
157+
// "Spacebar" is an IE specific value
158+
if (event.key === "Enter" || event.key === " " || event.key === "Spacebar") {
159+
this.open();
160+
}
161+
});
161162
}
162163

163164
// call onClose when the dialog is closed

0 commit comments

Comments
 (0)