Преглед на файлове

enhance: display parents breadcrumb when searching for a node

Tienson Qin преди 1 година
родител
ревизия
2e5a1dabd6
променени са 4 файла, в които са добавени 40 реда и са изтрити 28 реда
  1. 29 24
      src/main/frontend/components/editor.cljs
  2. 9 4
      src/main/frontend/components/property/value.cljs
  3. 1 0
      src/main/frontend/handler.cljs
  4. 1 0
      src/main/frontend/publishing.cljs

+ 29 - 24
src/main/frontend/components/editor.cljs

@@ -171,30 +171,35 @@
                         (let [block (if (:block/uuid block)
                                       (db/entity [:block/uuid (:block/uuid block)])
                                       block)]
-                          [:div.flex.flex-row.items-center.gap-1
-                           (when-not db-tag?
-                             (cond
-                               (ldb/class? block)
-                               [:div (ui/icon "hash" {:size 14})]
-                               (ldb/property? block)
-                               [:div (ui/icon "letter-p" {:size 14})]
-                               (db-model/whiteboard-page? block)
-                               [:div (ui/icon "whiteboard" {:extension? true})]
-                               (db/page? block)
-                               [:div (ui/icon "page" {:extension? true})]
-                               (or (string/starts-with? (str (:block/title block)) (t :new-tag))
-                                   (string/starts-with? (str (:block/title block)) (t :new-page)))
-                               nil
-                               :else
-                               [:div (ui/icon "letter-n" {:size 14})]))
-
-                           (let [title (if db-tag?
-                                         (let [target (first (:block/_alias block))]
-                                           (if (ldb/class? target)
-                                             (str (:block/title block) " -> alias: " (:block/title target))
-                                             (:block/title block)))
-                                         (title/block-unique-title block))]
-                             (search-handler/highlight-exact-query title q))]))
+                          [:div.flex.flex-col
+                           (when-not (db/page? block)
+                             (when-let [breadcrumb (state/get-component :block/breadcrumb)]
+                               [:div.text-xs.opacity-70.mb-1 {:style {:margin-left 3}}
+                                (breadcrumb {:search? true} (state/get-current-repo) (:block/uuid block) {})]))
+                           [:div.flex.flex-row.items-center.gap-1
+                            (when-not db-tag?
+                              (cond
+                                (ldb/class? block)
+                                [:div (ui/icon "hash" {:size 14})]
+                                (ldb/property? block)
+                                [:div (ui/icon "letter-p" {:size 14})]
+                                (db-model/whiteboard-page? block)
+                                [:div (ui/icon "whiteboard" {:extension? true})]
+                                (db/page? block)
+                                [:div (ui/icon "page" {:extension? true})]
+                                (or (string/starts-with? (str (:block/title block)) (t :new-tag))
+                                    (string/starts-with? (str (:block/title block)) (t :new-page)))
+                                nil
+                                :else
+                                [:div (ui/icon "letter-n" {:size 14})]))
+
+                            (let [title (if db-tag?
+                                          (let [target (first (:block/_alias block))]
+                                            (if (ldb/class? target)
+                                              (str (:block/title block) " -> alias: " (:block/title target))
+                                              (:block/title block)))
+                                          (title/block-unique-title block))]
+                              (search-handler/highlight-exact-query title q))]]))
          :empty-placeholder [:div.text-gray-500.text-sm.px-4.py-2 (if db-tag?
                                                                     "Search for a tag"
                                                                     "Search for a node")]

+ 9 - 4
src/main/frontend/components/property/value.cljs

@@ -438,10 +438,15 @@
                                      (let [title (subs (title/block-unique-title node) 0 256)
                                            node (or (db/entity id) node)
                                            icon (get-node-icon node)]
-                                       [:div.flex.flex-row.items-center.gap-1
-                                        (when-not (:property/schema.classes property)
-                                          (ui/icon icon {:size 14}))
-                                        [:div title]])
+                                       [:div.flex.flex-col
+                                        (when-not (db/page? node)
+                                          (when-let [breadcrumb (state/get-component :block/breadcrumb)]
+                                            [:div.text-xs.opacity-70.mb-1 {:style {:margin-left 3}}
+                                             (breadcrumb {:search? true} (state/get-current-repo) (:block/uuid block) {})]))
+                                        [:div.flex.flex-row.items-center.gap-1
+                                         (when-not (:property/schema.classes property)
+                                           (ui/icon icon {:size 14}))
+                                         [:div title]]])
                                      (or (:label node) (:block/title node)))]
                          (assoc node
                                 :label-value (:block/title node)

+ 1 - 0
src/main/frontend/handler.cljs

@@ -118,6 +118,7 @@
   (state/set-component! :whiteboard/tldraw-preview whiteboard/tldraw-preview)
   (state/set-component! :block/single-block block/single-block-cp)
   (state/set-component! :block/container block/block-container)
+  (state/set-component! :block/breadcrumb block/breadcrumb)
   (state/set-component! :block/reference block/block-reference)
   (state/set-component! :block/blocks-container block/blocks-container)
   (state/set-component! :block/properties-cp block/db-properties-cp)

+ 1 - 0
src/main/frontend/publishing.cljs

@@ -93,6 +93,7 @@
   (state/set-component! :whiteboard/tldraw-preview whiteboard/tldraw-preview)
   (state/set-component! :block/single-block block/single-block-cp)
   (state/set-component! :block/container block/block-container)
+  (state/set-component! :block/breadcrumb block/breadcrumb)
   (state/set-component! :block/blocks-container block/blocks-container)
   (state/set-component! :block/reference block/block-reference)
   (state/set-component! :block/properties-cp block/db-properties-cp)