Параметр searchHighlight в библиотеке Slim Select
управляет визуальным выделением совпадений в результатах поиска внутри
выпадающего списка. Его задача — улучшить восприятие найденных
элементов, подсвечивая фрагменты текста, которые соответствуют
введённому запросу пользователя.
При активации данного параметра Slim Select анализирует строку поиска и сопоставляет её с текстом опций, после чего оборачивает совпадающие части в HTML-разметку с выделяющим классом. Это позволяет стилизовать найденные участки через CSS и визуально отделить релевантные символы от остального текста.
Параметр searchHighlight имеет логический тип:
searchHighlight: true | false
По умолчанию значение обычно установлено в true, что
означает активное выделение совпадений.
При значении false поиск продолжает работать, но
визуальное выделение подстрок отключается. Результаты отображаются без
дополнительной разметки внутри текста опций.
При вводе текста в поле поиска Slim Select выполняет следующие действия:
searchHighlight оборачивает совпадение в
HTML-элемент.Пример внутренней логики (упрощённо):
if (settings.searchHighlight) {
option.text = option.text.replace(
new RegExp(query, 'i'),
match => `<span class="ss-search-highlight">${match}</span>`
);
}
При включённом searchHighlight интерфейс списка
становится более информативным. Например, при поиске по слову “lon” в
списке городов:
результаты будут отображаться с визуальным акцентом на совпадающих символах:
Подсветка применяется только к совпадающим частям строки, не изменяя структуру данных.
Slim Select добавляет HTML-обёртку с классом, который используется для стилизации:
<span class="ss-search-highlight">lon</span>
Базовая кастомизация может выглядеть следующим образом:
.ss-search-highlight {
background-color: yellow;
color: black;
font-weight: 600;
border-radius: 2px;
}
В более сложных интерфейсах часто используется мягкая подсветка без изменения насыщенности текста:
.ss-search-highlight {
background-color: rgba(255, 235, 59, 0.4);
padding: 0 2px;
}
При работе с длинными списками и сложными строками учитываются следующие особенности:
При использовании пользовательского рендера опций
(renderOption, renderItem) параметр
searchHighlight продолжает работать, но итоговое поведение
зависит от того, как обрабатывается входной текст.
Пример кастомного рендера:
new SlimSelect({
select: '#select',
searchHighlight: true,
renderOption: (data) => {
return `<div class="custom-option">${data.text}</div>`;
}
});
В этом случае важно учитывать, что Slim Select может передавать уже
модифицированный текст с HTML-разметкой подсветки, поэтому
дополнительная обработка строки должна учитывать наличие
<span> элементов.
searchHighlight тесно связан с другими параметрами:
searchText — определяет текстовое поле поискаsearchPlaceholder — задаёт плейсхолдерshowSearch — включает или отключает поиск
полностьюЕсли showSearch установлен в false,
параметр searchHighlight фактически не оказывает влияния,
так как поиск не выполняется.
При использовании подсветки следует учитывать технические ограничения:
В пользовательском интерфейсе параметр проявляется следующим образом:
new SlimSelect({
select: '#countries',
searchHighlight: true,
searchText: 'Search country',
showSearch: true
});
При вводе текста подсветка совпадающих частей активируется автоматически и применяется ко всем отфильтрованным элементам списка.