diff --git a/frontend/src/app/main/data/colors.cljs b/frontend/src/app/main/data/colors.cljs index d9322da34b..3d27f424d4 100644 --- a/frontend/src/app/main/data/colors.cljs +++ b/frontend/src/app/main/data/colors.cljs @@ -165,7 +165,7 @@ (assoc-in [:workspace-local :picked-shift?] shift?))))) -(defn change-fill-selected [color] +(defn change-fill-selected [color id file-id] (ptk/reify ::change-fill-selected ptk/WatchEvent (watch [_ state s] @@ -174,14 +174,17 @@ is-text? #(= :text (:type (get objects %))) text-ids (filter is-text? ids) shape-ids (filter (comp not is-text?) ids) - update-fn (fn [shape] (assoc shape :fill-color color)) + update-fn (fn [shape] (assoc shape + :fill-color color + :fill-color-ref-id id + :fill-color-ref-file file-id)) editor (get-in state [:workspace-local :editor]) converted-attrs {:fill color}] (rx/from (conj (map #(dwt/update-text-attrs {:id % :editor editor :attrs converted-attrs}) text-ids) (dwc/update-shapes shape-ids update-fn))))))) -(defn change-stroke-selected [color] +(defn change-stroke-selected [color id file-id] (ptk/reify ::change-stroke-selected ptk/WatchEvent (watch [_ state s] @@ -189,7 +192,9 @@ update-fn (fn [s] (cond-> s true - (assoc :stroke-color color) + (assoc :stroke-color color + :stroke-color-ref-id id + :stroke-color-ref-file file-id) (= (:stroke-style s) :none) (assoc :stroke-style "solid" @@ -201,8 +206,8 @@ (let [handle-change-color (fn [color _ shift?] (st/emit! (if shift? - (change-stroke-selected color) - (change-fill-selected color)) + (change-stroke-selected color nil nil) + (change-fill-selected color nil nil)) (md/hide-modal)))] (ptk/reify ::start-picker ptk/UpdateEvent diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 41f330f214..04459fdeb0 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -18,6 +18,7 @@ [app.config :as cfg] [app.main.data.workspace :as dw] [app.main.data.workspace.libraries :as dwl] + [app.main.data.colors :as dc] [app.main.refs :as refs] [app.main.store :as st] [app.main.ui.components.context-menu :refer [context-menu]] @@ -124,7 +125,7 @@ (mf/defc color-item - [{:keys [color local? locale] :as props}] + [{:keys [color local? locale file-id] :as props}] (let [rename? (= (:color-for-rename @refs/workspace-local) (:id color)) id (:id color) input-ref (mf/use-ref) @@ -133,6 +134,12 @@ :left nil :editing rename?}) + click-color + (fn [event] + (if (kbd/shift? event) + (st/emit! (dc/change-stroke-selected (:value color) id (if local? nil file-id))) + (st/emit! (dc/change-fill-selected (:value color) id (if local? nil file-id))))) + rename-color (fn [name] (st/emit! (dwl/update-color (assoc color :name name)))) @@ -147,8 +154,9 @@ rename-color-clicked (fn [event] - (dom/prevent-default event) - (swap! state assoc :editing true)) + (when local? + (dom/prevent-default event) + (swap! state assoc :editing true))) input-blur (fn [event] @@ -206,7 +214,8 @@ :auto-focus true :default-value (:name color "")}] [:div.name-block - {:on-double-click rename-color-clicked} + {:on-double-click rename-color-clicked + :on-click click-color} (:name color) (when-not (= (:name color) (:value color)) [:span (:value color)])]) @@ -250,6 +259,7 @@ (for [color colors] [:& color-item {:key (:id color) :color color + :file-id file-id :local? local? :locale locale}])]])) @@ -407,6 +417,7 @@ {:key (:id file) :file file :local? false + :locale locale :open? false :filters @filters}])]))