Skip to content

SSelect

Обзор

Combobox: выбор из списка с триггером SInput, поиском и multiple.

Usage

Одиночный выбор с label и placeholder.

API

Краткий справочник props, slots и events — см. API Reference.

Guide

SSelect — combobox для выбора из списка: триггер на базе SInput, панель — SDropdown + SList.

  • Значение — v-model (примитив поля itemValue или объект опции при returnObject).
  • multiple — массив значений; отображение выбора в триггере через слот #selection (по умолчанию текст через запятую, для тегов — STag).
  • searchable="input" — фильтра в поле триггера; searchable="content" — отдельное поле поиска в шапке панели.
  • closeOnSelect — закрывать панель после выбора в single (по умолчанию true).
  • closableOptions — крестик справа у выбранных строк в списке (multiple).
  • Кастомная строка — слот #option (scope как у SList #item).
vue
<SSelect
  v-model="status"
  label="Status"
  placeholder="Select option"
  :options="statusOptions"
  clearable
/>
vue
<SSelect v-model="tags" multiple closable-options :options="options">
  <template #selection="slotScope">
    <STag
      v-for="(label, index) in slotScope.labels"
      :key="slotScope.values[index]"
      closable
      :model-value="label"
      @close="slotScope.removeValue(slotScope.values[index])"
    />
  </template>
</SSelect>

Props

Multiple

Clearable

Searchable (input)

Searchable (content)

Multiple с тегами

Слот #selection и STag для chips в триггере.

Теги и поиск в поле

Крестик в списке

Проп closableOptions — снятие выбора в строке списка.

Панель остаётся открытой

Проп closeOnSelect: false для single.

Return object

С ошибкой

Кастомная строка

Слот #option и SListItem.

API Reference

Свойства

ИмяТипОписаниеПо умолчанию
options обязательныйTItem[]Набор опций выпадающего списка.
itemValuekeyof TItem & stringПоле значения для v-model и фильтрации; по умолчанию value.'value'
itemTitlekeyof TItem & stringПоле подписи в списке и на триггере.'label'
itemSubtitlekeyof TItem & stringПоле подзаголовка строки списка.'subtitle'
itemIdkeyof TItem & stringПоле ключа строки для SList; по умолчанию совпадает с itemValue.
itemDisabledkeyof TItem & stringПоле флага disabled.'disabled'
itemIconLeftkeyof TItem & stringПоле имени иконки слева.'iconLeft'
multipleboolean & TMultipleРазрешает выбор нескольких значений; v-model при этом — массив.false
returnObjectboolean & TReturnObjectВ v-model отдавать объект опции целиком, а не значение itemValue.false
clearablebooleanКнопка очистки выбранных значений.false
closableOptionsbooleanКрестик справа в выбранных строках списка для снятия выбора.false
searchableESSelectSearchable | falseФильтрация: в поле (input) или в шапке панели (content).false
closeOnSelectbooleanЗакрывает панель после выбора в single-режиме.true
listHeightnumber | stringМаксимальная высота списка опций; при малом числе пунктов подстраивается под контент.320
searchPlaceholderstringПлейсхолдер поля поиска в панели при searchable="content".'Search'
filterOption(…) => …Пользовательский предикат фильтрации опций.
fitViewportbooleanОграничивать панель пересечением overflow-предков reference. Отключите (false) внутри контейнеров с overflow: hidden, если панель не появляется.true
panelWidthnumber | stringФиксированная ширина панели вместо ширины триггера. Без него панель повторяет ширину триггера; заданное значение эту привязку отключает.
surfaceClassstringДополнительный CSS-класс поверхности панели.
canLoadMore(…) => …Предикат подгрузки для infinite scroll: можно ли запрашивать следующую порцию опций. Прокидывается в SList; при отсутствии endReached эмитится, пока есть, куда скроллить.
endReachedDistancenumberРасстояние в px до низа списка опций, на котором эмитится endReached.0
modelValue / v-model:searchQuerystringДвустороннее значение для v-model:searchQuery.''

События

ИмяОписаниеPayload
clearСрабатывает после очистки значения кнопкой clear.
focusТриггер получил фокус.FocusEvent
blurТриггер потерял фокус.FocusEvent
openПанель открылась.
closeПанель закрылась.
endReachedСкролл списка опций достиг низа — запросите следующую порцию (infinite scroll).`{
direction: "bottom";

}` |

Слоты

ИмяОписание
panel-headerШапка панели над списком (табы/переключатель); при searchable=content поиск рендерится ниже
optionКастомная строка; scope — SList (item, key, …)
option-iconМедиа слева в строке опции (иконка / эмодзи / аватар)
emptyСостояние пустой выдачи после фильтрации
panel-footerДополнительный блок под списком опций
label
prefix
prepend
selectionОтображение выбранных значений в multiple (теги, chips). При searchable="input" поле фильтрации рендерится в control после содержимого слота.
value-suffix
message