Компонент input
Назначение компонента
Компонент input предназначен для создания различных типов полей ввода, таких как текстовые поля, поля для ввода email, а также текстовые области (textarea). Компонент поддерживает различные состояния (например, ошибка, отключенное состояние) и может быть адаптирован под разные размеры и стили.
Классы компонента
Контейнеры
.sf-input-container— основной контейнер для поля ввода..sf-input-container--1/3— контейнер с шириной 1/3 от родительского элемента..sf-input-container--1/2— контейнер с шириной 1/2 от родительского элемента..sf-input-container--2— контейнер с шириной 2 (зависит от стилей)..sf-input-container--3— контейнер с шириной 3 (зависит от стилей)..sf-input-container--error— контейнер для поля ввода с состоянием ошибки..sf-input-container--textarea— контейнер для текстовой области (textarea).
Элементы внутри контейнера:
.sf-input--top-label— верхний лейбл (надпись над полем ввода)..sf-input— основное поле ввода..sf-input-email— поле ввода для email..sf-input-inner-label— внутренний лейбл для поля ввода..sf-input-main— основное поле ввода (inputилиtextarea)..sf-input-label-span— текст-заполнитель внутри поля ввода..sf-input-body--right— контейнер для дополнительного контента справа от поля ввода..sf-input--bottom-label— нижний лейбл (подпись под полем ввода).
Состояния компонента
1. Обычное состояние:
- Поле ввода активно, пользователь может вводить данные.
- Граница и текст имеют стандартные цвета.
2. Состояние ошибки:
- Поле ввода подсвечивается красным цветом (
--sf-input-error-color). - Используется класс
.sf-input-container--error.
3. Отключенное состояние:
- Поле ввода недоступно для редактирования.
- Фоновый цвет и текст меняются на более светлые оттенки (
--sf-input-disabled-bg,--sf-input-disabled-color). - Добавляется атрибут
disabledк элементуinput.
4. Состояние с иконкой:
- Внутри поля ввода отображается иконка (например, иконка почты для поля email).
- Используется класс
.sf-icon.
5. Состояние с текстовой областью:
- Вместо стандартного поля ввода используется
textarea. - Используется класс
.sf-input-container--textarea.
Пример использования
Контейнер размера 1/3
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container sf-input-container--1/3">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input sf-input--1/3" id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер размера 1/2
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container sf-input-container--1/2">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input sf-input--1/2" id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер стандартного размера
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container ">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input " id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер стандартного размера 2
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container sf-input-container--2">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input " id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер стандартного размера 3
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container sf-input-container--3">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input " id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер деактивированного input
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container sf-input-container--3">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input sf-input--disabled" id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" disabled required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер без границ
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container sf-input-container--3">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input sf-input--borderless" id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер цвета surface-2
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input sf-input--borderless sf-input--surface-2" id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
Контейнер цвета surface-3
Label
This is a hint text to help user.
mail
Right Content
help
<div class="sf-input-container">
<span class="sf-input--top-label">
Label
</span>
<div class="sf-input sf-input--borderless sf-input--surface-3" id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required="" class="sf-input-main" placeholder="">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">
This is a hint text to help user.
</span>
</div>
<div class="sf-input-container sf-input-container--1/2">
<span class="sf-input--top-label">Email</span>
<div class="flex items-cross-center sf-input sf-input--1/2 sf-input-email" id="input_email">
<div class="flex">
<i class="sf-icon">mail</i>
</div>
<label class="sf-input-inner-label">
<input type="email" required class="sf-input-main">
<span class="sf-input-label-span">Введите почту</span>
</label>
<div class="sf-input-body--right flex flex-center items-cross-center">
<span>Right Content</span>
<i class="sf-icon">help</i>
</div>
</div>
<span class="sf-input--bottom-label">This is a hint text to help user.</span>
</div>
Примечания
- Компонент поддерживает адаптивность за счет использования классов с шириной (например,
.sf-input--1/3,.sf-input--1/2). - Для кастомизации внешнего вида можно использовать CSS-переменные, описанные в таблице выше.
- Компонент может быть расширен для поддержки других типов полей ввода (например, пароль, телефон и т.д.).