diff --git a/src/main/frontend/components/page.cljs b/src/main/frontend/components/page.cljs index 9a5c703c9a..6d5a545026 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 - :blockid (:db/id block) + :parentblockid (:db/id block) :ref *ref :on-click (fn [e] (util/stop e) diff --git a/src/main/frontend/handler/common/page.cljs b/src/main/frontend/handler/common/page.cljs index 3946026736..9c0ce44fc9 100644 --- a/src/main/frontend/handler/common/page.cljs +++ b/src/main/frontend/handler/common/page.cljs @@ -83,7 +83,7 @@ (js/setTimeout (fn [] (when-let [block-add-button (->> (dom/sel ".block-add-button") - (filter #(= (str (:db/id page)) (dom/attr % "blockid"))) + (filter #(= (str (:db/id page)) (dom/attr % "blockparentid"))) first)] (.click block-add-button))) 200))) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 9c33216646..03f2aabf0d 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -2552,7 +2552,8 @@ :down util/get-next-block-non-collapsed) sibling-block (f selected {:up-down? true :exclude-property? true})] - (when (and sibling-block (dom/attr sibling-block "blockid")) + (when (and sibling-block + (or (dom/attr sibling-block "blockid") (dom/attr sibling-block "parentblockid"))) (util/scroll-to-block sibling-block) (state/exit-editing-and-set-selected-blocks! [sibling-block])))) diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 0eecd70151..f893d60140 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1205,16 +1205,22 @@ Similar to re-frame subscriptions" (defn- set-selection-blocks-aux! [blocks] (set-state! :view/selected-blocks nil) - (let [selected-ids (set (get-selected-block-ids @(:selection/blocks @state))) + (let [selected-blocks @(:selection/blocks @state) + selected-ids (set (get-selected-block-ids selected-blocks)) _ (set-state! :selection/blocks blocks) new-ids (set (get-selection-block-ids)) removed (set/difference selected-ids new-ids)] (mark-dom-blocks-as-selected blocks) - (doseq [id removed] - (doseq [node (dom/sel (util/format "[blockid='%s']" id))] + (if (= (count blocks) 1) + (doseq [node selected-blocks] (dom/remove-class! node "selected") (when (dom/has-class? node "ls-table-row") - (.blur node)))))) + (.blur node))) + (doseq [id removed] + (doseq [node (dom/sel (util/format "[blockid='%s']" id))] + (dom/remove-class! node "selected") + (when (dom/has-class? node "ls-table-row") + (.blur node))))))) (defn set-selection-blocks! ([blocks]