The static string to use used for `aria-label` if no visible label is used.
Range Slider
分类:
日期:
2022-2-05标签:
The RangeSlider is a multi thumb slider used to select a range of related values. A common use-case of this component is a price range picker that allows a user to set the minimum and maximum price.
Import#
Chakra UI exports the following component parts to implement the Range Slider:
- RangeSlider: The wrapper that provides context and functionality for all children.
- RangeSliderTrack: The empty part of the slider that shows the track.
- RangeSliderFilledTrack: The filled part of the slider.
- RangeSliderThumb: The handle that's used to change the slider value.
import {RangeSlider,RangeSliderTrack,RangeSliderFilledTrack,RangeSliderThumb,} from '@chakra-ui/react';
Usage#
Note: We recommend adding a
aria-labeloraria-labelledbyprop to provide an accessible label for the Slider.
<RangeSlider aria-label={['min', 'max']} defaultValue={[10, 30]}><RangeSliderTrack><RangeSliderFilledTrack /></RangeSliderTrack><RangeSliderThumb index={0} /><RangeSliderThumb index={1} /></RangeSlider>
Changing the slider color scheme#
You can override the color scheme of the slider to any color key specified in theme.colors.
<RangeSlideraria-label={['min', 'max']}colorScheme="pink"defaultValue={[10, 30]}><RangeSliderTrack><RangeSliderFilledTrack /></RangeSliderTrack><RangeSliderThumb index={0} /><RangeSliderThumb index={1} /></RangeSlider>
Changing the slider orientation#
By default, the slider orientation is horizontal. However, if you want to have it vertical, pass the orientation prop and set its value to vertical.
<RangeSlideraria-label={['min', 'max']}colorScheme="pink"defaultValue={[10, 30]}orientation="vertical"minH="32"><RangeSliderTrack><RangeSliderFilledTrack /></RangeSliderTrack><RangeSliderThumb index={0} /><RangeSliderThumb index={1} /></RangeSlider>
Customizing the Slider#
Slider component was designed to be composed to make it easy for you to customize its styles.
<RangeSlider aria-label={['min', 'max']} defaultValue={[30, 80]}><RangeSliderTrack bg="red.100"><RangeSliderFilledTrack bg="tomato" /></RangeSliderTrack><RangeSliderThumb boxSize={6} index={0}><Box color="tomato" as={MdGraphicEq} /></RangeSliderThumb><RangeSliderThumb boxSize={6} index={1}><Box color="tomato" as={MdGraphicEq} /></RangeSliderThumb></RangeSlider>
Discrete Sliders#
Discrete sliders allow you to snap to predefined sets of values. This can be accomplished using the step prop.
<RangeSlider defaultValue={[120, 240]} min={0} max={300} step={30}><RangeSliderTrack bg="red.100"><RangeSliderFilledTrack bg="tomato" /></RangeSliderTrack><RangeSliderThumb boxSize={6} index={0} /><RangeSliderThumb boxSize={6} index={1} /></RangeSlider>
Getting the final value when dragging the slider#
Dragging the slider can trigger lots of updates and the user might only be interested in the final result after sliding is complete. You can use onChangeEnd for this.
<RangeSlider aria-label={['min', 'max']} onChangeEnd={val => console.log(val)}><RangeSliderTrack><RangeSliderFilledTrack /></RangeSliderTrack><RangeSliderThumb index={0} /><RangeSliderThumb index={1} /></RangeSlider>
useRangeSlider#
We've exported the useRangeSlider hook to help users manage and build custom slider UIs.
Props#
RangeSlider Props#
The RangeSlider component wraps all its children in the Box component, so you can pass all Box props to change its style.
aria-label
aria-labelstring[]aria-labelledby
aria-labelledbyThe static string `aria-labelledby` that points to the ID of the element that serves as label for the slider
string[]aria-valuetext
aria-valuetextThe static string to use used for `aria-valuetext`
string[]defaultValue
defaultValueThe initial value of the slider in uncontrolled mode
number[]direction
directionThe writing mode
"ltr" | "rtl""ltr"focusThumbOnChange
focusThumbOnChangeIf false, the slider handle will not capture focus when value changes.
booleantruegetAriaValueText
getAriaValueTextFunction that returns the `aria-valuetext` for screen readers. It is mostly used to generate a more human-readable representation of the value for assistive technologies
((value: number) => string)id
idThe base id to use for the slider and its components
stringisDisabled
isDisabledIf true, the slider will be disabled
booleanisReadOnly
isReadOnlyIf true, the slider will be in `read-only` state
booleanisReversed
isReversedIf true, the value will be incremented or decremented in reverse.
booleanmax
maxThe maximum allowed value of the slider. Cannot be less than min.
number100min
minThe minimum allowed value of the slider. Cannot be greater than max.
number0minStepsBetweenThumbs
minStepsBetweenThumbsThe minimum distance between slider thumbs. Useful for preventing the thumbs from being too close together.
number0name
nameThe name attribute of the hidden input field.
This is particularly useful in forms
string | string[]onChange
onChangeFunction called whenever the slider value changes (by dragging or clicking)
((value: number[]) => void)onChangeEnd
onChangeEndFunction called when the user is done selecting a new value (by dragging or clicking)
((value: number[]) => void)onChangeStart
onChangeStartFunction called when the user starts selecting a new value (by dragging or clicking)
((value: number[]) => void)step
stepThe step in which increments/decrements have to be made
number1value
valueThe value of the slider in controlled mode
number[]RangeSliderThumb Props#
RangeSliderThumb composes Box so you can pass all Box props to change its style.
RangeSliderFilledTrack Props#
RangeSliderFilledTrack composes Box so you can pass all Box props to change its style.
RangeSliderTrack Props#
RangeSliderTrack composes Box so you can pass all Box props to change its style.