Răsfoiți Sursa

enhance(ux): WIP dropdown property editor

charlie 1 an în urmă
părinte
comite
ac2417a9fb

+ 11 - 1
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")]))))

+ 2 - 0
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!

+ 4 - 2
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)))))}})]))