From 2bf4437ffdca401ea7fe30fb73ce05a9396620dd Mon Sep 17 00:00:00 2001 From: prabhanshuguptagit Date: Thu, 20 Jun 2024 13:21:00 +0530 Subject: [PATCH] Use arrow keys to change selection --- src/bean/ui/events.cljs | 19 +++++++++++++------ src/bean/ui/views/sheet.cljs | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/bean/ui/events.cljs b/src/bean/ui/events.cljs index c772c38..f18ebc1 100644 --- a/src/bean/ui/events.cljs +++ b/src/bean/ui/events.cljs @@ -47,12 +47,19 @@ (fn handle-global-kbd [{:keys [db]} [_ e]] (let [selection (get-in db [:ui :grid :selection])] (when-let [[r c] (:start selection)] - (if (or (= (.-key e) "Backspace") - (= (.-key e) "Delete")) - {:db (update-in db [:sheet] #(grid/clear-selection % selection))} - (if (= (count (.-key e)) 1) - {:fx [[:dispatch [::edit-cell [r c] (.-key e)]]]} - {:fx [[:dispatch [::edit-cell [r c]]]]})))))) + (let [[mr mc] (get-in db [:sheet :grid r c :style :merged-until])] + (if (or (= (.-key e) "Backspace") + (= (.-key e) "Delete")) + {:db (update-in db [:sheet] #(grid/clear-selection % selection))} + (if-let [move-to (cond + (= (.-key e) "ArrowUp") [(dec r) c] + (= (.-key e) "ArrowLeft") [r (dec c)] + (= (.-key e) "ArrowDown") [(if mr (inc mr) (inc r)) c] + (= (.-key e) "ArrowRight") [r (if mc (inc mc) (inc c))])] + {:fx [[:dispatch [::set-selection {:start move-to :end move-to}]]]} + (if (= (count (.-key e)) 1) + {:fx [[:dispatch [::edit-cell [r c] (.-key e)]]]} + {:fx [[:dispatch [::edit-cell [r c]]]]})))))))) (rf/reg-event-fx ::paste-addressed-cells diff --git a/src/bean/ui/views/sheet.cljs b/src/bean/ui/views/sheet.cljs index a5da8ac..b515df5 100644 --- a/src/bean/ui/views/sheet.cljs +++ b/src/bean/ui/views/sheet.cljs @@ -853,6 +853,7 @@ (let [focused-element (.-activeElement js/document) tag-name (and focused-element (.-tagName focused-element))] (or (= (.toLowerCase tag-name) "span") + (= (.toLowerCase tag-name) "input") (= (.toLowerCase tag-name) "textarea")))) (defn ctrl-or-meta? [e]