From 1f6a9df2d71bd65bbbe2c68fd9a26b5f7efb3ea3 Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Mon, 13 Feb 2023 15:26:54 +0100
Subject: [PATCH] Use a drag cursor for draggable elements

---
 src/DragContainer.vue | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/DragContainer.vue b/src/DragContainer.vue
index d9de43a..2e657c6 100644
--- a/src/DragContainer.vue
+++ b/src/DragContainer.vue
@@ -1,5 +1,11 @@
 <template>
-  <div @dragstart="handleDragStart" :draggable="!isDisabled" id="wrapper">
+  <div
+    @dragstart="handleDragStart"
+    :draggable="!isDisabled"
+    id="wrapper"
+    ref="wrapper"
+    @dragend="handleDragEnd"
+  >
     <slot></slot>
   </div>
 </template>
@@ -10,6 +16,7 @@ export default {
   methods: {
     handleDragStart(event) {
       if (this.isDisabled) return;
+      this.$refs.wrapper.style.cursor = "grabbing";
       event.dataTransfer.setData(
         "vueDrag/gridItem",
         JSON.stringify({
@@ -24,6 +31,9 @@ export default {
         })
       );
     },
+    handleDragEnd() {
+      this.$refs.wrapper.style.cursor = "grab";
+    },
   },
   props: {
     dragID: {
@@ -80,6 +90,9 @@ export default {
     isDisabled() {
       return this.disabled || this.isNotInGrid;
     },
+    cursor() {
+      return this.disabled ? "auto" : "grab";
+    },
   },
 };
 </script>
@@ -89,5 +102,6 @@ export default {
   grid-column: v-bind(getX) / span v-bind(w);
   grid-row: v-bind(getY) / span v-bind(h);
   display: v-bind(getDisplay);
+  cursor: v-bind(cursor);
 }
 </style>
-- 
GitLab