Skip to content
Snippets Groups Projects
Commit 48abe2b1 authored by Julian's avatar Julian
Browse files

Make objects draggable

parent 57e9fd1c
No related branches found
No related tags found
1 merge request!2Resolve "Implement basic functionality"
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
<slot> <slot>
<div id="container"> <div id="container">
<dl> <dl>
<dt>Key</dt>
<dd>{{ dragID }}</dd>
<dt>Position</dt> <dt>Position</dt>
<dd>{{ x }}, {{ y }}</dd> <dd>{{ x }}, {{ y }}</dd>
<dt>Size</dt> <dt>Size</dt>
...@@ -18,10 +20,22 @@ export default { ...@@ -18,10 +20,22 @@ export default {
name: "DragContainer", name: "DragContainer",
methods: { methods: {
handleDragStart(event) { handleDragStart(event) {
event.dataTransfer.setData("text", event.target.id); event.dataTransfer.setData(
"vueDrag/gridItem",
JSON.stringify(
{
key: this.dragID,
x: this.x,
y: this.y,
w: this.w,
h: this.h
}
)
);
}, },
}, },
props: { props: {
dragID: String,
x: Number, x: Number,
y: Number, y: Number,
w: Number, w: Number,
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<DragContainer <DragContainer
v-for="item in items" v-for="item in items"
:key="item.key" :key="item.key"
:drag-i-d="item.key"
:x="item.x" :x="item.x"
:y="item.y" :y="item.y"
:w="item.w" :w="item.w"
...@@ -35,8 +36,13 @@ export default { ...@@ -35,8 +36,13 @@ export default {
}, },
methods: { methods: {
handleDrop(event) { handleDrop(event) {
let data = event.dataTransfer.getData("text"); let data = event.dataTransfer.getData("vueDrag/gridItem");
event.target.appendChild(document.getElementById(data)); let element = JSON.parse(data);
console.log(element);
this.items.splice(this.items.findIndex((i) => {return i.key === element.key}), 1);
element.x = 1 + Math.trunc(event.layerX / (event.target.offsetWidth / this.cols));
element.y = 1 + Math.trunc(event.layerY / (event.target.offsetHeight / this.rows));
this.items.push(element);
}, },
}, },
data() { data() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment