From 89c807c2a7067582a277343f3972cd81dc1dd00f Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 24 Nov 2020 21:50:39 +0800 Subject: [PATCH] fix: scroll to top when switch to a new page Resolved #632 --- src/main/frontend/components/block.cljs | 5 ++++- src/main/frontend/handler/ui.cljs | 5 +++-- src/main/frontend/util.cljs | 7 ++++--- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 842c3bbe57..4b6592c616 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -327,7 +327,10 @@ [:p [:code.mr-2 "Embed page:"] (page-cp config {:page/name page-name})] - (when (not= (string/lower-case current-page) page-name) + (when (or + (not current-page) + (and current-page + (not= (string/lower-case current-page) page-name))) (blocks-container blocks (assoc config :embed? true :ref? false)))])) diff --git a/src/main/frontend/handler/ui.cljs b/src/main/frontend/handler/ui.cljs index 29f69e225c..ae95dc85b9 100644 --- a/src/main/frontend/handler/ui.cljs +++ b/src/main/frontend/handler/ui.cljs @@ -81,8 +81,9 @@ (defn scroll-and-highlight! [state] - (when-let [fragment (util/get-fragment)] - (highlight-element! fragment)) + (if-let [fragment (util/get-fragment)] + (highlight-element! fragment) + (util/scroll-to-top)) state) (defn add-style-if-exists! diff --git a/src/main/frontend/util.cljs b/src/main/frontend/util.cljs index f10bf55b4e..6404643a91 100644 --- a/src/main/frontend/util.cljs +++ b/src/main/frontend/util.cljs @@ -322,9 +322,10 @@ (defn scroll-to [pos] - (.scroll (gdom/getElement "main-content") - #js {:top pos - :behavior "smooth"})) + (when-let [main-content (gdom/getElement "main-content")] + (.scroll main-content + #js {:top pos + :behavior "smooth"}))) (defn scroll-to-top []