File tree 2 files changed +35
-24
lines changed
2 files changed +35
-24
lines changed Original file line number Diff line number Diff line change 1
1
(ns renderer.tree.events
2
2
(:require
3
- [re-frame.core :as rf]
4
- [renderer.document.events :as-alias document.e]
5
- [renderer.element.events :as-alias element.e]))
3
+ [re-frame.core :as rf]))
6
4
7
5
(rf/reg-fx
8
- ::focus-item
6
+ ::focus
9
7
(fn [[k direction]]
10
8
(let [list-elements (.from js/Array (.querySelectorAll js/document " .tree-sidebar .list-item-button" ))
11
9
current-el (first (.querySelectorAll js/document (str " .tree-sidebar [data-id='" (name k) " ']" )))
18
16
(.focus element))))
19
17
20
18
(rf/reg-event-fx
21
- ::key-down
22
- (fn [_ [_ key el-k multi?]]
23
- (case key
24
- " ArrowUp"
25
- {::focus-item [el-k :up ]}
19
+ ::focus-up
20
+ (fn [_ [_ k]]
21
+ {::focus [k :up ]}))
26
22
27
- " ArrowDown"
28
- {::focus-item [el-k :down ]}
29
-
30
- " ArrowLeft"
31
- {:dispatch [::document.e/collapse-el el-k]}
32
-
33
- " ArrowRight"
34
- {:dispatch [::document.e/expand-el el-k]}
35
-
36
- " Enter"
37
- {:dispatch [::element.e/select el-k multi?]}
38
-
39
- nil )))
23
+ (rf/reg-event-fx
24
+ ::focus-down
25
+ (fn [_ [_ k]]
26
+ {::focus [k :down ]}))
Original file line number Diff line number Diff line change 74
74
(- (* depth collapse-button-width)
75
75
(if children? collapse-button-width 0 ))))
76
76
77
+ (defn key-down-handler
78
+ [e el-k]
79
+ (case (.-key e)
80
+ " ArrowUp"
81
+ (do (.stopPropagation e)
82
+ (rf/dispatch [::e/focus-up el-k]))
83
+
84
+ " ArrowDown"
85
+ (do (.stopPropagation e)
86
+ (rf/dispatch [::e/focus-down el-k]))
87
+
88
+ " ArrowLeft"
89
+ (do (.stopPropagation e)
90
+ (rf/dispatch [::document.e/collapse-el el-k]))
91
+
92
+ " ArrowRight"
93
+ (do (.stopPropagation e)
94
+ (rf/dispatch [::document.e/expand-el el-k]))
95
+
96
+ " Enter"
97
+ (do (.stopPropagation e)
98
+ (rf/dispatch [::element.e/select el-k (.-ctrlKey e)]))
99
+
100
+ nil ))
101
+
77
102
(defn list-item-button
78
103
[{:keys [key selected? children] :as el} depth hovered? collapsed?]
79
104
(let [multiple-selected? @(rf/subscribe [::element.s/multiple-selected? ])]
88
113
:ref (fn [this]
89
114
(when (and this selected? hovered? (not multiple-selected?))
90
115
(dom/scroll-into-view! this)))
91
- :on-key-down #(do (.stopPropagation %)
92
- (rf/dispatch [::e/key-down (.-key %) key (.-ctrlKey %)]))
116
+ :on-key-down #(key-down-handler % key)
93
117
:draggable true
94
118
:on-drag-start #(-> (.-dataTransfer %)
95
119
(.setData " key" (name key)))
You can’t perform that action at this time.
0 commit comments