Skip to content

Выпадающий список ​

Базовое использование ​

vue
<template>
  <lh-select v-model="value" :options="options" placeholder="Выберите" />
</template>

<script setup lang="ts">
import { ref } from 'vue'

const value = ref()
const options = [
  { label: 'Вариант 1', value: 'a' },
  { label: 'Вариант 2', value: 'b' },
  { label: 'Отключённый пункт', value: 'c', disabled: true },
]
</script>

Очищаемый / фильтруемый ​

vue
<template>
  <lh-select v-model="value" :options="options" clearable />
  <lh-select v-model="value" :options="options" filterable placement="bottom" />
</template>

Props ​

ПропОписаниеТипПо умолчанию
modelValue (v-model)Привязанное значениеunknown—
optionsСписок вариантовLhSelectOption[]—
sizeРазмер'small' | 'medium' | 'large'—
disabledОтключеноbooleanfalse
clearableМожно очиститьbooleanfalse
placeholderТекст плейсхолдераstring—
filterableФильтруемый (на стороне MP поле ввода предоставляется внутри слоя)booleanfalse
placementПоложение слоя (12 вариантов)LhPlacement'bottom'
customClassПользовательский классstring—
themeVarsПеременные темы компонентаRecord<string, string>—
sxБыстрые свойства раскладкиLhSxProps—

LhSelectOption ​

ПропОписаниеТип
labelОтображаемый текстstring
valueЗначениеunknown
disabledОтключеноboolean

Events ​

СобытиеОписаниеПараметр колбэка
update:modelValueИзменение значения(value)
changeИзменение значения (включая undefined при очистке)(value)
visible-changeПоказ/скрытие слоя(visible: boolean)

Отличия от версии для Vue3

  • Слой идёт через root-portal + асинхронное измерение за два кадра (а не абсолютное позиционирование).
  • Клавиатурная навигация (↑↓ / Home / End) только на H5: в Mini Program нет клавиатурных событий, код удаляется на этапе компиляции — на стороне MP доступен только клик по варианту.
  • Поле ввода фильтра filterable на стороне MP рендерится внутри слоя.