Skip to content

Commit d65c790

Browse files
WIP: cancelation
1 parent a27ef3a commit d65c790

File tree

5 files changed

+57
-18
lines changed

5 files changed

+57
-18
lines changed

dist/vuedraggable.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,16 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
5757
var _this = this;
5858

5959
return function (evtData) {
60-
_this['onDrag' + evtName](evtData);
61-
emit.call(_this, evtName, evtData);
60+
var res = _this['onDrag' + evtName](evtData);
61+
if (res) {
62+
emit.call(_this, evtName, evtData);
63+
}
64+
return res;
6265
};
6366
}
6467

65-
var eventsListened = ['Start', 'Add', 'Remove', 'Update', 'End'];
66-
var eventsToEmit = ['Choose', 'Sort', 'Filter', 'Move', 'Clone'];
68+
var eventsListened = ['Start', 'Add', 'Remove', 'Update', 'Move', 'End'];
69+
var eventsToEmit = ['Choose', 'Sort', 'Filter', 'Clone'];
6770
var readonlyProperties = eventsListened.concat(eventsToEmit).map(function (evt) {
6871
return 'on' + evt;
6972
});
@@ -84,6 +87,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
8487
element: {
8588
type: String,
8689
default: 'div'
90+
},
91+
validateMove: {
92+
type: Function,
93+
default: null
8794
}
8895
};
8996

@@ -167,6 +174,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
167174
element: element
168175
};
169176
evt.item._underlying_vm_ = this.clone(element);
177+
return true;
170178
},
171179
onDragAdd: function onDragAdd(evt) {
172180
var element = evt.item._underlying_vm_;
@@ -180,6 +188,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
180188
var newIndex = domNewIndex > numberIndexes - 1 ? numberIndexes : indexes[domNewIndex];
181189
this.list.splice(newIndex, 0, element);
182190
this.computeIndexes();
191+
return true;
183192
},
184193
onDragRemove: function onDragRemove(evt) {
185194
if (!this.list) {
@@ -193,6 +202,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
193202
}
194203
var oldIndex = this.context.currentIndex;
195204
this.list.splice(oldIndex, 1);
205+
return true;
196206
},
197207
onDragUpdate: function onDragUpdate(evt) {
198208
if (!this.list) {
@@ -203,9 +213,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
203213
var oldIndexVM = this.context.currentIndex;
204214
var newIndexVM = this.visibleIndexes[evt.newIndex];
205215
updatePosition(this.list, oldIndexVM, newIndexVM);
216+
return true;
217+
},
218+
onDragMove: function onDragMove(evt) {
219+
var validate = this.validateMove;
220+
if (!validate) {
221+
return true;
222+
}
223+
return validate(evt);
206224
},
207225
onDragEnd: function onDragEnd(evt) {
208226
this.computeIndexes();
227+
return true;
209228
}
210229
}
211230
};

dist/vuedraggable.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/Cancel.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,25 @@ <h2>List 1 draggable</h2>
2121
{{element.name}} {{index}}
2222
</li>
2323
</draggable>
24+
25+
<h2>List 2 draggable</h2>
26+
<draggable class="dragArea" :list="list2" :options="{group:'people'}">
27+
<div v-for="(element, index) in list2" >
28+
{{element.name}} {{index}}
29+
</div>
30+
</draggable>
2431
</div>
2532

2633
<div class="normal">
2734
<h2>List 1 v-for</h2>
2835
<div>
2936
<div v-for="element in list" >{{element.name}}</div>
3037
</div>
38+
39+
<h2>List 2 v-for</h2>
40+
<div>
41+
<div v-for="element in list2" >{{element.name}}</div>
42+
</div>
3143
</div>
3244

3345
<a href="index.html">See basic example</a>

examples/script/cancel.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
var vm = new Vue({
22
el: "#main",
33
data: {
4-
list: [ {name: "John"},
5-
{name: "Joao"},
6-
{name: "Jean"} ],
4+
list: [
5+
{name: "John"},
6+
{name: "Joao"},
7+
{name: "Jean"}
8+
],
9+
list2: [],
710
dragging: false
811
},
912
methods:{
1013
checkMove: function(evt){
11-
console.log(evt);
1214
return false;
1315
}
1416
}

src/vuedraggable.js

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -150,17 +150,18 @@
150150
})
151151
},
152152

153+
getUnderlyingVm (htmlElt) {
154+
const currentIndex = computeVmIndex(this.getChildrenNodes(), htmlElt)
155+
const element = this.list[currentIndex]
156+
return {currentIndex, element}
157+
},
158+
153159
onDragStart (evt) {
154160
if (!this.list) {
155161
return
156162
}
157-
const currentIndex = computeVmIndex(this.getChildrenNodes(), evt.item)
158-
const element = this.list[currentIndex]
159-
this.context = {
160-
currentIndex,
161-
element
162-
}
163-
evt.item._underlying_vm_ = this.clone(element)
163+
this.context = this.getUnderlyingVm(evt.item)
164+
evt.item._underlying_vm_ = this.clone(this.context.element)
164165
return true
165166
},
166167

@@ -208,9 +209,14 @@
208209

209210
onDragMove (evt) {
210211
const validate = this.validateMove
211-
if (!validate){
212-
return true;
212+
if (!validate) {
213+
return true
214+
}
215+
if (evt.to === evt.from) {
216+
const destination = this.getUnderlyingVm(evt.related)
217+
console.log('destination', destination)
213218
}
219+
console.log('source', this.context)
214220
return validate(evt);
215221
},
216222

0 commit comments

Comments
 (0)