mirror of
https://github.com/penpot/penpot.git
synced 2025-01-09 08:20:45 -05:00
🎉 Allow complex interactions
This commit is contained in:
parent
6c332b949b
commit
c7252a950b
16 changed files with 306 additions and 159 deletions
|
@ -185,9 +185,9 @@
|
|||
|
||||
;; Interactions
|
||||
|
||||
(s/def :internal.shape.interaction/event-type #{:click}) ; In the future we will have more options
|
||||
(s/def :internal.shape.interaction/action-type #{:navigate})
|
||||
(s/def :internal.shape.interaction/destination ::uuid)
|
||||
(s/def :internal.shape.interaction/event-type #{:click :hover})
|
||||
(s/def :internal.shape.interaction/action-type #{:navigate :open-overlay :close-overlay})
|
||||
(s/def :internal.shape.interaction/destination (s/nilable ::uuid))
|
||||
|
||||
(s/def :internal.shape/interaction
|
||||
(s/keys :req-un [:internal.shape.interaction/event-type
|
||||
|
@ -197,6 +197,11 @@
|
|||
(s/def :internal.shape/interactions
|
||||
(s/coll-of :internal.shape/interaction :kind vector?))
|
||||
|
||||
(def default-interaction
|
||||
{:event-type :click
|
||||
:action-type :navigate
|
||||
:destination nil})
|
||||
|
||||
;; Size constraints
|
||||
|
||||
(s/def :internal.shape/constraints-h #{:left :right :leftright :center :scale})
|
||||
|
|
|
@ -226,6 +226,10 @@
|
|||
color: $color-gray-20;
|
||||
font-size: $fs11;
|
||||
width: 64px;
|
||||
|
||||
&.wide {
|
||||
width: 110px;
|
||||
}
|
||||
}
|
||||
|
||||
.lock-size {
|
||||
|
|
|
@ -22,3 +22,28 @@
|
|||
width: 32px;
|
||||
}
|
||||
}
|
||||
|
||||
.interactions-summary {
|
||||
width: 100%;
|
||||
|
||||
.trigger-name {
|
||||
font-size: $fs12;
|
||||
color: $color-white;
|
||||
}
|
||||
|
||||
.action-summary {
|
||||
font-size: $fs11;
|
||||
color: $color-gray-20;
|
||||
}
|
||||
}
|
||||
|
||||
.interactions-element {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.element-label {
|
||||
color: $color-gray-20;
|
||||
font-size: $fs11;
|
||||
width: 64px;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@
|
|||
:selected (d/ordered-set)
|
||||
:expanded {}
|
||||
:tooltip nil
|
||||
:options-mode :design
|
||||
:options-mode :prototype ; OJOOOOOOOOOOOOOOOOOOOOOO============== :design
|
||||
:draw-interaction-to nil
|
||||
:left-sidebar? true
|
||||
:right-sidebar? true
|
||||
|
@ -1804,16 +1804,19 @@
|
|||
shape-id (-> state wsh/lookup-selected first)
|
||||
shape (get objects shape-id)]
|
||||
|
||||
(when-not (= position initial-pos)
|
||||
(if (and frame shape-id
|
||||
(not= (:id frame) (:id shape))
|
||||
(not= (:id frame) (:frame-id shape)))
|
||||
(rx/of (update-shape shape-id
|
||||
{:interactions [{:event-type :click
|
||||
:action-type :navigate
|
||||
:destination (:id frame)}]}))
|
||||
(rx/of (update-shape shape-id
|
||||
{:interactions []}))))))))
|
||||
(when (and shape (not (= position initial-pos)))
|
||||
(rx/of (dch/update-shapes [shape-id]
|
||||
(fn [shape]
|
||||
(update shape :interactions
|
||||
(fn [interactions]
|
||||
(if (and frame
|
||||
(not= (:id frame) (:id shape))
|
||||
(not= (:id frame) (:frame-id shape)))
|
||||
(conj interactions
|
||||
(assoc spec/default-interaction
|
||||
:destination (:id frame)))
|
||||
(vec (remove #(= (:action-type %) :navigate)
|
||||
interactions)))))))))))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; CANVAS OPTIONS
|
||||
|
|
|
@ -8,70 +8,148 @@
|
|||
(:require
|
||||
[app.common.data :as d]
|
||||
[app.common.pages :as cp]
|
||||
[app.common.pages.spec :as spec]
|
||||
[app.common.uuid :as uuid]
|
||||
[app.main.data.workspace :as dw]
|
||||
[app.main.refs :as refs]
|
||||
[app.main.store :as st]
|
||||
[app.main.ui.components.dropdown :refer [dropdown]]
|
||||
[app.main.ui.icons :as i]
|
||||
[app.util.dom :as dom]
|
||||
[app.util.i18n :as i18n :refer [tr]]
|
||||
[rumext.alpha :as mf]))
|
||||
|
||||
(mf/defc interactions-menu
|
||||
[{:keys [shape] :as props}]
|
||||
(let [objects (deref refs/workspace-page-objects)
|
||||
interaction (first (:interactions shape)) ; TODO: in the
|
||||
; future we may
|
||||
; have several
|
||||
; interactions in
|
||||
; one shape
|
||||
(defn- event-type-names
|
||||
[]
|
||||
{:click (tr "workspace.options.interaction-on-click")
|
||||
:hover (tr "workspace.options.interaction-while-hovering")})
|
||||
|
||||
(defn- event-type-name
|
||||
[interaction]
|
||||
(get (event-type-names) (:event-type interaction) "--"))
|
||||
|
||||
(defn- action-type-names
|
||||
[]
|
||||
{:navigate (tr "workspace.options.interaction-navigate-to")
|
||||
:open-overlay (tr "workspace.options.interaction-open-overlay")
|
||||
:close-overlay (tr "workspace.options.interaction-close-overlay")})
|
||||
|
||||
(defn- action-summary
|
||||
[interaction destination]
|
||||
(case (:action-type interaction)
|
||||
:navigate (tr "workspace.options.interaction-navigate-to-dest"
|
||||
(get destination :name (tr "workspace.options.interaction-none")))
|
||||
:open-overlay (tr "workspace.options.interaction-open-overlay-dest"
|
||||
(get destination :name (tr "workspace.options.interaction-none")))
|
||||
:close-overlay (tr "workspace.options.interaction-close-overlay-dest"
|
||||
(get destination :name (tr "workspace.options.interaction-self")))
|
||||
"--"))
|
||||
|
||||
(mf/defc interaction-entry
|
||||
[{:keys [index shape interaction update-interaction remove-interaction]}]
|
||||
(let [objects (deref refs/workspace-page-objects)
|
||||
destination (get objects (:destination interaction))
|
||||
frames (mf/use-memo (mf/deps objects)
|
||||
#(cp/select-frames objects))
|
||||
|
||||
show-frames-dropdown? (mf/use-state false)
|
||||
extended-open? (mf/use-state false)
|
||||
|
||||
on-set-blur #(reset! show-frames-dropdown? false)
|
||||
on-navigate #(when destination
|
||||
(st/emit! (dw/select-shapes (d/ordered-set (:id destination)))))
|
||||
change-event-type
|
||||
(fn [event]
|
||||
(let [value (-> event dom/get-target dom/get-value d/read-string)]
|
||||
(update-interaction index #(assoc % :event-type value))))
|
||||
|
||||
on-select-destination
|
||||
(fn [dest]
|
||||
(if (nil? dest)
|
||||
(st/emit! (dw/update-shape (:id shape) {:interactions []}))
|
||||
(st/emit! (dw/update-shape (:id shape) {:interactions [{:event-type :click
|
||||
:action-type :navigate
|
||||
:destination dest}]}))))]
|
||||
change-action-type
|
||||
(fn [event]
|
||||
(let [value (-> event dom/get-target dom/get-value d/read-string)]
|
||||
(update-interaction index #(assoc % :action-type value))))
|
||||
|
||||
(if (not shape)
|
||||
[:*
|
||||
[:div.interactions-help-icon i/interaction]
|
||||
[:div.interactions-help (tr "workspace.options.select-a-shape")]
|
||||
[:div.interactions-help-icon i/play]
|
||||
[:div.interactions-help (tr "workspace.options.use-play-button")]]
|
||||
|
||||
[:div.element-set {:on-blur on-set-blur}
|
||||
[:div.element-set-title
|
||||
[:span (tr "workspace.options.navigate-to")]]
|
||||
[:div.element-set-content
|
||||
[:div.row-flex
|
||||
[:div.custom-select.flex-grow {:on-click #(reset! show-frames-dropdown? true)}
|
||||
(if destination
|
||||
[:span (:name destination)]
|
||||
[:span (tr "workspace.options.select-artboard")])
|
||||
[:span.dropdown-button i/arrow-down]
|
||||
[:& dropdown {:show @show-frames-dropdown?
|
||||
:on-close #(reset! show-frames-dropdown? false)}
|
||||
[:ul.custom-select-dropdown
|
||||
[:li.dropdown-separator
|
||||
{:on-click #(on-select-destination nil)}
|
||||
(tr "workspace.options.none")]
|
||||
change-destination
|
||||
(fn [event]
|
||||
(let [value (-> event dom/get-target dom/get-value)
|
||||
value (when (not= value "") (uuid/uuid value))]
|
||||
(update-interaction index #(assoc % :destination value))))]
|
||||
|
||||
[:*
|
||||
[:div.element-set-options-group
|
||||
[:div.element-set-actions-button {:on-click #(swap! extended-open? not)}
|
||||
i/actions]
|
||||
[:div.interactions-summary
|
||||
[:div.trigger-name (event-type-name interaction)]
|
||||
[:div.action-summary (action-summary interaction destination)]]
|
||||
[:div.elemen-set-actions {:on-click #(remove-interaction index)}
|
||||
[:div.element-set-actions-button i/minus]]]
|
||||
(when @extended-open?
|
||||
[:div.element-set
|
||||
[:div.element-set-content
|
||||
[:div.interactions-element
|
||||
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-trigger")]
|
||||
[:select.input-select
|
||||
{:default-value (str (:event-type interaction))
|
||||
:on-change change-event-type}
|
||||
(for [[value name] (event-type-names)]
|
||||
[:option {:value (str value)} name])]]
|
||||
[:div.interactions-element
|
||||
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-action")]
|
||||
[:select.input-select
|
||||
{:default-value (str (:action-type interaction))
|
||||
:on-change change-action-type}
|
||||
(for [[value name] (action-type-names)]
|
||||
[:option {:value (str value)} name])]]
|
||||
[:div.interactions-element
|
||||
[:span.element-set-subtitle.wide (tr "workspace.options.interaction-destination")]
|
||||
[:select.input-select
|
||||
{:default-value (str (:destination interaction))
|
||||
:on-change change-destination}
|
||||
[:option {:value ""} (tr "workspace.options.interaction-none")]
|
||||
(for [frame frames]
|
||||
(when (and (not= (:id frame) (:id shape)) ; A frame cannot navigate to itself
|
||||
(not= (:id frame) (:frame-id shape))) ; nor a shape to its container frame
|
||||
[:li {:key (:id frame)
|
||||
:on-click #(on-select-destination (:id frame))}
|
||||
(:name frame)]))]]]
|
||||
[:span.navigate-icon {:style {:visibility (when (not destination) "hidden")}
|
||||
:on-click on-navigate} i/navigate]]]])))
|
||||
[:option {:value (str (:id frame))} (:name frame)]))]]]])]))
|
||||
|
||||
(mf/defc interactions-menu
|
||||
[{:keys [shape] :as props}]
|
||||
(let [interactions (get shape :interactions [])
|
||||
|
||||
add-interaction
|
||||
(fn [_]
|
||||
(let [new-interactions
|
||||
(conj interactions (update spec/default-interaction :event-type identity))]
|
||||
(st/emit! (dw/update-shape (:id shape) {:interactions new-interactions}))))
|
||||
|
||||
remove-interaction
|
||||
(fn [index]
|
||||
(let [new-interactions
|
||||
(into (subvec interactions 0 index)
|
||||
(subvec interactions (inc index)))]
|
||||
(st/emit! (dw/update-shape (:id shape) {:interactions new-interactions}))))
|
||||
|
||||
update-interaction
|
||||
(fn [index update-fn]
|
||||
(let [new-interactions (update interactions index update-fn)]
|
||||
(st/emit! (dw/update-shape (:id shape) {:interactions new-interactions})))) ]
|
||||
|
||||
[:div.element-set
|
||||
(when shape
|
||||
[:div.element-set-title
|
||||
[:span (tr "workspace.options.interactions")]
|
||||
[:div.add-page {:on-click add-interaction}
|
||||
i/plus]])
|
||||
|
||||
[:div.element-set-content
|
||||
(when (= (count interactions) 0)
|
||||
[:*
|
||||
(when shape
|
||||
[:*
|
||||
[:div.interactions-help-icon i/plus]
|
||||
[:div.interactions-help (tr "workspace.options.add-interaction")]])
|
||||
[:div.interactions-help-icon i/interaction]
|
||||
[:div.interactions-help (tr "workspace.options.select-a-shape")]
|
||||
[:div.interactions-help-icon i/play]
|
||||
[:div.interactions-help (tr "workspace.options.use-play-button")]])]
|
||||
(for [[index interaction] (d/enumerate interactions)]
|
||||
[:& interaction-entry {:index index
|
||||
:shape shape
|
||||
:interaction interaction
|
||||
:update-interaction update-interaction
|
||||
:remove-interaction remove-interaction}])]))
|
||||
|
||||
|
|
|
@ -2152,14 +2152,6 @@ msgstr "Agrupa les capes"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Capes seleccionades"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Vés a"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Cap"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Posició"
|
||||
|
@ -2719,4 +2711,4 @@ msgid "workspace.updates.update"
|
|||
msgstr "Actualitza"
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "Feu clic per a tancar el camí"
|
||||
msgstr "Feu clic per a tancar el camí"
|
||||
|
|
|
@ -1995,14 +1995,6 @@ msgstr "Ebenen gruppieren"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Ausgewählte Ebenen"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Navigiere zu"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Keine"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Position"
|
||||
|
@ -2523,4 +2515,4 @@ msgid "workspace.updates.update"
|
|||
msgstr "Aktualisieren"
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "Klicken Sie, um den Pfad zu schließen"
|
||||
msgstr "Klicken Sie, um den Pfad zu schließen"
|
||||
|
|
|
@ -1832,14 +1832,6 @@ msgstr "στρώματα Ομάδα"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Επιλεγμένα επίπεδα"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Μεταβείτε στο"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Κανένας"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Θέση"
|
||||
|
@ -2357,4 +2349,4 @@ msgid "workspace.updates.update"
|
|||
msgstr "Ενημέρωση"
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "Κάντε κλικ για να κλείσετε τη διαδρομή"
|
||||
msgstr "Κάντε κλικ για να κλείσετε τη διαδρομή"
|
||||
|
|
|
@ -2374,14 +2374,6 @@ msgstr "Group layers"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Selected layers"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Navigate to"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "None"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Position"
|
||||
|
@ -2405,6 +2397,66 @@ msgstr "Single corners"
|
|||
msgid "workspace.options.rotation"
|
||||
msgstr "Rotation"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.add-interaction"
|
||||
msgstr "Click the + button to add interactions."
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-action"
|
||||
msgstr "Action"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-close-overlay"
|
||||
msgstr "Close overlay"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-close-overlay-dest"
|
||||
msgstr "Close overlay: %s"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-destination"
|
||||
msgstr "Destination"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-navigate-to"
|
||||
msgstr "Navigate to"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-navigate-to-dest"
|
||||
msgstr "Navigate to: %s"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-none"
|
||||
msgstr "none"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-on-click"
|
||||
msgstr "On Click"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-open-overlay"
|
||||
msgstr "Open overlay"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-open-overlay-dest"
|
||||
msgstr "Open overlay: %s"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-self"
|
||||
msgstr "self"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-trigger"
|
||||
msgstr "Trigger"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-while-hovering"
|
||||
msgstr "While Hovering"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interactions"
|
||||
msgstr "Interactions"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.select-a-shape"
|
||||
msgstr "Select a shape, artboard or group to drag a connection to other artboard."
|
||||
|
|
|
@ -2257,14 +2257,6 @@ msgstr "Capas de grupo"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Capas seleccionadas"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Navegar a"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Ninguno"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Posición"
|
||||
|
@ -2288,6 +2280,66 @@ msgstr "Esquinas individuales"
|
|||
msgid "workspace.options.rotation"
|
||||
msgstr "Rotación"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.add-interaction"
|
||||
msgstr "Pulsa el botón + para añadir interacciones."
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-action"
|
||||
msgstr "Acción"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-close-overlay"
|
||||
msgstr "Close overlay"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-close-overlay-dest"
|
||||
msgstr "Close overlay: %s"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-destination"
|
||||
msgstr "Destino"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-navigate-to"
|
||||
msgstr "Navigate to"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-navigate-to-dest"
|
||||
msgstr "Navigate to: %s"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-none"
|
||||
msgstr "none"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-on-click"
|
||||
msgstr "On Click"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-open-overlay"
|
||||
msgstr "Open overlay"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-open-overlay-dest"
|
||||
msgstr "Open overlay: %s"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-self"
|
||||
msgstr "self"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-trigger"
|
||||
msgstr "Trigger"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interaction-while-hovering"
|
||||
msgstr "While Hovering"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.interactions"
|
||||
msgstr "Interacciones"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.select-a-shape"
|
||||
msgstr ""
|
||||
|
|
|
@ -2157,14 +2157,6 @@ msgstr "Grouper les calques"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Calques sélectionnés"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Naviguer vers"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Position"
|
||||
|
@ -2723,4 +2715,4 @@ msgid "workspace.updates.update"
|
|||
msgstr "Actualiser"
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "Cliquez pour fermer le chemin"
|
||||
msgstr "Cliquez pour fermer le chemin"
|
||||
|
|
|
@ -1662,14 +1662,6 @@ msgstr "Camadas do grupo"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Camadas selecionadas"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Navegar para"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Nenhum"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Posição"
|
||||
|
@ -1993,4 +1985,4 @@ msgid "workspace.updates.update"
|
|||
msgstr "Atualizar"
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "Clique para fechar o caminho"
|
||||
msgstr "Clique para fechar o caminho"
|
||||
|
|
|
@ -2048,14 +2048,6 @@ msgstr "Grupează layere"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Layere selectate"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Navighează la"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Nici unul"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Poziţie"
|
||||
|
@ -2610,4 +2602,4 @@ msgid "workspace.updates.update"
|
|||
msgstr "Actualizează"
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "Click pentru a închide calea"
|
||||
msgstr "Click pentru a închide calea"
|
||||
|
|
|
@ -957,14 +957,6 @@ msgstr "Заливка для группы"
|
|||
msgid "workspace.options.group-stroke"
|
||||
msgstr "Обводка для группы"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Перейти к"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Не задано"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Позиция"
|
||||
|
@ -1184,4 +1176,4 @@ msgid "workspace.updates.update"
|
|||
msgstr ""
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "Кликни чтобы закончить фигуру"
|
||||
msgstr "Кликни чтобы закончить фигуру"
|
||||
|
|
|
@ -2029,14 +2029,6 @@ msgstr "Katman grubu"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "Seçili katmanlar"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "Git"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "Hiç biri"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "Konum"
|
||||
|
@ -2539,4 +2531,4 @@ msgstr "Paylaşılmış kütüphanelerde güncellemeler mevcut"
|
|||
|
||||
#: src/app/main/data/workspace/libraries.cljs
|
||||
msgid "workspace.updates.update"
|
||||
msgstr "Güncelle"
|
||||
msgstr "Güncelle"
|
||||
|
|
|
@ -2101,14 +2101,6 @@ msgstr "图层成组"
|
|||
msgid "workspace.options.layer-options.title.multiple"
|
||||
msgstr "已选中的图层"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.navigate-to"
|
||||
msgstr "导航到"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
|
||||
msgid "workspace.options.none"
|
||||
msgstr "无"
|
||||
|
||||
#: src/app/main/ui/workspace/sidebar/options/shapes/frame.cljs, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs
|
||||
msgid "workspace.options.position"
|
||||
msgstr "位置"
|
||||
|
@ -2655,4 +2647,4 @@ msgid "workspace.updates.update"
|
|||
msgstr "更新"
|
||||
|
||||
msgid "workspace.viewport.click-to-close-path"
|
||||
msgstr "单击以闭合路径"
|
||||
msgstr "单击以闭合路径"
|
||||
|
|
Loading…
Reference in a new issue