v-list-group в Vuetify представляет собой компонент для
создания вложенных и раскрывающихся списков. Он расширяет возможности
стандартного списка v-list, позволяя объединять элементы в
группы с заголовками, и обеспечивает удобную организацию интерфейса при
работе с большим количеством элементов меню.
Ключевые свойства v-list-group:
value – булевое значение, определяющее, открыта ли
группа по умолчанию.prepend-icon и append-icon – иконки,
отображаемые перед или после заголовка группы.sub-group – логический флаг, используемый для создания
вложенных подгрупп внутри группы.no-action – отключает автоматическую стрелку раскрытия
группы, что полезно при кастомной реализации индикаторов.Простейший пример использования:
<v-list>
<v-list-group prepend-icon="mdi-folder">
<template v-slot:activator>
<v-list-item-title>Документы</v-list-item-title>
</template>
<v-list-item>
<v-list-item-title>Отчёт 2026</v-list-item-title>
</v-list-item>
<v-list-item>
<v-list-item-title>Бюджет</v-list-item-title>
</v-list-item>
</v-list-group>
</v-list>
В этом примере создается группа с заголовком Документы, раскрывающая два вложенных элемента списка.
Вложенные группы позволяют строить многоуровневые меню. Для этого
используется свойство sub-group и возможность вкладывать
один v-list-group внутрь другого.
Пример с двумя уровнями вложенности:
<v-list>
<v-list-group prepend-icon="mdi-folder" value="true">
<template v-slot:activator>
<v-list-item-title>Проекты</v-list-item-title>
</template>
<v-list-group sub-group prepend-icon="mdi-folder-open">
<template v-slot:activator>
<v-list-item-title>Веб-разработка</v-list-item-title>
</template>
<v-list-item>
<v-list-item-title>Сайт компании</v-list-item-title>
</v-list-item>
<v-list-item>
<v-list-item-title>Личный блог</v-list-item-title>
</v-list-item>
</v-list-group>
<v-list-item>
<v-list-item-title>Мобильные приложения</v-list-item-title>
</v-list-item>
</v-list-group>
</v-list>
Здесь Проекты является основной группой, а
Веб-разработка — подгруппой. Использование
sub-group автоматически снижает отступ и изменяет
визуальный стиль, чтобы подчеркнуть вложенность.
Раскрытие групп может контролироваться как локально, так и глобально:
v-model или value:<v-list-group v-model="projectsOpen">
<template v-slot:activator>
<v-list-item-title>Проекты</v-list-item-title>
</template>
</v-list-group>
data() {
return {
projectsOpen: true,
};
}
v-model у
родительского списка для синхронизации нескольких групп.Методы toggle(), open(),
close() позволяют программно изменять состояние группы, что
полезно для динамических интерфейсов.
v-list-group поддерживает широкие возможности
стилизации:
prepend-icon и
append-icon можно отображать визуальные индикаторы,
например mdi-chevron-down.activator
используется для кастомного содержимого заголовка группы. Это может быть
текст, иконка, кнопка или комбинация элементов.v-list-item--active, v-list-item--disabled и
v-list-item--sub-group позволяют изменять внешний вид
заголовков и элементов списка.Пример кастомного заголовка с кнопкой:
<v-list-group>
<template v-slot:activator>
<v-list-item-title>Настройки
<v-btn icon small @click.stop="resetSettings">
<v-icon>mdi-reload</v-icon>
</v-btn>
</v-list-item-title>
</template>
<v-list-item>
<v-list-item-title>Профиль</v-list-item-title>
</v-list-item>
</v-list-group>
Событие .stop предотвращает автоматическое раскрытие
группы при нажатии на кнопку.
v-list-group легко интегрируется с динамическими данными
через v-for:
<v-list>
<v-list-group
v-for="(category, i) in categories"
:key="i"
:value="category.open"
:prepend-icon="category.icon"
>
<template v-slot:activator>
<v-list-item-title>{{ category.title }}</v-list-item-title>
</template>
<v-list-item
v-for="(item, j) in category.items"
:key="j"
>
<v-list-item-title>{{ item }}</v-list-item-title>
</v-list-item>
</v-list-group>
</v-list>
data() {
return {
categories: [
{ title: 'Документы', icon: 'mdi-folder', open: true, items: ['Отчёт', 'Бюджет'] },
{ title: 'Проекты', icon: 'mdi-folder', open: false, items: ['Сайт', 'Мобильное приложение'] },
]
};
}
Такой подход обеспечивает полную динамическую генерацию меню без ручного создания каждой группы.
v-navigation-drawer: v-list-group часто
используется для боковых навигационных меню.v-expansion-panel: можно комбинировать для создания
более сложных раскрывающихся интерфейсов.v-icon и v-btn: интеграция с
интерактивными элементами в заголовке группы.sub-group для вложенных групп, чтобы
поддерживать визуальное различие уровней.v-model для контроля состояния раскрытия из
родительских компонентов.activator для кастомных элементов,
таких как кнопки или иконки с действиями.v-for и
управлять состоянием групп через массив объектов.v-list-group сочетает простоту использования с гибкой
кастомизацией, что делает его основным инструментом для создания
структурированных, многоуровневых меню в приложениях на Vuetify.