Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
56 lines (48 loc) · 1.58 KB
/
Copy pathindex.js
File metadata and controls
56 lines (48 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
var isIE = typeof document.createElement("span").dragDrop === "function";
var draggableElement = document.querySelectorAll('[draggable="true"]');
[].forEach.call(draggableElement, addDnDHandlers);
function addDnDHandlers(elem) {
customDragImage.call(elem, {
offsetX: 50,
offsetY: 50,
createDragImage: function(elem) {
var nodeElem = elem.cloneNode(true);
nodeElem.innerHTML = "I'm a custom node from " + elem.innerHTML;
nodeElem.className = "draggingElem";
return nodeElem;
}
});
elem.addEventListener("dragstart", function(e) {
e.dataTransfer.setData("Text", "Foo");
});
}
function customDragImage(options) {
var offsetX = options.offsetX || 0,
offsetY = options.offsetY || 0;
var createDragImage = function($node, x, y) {
var testnode = options.createDragImage($node);
testnode.style.top = Math.max(0, y - offsetY) + "px";
testnode.style.left = Math.max(0, x - offsetX) + "px";
testnode.style.position = "absolute";
testnode.style.pointerEvents = "none";
document.body.appendChild(testnode);
setTimeout(function() {
document.body.removeChild(testnode);
});
return testnode;
};
if (isIE) {
this.addEventListener("mousedown", function(e) {
var node = createDragImage(this, e.pageX, e.pageY);
node.dragDrop();
});
}
this.addEventListener("dragstart", function(e) {
var dt = e.dataTransfer;
if (typeof dt.setDragImage === "function") {
var node = createDragImage(this, e.pageX, e.pageY);
dt.setDragImage(node, offsetX, offsetY);
}
});
return this;
}