Slider

An easily stylable range input.

API reference

Import the component and assemble its parts:

Anatomy

Root

Groups all parts of the slider. Renders a <div> element.

PropTypeDefault
name

string

undefined

defaultValue

number | readonly number[]

undefined

value

number | readonly number[]

undefined

onValueChange

((value: any, event: Event, activeThumbIndex: number) => void)

undefined

onValueCommitted

((value: any, event: Event) => void)

undefined

ref

RefObject<HTMLDivElement>

undefined

tabIndex

number

undefined

step

number

1

largeStep

number

10

minStepsBetweenValues

number

0

min

number

0

max

number

100

format

NumberFormatOptions

undefined

disabled

boolean

false

orientation

Orientation

'horizontal'

className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Value

Displays the current value of the slider as text. Renders an <output> element.

PropTypeDefault
aria-live

'off' | 'assertive' | 'polite'

'off'

children

| ((formattedValues: string[], values: number[]) => ReactNode)
| null

undefined

className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Control

The clickable, interactive part of the slider. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Track

Contains the slider indicator and represents the entire range of the slider. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Indicator

Visualizes the current value of the slider. Renders a <div> element.

PropTypeDefault
className

string | ((state: State) => string)

undefined

render

| ReactElement
| ((props: GenericHTMLProps, state: State) => ReactElement)

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused

Thumb

The draggable part of the the slider at the tip of the indicator. Renders a <div> element.

PropTypeDefault
aria-label

string

undefined

aria-labelledby

string

undefined

name

string

undefined

active

number

undefined

aria-valuetext

string

undefined

getAriaLabel

((index: number) => string) | null

undefined

getAriaValueText

| ((formattedValue: string, value: number, index: number) => string)
| null

undefined

handleInputChange

((valueInput: number, index: number, event: KeyboardEvent<Element> | ChangeEvent<Element>) => void)

undefined

inputId

string

undefined

onBlur

FocusEventHandler<Element>

undefined

onFocus

FocusEventHandler<Element>

undefined

onKeyDown

KeyboardEventHandler<Element>

undefined

onPointerLeave

PointerEventHandler<Element>

undefined

onPointerOver

PointerEventHandler<Element>

undefined

percentageValues

number[]

undefined

tabIndex

number | null

null

values

number[]

undefined

step

number

1

largeStep

number

10

minStepsBetweenValues

number

undefined

min

number

undefined

max

number

undefined

format

NumberFormatOptions | null

null

disabled

boolean

undefined

orientation

Orientation

'horizontal'

id

string

undefined

className

string | ((state: State) => string)

undefined

render

| ((props: DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, inputProps: DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, state: State) => ReactElement)
| ReactElement & { ref: Ref<Element> }

undefined

Attribute
Description
data-dragging
data-orientation
data-disabled
data-readonly
data-required
data-valid
data-invalid
data-dirty
data-touched
data-focused
data-index

Examples

Range slider

To create a range slider, provide an array of values with corresponding thumbs: