Skip to content

CdsNotification

Уведомление — блок с сообщением о событии или состоянии: успешное сохранение, предупреждение о лимите, ошибка загрузки. Семантический статус задаёт цвет и иконку, а режимы отображения позволяют встроить сообщение в форму, карточку или список.

Storybook GitLab Figma
Покрытие тестами: 100% — хорошее покрытие
API в спеках
23 / 23 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
49 юнит · 0 браузерных
Известные баги
1 зафиксированы тестом it.fails
Покрытие кода
100% строк · 100% ветвей замер v4.0.0-alpha.13
A11y (axe)
4 рекомендаций в 11 историях замер v4.0.0-alpha.11

Для всплывающих сообщений поверх страницы, которые исчезают сами, возьмите CdsToast. Для короткой метки статуса в строке или карточке — CdsTag.

Анатомия ​

Уведомление состоит из иконки статуса, контентной колонки — заголовок, текст и действия — и кнопки закрытия. Каждую часть можно заменить одноимённым слотом.

Вариации ​

Статусы ​

Свойство status задаёт семантику сообщения — цвет и иконку. Статус по умолчанию — info.

Sandbox Storybook

Режимы отображения ​

Свойство variant меняет оформление: default — с рамкой, flat — без рамки, compact — однострочный, important — нейтральный фон и тень для показа поверх контента.

Sandbox Storybook

variant="compact" собирает иконку, текст и действия в одну линию, заголовок не отображается. Подходит для узких мест: панель фильтров, строка таблицы, подвал карточки.

Sandbox Storybook

Иконки ​

По умолчанию иконка соответствует статусу. Свойство icon заменяет её любой иконкой из набора, а значение false убирает совсем.

Sandbox Storybook

Закрытие ​

Свойство closable добавляет кнопку закрытия, видимость уведомления контролируется через v-model. Клик по кнопке дополнительно эмитит click:close.

Уведомление появляется и уходит плавно: сначала затухает, затем схлопывается по высоте, и соседние блоки сдвигаются без скачка. click:close приходит сразу по клику, а update:modelValue — после завершения ухода, поэтому элемент можно удалять из списка в обработчике, не обрывая анимацию. Промежуток между уведомлениями в списке задавайте через margin: он схлопывается вместе с блоком, в отличие от gap, который при уходе даёт скачок. При prefers-reduced-motion меняется только прозрачность.

Sandbox Storybook

Слоты ​

Слоты заменяют контент из пропсов, когда нужна своя разметка.

СлотОписание
prependКонтент перед текстом. Замещает иконку статуса
titleЗаголовок. Замещает текст из title
textТекст сообщения. Замещает текст из text
defaultПроизвольный контент после текста
actionsДействия (кнопки, ссылки) под текстом
appendКонтент после контентной колонки
closeКнопка закрытия. Получает props для привязки к своему элементу
Sandbox Storybook

Рекомендации ​

Сценарии использования ​

Результат отправки формы ​

После успешного запроса уведомление со статусом success появляется через v-model и подтверждает результат. Свойство closable даёт пользователю убрать сообщение, когда оно прочитано.

Sandbox Storybook

Предупреждение с действием ​

Уведомление warning не просто сообщает о проблеме, а сразу предлагает решение кнопкой в слоте actions. По клику статус меняется на progress, а после ответа сервера — на success: пользователь видит весь ход операции в одном блоке.

Sandbox Storybook

Ошибка загрузки с повтором ​

Если данные не загрузились, уведомление danger объясняет, что произошло, и предлагает повторить запрос. Статус progress показывает, что повтор уже идёт.

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
bgColorstring | undefined—Цвет фона компонента
closableboolean | undefined—Добавляет кнопку закрытия, скрывающую уведомление.
closeIconIconValue | undefined'close'Иконка кнопки закрытия.
closeLabelstring | undefined'$cds.close'Доступная подпись (aria-label) для кнопки закрытия.
contentstring | number | undefined—Контент, отображаемый в компоненте.
iconfalse | IconValue | undefinednullИконка перед контентом. По умолчанию берётся из status; false скрывает иконку.
modelValueboolean | undefinedtrueВидимость уведомления (v-model). При false уведомление не отображается.
status"progress" | "danger" | "success" | "warning" | "info" | undefined'info'Семантический статус — определяет цвет и дефолтную иконку.
tagstring | JSXComponent<any> | undefined'div'Пользовательский HTML-тег для отображения
textstring | number | undefined—Текст, отображаемый в компоненте.
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента
titlestring | undefined—Заголовок уведомления.
variant"default" | "flat" | "compact" | "important" | undefined'default'Режим отображения: default — обычный; flat — без рамки; compact — однострочный без заголовка; important — нейтральный фон и тень, статус задаёт только цвета контента.

События

ИмяТипОписание
click:close[event: MouseEvent]Клик по кнопке закрытия.
update:modelValue[value: boolean]Изменение видимости уведомления. При закрытии кнопкой приходит после завершения анимации ухода, а не в момент клика.

Слоты

ИмяТипОписание
actionsanyСлот действий (кнопки, ссылки) под текстом.
appendanyСлот после контента.
close{ props: Record<string, any>; }Слот кнопки закрытия; получает props для привязки к своему элементу.
defaultanyОсновной контент уведомления (дополняет text).
prependanyСлот перед контентом (по умолчанию — иконка статуса).
textanyСлот текста (вместо пропа text).
titleanyСлот заголовка (вместо пропа title).