Компонент Checkbox в SvelteKit UI представляет собой
базовый элемент формы, предназначенный для выбора одного или нескольких
вариантов из множества. В отличие от стандартного HTML-элемента
<input type="checkbox">, SvelteKit предоставляет
расширенные возможности кастомизации, реактивности и интеграции с
состоянием приложения.
В SvelteKit UI компонент создается с использованием тега
<Checkbox> с обязательным указанием
bind:value для реактивного связывания состояния.
<script>
import { Checkbox } from 'sveltekit-ui';
let accepted = false;
</script>
<Checkbox bind:value={accepted}>
Я принимаю условия
</Checkbox>
Ключевые моменты:
bind:value обеспечивает двустороннее связывание: при
изменении состояния компонента переменная accepted
автоматически обновляется.SvelteKit UI позволяет легко изменять внешний вид чекбокса через props и CSS-переменные.
<Checkbox bind:value={accepted} color="primary" size="lg">
Подписка на новости
</Checkbox>
Props, влияющие на внешний вид:
color – задает основной цвет активного состояния
(primary, secondary, success,
danger).size – размер компонента (sm,
md, lg).disabled – делает чекбокс недоступным для
взаимодействия.indeterminate – задает промежуточное состояние,
полезное при выборе части элементов в группе.Для выбора нескольких вариантов можно использовать массив и привязку
через bind:group.
<script>
import { Checkbox } from 'sveltekit-ui';
let selectedFruits = [];
</script>
<Checkbox value="apple" bind:group={selectedFruits}>Яблоко</Checkbox>
<Checkbox value="banana" bind:group={selectedFruits}>Банан</Checkbox>
<Checkbox value="orange" bind:group={selectedFruits}>Апельсин</Checkbox>
Особенности:
selectedFruits будет содержать массив
выбранных значений.Часто возникает необходимость отображать состояние, когда часть
элементов выбрана, но не все. SvelteKit UI поддерживает
indeterminate:
<script>
import { Checkbox } from 'sveltekit-ui';
let allSelected = false;
let someSelected = true;
</script>
<Checkbox bind:value={allSelected} indeterminate={someSelected}>
Выбрать все
</Checkbox>
indeterminate визуально отображает частичное
выделение.Checkbox идеально интегрируется с формами, включая библиотеки валидации, такие как svelte-forms-lib или sveltekit-form.
<script>
import { Checkbox } from 'sveltekit-ui';
import { useForm } from 'sveltekit-form';
const { form, handleSubmit } = useForm({
accepted: false
});
function onSubmit(data) {
console.log(data);
}
</script>
<form on:submit|preventDefault={handleSubmit(onSubmit)}>
<Checkbox bind:value={form.accepted}>Согласен с правилами</Checkbox>
<button type="submit">Отправить</button>
</form>
bind:value обеспечивает
автоматическое обновление данных формы.SvelteKit UI Checkbox строится с соблюдением стандартов ARIA:
aria-checked автоматически синхронизируется с
состоянием.indeterminate устанавливается
aria-checked="mixed".Space для
переключения состояния).Компонент предоставляет основные события для реакции на действия пользователя:
on:change – вызывается при изменении состояния.on:focus и on:blur – полезны для
управления фокусом.<Checkbox bind:value={accepted} on:change={() => console.log('Изменено:', accepted)}>
Я подтверждаю
</Checkbox>
accepted всегда актуально в
обработчике.$: для автоматической
обработки изменений.С помощью реактивных выражений можно динамически включать или выключать чекбокс:
<script>
import { Checkbox } from 'sveltekit-ui';
let accepted = false;
let disabledCondition = false;
$: disabled = !accepted && disabledCondition;
</script>
<Checkbox bind:value={accepted} disabled={disabled}>
Доступно при выполнении условия
</Checkbox>
disabled может зависеть от любой логики
приложения.bind:value и bind:group для
простого управления состоянием.indeterminate для группового выбора.color и
size.Checkbox в SvelteKit UI является мощным инструментом для создания интерактивных и доступных интерфейсов, обеспечивая гибкость и полную реактивность без сложной дополнительной логики.