Slider

Компонент, который позволяет пользователю выбрать значение из заданного диапазона, перемещая ползунок по горизонтальной шкале. Поддерживает как выбор одного значения, так и диапазона значений.

Загружается...

Компонент поддерживает работу как в неконтролируемом режиме, так и контролируемом. Это стандартное поведение React-компонентов, прочитать про это можно в документации React ↗.

Для использования неконтролируемого режима достаточно просто не передавать value или передавать defaultValue, если требуется задать значение по умолчанию. Для контролируемого режима используйте связку свойств value/onChange для задания значения и его изменения.

// Неконтролируемое состояние
<Slider step={0.2} min={0} max={1} defaultValue={0.4} />;
 
// Контролируемое состояние
const [valueStep, setValueStep] = useState(0.4);
 
<Slider step={0.2} min={0} max={1} value={valueStep} onChange={setValueStep} />;

Для возможности задать диапазон значений, передавайте свойство multiple={true}.

В таком случае свойства defaultValue или value (для неконтролируемого режима и контролируемого соответственно) принимают массив из двух числовых значений - [m,n] (где m - значение начального ползунка, n - конечного).

Загружается...

Задаётся свойством size.

  • "s" — маленький;
  • "m" — средний;
  • "l" — большой (по умолчанию).

Значения, соответствующие каждому размеру, зависят от параметра адаптивности sizeY. В режиме sizeY="regular" (мобильные устройства) значения каждого из размеров будут увеличены по сравнению с sizeY="compact".

Задаётся свойством withTooltip.

При значении свойства withTooltip={true} наведение на ползунок или фокус на нём вызывает появление всплывающей подсказки с текущим значением. Это особенно полезно, когда точное значение важно для пользователя.

Загружается...

Свойство disabled блокирует взаимодействие с компонентом и добавляет визуальную индикацию недоступности.

Загружается...

Для возможности тестирования доступны свойства с постфиксом *TestId, которые вы можете использовать, чтобы находить необходимые части компонента:

  • startThumbTestIdid для первого (начального) ползунка;
  • endThumbTestIdid для второго (конечного) ползунка (только при multiple={true}).
<Slider multiple startThumbTestId="startSlider" endThumbTestId="endSlider" />

Компонент реализован с учётом требований доступности:

  • использует нативный элемент input[type="range"] для базовой доступности;
  • поддерживает управление с клавиатуры (стрелки влево/вправо для изменения значения);
  • поддерживает все стандартные aria-атрибуты.

Для корректной работы скринридеров необходимо вручную передавать некоторые параметры:

  • для обозначения того, за что отвечает ползунок, следует передать либо aria-label, либо aria-labelledby;
  • по умолчанию скринридер будет читать значение, которое передаётся в value/defaultValue. Чтобы повлиять на это, используйте aria-valuetext или getAriaValueText. Первое свойство полезно для контролируемого компонента, а второе для неконтролируемого, потому что в параметрах передаёт текущее значение ползунка.
СвойствоОписание
defaultValuenumber | [number, number]

Значение слайдера по умолчанию. Значения слайдера по умолчанию в виде массива [начальное, конечное].

По умолчанию: multipleProp ? [min, max] : min
disabledboolean

Блокировка взаимодействия с компонентом.

По умолчанию: -
endThumbTestIdstring

Передает атрибут data-testid для второго ползунка когда multiple=true.

По умолчанию: -
getAriaLabel((index: number) => string)

Тоже самое, что и aria-label, но на вход можно получать индекс текущего ползунка и в зависимости от этого выдавать разный текст.

По умолчанию: -
getAriaValueText((value: number, index: number) => string)

В отличие от aria-valuetext, позволяет более гибко форматировать текст в зависимости от значения ползунка.

Полезно при использовании компонента как неконтролируемого.

По умолчанию: -
getRootRefRef<HTMLDivElement>
По умолчанию: -
maxnumber

Максимальное значение слайдера.

По умолчанию: 100
minnumber

Минимальное значение слайдера.

По умолчанию: 0
multipleboolean

Флаг множественного выбора (должен быть false или не указан). Флаг множественного выбора (должен быть true).

По умолчанию: -
onChange((value: number, event: CustomTouchEvent | ChangeEvent<Element>) => void) | ((value: [number, number], event: CustomTouchEvent | ChangeEvent<...>) => void)

Обработчик изменения значения слайдера. Обработчик изменения значений слайдера.

По умолчанию: -
size"s" | "m" | "l"

Размер ползунка.

По умолчанию: l
startThumbTestIdstring

Передает атрибут data-testid для первого ползунка.

По умолчанию: -
stepnumber

Шаг изменения значения слайдера.

По умолчанию: 1
valuenumber | [number, number]

Текущее значение слайдера. Текущие значения слайдера в виде массива [начальное, конечное].

По умолчанию: -
withTooltipboolean

Включает отображение всплывающей подсказки при взаимодействии с ползунком.

По умолчанию: -