Skip to content

SInput

Базовые поля ввода.

В чем отличие от аналогов?

В отличие от популярных библиотек компонентов для Vue3:

  1. Исключает опции, которые, как правило, не используются в стартапах (напр. размеры полей), но из-за которых разные программисты реализовывают компонент по-разному. Без лишних опций унифицируется код и внешний вид компонентов, упрощается поддержка и взаимозаменяемость.

Стандартные поля ввода

<SInput v-model="value" placeholder="Обычный инпут" />

Также поддерживаются стандартные HTML-типы полей:

<SInput v-model="value1" type="number" placeholder="Номер" />
<SInput v-model="value2" type="email" placeholder="Email" />
<SInput v-model="value3" type="password" placeholder="Пароль" />

Многострочное поле ввода

<SInput v-model="value" type="textarea" placeholder="Введите длинный текст..." />

Префикс / суффикс

Простой текст задаём пропами prefix / suffix, а для произвольного контента (иконки и т.п.) — одноимёнными слотами:

$
<SInput v-model="value1" prefix="$" type="number" placeholder="Префикс" />
<SInput v-model="value2" type="number" placeholder="Кастомный префикс">
    <template #prefix>
        <FontAwesomeIcon icon="star" />
    </template>
</SInput>
<SInput v-model="value3" suffix="₽" type="number" placeholder="Суффикс" />
<SInput v-model="value4" type="number" placeholder="Кастомный суффикс">
    <template #suffix>
        <STooltip>Подсказка к полю</STooltip>
    </template>
</SInput>

Недоступное состояние

<SInput v-model="value" disabled />

Поле ввода с кнопкой очистки

Добавляем атрибут clearable — кнопка очистки появляется, когда в поле есть значение:

<SInput v-model="value" clearable placeholder="Введите текст" />

События

<SInput @change="(newValue) => console.log(newValue)" placeholder="Печатаем и смотрим консоль" style="width: 100%" />

Кастомные стили для инпута

Если нужно задать кастомные стили именно для вложенного инпута, то задаем их через input-style:

<SInput v-model="value" input-style="text-align: center" />

Интерфейс компонента

Свойства (Props)

НазваниеТипПо умолчаниюОписание
modelValue / v-modelnumber | string | nullundefinedСвязанное значение поля ввода.
type'text' | 'string' | 'number' | 'email' | 'password' | 'textarea''text'Внутренний тип поля. При значении textarea отрисовывается многострочное поле.
placeholderstringundefinedТекст-заполнитель, отображаемый, когда поле пустое.
prefixstringundefinedПростой текст для отображения в начале поля. Добавляет класс .has-prefix обертке.
suffixstringundefinedПростой текст для отображения в конце поля. Добавляет класс .has-suffix обертке.
clearablebooleanfalseПоказывает кнопку очистки, когда в поле есть значение.
disabledbooleanfalseФлаг, отключающий интерактивность поля.
rowsnumber3Количество видимых строк текста (применяется только при type="textarea").
inputStyleStyleValueundefinedCSS-стили, передаваемые напрямую внутреннему элементу (input или textarea).

Слоты (Slots)

НазваниеОписание
prefixРасширенный контент (например, иконки) перед текстом. Переопределяет проп prefix.
suffixРасширенный контент (например, иконки) после текста. Переопределяет проп suffix.

События (Events)

НазваниеПараметрыОписание
change(value: string)Срабатывает на нативное событие @input. Передает текущее строковое значение.