Skip to content

Commit a27ef3a

Browse files
author
pc-david\david.desmaisons
committed
Working on cancel: issue #45
1 parent 892b305 commit a27ef3a

File tree

5 files changed

+84
-6
lines changed

5 files changed

+84
-6
lines changed

dist/vuedraggable.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
212212
return draggableComponent;
213213
}
214214

215-
if (typeof exports == "object") {
215+
if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) == "object") {
216216
var Sortable = require("sortablejs");
217217
module.exports = buildDraggable(Sortable);
218218
} else if (typeof define == "function" && define.amd) {

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: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<!doctype html>
2+
<html class="no-js" lang="">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta http-equiv="x-ua-compatible" content="ie=edge">
6+
<title>Example ul element</title>
7+
<meta name="description" content="">
8+
<meta name="viewport" content="width=device-width, initial-scale=1">
9+
10+
<link rel="stylesheet" href="css/main.css">
11+
</head>
12+
<body>
13+
14+
<div id="main">
15+
<h1>Vue Dragable</h1>
16+
17+
<div class="drag">
18+
<h2>List 1 draggable</h2>
19+
<draggable element="ul" class="dragArea" :list="list" :options="{group:'people'}" :validate-move="checkMove">
20+
<li v-for="(element, index) in list" >
21+
{{element.name}} {{index}}
22+
</li>
23+
</draggable>
24+
</div>
25+
26+
<div class="normal">
27+
<h2>List 1 v-for</h2>
28+
<div>
29+
<div v-for="element in list" >{{element.name}}</div>
30+
</div>
31+
</div>
32+
33+
<a href="index.html">See basic example</a>
34+
<a href="Two_Lists_Clone.html">See clone element example</a>
35+
<a href="Two_Lists_Clone_If.html">See clone v-if element example</a>
36+
</div>
37+
<script type="text/javascript" src="..\libs\vue\dist\vue.js"></script>
38+
<script type="text/javascript" src="..\libs\lodash\lodash.js"></script>
39+
<script type="text/javascript" src="..\libs\Sortable\Sortable.js"></script>
40+
<script type="text/javascript" src="src\vuedraggable.js"></script>
41+
<script type="text/javascript" src="script\cancel.js"></script>
42+
</body>
43+
</html>

examples/script/cancel.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
var vm = new Vue({
2+
el: "#main",
3+
data: {
4+
list: [ {name: "John"},
5+
{name: "Joao"},
6+
{name: "Jean"} ],
7+
dragging: false
8+
},
9+
methods:{
10+
checkMove: function(evt){
11+
console.log(evt);
12+
return false;
13+
}
14+
}
15+
});

src/vuedraggable.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,16 @@
4747

4848
function delegateAndEmit (evtName) {
4949
return (evtData) => {
50-
this['onDrag' + evtName](evtData)
51-
emit.call(this, evtName, evtData)
50+
const res = this['onDrag' + evtName](evtData)
51+
if (res) {
52+
emit.call(this, evtName, evtData)
53+
}
54+
return res
5255
}
5356
}
5457

55-
const eventsListened = ['Start', 'Add', 'Remove', 'Update', 'End'];
56-
const eventsToEmit = ['Choose', 'Sort', 'Filter', 'Move', 'Clone'];
58+
const eventsListened = ['Start', 'Add', 'Remove', 'Update', 'Move', 'End'];
59+
const eventsToEmit = ['Choose', 'Sort', 'Filter', 'Clone'];
5760
const readonlyProperties = eventsListened.concat(eventsToEmit).map(evt => 'on'+evt);
5861

5962
const props = {
@@ -70,6 +73,10 @@
7073
element: {
7174
type: String,
7275
default: 'div'
76+
},
77+
validateMove: {
78+
type: Function,
79+
default: null
7380
}
7481
}
7582

@@ -154,6 +161,7 @@
154161
element
155162
}
156163
evt.item._underlying_vm_ = this.clone(element)
164+
return true
157165
},
158166

159167
onDragAdd (evt) {
@@ -168,6 +176,7 @@
168176
const newIndex = (domNewIndex > numberIndexes - 1) ? numberIndexes : indexes[domNewIndex]
169177
this.list.splice(newIndex, 0, element)
170178
this.computeIndexes()
179+
return true
171180
},
172181

173182
onDragRemove (evt) {
@@ -182,6 +191,7 @@
182191
}
183192
const oldIndex = this.context.currentIndex
184193
this.list.splice(oldIndex, 1)
194+
return true
185195
},
186196

187197
onDragUpdate (evt) {
@@ -193,10 +203,20 @@
193203
const oldIndexVM = this.context.currentIndex
194204
const newIndexVM = this.visibleIndexes[evt.newIndex]
195205
updatePosition(this.list, oldIndexVM, newIndexVM)
206+
return true
207+
},
208+
209+
onDragMove (evt) {
210+
const validate = this.validateMove
211+
if (!validate){
212+
return true;
213+
}
214+
return validate(evt);
196215
},
197216

198217
onDragEnd (evt) {
199218
this.computeIndexes()
219+
return true
200220
}
201221
}
202222
}

0 commit comments

Comments
 (0)