# TreeSelect 트리 선택기

트리 형태의 선택 컨트롤입니다. 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 이고, 패널 안에서 LhTree 의 role="tree" / role="treeitem" 의미를 상속합니다. 여러 선택 모드에서는 체크박스에 aria-checked 가 설정되고, 완전한 키보드 내비게이션을 지원합니다.

Copyright © 2024-2026 FengMo WenXue