From b23af3087c272e04cf9fd2f44c29d5f30a1cad1e Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 7 Jul 2025 21:14:13 +0800 Subject: [PATCH] fix(mobile): editor and selection toolbar on quick add --- src/main/frontend/components/block.cljs | 11 ++----- src/main/frontend/components/quick_add.cljs | 32 ++++++++++++--------- src/main/frontend/mobile/index.css | 4 +-- src/main/mobile/components/app.cljs | 11 +++---- src/main/mobile/components/modal.cljs | 8 +----- src/main/mobile/components/popup.cljs | 9 +++--- src/main/mobile/events.cljs | 5 +++- 7 files changed, 36 insertions(+), 44 deletions(-) diff --git a/src/main/frontend/components/block.cljs b/src/main/frontend/components/block.cljs index ee46a52130..c9b21f5806 100644 --- a/src/main/frontend/components/block.cljs +++ b/src/main/frontend/components/block.cljs @@ -93,7 +93,6 @@ [logseq.shui.hooks :as hooks] [logseq.shui.ui :as shui] [medley.core :as medley] - [mobile.state :as mobile-state] [promesa.core :as p] [reitit.frontend.easy :as rfe] [rum.core :as rum] @@ -3658,10 +3657,7 @@ (when original-block " embed-block")) :haschild (str (boolean has-child?)) :on-touch-start (fn [event uuid] - (when-not (or @*dragging? - (state/editing?) - (contains? #{:ls-quick-add} - (get-in @mobile-state/*popup-data [:opts :id]))) + (when-not (or @*dragging? (state/editing?)) (block-handler/on-touch-start event uuid))) :on-touch-end (fn [event] (when-not @*dragging? @@ -4395,10 +4391,7 @@ (rum/defc block-list [config blocks] (let [[virtualized? _] (rum/use-state (not (or (and (:journals? config) (< (count blocks) 50)) - (:block-children? config) - (and (util/mobile?) - (= common-config/quick-add-page-name - (:block/title (:block/page (first blocks)))))))) + (:block-children? config)))) render-item (fn [idx] (let [top? (zero? idx) bottom? (= (dec (count blocks)) idx) diff --git a/src/main/frontend/components/quick_add.cljs b/src/main/frontend/components/quick_add.cljs index a924bf9e37..768ff2cc25 100644 --- a/src/main/frontend/components/quick_add.cljs +++ b/src/main/frontend/components/quick_add.cljs @@ -22,21 +22,25 @@ [] (when (db/get-page (date/today)) (when-let [add-page (ldb/get-built-in-page (db/get-db) common-config/quick-add-page-name)] - (let [mobile? (util/mobile?)] - [:div.ls-quick-capture.flex.flex-1.flex-col.w-full.gap-4 - [:div.font-medium.border-b.pb-4 - {:class (when-not mobile? "text-xs")} - "Quick add"] + (let [mobile? (util/mobile?) + add-button [:div + (shui/button + {:variant (if mobile? :default :outline) + :size :sm + :on-click (fn [_e] + (editor-handler/quick-add-blocks!))} + (when-not mobile? (shui/shortcut ["mod" "e"])) + "Add to today")]] + [:div.ls-quick-add.flex.flex-1.flex-col.w-full.gap-4 + [:div.border-b.pb-4.flex.flex-row.justify-between.gap-4.items-center + [:div.font-medium + {:class (when-not mobile? "text-xs")} + "Quick add"] + (when mobile? add-button)] [:div.content {:class (if mobile? "flex flex-1 flex-col w-full" "block -ml-6")} - (page/page-blocks-cp add-page {})] - [:div - (shui/button - {:variant (if mobile? :default :outline) - :size :sm - :on-click (fn [_e] - (editor-handler/quick-add-blocks!))} - (when-not mobile? (shui/shortcut ["mod" "e"])) - "Add to today")]])))) + (page/page-blocks-cp add-page {}) + (when-not mobile? + add-button)]])))) diff --git a/src/main/frontend/mobile/index.css b/src/main/frontend/mobile/index.css index 25d6eceeae..389f24851a 100644 --- a/src/main/frontend/mobile/index.css +++ b/src/main/frontend/mobile/index.css @@ -1,6 +1,6 @@ .action-bar { @apply fixed bottom-[100px] h-[70px] p-1.5 rounded-md overflow-y-hidden overflow-x-auto - shadow-md bg-[var(--ls-secondary-background-color)] z-[100]; + shadow-md bg-[var(--ls-secondary-background-color)] z-[99999]; .action-bar-commands { @apply relative flex w-full; @@ -26,7 +26,7 @@ } #mobile-editor-toolbar { - @apply fixed -bottom-1 left-0 w-full z-[9999] flex justify-between bg-gray-100 border-t border-gray-200 + @apply fixed -bottom-1 left-0 w-full z-[99999] flex justify-between bg-gray-100 border-t border-gray-200 dark:border-gray-800 dark:bg-[#222]; will-change: transform; diff --git a/src/main/mobile/components/app.cljs b/src/main/mobile/components/app.cljs index 5b60c3f5e5..3a77a33c92 100644 --- a/src/main/mobile/components/app.cljs +++ b/src/main/mobile/components/app.cljs @@ -243,12 +243,9 @@ (rum/defc main < rum/reactive [] (let [current-repo (state/sub :git/current-repo) - show-action-bar? (state/sub :mobile/show-action-bar?) - {:keys [open?]} (rum/react mobile-state/*modal-data)] + show-action-bar? (state/sub :mobile/show-action-bar?)] (ion/app (tabs current-repo) - (when-not open? - [:<> - (editor-toolbar/mobile-bar) - (when show-action-bar? - (selection-toolbar/action-bar))])))) + (editor-toolbar/mobile-bar) + (when show-action-bar? + (selection-toolbar/action-bar))))) diff --git a/src/main/mobile/components/modal.cljs b/src/main/mobile/components/modal.cljs index f778d110ee..1858667711 100644 --- a/src/main/mobile/components/modal.cljs +++ b/src/main/mobile/components/modal.cljs @@ -7,8 +7,6 @@ [frontend.handler.page :as page-handler] [frontend.state :as state] [frontend.ui :as ui] - [mobile.components.editor-toolbar :as mobile-bar] - [mobile.components.selection-toolbar :as selection-toolbar] [mobile.components.ui :as mobile-ui] [mobile.init :as init] [mobile.ionic :as ion] @@ -18,7 +16,6 @@ (rum/defc block-modal < rum/reactive [presenting-element] (let [{:keys [open? block]} (rum/react mobile-state/*modal-data) - show-action-bar? (state/sub :mobile/show-action-bar?) close! #(swap! mobile-state/*modal-data assoc :open? false) block (when-let [id (:block/uuid block)] (db/entity [:block/uuid id])) @@ -78,7 +75,4 @@ (ion/content {:class "ion-padding scrolling"} (mobile-ui/classic-app-container-wrap - (page/page-cp (db/entity [:block/uuid (:block/uuid block)]))) - (mobile-bar/mobile-bar) - (when show-action-bar? - (selection-toolbar/action-bar))))))) + (page/page-cp (db/entity [:block/uuid (:block/uuid block)])))))))) diff --git a/src/main/mobile/components/popup.cljs b/src/main/mobile/components/popup.cljs index 39ff884508..ed1bbcefa5 100644 --- a/src/main/mobile/components/popup.cljs +++ b/src/main/mobile/components/popup.cljs @@ -67,20 +67,21 @@ (rum/defc popup < rum/reactive [] - (let [{:keys [open? content-fn opts]} (rum/react mobile-state/*popup-data)] + (let [{:keys [open? content-fn opts]} (rum/react mobile-state/*popup-data) + initial-breakpoint (if (= (:id opts) :ls-quick-add) 1 0.75)] (when open? - ;; (state/clear-edit!) + (state/clear-edit!) (init/keyboard-hide)) (ion/modal (merge {:isOpen (boolean open?) - :initialBreakpoint 0.75 + :initialBreakpoint initial-breakpoint :breakpoints #js [0 0.75 1] :onDidDismiss (fn [] (mobile-state/set-popup! nil)) :expand "block"} (:modal-props opts)) (ion/content - {:class "ion-padding"} + {:class "ion-padding scrolling"} [:<> (when-let [title (:title opts)] [:h2.py-2.opacity-40 title]) diff --git a/src/main/mobile/events.cljs b/src/main/mobile/events.cljs index 9a5d59bc30..5ecf36fb28 100644 --- a/src/main/mobile/events.cljs +++ b/src/main/mobile/events.cljs @@ -2,6 +2,7 @@ "Mobile events" (:require [frontend.components.quick-add :as quick-add] [frontend.handler.events :as events] + [mobile.components.ui :as mobile-ui] [mobile.init :as init] [mobile.state :as mobile-state] [promesa.core :as p])) @@ -14,5 +15,7 @@ (defmethod events/handle :dialog/mobile-quick-add [_] (mobile-state/set-popup! {:open? true - :content-fn (fn [] (quick-add/quick-add)) + :content-fn (fn [] + (mobile-ui/classic-app-container-wrap + (quick-add/quick-add))) :opts {:id :ls-quick-add}}))