Skip to content

CdsInput

Обвязка поля ввода: метка, описание, внешние иконки, блок сообщений и валидация по правилам. Сам контрол вы кладёте в слот default — обычно это CdsField с вашим input внутри.

Storybook GitLab
Покрытие тестами: 100% — хорошее покрытие
API в спеках
52 / 52 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
59 юнит · 0 браузерных
Известные баги
5 зафиксированы тестом it.fails
Покрытие кода
100% строк · 97.4% ветвей замер v4.0.0-alpha.13
A11y (axe)
нарушений нет в 7 историях замер v4.0.0-alpha.11

Для обычного ввода берите готовые поля — CdsTextInput, CdsSelect, CdsTextArea: они уже собраны из CdsInput и CdsField. CdsInput нужен, когда своего контрола нет в библиотеке.

Анатомия ​

CdsInput раскладывает по сетке метку (CdsLabel), описание (CdsDescription), внешние иконки, ваш контрол и блок сообщений (CdsMessages). Слот default отдаёт id, messagesId и состояния валидации — все они рефы, поэтому в шаблоне обращайтесь к id.value.

Вариации ​

Метка и описание ​

Свойство label называет поле, description добавляет пояснение под меткой. Одноимённые слоты принимают произвольную разметку.

Sandbox Storybook

Сообщения и подсказки ​

Под полем одна текстовая строка, и свойства делят её по состояниям: messages виден в покое, hint — пока focused, error-messages — поверх остальных. Состояние фокуса CdsInput не отслеживает сам: передайте его пропом focused.

Sandbox Storybook

Скрытие деталей ​

Свойство hide-details убирает нижний блок целиком — поля можно ставить вплотную. Значение auto скрывает блок, только пока показывать нечего.

Sandbox Storybook

Иконки ​

Свойства prepend-icon и append-icon ставят иконку снаружи контрола. Клики по ним ловят @click:prepend и @click:append.

Sandbox Storybook

Направление ​

Свойство direction меняет сетку: horizontal ставит иконки по бокам контрола, vertical — над и под ним.

Sandbox Storybook

Сценарии использования ​

Валидация своего поля ​

Свойство rules принимает функции проверки, validation-value — значение, которое им передавать. Результат приходит в слот через isValid: свяжите его с пропом error у CdsField, и рамка покраснеет вместе с сообщением.

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
activeColorstring | undefined—Цвет компонента, когда он находится в активном состоянии
appendIconIconValue | undefined—Иконка в слоте append после контента
baseColorstring | undefined—Цвет неактивного компонента
bgColorstring | undefined—Цвет фона компонента
centerAffixboolean | undefinedtrueВыровнять по вертикали элементы appendInner, prependInner, clearIcon и label по центру.
colorstring | undefined—Цвет компонента
descriptionstring | undefined—Описание компонента, отображаемое под меткой
direction"horizontal" | "vertical" | undefined'horizontal'Переключение между горизонтальным или вертикальным отображением.
disabledboolean | null | undefinednullЗаблокированное состояние
errorboolean | undefined—Отображает компонент в состояние ошибки
errorMessagesstring | readonly string[] | null | undefined[]Отображает компонент в состояние ошибки и передает пользовательские сообщения об ошибках. Будет объединяться с любыми проверками, заданными в свойстве rules. Это поле не запускает валидацию.
focusedboolean | undefined—Управляет состоянием фокуса компонента. Когда true, компонент считается сфокусированным и может применять соответствующие стили или поведение.
hideDetailsboolean | "auto" | undefined—Скрытие блока с деталями (сообщениями и подсказками). При значении 'auto' блок скрывается, если нет сообщений
hideMessagesboolean | undefined—Скрыть сообщения под полем ввода
hintstring | undefined—Текст подсказки, отображаемый под полем ввода
iconColorstring | boolean | undefined—Цвет иконки. Принимает булево значение или строку с цветом
idstring | undefined—Уникальный идентификатор компонента
labelstring | undefined—Текст метки (label) компонента
maxErrorsstring | number | undefined1Максимальное число отображаемых ошибок при валидации
maxWidthstring | number | undefined—Максимальная ширина компонента
messagesstring | readonly string[] | undefined[]Сообщения для отображения под полем ввода
minWidthstring | number | undefined—Минимальная ширина компонента
modelValueany—Значение компонента в v-model. Если компонент поддерживает свойство multiple, по умолчанию используется пустой массив.
namestring | undefined—Имя поля ввода
persistentHintboolean | undefined—Всегда отображать подсказку, а не только при фокусе
prependIconIconValue | undefined—Иконка в слоте prepend перед контентом
readonlyboolean | null | undefinednullТолько для чтения
rulesreadonly ValidationRule[] | undefined[]Принимает массив, состоящий из элементов различных типов: функций, логических значений и строк. Функции принимают входное значение в качестве аргумента и должны возвращать либо true / false, либо строку, содержащую сообщение об ошибке. Поле ввода перейдет в состояние ошибки, если функция возвращает значение false (или любое значение в массиве содержит false) либо является строкой.
sizenumber | "xs" | "sm" | "md" | "lg" | "xl" | undefined'md'Размер компонента
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента
validateOnValidateOn | undefined—Изменяет тип события, при котором запускается валидация
validationValueany—Значение, используемое при применении правил валидации
widthstring | number | undefined—Ширина компонента

События

ИмяТипОписание
update:modelValue[value: any]Событие, которое срабатывает при изменении модели компонента

Слоты

ИмяТипОписание
appendCdsInputSlotДобавляет элемент после поля ввода
defaultCdsInputSlotСлот по-умолчанию
description{ description: string | undefined; props: Record<string, any>; }Слот по умолчанию для компонента CdsDescription
detailsCdsInputSlotСлот для ввода пользовательских данных, позволяющее настраивать отображение сообщений
label{ label: string | undefined; props: Record<string, any>; }Слот по умолчанию для компонента CdsLabel
messageCdsMessageSlotСлот для настройки содержания сообщения
messagesCdsInputSlotСлот для ввода пользовательских данных, позволяющее настраивать отображение сообщений
prependCdsInputSlotДобавляет элемент до поля ввода

Exposed

ИмяТипОписание
isDirtybooleanЯвляется ли поле ввода "грязным"
isDisabledbooleanЯвляется ли поле ввода заблокированным
isPurebooleanЯвляется ли поле ввода "чистым"
isReadonlybooleanЯвляется ли поле ввода только для чтения
isValidboolean | nullЯвляется ли поле ввода валидным
isValidatingbooleanЯвляется ли поле ввода в процессе валидации
reset() => Promise<void>Функция сброса поля ввода в исходное состояние
resetValidation() => Promise<void>Функция сброса валидации поля ввода
validate(silent?: boolean) => Promise<string[]>Функция валидации поля ввода