@@ -25,6 +25,7 @@ export let float = false;
2525export let reversed = false ;
2626export let hoverable = true ;
2727export let disabled = false ;
28+ export let limits = null ;
2829export let pips = false ;
2930export let pipstep = void 0 ;
3031export let all = true ;
@@ -80,15 +81,12 @@ const checkAriaLabels = () => {
8081};
8182checkValueIsNumber ();
8283checkValuesIsArray ();
83- $:
84- value, updateValues ();
85- $:
86- values, updateValue ();
87- $:
88- ariaLabels, checkAriaLabels ();
84+ $: value, updateValues ();
85+ $: values, updateValue ();
86+ $: ariaLabels, checkAriaLabels ();
8987$: {
9088 const trimmedAlignedValues = trimRange (
91- values .map ((v ) => alignValueToStep (v, min, max, step, precision))
89+ values .map ((v ) => alignValueToStep (v, min, max, step, precision, limits ))
9290 );
9391 if (! (values .length === trimmedAlignedValues .length ) || ! values .every (
9492 (element , index ) => coerceFloat (element, precision) === trimmedAlignedValues[index]
@@ -105,13 +103,10 @@ $: {
105103 }
106104 valueLength = values .length ;
107105}
108- $:
109- orientationStart = vertical ? reversed ? " top" : " bottom" : reversed ? " right" : " left" ;
110- $:
111- orientationEnd = vertical ? reversed ? " bottom" : " top" : reversed ? " left" : " right" ;
106+ $: orientationStart = vertical ? reversed ? " top" : " bottom" : reversed ? " right" : " left" ;
107+ $: orientationEnd = vertical ? reversed ? " bottom" : " top" : reversed ? " left" : " right" ;
112108function targetIsHandle (el ) {
113- if (! slider)
114- return false ;
109+ if (! slider) return false ;
115110 const handles = slider .querySelectorAll (" .handle" );
116111 const isHandle = Array .prototype .includes .call (handles, el);
117112 const isChild = Array .prototype .some .call (handles, (e ) => e .contains (el));
@@ -127,8 +122,7 @@ function trimRange(values2) {
127122 }
128123}
129124function getClosestHandle (clientPos ) {
130- if (! slider)
131- return 0 ;
125+ if (! slider) return 0 ;
132126 const dims = slider .getBoundingClientRect ();
133127 let handlePos = 0 ;
134128 let handlePercent = 0 ;
@@ -158,8 +152,7 @@ function getClosestHandle(clientPos) {
158152 return closest;
159153}
160154function handleInteract (clientPos ) {
161- if (! slider)
162- return ;
155+ if (! slider) return ;
163156 const dims = slider .getBoundingClientRect ();
164157 let handlePos = 0 ;
165158 let handlePercent = 0 ;
@@ -177,7 +170,7 @@ function handleInteract(clientPos) {
177170 moveHandle (activeHandle, handleVal);
178171}
179172function moveHandle (index , value2 ) {
180- value2 = alignValueToStep (value2, min, max, step, precision);
173+ value2 = alignValueToStep (value2, min, max, step, precision, limits );
181174 if (index === null ) {
182175 index = activeHandle;
183176 }
@@ -297,7 +290,8 @@ function sliderInteractStart(event) {
297290 min,
298291 max,
299292 step,
300- precision
293+ precision,
294+ limits
301295 );
302296 eStart ();
303297 if (event .type === " touchstart" && ! target .matches (" .pipVal" )) {
@@ -357,15 +351,15 @@ function eStart() {
357351 ! disabled && dispatch (" start" , {
358352 activeHandle,
359353 value: startValue,
360- values: values .map ((v ) => alignValueToStep (v, min, max, step, precision))
354+ values: values .map ((v ) => alignValueToStep (v, min, max, step, precision, limits ))
361355 });
362356}
363357function eStop () {
364358 ! disabled && dispatch (" stop" , {
365359 activeHandle,
366360 startValue,
367361 value: values[activeHandle],
368- values: values .map ((v ) => alignValueToStep (v, min, max, step, precision))
362+ values: values .map ((v ) => alignValueToStep (v, min, max, step, precision, limits ))
369363 });
370364}
371365function eChange () {
@@ -374,7 +368,7 @@ function eChange() {
374368 startValue,
375369 previousValue: typeof previousValue === " undefined" ? startValue : previousValue,
376370 value: values[activeHandle],
377- values: values .map ((v ) => alignValueToStep (v, min, max, step, precision))
371+ values: values .map ((v ) => alignValueToStep (v, min, max, step, precision, limits ))
378372 });
379373}
380374function ariaLabelFormatter (value2 , index ) {
@@ -440,6 +434,13 @@ function ariaLabelFormatter(value2, index) {
440434 {/if }
441435 </span >
442436 {/each }
437+ {#if limits }
438+ <span
439+ class =" rangeLimit"
440+ style =" {orientationStart }: {valueAsPercent (limits [0 ], min , max , precision )}%;
441+ {orientationEnd }: {100 - valueAsPercent (limits [1 ], min , max , precision )}%;"
442+ />
443+ {/if }
443444 {#if range }
444445 <span
445446 class =" rangeBar"
@@ -497,6 +498,7 @@ function ariaLabelFormatter(value2, index) {
497498 --handle-border : var (--range-handle-border , var (--handle ));
498499 --range-inactive : var (--range-range-inactive , var (--handle-inactive ));
499500 --range : var (--range-range , var (--handle-focus ));
501+ --range-limit : var (--range-range-limit , #99a2a280 );
500502 --float-inactive : var (--range-float-inactive , var (--handle-inactive ));
501503 --float : var (--range-float , var (--handle-focus ));
502504 --float-text : var (--range-float-text , white );
@@ -660,7 +662,8 @@ function ariaLabelFormatter(value2, index) {
660662 transform : translate (-50% , -100% );
661663 }
662664
663- :global(.rangeSlider .rangeBar ) {
665+ :global(.rangeSlider .rangeBar ),
666+ :global(.rangeSlider .rangeLimit ) {
664667 position : absolute ;
665668 display : block ;
666669 transition : background 0.2s ease ;
@@ -671,7 +674,8 @@ function ariaLabelFormatter(value2, index) {
671674 z-index : 1 ;
672675 }
673676
674- :global(.rangeSlider.vertical .rangeBar ) {
677+ :global(.rangeSlider.vertical .rangeBar ),
678+ :global(.rangeSlider.vertical .rangeLimit ) {
675679 width : 0.5em ;
676680 height : auto ;
677681 }
@@ -691,6 +695,11 @@ function ariaLabelFormatter(value2, index) {
691695 background-color : var (--range );
692696 }
693697
698+ :global(.rangeSlider .rangeLimit ) {
699+ background-color : #99a2a280 ;
700+ background-color : var (--range-limit );
701+ }
702+
694703 :global(.rangeSlider .rangeNub ) {
695704 background-color : #99a2a2 ;
696705 background-color : var (--handle-inactive );
0 commit comments