В SvelteKit UI библиотеках Toggle и ToggleGroup представляют собой базовые компоненты для управления двоичными состояниями и групповой логикой выбора. Они широко используются для реализации переключателей, кнопок выбора и интерактивных элементов управления интерфейсом.
Toggle — это компонент, который отражает одно
двоичное состояние: включено/выключено (true/false).
Основные свойства:
checked — булево значение, указывающее текущее
состояние переключателя.disabled — блокирует взаимодействие пользователя с
компонентом.on:change — событие, вызываемое при изменении
состояния.Пример использования:
<script>
import { Toggle } from 'sveltekit-ui';
let isActive = false;
function handleToggle(event) {
isActive = event.detail.checked;
}
</script>
<Toggle bind:checked={isActive} on:change={handleToggle} />
<p>Состояние: {isActive ? 'Включено' : 'Выключено'}</p>
Особенности Toggle:
bind:checked.aria- атрибуты генерируются
автоматически).ToggleGroup используется для управления набором связанных переключателей или кнопок. Он позволяет организовать выбор одного или нескольких элементов внутри группы.
Основные параметры:
type — определяет поведение группы:
"single" (один выбранный элемент) или
"multiple" (несколько выбранных элементов).value — текущее выбранное значение или массив выбранных
значений.disabled — блокирует всю группу.on:change — событие изменения выбранного элемента.Пример с одиночным выбором:
<script>
import { ToggleGroup, Toggle } from 'sveltekit-ui';
let selected = 'apple';
function handleChange(event) {
selected = event.detail.value;
}
</script>
<ToggleGroup type="single" bind:value={selected} on:change={handleChange}>
<Toggle value="apple">Яблоко</Toggle>
<Toggle value="banana">Банан</Toggle>
<Toggle value="cherry">Вишня</Toggle>
</ToggleGroup>
<p>Выбрано: {selected}</p>
Пример с множественным выбором:
<script>
import { ToggleGroup, Toggle } from 'sveltekit-ui';
let selectedFruits = ['apple', 'cherry'];
function handleChange(event) {
selectedFruits = event.detail.value;
}
</script>
<ToggleGroup type="multiple" bind:value={selectedFruits} on:change={handleChange}>
<Toggle value="apple">Яблоко</Toggle>
<Toggle value="banana">Банан</Toggle>
<Toggle value="cherry">Вишня</Toggle>
</ToggleGroup>
<p>Выбрано: {selectedFruits.join(', ')}</p>
Особенности ToggleGroup:
Toggle.single), так и чекбоксов
(multiple).name и value можно
использовать для отправки данных на сервер.Toggle и ToggleGroup используют
кастомные события с объектом detail,
который содержит актуальное состояние:
Toggle: event.detail.checkedToggleGroup: event.detail.value
(строка или массив)Это позволяет создавать реактивные интерфейсы без дополнительного стейта:
<Toggle bind:checked={isActive} />
<ToggleGroup type="multiple" bind:value={selectedItems} />
Реактивные привязки автоматически обновляют компоненты при изменении внешних переменных.
Стилизация Toggle и ToggleGroup выполняется через:
Tooltip, Card или
FormField.Пример кастомного стиля:
<Toggle style="--toggle-size: 40px; --toggle-color-on: #4caf50;" />
Компоненты SvelteKit UI libs обеспечивают:
aria-checked и
role="switch" для Toggle.ToggleGroup (стрелки
для переключения и пробел/Enter для активации).ToggleGroup в
качестве радиогруппы или множества чекбоксов.bind:value для реактивного контроля
состояния и синхронизации с другими компонентами интерфейса.Эти компоненты формируют основу интерактивного интерфейса и обеспечивают согласованное управление состоянием пользовательских действий в приложениях на SvelteKit.