DragContainer.vue 1.04 KiB
<template>
<div @dragstart="handleDragStart" draggable="true" id="wrapper">
<slot>
<div id="container">
<dl>
<dt>Key</dt>
<dd>{{ dragID }}</dd>
<dt>Position</dt>
<dd>{{ x }}, {{ y }}</dd>
<dt>Size</dt>
<dd>{{ w }} × {{ h }}</dd>
</dl>
</div>
</slot>
</div>
</template>
<script>
export default {
name: "DragContainer",
methods: {
handleDragStart(event) {
event.dataTransfer.setData(
"vueDrag/gridItem",
JSON.stringify(
{
key: this.dragID,
x: this.x,
y: this.y,
w: this.w,
h: this.h
}
)
);
},
},
props: {
dragID: String,
x: Number,
y: Number,
w: Number,
h: Number,
},
};
</script>
<style scoped>
#wrapper {
grid-column: v-bind(x) / span v-bind(w);
grid-row: v-bind(y) / span v-bind(h);
}
#container {
background: lightcoral;
width: 100%;
height: 100%;
}
</style>