Перейти к содержимому
v2.5.0
English
Русский
Документация

PhoneField

PhoneField — составной компонент, который объединяет поле телефона с маской и вложенный Select для кода страны.

API корня

PhoneField владеет полем телефона и моделью форматирования по стране.

ПропТипПо умолчанию
valuestring—
Контролируемый номер телефона в виде текста поля.
defaultValuestring''
Начальный номер телефона для неконтролируемого использования. По умолчанию ''. Его страна выбирается, если не задан code.
onChangeValue(value: string) => void—
Вызывается с номером телефона при его изменении.
codeCountryCode—
Код страны ISO 3166-1 alpha-2, по которому определяется формат маски телефона. Пример: 'US', 'RU', 'FR'.
defaultCodeCountryCode''
Код страны ISO 3166-1 alpha-2, по которому определяется формат маски телефона. Пример: 'US', 'RU', 'FR'.
onChangeCode(code: CountryCode) => void—
Код страны ISO 3166-1 alpha-2, по которому определяется формат маски телефона. Пример: 'US', 'RU', 'FR'.
strictMaskbooleantrue
Если true, маска телефона применяется строго — допускаются только корректные символы на своих позициях.
sizeTextFieldSize—
Визуальный размер текстового поля. Влияет на отступы, размер шрифта и общую высоту. 'sm': компактное поле; 'md': по умолчанию; 'lg': просторная раскладка
refRef<HTMLDivElement>—
Ref, передаваемый на элемент-обёртку. Полезен для программного управления, фокуса или интеграции.
errorboolean—
Показывает поле ввода в состоянии ошибки.

Также принимает все атрибуты <div>.

API дочерних частей

PhoneFieldInput

Видимое текстовое поле для номера телефона.

ПропТипПо умолчанию
refRef<HTMLInputElement>—
Ref, передаваемый на нижележащий нативный элемент <input>.

Также принимает все атрибуты <input>.

PhoneFieldSelect*

Вложенное семейство выбора страны, построенное вокруг того же состояния поля.

  • PhoneFieldSelect
  • PhoneFieldSelectHiddenSelect
  • PhoneFieldSelectCombobox
  • PhoneFieldSelectValue
  • PhoneFieldSelectIcon
  • PhoneFieldSelectListbox
  • PhoneFieldSelectOption

PhoneFieldSelect

ПропТипПо умолчанию
sizeSelectSize—
Визуальный размер элемента выбора.
variantSelectVariant—
Вариант визуального стиля элемента выбора.
disabledboolean—
Отключён ли select. Запрещает взаимодействие и применяет стиль отключённого состояния.
onChangeValue(value: V | undefined) => void—
Колбэк, вызываемый при выборе варианта.
refRef<HTMLDivElement>—
Ref на корневой элемент.
readOnlyboolean—
Если true, значение select нельзя изменить, но он остаётся фокусируемым.
typeaheadbooleantrue
Включает переход к варианту при наборе начала его подписи.
openboolean—
Управляет состоянием открытия выпадающего списка Select. Если задан, Select становится контролируемым компонентом и по этому значению определяет, открыт список или закрыт.
onChangeOpen(open: boolean) => void—
Колбэк, вызываемый при изменении состояния открытия. Вызывается со следующим состоянием открытия (true или false) каждый раз, когда пользователь открывает или закрывает Select. Полезен для синхронизации состояния Select с внешней логикой.
defaultOpenboolean—
Задаёт начальное состояние открытия Select в неконтролируемом режиме. Применяется только при первом рендере и дальше игнорируется.

Также принимает все атрибуты <div>.

PhoneFieldSelectHiddenSelect

Также принимает все атрибуты <select>.

PhoneFieldSelectCombobox

ПропТипПо умолчанию
refRef<HTMLButtonElement>—
Ref на нижележащий элемент <button>. Полезен для управления фокусом, позиционирования и императивного доступа.

Также принимает все атрибуты <button>.

PhoneFieldSelectValue

ПропТипПо умолчанию
placeholderstring—
Текст-заполнитель, который показывается, когда не выбран ни один вариант. Отображается, когда значение select пустое или undefined. После выбора значения заполнитель заменяется содержимым выбранного варианта.
refRef<HTMLSpanElement>—
Ref, передаваемый на корневой элемент span.

Также принимает все атрибуты <span>.

PhoneFieldSelectIcon

ПропТипПо умолчанию
sizeIconSize—
Предопределённый токен размера иконки. Может быть переопределён явными шириной и высотой.
refRef<SVGSVGElement>—
Ref на SVG-элемент
strokeWidthnumber—
Толщина обводки линий и фигур SVG (в px или pt).
childrenReactNode—
Содержимое иконки (обязательно). Принимает: иконки из ~/icons; собственный встроенный SVG; компоненты иконок сторонних библиотек (например, Lucide, Tabler)

Также принимает все HTML-атрибуты.

PhoneFieldSelectOption

ПропТипПо умолчанию
valueобязательныйCountryCode—
Значение этого варианта, которое передаётся в колбэк изменения при его выборе.
labelstring—
Простой текст варианта для поиска при наборе; используется вместо текста его содержимого.
childrenReactNode—
Содержимое, отображаемое для этого варианта. Может включать текст, иконки или сложную разметку.
sizeOptionSize—
Размер варианта для визуальной стилизации.
disabledboolean—
Отключает весь Option.
refRef<HTMLDivElement>—
Ref, передаваемый на корневой div варианта.

Также принимает все атрибуты <div>.

PhoneFieldSelectListbox

ПропТипПо умолчанию
refRef<HTMLDivElement>—
Ref на элемент-контейнер списка. Можно использовать для императивного доступа, например для измерений.

Также принимает все атрибуты <div>.

Хуки

usePhoneFieldContext

Продвинутый хук для собственных обёрток и интеграций.

Типы

ТипОпределениеПримечания
PhoneFieldPropsТип пропсов корняОсновная поверхность интеграции поля.
PhoneFieldInputPropsТип пропсов поля вводаПоведение ввода номера.
PhoneFieldSelectPropsТип пропсов корня selectПоверхность вложенного выбора страны.

Модель состояния

  • Состояние корня согласует страну и форматирование поля.
  • Строгая и нестрогая маска влияют на терпимость ввода.
  • Вложенную композицию select всё равно нужно рассматривать как одно семейство поля.

Заметки по интеграции

  • Валидируйте и нормализуйте каноническое значение вне слоя представления.
  • Перепроверяйте вставку и автозаполнение, а не только посимвольный набор.
  • Держите смену страны и логику валидации синхронизированными.