Skip to content

Commit 7994d9a

Browse files
committed
add handlerItem position
1 parent 2df75f9 commit 7994d9a

File tree

4 files changed

+17
-11
lines changed

4 files changed

+17
-11
lines changed

demo/src/views/handler.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@
1919
v-bind:class="{'selected': selected === item}"
2020
>
2121
<div v-dnd-nodrag class="nodrag">
22-
<div v-dnd-handle class="handle"></div>
22+
<div v-dnd-handle
23+
dnd-handle-left="20"
24+
dnd-handle-top="20"
25+
class="handle">
26+
</div>
2327
<div class="name">
2428
{{item.label}}
2529
</div>

dist/vue-drag-and-drop-list.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* Vue-drag-and-drop-list.js v0.8.2
2+
* Vue-drag-and-drop-list.js v0.8.3
33
* (c) 2016 Hejx
44
* Released under the MIT License.
55
* https://github.com/Alex-fun/vue-drag-and-drop-list#readme
@@ -54,7 +54,7 @@ DragAndDropList.install = function(Vue) {
5454

5555
// Try setting a proper drag image if triggered on a dnd-handle (won't work in IE).
5656
if (event._dndHandle && event.dataTransfer.setDragImage) {
57-
event.dataTransfer.setDragImage(this.el, event._dndHandleLeft - this.el.getBoundingClientRect().left, event._dndHandleTop - this.el.getBoundingClientRect().top);
57+
event.dataTransfer.setDragImage(this.el, event._dndHandleLeft, event._dndHandleTop);
5858
}
5959

6060
// Invoke callback
@@ -425,13 +425,14 @@ DragAndDropList.install = function(Vue) {
425425
});
426426

427427
Vue.directive('dnd-handle', {
428+
params: ['dnd-handle-left', 'dnd-handle-top'],
428429
bind: function () {
429-
430+
430431
this.handle = function(event){
431432
event = event.originalEvent || event;
432433
event._dndHandle = true;
433-
event._dndHandleLeft = this.el.getBoundingClientRect().left;
434-
event._dndHandleTop = this.el.getBoundingClientRect().top;
434+
event._dndHandleLeft = this.params.dndHandleLeft || 0;
435+
event._dndHandleTop = this.params.dndHandleTop || 0;
435436
}.bind(this);
436437

437438
this.el.setAttribute('draggable', true);

index.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ DragAndDropList.install = function(Vue) {
4242

4343
// Try setting a proper drag image if triggered on a dnd-handle (won't work in IE).
4444
if (event._dndHandle && event.dataTransfer.setDragImage) {
45-
event.dataTransfer.setDragImage(this.el, event._dndHandleLeft - this.el.getBoundingClientRect().left, event._dndHandleTop - this.el.getBoundingClientRect().top);
45+
event.dataTransfer.setDragImage(this.el, event._dndHandleLeft, event._dndHandleTop);
4646
}
4747

4848
// Invoke callback
@@ -413,13 +413,14 @@ DragAndDropList.install = function(Vue) {
413413
});
414414

415415
Vue.directive('dnd-handle', {
416+
params: ['dnd-handle-left', 'dnd-handle-top'],
416417
bind: function () {
417-
418+
418419
this.handle = function(event){
419420
event = event.originalEvent || event;
420421
event._dndHandle = true;
421-
event._dndHandleLeft = this.el.getBoundingClientRect().left;
422-
event._dndHandleTop = this.el.getBoundingClientRect().top;
422+
event._dndHandleLeft = this.params.dndHandleLeft || 0;
423+
event._dndHandleTop = this.params.dndHandleTop || 0;
423424
}.bind(this);
424425

425426
this.el.setAttribute('draggable', true);

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue-drag-and-drop-list",
3-
"version": "0.8.2",
3+
"version": "0.8.3",
44
"description": "A Vue.js directives with the HTML5 drag & drop API.",
55
"main": "dist/vue-drag-and-drop-list.js",
66
"directories": {

0 commit comments

Comments
 (0)