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

Выбор периода

Date range picker — поле формы для периода, например поездки или отчётного окна. Начало и конец вводят с клавиатуры или выбирают в календаре на два месяца.

Стабильный Figma
ОбзорИспользованиеAPIДоступность
<tk-date-range-picker label="Stay dates" helper="For example, 27 3 2026"
  start-name="check-in" end-name="check-out"
  min="2026-01-01" max="2026-12-31"></tk-date-range-picker>

У поля периода свои подпись, подсказка и ошибка; не оборачивайте его в Field.

Анатомия

Часть Что это
tk-date-range-picker сам элемент
подпись называет пару дат, например «Stay dates»; звёздочка при required
подсказка необязательный текст под подписью
part field рамка с обоими полями
part input поля начала и конца с именами «Start date» и «End date»; в них всегда можно печатать
разделитель «–» между полями
кнопка очистки «Clear dates»; появляется, когда есть значение
кнопка календаря открывает календарь
ошибка текст под рамкой
part popover панель с пресетами и Calendar на два месяца

У каждой даты своё поле и своё имя, поэтому скринридер отличает начало от конца. Не заменяйте их одним текстовым полем «начало – конец».

Размеры

<tk-date-range-picker label="Report period" size="large"
  start="2026-03-01" end="2026-03-31"></tk-date-range-picker>
size Высота Отступы по бокам Текст значения
medium (по умолчанию) 32px space-8 / space-4 Body Small (14/20)
large 36px space-10 / space-4 Body Medium (16/24)

Календарь одного размера при любом размере поля.

Состояния

<tk-date-range-picker label="Billing period" disabled
  start="2026-02-01" end="2026-02-28"></tk-date-range-picker>
<tk-date-range-picker label="Trip dates" required
  error="Enter a start and end date"></tk-date-range-picker>

При наведении рамка не меняется. Фокус в любом из полей окрашивает рамку и утолщает её внутрь. При ошибке рамка остаётся красной, даже в фокусе.

  • readonly: даты можно выделить и скопировать; кнопки не работают.
  • disabled: ничего не работает, даты не уходят с формой.
  • error: ваш текст под рамкой. Он заменяет любое сообщение, которое пишет само поле.

Выбор периода

  • Календарь открывает его кнопка или Down в любом из полей; он открывается на дате начала или на сегодня.
  • Первый выбор задаёт начало, календарь остаётся открытым. При наведении виден период.
  • Второй выбор задаёт конец, вызывает change и закрывает календарь.
  • Выбор дня раньше начала сдвигает начало.
  • Esc, клик снаружи или Tab закрывают календарь и отбрасывают недовыбранный период. Прежний период остаётся.
  • В любое поле можно печатать в любой момент, в тех же форматах, что у Date picker. Текст разбирается по Enter или когда фокус уходит из поля.

Пресеты

Положите кнопки в слот presets; они встанут слева от календаря. Кнопка с data-start и data-end (даты ISO) выбирает этот период и закрывает календарь без всякого скрипта.

March 2026
<tk-date-range-picker label="Report period" start-name="from" end-name="to">
  <tk-button slot="presets" variant="ghost" size="small"
    data-start="2026-03-01" data-end="2026-03-31">March</tk-button>
  <tk-button slot="presets" variant="ghost" size="small"
    data-start="2026-01-01" data-end="2026-12-31">2026</tk-button>
</tk-date-range-picker>

Пресеты вроде «Последние 7 дней» зависят от сегодняшней даты, поэтому их пишете вы: посчитайте даты в своём коде или вызовите selectRange().