# 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