InlineNotification — это компонент библиотеки Carbon
Components Svelte, предназначенный для отображения встроенных
уведомлений в интерфейсе. В отличие от глобальных уведомлений
(ToastNotification), InlineNotification
используется для информирования пользователя прямо в контексте текущего
элемента страницы или формы, сохраняя структуру документа и не
перекрывая другие элементы интерфейса.
kind (string) — определяет тип уведомления. Возможные значения:
error — уведомление об ошибке;info — информационное сообщение;success — успешное выполнение действия;warning — предупреждение.title (string) — заголовок уведомления, который отображается жирным шрифтом. Обычно отражает суть сообщения, например: “Ошибка сохранения” или “Данные обновлены”.
subtitle (string, необязательный) — дополнительная текстовая информация под заголовком. Позволяет подробно описать причину или действие пользователя.
caption (string, необязательный) — короткая подпись, например дата или источник уведомления.
hideCloseButton (boolean, по умолчанию
false) — определяет наличие кнопки закрытия. Если
значение true, кнопка не отображается.
on:close (event) — событие, срабатывающее при закрытии уведомления. Позволяет выполнять дополнительную логику, например удалять уведомление из списка.
<script>
import { InlineNotification } from 'carbon-components-svelte';
let showNotification = true;
function handleClose() {
showNotification = false;
console.log('Уведомление закрыто');
}
</script>
{#if showNotification}
<InlineNotification
kind="error"
title="Ошибка сохранения"
subtitle="Пожалуйста, проверьте введённые данные"
on:close={handleClose} />
{/if}
1. Уведомления в формах
InlineNotification часто используется рядом с формами для
отображения ошибок валидации. Важно, чтобы уведомление не перекрывало
поля ввода и было логически связано с формой.
<form on:submit|preventDefault={submitForm}>
<input type="text" bind:value={name} placeholder="Имя" />
{#if nameError}
<InlineNotification
kind="warning"
title="Некорректное имя"
subtitle="Имя должно содержать только буквы" />
{/if}
<button type="submit">Отправить</button>
</form>
2. Уведомления на панели инструментов или внутри блоков
контента Для интерфейсов с множеством блоков информации
InlineNotification позволяет локализовать сообщение, не
мешая остальному содержимому страницы.
<div class="panel">
<h2>Сводка отчёта</h2>
{#if reportError}
<InlineNotification
kind="error"
title="Ошибка загрузки отчёта"
subtitle="Попробуйте обновить страницу или повторить позже" />
{/if}
</div>
Компонент автоматически применяет стили Carbon, включая цвета и
отступы, но допускает кастомизацию через CSS-классы и проп
class.
<InlineNotification
kind="info"
title="Обновление доступно"
class="custom-notification" />
.custom-notification {
border-left-width: 4px;
border-left-color: #0f62fe;
background-color: #f0f4ff;
}
on:close, что
позволяет интегрировать уведомления с глобальной системой управления
состоянием.title) имеет семантический тег
<strong>, что повышает читаемость для
скринридеров.InlineNotification только для сообщений,
которые относятся к конкретной области интерфейса.ToastNotification.<script>
import { InlineNotification } from 'carbon-components-svelte';
let notifications = [
{ id: 1, kind: 'info', title: 'Системное обновление', subtitle: 'Перезагрузка не требуется' },
{ id: 2, kind: 'error', title: 'Ошибка загрузки данных', subtitle: 'Сервер недоступен' }
];
function removeNotification(id) {
notifications = notifications.filter(n => n.id !== id);
}
</script>
{#each notifications as notif (notif.id)}
<InlineNotification
kind={notif.kind}
title={notif.title}
subtitle={notif.subtitle}
on:close={() => removeNotification(notif.id)} />
{/each}
Этот пример демонстрирует создание динамического списка встроенных
уведомлений с возможностью их закрытия. Каждый уведомление уникально
идентифицируется через id, что позволяет управлять
состоянием без конфликтов.
InlineNotification в Svelte предоставляет мощный и
гибкий инструмент для локального информирования пользователей, соблюдая
стандарты Carbon Design System и обеспечивая чистый и доступный
интерфейс.