Vue
HTML
<script src="https://raw.githack.com/SortableJS/Sortable/next-version/Sortable.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.20.0/vuedraggable.umd.min.js"></script>
<div id="app">
<div class="flex">
<div class="flex-1">
Target Category Items: {{ targetCategoryItems.length }}
<div class="draggable-container">
<draggable :list="targetCategoryItems"
group="categories"
:multi-drag="true"
class="draggable"
selected-class="selected-item">
<div v-for="element in targetCategoryItems"
:key="element.ItemID"
class="draggable-element">
<div class="item-text">
<div>[{{element.ItemID}}]</div>
<div>{{element.ItemName}}</div>
</div>
</div>
</draggable>
</div>
</div>
<div class="flex-1">
Source Category Items: {{ sourceCategoryItems.length }}
<div class="draggable-container">
<draggable :list="sourceCategoryItems"
group="categories"
:multi-drag="true"
class="draggable"
selected-class="selected-item"
@select="selectItems">
<div v-for="element in sourceCategoryItems"
:key="element.ItemID"
class="draggable-element">
<div class="item-text">
<div>[{{element.ItemID}}]</div>
<div>{{element.ItemName}}</div>
</div>
</div>
</draggable>
</div>
</div>
</div>
</div>
CSS
.flex {
display: flex;
}
.flex-1 {
flex: 1;
}
.draggable-container {
border: 1px solid black;
padding: 10px;
margin: 10px;
}
.draggable-element {
padding: 10px;
margin: 10px;
background-color: lightgrey;
}
.selected-item {
background-color: red;
opacity: .5;
}
Vue
new Vue({
el: "#app",
data () {
return {
sourceCategoryItems: [
{"ItemID":"566GR","ItemName":"Leaf Urn","PhotoName":""},
{"ItemID":"575GD","ItemName":"Italian Villa Planter","PhotoName":""},
{"ItemID":"576GR","ItemName":"Palm Topiary Planter","PhotoName":""},
{"ItemID":"627GR","ItemName":"Small Tulip Basket","PhotoName":""},
{"ItemID":"F124A54","ItemName":"The Article No. 54 Wooden Cube","PhotoName":""},
{"ItemID":"F140A54","ItemName":"Article No. 54 Storage Cube","PhotoName":""},
{"ItemID":"F124SDM","ItemName":"The Sac De Moulin Wooden Cube","PhotoName":""},
{"ItemID":"3021128","ItemName":"CATHERINE 5+5 Hanging Lamp in Nickel Satin","PhotoName":""}
],
targetCategoryItems: [
{"ItemID":"F232SET","ItemName":"Percussion Coffee Table and Side Table","PhotoName":""},
{"ItemID":"F235SET","ItemName":"Marlene Coffee and Side Table","PhotoName":""},
{"ItemID":"F236","ItemName":"Tall Marlene Side Table","PhotoName":""},
{"ItemID":"F237SET","ItemName":"Marlene Tri Coffee Table","PhotoName":""},
{"ItemID":"F238","ItemName":"Cuadrado Side Table","PhotoName":""},
{"ItemID":"F239","ItemName":"Triangulo Side Table","PhotoName":""},
{"ItemID":"F285","ItemName":"Kew Occassional Table","PhotoName":""},
{"ItemID":"F286","ItemName":"Tuileries Coffee Table","PhotoName":""},
{"ItemID":"F296","ItemName":"Heligan Table","PhotoName":""}
]
};
},
methods: {
toggle: function(todo){
todo.done = !todo.done
},
selectItems: function (event) {
console.log(event.items);
}
}
})