浏览代码

fix: can't open empty block with arrow left and right

Tienson Qin 4 月之前
父节点
当前提交
fa0777c65a

+ 1 - 1
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)

+ 1 - 1
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)))

+ 2 - 1
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]))))
 

+ 10 - 4
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]