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.
Доступные опции:
| Опция | Тип | Описание | По умолчанию |
|---|---|---|---|
| clearIncomplete | boolean | Очищать неполный ввод при потере фокуса | false |
| showMaskOnFocus | boolean | Показывать маску при фокусе | false |
| showMaskOnHover | boolean | Показывать маску при наведении | false |
Свойства
InputMask Props
| Атрибут | Тип | Описание | По умолчанию |
|---|---|---|---|
| mask | string | Маска для ввода (обязательное) | - |
| maskOptions | InputMaskOptions | Дополнительные опции маски | {} |
Наследуемые свойства 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с примером

