Skip to content

Commit 1f7f8dd

Browse files
committed
Don't trigger keyboard event handlers when no one is listening
1 parent 5bce983 commit 1f7f8dd

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

src/UI/ModalOverlay.elm

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,35 @@
11
module UI.ModalOverlay exposing (modalOverlay)
22

33
import Html exposing (Html, node)
4+
import Html.Attributes exposing (attribute)
45
import Html.Events exposing (on)
56
import Json.Decode as Decode
6-
import Maybe.Extra as MaybeE
77

88

99
modalOverlay : Maybe msg -> Maybe msg -> Html msg -> Html msg
1010
modalOverlay onEscape onEnter content =
1111
let
12+
escHandler =
13+
onEscape
14+
|> Maybe.map
15+
(\onEsc ->
16+
[ on "escape" (Decode.succeed onEsc)
17+
, attribute "has-escape-handler" "true"
18+
]
19+
)
20+
|> Maybe.withDefault []
21+
22+
enterHandler =
23+
onEnter
24+
|> Maybe.map
25+
(\onEnt ->
26+
[ on "enter" (Decode.succeed onEnt)
27+
, attribute "has-enter-handler" "true"
28+
]
29+
)
30+
|> Maybe.withDefault []
31+
1232
attrs =
13-
[ onEscape |> Maybe.map (\onEsc -> on "escape" (Decode.succeed onEsc))
14-
, onEnter |> Maybe.map (\onEnt -> on "enter" (Decode.succeed onEnt))
15-
]
33+
escHandler ++ enterHandler
1634
in
17-
node "modal-overlay" (MaybeE.values attrs) [ content ]
35+
node "modal-overlay" attrs [ content ]

src/UI/ModalOverlay.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,14 @@ class ModalOverlay extends HTMLElement {
2626
return;
2727
}
2828

29-
if (ev.key === "Escape") {
29+
if (this.hasAttribute("has-esc-handler") && ev.key === "Escape") {
3030
ev.preventDefault();
3131
ev.stopPropagation();
3232

3333
this.dispatchEvent(new CustomEvent("escape"));
3434
}
3535

36-
debugger;
37-
console.log('---');
38-
console.log(this.events);
39-
40-
if (ev.key === "Enter") {
36+
if (this.hasAttribute("has-enter-handler") && ev.key === "Enter") {
4137
ev.preventDefault();
4238
ev.stopPropagation();
4339

0 commit comments

Comments
 (0)