mirror of
https://github.com/penpot/penpot.git
synced 2025-03-12 07:41:43 -05:00
Add some interactions to group entry on layers toolbox.
This commit is contained in:
parent
0d0a94e594
commit
304a8ab74f
1 changed files with 30 additions and 15 deletions
|
@ -159,31 +159,46 @@
|
||||||
|
|
||||||
(defn- layer-group-render
|
(defn- layer-group-render
|
||||||
[own item selected]
|
[own item selected]
|
||||||
(let [selected? (contains? selected (:id item))
|
(let [local (:rum/local own)
|
||||||
|
selected? (contains? selected (:id item))
|
||||||
|
open? (:open @local true)
|
||||||
|
select #(select-shape selected item %)
|
||||||
|
toggle-visibility #(toggle-visibility selected item %)
|
||||||
|
toggle-blocking #(toggle-blocking item %)
|
||||||
|
toggle-open (fn [event]
|
||||||
|
(dom/stop-propagation event)
|
||||||
|
(swap! local assoc :open (not open?)))
|
||||||
shapes-by-id (rum/react shapes-by-id)]
|
shapes-by-id (rum/react shapes-by-id)]
|
||||||
(html
|
(html
|
||||||
[:li.group.open
|
[:li.group {:class (when open? "open")}
|
||||||
[:div.element-list-body {:class (when selected? "selected")}
|
[:div.element-list-body {:class (when selected? "selected")
|
||||||
|
:on-click select}
|
||||||
[:div.element-actions
|
[:div.element-actions
|
||||||
[:div.toggle-element i/eye]
|
[:div.toggle-element {:class (when-not (:hidden item) "selected")
|
||||||
[:div.block-element i/lock]
|
:on-click toggle-visibility}
|
||||||
|
i/eye]
|
||||||
|
[:div.block-element {:class (when (:blocked item) "selected")
|
||||||
|
:on-click toggle-blocking}
|
||||||
|
i/lock]
|
||||||
[:div.chain-element i/chain]]
|
[:div.chain-element i/chain]]
|
||||||
[:div.element-icon i/folder]
|
[:div.element-icon i/folder]
|
||||||
[:span "Opened group"]
|
[:span (:name item "Unnamed group")]
|
||||||
[:span.toggle-content i/arrow-slide]]
|
[:span.toggle-content {:on-click toggle-open}
|
||||||
[:ul
|
i/arrow-slide]]
|
||||||
(for [shape (map #(get shapes-by-id %) (:items item))
|
(if open?
|
||||||
:let [key (str (:id shape))]]
|
[:ul
|
||||||
;; TODO: make polymorphic
|
(for [shape (map #(get shapes-by-id %) (:items item))
|
||||||
(case (:type shape)
|
:let [key (str (:id shape))]]
|
||||||
:builtin/icon (rum/with-key (layer-element shape selected) key)
|
;; TODO: make polymorphic
|
||||||
:builtin/group (rum/with-key (layer-group shape selected) key)))]])))
|
(case (:type shape)
|
||||||
|
:builtin/icon (rum/with-key (layer-element shape selected) key)
|
||||||
|
:builtin/group (rum/with-key (layer-group shape selected) key)))])])))
|
||||||
|
|
||||||
(def ^:static ^:private layer-group
|
(def ^:static ^:private layer-group
|
||||||
(mx/component
|
(mx/component
|
||||||
{:render layer-group-render
|
{:render layer-group-render
|
||||||
:name "layer-group"
|
:name "layer-group"
|
||||||
:mixins [mx/static rum/reactive]}))
|
:mixins [mx/static rum/reactive (mx/local)]}))
|
||||||
|
|
||||||
(defn layers-render
|
(defn layers-render
|
||||||
[own]
|
[own]
|
||||||
|
|
Loading…
Add table
Reference in a new issue