ClickableTile — это компонент для создания интерактивных плиток, которые реагируют на действия пользователя, например на щелчок мышью или клавиатурное взаимодействие. Он является расширением стандартного Tile, добавляя функциональность кликабельности и управления состоянием выбора.
Чтобы использовать ClickableTile, необходимо импортировать его из библиотеки:
<script>
import { ClickableTile } from 'carbon-components-svelte';
</script>
<ClickableTile on:click={() => console.log('Tile clicked!')}>
Содержимое плитки
</ClickableTile>
Ключевые моменты:
ClickableTile поддерживает набор свойств для настройки поведения и внешнего вида:
| Свойство | Тип | Описание |
|---|---|---|
light |
boolean | Если true, плитка отображается в светлой теме. |
disabled |
boolean | Запрещает взаимодействие с плиткой. |
href |
string | Превращает плитку в ссылку. |
target |
string | Используется с href для указания, где открывать ссылку
(_blank, _self). |
selected |
boolean | Задает состояние выбранной плитки. |
Пример использования с ссылкой:
<ClickableTile href="https://example.com" target="_blank">
Переход на внешний сайт
</ClickableTile>
ClickableTile генерирует несколько событий:
click — срабатывает при клике мышью или нажатии клавиши
Enter/Space при фокусе.focus — при получении фокуса.blur — при потере фокуса.Эти события можно обрабатывать с помощью стандартного синтаксиса Svelte:
<ClickableTile
on:click={() => console.log('Clicked')}
on:focus={() => console.log('Focused')}
on:blur={() => console.log('Blurred')}
>
Плитка с событиями
</ClickableTile>
ClickableTile наследует стили Carbon Design System. Основные состояния плитки:
Для кастомизации можно использовать классы и слоты:
<ClickableTile class="custom-tile">
<div slot="above">Заголовок</div>
Основной контент
</ClickableTile>
<style>
.custom-tile {
border-radius: 12px;
background-color: #f4f4f4;
transition: transform 0.2s;
}
.custom-tile:hover {
transform: scale(1.02);
}
</style>
Часто плитки используются в коллекции. ClickableTile легко интегрируется в группы для создания интерфейсов выбора:
<script>
import { ClickableTile } from 'carbon-components-svelte';
let selectedTile = null;
const tiles = ['Плитка 1', 'Плитка 2', 'Плитка 3'];
</script>
{#each tiles as tile, index}
<ClickableTile
selected={selectedTile === index}
on:click={() => selectedTile = index}
>
{tile}
</ClickableTile>
{/each}
Особенности этого подхода:
ClickableTile изначально поддерживает клавиатурное взаимодействие:
Рекомендуется добавлять семантические элементы внутри плитки: заголовки, кнопки, ссылки, чтобы поддерживать читабельность для экранных читалок.
Слоты позволяют добавлять сложное содержимое:
<ClickableTile>
<div slot="above">Заголовок плитки</div>
<p>Основной текст плитки</p>
<img src="image.png" alt="Иллюстрация">
</ClickableTile>
ClickableTile хорошо сочетается с:
Пример плитки с кнопкой:
<ClickableTile>
<div>Контент плитки</div>
<Button on:click|stopPropagation={() => console.log('Button clicked')}>
Действие
</Button>
</ClickableTile>
Использование |stopPropagation предотвращает
срабатывание клика самой плитки при нажатии на кнопку.
ClickableTile в Carbon Components Svelte представляет собой универсальный инструмент для создания интерактивных, доступных и визуально привлекательных плиток, легко интегрируемых в любые интерфейсы.