fix(ux): incorrect popups interaction within the preview editor

pull/11433/head
charlie 2024-07-22 11:13:04 +08:00
parent af094357ce
commit 098d1d4669
3 changed files with 15 additions and 3 deletions

View File

@ -720,6 +720,7 @@
*timer1 (rum/use-ref nil) ;; hide
*el-popup (rum/use-ref nil)
[visible? set-visible!] (rum/use-state nil)
;; set-visible! (fn debug-visible [v] (js/console.warn "debug: visible" v) (set-visible! v))
_ #_:clj-kondo/ignore (rum/defc preview-render []
(rum/use-effect!
(fn []
@ -744,8 +745,7 @@
(js/clearTimeout timer1)))
:on-mouse-leave (fn []
;; check the top popup whether is the preview popup
(when (= "ls-preview-popup"
(some-> (shui-popups/get-last-popup) :content-props :class))
(when (ui/last-shui-preview-popup?)
(rum/set-ref! *timer1
(js/setTimeout #(set-visible! false) 500))))}
(let [page-cp (state/get-page-blocks-cp)]

View File

@ -110,7 +110,7 @@
(<create-new-block! block (db/entity property-id) property-value' {:edit-block? false})
(property-handler/set-block-property! repo (:block/uuid block) property-id property-value')))
(when exit-edit?
(shui/popup-hide-all!)
(ui/hide-popups-until-preview-popup!)
(shui/dialog-close!))
(when-not (or many? checkbox?)
(when-let [input (state/get-input)]

View File

@ -32,6 +32,7 @@
[goog.object :as gobj]
[lambdaisland.glogi :as log]
[logseq.shui.icon.v2 :as shui.icon.v2]
[logseq.shui.popup.core :as shui-popups]
[medley.core :as medley]
[promesa.core :as p]
[rum.core :as rum]
@ -54,6 +55,17 @@
(defonce icon-size (if (mobile-util/native-platform?) 26 20))
(defn shui-popups? [] (some-> (shui-popups/get-popups) (count) (> 0)))
(defn last-shui-preview-popup?
[]
(= "ls-preview-popup"
(some-> (shui-popups/get-last-popup) :content-props :class)))
(defn hide-popups-until-preview-popup!
[]
(when shui-popups?
(while (not (last-shui-preview-popup?))
(shui/popup-hide!))))
(def built-in-colors
["yellow"
"red"