fix(ui): incorrect scrollable container for the blocks list within the preview page modal

This commit is contained in:
charlie
2024-11-08 14:04:03 +08:00
parent 7f37746a0b
commit f3878434bc

View File

@@ -819,43 +819,47 @@
[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 []
(let [el-popup (rum/deref *el-popup)
focus! #(js/setTimeout (fn [] (.focus el-popup)))]
(focus!)
#(set-visible! false)))
[])
(let [[ready? set-ready!] (rum/use-state false)]
(when-let [source (or (db/get-alias-source-page (state/get-current-repo) (:db/id page-entity))
(rum/use-effect!
(fn []
(let [el-popup (rum/deref *el-popup)
focus! #(js/setTimeout (fn [] (.focus el-popup)))]
(set-ready! true)
(focus!)
(fn [] (set-visible! false))))
[])
(when-let [source (or (db/get-alias-source-page (state/get-current-repo) (:db/id page-entity))
page-entity)]
[:div.tippy-wrapper.as-page
{:ref *el-popup
:tab-index -1
:style {:width 600
:text-align "left"
:font-weight 500
:padding-bottom 64}
:on-mouse-enter (fn []
(when-let [timer1 (rum/deref *timer1)]
(js/clearTimeout timer1)))
:on-mouse-leave (fn []
[:div.tippy-wrapper.as-page
{:ref *el-popup
:tab-index -1
:style {:width 600
:text-align "left"
:font-weight 500
:padding-bottom 64}
:on-mouse-enter (fn []
(when-let [timer1 (rum/deref *timer1)]
(js/clearTimeout timer1)))
:on-mouse-leave (fn []
;; check the top popup whether is the preview popup
(when (ui/last-shui-preview-popup?)
(rum/set-ref! *timer1
(js/setTimeout #(set-visible! false) 500))))}
(let [page-cp (state/get-page-blocks-cp)]
(page-cp {:repo (state/get-current-repo)
:page-name (str (:block/uuid source))
:sidebar? sidebar?
:preview? true}))]))]
(when (ui/last-shui-preview-popup?)
(rum/set-ref! *timer1
(js/setTimeout #(set-visible! false) 500))))}
(when-let [page-cp (and ready? (state/get-page-blocks-cp))]
(page-cp {:repo (state/get-current-repo)
:page-name (str (:block/uuid source))
:sidebar? sidebar?
:scroll-container (some-> (rum/deref *el-popup) (.closest ".ls-preview-popup"))
:preview? true}))])))]
(rum/use-effect!
(fn []
(if (some-> (rum/deref *el-wrap) (.closest "[data-radix-popper-content-wrapper]"))
(set-in-popup! true)
(set-in-popup! false)))
[])
(fn []
(if (some-> (rum/deref *el-wrap) (.closest "[data-radix-popper-content-wrapper]"))
(set-in-popup! true)
(set-in-popup! false)))
[])
[:span {:ref *el-wrap}
(if (boolean? in-popup?)