НачалоОсновыКомпонентыТексты

Number stepper

Number stepper задаёт небольшое целое число кнопками − и +: количество товара, гостей, билетов.

Стабильный Figma
ОбзорИспользованиеAPIДоступность
<tk-number-stepper label="Adults" unit="adults" value="2" min="1" max="8"></tk-number-stepper>

Анатомия

Часть Что это
tk-number-stepper сам элемент; одна остановка Tab
part field рамка ряда
part decrement кнопка −; удерживайте, чтобы повторять
part value число посередине; это spinbutton, и фокус получает оно
part increment кнопка +; удерживайте, чтобы повторять

Stepper занимает ровно столько места, сколько нужно содержимому. Своей подписи он не показывает.

Подпись

Guests
<div style="display: flex; align-items: center; justify-content: space-between; max-width: 280px">
  <span>Guests</span>
  <tk-number-stepper label="Guests" unit="guests" value="3" min="1" max="10"></tk-number-stepper>
</div>
  • Поставьте рядом видимую подпись и повторите те же слова в label. label — это имя, которое слышат скринридеры; сам stepper его не рисует.
  • unit добавляет слово к тому, что слышат скринридеры: «3 guests»; на экране остаётся «3».
  • Не оборачивайте stepper в Field. Он называет себя сам.

Значение

  • value — целое число (по умолчанию 0); отправляется под именем name.
  • min по умолчанию 0. Для «хотя бы один» задайте min="1". У max значения по умолчанию нет; задайте его, если есть настоящий предел, иначе + никогда не отключится.
  • step по умолчанию 1 и должен быть целым. Значение всегда лежит на сетке шага и внутри диапазона.
  • Каждое нажатие — это изменение: приходят input и change. Если удерживать кнопку, пара событий приходит на каждый повтор.

Размеры

<tk-number-stepper label="Medium stepper" value="2"></tk-number-stepper>
<tk-number-stepper label="Large stepper" size="large" value="2"></tk-number-stepper>
size Высота и ширина кнопки Текст значения Иконка
medium (по умолчанию) 32px Body Small (14/20) icon-size-16
large 36px Body Medium (16/24) icon-size-16

Оба размера не меньше минимальной цели нажатия 24px. Размера small нет: с size="small" stepper рисуется как medium и пишет предупреждение в консоль.

Состояния

<tk-number-stepper label="Tickets at minimum" value="1" min="1" max="4"></tk-number-stepper>
<tk-number-stepper label="Tickets" value="2" disabled></tk-number-stepper>

При наведении рамка не меняется, а при фокусе окрашивается в цвет фокуса и утолщается внутрь. Кнопки − и + под курсором подсвечиваются.

  • На min или max соответствующая кнопка отключается.
  • disabled: на stepper нельзя перейти и нельзя его изменить, а в форму он не попадает.

Ошибки у stepper не бывает: значение не может выйти из диапазона.

Удаление на минимуме и кнопка «Добавить»

Два сценария корзины вы собираете вокруг stepper сами:

  • Удаление на минимуме: задайте min="1" и поставьте рядом Icon button с корзиной.
  • Сначала «Добавить»: пока товар не добавлен, показывайте Button «Добавить», а потом stepper.