Skip to content

Commit dc99780

Browse files
committed
Make document a mobile-specific dragCover
1 parent a1d3261 commit dc99780

File tree

1 file changed

+42
-21
lines changed

1 file changed

+42
-21
lines changed

src/components/dragelement/index.js

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,19 @@ dragElement.init = function init(options) {
6565
startY,
6666
newMouseDownTime,
6767
cursor,
68-
root = document.documentElement,
68+
dragCover,
6969
initialTarget;
7070

7171
if(!gd._mouseDownTime) gd._mouseDownTime = 0;
7272

7373
options.element.style.pointerEvents = 'all';
74-
options.element.onmousedown = onStart;
75-
options.element.ontouchstart = onStart;
74+
75+
if(hasHover) {
76+
options.element.onmousedown = onStart;
77+
}
78+
else {
79+
options.element.ontouchstart = onStart;
80+
}
7681

7782
function onStart(e) {
7883
// make dragging and dragged into properties of gd
@@ -97,16 +102,25 @@ dragElement.init = function init(options) {
97102

98103
if(options.prepFn) options.prepFn(e, startX, startY);
99104

100-
document.addEventListener('mousemove', onMove)
101-
document.addEventListener('mouseup', onDone)
102-
document.addEventListener('mouseout', onDone)
105+
if(hasHover) {
106+
dragCover = coverSlip();
107+
dragCover.addEventListener('mousemove', onMove);
108+
dragCover.addEventListener('mouseup', onDone);
109+
dragCover.addEventListener('mouseout', onDone);
110+
111+
dragCover.style.cursor = window.getComputedStyle(options.element).cursor;
112+
}
113+
114+
// document acts as a dragcover for mobile, bc we can't create dragcover dynamically
115+
else {
116+
dragCover = document
117+
document.addEventListener('touchmove', onMove);
118+
document.addEventListener('touchend', onDone);
103119

104-
document.addEventListener('touchmove', onMove)
105-
document.addEventListener('touchend', onDone)
120+
cursor = window.getComputedStyle(document.documentElement).cursor;
121+
document.documentElement.style.cursor = window.getComputedStyle(options.element).cursor;
122+
}
106123

107-
// disable cursor
108-
cursor = window.getComputedStyle(root).cursor
109-
root.style.cursor = window.getComputedStyle(options.element).cursor;
110124

111125
return Lib.pauseEvent(e);
112126
}
@@ -130,18 +144,25 @@ dragElement.init = function init(options) {
130144
}
131145

132146
function onDone(e) {
133-
document.removeEventListener('mousemove', onMove);
134-
document.removeEventListener('mouseup', onDone);
135-
document.removeEventListener('mouseout', onDone);
136-
document.removeEventListener('touchmove', onMove);
137-
document.removeEventListener('touchend', onDone);
138-
139-
// enable cursor
140-
if (cursor) {
141-
root.style.cursor = cursor
142-
cursor = null
147+
if(hasHover) {
148+
document.removeEventListener('mousemove', onMove);
149+
document.removeEventListener('mouseup', onDone);
150+
document.removeEventListener('mouseout', onDone);
151+
152+
Lib.removeElement(dragCover);
143153
}
144154

155+
else {
156+
document.removeEventListener('touchmove', onMove);
157+
document.removeEventListener('touchend', onDone);
158+
159+
if(cursor) {
160+
document.documentElement.style.cursor = cursor;
161+
cursor = null;
162+
}
163+
}
164+
165+
145166
if(!gd._dragging) {
146167
gd._dragged = false;
147168
return;

0 commit comments

Comments
 (0)