Компонент Input Group предназначен для объединения нескольких элементов ввода в один логический блок. Такой подход позволяет визуально и функционально связать поля ввода, кнопки, селекторы, иконки или другие интерактивные элементы.
В библиотеке Naive UI для этой задачи используется
компонент n-input-group, который
обеспечивает:
Input Group часто применяется в интерфейсах поиска, формах фильтрации, панелях ввода данных и сложных формах.
Для использования группы ввода необходимо импортировать соответствующие компоненты из библиотеки:
import { NInput, NInputGroup, NButton } from "naive-ui"
Регистрация компонентов выполняется стандартным способом в Vue:
export default {
components: {
NInput,
NInputGroup,
NButton
}
}
Компонент n-input-group используется
как контейнер, внутри которого размещаются элементы управления.
<n-input-group>
<n-input placeholder="Введите текст" />
<n-button type="primary">Поиск</n-button>
</n-input-group>
В результате:
Это позволяет создать компактный и визуально связанный элемент формы.
Основная особенность n-input-group заключается в
автоматическом объединении границ дочерних компонентов.
Когда несколько элементов помещаются внутрь группы:
Например:
<n-input-group>
<n-input />
<n-input />
</n-input-group>
Результат:
[ input ][ input ]
Без визуального разделения рамками.
Input Group часто используется для добавления элементов перед основным полем ввода.
Типичный пример — указание протокола URL.
<n-input-group>
<n-button>https://</n-button>
<n-input placeholder="example.com" />
</n-input-group>
Интерфейс:
[ https:// ][ example.com ]
Такой подход делает интерфейс более понятным и структурированным.
Компоненты также могут располагаться после основного поля.
Пример — кнопка отправки запроса:
<n-input-group>
<n-input placeholder="Поиск..." />
<n-button type="primary">Найти</n-button>
</n-input-group>
Визуальная структура:
[ Поиск... ][ Найти ]
Input Group поддерживает объединение нескольких элементов разных типов.
Пример сложной группы:
<n-input-group>
<n-button>http://</n-button>
<n-input placeholder="site" />
<n-select :options="domains" />
</n-input-group>
Пример данных:
const domains = [
{ label: ".com", value: "com" },
{ label: ".org", value: "org" },
{ label: ".net", value: "net" }
]
Интерфейс:
[ http:// ][ site ][ .com ▼ ]
Такой паттерн часто используется при вводе доменных адресов.
Input Group можно использовать не только для добавления кнопок, но и для объединения нескольких полей ввода.
Пример:
<n-input-group>
<n-input placeholder="Имя" />
<n-input placeholder="Фамилия" />
</n-input-group>
Визуально это выглядит как единый компонент с двумя областями ввода.
Этот прием применяется для:
<n-input-group>
<n-input placeholder="От" />
<n-input placeholder="До" />
</n-input-group>
Используется для:
Группа ввода хорошо сочетается с выпадающими списками.
Пример — выбор категории перед поиском.
<n-input-group>
<n-select :options="categories" />
<n-input placeholder="Введите запрос" />
</n-input-group>
Данные:
const categories = [
{ label: "Все", value: "all" },
{ label: "Статьи", value: "articles" },
{ label: "Товары", value: "products" }
]
Интерфейс:
[ Все ▼ ][ Поиск... ]
Иногда перед полем ввода размещается иконка.
<n-input-group>
<n-button quaternary>
<n-icon>
<SearchOutline />
</n-icon>
</n-button>
<n-input placeholder="Поиск..." />
</n-input-group>
Так создается компактное поле поиска.
Компоненты внутри n-input-group должны иметь одинаковый
размер.
Поддерживаются стандартные размеры:
smallmediumlargeПример:
<n-input-group size="large">
<n-input />
<n-button>Отправить</n-button>
</n-input-group>
Размер применяется ко всем элементам группы.
Внутри группы могут использоваться различные типы кнопок.
<n-input-group>
<n-input placeholder="Email" />
<n-button type="primary">Подписаться</n-button>
</n-input-group>
Поддерживаются стандартные типы:
Группа ввода подходит для числовых значений.
Пример:
<n-input-group>
<n-input-number />
<n-button>Добавить</n-button>
</n-input-group>
Используется для:
Группа может объединять поле даты и кнопку.
<n-input-group>
<n-date-picker type="date" />
<n-button>Применить</n-button>
</n-input-group>
Это часто используется в панелях фильтрации.
Input Group корректно работает в адаптивных интерфейсах.
Однако при узкой ширине контейнера следует учитывать:
Иногда применяется обертка:
.group-container {
max-width: 400px;
}
Несмотря на универсальность, существуют рекомендации:
1. Не перегружать группу
Плохой пример:
[input][button][select][button][icon]
Интерфейс становится сложным.
Оптимально использовать 2–3 элемента.
2. Использовать логически связанные элементы
Хорошие примеры:
3. Соблюдать одинаковые размеры
Компоненты разных размеров нарушают внешний вид группы.
Компонент n-input-group работает через:
Основные стили:
display: inline-flex
Каждый дочерний элемент получает модифицированные стили:
<n-input-group>
<n-select
:options="categories"
style="width: 140px"
/>
<n-input
placeholder="Поиск товаров"
/>
<n-button type="primary">
Найти
</n-button>
</n-input-group>
Такой интерфейс широко используется в интернет-магазинах.
<n-input-group>
<n-select :options="protocols" />
<n-input placeholder="example.com" />
<n-button>Открыть</n-button>
</n-input-group>
Данные:
const protocols = [
{ label: "http://", value: "http" },
{ label: "https://", value: "https" }
]
<n-input-group>
<n-input-number placeholder="Мин" />
<n-input-number placeholder="Макс" />
<n-button type="primary">
Применить
</n-button>
</n-input-group>
Используется в системах фильтрации товаров.
1. Компактность интерфейса
Несколько элементов объединяются в один визуальный блок.
2. Улучшение UX
Связанные элементы воспринимаются как единая операция.
3. Повышение читаемости формы
Логические группы становятся очевидными.
4. Упрощение верстки
Не требуется вручную настраивать стили границ и отступов.
При использовании Input Group полезно придерживаться нескольких принципов.
Минимальная длина группы
Чем короче группа — тем лучше воспринимается интерфейс.
Ясная логическая связь
Каждый элемент должен напрямую относиться к операции ввода.
Контроль ширины элементов
Select и кнопки лучше ограничивать фиксированной шириной.
Избегание вложенных групп
n-input-group не предназначен для вложенности.
Компонент особенно полезен в следующих ситуациях:
Использование n-input-group позволяет строить компактные
и удобные интерфейсы, где связанные элементы управления объединяются в
единый функциональный блок.