Browse Source

fix: display reference preview in editing mode

fixes https://github.com/logseq/db-test/issues/369
Tienson Qin 5 months ago
parent
commit
9d7856d345
1 changed files with 25 additions and 38 deletions
  1. 25 38
      src/main/frontend/components/block.cljs

+ 25 - 38
src/main/frontend/components/block.cljs

@@ -695,7 +695,6 @@
 
 
 (rum/defcs ^:large-vars/cleanup-todo page-inner <
 (rum/defcs ^:large-vars/cleanup-todo page-inner <
   (rum/local false ::mouse-down?)
   (rum/local false ::mouse-down?)
-  (rum/local false ::hover?)
   "The inner div of page reference component
   "The inner div of page reference component
 
 
    page-name-in-block is the overridable name of the page (legacy)
    page-name-in-block is the overridable name of the page (legacy)
@@ -707,8 +706,7 @@
     :or {with-parent? true}
     :or {with-parent? true}
     :as config}
     :as config}
    page-entity children label]
    page-entity children label]
-  (let [*hover? (::hover? state)
-        *mouse-down? (::mouse-down? state)
+  (let [*mouse-down? (::mouse-down? state)
         tag? (:tag? config)
         tag? (:tag? config)
         page-name (when (:block/title page-entity)
         page-name (when (:block/title page-entity)
                     (util/page-name-sanity-lc (:block/title page-entity)))
                     (util/page-name-sanity-lc (:block/title page-entity)))
@@ -728,8 +726,6 @@
        :draggable true
        :draggable true
        :on-drag-start (fn [e]
        :on-drag-start (fn [e]
                         (editor-handler/block->data-transfer! page-name e true))
                         (editor-handler/block->data-transfer! page-name e true))
-       :on-mouse-over #(reset! *hover? true)
-       :on-mouse-leave #(reset! *hover? false)
        :on-pointer-down (fn [^js e]
        :on-pointer-down (fn [^js e]
                           (cond
                           (cond
                             (util/link? (.-target e))
                             (util/link? (.-target e))
@@ -833,26 +829,18 @@
   (let [*el-trigger (hooks/use-ref nil)]
   (let [*el-trigger (hooks/use-ref nil)]
     (hooks/use-effect!
     (hooks/use-effect!
      (fn []
      (fn []
-       (when-not (state/editing?)
-         (when (true? visible?)
-           (shui/popup-show!
-            (hooks/deref *el-trigger) render
-            {:root-props {:onOpenChange (fn [v] (set-visible! v))
-                          :modal false}
-             :content-props {:class "ls-preview-popup"
-                             :onInteractOutside (fn [^js e] (.preventDefault e))
-                             :onEscapeKeyDown (fn [^js e]
-                                                (when (state/editing?)
-                                                  (.preventDefault e)
-                                                  (some-> (hooks/deref *el-popup) (.focus))))}
-             :as-dropdown? false}))
-
-         (when (false? visible?)
-           (shui/popup-hide!)
-           (when (state/get-edit-block)
-             (state/clear-edit!)))
-         (hooks/set-ref! *timer nil)
-         (hooks/set-ref! *timer1 nil))
+       (when (true? visible?)
+         (shui/popup-show!
+          (hooks/deref *el-trigger) render
+          {:root-props {:onOpenChange (fn [v] (set-visible! v))
+                        :modal false}
+           :content-props {:class "ls-preview-popup"
+                           :onInteractOutside (fn [^js e] (.preventDefault e))
+                           :onEscapeKeyDown (fn [^js e]
+                                              (when (state/editing?)
+                                                (.preventDefault e)
+                                                (some-> (hooks/deref *el-popup) (.focus))))}
+           :as-dropdown? false}))
 
 
         ;; teardown
         ;; teardown
        (fn []
        (fn []
@@ -862,17 +850,17 @@
 
 
     [:span.preview-ref-link
     [:span.preview-ref-link
      {:ref *el-trigger
      {:ref *el-trigger
-      :on-mouse-enter (fn [^js e]
-                        (when (= (some-> (.-target e) (.closest ".preview-ref-link"))
-                                 (hooks/deref *el-trigger))
-                          (let [timer (hooks/deref *timer)
-                                timer1 (hooks/deref *timer1)]
-                            (when-not timer
-                              (hooks/set-ref! *timer
-                                              (js/setTimeout #(set-visible! true) 1000)))
-                            (when timer1
-                              (js/clearTimeout timer1)
-                              (hooks/set-ref! *timer1 nil)))))
+      :on-mouse-move (fn [^js e]
+                       (when (= (some-> (.-target e) (.closest ".preview-ref-link"))
+                                (hooks/deref *el-trigger))
+                         (let [timer (hooks/deref *timer)
+                               timer1 (hooks/deref *timer1)]
+                           (when-not timer
+                             (hooks/set-ref! *timer
+                                             (js/setTimeout #(set-visible! true) 1000)))
+                           (when timer1
+                             (js/clearTimeout timer1)
+                             (hooks/set-ref! *timer1 nil)))))
       :on-mouse-leave (fn []
       :on-mouse-leave (fn []
                         (let [timer (hooks/deref *timer)
                         (let [timer (hooks/deref *timer)
                               timer1 (hooks/deref *timer1)]
                               timer1 (hooks/deref *timer1)]
@@ -941,8 +929,7 @@
      (if (boolean? in-popup?)
      (if (boolean? in-popup?)
        (if (and (not (:preview? config))
        (if (and (not (:preview? config))
                 (not in-popup?)
                 (not in-popup?)
-                (or (not manual?) open?)
-                (not (state/editing?)))
+                (or (not manual?) open?))
          (popup-preview-impl children
          (popup-preview-impl children
                              {:visible? visible? :set-visible! set-visible!
                              {:visible? visible? :set-visible! set-visible!
                               :*timer *timer :*timer1 *timer1
                               :*timer *timer :*timer1 *timer1