# Selector

Selección desplegable. Por defecto, el panel desplegable se monta en body (con posicionamiento fixed que sigue al activador); se puede indicar el contenedor con popperContainer o pasar un valor vacío para renderizarlo en su lugar; navegación completa por teclado (flechas / Enter / ESC).

Selector
<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="Selecciona un tema" 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="Sin datos">
        <template #empty>
          <span class="demo-note">Slot empty: no hay temas coincidentes</span>
        </template>
      </LhSelect>
    </div>
    <p class="demo-note">Valor actual: {{ value || '(sin selección)' }}</p>
  </div>
</template>

<script>
export default {
  data: () => ({
    value: 'ink',
    empty: undefined,
    options: [
      { value: 'ink', label: 'Tinta china' },
      { value: 'paper', label: 'Papel de arroz' },
      { value: 'seal', label: 'Sello' },
      { value: 'blank', label: 'Espacio en blanco' },
    ],
  }),
}
</script>

# Props

Propiedad Descripción Tipo Predeterminado
v-model Valor seleccionado (coincide con option.value; prop modelValue controlado) unknown —
options Lista de opciones { value, label, disabled? } LhSelectOption[] []
placeholder Texto de marcador de posición; si se omite, se usa el paquete de idioma string t('select.placeholder')
clearable Mostrar el botón de borrado boolean false
size Tamaño 'small' \| 'medium' \| 'large' 'medium'
disabled Deshabilitar boolean false
popperContainer Destino de montaje del desplegable 'body' \| HTMLElement \| string 'body'
name / ariaLabel Etiquetado de accesibilidad string —
sx Propiedad de diseño rápido sx — —

# Eventos

Evento Descripción Parámetro de callback
input Evento de v-model —
change Se dispara al cambiar el valor seleccionado (value, option)
clear Se dispara al borrar —

# Slots

Slot Descripción
empty Contenido cuando no hay datos («Sin datos» por defecto)

# Accesibilidad

El activador usa role="combobox" + aria-expanded/haspopup; el desplegable, role="listbox"; las opciones, role="option"; colocado dentro de LhFormItem, adquiere automáticamente aria-invalid si falla la validación.

Copyright © 2024-2026 FengMo WenXue