Range Slider
The RangeSlider is a multi thumb slider used to select a range of related values.
Import#
import { RangeSlider } from '@chakra-ui/react'
Usage#
<RangeSlider.Root aria-label={['min', 'max']} defaultValue={[10, 30]}><RangeSlider.Control><RangeSlider.Track><RangeSlider.FilledTrack /></RangeSlider.Track><RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} /></RangeSlider.Control></RangeSlider.Root>
Changing the slider color palette#
Set the colorPalette
to change the color of the slider.
<RangeSlider.Rootaria-label={['min', 'max']}colorPalette='pink'defaultValue={[10, 30]}><RangeSlider.Control><RangeSlider.Track><RangeSlider.FilledTrack /></RangeSlider.Track><RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} /></RangeSlider.Control></RangeSlider.Root>
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
.
<RangeSlider.Rootaria-label={['min', 'max']}defaultValue={[10, 30]}orientation='vertical'><RangeSlider.Control minH='32'><RangeSlider.Track><RangeSlider.FilledTrack /></RangeSlider.Track><RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} /></RangeSlider.Control></RangeSlider.Root>
Customizing the Slider#
Slider
component was designed to be composed to make it easy for you to
customize its styles.
<RangeSlider.Root aria-label={['min', 'max']} defaultValue={[30, 80]}><RangeSlider.Control><RangeSlider.Track bg='red.100'><RangeSlider.FilledTrack bg='tomato' /></RangeSlider.Track><RangeSlider.Thumb boxSize={6} index={0}><Box color='tomato' as={MdGraphicEq} /></RangeSlider.Thumb><RangeSlider.Thumb boxSize={6} index={1}><Box color='tomato' as={MdGraphicEq} /></RangeSlider.Thumb></RangeSlider.Control></RangeSlider.Root>
Rendering the value text#
Use the RangeSlider.ValueText
component to render the value of the slider.
<RangeSlider.Root aria-label={['min', 'max']} defaultValue={[30, 80]}><Flex justify='space-between'><RangeSlider.Label> Price</RangeSlider.Label><RangeSlider.ValueText /></Flex><RangeSlider.Control><RangeSlider.Track><RangeSlider.FilledTrack /></RangeSlider.Track><RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} /></RangeSlider.Control></RangeSlider.Root>
Changing the step#
Discrete sliders allow you to snap to predefined sets of values. This can be
accomplished using the step
prop.
<RangeSlider.Root defaultValue={[120, 240]} min={0} max={300} step={30}><RangeSlider.Control><RangeSlider.Track bg='red.100'><RangeSlider.FilledTrack bg='tomato' /></RangeSlider.Track><RangeSlider.Thumb boxSize={6} index={0} /><RangeSlider.Thumb boxSize={6} index={1} /></RangeSlider.Control></RangeSlider.Root>
Listening to changes#
Use the onChange
and onChangeEnd
props to listen to changes in the slider
<RangeSlider.Rootaria-label={['min', 'max']}onChangeEnd={(val) => console.log(val)}><RangeSlider.Control><RangeSlider.Track><RangeSlider.FilledTrack /></RangeSlider.Track><RangeSlider.Thumb index={0} /><RangeSlider.Thumb index={1} /></RangeSlider.Control></RangeSlider.Root>
useRangeSlider#
The useRangeSlider
hook is exported with state and focus management logic for
use in creating tailor-made range slider component for your application. Read
more about the useRangeSlider
hook
here.
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.
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.