Skip to content

Commit 2947bb4

Browse files
committed
fix range slider crash
1 parent f9ed4a9 commit 2947bb4

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

packages/chakra-ui/src/RangeWidget/RangeWidget.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,19 @@ export default function RangeWidget<T = any, S extends StrictRJSFSchema = RJSFSc
2626
hideLabel,
2727
id,
2828
}: WidgetProps<T, S, F>) {
29-
const sliderWidgetProps = { value, label, id, ...rangeSpec<S>(schema) };
30-
31-
const _onChange = ({ value }: SliderValueChangeDetails) => onChange(value === undefined ? options.emptyValue : value);
29+
const _onChange = ({ value }: SliderValueChangeDetails) =>
30+
onChange(value === undefined ? options.emptyValue : value[0]);
3231
const _onBlur = ({ target }: FocusEvent<HTMLInputElement>) => onBlur(id, target && target.value);
3332
const _onFocus = ({ target }: FocusEvent<HTMLInputElement>) => onFocus(id, target && target.value);
3433

3534
return (
3635
<Field mb={1} label={labelValue(label, hideLabel || !label)}>
3736
<Slider
38-
{...sliderWidgetProps}
37+
{...rangeSpec<S>(schema)}
3938
id={id}
4039
name={id}
4140
disabled={disabled || readonly}
41+
value={[value]}
4242
onValueChange={_onChange}
4343
onBlur={_onBlur}
4444
onFocus={_onFocus}

packages/chakra-ui/src/components/ui/slider.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { Slider as ChakraSlider, HStack } from '@chakra-ui/react';
33

44
export interface SliderProps extends ChakraSlider.RootProps {
55
marks?: Array<number | { value: number; label: React.ReactNode }>;
6-
label?: React.ReactNode;
76
showValue?: boolean;
87
}
98

@@ -17,7 +16,7 @@ export interface SliderProps extends ChakraSlider.RootProps {
1716
* @returns {JSX.Element} The rendered slider component.
1817
*/
1918
export const Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(props, ref) {
20-
const { marks: marksProp, label, showValue, ...rest } = props;
19+
const { marks: marksProp, showValue, ...rest } = props;
2120
const value = props.defaultValue ?? props.value;
2221

2322
const marks = marksProp?.map((mark) => {
@@ -30,11 +29,9 @@ export const Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(pr
3029
const hasMarkLabel = !!marks?.some((mark) => mark.label);
3130

3231
return (
33-
<ChakraSlider.Root ref={ref} thumbAlignment='center' {...rest}>
34-
{label && !showValue && <ChakraSlider.Label>{label}</ChakraSlider.Label>}
35-
{label && showValue && (
32+
<ChakraSlider.Root ref={ref} width='200px' thumbAlignment='center' {...rest}>
33+
{showValue && (
3634
<HStack justify='space-between'>
37-
<ChakraSlider.Label>{label}</ChakraSlider.Label>
3835
<ChakraSlider.ValueText />
3936
</HStack>
4037
)}

packages/chakra-ui/test/__snapshots__/Form.test.tsx.snap

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5354,6 +5354,10 @@ exports[`single fields slider field 1`] = `
53545354
margin-bottom: var(--chakra-spacing-1);
53555355
}
53565356
5357+
.emotion-3 {
5358+
width: 200px;
5359+
}
5360+
53575361
.emotion-8 {
53585362
margin-top: var(--chakra-spacing-3);
53595363
}
@@ -5383,18 +5387,21 @@ exports[`single fields slider field 1`] = `
53835387
role="group"
53845388
>
53855389
<div
5390+
aria-describedby="root__error root__description root__help"
53865391
className="chakra-slider__root emotion-3"
53875392
data-orientation="horizontal"
53885393
data-part="root"
53895394
data-scope="slider"
53905395
dir="ltr"
5391-
id="slider::r2k:"
5396+
id="slider:root"
5397+
onBlur={[Function]}
5398+
onFocus={[Function]}
53925399
style={
53935400
{
5394-
"--slider-range-end": "60%",
5401+
"--slider-range-end": "43.103448275862064%",
53955402
"--slider-range-start": "0%",
53965403
"--slider-thumb-height": undefined,
5397-
"--slider-thumb-offset-0": "40%",
5404+
"--slider-thumb-offset-0": "56.896551724137936%",
53985405
"--slider-thumb-transform": "translateX(-50%)",
53995406
"--slider-thumb-width": undefined,
54005407
}
@@ -5406,7 +5413,7 @@ exports[`single fields slider field 1`] = `
54065413
data-part="control"
54075414
data-scope="slider"
54085415
dir="ltr"
5409-
id="slider::r2k::control"
5416+
id="slider:root:control"
54105417
onPointerDown={[Function]}
54115418
style={
54125419
{
@@ -5423,7 +5430,7 @@ exports[`single fields slider field 1`] = `
54235430
data-part="track"
54245431
data-scope="slider"
54255432
dir="ltr"
5426-
id="slider::r2k::track"
5433+
id="slider:root:track"
54275434
style={
54285435
{
54295436
"position": "relative",
@@ -5436,7 +5443,7 @@ exports[`single fields slider field 1`] = `
54365443
data-part="range"
54375444
data-scope="slider"
54385445
dir="ltr"
5439-
id="slider::r2k::range"
5446+
id="slider:root:range"
54405447
style={
54415448
{
54425449
"left": "var(--slider-range-start)",
@@ -5447,19 +5454,19 @@ exports[`single fields slider field 1`] = `
54475454
/>
54485455
</div>
54495456
<div
5450-
aria-labelledby="slider::r2k::label"
5457+
aria-labelledby="slider:root:label"
54515458
aria-orientation="horizontal"
54525459
aria-valuemax={100}
5453-
aria-valuemin={0}
5454-
aria-valuenow={40}
5460+
aria-valuemin={42}
5461+
aria-valuenow={75}
54555462
className="chakra-slider__thumb emotion-7"
54565463
data-index={0}
54575464
data-orientation="horizontal"
54585465
data-part="thumb"
54595466
data-scope="slider"
54605467
dir="ltr"
54615468
draggable={false}
5462-
id="slider::r2k::thumb:0"
5469+
id="slider:root:thumb:0"
54635470
onBlur={[Function]}
54645471
onFocus={[Function]}
54655472
onKeyDown={[Function]}
@@ -5476,9 +5483,10 @@ exports[`single fields slider field 1`] = `
54765483
tabIndex={0}
54775484
>
54785485
<input
5479-
defaultValue={40}
5486+
defaultValue={75}
54805487
hidden={true}
5481-
id="slider::r2k::input:0"
5488+
id="slider:root:input:0"
5489+
name="root"
54825490
type="text"
54835491
/>
54845492
</div>

0 commit comments

Comments
 (0)