From afc36f4549ac8a8a2fc0a31ee29bb8e3d045cfa1 Mon Sep 17 00:00:00 2001 From: charlie Date: Mon, 30 Jun 2025 14:24:44 +0800 Subject: [PATCH] enhance(ux): improve blocks selection for the dummy block button --- src/main/frontend/components/page.cljs | 7 +++---- src/main/frontend/handler/editor.cljs | 16 +++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/frontend/components/page.cljs b/src/main/frontend/components/page.cljs index 94ab245f55..9a5c703c9a 100644 --- a/src/main/frontend/components/page.cljs +++ b/src/main/frontend/components/page.cljs @@ -110,7 +110,7 @@ (when page? [:div.ls-block.block-add-button.flex-1.flex-col.rounded-sm.cursor-text.transition-opacity.ease-in.duration-100.!py-0 {:class opacity-class - :data-block-id (:db/id block) + :blockid (:db/id block) :ref *ref :on-click (fn [e] (util/stop e) @@ -130,11 +130,10 @@ :on-mouse-leave #(do (dom/remove-class! (rum/deref *ref) "opacity-50") (dom/remove-class! (rum/deref *ref) "opacity-100")) - :on-key-down (fn [e] + :on-key-down (fn [^js e] (util/stop e) (when (= "Enter" (util/ekey e)) - (state/set-state! :editor/container-id container-id) - (editor-handler/api-insert-new-block! "" (merge config block)))) + (-> e (.-target) (.click)))) :tab-index 0} [:div.flex.flex-row [:div.flex.items-center {:style {:height 28 diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 6e414dbbdc..9c33216646 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -3380,13 +3380,15 @@ (let [selected-blocks (state/get-selection-blocks) f (case direction :left first :right last) node (some-> selected-blocks f)] - (when-let [block-id (some-> node (dom/attr "blockid") uuid)] - (util/stop e) - (let [block {:block/uuid block-id} - left? (= direction :left) - opts {:container-id (some-> node (dom/attr "containerid") (parse-long)) - :event e}] - (edit-block! block (if left? 0 :max) opts))))) + (if (some-> node (dom/has-class? "block-add-button")) + (.click node) + (when-let [block-id (some-> node (dom/attr "blockid") uuid)] + (util/stop e) + (let [block {:block/uuid block-id} + left? (= direction :left) + opts {:container-id (some-> node (dom/attr "containerid") (parse-long)) + :event e}] + (edit-block! block (if left? 0 :max) opts)))))) (defn shortcut-left-right [direction] (fn [e]