From f3878434bcf1da9d3c651bac4dd8a9ed3a28fa4e Mon Sep 17 00:00:00 2001 From: charlie Date: Fri, 8 Nov 2024 14:04:03 +0800 Subject: [PATCH] fix(ui): incorrect scrollable container for the blocks list within the preview page modal --- src/main/frontend/components/block.cljs | 68 +++++++++++++------------ 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index c550628a09..4257a3bb71 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -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?)