0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-10 14:51:37 -05:00

Add basic selection interactions to layers toolbox.

This commit is contained in:
Andrey Antukh 2016-01-12 19:55:46 +02:00
parent 29b0036248
commit f39d2d57a8
3 changed files with 26 additions and 5 deletions

View file

@ -105,4 +105,3 @@
:transfer-state workspace-transfer-state
:name "workspace"
:mixins [mx/static rum/reactive wshortcuts/mixin]}))

View file

@ -24,7 +24,7 @@
(def ^:static pages-l
(as-> (ul/getter #(let [pid (get-in % [:workspace :project])]
(dp/project-pages % pid))) $
(dp/project-pages % pid))) $
(l/focus-atom $ st/state)))
(def ^:static workspace-l

View file

@ -87,13 +87,35 @@
;; Layers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- select-shape
[selected item event]
(dom/prevent-default event)
(let [id (:id item)]
(cond
(.-ctrlKey event)
(rs/emit! (dw/select-shape id))
(> (count selected) 1)
(rs/emit! (dw/deselect-all)
(dw/select-shape id))
(contains? selected id)
(rs/emit! (dw/select-shape id))
:else
(rs/emit! (dw/deselect-all)
(dw/select-shape id)))))
(defn- layer-element-render
[own item selected]
(let [selected? (contains? selected (:id item))]
(let [selected? (contains? selected (:id item))
select #(select-shape selected item %)]
(html
[:li {:key (str (:id item))}
[:li {:key (str (:id item))
:on-click select
:class (when selected? "selected")}
[:div.element-actions
[:div.toggle-element i/eye]
[:div.toggle-element {:class "selected"} i/eye]
[:div.block-element i/lock]]
[:div.element-icon i/box]
[:span (or (:name item)