Перейти до вмісту
tatetUI

Input

Текстове поле з лейблом, підказкою та станом помилки.

Поле бере класи з uiFieldStyles — спільного контракту, на якому тримаються всі поля бібліотеки. Завдяки цьому UiInput, UiTextarea і UiSelect лишаються однаковими без копіювання довгих рядків класів.

Приклад

Стани

Від 3 до 20 символів.

API

Props

НазваТипТиповоОпис
typenumbertextemailpasswordsearchtelurl"text"Тип нативного поля. Впливає і на екранну клавіатуру телефона, і на автозаповнення браузера.
sizeFieldSize"md"Висота поля. На мобільному кожен розмір вищий за десктопний.
modelValuestring | numberЗначення поля. Використовуйте через `v-model`.
labelstringВидимий лейбл. Пов'язується з полем через `for`/`id` автоматично.
placeholderstring
errorstringТекст помилки. Сама його наявність вмикає стан помилки — окремого булевого прапорця немає навмисно, щоб не було стану «червоне поле без пояснення чому».
hintstringПідказка під полем. Ховається, коли показано помилку.
autocompletestringЗначення нативного `autocomplete`. Без нього браузер не підставить збережені дані.
idstringСтабільний DOM id. `name` використовується лише для форми.
namestring
disabledboolean
readonlyboolean
requiredboolean

Події

НазваPayloadОпис
update:modelValue[value: string | number]Зміна значення. Для `type="number"` порожнє поле віддає `null`, а не `NaN`.
focus[event: FocusEvent]Поле отримало фокус.
blur[event: FocusEvent]Поле втратило фокус.

Слоти

НазваОпис
leadingІконка або кнопка ліворуч усередині поля.
trailingІконка або кнопка праворуч усередині поля.

Доступно через ref

НазваТипОпис
focus() => voidСтавить фокус на поле.
select() => voidВиділяє весь текст.

Коли використовувати

Для будь-якого однорядкового введення. Для багаторядкового — UiTextarea.

Коли НЕ використовувати

Не ставте поле без label. placeholder замість лейбла зникає при першому ж символі, і користувач більше не бачить, що саме він заповнює.

Доступність

Окремого булевого прапорця помилки немає навмисно: стан вмикає сама наявність тексту в error. Так неможливо отримати червоне поле без пояснення чому.

aria-describedby вказує рівно на один активний опис. Якби туди потрапляли і підказка, і помилка одночасно, скрінрідер зачитав би інструкцію, яку користувач щойно порушив, раніше за причину відмови.

Мобільні розміри вищі за десктопні (h-11md:h-9): нижче 44px палець промахується.

Портування

Разом із компонентом копіюйте uiFieldStyles.ts — без нього поле лишиться без стилів.