Для всплывающих сообщений поверх страницы, которые исчезают сами, возьмите CdsToast. Для короткой метки статуса в строке или карточке — CdsTag.
Анатомия
Уведомление состоит из иконки статуса, контентной колонки — заголовок, текст и действия — и кнопки закрытия. Каждую часть можно заменить одноимённым слотом.
Вариации
Статусы
Свойство status задаёт семантику сообщения — цвет и иконку. Статус по умолчанию — info.
Режимы отображения
Свойство variant меняет оформление: default — с рамкой, flat — без рамки, compact — однострочный, important — нейтральный фон и тень для показа поверх контента.
variant="compact" собирает иконку, текст и действия в одну линию, заголовок не отображается. Подходит для узких мест: панель фильтров, строка таблицы, подвал карточки.
Иконки
По умолчанию иконка соответствует статусу. Свойство icon заменяет её любой иконкой из набора, а значение false убирает совсем.
Закрытие
Свойство closable добавляет кнопку закрытия, видимость уведомления контролируется через v-model. Клик по кнопке дополнительно эмитит click:close.
Уведомление появляется и уходит плавно: сначала затухает, затем схлопывается по высоте, и соседние блоки сдвигаются без скачка. click:close приходит сразу по клику, а update:modelValue — после завершения ухода, поэтому элемент можно удалять из списка в обработчике, не обрывая анимацию. Промежуток между уведомлениями в списке задавайте через margin: он схлопывается вместе с блоком, в отличие от gap, который при уходе даёт скачок. При prefers-reduced-motion меняется только прозрачность.
Слоты
Слоты заменяют контент из пропсов, когда нужна своя разметка.
| Слот | Описание |
|---|---|
prepend | Контент перед текстом. Замещает иконку статуса |
title | Заголовок. Замещает текст из title |
text | Текст сообщения. Замещает текст из text |
default | Произвольный контент после текста |
actions | Действия (кнопки, ссылки) под текстом |
append | Контент после контентной колонки |
close | Кнопка закрытия. Получает props для привязки к своему элементу |
Рекомендации
Сценарии использования
Результат отправки формы
После успешного запроса уведомление со статусом success появляется через v-model и подтверждает результат. Свойство closable даёт пользователю убрать сообщение, когда оно прочитано.
Предупреждение с действием
Уведомление warning не просто сообщает о проблеме, а сразу предлагает решение кнопкой в слоте actions. По клику статус меняется на progress, а после ответа сервера — на success: пользователь видит весь ход операции в одном блоке.
Ошибка загрузки с повтором
Если данные не загрузились, уведомление danger объясняет, что произошло, и предлагает повторить запрос. Статус progress показывает, что повтор уже идёт.
API
Пропсы
| Имя | Тип | По умолчанию | Описание |
|---|---|---|---|
bgColor | string | undefined | — | Цвет фона компонента |
closable | boolean | undefined | — | Добавляет кнопку закрытия, скрывающую уведомление. |
closeIcon | IconValue | undefined | 'close' | Иконка кнопки закрытия. |
closeLabel | string | undefined | '$cds.close' | Доступная подпись (aria-label) для кнопки закрытия. |
content | string | number | undefined | — | Контент, отображаемый в компоненте. |
icon | false | IconValue | undefined | null | Иконка перед контентом. По умолчанию берётся из status; false скрывает иконку. |
modelValue | boolean | undefined | true | Видимость уведомления (v-model). При false уведомление не отображается. |
status | "progress" | "danger" | "success" | "warning" | "info" | undefined | 'info' | Семантический статус — определяет цвет и дефолтную иконку. |
tag | string | JSXComponent<any> | undefined | 'div' | Пользовательский HTML-тег для отображения |
text | string | number | undefined | — | Текст, отображаемый в компоненте. |
textColor | string | undefined | — | Цвет текста компонента |
theme | string | undefined | — | Тема компонента |
title | string | undefined | — | Заголовок уведомления. |
variant | "default" | "flat" | "compact" | "important" | undefined | 'default' | Режим отображения: default — обычный; flat — без рамки; compact — однострочный без заголовка; important — нейтральный фон и тень, статус задаёт только цвета контента. |
События
| Имя | Тип | Описание |
|---|---|---|
click:close | [event: MouseEvent] | Клик по кнопке закрытия. |
update:modelValue | [value: boolean] | Изменение видимости уведомления. При закрытии кнопкой приходит после завершения анимации ухода, а не в момент клика. |
Слоты
| Имя | Тип | Описание |
|---|---|---|
actions | any | Слот действий (кнопки, ссылки) под текстом. |
append | any | Слот после контента. |
close | { props: Record<string, any>; } | Слот кнопки закрытия; получает props для привязки к своему элементу. |
default | any | Основной контент уведомления (дополняет text). |
prepend | any | Слот перед контентом (по умолчанию — иконка статуса). |
text | any | Слот текста (вместо пропа text). |
title | any | Слот заголовка (вместо пропа title). |