diff --git a/CHANGES.md b/CHANGES.md index 5e28382c6d..467f7afaf8 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # CHANGELOG +## 1.19.2 + +### :sparkles: New features + +- Navigate up in layer hierarchy 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/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) 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