File explorer
Navigate folders and files with expansion and roving focus.
Components / Data
A finite hierarchical collection with expansion, selection, roving focus, and typeahead.
Project files
Aurora web
Navigate folders and files with expansion and roving focus.
Select one or several nodes within a finite hierarchy.
<Tree v-model="selected" v-model:expanded="expanded" selection-mode="single" aria-label="Files">
<TreeItem value="src">
<TreeItemTrigger>src</TreeItemTrigger>
<TreeGroup>
<TreeItem value="app">
<TreeItemTrigger>App.vue</TreeItemTrigger>
</TreeItem>
</TreeGroup>
</TreeItem>
</Tree>Nest TreeGroup within an expandable item and bind both selection and expansion.
<script setup lang="ts">
import { ref } from 'vue'
import Tree from './components/ui/tree/Tree.vue'
import TreeGroup from './components/ui/tree/TreeGroup.vue'
import TreeItem from './components/ui/tree/TreeItem.vue'
import TreeItemTrigger from './components/ui/tree/TreeItemTrigger.vue'
const selected = ref<string>()
const expanded = ref<string[]>(['src'])
</script>
<template>
<Tree v-model="selected" v-model:expanded="expanded" aria-label="Project files">
<TreeItem value="src"><TreeItemTrigger>src</TreeItemTrigger><TreeGroup>
<TreeItem value="app"><TreeItemTrigger>App.vue</TreeItemTrigger></TreeItem>
<TreeItem value="styles"><TreeItemTrigger>styles.css</TreeItemTrigger></TreeItem>
</TreeGroup></TreeItem>
</Tree>
</template>An array model collects selections from different branches.
<script setup lang="ts">
import { ref } from 'vue'
import Tree from './components/ui/tree/Tree.vue'
import TreeGroup from './components/ui/tree/TreeGroup.vue'
import TreeItem from './components/ui/tree/TreeItem.vue'
import TreeItemTrigger from './components/ui/tree/TreeItemTrigger.vue'
const selected = ref<string[]>([])
</script>
<template>
<Tree v-model="selected" selection-mode="multiple" aria-label="Topics">
<TreeItem value="science"><TreeItemTrigger>Science</TreeItemTrigger><TreeGroup>
<TreeItem value="physics"><TreeItemTrigger>Physics</TreeItemTrigger></TreeItem>
<TreeItem value="biology"><TreeItemTrigger>Biology</TreeItemTrigger></TreeItem>
</TreeGroup></TreeItem>
</Tree>
</template>The most useful props, models, slots, events, and methods for this component.
| Name | Type | Default or requirement |
|---|---|---|
v-model / defaultValue | string | string[] | undefined / [] |
v-model:expanded / defaultExpanded | string[] | [] |
selectionMode | none | single | multiple | single |
dir | ltr | rtl | ltr |
Tree renders all nested items in the DOM, so use VirtualList for very large flat collections. Arrow keys, Home and End, right-to-left navigation, and typeahead skip disabled nodes.