Skip to content
Snippets Groups Projects

Pass dragging information to slot for disabled fields

Merged Julian requested to merge disabled-fields-on-drag into main
1 file
+ 14
2
Compare changes
  • Side-by-side
  • Inline
+ 14
2
@@ -3,7 +3,7 @@
@@ -3,7 +3,7 @@
droppable
droppable
@dropmove="disabled || loading ? undefined : handleDragOver($event)"
@dropmove="disabled || loading ? undefined : handleDragOver($event)"
@drop.prevent="disabled || loading ? undefined : handleDrop($event)"
@drop.prevent="disabled || loading ? undefined : handleDrop($event)"
@dragleave="$refs.highlightContainer.style.display = 'none'"
@dragleave="handleDragLeave"
class="grid"
class="grid"
>
>
<template v-if="loading">
<template v-if="loading">
@@ -56,7 +56,7 @@
@@ -56,7 +56,7 @@
:y="disabledField.y"
:y="disabledField.y"
:key="disabledField.x + '|' + disabledField.y"
:key="disabledField.x + '|' + disabledField.y"
>
>
<slot name="disabledField"></slot>
<slot name="disabledField" :is-dragged-over="isDraggedOver"></slot>
</GridItem>
</GridItem>
</template>
</template>
<slot></slot>
<slot></slot>
@@ -76,6 +76,11 @@ export default {
@@ -76,6 +76,11 @@ export default {
DragContainer,
DragContainer,
},
},
emits: ["input", "itemChanged"],
emits: ["input", "itemChanged"],
 
data() {
 
return {
 
isDraggedOver: false,
 
};
 
},
props: {
props: {
rows: {
rows: {
type: Number,
type: Number,
@@ -182,6 +187,8 @@ export default {
@@ -182,6 +187,8 @@ export default {
return;
return;
}
}
 
this.isDraggedOver = true;
 
let newPositionValid = true;
let newPositionValid = true;
for (let x = coords.x; x < coords.x + element.w; x++) {
for (let x = coords.x; x < coords.x + element.w; x++) {
@@ -204,6 +211,7 @@ export default {
@@ -204,6 +211,7 @@ export default {
this.$refs.highlightContainer.style.gridRowEnd = "span " + element.h;
this.$refs.highlightContainer.style.gridRowEnd = "span " + element.h;
},
},
handleDrop(event) {
handleDrop(event) {
 
this.isDraggedOver = false;
this.$refs.highlightContainer.style.display = "none";
this.$refs.highlightContainer.style.display = "none";
let data = event.relatedTarget.dataset.transfer;
let data = event.relatedTarget.dataset.transfer;
if (!data) return;
if (!data) return;
@@ -267,6 +275,10 @@ export default {
@@ -267,6 +275,10 @@ export default {
this.$emit("itemChanged", element);
this.$emit("itemChanged", element);
},
},
 
handleDragLeave() {
 
this.isDraggedOver = false;
 
this.$refs.highlightContainer.style.display = "none";
 
},
clamp: (min, num, max) => Math.min(Math.max(num, min), max),
clamp: (min, num, max) => Math.min(Math.max(num, min), max),
getCoords(x, y) {
getCoords(x, y) {
let rect = this.$el.getBoundingClientRect();
let rect = this.$el.getBoundingClientRect();
Loading