Browse code

Add event handler to capture keypresses and update state on up or down arrow

Joseph Weston authored on 10/12/2021 06:07:17
Showing 1 changed files
... ...
@@ -40,6 +40,31 @@
40 40
  (fn [_ [_ x]]
41 41
      {:window/scroll-to x}))
42 42
 
43
+(defn- up [x]
44
+  (case x
45
+    nil 0
46
+    (inc x)))
47
+
48
+(defn- down [x]
49
+  (case x
50
+    nil nil
51
+    0   nil
52
+    (dec x)))
53
+
54
+(re-frame/reg-event-db
55
+ ::prompt-keypress
56
+ (fn [db [_ x]]
57
+   (case (.-key x)
58
+     "ArrowUp"
59
+       (do (.preventDefault x)
60
+           (println "up")
61
+           (update-in db [:cmdline :selected-history] up))
62
+     "ArrowDown"
63
+       (do (.preventDefault x)
64
+           (println "down")
65
+           (update-in db [:cmdline :selected-history] down))
66
+     nil)))
67
+
43 68
 (re-frame/reg-event-fx
44 69
  ::submit-cmd
45 70
  (fn [cofx [_ prompt]]