@@ -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
303311function setDataRange ( rangeSlider , gd , axisOpts , opts ) {
0 commit comments