import {Slider} from '@gravity-ui/uikit';
The slider is a customizable and responsive React component that allows users to select a single value or a range of values from a specified data set.
§Slider variations
§Single slider
This is a slider with one handle to select a single value. It is used by default.
<Slider />
§Range slider
This is slider with two handles to select a range. To use it, set defaultValue
(for an uncontrolled slider) or value
(for a controlled one) for the array.
<Slider defaultValue={[20, 40]} />
§States
§Disabled
This is a state of a Slider
where you do not want to allow the user to work with this component.
<Slider disabled={true} />
§Error
This Slider
state is for incorrect user input. To change the Slider
appearance, use the validationState
property with the "invalid"
value. Optionally, you can provide an error message through the errorMessage
property. This message text will be rendered under the slider.
<Slider validationState={"invalid"} />
<Slider validationState={"invalid"} errorMessage="Error message" />
§Size
Use the size
property to manage the Slider
size. The default size is m
.
<Slider size="s" />
<Slider size="m" />
<Slider size="l" />
<Slider size="xl" />
§Value
§Minimum and maximum value
The min
and max
properties define the limits of the range the Slider
can handle. These properties are essential for setting the boundaries of the selectable values.
<Slider min={10} />
<Slider max={50} />
<Slider min={20} max={60} />
§Step
The step
property determines the increments within the minimum and maximum value range. This means how much the value changes with a single slider move.
<Slider step={10} />
§Marks
The marks
property is utilized in Slider
component to specify visual markers along the slider that help to indicate various points between the minimum and maximum value. This property enhances the usability and visual interface of the slider, especially for denoting specific intervals. By default it is 2 (min
and max
values). You can use it in 2 different ways:
- the amount of visual markers along the slider
<Slider marks={11} />
- the array of marker values along the slider
<Slider marks={[0, 50, 100]} />
0
or empty array []
value in marks
property hide all marks from Slider
.
<Slider marks={0} />
The mark value is available for selection, even if it does not match the
step
value condition
You are able to change display format of marks values by using marksFormat
property.
§Define available values
You can set step
property to null
to define a set of specific values that the slider can handle, as opposed to a continuous range. This is particularly useful when only certain discrete values are valid for selection. In that case properties min
, max
and marks
allows specifying an array of numbers representing the exact values that users are allowed to select using the Slider
.
<Slider marks={[10, 20, 50, 55, 65, 80]} step={null}/>
§Start point
The startPoint
property allows you to set the start point of the track. It uses the minimal Slider
value by default. It will be ignored if you use Slider
with range values or if you set inverted
property.
<Slider startPoint={50} />
§Inverted
The inverted
property allows you to set the inverted view of the Slider
's track.
By default (of false
) Slider
shows interval from min
to handle.
If true
then it indicates interval from pin to max
.
Only for single Slider
. Property startPoint
will be ignored.
<Slider inverted />
§Tooltip
The tooltipDisplay
property is used in Slider
component to control the display behaviour of a tooltip that shows the current value as the user interacts with the slider. auto
value shows tooltip only when Slider
's handle are hovered by cursor or focused.
<Slider tooltipDisplay="on" />
You are able to change display format of tooltip value by using tooltipFormat
property. If you don't specify tooltipformat
then will be used marksFormat
to display the value in tooltip.
§Properties
Name | Description | Type | Default |
---|---|---|---|
apiRef | Ref to Slider's component props of focus and blur | RefObject<SliderRef> | |
autoFocus | The control's autofocus attribute | boolean | |
className | The control's wrapper class name | string | |
defaultValue | The control's default value, used when the component is not controlled. It uses the minimal Slider value by default. | number [number, number] | |
disabled | Indicates that the user cannot interact with the control | boolean | false |
errorMessage | Text of an error to show | string | |
marks | Text marks under the slider. Could be set to the amount of the slider's marks, or could be set to the array of values which should have marks. 0 or empty array value hides all marks. | number number[] | 2 |
marksFormat | Formatter for the mark's displayed value | (value: number) => string | |
max | The maximum value of the component. | number | 100 |
min | The minimum value of the component. | number | 0 |
onBlur | Fires when the control lost focus. Provides focus event as a callback's argument | ((e: FocusEvent<HTMLDivElement, Element>) => void) | |
onUpdate | Fires when the slider’s value is changed by the user. Provides change event as an callback's argument | ((value: number | [number, number]) => void) | |
onUpdateComplete | Fires when ontouchend or onmouseup is triggered. Provides change event as an callback's argument | ((value: number | [number, number]) => void) | |
onFocus | Fires when the control gets focus. Provides focus event as a callback's argument | ((e: FocusEvent<HTMLDivElement, Element>) => void) | |
size | The size of the control | "s" "m" "l" "xl" | "m" |
step | Value to be added or subtracted on each step the slider makes. Can be set to null to make marks as steps. | number null | 1 |
startPoint | Start point of the track. Ignored for range slider and for inverted slider. | number | |
inverted | Slider with inverted track (from handle to max ). | boolean | |
tabIndex | The control's tabIndex attribute | number [number, number] | |
tooltipDisplay | The tooltip's display behaviour | off on auto | off |
tooltipFormat | Formatter for the tooltip's displayed value. Uses marksFormat if not set | (value: number) => string | |
validationState | Validation state | "invalid" | |
value | The value of the control | number [number, number] |