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
Свойство disabled блокирует взаимодействие с компонентом и добавляет визуальную индикацию недоступности.
Тестирование (e2e)
Для возможности тестирования доступны свойства с постфиксом *TestId, которые вы можете использовать,
чтобы находить необходимые части компонента:
startThumbTestId—idдля первого (начального) ползунка;endThumbTestId—idдля второго (конечного) ползунка (только приmultiple={true}).
<Slider multiple startThumbTestId="startSlider" endThumbTestId="endSlider" />Доступность (a11y)
Компонент реализован с учётом требований доступности:
- использует нативный элемент
input[type="range"]для базовой доступности; - поддерживает управление с клавиатуры (стрелки влево/вправо для изменения значения);
- поддерживает все стандартные
aria-атрибуты.
Для корректной работы скринридеров необходимо вручную передавать некоторые параметры:
- для обозначения того, за что отвечает ползунок, следует передать либо
aria-label, либоaria-labelledby; - по умолчанию скринридер будет читать значение, которое передаётся в
value/defaultValue. Чтобы повлиять на это, используйтеaria-valuetextилиgetAriaValueText. Первое свойство полезно для контролируемого компонента, а второе для неконтролируемого, потому что в параметрах передаёт текущее значение ползунка.
Свойства и методы
| Свойство | Описание |
|---|---|
defaultValue | number | [number, number]Значение слайдера по умолчанию. Значения слайдера по умолчанию в виде массива [начальное, конечное]. По умолчанию: multipleProp ? [min, max] : min |
disabled | booleanБлокировка взаимодействия с компонентом. По умолчанию: - |
endThumbTestId | stringПередает атрибут По умолчанию: - |
getAriaLabel | ((index: number) => string)Тоже самое, что и По умолчанию: - |
getAriaValueText | ((value: number, index: number) => string)В отличие от Полезно при использовании компонента как неконтролируемого. По умолчанию: - |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
max | numberМаксимальное значение слайдера. По умолчанию: 100 |
min | numberМинимальное значение слайдера. По умолчанию: 0 |
multiple | booleanФлаг множественного выбора (должен быть false или не указан). Флаг множественного выбора (должен быть true). По умолчанию: - |
onChange | ((value: number, event: CustomTouchEvent | ChangeEvent<Element>) => void) | ((value: [number, number], event: CustomTouchEvent | ChangeEvent<...>) => void)Обработчик изменения значения слайдера. Обработчик изменения значений слайдера. По умолчанию: - |
size | "s" | "m" | "l"Размер ползунка. По умолчанию: l |
startThumbTestId | stringПередает атрибут По умолчанию: - |
step | numberШаг изменения значения слайдера. По умолчанию: 1 |
value | number | [number, number]Текущее значение слайдера. Текущие значения слайдера в виде массива [начальное, конечное]. По умолчанию: - |
withTooltip | booleanВключает отображение всплывающей подсказки при взаимодействии с ползунком. По умолчанию: - |