Browse Source

enhance: breadcrumb support shift+click too

Tienson Qin 4 years ago
parent
commit
c68db4f04a
2 changed files with 21 additions and 13 deletions
  1. 20 12
      src/main/frontend/components/block.cljs
  2. 1 1
      src/main/frontend/components/page.cljs

+ 20 - 12
src/main/frontend/components/block.cljs

@@ -1770,16 +1770,23 @@
        (not @*dragging?)))
 
 (rum/defc breadcrumb-fragment
-  [block href label]
-  [:a {:on-mouse-down
-       (fn [e]
-         (util/stop e)
-         (state/sidebar-add-block!
-          (state/get-current-repo)
-          (:db/id block)
-          :block-ref
-          {:block block}))}
-   label])
+  [config block href label]
+  (if (= block :page)                   ; page
+    (let [page (db/entity [:block/name (string/lower-case label)])]
+      (page-cp config page))
+    [:a {:on-mouse-down
+         (fn [e]
+           (if (gobj/get e "shiftKey")
+             (do
+               (util/stop e)
+               (state/sidebar-add-block!
+                (state/get-current-repo)
+                (:db/id block)
+                :block-ref
+                {:block block}))
+             (route-handler/redirect! {:to :page
+                                       :path-params {:name (str (:block/uuid block))}})))}
+     label]))
 
 (rum/defc breadcrumb-separator [] [:span.mx-2.opacity-50 "➤"])
 
@@ -1794,7 +1801,8 @@
          show? (or (seq parents) show-page? page-name)]
      (when show?
        (let [page-name-props (when show-page?
-                               [(rfe/href :page {:name page-name})
+                               [:page
+                                (rfe/href :page {:name page-name})
                                 (or page-original-name page-name)])
              parents-props (doall
                             (for [{:block/keys [uuid title name] :as block} parents]
@@ -1805,7 +1813,7 @@
              breadcrumb (->> (into [] parents-props)
                              (concat [page-name-props])
                              (filterv identity)
-                             (map (fn [[block href label]] (breadcrumb-fragment block href label)))
+                             (map (fn [[block href label]] (breadcrumb-fragment config block href label)))
                              (interpose (breadcrumb-separator)))]
          [:div.block-parents.flex-row.flex-1 breadcrumb])))))
 

+ 1 - 1
src/main/frontend/components/page.cljs

@@ -406,7 +406,7 @@
                (let [config {:id "block-parent"
                              :block? true}]
                  [:div.mb-4
-                  (block/block-parents config repo block-id format)]))
+                  (block/block-parents config repo block-id format true)]))
 
              ;; blocks
              (let [page (if block?