0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-08 08:09:14 -05:00

Allow tokens sets component to be controlled

This commit is contained in:
Florian Schroedl 2024-08-23 16:34:33 +02:00
parent 1c0233098d
commit 8a20e3a698
2 changed files with 31 additions and 10 deletions

View file

@ -96,9 +96,24 @@
(mf/defc edit-theme
[{:keys [state]}]
(let [{:keys [theme]} @state]
(let [{:keys [theme]} @state
token-sets (mf/deref refs/workspace-token-sets)
selected-token-set-id (mf/deref refs/workspace-selected-token-set-id)
token-set-selected? (mf/use-callback
(mf/deps selected-token-set-id)
(fn [id]
(= id selected-token-set-id)))
active-token-set-ids (mf/deref refs/workspace-active-set-ids)
token-set-active? (mf/use-callback
(mf/deps active-token-set-ids)
(fn [id]
(get active-token-set-ids id)))]
[:div {:class (stl/css :sets-list-wrapper)}
[:& wts/sets-list]]))
[:& wts/controlled-sets-list
{:token-sets token-sets
:selected-token-set-id selected-token-set-id
:token-set-selected? token-set-selected?
:token-set-active? token-set-active?}]]))
(mf/defc themes
[{:keys [] :as _args}]

View file

@ -64,6 +64,15 @@
:set-id child-id
:selected-set-id selected-token-set-id)])])]))
(mf/defc controlled-sets-list
[{:keys [token-sets] :as props}]
[:ul {:class (stl/css :sets-list)}
(for [[id token-set] token-sets]
[:& sets-tree (-> (assoc props
:key id
:token-set token-set)
(dissoc :token-sets))])])
(mf/defc sets-list
[{:keys []}]
(let [token-sets (mf/deref refs/workspace-token-sets)
@ -77,11 +86,8 @@
(mf/deps active-token-set-ids)
(fn [id]
(get active-token-set-ids id)))]
[:ul {:class (stl/css :sets-list)}
(for [[id token-set] token-sets]
[:& sets-tree
{:key id
:token-set token-set
:selected-token-set-id selected-token-set-id
:token-set-selected? token-set-selected?
:token-set-active? token-set-active?}])]))
[:& controlled-sets-list
{:token-sets token-sets
:selected-token-set-id selected-token-set-id
:token-set-selected? token-set-selected?
:token-set-active? token-set-active?}]))