Skip to content

Commit ed8ef77

Browse files
committed
slider: fix value calculation bug for controlled slider
1 parent 648f2fd commit ed8ef77

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

packages/slider/src/index.js

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,13 @@ export const SliderInput = forwardRef(function SliderInput(
137137

138138
const [hasFocus, setHasFocus] = useState(false);
139139
const [isPointerDown, setPointerDown] = useState(false);
140-
const [value, setValue] = useState(defaultValue || min);
140+
const [internalValue, setValue] = useState(defaultValue || min);
141141

142142
const { ref: x, ...handleDimensions } = useDimensions(handleRef);
143143

144-
const _value = isControlled ? controlledValue : value;
145-
const actualValue = getAllowedValue(_value, min, max);
146-
const trackPercent = valueToPercent(actualValue, min, max);
144+
const _value = isControlled ? controlledValue : internalValue;
145+
const value = getAllowedValue(_value, min, max);
146+
const trackPercent = valueToPercent(value, min, max);
147147
const isVertical = orientation === SLIDER_ORIENTATION_VERTICAL;
148148
const step = stepProp || 1;
149149

@@ -202,20 +202,20 @@ export const SliderInput = forwardRef(function SliderInput(
202202
switch (event.key) {
203203
case "ArrowLeft":
204204
case "ArrowDown":
205-
newValue = actualValue - keyStep;
205+
newValue = value - keyStep;
206206
flag = true;
207207
break;
208208
case "ArrowRight":
209209
case "ArrowUp":
210-
newValue = actualValue + keyStep;
210+
newValue = value + keyStep;
211211
flag = true;
212212
break;
213213
case "PageDown":
214-
newValue = actualValue - tenSteps;
214+
newValue = value - tenSteps;
215215
flag = true;
216216
break;
217217
case "PageUp":
218-
newValue = actualValue + tenSteps;
218+
newValue = value + tenSteps;
219219
flag = true;
220220
break;
221221
case "Home":
@@ -266,7 +266,7 @@ export const SliderInput = forwardRef(function SliderInput(
266266
setPointerDown(false);
267267
});
268268

269-
const valueText = getValueText ? getValueText(actualValue) : ariaValueText;
269+
const valueText = getValueText ? getValueText(value) : ariaValueText;
270270

271271
const sliderId = id || _id;
272272

@@ -297,7 +297,7 @@ export const SliderInput = forwardRef(function SliderInput(
297297
sliderId,
298298
sliderMax: max,
299299
sliderMin: min,
300-
sliderValue: actualValue,
300+
value,
301301
valueText,
302302
disabled,
303303
isVertical,
@@ -365,7 +365,7 @@ export const SliderInput = forwardRef(function SliderInput(
365365
// (A `name` prop doesn't really make sense in any other context)
366366
<input
367367
type="hidden"
368-
value={actualValue}
368+
value={value}
369369
name={name}
370370
id={makeId("input", sliderId)}
371371
/>
@@ -472,7 +472,7 @@ export const SliderHandle = forwardRef(function SliderHandle(
472472
setHasFocus,
473473
sliderMin,
474474
sliderMax,
475-
sliderValue,
475+
value,
476476
valueText
477477
} = useSliderContext();
478478

@@ -493,7 +493,7 @@ export const SliderHandle = forwardRef(function SliderHandle(
493493
aria-valuemin={sliderMin}
494494
aria-valuetext={valueText}
495495
aria-orientation={orientation}
496-
aria-valuenow={sliderValue}
496+
aria-valuenow={value}
497497
aria-valuemax={sliderMax}
498498
aria-labelledby={ariaLabelledBy}
499499
onBlur={wrapEvent(onBlur, () => {
@@ -522,7 +522,7 @@ if (__DEV__) {
522522

523523
////////////////////////////////////////////////////////////////////////////////
524524
export const SliderMarker = forwardRef(function SliderMarker(
525-
{ children, style = {}, value, ...props },
525+
{ children, style = {}, value: valueProp, ...props },
526526
forwardedRef
527527
) {
528528
const {
@@ -531,20 +531,20 @@ export const SliderMarker = forwardRef(function SliderMarker(
531531
orientation,
532532
sliderMin,
533533
sliderMax,
534-
sliderValue
534+
value: sliderValue
535535
} = useSliderContext();
536536

537537
const ownRef = useRef(null);
538538
const ref = forwardedRef || ownRef;
539-
const actualValue = valueToPercent(value, sliderMin, sliderMax);
539+
const value = valueToPercent(valueProp, sliderMin, sliderMax);
540540
const highlight = sliderValue >= value;
541541
const dataAttributes = makeDataAttributes("slider-marker", {
542542
orientation,
543543
disabled,
544544
highlight
545545
});
546546

547-
const absoluteStartPosition = `${actualValue}%`;
547+
const absoluteStartPosition = `${value}%`;
548548

549549
return value != null ? (
550550
<div

0 commit comments

Comments
 (0)