Skip to content

Commit 7018f62

Browse files
committed
fix(ux): incorrect keyboard navigation for installed themes
1 parent 7306cc8 commit 7018f62

1 file changed

Lines changed: 29 additions & 24 deletions

File tree

src/main/frontend/components/plugins.cljs

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
[frontend.handler.plugin :as plugin-handler]
1414
[frontend.handler.plugin-config :as plugin-config-handler]
1515
[frontend.handler.ui :as ui-handler]
16-
[frontend.mixins :as mixins]
1716
[frontend.rum :as rum-utils]
1817
[frontend.search :as search]
1918
[frontend.state :as state]
@@ -30,6 +29,28 @@
3029

3130
(def *dirties-toggle-items (atom {}))
3231

32+
(defn- handle-installed-themes-key-down
33+
[*cursor *total ^js target ^js e]
34+
(case (.-keyCode e)
35+
38 ;; up
36+
(do
37+
(util/stop e)
38+
(reset! *cursor
39+
(if (zero? @*cursor)
40+
(dec @*total) (dec @*cursor))))
41+
40 ;; down
42+
(do
43+
(util/stop e)
44+
(reset! *cursor
45+
(if (= @*cursor (dec @*total))
46+
0 (inc @*cursor))))
47+
13 ;; enter
48+
(do
49+
(util/stop e)
50+
(when-let [^js active (.querySelector target ".is-active")]
51+
(.click active)))
52+
nil))
53+
3354
(defn- clear-dirties-states!
3455
[]
3556
(reset! *dirties-toggle-items {}))
@@ -86,32 +107,16 @@
86107
(reset! *themes themes)
87108
(reset! *total (count themes))
88109
state))}
89-
(mixins/event-mixin
90-
(fn [state]
91-
(let [*cursor (::cursor state)
92-
*total (::total state)
93-
^js target (rum/dom-node state)]
94-
(.focus target)
95-
(mixins/on-key-down
96-
state {38 ;; up
97-
(fn [^js _e]
98-
(reset! *cursor
99-
(if (zero? @*cursor)
100-
(dec @*total) (dec @*cursor))))
101-
40 ;; down
102-
(fn [^js _e]
103-
(reset! *cursor
104-
(if (= @*cursor (dec @*total))
105-
0 (inc @*cursor))))
106-
107-
13 ;; enter
108-
#(when-let [^js active (.querySelector target ".is-active")]
109-
(.click active))}))))
110+
{:did-mount (fn [state]
111+
(some-> (rum/dom-node state) (.focus))
112+
state)}
110113
[state]
111114
(let [*cursor (::cursor state)
112-
*themes (::themes state)]
115+
*themes (::themes state)
116+
*total (::total state)]
113117
[:div.cp__themes-installed
114-
{:tab-index -1}
118+
{:tab-index -1
119+
:on-key-down #(handle-installed-themes-key-down *cursor *total (.-currentTarget %) %)}
115120
[:h1.mb-4.text-2xl.p-1 (t :nav/themes)]
116121
(map-indexed
117122
(fn [idx opt]

0 commit comments

Comments
 (0)