Skip to content

Commit 45040ab

Browse files
adding event support
1 parent 74b68f7 commit 45040ab

File tree

5 files changed

+32
-13
lines changed

5 files changed

+32
-13
lines changed

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/css/main.css

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,7 @@
66
}
77
.dragArea{
88
min-height: 10px;
9+
}
10+
.blue{
11+
background-color: blue;
912
}

examples/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
<div id="main">
1515
<h1>Vue Draggable</h1>
1616

17-
<div class="drag">
17+
<div :class="dragging? 'blue' : 'drag'">
1818
<h2>Draggable</h2>
19-
<draggable :list="list">
19+
<draggable :list="list" @start="dragging=true" @end="dragging=false">
2020
<div v-for="element in list">{{element.name}}</div>
2121
</draggable>
2222
</div>

examples/script/main.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
var vm = new Vue({
22
el: "#main",
33
data: {
4-
list:[{name:"John"},
5-
{name:"Joao"},
6-
{name:"Jean"} ]
7-
},
4+
list: [ {name: "John"},
5+
{name: "Joao"},
6+
{name: "Jean"} ],
7+
dragging: false
8+
},
89
methods:{
910
add: function(){
1011
this.list.push({name:'Juan'});

src/vuedraggable.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@
3838
return output
3939
}
4040

41+
function emit (evtName, evtData) {
42+
this.$emit( evtName.toLowerCase(), evtData)
43+
}
44+
45+
function delegateAndEmit (evtName) {
46+
const ctx = this
47+
return function (evtData) {
48+
ctx['onDrag' + evtName].call(ctx, evtData)
49+
emit.call(ctx, evtName, evtData)
50+
}
51+
}
52+
4153
function install (Vue) {
4254
const props = {
4355
options: Object,
@@ -53,9 +65,13 @@
5365

5466
mounted () {
5567
var optionsAdded = {};
56-
['Start', 'Add', 'Remove', 'Update', 'End'].forEach(elt => {
57-
optionsAdded['on' + elt] = this['onDrag' + elt].bind(this)
58-
})
68+
['Start', 'Add', 'Remove', 'Update', 'End'].forEach( elt => {
69+
optionsAdded['on' + elt] = delegateAndEmit.call(this, elt)
70+
});
71+
72+
['Choose', 'Sort', 'Filter', 'Move', 'Clone'].forEach( elt => {
73+
optionsAdded['on' + elt] = emit.bind(this, elt)
74+
});
5975

6076
const options = merge(this.options, optionsAdded)
6177
this._sortable = new Sortable(this.$el, options)
@@ -69,9 +85,8 @@
6985
methods: {
7086

7187
computeIndexes () {
72-
this.$nextTick( () =>{
73-
const slots = this.$slots.default
74-
this.visibleIndexes = computeIndexes(slots, this.$el.children)
88+
this.$nextTick( () => {
89+
this.visibleIndexes = computeIndexes(this.$slots.default, this.$el.children)
7590
})
7691
},
7792

0 commit comments

Comments
 (0)