Select (Выпадающий список)
Выпадающий список с группировкой и множественным выбором.
Специфичные методы Select
Заголовок раздела «Специфичные методы Select»| Метод | Аргумент | Описание |
|---|---|---|
label(v) |
string |
Подпись над списком. |
options(v) |
{ value?: string, label?: string, type?: string }[] |
Массив опций: value/label или divider/header. Значение по умолчанию: [] |
value(v) |
string | string[] |
Выбранное значение или массив при multiple. Значение по умолчанию: '' |
selected(v) |
string | string[] |
Устаревший синоним value. |
onChange(v) |
CallbackFunction |
Обработчик выбора; массив при multiple. |
variant(v) |
'default' | 'glass' |
Стиль: default или glass. Значение по умолчанию: 'default' |
icon(v) |
string |
Иконка Lucide для variant: glass (например, ‘Filter’). |
closeOnSelect(v) |
boolean |
Закрывать меню при выборе (false при multiple). Значение по умолчанию: true |
multiple(v) |
boolean |
Множественный выбор; возвращает массив. Значение по умолчанию: false |
resetLabel(v) |
string |
Текст кнопки сброса в поповере. |
resetValue(v) |
string | string[] |
Значение при сбросе (например, []). Значение по умолчанию: '' |
Базовые методы (наследуются от UIComponent)
Пример использования
Заголовок раздела «Пример использования»// Настройки фильтрации с категориями и множественным выборомconst { ui, createState } = PotokSDK;const state = createState({ activeFilters: ["1080p", "dub"] });
function draw() { ui.render( Select("filter-select") .label("Фильтры поиска") .variant("glass") .icon("Filter") .multiple(true) .closeOnSelect(false) .resetLabel("Сбросить всё") .resetValue([]) .options([ { type: "header", label: "Разрешение" }, { value: "2160p", label: "4K (2160p)" }, { value: "1080p", label: "Full HD (1080p)" }, { value: "720p", label: "HD (720p)" }, { type: "divider" }, { type: "header", label: "Озвучка" }, { value: "dub", label: "Дубляж" }, { value: "sub", label: "Субтитры" } ]) .value(state.activeFilters) .onChange((newVals) => { state.activeFilters = newVals; ui.showHUD("success", "Выбрано: " + newVals.join(", ")); }) );}state.$subscribe(draw); draw();