Search — это компонент библиотеки Carbon Components Svelte, предназначенный для реализации функционала поиска в приложениях. Он сочетает в себе визуальную консистентность с остальными компонентами IBM Carbon Design System и гибкость в настройке.
Компонент Search обладает рядом свойств, позволяющих
тонко настроить его поведение:
placeholder — строка, отображаемая внутри поля ввода
до ввода данных. Используется для подсказки пользователю.
labelText — текстовая подпись поля поиска.
Отображается над полем ввода, что улучшает доступность.
value — текущее значение поля поиска. Поддерживает
двустороннюю привязку через Svelte bind:value.
size — задает размер компонента. Поддерживаются
значения sm, md, lg. Влияет на
высоту поля и размер текста.
closeButtonLabel — текст кнопки очистки поля,
используемый для доступности.
disabled — булевое значение, отключающее возможность
ввода текста.
В Svelte компоненты Carbon используют стандартные механизмы работы с
данными и событиями. Для поиска ключевыми являются события
input и change.
Пример с привязкой значения и обработкой события
input:
event.detail.value содержит актуальный текст, введенный
пользователем. Это позволяет реализовать динамическую фильтрацию данных
в реальном времени.
Компонент Search по умолчанию содержит кнопку для
очистки введенного текста. Ее можно кастомизировать через свойства:
closeButtonLabel — текст для кнопки очистки, критичен
для доступности.showClearButton — логическое значение, определяющее,
отображать ли кнопку очистки.Пример:
Carbon Components Svelte использует CSS-модули и классы IBM Carbon для стилизации. Основные классы поля поиска:
.bx--search — контейнер всего компонента..bx--search-input — текстовое поле..bx--search-close — кнопка очистки..bx--search-magnifier — иконка лупы.Пример добавления кастомного класса:
Компонент Search легко интегрируется с формами и другими элементами интерфейса. Он поддерживает стандартные события Svelte, что позволяет обрабатывать ввод данных в связке с кнопками или фильтрами:
Такое сочетание позволяет реализовать поиск с кнопкой подтверждения
или поиск «по мере ввода» через обработку события
input.
Search соответствует требованиям WCAG:
aria-label,
aria-labelledby.aria-label через
closeButtonLabel.Пример улучшенной доступности:
Для реализации автодополнения поле поиска можно объединять с
компонентами ListBox или создавать кастомные списки
предложений. Компонент Search при этом используется как контроллер
ввода:
{#if query.length > 0}
{#each suggestions.filter(s => s.includes(query)) as suggestion}
- {suggestion}
{/each}
{/if}
Такой подход позволяет строить динамический интерфейс поиска без внешних библиотек.