Vuetify is a popular UI framework for Vue apps.
In this article, we’ll look at how to work with the Vuetify framework.
Nested Lists
We can add nested list with the v-list-item
component.
For example, we can write:
<template>
<v-row>
<v-col cols="12">
<v-card class="mx-auto" width="300">
<v-list>
<v-list-item>
<v-list-item-icon>
<v-icon>mdi-home</v-icon>
</v-list-item-icon>
<v-list-item-title>Home</v-list-item-title>
</v-list-item>
<v-list-group prepend-icon="account_circle" value="true">
<template v-slot:activator>
<v-list-item-title>Users</v-list-item-title>
</template>
<v-list-group no-action sub-group value="true">
<template v-slot:activator>
<v-list-item-content>
<v-list-item-title>Admin</v-list-item-title>
</v-list-item-content>
</template>
<v-list-item v-for="(admin, i) in admins" :key="i" link>
<v-list-item-title v-text="admin[0]"></v-list-item-title>
<v-list-item-icon>
<v-icon v-text="admin[1]"></v-icon>
</v-list-item-icon>
</v-list-item>
</v-list-group>
<v-list-group sub-group no-action>
<template v-slot:activator>
<v-list-item-content>
<v-list-item-title>Actions</v-list-item-title>
</v-list-item-content>
</template>
<v-list-item v-for="(crud, i) in cruds" :key="i">
<v-list-item-title v-text="crud[0]"></v-list-item-title>
<v-list-item-action>
<v-icon v-text="crud[1]"></v-icon>
</v-list-item-action>
</v-list-item>
</v-list-group>
</v-list-group>
</v-list>
</v-card>
</v-col>
</v-row>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({
admins: [
["Management", "people_outline"],
["Settings", "settings"],
],
cruds: [
["Create", "add"],
],
}),
};
</script>
We have v-list-group
inside another v-list-group
.
Subheadings and Dividers
We can add headings and dividers to separate our lists.
For example, we can write:
<template>
<v-row>
<v-col cols="12">
<v-card max-width="475" class="mx-auto">
<v-toolbar color="teal" dark>
<v-app-bar-nav-icon></v-app-bar-nav-icon>
<v-toolbar-title>Settings</v-toolbar-title>
</v-toolbar>
<v-list two-line subheader>
<v-subheader>General</v-subheader>
<v-list-item>
<v-list-item-content>
<v-list-item-title>Profile photo</v-list-item-title>
<v-list-item-subtitle>Change profile photo</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
</v-list>
<v-divider></v-divider>
<v-list subheader two-line flat>
<v-subheader>Hangout notifications</v-subheader>
<v-list-item-group v-model="settings" multiple>
<v-list-item>
<template v-slot:default="{ active }">
<v-list-item-action>
<v-checkbox :input-value="active" color="primary"></v-checkbox>
</v-list-item-action>
<v-list-item-content>
<v-list-item-title>Notifications</v-list-item-title>
<v-list-item-subtitle>Allow notifications</v-list-item-subtitle>
</v-list-item-content>
</template>
</v-list-item>
</v-list-item-group>
</v-list>
</v-card>
</v-col>
</v-row>
</template>
<script>
export default {
name: "HelloWorld",
data: () => ({
settings: [],
}),
};
</script>
We have the v-subheader
component to add the subheading.
And we have the v-divider
to add the divider between our lists.
Conclusion
We can add subheaders and dividers to our lists.
Also, we can have nested lists in our page.