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

Only load context menu when open

This commit is contained in:
Florian Schroedl 2024-09-30 08:46:31 +02:00
parent 8c58ed80ac
commit 99a3ed98c9

View file

@ -301,19 +301,28 @@
:on-click action :on-click action
:selected? selected?}])]))) :selected? selected?}])])))
(mf/defc token-context-menu-tree
[{:keys [width] :as mdata}]
(js/console.log "mdata" mdata)
(let [objects (mf/deref refs/workspace-page-objects)
selected (mf/deref refs/selected-shapes)
selected-shapes (into [] (keep (d/getf objects)) selected)
token-name (:token-name mdata)
token (mf/deref (refs/workspace-selected-token-set-token token-name))
selected-token-set-id (mf/deref refs/workspace-selected-token-set-id)]
[:ul {:class (stl/css :context-list)}
[:& menu-tree {:submenu-offset width
:token token
:selected-token-set-id selected-token-set-id
:selected-shapes selected-shapes}]]))
(mf/defc token-context-menu (mf/defc token-context-menu
[] []
(let [mdata (mf/deref tokens-menu-ref) (let [mdata (mf/deref tokens-menu-ref)
top (+ (get-in mdata [:position :y]) 5) top (+ (get-in mdata [:position :y]) 5)
left (+ (get-in mdata [:position :x]) 5) left (+ (get-in mdata [:position :x]) 5)
width (mf/use-state 0) width (mf/use-state 0)
dropdown-ref (mf/use-ref) dropdown-ref (mf/use-ref)]
objects (mf/deref refs/workspace-page-objects)
selected (mf/deref refs/selected-shapes)
selected-shapes (into [] (keep (d/getf objects)) selected)
token-id (:token-id mdata)
token (get (mf/deref refs/workspace-selected-token-set-tokens-OLD) token-id)
selected-token-set-id (mf/deref refs/workspace-selected-token-set-id)]
(mf/use-effect (mf/use-effect
(mf/deps mdata) (mf/deps mdata)
(fn [] (fn []
@ -325,9 +334,5 @@
:ref dropdown-ref :ref dropdown-ref
:style {:top top :left left} :style {:top top :left left}
:on-context-menu prevent-default} :on-context-menu prevent-default}
(when token (when mdata
[:ul {:class (stl/css :context-list)} [:& token-context-menu-tree (assoc mdata :offset @width)])]]))
[:& menu-tree {:submenu-offset @width
:token token
:selected-token-set-id selected-token-set-id
:selected-shapes selected-shapes}]])]]))