fix: display reference preview in editing mode

fixes https://github.com/logseq/db-test/issues/369
This commit is contained in:
Tienson Qin
2025-07-12 21:34:26 +08:00
parent 585eb41d44
commit 9d7856d345

View File

@@ -695,7 +695,6 @@
(rum/defcs ^:large-vars/cleanup-todo page-inner <
(rum/local false ::mouse-down?)
(rum/local false ::hover?)
"The inner div of page reference component
page-name-in-block is the overridable name of the page (legacy)
@@ -707,8 +706,7 @@
:or {with-parent? true}
:as config}
page-entity children label]
(let [*hover? (::hover? state)
*mouse-down? (::mouse-down? state)
(let [*mouse-down? (::mouse-down? state)
tag? (:tag? config)
page-name (when (:block/title page-entity)
(util/page-name-sanity-lc (:block/title page-entity)))
@@ -728,8 +726,6 @@
:draggable true
:on-drag-start (fn [e]
(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]
(cond
(util/link? (.-target e))
@@ -833,26 +829,18 @@
(let [*el-trigger (hooks/use-ref nil)]
(hooks/use-effect!
(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
(fn []
@@ -862,17 +850,17 @@
[:span.preview-ref-link
{: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 []
(let [timer (hooks/deref *timer)
timer1 (hooks/deref *timer1)]
@@ -941,8 +929,7 @@
(if (boolean? in-popup?)
(if (and (not (:preview? config))
(not in-popup?)
(or (not manual?) open?)
(not (state/editing?)))
(or (not manual?) open?))
(popup-preview-impl children
{:visible? visible? :set-visible! set-visible!
:*timer *timer :*timer1 *timer1