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

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();

Запустить в Sandbox