From f69e141ac1964d93c1a355dd329b1e1adb355a73 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Thu, 24 Aug 2023 11:35:57 +0200 Subject: [PATCH 1/8] :sparkles: Navigate up in layer lierarchy with Shift+Enter shortcut --- CHANGES.md | 6 ++++++ frontend/src/app/main/data/workspace.cljs | 17 +++++++++++++++++ .../src/app/main/data/workspace/shortcuts.cljs | 4 ++++ frontend/translations/en.po | 3 +++ frontend/translations/es.po | 3 +++ version.txt | 2 +- 6 files changed, 34 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 5e28382c6d..f6abff4001 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # CHANGELOG +## 1.19.2 + +### :sparkles: New features + +- Navigate up in layer lierarchy with Shift+Enter shortcut [Taiga #5734](https://tree.taiga.io/project/penpot/us/5734) + ## 1.19.1 ### :bug: Bugs fixed diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 777a034379..5643942190 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -988,6 +988,23 @@ (rx/of (dwe/start-edition-mode id) (dwdp/start-path-edit id))))))))) +(defn select-parent-layer + [] + (ptk/reify ::select-parent-layer + ptk/WatchEvent + (watch [_ state _] + (let [selected (wsh/lookup-selected state) + objects (wsh/lookup-page-objects state) + shapes-to-select + (->> selected + (reduce + (fn [result shape-id] + (let [parent-id (dm/get-in objects [shape-id :parent-id])] + (if (and (some? parent-id) (not= parent-id uuid/zero)) + (conj result parent-id) + (conj result shape-id)))) + (d/ordered-set)))] + (rx/of (dws/select-shapes shapes-to-select)))))) ;; --- Change Page Order (D&D Ordering) diff --git a/frontend/src/app/main/data/workspace/shortcuts.cljs b/frontend/src/app/main/data/workspace/shortcuts.cljs index 4cf059c95a..e3b56e18e5 100644 --- a/frontend/src/app/main/data/workspace/shortcuts.cljs +++ b/frontend/src/app/main/data/workspace/shortcuts.cljs @@ -509,6 +509,10 @@ :subsections [:navigation-workspace] :fn #(st/emit! (dw/select-next-shape))} + :select-parent-layer {:tooltip (ds/shift ds/enter) + :command "shift+enter" + :subsections [:navigation-workspace] + :fn #(emit-when-no-readonly (dw/select-parent-layer))} ;; SHAPE diff --git a/frontend/translations/en.po b/frontend/translations/en.po index 27fc408705..0605e8cd09 100644 --- a/frontend/translations/en.po +++ b/frontend/translations/en.po @@ -2704,6 +2704,9 @@ msgstr "Snap to pixel grid" msgid "shortcuts.start-editing" msgstr "Start editing" +msgid "shortcuts.select-parent-layer" +msgstr "Select parent layer" + msgid "shortcuts.start-measure" msgstr "Start measurement" diff --git a/frontend/translations/es.po b/frontend/translations/es.po index 8076484d0a..0bab82043b 100644 --- a/frontend/translations/es.po +++ b/frontend/translations/es.po @@ -2778,6 +2778,9 @@ msgstr "Activar alineación a rejilla de pixel" msgid "shortcuts.start-editing" msgstr "Comenzar edición" +msgid "shortcuts.select-parent-layer" +msgstr "Seleccionar capa padre" + msgid "shortcuts.start-measure" msgstr "Comenzar medida" diff --git a/version.txt b/version.txt index 66e2ae6c25..836ae4eda2 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.19.1 +1.19.2 From 8593ca13104f3f8affa97c88d5efb39c414f78fa Mon Sep 17 00:00:00 2001 From: Aitor Date: Thu, 24 Aug 2023 13:31:06 +0200 Subject: [PATCH 2/8] :bug: Fix scroll automatically to layer item --- CHANGES.md | 2 +- frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index f6abff4001..467f7afaf8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,7 +4,7 @@ ### :sparkles: New features -- Navigate up in layer lierarchy with Shift+Enter shortcut [Taiga #5734](https://tree.taiga.io/project/penpot/us/5734) +- Navigate up in layer hierarchy with Shift+Enter shortcut [Taiga #5734](https://tree.taiga.io/project/penpot/us/5734) ## 1.19.1 diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs index ca4e022c87..b4cc9c145d 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs @@ -175,6 +175,7 @@ ;; seek for an alternate solution. Maybe use-context? scroll-node (dom/get-parent-with-data node "scrollContainer") parent-node (dom/get-parent-at node 2) + first-child-node (dom/get-first-child parent-node) subid (when (and single? selected?) @@ -184,9 +185,9 @@ #(let [scroll-distance-ratio (dom/get-scroll-distance-ratio node scroll-node) scroll-behavior (if (> scroll-distance-ratio 1) "instant" "smooth")] (if scroll-to - (dom/scroll-into-view! parent-node #js {:block "center" :behavior scroll-behavior :inline "start"}) + (dom/scroll-into-view! first-child-node #js {:block "center" :behavior scroll-behavior :inline "start"}) (do - (dom/scroll-into-view-if-needed! parent-node #js {:block "center" :behavior scroll-behavior :inline "start"}) + (dom/scroll-into-view-if-needed! first-child-node #js {:block "center" :behavior scroll-behavior :inline "start"}) (reset! scroll-to-middle? true)))))))] #(when (some? subid) From b82ce671b97ba422590dc89126af5e37669cec68 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 25 Aug 2023 10:54:34 +0200 Subject: [PATCH 3/8] :bug: Fix alt+l shortcuts --- frontend/src/app/main/data/workspace.cljs | 2 +- frontend/src/app/main/data/workspace/shortcuts.cljs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 5643942190..05c5f6f21c 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -1119,7 +1119,7 @@ (defn toggle-proportion-lock [] - (ptk/reify ::toggle-propotion-lock + (ptk/reify ::toggle-proportion-lock ptk/WatchEvent (watch [_ state _] (let [page-id (:current-page-id state) diff --git a/frontend/src/app/main/data/workspace/shortcuts.cljs b/frontend/src/app/main/data/workspace/shortcuts.cljs index e3b56e18e5..81ce9781f7 100644 --- a/frontend/src/app/main/data/workspace/shortcuts.cljs +++ b/frontend/src/app/main/data/workspace/shortcuts.cljs @@ -279,8 +279,8 @@ :subsections [:tools] :fn #(emit-when-no-readonly (dw/toggle-lock-selected))} - :toggle-lock-size {:tooltip (ds/meta (ds/alt "L")) - :command (ds/c-mod "alt+l") + :toggle-lock-size {:tooltip (ds/shift "L") + :command "shift+l" :subsections [:tools] :fn #(emit-when-no-readonly (dw/toggle-proportion-lock))} From 866920708694147fac128ebf0e0e2652048b6113 Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Fri, 25 Aug 2023 11:30:00 +0200 Subject: [PATCH 4/8] :sparkles: Click on flow tag open viewer --- CHANGES.md | 1 + .../main/partials/sidebar-interactions.scss | 4 +++- frontend/src/app/main/data/viewer.cljs | 16 +++++++++++----- frontend/src/app/main/data/workspace.cljs | 6 ++++-- frontend/src/app/main/ui.cljs | 5 +++-- .../app/main/ui/workspace/viewport/widgets.cljs | 6 ++++-- 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 467f7afaf8..a644582487 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,7 @@ ### :sparkles: New features - Navigate up in layer hierarchy with Shift+Enter shortcut [Taiga #5734](https://tree.taiga.io/project/penpot/us/5734) +- Click on the flow tags open viewer with the selected frame [Taiga #5044](https://tree.taiga.io/project/penpot/us/5044) ## 1.19.1 diff --git a/frontend/resources/styles/main/partials/sidebar-interactions.scss b/frontend/resources/styles/main/partials/sidebar-interactions.scss index 8c164535c2..77c39c9a95 100644 --- a/frontend/resources/styles/main/partials/sidebar-interactions.scss +++ b/frontend/resources/styles/main/partials/sidebar-interactions.scss @@ -176,6 +176,7 @@ } .flow-badge { + cursor: pointer; display: flex; & .content { @@ -199,7 +200,8 @@ } } - &.selected .content { + &.selected .content, + &:hover .content { background-color: $color-primary; & svg { diff --git a/frontend/src/app/main/data/viewer.cljs b/frontend/src/app/main/data/viewer.cljs index 40df6b66c5..68e958aa1d 100644 --- a/frontend/src/app/main/data/viewer.cljs +++ b/frontend/src/app/main/data/viewer.cljs @@ -155,6 +155,8 @@ (rx/of (df/fonts-fetched fonts) (bundle-fetched (merge bundle params)))))))))) +(declare go-to-frame) +(declare go-to-frame-by-index) (declare go-to-frame-auto) (defn bundle-fetched @@ -182,16 +184,20 @@ ptk/WatchEvent (watch [_ state _] - (let [route (:route state) - qparams (:query-params route) - index (:index qparams)] + (let [route (:route state) + qparams (:query-params route) + index (:index qparams) + frame-id (:frame-id qparams)] (rx/merge (rx/of (case (:zoom qparams) "fit" zoom-to-fit "fill" zoom-to-fill nil)) - (when (nil? index) - (rx/of (go-to-frame-auto))))))))) + (rx/of + (cond + (some? frame-id) (go-to-frame (uuid frame-id)) + (some? index) (go-to-frame-by-index index) + :else (go-to-frame-auto))))))))) (defn fetch-comment-threads [{:keys [file-id page-id share-id] :as params}] diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 5643942190..b441bd7070 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -1376,7 +1376,7 @@ (defn go-to-viewer ([] (go-to-viewer {})) - ([{:keys [file-id page-id section]}] + ([{:keys [file-id page-id section frame-id]}] (ptk/reify ::go-to-viewer ptk/WatchEvent (watch [_ state _] @@ -1384,7 +1384,9 @@ pparams {:file-id (or file-id current-file-id)} qparams (cond-> {:page-id (or page-id current-page-id)} (some? section) - (assoc :section section))] + (assoc :section section) + (some? frame-id) + (assoc :frame-id frame-id))] (rx/of ::dwp/force-persist (rt/nav-new-window* {:rname :viewer :path-params pparams diff --git a/frontend/src/app/main/ui.cljs b/frontend/src/app/main/ui.cljs index 93c848be83..048c6cc9a6 100644 --- a/frontend/src/app/main/ui.cljs +++ b/frontend/src/app/main/ui.cljs @@ -106,7 +106,7 @@ :viewer (let [{:keys [query-params path-params]} route - {:keys [index share-id section page-id interactions-mode] :or {section :interactions interactions-mode :show-on-click}} query-params + {:keys [index share-id section page-id interactions-mode frame-id] :or {section :interactions interactions-mode :show-on-click}} query-params {:keys [file-id]} path-params] (if (:token query-params) [:& viewer/breaking-change-notice] @@ -119,7 +119,8 @@ :interactions-show? (case (keyword interactions-mode) :hide false :show true - :show-on-click false)}])) + :show-on-click false) + :frame-id frame-id}])) :workspace (let [project-id (some-> params :path :project-id uuid) diff --git a/frontend/src/app/main/ui/workspace/viewport/widgets.cljs b/frontend/src/app/main/ui/workspace/viewport/widgets.cljs index 7755d080ae..71294dd084 100644 --- a/frontend/src/app/main/ui/workspace/viewport/widgets.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/widgets.cljs @@ -222,11 +222,13 @@ (mf/use-callback (mf/deps (:id frame) on-frame-select) (fn [bevent] - (let [event (.-nativeEvent bevent)] + (let [event (.-nativeEvent bevent) + params {:section "interactions" + :frame-id (:id frame)}] (when (= 1 (.-which event)) (dom/prevent-default event) (dom/stop-propagation event) - (on-frame-select event (:id frame)))))) + (st/emit! (dw/go-to-viewer params)))))) on-double-click (mf/use-callback From ddbc8283427922046c0c7471663f24cfffb4b3e6 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 23 Aug 2023 11:39:08 +0200 Subject: [PATCH 5/8] :bug: Fix unexpected output on get-page when invalid object-id is provided --- CHANGES.md | 4 ++++ backend/src/app/rpc/commands/files.clj | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index a644582487..7d009faa5a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,10 @@ - Navigate up in layer hierarchy with Shift+Enter shortcut [Taiga #5734](https://tree.taiga.io/project/penpot/us/5734) - Click on the flow tags open viewer with the selected frame [Taiga #5044](https://tree.taiga.io/project/penpot/us/5044) +### :bug: Bugs fixed + +- Fix unexpected output on get-page rpc method when invalid object-id is provided [Github #3546](https://github.com/penpot/penpot/issues/3546) + ## 1.19.1 ### :bug: Bugs fixed diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj index 83cbfed23d..54fb909ad4 100644 --- a/backend/src/app/rpc/commands/files.clj +++ b/backend/src/app/rpc/commands/files.clj @@ -498,7 +498,8 @@ other not needed objects removed from the `:objects` data structure." [{:keys [objects] :as page} object-id] - (let [objects (cph/get-children-with-self objects object-id)] + (let [objects (->> (cph/get-children-with-self objects object-id) + (filter some?))] (assoc page :objects (d/index-by :id objects)))) (defn- prune-thumbnails From 514ba6604b78edaf8e7142244090f230966829ec Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 29 Aug 2023 11:41:40 +0200 Subject: [PATCH 6/8] :bug: Fix invalid file amount after moving files --- CHANGES.md | 1 + frontend/src/app/main/data/dashboard.cljs | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 7d009faa5a..273773cb1e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -10,6 +10,7 @@ ### :bug: Bugs fixed - Fix unexpected output on get-page rpc method when invalid object-id is provided [Github #3546](https://github.com/penpot/penpot/issues/3546) +- Fix Invalid files amount after moving file from Project to Drafts [Taiga #5638](https://tree.taiga.io/project/penpot/us/5638) ## 1.19.1 diff --git a/frontend/src/app/main/data/dashboard.cljs b/frontend/src/app/main/data/dashboard.cljs index 7d0e4cce8a..eb84a8e4d2 100644 --- a/frontend/src/app/main/data/dashboard.cljs +++ b/frontend/src/app/main/data/dashboard.cljs @@ -891,13 +891,13 @@ ptk/UpdateEvent (update [_ state] (let [origin-project (get-in state [:dashboard-files (first ids) :project-id]) - update-project (fn [project delta] + update-project (fn [project delta op] (-> project - (update :count #(+ % (count ids))) + (update :count #(op % (count ids))) (assoc :modified-at (dt/plus (dt/now) {:milliseconds delta}))))] (-> state - (d/update-in-when [:dashboard-projects origin-project] update-project 0) - (d/update-in-when [:dashboard-projects project-id] update-project 10)))) + (d/update-in-when [:dashboard-projects origin-project] update-project 0 -) + (d/update-in-when [:dashboard-projects project-id] update-project 10 +)))) ptk/WatchEvent (watch [_ _ _] From 53d1624f3f848d025d7a4fe3341ff820aae2b33b Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 29 Aug 2023 12:35:44 +0200 Subject: [PATCH 7/8] :bug: Fix deleted pages comments shown in right sidebar --- CHANGES.md | 1 + frontend/src/app/main/data/comments.cljs | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 273773cb1e..e9e98fa3a4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ - Fix unexpected output on get-page rpc method when invalid object-id is provided [Github #3546](https://github.com/penpot/penpot/issues/3546) - Fix Invalid files amount after moving file from Project to Drafts [Taiga #5638](https://tree.taiga.io/project/penpot/us/5638) +- Fix deleted pages comments shown in right sidebar [Taiga #5648](https://tree.taiga.io/project/penpot/us/5648) ## 1.19.1 diff --git a/frontend/src/app/main/data/comments.cljs b/frontend/src/app/main/data/comments.cljs index 46bf3c7521..4ea5796be7 100644 --- a/frontend/src/app/main/data/comments.cljs +++ b/frontend/src/app/main/data/comments.cljs @@ -279,7 +279,9 @@ (assoc-in (conj path :position) (:position comment-thread)) (assoc-in (conj path :frame-id) (:frame-id comment-thread)))))) (fetched [[users comments] state] - (let [state (-> state + (let [pages (get-in state [:workspace-data :pages-index]) + comments (filter #(some? (get pages (:page-id %))) comments) + state (-> state (assoc :comment-threads (d/index-by :id comments)) (update :current-file-comments-users merge (d/index-by :id users)))] (reduce set-comment-threds state comments)))] From dc813732c3bc5152c463a87405ca8ba15daffb7f Mon Sep 17 00:00:00 2001 From: Eva Date: Tue, 29 Aug 2023 08:15:38 +0200 Subject: [PATCH 8/8] :bug: Fix tooltip on toggle visibility and toggle lock buttons --- CHANGES.md | 1 + frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index e9e98fa3a4..b84fa73fb5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -12,6 +12,7 @@ - Fix unexpected output on get-page rpc method when invalid object-id is provided [Github #3546](https://github.com/penpot/penpot/issues/3546) - Fix Invalid files amount after moving file from Project to Drafts [Taiga #5638](https://tree.taiga.io/project/penpot/us/5638) - Fix deleted pages comments shown in right sidebar [Taiga #5648](https://tree.taiga.io/project/penpot/us/5648) +- Fix tooltip on toggle visibility and toggle lock buttons [Taiga #5141](https://tree.taiga.io/project/penpot/issue/5141) ## 1.19.1 diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs index b4cc9c145d..6fc02c8766 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs @@ -22,6 +22,7 @@ [app.main.ui.icons :as i] [app.main.ui.workspace.sidebar.layer-name :refer [layer-name]] [app.util.dom :as dom] + [app.util.i18n :refer [tr]] [app.util.keyboard :as kbd] [app.util.timers :as ts] [beicon.core :as rx] @@ -269,10 +270,16 @@ (css :selected) (:blocked item))} [:button {:class (dom/classnames (css :toggle-element) true (css :selected) (:hidden item)) + :title (if (:hidden item) + (tr "workspace.shape.menu.show") + (tr "workspace.shape.menu.hide")) :on-click toggle-visibility} (if (:hidden item) i/hide-refactor i/shown-refactor)] [:button {:class (dom/classnames (css :block-element) true (css :selected) (:blocked item)) + :title (if (:blocked item) + (tr "workspace.shape.menu.unlock") + (tr "workspace.shape.menu.lock")) :on-click toggle-blocking} (if (:blocked item) i/lock-refactor i/unlock-refactor)]]]] (when (and (:shapes item) expanded?)