Компонент Button Group в библиотеке Naive UI предназначен для объединения нескольких кнопок в единый визуальный блок, что позволяет создавать удобные панели действий с согласованным стилем и выравниванием. Он является контейнером, который управляет поведением и внешним видом всех вложенных кнопок.
import { NButton, NButtonGroup } from 'naive-ui';
Использование базовой группы кнопок выглядит следующим образом:
<n-button-group>
<n-button>Сохранить</n-button>
<n-button>Отменить</n-button>
</n-button-group>
В результате две кнопки визуально объединяются, создавая аккуратный блок с одинаковой высотой и плавными границами.
NButtonGroup поддерживает ряд ключевых свойств, влияющих на расположение, размер и визуальный стиль кнопок.
sizeСвойство size позволяет задавать размер всех кнопок
внутри группы. Поддерживаемые значения:
small — компактные кнопкиmedium — стандартный размер (по умолчанию)large — крупные кнопки<n-button-group size="large">
<n-button>Применить</n-button>
<n-button>Сбросить</n-button>
</n-button-group>
verticalСвойство vertical определяет ориентацию кнопок. По
умолчанию кнопки располагаются горизонтально. Если установить
vertical в true, кнопки выстроятся в
колонку.
<n-button-group vertical>
<n-button>Вверх</n-button>
<n-button>Вниз</n-button>
</n-button-group>
tagСвойство tag позволяет изменить HTML-элемент,
используемый для обертки кнопок. Обычно используется div
или span. Это полезно для семантической разметки и
интеграции с другими компонентами.
Naive UI поддерживает несколько типов кнопок, которые могут комбинироваться внутри одной группы для создания разнообразного интерфейса:
primary — основной акцентный цветsuccess — зеленая кнопка для успешных действийwarning — желтая кнопка для предупрежденийerror — красная кнопка для ошибок или удаления<n-button-group>
<n-button type="primary">Сохранить</n-button>
<n-button type="error">Удалить</n-button>
<n-button type="success">Применить</n-button>
</n-button-group>
Комбинируя разные типы кнопок, можно визуально обозначать приоритет действий в интерфейсе.
Все стандартные состояния кнопок Naive UI (disabled,
loading) работают и внутри группы. Можно как отключить всю
группу, так и отдельные кнопки:
<n-button-group>
<n-button disabled>Сохранить</n-button>
<n-button loading>Загрузка</n-button>
<n-button>Отмена</n-button>
</n-button-group>
Группы также поддерживают управление фокусом и активным состоянием для улучшения UX.
Для реализации сценариев, где нужно выбрать один вариант из группы
(подобно радиокнопкам), используют кнопки с событием click
и отслеживанием состояния через v-model:
<template>
<n-button-group>
<n-button :ghost="selected === 'A'" @click="selected = 'A'">Вариант A</n-button>
<n-button :ghost="selected === 'B'" @click="selected = 'B'">Вариант B</n-button>
<n-button :ghost="selected === 'C'" @click="selected = 'C'">Вариант C</n-button>
</n-button-group>
</template>
<script setup>
import { ref } from 'vue';
const selected = ref('A');
</script>
Свойство ghost делает кнопку визуально активной или
неактивной в зависимости от выбранного состояния, создавая эффект
переключения.
Button Group легко интегрируется с другими компонентами Naive UI:
<n-button-group>
<n-button>Главное действие</n-button>
<n-dropdown>
<template #trigger>
<n-button>Дополнительно</n-button>
</template>
<n-dropdown-menu>
<n-dropdown-item>Опция 1</n-dropdown-item>
<n-dropdown-item>Опция 2</n-dropdown-item>
</n-dropdown-menu>
</n-dropdown>
</n-button-group>
<n-button-group>
<n-tooltip content="Сохранить файл">
<n-button>Сохранить</n-button>
</n-tooltip>
<n-tooltip content="Удалить файл">
<n-button>Удалить</n-button>
</n-tooltip>
</n-button-group>
Это позволяет создавать сложные панели действий с минимальным кодом.
Button Group автоматически подстраивается под ширину родительского контейнера. Можно комбинировать с CSS-свойствами:
<n-button-group style="width: 100%;">
<n-button style="flex: 1;">Кнопка 1</n-button>
<n-button style="flex: 1;">Кнопка 2</n-button>
<n-button style="flex: 1;">Кнопка 3</n-button>
</n-button-group>
Использование flex: 1 гарантирует равномерное
распределение кнопок по ширине, что особенно важно для адаптивного
дизайна.
vertical и
size="small", чтобы экономить место.ghost или собственные
стили :class для активного состояния.Button Group является универсальным инструментом Naive UI, который упрощает создание аккуратных, согласованных панелей действий, поддерживая все стандартные возможности кнопок и гибко адаптируясь под дизайн приложения.