浏览代码

fix: no way to edit the query as the settings icon doesn't show up

Tienson Qin 6 月之前
父节点
当前提交
2a8461b41a
共有 1 个文件被更改,包括 64 次插入58 次删除
  1. 64 58
      src/main/frontend/components/block.cljs

+ 64 - 58
src/main/frontend/components/block.cljs

@@ -767,7 +767,7 @@
                                      s (if (and tag? (not (:hide-tag-symbol? config))) (str "#" s) s)]
                                  (if (ldb/page? page-entity)
                                    s
-                                   (block-title config page-entity))))]
+                                   (block-title config page-entity {}))))]
           page-component))]]))
 
 (rum/defc popup-preview-impl
@@ -1262,7 +1262,8 @@
     (if (and block (:block/title block))
       (let [content-cp (block-content (assoc config :block-ref? true :stop-events? stop-inner-events?)
                                       block nil (:block/uuid block)
-                                      (:slide? config))
+                                      (:slide? config)
+                                      nil)
             display-type (:logseq.property.node/display-type block)]
         (if (and display-type (not (contains? #{:quote :math} display-type)))
           content-cp
@@ -2357,60 +2358,53 @@
              [:div "Practice cards"])])))))))
 
 (rum/defc block-title-aux
-  [config block {:keys [query? advanced-query? query-cp]}]
-  (let [[show-query? set-show-query?] (rum/use-state false)
-        [hover? set-hover?] (rum/use-state false)
+  [config block {:keys [query? *show-query?]}]
+  (let [[hover? set-hover?] (rum/use-state false)
         blank? (string/blank? (:block/title block))
-        opacity (if hover? "opacity-100" "opacity-0")]
-    [:div.inline.w-full
+        opacity (if hover? "opacity-100" "opacity-0")
+        query (:logseq.property/query block)
+        advanced-query? (and query? (= :code (:logseq.property.node/display-type query)))
+        show-query? (and *show-query? @*show-query?)]
+    [:div.flex.flex-row.w-full
      {:on-mouse-over #(set-hover? true)
       :on-mouse-out #(set-hover? false)}
-     [:span.w-full
-      (cond
-        (or (not blank?) (not query?))
-        (text-block-title config block)
-        advanced-query?
-        [:span.opacity-75.hover:opacity-100 "Untitled query"]
-        :else
-        [:div.inline-flex (query-cp)])
-      (when (and query?
-                 (not (and blank? (not advanced-query?))))
-        (ui/tooltip
-         (shui/button
-          {:size :sm
-           :variant :ghost
-           :class (str "ls-small-icon text-muted-foreground p-1 h-4 ml-1 transition-opacity ease-in duration-300 " opacity)
-           :on-pointer-down (fn [e]
-                              (util/stop e)
-                              (set-show-query? (not show-query?)))}
-          (ui/icon "settings"))
-         [:div.opacity-75 "Set query"]))
-      (when-let [property (:logseq.property/created-from-property block)]
-        (when-let [message (when (= :url (:logseq.property/type property))
-                             (first (outliner-property/validate-property-value (db/get-db) property (:db/id block))))]
-          (ui/tooltip
-           (shui/button
-            {:size :sm
-             :variant :ghost
-             :class "ls-type-warning ls-small-icon px-1 !py-0 h-4 ml-1"}
-            (ui/icon "alert-triangle"))
-           [:div.opacity-75 message])))]
-     (when show-query?
-       [:div.py-1.flex.flex-1
-        (query-cp)])]))
+     (cond
+       (and query? (and blank? (or advanced-query? show-query?)))
+       [:span.opacity-75.hover:opacity-100 "Untitled query"]
+       (and query? blank?)
+       (query-builder-component/builder query {})
+       :else
+       (text-block-title config block))
+     (when query?
+       (ui/tooltip
+        (shui/button
+         {:size :sm
+          :variant :ghost
+          :class (str "ls-small-icon text-muted-foreground ml-2 w-6 h-6 transition-opacity ease-in duration-300 " opacity)
+          :on-pointer-down (fn [e]
+                             (util/stop e)
+                             (when *show-query? (swap! *show-query? not)))}
+         (ui/icon "settings"))
+        [:div.opacity-75 (if show-query?
+                           "Hide query"
+                           "Set query")]))
+     (when-let [property (:logseq.property/created-from-property block)]
+       (when-let [message (when (= :url (:logseq.property/type property))
+                            (first (outliner-property/validate-property-value (db/get-db) property (:db/id block))))]
+         (ui/tooltip
+          (shui/button
+           {:size :sm
+            :variant :ghost
+            :class "ls-type-warning ls-small-icon px-1 !py-0 h-4 ml-1"}
+           (ui/icon "alert-triangle"))
+          [:div.opacity-75 message])))]))
 
 (rum/defc block-title < rum/reactive db-mixins/query
-  [config block]
+  [config block {:keys [*show-query?]}]
   (let [block' (db/entity (:db/id block))
         node-display-type (:logseq.property.node/display-type block')
         db (db/get-db)
-        query? (ldb/class-instance? (entity-plus/entity-memoized db :logseq.class/Query) block')
-        query (:logseq.property/query block')
-        advanced-query? (and query? (= :code (:logseq.property.node/display-type query)))
-        query-cp (fn []
-                   (if advanced-query?
-                     (src-cp (assoc config :code-block query) {:language "clojure"})
-                     (query-builder-component/builder query {})))]
+        query? (ldb/class-instance? (entity-plus/entity-memoized db :logseq.class/Query) block')]
     (cond
       (:raw-title? config)
       (text-block-title (dissoc config :raw-title?) block)
@@ -2435,8 +2429,7 @@
 
       :else
       (block-title-aux config block {:query? query?
-                                     :query-cp query-cp
-                                     :advanced-query? advanced-query?}))))
+                                     :*show-query? *show-query?}))))
 
 (rum/defc span-comma
   []
@@ -2856,7 +2849,7 @@
           (clock/seconds->days:hours:minutes:seconds time-spent))]))))
 
 (rum/defc ^:large-vars/cleanup-todo block-content < rum/reactive
-  [config {:block/keys [uuid] :as block} edit-input-id block-id slide?]
+  [config {:block/keys [uuid] :as block} edit-input-id block-id slide? *show-query?]
   (let [repo (state/get-current-repo)
         db-based? (config/db-based-graph? (state/get-current-repo))
         scheduled (when-not db-based? (:block/scheduled block))
@@ -2935,7 +2928,7 @@
       [:div.flex.flex-row.justify-between.block-content-inner
        (when-not plugin-slotted?
          [:div.block-head-wrap
-          (block-title config block)])
+          (block-title config block {:*show-query? *show-query?})])
 
        (if db-based?
          (task-spent-time-cp block)
@@ -3004,7 +2997,7 @@
 
 (rum/defcs ^:large-vars/cleanup-todo block-content-or-editor < rum/reactive
   (rum/local false ::hover?)
-  [state config {:block/keys [uuid] :as block} {:keys [edit-input-id block-id edit? hide-block-refs-count? refs-count *hide-block-refs?]}]
+  [state config {:block/keys [uuid] :as block} {:keys [edit-input-id block-id edit? hide-block-refs-count? refs-count *hide-block-refs? *show-query?]}]
   (let [format (if (config/db-based-graph? (state/get-current-repo))
                  :markdown
                  (or (:block/format block) :markdown))
@@ -3052,7 +3045,7 @@
                                           (editor-handler/unhighlight-blocks!)
                                           (state/set-editing! edit-input-id content block "" {:db (db/get-db)
                                                                                               :container-id (:container-id config)}))}})
-           (block-content config block edit-input-id block-id slide?))
+           (block-content config block edit-input-id block-id slide? *show-query?))
 
           (when (and (not hide-block-refs-count?)
                      (not named?))
@@ -3427,10 +3420,14 @@
              (assoc state
                     ::ref *ref
                     ::hide-block-refs? (atom default-hide?)
+                    ::show-query? (atom false)
                     ::refs-count *refs-count)))}
   [state container-state repo config* block {:keys [navigating-block navigated? editing? selected?] :as opts}]
   (let [*ref (::ref state)
         *hide-block-refs? (get state ::hide-block-refs?)
+        *show-query? (get state ::show-query?)
+        show-query? (rum/react *show-query?)
+        _ (prn :debug :show-query? show-query?)
         *refs-count (get state ::refs-count)
         hide-block-refs? (rum/react *hide-block-refs?)
         refs-count (if (seq (:block/_refs block))
@@ -3615,7 +3612,8 @@
                                          :edit? editing?
                                          :refs-count refs-count
                                          :*hide-block-refs? *hide-block-refs?
-                                         :hide-block-refs-count? hide-block-refs-count?}))])]
+                                         :hide-block-refs-count? hide-block-refs-count?
+                                         :*show-query? *show-query?}))])]
 
          (when (and db-based? (not collapsed?) (not (or table? property?)))
            (block-positioned-properties config block :block-below))]
@@ -3623,15 +3621,23 @@
         (when (and @*show-right-menu? (not in-whiteboard?) (not (or table? property?)))
           (block-right-menu config block editing?))])
 
-     ;; (when-not (:table? config)
-     ;;   (query-property-cp block config collapsed?))
-
      (when (and db-based?
                 (or sidebar? (not collapsed?))
                 (not (or table? property?)))
        [:div (when-not (:page-title? config) {:style {:padding-left 45}})
         (db-properties-cp config block {:in-block-container? true})])
 
+     (when (and db-based? show-query? (not (:table? config)))
+       (let [query? (ldb/class-instance? (entity-plus/entity-memoized (db/get-db) :logseq.class/Query) block)
+             query (:logseq.property/query block)
+             advanced-query? (and query? (= :code (:logseq.property.node/display-type query)))]
+         [:div.ml-6.my-1
+          (if advanced-query?
+            (src-cp (assoc config :code-block query) {:language "clojure"})
+            [:div
+             [:div.opacity-75.ml-5.text-sm.mb-1 "Set query:"]
+             (block-container config query)])]))
+
      (when (and (not (or (:table? config) (:property? config)))
                 (not hide-block-refs?)
                 (> refs-count 0)