From 1e898f94f30c4117716503de7c6d8c4ac41760cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Mon, 27 Apr 2020 14:31:57 +0200 Subject: [PATCH] :tada: Add basic interaction to shapes --- common/uxbox/common/data.cljc | 10 +- common/uxbox/common/pages.cljc | 16 +- docs/02-Frontend-Developer-Guide.md | 13 +- .../resources/images/icons/interaction.svg | 1 + frontend/resources/images/icons/navigate.svg | 1 + frontend/resources/locales.json | 311 +++++++++++++----- frontend/resources/styles/main-default.scss | 1 + .../partials/sidebar-element-options.scss | 32 +- .../main/partials/sidebar-interactions.scss | 18 + .../styles/main/partials/sidebar.scss | 4 +- .../styles/main/partials/viewer-header.scss | 60 +++- frontend/src/uxbox/builtins/icons.cljs | 2 + frontend/src/uxbox/main/data/viewer.cljs | 53 ++- frontend/src/uxbox/main/data/workspace.cljs | 15 +- frontend/src/uxbox/main/exports.cljs | 32 ++ frontend/src/uxbox/main/refs.cljs | 34 +- frontend/src/uxbox/main/ui/shapes/circle.cljs | 38 ++- frontend/src/uxbox/main/ui/shapes/common.cljs | 19 +- frontend/src/uxbox/main/ui/shapes/frame.cljs | 16 + frontend/src/uxbox/main/ui/shapes/icon.cljs | 47 ++- frontend/src/uxbox/main/ui/shapes/image.cljs | 44 ++- frontend/src/uxbox/main/ui/shapes/path.cljs | 44 ++- frontend/src/uxbox/main/ui/shapes/rect.cljs | 40 ++- frontend/src/uxbox/main/ui/shapes/text.cljs | 44 ++- frontend/src/uxbox/main/ui/viewer.cljs | 30 +- .../uxbox/main/ui/viewer/frame_viewer.cljs | 104 ++++++ frontend/src/uxbox/main/ui/viewer/header.cljs | 26 +- .../src/uxbox/main/ui/viewer/thumbnails.cljs | 34 +- .../main/ui/workspace/sidebar/options.cljs | 60 ++-- .../ui/workspace/sidebar/options/frame.cljs | 6 +- .../sidebar/options/interactions.cljs | 89 +++-- frontend/src/uxbox/util/debug.cljs | 6 +- 32 files changed, 1024 insertions(+), 226 deletions(-) create mode 100644 frontend/resources/images/icons/interaction.svg create mode 100644 frontend/resources/images/icons/navigate.svg create mode 100644 frontend/src/uxbox/main/ui/viewer/frame_viewer.cljs diff --git a/common/uxbox/common/data.cljc b/common/uxbox/common/data.cljc index d1c4bb607..48ec9b884 100644 --- a/common/uxbox/common/data.cljc +++ b/common/uxbox/common/data.cljc @@ -64,19 +64,23 @@ (persistent! (reduce #(assoc! %1 (getter %2) %2) (transient {}) coll))) -(defn index-of - [coll v] +(defn index-of-pred + [coll pred] (loop [c (first coll) coll (rest coll) index 0] (if (nil? c) nil - (if (= c v) + (if (pred c) index (recur (first coll) (rest coll) (inc index)))))) +(defn index-of + [coll v] + (index-of-pred coll #(= % v))) + (defn remove-nil-vals "Given a map, return a map removing key-value pairs when value is `nil`." diff --git a/common/uxbox/common/pages.cljc b/common/uxbox/common/pages.cljc index 27fa2431e..89cac2cef 100644 --- a/common/uxbox/common/pages.cljc +++ b/common/uxbox/common/pages.cljc @@ -135,6 +135,19 @@ ::grid-x ::grid-color])) +;; Interactions + +(s/def ::event-type #{:click}) ; In the future we will have more options +(s/def ::action-type #{:navigate}) +(s/def ::destination uuid?) + +(s/def ::interaction + (s/keys :req-un [::event-type + ::action-type + ::destination])) + +(s/def ::interactions (s/coll-of ::interaction :kind vector?)) + ;; Page Data related (s/def ::blocked boolean?) (s/def ::collapsed boolean?) @@ -194,7 +207,8 @@ ::stroke-width ::stroke-alignment ::text-align - ::width ::height])) + ::width ::height + ::interactions])) (s/def ::minimal-shape (s/keys :req-un [::type ::name] diff --git a/docs/02-Frontend-Developer-Guide.md b/docs/02-Frontend-Developer-Guide.md index 6f5b2b58f..006ba681a 100644 --- a/docs/02-Frontend-Developer-Guide.md +++ b/docs/02-Frontend-Developer-Guide.md @@ -26,12 +26,19 @@ You can deactivate debug mode with (-debug!