Input Mask

Input Mask - компонент для ввода данных с автоматическим форматированием. Идеально подходит для полей с фиксированным форматом: телефонные номера, даты, кредитные карты, почтовые индексы и многое другое.


Import

Usage

Базовый пример использования для ввода номера телефона.

Символы маски

Input Mask использует специальные символы для определения формата:

СимволОписаниеПример
9Любая цифра (0-9)999-9999 → 123-4567
aЛюбая буква (a-z, A-Z)aaa-999 → ABC-123
*Любой символ***-*** → AB1-2C3

Все остальные символы в маске (дефисы, скобки, точки и т.д.) будут добавлены автоматически.

Популярные форматы

Телефонные номера

Различные форматы телефонных номеров для разных стран и регионов.

Дата и время

Форматы для ввода даты, времени и их комбинаций.

Кредитные карты

Форматы для ввода данных кредитной карты.

Основные возможности

Controlled

Вы можете контролировать значение поля используя свойства value и onValueChange.

Disabled

Отключенное состояние блокирует взаимодействие с компонентом.

Read Only

Режим только для чтения позволяет просматривать данные без возможности редактирования.

With Validation

Используйте валидацию совместно со свойствами isInvalid и errorMessage.

With Description

Добавьте описание для лучшего UX.

Стилизация

Variants

Input Mask поддерживает все варианты стилей из HeroUI Input.

Sizes

Input Mask поддерживает три размера: sm, md (по умолчанию) и lg.

Colors

Input Mask поддерживает различные цветовые темы.

Дополнительные форматы

Почтовые индексы

Форматы почтовых индексов для различных стран.

Валюты

Форматы для ввода денежных сумм в различных валютах.

IP адреса

Форматы для ввода IPv4 адресов и масок подсети.

Опции маски

Mask Options

Вы можете настроить поведение маски с помощью свойства maskOptions.

Доступные опции:

ОпцияТипОписаниеПо умолчанию
clearIncompletebooleanОчищать неполный ввод при потере фокусаfalse
showMaskOnFocusbooleanПоказывать маску при фокусеfalse
showMaskOnHoverbooleanПоказывать маску при наведенииfalse

Свойства

InputMask Props

АтрибутТипОписаниеПо умолчанию
maskstringМаска для ввода (обязательное)-
maskOptionsInputMaskOptionsДополнительные опции маски{}

Наследуемые свойства Input

Input Mask наследует все свойства от HeroUI Input компонента:

  • label: Label для поля
  • placeholder: Placeholder текст
  • description: Описание под полем
  • errorMessage: Сообщение об ошибке
  • isInvalid: Флаг невалидного состояния
  • isDisabled: Флаг отключенного состояния
  • isReadOnly: Флаг только для чтения
  • isRequired: Флаг обязательного поля
  • isClearable: Показать кнопку очистки
  • labelPlacement: Позиция label (inside, outside, outside-left, outside-top)
  • size: Размер компонента (sm, md, lg)
  • color: Цвет темы
  • variant: Вариант стиля (flat, bordered, faded, underlined)
  • radius: Радиус скругления
  • startContent: Контент слева от поля
  • endContent: Контент справа от поля
  • value: Значение (для контролируемого компонента)
  • defaultValue: Начальное значение
  • onValueChange: Коллбэк при изменении значения
  • И другие свойства из Input API

Slots

Input Mask использует slots от базового Input компонента:

  • base: Обертка компонента
  • label: Label элемент
  • mainWrapper: Обертка когда label находится outside/outside-left
  • inputWrapper: Обертка для input
  • innerWrapper: Внутренняя обертка для содержимого
  • input: Поле ввода
  • clearButton: Кнопка очистки
  • helperWrapper: Обертка для description и errorMessage
  • description: Описание
  • errorMessage: Сообщение об ошибке

Data Attributes

Input Mask имеет следующие data-атрибуты на элементе base:

  • data-invalid: Когда поле невалидно (основано на isInvalid)
  • data-required: Когда поле обязательно (основано на isRequired)
  • data-readonly: Когда поле только для чтения (основано на isReadOnly)
  • data-disabled: Когда поле отключено (основано на isDisabled)
  • data-hover: При наведении курсора
  • data-focus: При фокусе
  • data-focus-within: При фокусе на элементе или его дочерних элементах
  • data-focus-visible: При фокусе с клавиатуры

Примеры использования

С React Hook Form

Кастомная маска для паспорта

Маска для СНИЛС

Маска для ИНН

Динамическая валидация

Международные форматы

Accessibility

  • Input Mask построен на основе HeroUI Input с полной поддержкой доступности
  • Поддерживает навигацию с клавиатуры
  • Автоматическое форматирование не мешает вводу
  • Label корректно связаны с полем ввода
  • Поддерживает ARIA атрибуты для скрин-ридеров
  • Маска применяется прозрачно для пользователей программ чтения с экрана

Примечания

  • Маска применяется автоматически во время ввода
  • Символы маски (дефисы, скобки и т.д.) добавляются автоматически
  • При копировании значения включает все символы форматирования
  • Используйте clearIncomplete: true для полей, требующих полного ввода
  • Для сложных форматов рекомендуется добавлять description с примером