Arborescence
VTreeView affiche une hiérarchie que le lecteur déplie et replie, comme des fichiers ou un plan de site. Il suit le motif ARIA tree : un seul arrêt de tabulation, les flèches pour se déplacer, ouvrir et fermer, et la saisie pour aller à un libellé.
Utilisation
- Documents
- Resume.pdf
- Taxes
- Pictures
- Music
- Notes.txt
Exemples
Sélection
selectionMode="single" sélectionne un nœud au clic, avec Entrée ou Espace, et v-model contient sa valeur. Le chevron replie une branche sans la sélectionner. Un nœud désactivé reste accessible au clavier.
- Europe
- Paris
- Berlin
- Madrid
- Asia
Selected: berlin
Cases à cocher
selectionMode="multiple" donne une case à cocher à chaque ligne. Cocher une branche coche tout son sous-arbre, et une branche cochée en partie affiche un tiret. Le modèle liste les nœuds cochés dans l’ordre de l’arbre, une branche comprise dès que tout ce qu’elle contient est coché. Les nœuds désactivés gardent leur état.
- Content
- Read
- Write
- Publish
- Billing
- Invoices
- Refunds
- Audit log
Selected: read, write
Liens
Un nœud avec href est un lien, et current marque la page consultée. Pour confier la navigation à un routeur, appelez preventDefault() sur l’événement que reçoit activate.
Chargement à la demande
loadChildren récupère les enfants d’un nœud lazy à sa première ouverture, et l’arbre les conserve. Un échec referme le nœud et l’annonce ; l’ouverture suivante réessaie.
- eu-west
- us-east
Contenu de fin
Le slot #end ajoute un contenu au bout de chaque ligne, comme un compteur. Il ne doit contenir aucun élément focusable : une ligne est un seul contrôle.
- Inbox12
- Work9
- Family3
- Drafts
- Spam41
API
Props
| Prop | Type | Défaut |
|---|---|---|
items | TreeItem[] | aucune |
Premier niveau de l’arbre. Chaque nœud a une value unique et un label, et en option icon, children, lazy, href, current et disabled. | ||
selectionMode | TreeSelectionMode'none' | 'single' | 'multiple' | 'none' |
| Si les nœuds peuvent être sélectionnés : pas du tout, un à la fois, ou plusieurs avec des cases à cocher. | ||
loadChildren | (item: TreeItem) => Promise<TreeItem[]> | aucune |
Récupère les enfants d’un nœud lazy à sa première ouverture. Un échec referme le nœud ; l’ouverture suivante réessaie. | ||
size | TreeViewSize'sm' | 'md' | 'md' |
| Hauteur des lignes. | ||
label | string | aucune |
| Nom accessible de l’arbre. Par défaut, celui du dictionnaire de la bibliothèque. | ||
v-model | TreeViewModelValue | null |
Sélection : une valeur ou null en mode single, un tableau en mode multiple. Une valeur donnée pour une branche coche son sous-arbre. | ||
v-model:expanded | ItemValue[] | [] |
| Valeurs des nœuds dépliés. Sans liaison, l’arbre garde cet état lui-même. | ||
Événements
| Événement | Type |
|---|---|
activate | [item: TreeItem, event: MouseEvent | KeyboardEvent] |
Un nœud a été cliqué ou validé avec Entrée. Reçoit le nœud et l’événement ; preventDefault() annule un lien. | |
Slots
| Slot | Type |
|---|---|
icon | TreeItemSlotProps |
Contenu remplaçant l’icône. Reçoit item, level et expanded. | |
label | TreeItemSlotProps |
| Contenu remplaçant le libellé. Reçoit les mêmes props. | |
end | TreeItemSlotProps |
| Contenu au bout de la ligne. Ne doit pas être focusable. | |
Types
Types utilisés dans les tables d’API. Importez les types exportés depuis vectis-ui.
export interface BuiltinIcon {
name: string
paths: readonly [string] | readonly [string, string]
}export type IconRender =
| { path: string; viewBox?: string }
| { component: Component; props?: Record<string, unknown> }
| { src: string }
| { text: string; class?: string }
| { class: string }export type IconSource = string | BuiltinIcon | IconRender
export type ItemValue = string | number
export interface TreeItem {
value: ItemValue
label: string
icon?: IconSource
children?: TreeItem[]
lazy?: boolean
href?: string
current?: boolean
disabled?: boolean
}export interface TreeItemSlotProps {
item: TreeItem
level: number
expanded: boolean
}export type TreeViewModelValue = ItemValue | ItemValue[] | null
Variables CSS
| Token | Valeur |
|---|---|
--vectis-control-size-check | 1.25rem |
--vectis-control-size-check-mark | 0.875rem |