Skip to content
Snippets Groups Projects

Resolve "Implement basic functionality"

Merged Julian requested to merge 1-implement-basic-functionality into main
2 files
+ 34
3
Compare changes
  • Side-by-side
  • Inline
Files
2
+ 28
3
<template>
<template>
<div @dragstart="handleDragStart" draggable="true" id="wrapper">
<div @dragstart="handleDragStart" :draggable="!isDisabled" id="wrapper">
<slot></slot>
<slot></slot>
</div>
</div>
</template>
</template>
@@ -9,6 +9,7 @@ export default {
@@ -9,6 +9,7 @@ export default {
name: "DragContainer",
name: "DragContainer",
methods: {
methods: {
handleDragStart(event) {
handleDragStart(event) {
 
if (this.isDisabled) return;
event.dataTransfer.setData(
event.dataTransfer.setData(
"vueDrag/gridItem",
"vueDrag/gridItem",
JSON.stringify({
JSON.stringify({
@@ -19,6 +20,7 @@ export default {
@@ -19,6 +20,7 @@ export default {
h: this.h,
h: this.h,
data: this.data,
data: this.data,
context: this.context,
context: this.context,
 
originGridId: this.gridId,
})
})
);
);
},
},
@@ -31,13 +33,36 @@ export default {
@@ -31,13 +33,36 @@ export default {
h: Number,
h: Number,
data: Object,
data: Object,
context: String,
context: String,
 
gridId: String,
 
disabled: Boolean,
 
},
 
computed: {
 
isInGrid() {
 
return this.x >= 0 && this.y >= 0;
 
},
 
isNotInGrid() {
 
return this.x === -1 || this.y === -1;
 
},
 
getX() {
 
return this.x === 0 ? "auto" : this.x;
 
},
 
getY() {
 
return this.y === 0 ? "auto" : this.y;
 
},
 
getDisplay() {
 
return this.isInGrid ? "block" : "none";
 
},
 
isDisabled() {
 
return this.disabled || this.isNotInGrid;
 
},
},
},
};
};
</script>
</script>
<style scoped>
<style scoped>
#wrapper {
#wrapper {
grid-column: v-bind(x) / span v-bind(w);
grid-column: v-bind(getX) / span v-bind(w);
grid-row: v-bind(y) / span v-bind(h);
grid-row: v-bind(getY) / span v-bind(h);
 
display: v-bind(getDisplay);
}
}
</style>
</style>
Loading