DatePicker
DatePicker — поле даты: текст по маске и кнопка справа, которая открывает Calendar в DropdownPanel. Сам календарь тот же, что и у отдельного Calendar, — листание, переход к месяцам и годам, границы min / max работают так же.
Дату можно набрать с клавиатуры в виде ДД.ММ.ГГГГ: текст разбирается по Enter и при уходе из поля. Невалидная строка или дата за границами откатывается к текущему значению, стёртая — даёт null. Выбор дня в календаре закрывает панель.
Значение — один Date или null, контролируемая модель: пара value / onValueChange. Оболочка — как у Input: label, error, iconLeft и ступень size из общего словаря визуальных пропсов.
Использует: ButtonIcon, Calendar, Field, Input, DropdownPanel
Анатомия
Примеры
С временем
withTime добавляет под календарь поле времени: оно меняет часы и минуты выбранной даты, а маска текста становится ДД.ММ.ГГГГ ЧЧ:ММ. Выбор дня сохраняет уже заданное время (у пустого значения — 00:00) и оставляет панель открытой, чтобы следом поправить время. Пока дата не выбрана, поле времени погашено.
Секунды
withSeconds вместе с withTime добавляет секунды и в поле времени, и в маску текста. Без него секунды значения обнуляются при любой правке.
Границы выбора
min и max ограничивают доступные дни: в календаре дни за границами тускнеют, а набранная вне их дата откатывается. Граница — по дням, время не учитывается.
Ошибка
Непустой error помечает поле как invalid и рисует текст ошибки под ним — как у Input.
Размер
Ступень size задаёт высоту поля и кегль — шкала та же, что у Input и кнопок. Календарь в панели остаётся базового размера.
API
| Prop | Type | Default |
|---|---|---|
value*Выбранный момент (контролируемая модель); null — пусто | Date | null | - |
onValueChange*Вызывается при выборе в календаре, правке времени и подтверждении набранного текста (Enter, уход фокуса); стёртый текст — null | (value: Date | null) => void | - |
withTimeПоле времени под календарём; текст в поле — «ДД.ММ.ГГГГ ЧЧ:ММ» | boolean | false |
withSecondsСекунды в поле времени и в тексте — только вместе с withTime | boolean | false |
minМинимальная доступная дата — всё, что раньше, не выбирается | Date | - |
maxМаксимальная доступная дата — всё, что позже, не выбирается | Date | - |
placeholderПлейсхолдер поля; по умолчанию — маска формата («ДД.ММ.ГГГГ») | string | - |
autoFocusФокус в поле при монтировании | boolean | - |
openОткрытость календаря (контролируемая); без пропа — своя | boolean | - |
onOpenChangeВызывается на любое открытие и закрытие календаря — кнопкой, выбором дня, Esc и кликом вне панели | (open: boolean) => void | - |
sizeРазмер компонента | Size | - |
radiusСкругление углов: circle — «таблетка» | Radius | - |
labelТекст лейбла над контролом | ReactNode | - |
disabledОтключает поле: контрол внутри становится недоступен | FieldArkRootProps["disabled"] | - |
readOnlyЗначение видно, но изменить его нельзя | FieldArkRootProps["readOnly"] | - |
invalidПомечает поле ошибочным: контрол получает | FieldArkRootProps["invalid"] | - |
requiredПомечает поле обязательным | FieldArkRootProps["required"] | - |
errorТекст ошибки под контролом; при наличии поле помечается как invalid | ReactNode | - |
iconLeftДекоративная иконка слева внутри контрола | Icon | - |
Наследуется от Pick<VisualProps, K>, Omit<FieldShellProps, "iconRight">