Improve show main component menu

This commit is contained in:
Andrés Moya 2022-11-15 17:08:01 +01:00 committed by Andrey Antukh
parent 527e4643da
commit 848f5125d8
3 changed files with 63 additions and 25 deletions

View file

@ -20,6 +20,7 @@
[app.common.spec :as us] [app.common.spec :as us]
[app.common.text :as txt] [app.common.text :as txt]
[app.common.transit :as t] [app.common.transit :as t]
[app.common.types.components-list :as ctkl]
[app.common.types.container :as ctn] [app.common.types.container :as ctn]
[app.common.types.file :as ctf] [app.common.types.file :as ctf]
[app.common.types.pages-list :as ctpl] [app.common.types.pages-list :as ctpl]
@ -989,28 +990,6 @@
:graphics #{} :graphics #{}
:colors #{} :colors #{}
:typographies #{}})))) :typographies #{}}))))
(defn go-to-component
[component-id]
(ptk/reify ::go-to-component
IDeref
(-deref [_] {:layout :assets})
ptk/WatchEvent
(watch [_ state _]
(let [project-id (get-in state [:workspace-project :id])
file-id (get-in state [:workspace-file :id])
page-id (get state :current-page-id)
pparams {:file-id file-id :project-id project-id}
qparams {:page-id page-id :layout :assets}]
(rx/of (rt/nav :workspace pparams qparams)
(dwl/set-assets-box-open file-id :library true)
(dwl/set-assets-box-open file-id :components true)
(select-single-asset component-id :components))))
ptk/EffectEvent
(effect [_ _ _]
(let [wrapper-id (str "component-shape-id-" component-id)]
(tm/schedule-on-idle #(dom/scroll-into-view-if-needed! (dom/get-element wrapper-id)))))))
(defn go-to-main-instance (defn go-to-main-instance
[page-id shape-id on-page-selected] [page-id shape-id on-page-selected]
(us/verify ::us/uuid page-id) (us/verify ::us/uuid page-id)
@ -1026,7 +1005,8 @@
(let [project-id (:current-project-id state) (let [project-id (:current-project-id state)
file-id (:current-file-id state) file-id (:current-file-id state)
pparams {:file-id file-id :project-id project-id} pparams {:file-id file-id :project-id project-id}
qparams {:page-id page-id :layout :assets}] qparams {:page-id page-id}]
;; qparams {:page-id page-id :layout :assets}]
(rx/merge (rx/merge
(rx/of (rt/nav :workspace pparams qparams)) (rx/of (rt/nav :workspace pparams qparams))
(->> stream (->> stream
@ -1036,6 +1016,58 @@
(on-page-selected) (on-page-selected)
(rx/of (dws/select-shapes (lks/set shape-id))))))))))))) (rx/of (dws/select-shapes (lks/set shape-id)))))))))))))
(defn go-to-component
[component-id]
(ptk/reify ::go-to-component
IDeref
(-deref [_] {:layout :assets})
ptk/WatchEvent
(watch [_ state _]
(let [components-v2 (features/active-feature? state :components-v2)]
(if components-v2
(let [file-data (wsh/get-local-file state)
component (ctkl/get-component file-data component-id)
main-instance-id (:main-instance-id component)
main-instance-page (:main-instance-page component)]
(rx/of (go-to-main-instance main-instance-page main-instance-id identity)))
(let [project-id (get-in state [:workspace-project :id])
file-id (get-in state [:workspace-file :id])
page-id (get state :current-page-id)
pparams {:file-id file-id :project-id project-id}
qparams {:page-id page-id :layout :assets}]
(rx/of (rt/nav :workspace pparams qparams)
(dwl/set-assets-box-open file-id :library true)
(dwl/set-assets-box-open file-id :components true)
(select-single-asset component-id :components))))))
ptk/EffectEvent
(effect [_ state _]
(let [components-v2 (features/active-feature? state :components-v2)
wrapper-id (str "component-shape-id-" component-id)]
(when-not components-v2
(tm/schedule-on-idle #(dom/scroll-into-view-if-needed! (dom/get-element wrapper-id))))))))
(defn show-component-in-assets
[component-id]
(ptk/reify ::show-component-in-assets
ptk/WatchEvent
(watch [_ state _]
(let [project-id (get-in state [:workspace-project :id])
file-id (get-in state [:workspace-file :id])
page-id (get state :current-page-id)
pparams {:file-id file-id :project-id project-id}
qparams {:page-id page-id :layout :assets}]
(rx/of (rt/nav :workspace pparams qparams)
(dwl/set-assets-box-open file-id :library true)
(dwl/set-assets-box-open file-id :components true)
(select-single-asset component-id :components))))
ptk/EffectEvent
(effect [_ _ _]
(let [wrapper-id (str "component-shape-id-" component-id)]
(tm/schedule-on-idle #(dom/scroll-into-view-if-needed! (dom/get-element wrapper-id)))))))
(def go-to-file (def go-to-file
(ptk/reify ::go-to-file (ptk/reify ::go-to-file
ptk/WatchEvent ptk/WatchEvent

View file

@ -424,6 +424,9 @@
do-detach-component-in-bulk #(st/emit! dwl/detach-selected-components) do-detach-component-in-bulk #(st/emit! dwl/detach-selected-components)
do-reset-component #(st/emit! (dwl/reset-component shape-id)) do-reset-component #(st/emit! (dwl/reset-component shape-id))
do-show-component #(st/emit! (dw/go-to-component component-id)) do-show-component #(st/emit! (dw/go-to-component component-id))
do-show-in-assets #(st/emit! (if components-v2
(dw/show-component-in-assets component-id)
(dw/go-to-component component-id)))
do-navigate-component-file #(st/emit! (dwl/nav-to-component-file component-file)) do-navigate-component-file #(st/emit! (dwl/nav-to-component-file component-file))
do-update-component #(st/emit! (dwl/update-component-sync shape-id component-file)) do-update-component #(st/emit! (dwl/update-component-sync shape-id component-file))
do-update-component-in-bulk #(st/emit! (dwl/update-component-in-bulk component-shapes component-file)) do-update-component-in-bulk #(st/emit! (dwl/update-component-in-bulk component-shapes component-file))
@ -474,7 +477,7 @@
[:& menu-separator] [:& menu-separator]
(if main-component? (if main-component?
[:& menu-entry {:title (tr "workspace.shape.menu.show-in-assets") [:& menu-entry {:title (tr "workspace.shape.menu.show-in-assets")
:on-click do-show-component}] :on-click do-show-in-assets}]
(if local-component? (if local-component?
(if is-dangling? (if is-dangling?
[:* [:*

View file

@ -78,6 +78,9 @@
:on-accept do-update-component})) :on-accept do-update-component}))
do-show-component #(st/emit! (dw/go-to-component component-id)) do-show-component #(st/emit! (dw/go-to-component component-id))
do-show-in-assets #(st/emit! (if components-v2
(dw/show-component-in-assets component-id)
(dw/go-to-component component-id)))
do-navigate-component-file #(st/emit! (dwl/nav-to-component-file library-id))] do-navigate-component-file #(st/emit! (dwl/nav-to-component-file library-id))]
(when show? (when show?
[:div.element-set [:div.element-set
@ -99,7 +102,7 @@
:show (:menu-open @local) :show (:menu-open @local)
:options :options
(if main-instance? (if main-instance?
[[(tr "workspace.shape.menu.show-in-assets") do-show-component]] [[(tr "workspace.shape.menu.show-in-assets") do-show-in-assets]]
(if local-component? (if local-component?
(if is-dangling? (if is-dangling?
[[(tr "workspace.shape.menu.detach-instance") do-detach-component] [[(tr "workspace.shape.menu.detach-instance") do-detach-component]