From e6a7eed7a97bdf87f805084a942ce831c2f9ff1a Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Thu, 26 Jun 2025 12:15:06 +0200 Subject: [PATCH 1/3] :bug: Fix problem with plugins on system theme --- frontend/src/app/plugins/api.cljs | 11 +++++++++-- frontend/src/app/plugins/events.cljs | 18 ++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/plugins/api.cljs b/frontend/src/app/plugins/api.cljs index 8c6c80bc90..28e8ed6b7b 100644 --- a/frontend/src/app/plugins/api.cljs +++ b/frontend/src/app/plugins/api.cljs @@ -44,6 +44,7 @@ [app.plugins.viewport :as viewport] [app.util.code-gen :as cg] [app.util.object :as obj] + [app.util.theme :as theme] [beicon.v2.core :as rx] [cuerdas.core :as str])) @@ -216,9 +217,15 @@ :getTheme (fn [] (let [theme (get-in @st/state [:profile :theme])] - (if (or (not theme) (= theme "default")) + (cond + (or (not theme) (= theme "system")) + (theme/get-system-theme) + + (= theme "default") "dark" - (get-in @st/state [:profile :theme])))) + + :else + theme))) :getCurrentUser (fn [] diff --git a/frontend/src/app/plugins/events.cljs b/frontend/src/app/plugins/events.cljs index a4a12c5b18..33f0fad6e0 100644 --- a/frontend/src/app/plugins/events.cljs +++ b/frontend/src/app/plugins/events.cljs @@ -14,6 +14,7 @@ [app.plugins.parser :as parser] [app.plugins.shape :as shape] [app.util.object :as obj] + [app.util.theme :as theme] [goog.functions :as gf])) (defmulti handle-state-change (fn [type _] type)) @@ -50,10 +51,23 @@ ::not-changed (apply array (map str new-selection))))) +(defn- get-theme + [state] + (let [theme (get-in state [:profile :theme])] + (cond + (or (not theme) (= theme "system")) + (theme/get-system-theme) + + (= theme "default") + "dark" + + :else + theme))) + (defmethod handle-state-change "themechange" [_ _ old-val new-val _] - (let [old-theme (get-in old-val [:profile :theme]) - new-theme (get-in new-val [:profile :theme])] + (let [old-theme (get-theme old-val) + new-theme (get-theme new-val)] (if (identical? old-theme new-theme) ::not-changed (if (= new-theme "default") From 5c4fd975419e36bc75c7fbc3a5afe6e2a5735e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 27 Jun 2025 11:32:14 +0200 Subject: [PATCH 2/3] :bug: Allow importing file without any token but with themes or sets (#6796) --- common/src/app/common/types/tokens_lib.cljc | 28 +++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/common/src/app/common/types/tokens_lib.cljc b/common/src/app/common/types/tokens_lib.cljc index e6ca9e89b5..dd64992312 100644 --- a/common/src/app/common/types/tokens_lib.cljc +++ b/common/src/app/common/types/tokens_lib.cljc @@ -1212,7 +1212,8 @@ Will return a value that matches this schema: "Searches through decoded token file and returns: - `:json-format/legacy` when first node satisfies `legacy-node?` predicate - `:json-format/dtcg` when first node satisfies `dtcg-node?` predicate - - `nil` if neither combination is found" + - If neither combination is found, return dtcg format by default (we assume that + the file does not contain any token, so the format is irrelevan)." ([decoded-json] (get-json-format decoded-json legacy-node? dtcg-node?)) ([decoded-json legacy-node? dtcg-node?] @@ -1230,9 +1231,10 @@ Will return a value that matches this schema: (check-node node) (when (branch? node) (mapcat walk (children node))))))] - (->> (walk decoded-json) - (filter some?) - first)))) ;; TODO: throw error if format cannot be determined + (d/nilv (->> (walk decoded-json) + (filter some?) + first) + :json-format/dtcg)))) (defn- legacy-json->dtcg-json "Converts a decoded json file in legacy format into DTCG format." @@ -1291,9 +1293,17 @@ Will return a value that matches this schema: [set-name decoded-json-tokens] (assert (map? decoded-json-tokens) "expected a plain clojure map for `decoded-json-tokens`") (assert (= (get-json-format decoded-json-tokens) :json-format/dtcg) "expected a dtcg format for `decoded-json-tokens`") - (-> (make-tokens-lib) - (add-set (make-token-set :name (normalize-set-name set-name) - :tokens (flatten-nested-tokens-json decoded-json-tokens ""))))) + + (let [set-name (normalize-set-name set-name) + tokens (flatten-nested-tokens-json decoded-json-tokens "")] + + (when (empty? tokens) + (throw (ex-info "the file doesn't contain any tokens" + {:error/code :error.import/invalid-json-data}))) + + (-> (make-tokens-lib) + (add-set (make-token-set :name set-name + :tokens tokens))))) (defn- parse-single-set-legacy-json "Parse a decoded json file with a single set of tokens in legacy format into a TokensLib." @@ -1385,6 +1395,10 @@ Will return a value that matches this schema: library active-theme-names)] + (when (and (empty? sets) (empty? themes)) + (throw (ex-info "the file doesn't contain any tokens" + {:error/code :error.import/invalid-json-data}))) + library)) (defn- parse-multi-set-legacy-json From a3aabf3b7de1a584095f2e894f254a7ae8b5b7eb Mon Sep 17 00:00:00 2001 From: Eva Marco Date: Wed, 2 Jul 2025 09:56:14 +0200 Subject: [PATCH 3/3] :bug: Fix tooltip position after click (#6830) --- CHANGES.md | 1 + .../src/app/main/ui/ds/tooltip/tooltip.cljs | 20 +++++++++---------- .../src/app/main/ui/ds/tooltip/tooltip.scss | 6 ++++++ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4f3266772d..aedaad7ed2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -61,6 +61,7 @@ on-premises instances** that want to keep up to date. - Fix shortcut error pressing G+W from the View Mode [Taiga #11061](https://tree.taiga.io/project/penpot/issue/11061) - Fix entering long project name [Taiga #11417](https://tree.taiga.io/project/penpot/issue/11417) - Fix slow color picker [Taiga #11019](https://tree.taiga.io/project/penpot/issue/11019) +- Fix tooltip position after click [Taiga #11405](https://tree.taiga.io/project/penpot/issue/11405) ## 2.7.2 diff --git a/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs b/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs index 92d3b7901e..59a96f8c4e 100644 --- a/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs +++ b/frontend/src/app/main/ui/ds/tooltip/tooltip.cljs @@ -36,8 +36,6 @@ (defn- hide-popover [node] - (dom/unset-css-property! node "block-size") - (dom/unset-css-property! node "display") (.hidePopover ^js node)) (defn- calculate-placement-bounding-rect @@ -159,11 +157,9 @@ (let [tooltip-brect (dom/get-bounding-rect tooltip) window-size (dom/get-window-size)] (when-let [[placement placement-rect] (find-matching-placement placement tooltip-brect origin-brect window-size offset)] - (let [height (if (or (= placement "right") (= placement "left")) (- (:height placement-rect) arrow-height) (:height placement-rect))] - (dom/set-css-property! tooltip "display" "grid") (dom/set-css-property! tooltip "block-size" (dm/str height "px")) (dom/set-css-property! tooltip "inset-block-start" (dm/str (:top placement-rect) "px")) (dom/set-css-property! tooltip "inset-inline-start" (dm/str (:left placement-rect) "px"))) @@ -212,8 +208,9 @@ update-position (fn [] - (let [placement (update-tooltip-position tooltip placement origin-brect offset)] - (reset! placement* placement)))] + (let [new-placement (update-tooltip-position tooltip placement origin-brect offset)] + (when (not= new-placement placement) + (reset! placement* new-placement))))] (add-schedule schedule-ref delay update-position))))) @@ -234,7 +231,7 @@ tooltip-class (stl/css-case - :tooltip true + :tooltip-content-wrapper true :tooltip-top (identical? placement "top") :tooltip-bottom (identical? placement "bottom") :tooltip-left (identical? placement "left") @@ -260,10 +257,11 @@ [:> :div props children - [:div {:class [class tooltip-class] + [:div {:class [class (stl/css :tooltip)] :id id :popover "auto" :role "tooltip"} - [:div {:class (stl/css :tooltip-content)} content] - [:div {:class (stl/css :tooltip-arrow) - :id "tooltip-arrow"}]]])) + [:div {:class tooltip-class} + [:div {:class (stl/css :tooltip-content)} content] + [:div {:class (stl/css :tooltip-arrow) + :id "tooltip-arrow"}]]]])) diff --git a/frontend/src/app/main/ui/ds/tooltip/tooltip.scss b/frontend/src/app/main/ui/ds/tooltip/tooltip.scss index ae97c8b17b..fcce788d33 100644 --- a/frontend/src/app/main/ui/ds/tooltip/tooltip.scss +++ b/frontend/src/app/main/ui/ds/tooltip/tooltip.scss @@ -19,6 +19,12 @@ $arrow-side: 12px; block-size: fit-content; } +.tooltip-content-wrapper { + display: grid; + inline-size: fit-content; + block-size: fit-content; +} + .tooltip-arrow { background-color: var(--color-background-primary); border-radius: var(--sp-xs);