Tooltip в Carbon Components Svelte представляет собой всплывающую подсказку, которая отображает дополнительную информацию при наведении на элемент или фокусе на нём с клавиатуры. На кнопках tooltip используется для пояснения действий, которые не очевидны по тексту кнопки или иконке.
Для работы с tooltip на кнопках необходимо импортировать два основных компонента из библиотеки:
import { Button } from 'carbon-components-svelte';
import { Tooltip } from 'carbon-components-svelte';
Button — стандартная кнопка Carbon, поддерживающая
разные стили и состояния.Tooltip — компонент для отображения всплывающих
подсказок.Для базового использования tooltip оборачивают кнопку в компонент
Tooltip или используют слот trigger:
<Tooltip text="Сохранить изменения">
<Button kind="primary" size="md">Сохранить</Button>
</Tooltip>
Здесь text определяет текст подсказки, который будет
отображаться при наведении курсора на кнопку. В этом примере кнопка
имеет стандартный размер md и основной стиль
primary.
Carbon Components Svelte поддерживает более гибкое управление tooltip
через слоты trigger и content. Такой подход
позволяет вставлять сложные элементы внутри подсказки:
<Tooltip>
<svelte:fragment slot="trigger">
<Button kind="secondary" size="sm">Инфо</Button>
</svelte:fragment>
<svelte:fragment slot="content">
Подробная информация о функции кнопки.
</svelte:fragment>
</Tooltip>
Преимущество слотов в том, что текст подсказки может содержать HTML-разметку, ссылки или даже другие компоненты Svelte.
Компонент Tooltip позволяет управлять расположением
подсказки относительно кнопки через свойство align и
временем задержки через delay:
<Tooltip text="Удалить файл" align="bottom" delay={300}>
<Button kind="danger">Удалить</Button>
</Tooltip>
align принимает значения: top,
bottom, left, right. Определяет,
с какой стороны кнопки будет появляться подсказка.delay задаёт задержку в миллисекундах перед появлением
tooltip при наведении.Tooltip корректно работает со всеми состояниями кнопок: активной,
неактивной (disabled) и загрузки (loading).
Особенность для отключённых кнопок: нативные события мыши не срабатывают
на disabled, поэтому tooltip оборачивается в
<div>:
<Tooltip text="Кнопка недоступна" align="top">
<div>
<Button kind="primary" disabled>Сохранить</Button>
</div>
</Tooltip>
Без дополнительного обёртывания tooltip для отключённых кнопок не будет отображаться.
В Carbon Components Svelte можно изменять внешний вид tooltip через CSS-переменные и классы:
<Tooltip text="Настройка темы" class="custom-tooltip">
<Button kind="secondary">Тема</Button>
</Tooltip>
<style>
.custom-tooltip {
--cds-tooltip-background: #0f62fe;
--cds-tooltip-text-color: #ffffff;
--cds-tooltip-font-size: 0.875rem;
}
</style>
--cds-tooltip-background — цвет фона подсказки.--cds-tooltip-text-color — цвет текста.--cds-tooltip-font-size — размер шрифта.Часто подсказка используется на кнопках с иконками без текста. В
таких случаях важно сохранить доступность для экранных читалок с помощью
атрибута aria-label на кнопке:
<Tooltip text="Поиск">
<Button kind="ghost" icon="search" aria-label="Поиск"></Button>
</Tooltip>
Tooltip полностью совместим с клавиатурным управлением. Он появляется при фокусе на кнопке и скрывается при потере фокуса. Для обеспечения доступности следует:
aria-label для кнопок без текста.В интерфейсах с множеством кнопок можно использовать несколько
компонентов Tooltip на одном экране, при этом каждый
tooltip работает независимо. Важно, чтобы у них были уникальные слоты и
корректная разметка для предотвращения конфликтов:
<Tooltip text="Сохранить">
<Button kind="primary">Сохранить</Button>
</Tooltip>
<Tooltip text="Отменить">
<Button kind="secondary">Отмена</Button>
</Tooltip>
text.trigger и
content.Button в
<div>.align и задержку через
delay.Tooltip на кнопках Carbon Components Svelte обеспечивает ясную и наглядную подачу информации о действиях пользователя, сохраняя совместимость с клавиатурой и экранными читалками, а гибкость слотов и стилей позволяет легко адаптировать внешний вид и поведение под любые интерфейсные задачи.