# 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 레이아웃 단축 | — | — |
# 이벤트
| 이벤트 | 설명 | 콜백 매개변수 |
|---|---|---|
| input | v-model 이벤트 | — |
| change | 선택 값이 변경될 때 발생 | (value, option) |
| clear | 지워질 때 발생 | — |
# 슬롯
| 슬롯 | 설명 |
|---|---|
| empty | 데이터가 없을 때 내용 (기본값 "데이터 없음") |
# 접근성
트리거는 role="combobox" + aria-expanded/haspopup, 드롭다운은 role="listbox", 옵션은 role="option"입니다.
LhFormItem 내에서 유효성 검사에 실패하면 자동으로 aria-invalid가 부여됩니다.
Copyright © 2024-2026 FengMo WenXue