ContentSwitcher — это компонент, предназначенный для организации переключения между различными фрагментами контента в интерфейсе. Он позволяет пользователю выбирать один из нескольких вариантов отображения, сохраняя при этом консистентность визуального стиля и доступность согласно стандартам IBM Carbon Design System.
Компонент состоит из двух ключевых элементов:
Пример базовой структуры:
Первый вариант
Второй вариант
Третий вариант
Выбранный индекс: {selectedIndex}
Пояснение:
bind:selectedIndex позволяет синхронизировать состояние
выбранного переключателя с переменной в компоненте Svelte.name у каждого Switch используется для
идентификации элемента и может быть строкой или числом. отображается на кнопке
переключателя.selectedIndex — индекс активного переключателя (по
умолчанию 0).light — булевое значение, задающее светлую тему
компонента.on:change — событие, которое срабатывает при изменении
выбранного элемента. Передаёт объект с полями index и
name.Пример использования события change:
console.log(e.detail)}>
Вкладка 1
Вкладка 2
Вывод: при переключении между вкладками в консоль
выводится объект вида { index: 1, name: 'tab2' }.
name — уникальное имя переключателя.disabled — если true, переключатель
неактивен и не реагирует на клики.text — альтернативный способ задания текста
переключателя (необязательный, чаще используют содержимое внутри
тега).Пример отключенного переключателя:
Активная
Неактивная
change на уровне ContentSwitcher —
основное событие для отслеживания выбора. Срабатывает каждый раз, когда
пользователь выбирает другой Switch.selectedIndex позволяет
программно изменять активный переключатель.Пример программного управления:
Первый
Второй
Текущий индекс: {selectedIndex}
light
позволяет включить светлую версию компонента, которая хорошо сочетается
с тёмными фонами родительских элементов.Пример CSS-адаптации:
A
B
bind:selectedIndex, если требуется реактивное управление
переключателем.name у Switch должны
быть уникальными для корректной работы событий.{#each} убедиться, что индексы и name
уникальны, иначе bind:selectedIndex может работать
некорректно.
{#each tabs as tab, i}
{tab}
{/each}
Выбрана вкладка: {tabs[selectedIndex]}
Этот подход позволяет легко управлять набором вкладок, добавлять и удалять их динамически без изменения структуры компонента.