Skip to content

Commit 3d516f0

Browse files
authored
Merge pull request #5025 from priyanomi/range-slider-touch-integration
Add Touch Support to RangeSlider #1098
2 parents 0de3bf3 + 6105a07 commit 3d516f0

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

src/components/rangeslider/draw.js

+12-4
Original file line numberDiff line numberDiff line change
@@ -236,21 +236,24 @@ function setupDragElement(rangeSlider, gd, axisOpts, opts) {
236236
var grabAreaMin = rangeSlider.select('rect.' + constants.grabAreaMinClassName).node();
237237
var grabAreaMax = rangeSlider.select('rect.' + constants.grabAreaMaxClassName).node();
238238

239-
rangeSlider.on('mousedown', function() {
239+
function mouseDownHandler() {
240240
var event = d3.event;
241241
var target = event.target;
242-
var startX = event.clientX;
242+
var startX = event.clientX || event.touches[0].clientX;
243243
var offsetX = startX - rangeSlider.node().getBoundingClientRect().left;
244244
var minVal = opts.d2p(axisOpts._rl[0]);
245245
var maxVal = opts.d2p(axisOpts._rl[1]);
246246

247247
var dragCover = dragElement.coverSlip();
248248

249+
this.addEventListener('touchmove', mouseMove);
250+
this.addEventListener('touchend', mouseUp);
249251
dragCover.addEventListener('mousemove', mouseMove);
250252
dragCover.addEventListener('mouseup', mouseUp);
251253

252254
function mouseMove(e) {
253-
var delta = +e.clientX - startX;
255+
var clientX = e.clientX || e.touches[0].clientX;
256+
var delta = +clientX - startX;
254257
var pixelMin, pixelMax, cursor;
255258

256259
switch(target) {
@@ -295,9 +298,14 @@ function setupDragElement(rangeSlider, gd, axisOpts, opts) {
295298
function mouseUp() {
296299
dragCover.removeEventListener('mousemove', mouseMove);
297300
dragCover.removeEventListener('mouseup', mouseUp);
301+
this.removeEventListener('touchmove', mouseMove);
302+
this.removeEventListener('touchend', mouseUp);
298303
Lib.removeElement(dragCover);
299304
}
300-
});
305+
}
306+
307+
rangeSlider.on('mousedown', mouseDownHandler);
308+
rangeSlider.on('touchstart', mouseDownHandler);
301309
}
302310

303311
function setDataRange(rangeSlider, gd, axisOpts, opts) {

0 commit comments

Comments
 (0)