# Select セレクト

ドロップダウン選択です。デフォルトではドロップダウンは body にマウントされ(fixed 配置でトリガーに追従)、popperContainer でコンテナを指定するか空を渡してその場にレンダリングできます。完全なキーボードナビゲーション(方向キー / Enter / ESC)を備えています。

セレクト
<template>
  <div class="demo-col" style="gap: 18px">
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhSelect v-model="value" :options="options" placeholder="題材を選択してください" clearable name="theme" />
      <LhSelect v-model="value" :options="options" size="small" />
      <LhSelect v-model="value" :options="options" size="large" />
    </div>
    <div class="demo-row" style="gap: 12px; flex-wrap: wrap">
      <LhSelect v-model="value" :options="options" disabled />
      <LhSelect v-model="empty" :options="[]" aria-label="データなし">
        <template #empty>
          <span class="demo-note">empty スロット:一致する題材はありません</span>
        </template>
      </LhSelect>
    </div>
    <p class="demo-note">現在の値:{{ value || '(未選択)' }}</p>
  </div>
</template>

<script>
export default {
  data: () => ({
    value: 'ink',
    empty: undefined,
    options: [
      { value: 'ink', label: '水墨' },
      { value: 'paper', label: '宣紙' },
      { value: 'seal', label: '印章' },
      { value: 'blank', label: '留白' },
    ],
  }),
}
</script>

# Props

プロパティ 説明 型 デフォルト値
v-model 選択値(option.value とマッチ。制御される modelValue prop) unknown —
options オプションリスト { value, label, disabled? } LhSelectOption[] []
placeholder プレースホルダーテキスト。省略時は言語パッケージを使用 string t('select.placeholder')
clearable クリアボタンを表示 boolean false
size サイズ 'small' \| 'medium' \| 'large' 'medium'
disabled 無効 boolean false
popperContainer ドロップダウンのマウント先 'body' \| HTMLElement \| string 'body'
name / ariaLabel アクセシビリティのラベリング string —
sx sx によるレイアウト省略記法 — —

# Events

イベント 説明 コールバックパラメータ
input v-model のイベント —
change 選択値が変化したときに発火 (value, option)
clear クリアしたときに発火 —

# Slots

スロット 説明
empty データがない場合の内容(デフォルトは「データなし」)

# アクセシビリティ

トリガーは role="combobox" + aria-expanded/haspopup、ドロップダウンは role="listbox"、オプションは role="option" です。 LhFormItem 内でバリデーションに失敗した場合、自動的に aria-invalid が付与されます。

Copyright © 2024-2026 FengMo WenXue