Перейти к основному содержимому

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

Выпадающий список с контролируемым / неконтролируемым режимами, навигацией с клавиатуры и очисткой.

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

Контролируемый выбор

Текущее значение: (не выбрано)

import { useState } from 'react'
import { LhSelect } from '@lh-ui/react'
import type { LhSelectOption } from '@lh-ui/react'

const options: LhSelectOption[] = [
{ label: 'Тушь', value: 'ink' },
{ label: 'Даньцин', value: 'danqing' },
{ label: 'Пустота', value: 'blank' },
{ label: 'Гунби', value: 'gongbi' },
]

export default function Demo() {
const [value, setValue] = useState<string>('')

return (
<LhSelect
value={value}
options={options}
placeholder="Выберите стиль живописи"
onChange={(val) => setValue(val as string)}
/>
)
}

Select Props​

СвойствоОписаниеТипВариантыПо умолчанию
valueКонтролируемое значениеunknown——
defaultValueНеконтролируемое значение по умолчаниюunknown——
optionsСписок вариантовLhSelectOption[]—[]
placeholderПлейсхолдерstring—Значение из языкового пакета
disabledОтключитьboolean—false
clearableРазрешить очисткуboolean—false
sizeРазмер'large' | 'middle' | 'small'—Следует за ConfigProvider
nameНативный атрибут namestring——
ariaLabelМетка доступностиstring——
placementРасположение выпаданияLhPlacement—'bottom-start'
themeVarsПеременные темы на уровне компонентаRecord<string, string>——
sxСокращённые props макетаSxProps——

LhSelectOption​

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

События Select​

СобытиеОписаниеСигнатура коллбэкаАналог в Vue
onChangeСрабатывает при выборе (два аргумента: значение и объект варианта)(value: unknown, option: LhSelectOption | undefined) => void@change
onClearСрабатывает при очистке() => void@clear

Взаимодействие с клавиатурой​

В раскрытом состоянии: ArrowUp / ArrowDown перемещают подсветку между вариантами (пропуская отключённые), Enter выбирает, Escape сворачивает список. Триггер имеет role="combobox", панель — role="listbox", варианты — role="option", а aria-activedescendant отслеживает подсветку.

ref​

forwardRef<HTMLDivElement> — корневой элемент триггера. LhSelectInstance предоставляет open() / close() / focus().

Стили​

import '@lh-ui/react/style/select'