From 3670091b1d241fe5a2695c48b5acec010b10d896 Mon Sep 17 00:00:00 2001 From: Nikunj Hatkar Date: Wed, 23 Jul 2025 10:37:15 +0530 Subject: [PATCH 1/2] add touch event support for mobile interaction --- ui/widgets/slider.js | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/ui/widgets/slider.js b/ui/widgets/slider.js index 7f676b4147..2f6a22943e 100644 --- a/ui/widgets/slider.js +++ b/ui/widgets/slider.js @@ -78,6 +78,7 @@ return $.widget( "ui.slider", $.ui.mouse, { this._handleIndex = null; this._detectOrientation(); this._mouseInit(); + this._setupTouchEvents(); this._calculateNewMax(); this._addClass( "ui-slider ui-slider-" + this.orientation, @@ -304,6 +305,51 @@ return $.widget( "ui.slider", $.ui.mouse, { return this._trimAlignValue( valueMouse ); }, + _setupTouchEvents: function() { + var that = this; + + that.element + .on( 'touchstart.slider', function( event ) { + if ( ! event.cancelable ) { + return; + } + + var touch = event.originalEvent.touches[0]; + that._mouseCapture({ + pageX: touch.pageX, + pageY: touch.pageY, + target: touch.target + }); + + event.preventDefault(); + }) + .on( 'touchmove.slider', function( event ) { + if ( ! that._mouseSliding || ! event.cancelable ) { + return; + } + + var touch = event.originalEvent.touches[0]; + + that._mouseDrag({ + pageX: touch.pageX, + pageY: touch.pageY, + target: touch.target + }); + + // Prevent page scrolling + event.preventDefault(); + event.stopPropagation(); + }) + .on( 'touchend.slider', function( event ) { + if ( ! that._mouseSliding || ! event.cancelable ) { + return; + } + + that._mouseStop( event ); + event.preventDefault(); + }); + }, + _uiHash: function( index, value, values ) { var uiHash = { handle: this.handles[ index ], From 4222b1346afb779c08cf4f666f688be416f201eb Mon Sep 17 00:00:00 2001 From: Nikunj Hatkar Date: Thu, 7 Aug 2025 11:21:44 +0530 Subject: [PATCH 2/2] fix linting failures --- ui/widgets/slider.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/ui/widgets/slider.js b/ui/widgets/slider.js index 2f6a22943e..0bd452572b 100644 --- a/ui/widgets/slider.js +++ b/ui/widgets/slider.js @@ -309,45 +309,45 @@ return $.widget( "ui.slider", $.ui.mouse, { var that = this; that.element - .on( 'touchstart.slider', function( event ) { - if ( ! event.cancelable ) { + .on( "touchstart.slider", function( event ) { + if ( !event.cancelable ) { return; } - var touch = event.originalEvent.touches[0]; - that._mouseCapture({ + var touch = event.originalEvent.touches[ 0 ]; + that._mouseCapture( { pageX: touch.pageX, pageY: touch.pageY, target: touch.target - }); + } ); event.preventDefault(); - }) - .on( 'touchmove.slider', function( event ) { - if ( ! that._mouseSliding || ! event.cancelable ) { + } ) + .on( "touchmove.slider", function( event ) { + if ( !that._mouseSliding || !event.cancelable ) { return; } - var touch = event.originalEvent.touches[0]; + var touch = event.originalEvent.touches[ 0 ]; - that._mouseDrag({ + that._mouseDrag( { pageX: touch.pageX, pageY: touch.pageY, target: touch.target - }); + } ); // Prevent page scrolling event.preventDefault(); event.stopPropagation(); - }) - .on( 'touchend.slider', function( event ) { - if ( ! that._mouseSliding || ! event.cancelable ) { + } ) + .on( "touchend.slider", function( event ) { + if ( !that._mouseSliding || !event.cancelable ) { return; } that._mouseStop( event ); event.preventDefault(); - }); + } ); }, _uiHash: function( index, value, values ) {