Bläddra i källkod

improve(ux): shortcut items for plugins bar

charlie 3 år sedan
förälder
incheckning
955c8502b6

+ 25 - 15
src/main/frontend/components/plugins.cljs

@@ -978,21 +978,31 @@
       [:a.button (ui/icon "puzzle" {:size 20})]])
       [:a.button (ui/icon "puzzle" {:size 20})]])
 
 
    ;; items
    ;; items
-   (for [[_ {:keys [key pinned?] :as opts} pid] items
-         :let [pkey (str (name pid) ":" key)]]
-     {:title   key
-      :item    [:div.flex.items-center.item-wrap
-                (ui-item-renderer pid :toolbar (assoc opts :prefix "pl-" :key (str "pl-" key)))
-                [:span.opacity-80 {:style {:padding-left "2px"}} key]
-                [:span.pin.flex.items-center.opacity-60
-                 {:class (util/classnames [{:pinned pinned?}])}
-                 (ui/icon (if pinned? "pinned" "pin"))]]
-      :options {:on-click (fn [^js e]
-                            (let [^js target (.-target e)
-                                  user-btn?  (boolean (.closest target "div[data-injected-ui]"))]
-                              (when-not user-btn?
-                                (plugin-handler/op-pinned-toolbar-item! pkey (if pinned? :remove :add))))
-                            false)}})
+   (concat
+    (for [[_ {:keys [key pinned?] :as opts} pid] items
+          :let [pkey (str (name pid) ":" key)]]
+      {:title   key
+       :item    [:div.flex.items-center.item-wrap
+                 (ui-item-renderer pid :toolbar (assoc opts :prefix "pl-" :key (str "pl-" key)))
+                 [:span.opacity-80 {:style {:padding-left "2px"}} key]
+                 [:span.pin.flex.items-center.opacity-60
+                  {:class (util/classnames [{:pinned pinned?}])}
+                  (ui/icon (if pinned? "pinned" "pin"))]]
+       :options {:on-click (fn [^js e]
+                             (let [^js target (.-target e)
+                                   user-btn?  (boolean (.closest target "div[data-injected-ui]"))]
+                               (when-not user-btn?
+                                 (plugin-handler/op-pinned-toolbar-item! pkey (if pinned? :remove :add))))
+                             false)}})
+    [{:hr true}
+     {:title   (t :plugins)
+      :options {:on-click #(plugin-handler/goto-plugins-dashboard!)
+                :class "extra-item mt-2"}
+      :icon    (ui/icon "apps")}
+     {:title   (t :settings)
+      :options {:on-click #(plugin-handler/goto-plugins-settings!)
+                :class "extra-item"}
+      :icon    (ui/icon "adjustments")}])
    {:trigger-class "toolbar-plugins-manager-trigger"}))
    {:trigger-class "toolbar-plugins-manager-trigger"}))
 
 
 (rum/defcs hook-ui-items < rum/reactive
 (rum/defcs hook-ui-items < rum/reactive

+ 14 - 2
src/main/frontend/components/plugins.css

@@ -815,13 +815,25 @@
 
 
   .toolbar-plugins-manager {
   .toolbar-plugins-manager {
     &-trigger {
     &-trigger {
-      .dropdown-wrapper {
+      .menu-links-wrapper {
         max-height: 80vh;
         max-height: 80vh;
-        overflow-y: auto;
       }
       }
 
 
       .menu-link {
       .menu-link {
         padding: 3px 5px;
         padding: 3px 5px;
+
+        &.extra-item {
+          padding: 4px 15px;
+          opacity: .8;
+
+          .title-wrap {
+            margin-left: 8px !important;
+          }
+
+          &:hover {
+            opacity: 1;
+          }
+        }
       }
       }
 
 
       .item-wrap {
       .item-wrap {

+ 5 - 0
src/main/frontend/handler/plugin.cljs

@@ -514,6 +514,11 @@
   []
   []
   (state/pub-event! [:go/plugins]))
   (state/pub-event! [:go/plugins]))
 
 
+(defn goto-plugins-settings!
+  []
+  (when-let [pl (first (seq (get-enabled-plugins-if-setting-schema)))]
+    (state/pub-event! [:go/plugins-settings (:id pl)])))
+
 (defn- get-user-default-plugins
 (defn- get-user-default-plugins
   []
   []
   (p/catch
   (p/catch