diff --git a/CHANGES.md b/CHANGES.md index 66cda67a9d..8a25ed336e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -26,6 +26,7 @@ - Fix color assets from shared libraries not appearing as assets in Selected colors panel [Taiga #12957](https://tree.taiga.io/project/penpot/issue/12957) - Fix CSS generated box-shadow property [Taiga #12997](https://tree.taiga.io/project/penpot/issue/12997) - Fix inner shadow selector on shadow token [Taiga #12951](https://tree.taiga.io/project/penpot/issue/12951) +- Fix missing text color token from selected shapes in selected colors list [Taiga #12956](https://tree.taiga.io/project/penpot/issue/12956) ## 2.12.1 diff --git a/frontend/src/app/main/data/workspace/colors.cljs b/frontend/src/app/main/data/workspace/colors.cljs index 48f20f7f51..dea003d5ee 100644 --- a/frontend/src/app/main/data/workspace/colors.cljs +++ b/frontend/src/app/main/data/workspace/colors.cljs @@ -1180,19 +1180,20 @@ :index (:index shadow)})) (defn- text->color-att - [fill file-id libraries] + [fill file-id libraries & {:keys [has-token-applied token-name]}] (let [ref-file (:fill-color-ref-file fill) ref-id (:fill-color-ref-id fill) colors (-> libraries (get ref-file) (get :data) (ctl/get-colors)) - shared? (contains? colors ref-id) - attrs (cond-> (types.fills/fill->color fill) - (not (or shared? (= ref-file file-id))) - (dissoc :ref-file :ref-id))] - + base-attrs (cond-> (types.fills/fill->color fill) + (not (or shared? (= ref-file file-id))) + (dissoc :ref-file :ref-id)) + attrs (cond-> base-attrs + has-token-applied (assoc :has-token-applied true) + token-name (assoc :token-name token-name))] {:attrs attrs :prop :content :shape-id (:shape-id fill) @@ -1200,13 +1201,18 @@ (defn- extract-text-colors [text file-id libraries] - (let [treat-node + (let [applied-fill-token (get-in text [:applied-tokens :fill]) + treat-node (fn [node shape-id] - (map-indexed #(assoc %2 :shape-id shape-id :index %1) node))] + (map-indexed (fn [idx fill] + (let [args (cond-> [] + (and (= idx 0) applied-fill-token) + (conj :has-token-applied true :token-name applied-fill-token))] + (apply text->color-att (assoc fill :shape-id shape-id :index idx) file-id libraries args))) + node))] (->> (txt/node-seq txt/is-text-node? (:content text)) (map :fills) - (mapcat #(treat-node % (:id text))) - (map #(text->color-att % file-id libraries))))) + (mapcat #(treat-node % (:id text)))))) (defn- fill->color-att "Given a fill map enriched with :shape-id, :index, and optionally