# Дерево-выбор
Деревовидный элемент выбора. Повторно использует логику разворачивания / отметок LhTree: в режиме одного выбора первый клик по родительскому узлу только разворачивает его (выбор происходит при повторном клике), а клик по листу выбирает его сразу; в режиме множественного выбора используются флажки. Панель по умолчанию монтируется в body (в Vue2 нет Teleport).
Дерево-выбор
<template>
<div class="demo-col" style="gap: 16px">
<div class="demo-row" style="gap: 12px; flex-wrap: wrap">
<LhTreeSelect v-model="single" :data="data" placeholder="Один выбор (клик по родителю разворачивает, по листу — выбирает)" />
<LhTreeSelect v-model="single" :data="data" disabled placeholder="Отключено" />
<LhTreeSelect v-model="multi" :data="data" multiple placeholder="Множественный выбор (флажки)" />
</div>
<LhTreeSelect v-model="embedded" :data="data" :teleported="false" placeholder="teleported=false, панель встроенная" />
<p class="demo-note">
Один выбор: {{ single || '(не выбрано)' }}; множественный: {{ multi.join(', ') || '(не выбрано)' }}; встроенная: {{
embedded || '(не выбрано)'
}}
</p>
</div>
</template>
<script>
export default {
data: () => ({
single: 'xishan',
multi: [],
embedded: '',
data: [
{
key: 'song',
label: 'Династия Сун',
children: [
{ key: 'fan', label: 'Фань Куань' },
{ key: 'xishan', label: 'Путешествие по горам и рекам' },
],
},
{ key: 'yuan', label: 'Династия Юань', children: [{ key: 'huang', label: 'Хуан Гунван' }] },
],
}),
}
</script>
# Props
| Проп | Описание | Тип | По умолчанию |
|---|---|---|---|
| data | Данные дерева | LhTreeNode[] | [] |
| v-model | Текущее значение; при одном выборе — строка-ключ, при множественном — массив ключей отметок | string \| string[] | — |
| multiple | Множественный выбор (показываются флажки, значение — массив ключей отметок) | boolean | false |
| disabled | Отключено | boolean | false |
| placeholder | Плейсхолдер | string | Языковой пакет |
| teleported | Монтируется ли панель в body | boolean | true |
| sx | Компактная раскладка через sx | — | — |
# Events
input (v-model), change (value)
# Доступность
Триггер — role="combobox" + aria-expanded; внутри панели наследуется семантика role="tree" / role="treeitem" от LhTree;
в режиме множественного выбора флажки помечаются aria-checked, поддерживается полная навигация с клавиатуры.
Copyright © 2024-2026 FengMo WenXue