From 55cfab9976f1bb06e74449f778be967e4d063307 Mon Sep 17 00:00:00 2001 From: Nicolas Perriault Date: Sat, 6 May 2017 16:00:00 +0200 Subject: [PATCH] Fix #114: Close autocomplete menu when pressing Esc. (#139) --- src/Model.elm | 20 +++++++++++++++----- src/Types.elm | 1 + src/View/Draft.elm | 2 ++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/Model.elm b/src/Model.elm index 3967a35..caedcc3 100644 --- a/src/Model.elm +++ b/src/Model.elm @@ -435,7 +435,7 @@ updateDraft draftMsg currentUser model = let ( newState, maybeMsg ) = Autocomplete.update - updateAutocompleteConfig + autocompleteUpdateConfig autoMsg draft.autoMaxResults draft.autoState @@ -451,6 +451,16 @@ updateDraft draftMsg currentUser model = Just updateMsg -> update updateMsg newModel + CloseAutocomplete -> + let + newDraft = + { draft + | showAutoMenu = False + , autoState = Autocomplete.reset autocompleteUpdateConfig draft.autoState + } + in + { model | draft = newDraft } ! [] + ResetAutocomplete toTop -> let newDraft = @@ -458,13 +468,13 @@ updateDraft draftMsg currentUser model = | autoState = if toTop then Autocomplete.resetToFirstItem - updateAutocompleteConfig + autocompleteUpdateConfig (acceptableAccounts draft.autoQuery draft.autoAccounts) draft.autoMaxResults draft.autoState else Autocomplete.resetToLastItem - updateAutocompleteConfig + autocompleteUpdateConfig (acceptableAccounts draft.autoQuery draft.autoAccounts) draft.autoMaxResults draft.autoState @@ -1015,8 +1025,8 @@ update msg model = model ! [ Command.scrollColumnToBottom column ] -updateAutocompleteConfig : Autocomplete.UpdateConfig Msg Account -updateAutocompleteConfig = +autocompleteUpdateConfig : Autocomplete.UpdateConfig Msg Account +autocompleteUpdateConfig = Autocomplete.updateConfig { toId = .id >> toString , onKeyDown = diff --git a/src/Types.elm b/src/Types.elm index f51ba07..06c3b5f 100644 --- a/src/Types.elm +++ b/src/Types.elm @@ -22,6 +22,7 @@ type DraftMsg | ToggleSpoiler Bool | UpdateInputInformation InputInformation | ResetAutocomplete Bool + | CloseAutocomplete | SetAutoState Autocomplete.Msg diff --git a/src/View/Draft.elm b/src/View/Draft.elm index d64a1c5..7e5689e 100644 --- a/src/View/Draft.elm +++ b/src/View/Draft.elm @@ -205,6 +205,8 @@ draftView ({ draft, currentUser } as model) = (\code -> if code == 38 || code == 40 then Ok NoOp + else if code == 27 then + Ok <| DraftEvent CloseAutocomplete else Err "not handling that key" )