From 6c200cb9aaaabde9987201706708e8e3e16982d8 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 17 Dec 2020 18:03:47 +0800 Subject: [PATCH] fix(editor): can't navigate inside the `time input box` using arrows Resolved #938 --- src/main/frontend/ui/date_picker.cljs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/frontend/ui/date_picker.cljs b/src/main/frontend/ui/date_picker.cljs index 16d4dc32a..59491a8bb 100644 --- a/src/main/frontend/ui/date_picker.cljs +++ b/src/main/frontend/ui/date_picker.cljs @@ -179,6 +179,11 @@ (constantly true))] (merge attributes {:selectable-fn selectable-fn}))) +(defn- in-time-input? + [] + (when-let [elem js/document.activeElement] + (= "time" (gobj/get elem "id")))) + (rum/defc date-picker < rum/reactive (mixins/event-mixin (fn [state] @@ -193,11 +198,13 @@ ;; left, previous day 37 (fn [state e] - (swap! *internal-model inc-date -1)) + (when-not (in-time-input?) + (swap! *internal-model inc-date -1))) ;; right, next day 39 (fn [state e] - (swap! *internal-model inc-date 1)) + (when-not (in-time-input?) + (swap! *internal-model inc-date 1))) ;; up, one week ago 38 (fn [state e] @@ -206,7 +213,7 @@ 40 (fn [state e] (swap! *internal-model inc-week 1))} {:all-handler (fn [e key-code] - (when (contains? #{13 37 38 39 40} key-code) + (when (contains? #{13 38 40} key-code) (util/stop e)))})))) {:init (fn [state] (reset! *internal-model (first (:rum/args state)))