From ac2417a9fb188b8efb1144fca2199bee7fd26999 Mon Sep 17 00:00:00 2001 From: charlie Date: Tue, 20 Aug 2024 12:49:02 +0800 Subject: [PATCH] enhance(ux): WIP dropdown property editor --- deps/shui/src/logseq/shui/dialog/core.cljs | 12 +++++++++++- src/main/frontend/components/property.cljs | 2 ++ src/main/frontend/components/property_v2.cljs | 6 ++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/deps/shui/src/logseq/shui/dialog/core.cljs b/deps/shui/src/logseq/shui/dialog/core.cljs index 03d34f2e6..ad27f8691 100644 --- a/deps/shui/src/logseq/shui/dialog/core.cljs +++ b/deps/shui/src/logseq/shui/dialog/core.cljs @@ -193,11 +193,20 @@ (rum/defc confirm-inner [config] - (let [{:keys [deferred outside-cancel?]} config] + (let [{:keys [deferred outside-cancel?]} config + *ok-ref (rum/use-ref nil)] + + (rum/use-effect! + (fn [] + (js/setTimeout + #(some-> (rum/deref *ok-ref) (.focus)) 128)) + []) + (alert-inner (assoc config :overlay-props {:on-click #(when outside-cancel? (close!) (p/reject! deferred nil))} + :footer [:<> (base/button @@ -208,6 +217,7 @@ "Cancel") (base/button {:key "ok" + :ref *ok-ref :on-click #(do (close!) (p/resolve! deferred true)) :size :sm } "OK")])))) diff --git a/src/main/frontend/components/property.cljs b/src/main/frontend/components/property.cljs index f4bc8fd89..9a7a92f93 100644 --- a/src/main/frontend/components/property.cljs +++ b/src/main/frontend/components/property.cljs @@ -663,10 +663,12 @@ (route-handler/redirect-to-page! (:block/uuid property)) (.preventDefault e))) :on-context-menu (fn [^js e] + (util/stop e) (shui/popup-show! (.-target e) (fn [{:keys [id]}] (property-v2/dropdown-editor id property)) {:content-props {:class "ls-property-dropdown-editor"} + :align "start" :as-dropdown? true})) :on-click (fn [^js e] (shui/popup-show! diff --git a/src/main/frontend/components/property_v2.cljs b/src/main/frontend/components/property_v2.cljs index d56c97bde..9668175c7 100644 --- a/src/main/frontend/components/property_v2.cljs +++ b/src/main/frontend/components/property_v2.cljs @@ -63,5 +63,7 @@ (dropdown-editor-menuitem {:icon :square-x :title "Remove property" :desc "" :disabled? false :item-props {:class "opacity-50 focus:opacity-100 focus:!text-red-rx-08" - :on-select #(-> (shui/dialog-confirm! "remove?") - (p/then (fn [] (shui/popup-hide! popup-id))))}})])) + :on-select (fn [^js e] + (util/stop e) + (-> (shui/dialog-confirm! "remove?") + (p/then (fn [] (shui/popup-hide! popup-id)))))}})]))