Slider

Examples

Discrete

Slider value is: 50


Slider value is: 50

(min = 0, max = 200, step = 50)

Slider value is: 25

(min = -25, max = 75, step = 10, boundaries not shown)

Slider value is: 50

(min = -25, max = 75, step = 10, boundaries shown)

Slider value is: 50

(min = -25, max = 75, step = 10, boundaries shown, ticks not shown)

Slider value is: 3

(max = 5, custom steps)

Slider value is: 25

(min = 12, max = 86, custom steps with non linear data)

Continuous

Slider Value is: 50


Slider value is: 50

Value input


%

%

Thumb value input

%

Actions

Slider value is: 50



%

Disabled

Slider value is: 4

Custom step tooltip

You can customize the content of the tooltip by passing the tooltipContent property. By default this tooltip will act as a description to the slider thumb, and thus shouldn't include critical information about the current slider step unless that information is part of the step's aria-valuetext.

If instead you want the tooltip to act as the human-readable value of the slider step - such as when all slider step labels are hidden - you must also pass the thumbAriaValueText property with the same string value as the tooltipContent. Additionally, you should pass the tooltip props object {aria: 'none', 'aria-live': 'off'} to tooltipProps in order to help prevent duplicate announcement from assistive technologies.

Types

SliderOnChangeEvent

The slider's onChange prop accepts an event parameter of the following types:

  • React.MouseEvent
  • React.KeyboardEvent
  • React.FormEvent<HTMLInputElement>
  • React.TouchEvent
  • React.FocusEvent<HTMLInputElement>

The SliderOnChangeEvent type is a union of the above event types, and can be imported and used in your code like in the following code snippet:

import { Slider, SliderOnChangeEvent } from '@patternfly/react-core';

<Slider onChange={(event: SliderOnChangeEvent) => {}} />

Props

Slider

The main slider component.
*required
NameTypeDefaultDescription
areCustomStepsContinuousbooleanfalseFlag indicating if the slider is discrete for custom steps. This will cause the slider to snap to the closest value.
aria-describedbystringOne or more id's to use for the slider thumb's accessible description.
aria-labelledbystringOne or more id's to use for the slider thumb's accessible label.
classNamestringAdditional classes added to the slider.
customStepsSliderStepObject[]Array of custom slider step objects (value and label of each step) for the slider.
endActionsReact.ReactNodeActions placed at the end of the slider.
hasTooltipOverThumbbooleanfalseEnables a tooltip over the silder thumb. Defaults to the current value, or tooltipContent if provided.
inputAriaLabelstring'Slider value input'Accessible label for the input field.
inputLabelstring | numberText label that is place after the input field.
inputPosition'aboveThumb' | 'right' | 'end''end'Position of the input. Note "right" is deprecated. Use "end" instead
inputValuenumber0Value displayed in the input field.
isDisabledbooleanfalseAdds disabled styling, and disables the slider and the input component if present.
isInputLivebooleanfalseFlag indicating if the input value should also update the slider value as the user types. When false, the slider will update its value on blur or enter key press.
isInputVisiblebooleanfalseFlag to show value input field.
Deprecated: leftActionsReact.ReactNodeUse startActions instead. Actions placed at the start of the slider.
maxnumber100The maximum permitted value.
minnumber0The minimum permitted value.
onChange( event: SliderOnChangeEvent, value: number, inputValue?: number, setLocalInputValue?: React.Dispatch<React.SetStateAction<number>> ) => voidValue change callback. This is called when the slider value changes.
Deprecated: rightActionsReact.ReactNodeUse endActions instead. Actions placed to the right of the slider.
showBoundariesbooleantrueFlag to indicate if boundaries should be shown for slider that does not have custom steps.
showTicksbooleanfalseFlag to indicate if ticks should be shown for slider that does not have custom steps.
startActionsReact.ReactNodeActions placed at the start of the slider.
stepnumber1The step interval.
thumbAriaLabelstring'Value'Accessible label for the slider thumb.
thumbAriaValueTextstringAccessible text for the current value of the slider. Defaults to the current value.
tooltipContentReact.ReactNodeContent of the tooltip over the slider thumb. Defaults to the current value.
tooltipPropsOmit<TooltipProps, 'content'>Additional props passed to the tooltip.
valuenumber0Current value of the slider.

SliderStepObject

Properties for creating custom steps in a slider. These properties should be passed in as an object within an array to the slider component's customSteps property.
*required
NameTypeDefaultDescription
labelrequiredstringThe display label for the step value. This is also used for the aria-valuetext attribute.
valuerequirednumberValue of the step. This value is a percentage of the slider where the tick is drawn.
isLabelHiddenbooleanFlag to hide the label.

CSS variables

Expand or collapse columnSelectorVariableValue
.pf-v6-c-slider--pf-v6-c-slider--value
0
.pf-v6-c-slider--pf-v6-c-slider__step--InsetInlineStart
0
.pf-v6-c-slider--pf-v6-c-slider__rail--PaddingBlockStart
1rem
.pf-v6-c-slider--pf-v6-c-slider__rail--PaddingBlockEnd
1rem
.pf-v6-c-slider--pf-v6-c-slider__rail-track--Height
0.25rem
.pf-v6-c-slider--pf-v6-c-slider__rail-track--before--base--BackgroundColor
(In light theme) #e0e0e0
.pf-v6-c-slider--pf-v6-c-slider__rail-track--before--fill--BackgroundColor
(In light theme) #4394e5
.pf-v6-c-slider--pf-v6-c-slider__rail-track--before--BorderWidth
0px
.pf-v6-c-slider--pf-v6-c-slider__rail-track--before--BorderColor
transparent
.pf-v6-c-slider--pf-v6-c-slider__rail-track--before--BorderRadius
4px
.pf-v6-c-slider--pf-v6-c-slider__rail-track--before--fill--BackgroundColor--gradient-stop
0
.pf-v6-c-slider--pf-v6-c-slider__steps--FontSize
0.875rem
.pf-v6-c-slider--pf-v6-c-slider__steps--Height
0.875rem
.pf-v6-c-slider--pf-v6-c-slider__step-tick--InsetBlockStart
1rem
.pf-v6-c-slider--pf-v6-c-slider__step-tick--Width
0.15rem
.pf-v6-c-slider--pf-v6-c-slider__step-tick--Height
0.25rem
.pf-v6-c-slider--pf-v6-c-slider__step-tick--BackgroundColor
(In light theme) #1f1f1f
.pf-v6-c-slider--pf-v6-c-slider__step-tick--TranslateX
-50%
.pf-v6-c-slider--pf-v6-c-slider__step-tick--BorderWidth
0px
.pf-v6-c-slider--pf-v6-c-slider__step-tick--BorderColor
transparent
.pf-v6-c-slider--pf-v6-c-slider__step-tick--BorderRadius
0px
.pf-v6-c-slider--pf-v6-c-slider__step--m-active__slider-tick--BackgroundColor
(In light theme) #ffffff
.pf-v6-c-slider--pf-v6-c-slider__step--first-child__step-tick--TranslateX
0
.pf-v6-c-slider--pf-v6-c-slider__step--last-child__step-tick--TranslateX
-100%
.pf-v6-c-slider--pf-v6-c-slider__step-label--TranslateX
-50%
.pf-v6-c-slider--pf-v6-c-slider__step-label--InsetBlockStart
calc(2rem + 0.25rem)
.pf-v6-c-slider--pf-v6-c-slider__step--first-child__step-label--TranslateX
0
.pf-v6-c-slider--pf-v6-c-slider__step--last-child__step-label--TranslateX
-100%
.pf-v6-c-slider--pf-v6-c-slider__thumb--InsetBlockStart
calc(0.25rem / 2 + 1rem)
.pf-v6-c-slider--pf-v6-c-slider__thumb--Width
1rem
.pf-v6-c-slider--pf-v6-c-slider__thumb--Height
1rem
.pf-v6-c-slider--pf-v6-c-slider__thumb--InsetInlineStart
0
.pf-v6-c-slider--pf-v6-c-slider__thumb--BackgroundColor
(In light theme) #0066cc
.pf-v6-c-slider--pf-v6-c-slider__thumb--TranslateX
-50%
.pf-v6-c-slider--pf-v6-c-slider__thumb--TranslateY
-50%
.pf-v6-c-slider--pf-v6-c-slider__thumb--BorderWidth
0px
.pf-v6-c-slider--pf-v6-c-slider__thumb--BorderColor
transparent
.pf-v6-c-slider--pf-v6-c-slider__thumb--BorderRadius
24px
.pf-v6-c-slider--pf-v6-c-slider__thumb--BoxShadow--base
0 0 0 2px #ffffff, 0 0 0 3px #0066cc
.pf-v6-c-slider--pf-v6-c-slider__thumb--hover--BoxShadow
0 0 0 2px #ffffff, 0 0 0 3px #0066cc
.pf-v6-c-slider--pf-v6-c-slider__thumb--focus--BoxShadow
0 0 0 2px #ffffff, 0 0 0 3px #0066cc
.pf-v6-c-slider--pf-v6-c-slider__thumb--active--BoxShadow
0 0 0 2px #ffffff, 0 0 0 3px #0066cc, 0 0 2px 5px #92c5f9
.pf-v6-c-slider--pf-v6-c-slider__thumb--before--Width
44px
.pf-v6-c-slider--pf-v6-c-slider__thumb--before--Height
44px
.pf-v6-c-slider--pf-v6-c-slider__thumb--before--BorderRadius
24px
.pf-v6-c-slider--pf-v6-c-slider__thumb--before--TranslateX
-50%
.pf-v6-c-slider--pf-v6-c-slider__thumb--before--TranslateY
-50%
.pf-v6-c-slider--pf-v6-c-slider__value--MarginInlineStart
1rem
.pf-v6-c-slider--pf-v6-c-slider__value--c-form-control--width-base
calc(1rem + 1rem + 1.25rem)
.pf-v6-c-slider--pf-v6-c-slider__value--c-form-control--width-chars
3
.pf-v6-c-slider--pf-v6-c-slider__value--c-form-control--Width
calc(calc(1rem + 1rem + 1.25rem) + 3 * 1ch)
.pf-v6-c-slider--pf-v6-c-slider__value--m-floating--TranslateX
-50%
.pf-v6-c-slider--pf-v6-c-slider__value--m-floating--TranslateY
-100%
.pf-v6-c-slider--pf-v6-c-slider__value--m-floating--InsetInlineStart
0
.pf-v6-c-slider--pf-v6-c-slider__value--m-floating--ZIndex
200
.pf-v6-c-slider--pf-v6-c-slider__actions--MarginInlineEnd
0.5rem
.pf-v6-c-slider--pf-v6-c-slider__main--actions--MarginInlineStart
0.5rem
.pf-v6-c-slider--pf-v6-c-slider--m-disabled__rail-track--before--fill--BackgroundColor
(In light theme) #c7c7c7
.pf-v6-c-slider--pf-v6-c-slider--m-disabled__step--m-active__slider-tick--BackgroundColor
(In light theme) #a3a3a3
.pf-v6-c-slider--pf-v6-c-slider--m-disabled__thumb--BackgroundColor
(In light theme) #c7c7c7
.pf-v6-c-slider--pf-v6-c-slider__rail-track--before--fill--direction
right
:where(.pf-v6-m-dir-rtl, [dir=rtl]) .pf-v6-c-slider--pf-v6-c-slider__rail-track--before--fill--direction
left
.pf-v6-c-slider.pf-m-disabled--pf-v6-c-slider__rail-track--before--fill--BackgroundColor
(In light theme) #c7c7c7
.pf-v6-c-slider.pf-m-disabled--pf-v6-c-slider__step--m-active__slider-tick--BackgroundColor
(In light theme) #a3a3a3
.pf-v6-c-slider.pf-m-disabled--pf-v6-c-slider__thumb--BackgroundColor
(In light theme) #c7c7c7
.pf-v6-c-slider.pf-m-disabled .pf-v6-c-slider__thumb--pf-v6-c-slider__thumb--BoxShadow
none
.pf-v6-c-slider__step.pf-m-active--pf-v6-c-slider__step-tick--BackgroundColor
(In light theme) #ffffff
.pf-v6-c-slider__step:first-child--pf-v6-c-slider__step-tick--TranslateX
0
.pf-v6-c-slider__step:first-child--pf-v6-c-slider__step-label--TranslateX
0
.pf-v6-c-slider__step:last-child--pf-v6-c-slider__step-tick--TranslateX
-100%
.pf-v6-c-slider__step:last-child--pf-v6-c-slider__step-label--TranslateX
-100%
.pf-v6-c-slider__thumb:hover--pf-v6-c-slider__thumb--BoxShadow
0 0 0 2px #ffffff, 0 0 0 3px #0066cc
.pf-v6-c-slider__thumb:focus--pf-v6-c-slider__thumb--BoxShadow
0 0 0 2px #ffffff, 0 0 0 3px #0066cc
.pf-v6-c-slider__thumb:active--pf-v6-c-slider__thumb--BoxShadow
0 0 0 2px #ffffff, 0 0 0 3px #0066cc, 0 0 2px 5px #92c5f9
.pf-v6-c-slider__value.pf-m-floating--pf-v6-c-slider__value--MarginInlineStart
0
.pf-v6-c-slider__main ~ .pf-v6-c-slider__actions--pf-v6-c-slider__actions--MarginInlineEnd
0