From 55448c8ed119b51baf8049f55e1957023abf5853 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 17 Jun 2021 22:12:03 +0800 Subject: [PATCH] fix: Writing in new page in sidebar makes new line after each keypress also, makes tippy lazy --- src/main/frontend/components/block.cljs | 52 +++++++++++++------------ src/main/frontend/components/page.cljs | 3 +- src/main/frontend/handler/editor.cljs | 2 +- src/main/frontend/handler/page.cljs | 8 ++-- src/main/frontend/ui.cljs | 5 ++- 5 files changed, 40 insertions(+), 30 deletions(-) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index 1b03d09cc..195113ecf 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -342,16 +342,19 @@ :href href :on-click (fn [e] (util/stop e) - (editor-handler/insert-first-page-block-if-not-exists! redirect-page-name) (if (gobj/get e "shiftKey") - (when-let [page-entity (db/entity [:block/name redirect-page-name])] - (state/sidebar-add-block! - (state/get-current-repo) - (:db/id page-entity) - :page - {:page page-entity})) - (route-handler/redirect! {:to :page - :path-params {:name redirect-page-name}})) + (do + (js/setTimeout #(editor-handler/insert-first-page-block-if-not-exists! redirect-page-name) 310) + (when-let [page-entity (db/entity [:block/name redirect-page-name])] + (state/sidebar-add-block! + (state/get-current-repo) + (:db/id page-entity) + :page + {:page page-entity}))) + (do + (editor-handler/insert-first-page-block-if-not-exists! redirect-page-name) + (route-handler/redirect! {:to :page + :path-params {:name redirect-page-name}}))) (when (and contents-page? (state/get-left-sidebar-open?)) (ui-handler/close-left-sidebar!)))} @@ -391,21 +394,22 @@ (rfe/href :page {:name redirect-page-name})) inner (page-inner config page-name href redirect-page-name page-entity contents-page? children html-export? label)] (if (and (not (util/mobile?)) (not preview?)) - (ui/tippy {:html [:div.tippy-wrapper.overflow-y-auto.p-4 - {:style {:width 735 - :text-align "left" - :font-weight 500 - :max-height 600 - :padding-bottom 64}} - [:h2.font-bold.text-lg (if (= page redirect-page-name) - page - [:span - [:span.text-sm.mr-2 "Alias:" ] - redirect-page-name])] - (let [page (db/entity [:block/name (string/lower-case redirect-page-name)])] - (editor-handler/insert-first-page-block-if-not-exists! redirect-page-name) - (when-let [f (state/get-page-blocks-cp)] - (f (state/get-current-repo) page {:sidebar? sidebar? :preview? true})))] + (ui/tippy {:html (fn [] + [:div.tippy-wrapper.overflow-y-auto.p-4 + {:style {:width 735 + :text-align "left" + :font-weight 500 + :max-height 600 + :padding-bottom 64}} + [:h2.font-bold.text-lg (if (= page redirect-page-name) + page + [:span + [:span.text-sm.mr-2 "Alias:" ] + redirect-page-name])] + (let [page (db/entity [:block/name (string/lower-case redirect-page-name)])] + (editor-handler/insert-first-page-block-if-not-exists! redirect-page-name) + (when-let [f (state/get-page-blocks-cp)] + (f (state/get-current-repo) page {:sidebar? sidebar? :preview? true})))]) :interactive true :delay [1000, 100]} inner) diff --git a/src/main/frontend/components/page.cljs b/src/main/frontend/components/page.cljs index d9492a53a..82e3bfe6f 100644 --- a/src/main/frontend/components/page.cljs +++ b/src/main/frontend/components/page.cljs @@ -272,7 +272,8 @@ (db/pull [:block/name page-name]))) _ (when (and (not block?) (db/page-empty? (state/get-current-repo) (:db/id page))) (page-handler/create! page-name {:page-map page - :redirect? false})) + :redirect? false + :create-first-block? false})) {:keys [title] :as properties} (:block/properties page) page-name (:block/name page) page-original-name (:block/original-name page) diff --git a/src/main/frontend/handler/editor.cljs b/src/main/frontend/handler/editor.cljs index 9ff732cf4..ab2d18724 100644 --- a/src/main/frontend/handler/editor.cljs +++ b/src/main/frontend/handler/editor.cljs @@ -689,7 +689,7 @@ (when (string? page-name) (when-let [page (db/entity [:block/name (string/lower-case page-name)])] (when (db/page-empty? (state/get-current-repo) (:db/id page)) - (api-insert-new-block! "" {:page page-name}))))) + (api-insert-new-block! "" {:page page-name}))))) (defn update-timestamps-content! [{:block/keys [repeated? marker format] :as block} content] diff --git a/src/main/frontend/handler/page.cljs b/src/main/frontend/handler/page.cljs index 916bf8302..8e96d05ed 100644 --- a/src/main/frontend/handler/page.cljs +++ b/src/main/frontend/handler/page.cljs @@ -67,8 +67,9 @@ (defn create! ([title] (create! title {})) - ([title {:keys [redirect? page-map] - :or {redirect? true}}] + ([title {:keys [redirect? page-map create-first-block?] + :or {redirect? true + create-first-block? true}}] (let [title (string/trim title) page (string/lower-case title) format (state/get-preferred-format) @@ -85,7 +86,8 @@ [tx default-properties] [tx])] (db/transact! txs) - (editor-handler/insert-first-page-block-if-not-exists! page) + (when create-first-block? + (editor-handler/insert-first-page-block-if-not-exists! page)) (when redirect? (route-handler/redirect! {:to :page :path-params {:name page}}))))) diff --git a/src/main/frontend/ui.cljs b/src/main/frontend/ui.cljs index 622fcfcfb..2e0deee62 100644 --- a/src/main/frontend/ui.cljs +++ b/src/main/frontend/ui.cljs @@ -621,6 +621,9 @@ :onHide #(reset! *mounted? false)} opts) (assoc :html (if mounted? - (:html opts) + (when-let [html (:html opts)] + (if (fn? html) + (html) + html)) [:div ""]))) child)))