0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-01-09 08:20:45 -05:00

🐛 Fix positioning a component instance after drag&drop

This commit is contained in:
Andrés Moya 2020-09-30 14:33:52 +02:00 committed by Alonso Torres
parent d5e70e51ba
commit c4ef2eaab3
3 changed files with 12 additions and 12 deletions

View file

@ -203,7 +203,7 @@
(rx/of (dwc/commit-changes rchanges uchanges {:commit-local? true}))))))
(defn instantiate-component
[file-id component-id]
[file-id component-id position]
(us/assert (s/nilable ::us/uuid) file-id)
(us/assert ::us/uuid component-id)
(ptk/reify ::instantiate-component
@ -215,12 +215,7 @@
component-shape (get-in component [:objects (:id component)])
orig-pos (gpt/point (:x component-shape) (:y component-shape))
mouse-pos @ms/mouse-position
delta (gpt/subtract mouse-pos orig-pos)
_ (js/console.log "orig-pos" (clj->js orig-pos))
_ (js/console.log "mouse-pos" (clj->js mouse-pos))
_ (js/console.log "delta" (clj->js delta))
delta (gpt/subtract position orig-pos)
page-id (:current-page-id state)
objects (dwc/lookup-page-objects state page-id)

View file

@ -69,9 +69,9 @@
on-drag-start
(mf/use-callback
(fn [component-id event]
(fn [component event]
(dnd/set-data! event "app/component" {:file-id (if local? nil file-id)
:component-id component-id})
:component component})
(dnd/set-allowed-effect! event "move")))]
[:div.asset-group
@ -83,7 +83,7 @@
[:div.grid-cell {:key (:id component)
:draggable true
:on-context-menu (on-context-menu (:id component))
:on-drag-start (partial on-drag-start (:id component))}
:on-drag-start (partial on-drag-start component)}
[:& exports/component-svg {:group (get-in component [:objects (:id component)])
:objects (:objects component)}]
[:div.cell-name (:name component)]])

View file

@ -505,8 +505,13 @@
(assoc :y final-y)))))
(dnd/has-type? event "app/component")
(let [{:keys [component-id file-id]} (dnd/get-data event "app/component")]
(st/emit! (dwl/instantiate-component file-id component-id)))
(let [{:keys [component file-id]} (dnd/get-data event "app/component")
shape (get-in component [:objects (:id component)])
final-x (- (:x viewport-coord) (/ (:width shape) 2))
final-y (- (:y viewport-coord) (/ (:height shape) 2))]
(st/emit! (dwl/instantiate-component file-id
(:id component)
(gpt/point final-x final-y))))
(dnd/has-type? event "text/uri-list")
(let [data (dnd/get-data event "text/uri-list")