Группа кнопок
Группа кнопок соединяет связанные кнопки в один блок или ставит их на равном расстоянии. Каждая кнопка остаётся отдельным действием; значения у группы нет.
<tk-button-group label="Text alignment"> <tk-button>Left</tk-button> <tk-button>Center</tk-button> <tk-button>Right</tk-button> </tk-button-group>
Анатомия
| Часть | Что это |
|---|---|
tk-button-group |
сам элемент; role="group"; ряд или столбец |
| слот по умолчанию | две и больше tk-button или tk-icon-button; у каждой своя подпись, вариант и тон |
| крайние углы | внешние углы первой и последней кнопки |
| стыки | прямые внутренние углы и линия 1px между соединёнными кнопками |
Расположение
Вместе и раздельно
По умолчанию кнопки соединяются в один блок. Группа выпрямляет внутренние углы и рисует
линию между кнопками, поэтому подходит любой вариант. Добавьте spaced, чтобы поставить
кнопки отдельно с промежутком 8px, например «Сохранить» и «Отмена». Углы соединённого ряда
рассчитаны на письмо слева направо, поэтому в интерфейсе справа налево используйте spaced.
<tk-button-group spaced label="Form actions"> <tk-button variant="primary">Save changes</tk-button> <tk-button>Cancel</tk-button> </tk-button-group>
Ориентация
orientation="vertical" ставит кнопки столбцом, все шириной с самую широкую.
<tk-button-group orientation="vertical" label="Row actions"> <tk-button>Edit</tk-button> <tk-button>Duplicate</tk-button> <tk-button>Archive</tk-button> </tk-button-group>
Форма
Задавайте shape="round" группе, а не кнопкам. Крайние углы полностью скругляются, средние
остаются прямыми. У вертикального блока крайние углы скругляются на 16px. В группе со
spaced каждая кнопка становится полностью скруглённой. Собственный shape кнопки в
соединённой группе ни на что не влияет.
<tk-button-group shape="round" label="Zoom"> <tk-button>25%</tk-button> <tk-button>50%</tk-button> <tk-button>100%</tk-button> </tk-button-group>
Размеры
<tk-button-group size="small" label="Pages"> <tk-button>Previous</tk-button> <tk-button>Next</tk-button> </tk-button-group>
Задайте size один раз на группе, и его возьмёт каждая кнопка: small, medium или
large, высотой 24, 32 или 36px, как у
Состояния
<tk-button-group disabled label="Pages"> <tk-button>Previous</tk-button> <tk-button>Next</tk-button> </tk-button-group>
disabled: отключает все кнопки. Кнопка, которую вы отключили отдельно, останется отключённой, когда группу снова включат. Отдельные кнопки тоже можно отключать.- Наведение, нажатие и фокус у каждой кнопки свои. В соединённом блоке кнопка в фокусе выходит вперёд, поэтому рамка фокуса не обрезается.
Когда использовать
- Для небольшого набора связанных действий, обычно от 2 до 5, где у каждого своя кнопка: панель инструментов, переход по страницам, масштаб.
- Если один вариант остаётся выбранным, например «Список» или «Сетка», берите
Segmented control . - Для нескольких состояний «вкл/выкл», например жирный, курсив, подчёркнутый, берите
Toggle button group . - Чтобы переключать разделы или панели, берите
Tab bar . - Если одно действие главное, а остальные могут подождать в меню, берите
Split button .
Текст
- Объединяйте только связанные команды. Несвязанным действиям в одной группе не место.
- В соединённом блоке используйте один вариант. Смешивать можно, но одним вариантом блок читается лучше.
- Назовите группу через
labelпо тому, что объединяет кнопки: «Выравнивание текста», «Масштаб». - Подписывайте кнопки как любую
Button . Подробнее вAction labels .
Можно / нельзя
| ✅ Можно | ❌ Нельзя |
|---|---|
| Группа из 2–5 связанных команд | Несвязанные действия в одной группе |
| Линию между кнопками рисует группа | Свой разделитель между кнопками |
| Segmented control, когда вариант остаётся выбранным | Группа кнопок, чтобы хранить значение |
size один раз на группе |
Разные размеры в соединённом блоке |
shape="round" на группе |
shape на кнопках соединённой группы |
Связанные
Segmented control : один выбор, который остаётся выбранным.Toggle button group : несколько состояний «вкл/выкл».Tab bar : переключает разделы или панели.Split button : одно главное действие и меню.Page header : действия страницы в виде группы соspaced.
API
Атрибуты
| Атрибут | Тип | По умолчанию | Что делает |
|---|---|---|---|
orientation |
horizontal | vertical |
horizontal |
ряд или столбец |
spaced |
boolean | false |
отдельные кнопки с промежутком 8px вместо одного блока |
shape |
rect | round |
rect |
скруглённые или полностью скруглённые крайние углы; середина прямая |
size |
small | medium | large |
не задан | задаёт размер всем кнопкам |
disabled |
boolean | false |
отключает все кнопки |
label |
string | не задан | доступное имя группы |
Слоты
| Слот | Содержимое |
|---|---|
| по умолчанию | две и больше tk-button или tk-icon-button; для одной возьмите обычную кнопку |
События
Своих событий нет. Слушайте click на каждой кнопке.
Токены
| Часть | Токен |
|---|---|
| кнопки | токены |
| стык | border/subtle |
| крайние углы | radius-8; при shape="round" radius-full, а у вертикального блока radius-16 |
промежуток при spaced |
space-8 |
Доступность
Встроено:
role="group", имя даётlabel.- Каждая кнопка — своя остановка Tab, без перемещения стрелками, как у кнопок, стоящих рядом.
- Значения у группы нет: ни
aria-pressed, ниaria-checked.
На вашей стороне:
- Назовите плотную панель инструментов через
label. Это необязательно: у каждой кнопки своё имя. - Если выбор остаётся выбранным, берите
Segmented control илиTab bar .
| Клавиша | Действие |
|---|---|
Tab |
переводит фокус на следующую кнопку |
Space / Enter |
нажимает кнопку в фокусе |