diff --git a/src/DragContainer.vue b/src/DragContainer.vue
index 1764be687805386ae3ac169c4d049759393b3809..ff55661bbe84bf90e52ab1192484850dfd133dc3 100644
--- a/src/DragContainer.vue
+++ b/src/DragContainer.vue
@@ -1,5 +1,5 @@
 <template>
-  <div @dragstart="handleDragStart" draggable="true" id="wrapper">
+  <div @dragstart="handleDragStart" :draggable="!isDisabled" id="wrapper">
     <slot></slot>
   </div>
 </template>
@@ -9,6 +9,7 @@ export default {
   name: "DragContainer",
   methods: {
     handleDragStart(event) {
+      if (this.isDisabled) return;
       event.dataTransfer.setData(
         "vueDrag/gridItem",
         JSON.stringify({
@@ -19,6 +20,7 @@ export default {
           h: this.h,
           data: this.data,
           context: this.context,
+          originGridId: this.gridId,
         })
       );
     },
@@ -31,13 +33,36 @@ export default {
     h: Number,
     data: Object,
     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>
 
 <style scoped>
 #wrapper {
-  grid-column: v-bind(x) / span v-bind(w);
-  grid-row: v-bind(y) / span v-bind(h);
+  grid-column: v-bind(getX) / span v-bind(w);
+  grid-row: v-bind(getY) / span v-bind(h);
+  display: v-bind(getDisplay);
 }
 </style>
diff --git a/src/DragGrid.vue b/src/DragGrid.vue
index 93096c917e146468ff3e208cfff413c9e076b43f..fe6be5a1f3987fa6ba330e7f7084c8fef0b5b877 100644
--- a/src/DragGrid.vue
+++ b/src/DragGrid.vue
@@ -17,6 +17,7 @@
       :h="get('h', item)"
       :data="item.data"
       :context="context"
+      :grid-id="gridId"
     >
       <slot v-bind="item" name="item">
         <dl>
@@ -71,6 +72,11 @@ export default {
       required: false,
       default: uuidv4,
     },
+    gridId: {
+      type: String,
+      required: false,
+      default: uuidv4,
+    },
   },
   methods: {
     positionAllowed(x, y, key) {