@@ -9,6 +9,7 @@ export default class extends Controller {
99 labels : { type : Boolean , default : false } ,
1010 disabled : { type : Boolean , default : false } ,
1111 vertical : { type : Boolean , default : false } ,
12+ markers : { type : Boolean , default : false } ,
1213 selectedColour : String ,
1314 currency : String ,
1415 values : String ,
@@ -57,6 +58,7 @@ export default class extends Controller {
5758 scale : "rs-scale" ,
5859 pointer : "rs-pointer" ,
5960 tip : "rs-tooltip" ,
61+ marker : "rs-marker" ,
6062 } ,
6163 "tailwindcss-v4" : {
6264 container : "relative h-10 w-full" ,
@@ -67,6 +69,7 @@ export default class extends Controller {
6769 pointer : `absolute cursor-pointer z-10 inline-block size-5 transform rounded-full border border-gray-200
6870 bg-white ring-0 shadow-sm transition-transform duration-200 ease-in-out translate-x-5` ,
6971 tip : "bg-gray-800 text-white text-xs px-1 rounded" ,
72+ marker : "absolute h-2 w-1 bg-gray-200" ,
7073 } ,
7174 } ;
7275
@@ -229,6 +232,8 @@ export default class extends Controller {
229232 this . slider . classList . remove ( "disabled" ) ;
230233 }
231234
235+ if ( ! this . labelsValue ) this . slider . classList . add ( "-no-labels" ) ;
236+
232237 if ( this . hasSelectedColourValue ) {
233238 this . selected . style . backgroundColor = this . selectedColourValue ;
234239 this . selected . style . borderColor = this . selectedColourValue ;
@@ -241,19 +246,24 @@ export default class extends Controller {
241246
242247 createScale ( ) {
243248 this . stepWidth = this . sliderWidth / ( this . values . range . length - 1 ) ;
244- this . scale . innerHTML = "" ;
245249
246250 for ( let i = 0 ; i < this . values . range . length ; i ++ ) {
247- const span = document . createElement ( "span" ) ;
248- const ins = document . createElement ( "ins" ) ;
249- span . appendChild ( ins ) ;
250- this . scale . appendChild ( span ) ;
251- span . style . width =
251+ const labelContainer = document . createElement ( "div" ) ;
252+ const label = document . createElement ( "span" ) ;
253+
254+ if ( this . markersValue ) {
255+ labelContainer . classList . add ( this . klasses . marker ) ;
256+ label . classList . add ( this . klasses . marker ) ;
257+ }
258+
259+ labelContainer . appendChild ( label ) ;
260+ this . scale . appendChild ( labelContainer ) ;
261+ labelContainer . style . width =
252262 i === this . values . range . length - 1 ? 0 : this . stepWidth + "px" ;
253- ins . innerHTML = this . labelsValue
263+ label . innerHTML = this . labelsValue
254264 ? this . formatStr ( this . values . range [ i ] )
255265 : "" ;
256- ins . style . marginLeft = ( ins . clientWidth / 2 ) * - 1 + "px" ;
266+ label . style . marginLeft = ( label . clientWidth / 2 ) * - 1 + "px" ;
257267 }
258268 }
259269
@@ -338,14 +348,24 @@ export default class extends Controller {
338348
339349 addEvents ( ) {
340350 this . slider . addEventListener ( "mousemove" , this . move . bind ( this ) ) ;
341- this . slider . addEventListener ( "touchmove" , this . move . bind ( this ) ) ;
351+ this . slider . addEventListener ( "touchmove" , this . move . bind ( this ) , {
352+ passive : true ,
353+ } ) ;
342354 this . slider . addEventListener ( "mouseup" , this . drop . bind ( this ) ) ;
343- this . slider . addEventListener ( "touchend" , this . drop . bind ( this ) ) ;
344- this . slider . addEventListener ( "touchcancel" , this . drop . bind ( this ) ) ;
355+ this . slider . addEventListener ( "touchend" , this . drop . bind ( this ) , {
356+ passive : true ,
357+ } ) ;
358+ this . slider . addEventListener ( "touchcancel" , this . drop . bind ( this ) , {
359+ passive : true ,
360+ } ) ;
345361 this . pointerL . addEventListener ( "mousedown" , this . drag . bind ( this ) ) ;
346- this . pointerL . addEventListener ( "touchstart" , this . drag . bind ( this ) ) ;
362+ this . pointerL . addEventListener ( "touchstart" , this . drag . bind ( this ) , {
363+ passive : true ,
364+ } ) ;
347365 this . pointerR ?. addEventListener ( "mousedown" , this . drag . bind ( this ) ) ;
348- this . pointerR ?. addEventListener ( "touchstart" , this . drag . bind ( this ) ) ;
366+ this . pointerR ?. addEventListener ( "touchstart" , this . drag . bind ( this ) , {
367+ passive : true ,
368+ } ) ;
349369 window . addEventListener ( "resize" , this . onResize . bind ( this ) ) ;
350370
351371 const pieces = this . slider . querySelectorAll ( "span" ) ;
0 commit comments