Skip to content

CdsToastQueue

New in v4.0

Очередь всплывающих уведомлений на основе CdsToast. Складывайте сообщения в массив v-model — очередь покажет их по одному или стопкой, выдержит лимит одновременно видимых и закроет отработавшие.

Storybook GitLab
Покрытие тестами: 99% — хорошее покрытие
API в спеках
58 / 58 пропсы, события, слоты и exposed, у которых есть тест
Тест-кейсы
34 юнит · 2 браузерных
Известные баги
2 зафиксированы тестом it.fails
Покрытие кода
99.2% строк · 87.2% ветвей замер v4.0.0-alpha.13
A11y (axe)
6 рекомендаций в 6 историях замер v4.0.0-alpha.11

Для одиночного уведомления — например, подтверждения сохранения — достаточно CdsToast.

Вариации ​

Очередь сообщений ​

Сообщение — строка или объект с пропсами тоста. Добавляйте сообщения в массив v-model: очередь показывает их по одному, остальные ждут своего места. Свойство closable добавляет каждому тосту кнопку закрытия с текстом close-text. Общие пропсы тостов — location, timer, status и другие — задавайте прямо на очереди: они применятся к каждому сообщению. Пока вкладка браузера скрыта, автозакрытие приостанавливается.

Sandbox Storybook

Лимит и переполнение ​

Свойство total-visible ограничивает число одновременно видимых тостов: новый занимает место у края экрана и сдвигает предыдущие. Свойство display-strategy решает, что делать с лишними: hold (по умолчанию) держит их в очереди, пока не освободится место, overflow закрывает самые старые.

Sandbox Storybook

Стопка ​

Свойство collapsed сворачивает все тосты, кроме последнего, в компактную стопку. Наведите курсор — стопка развернётся, а таймеры встанут на паузу, пока курсор внутри.

Sandbox Storybook

Слоты ​

Слоты настраивают каждый тост очереди; во все передаётся объект item текущего сообщения.

СлотОписание
headerШапка тоста
textТекст тоста. Замещает text сообщения
actionsДействия тоста. В props приходит обработчик onClick, закрывающий тост
itemПолная замена тоста. Пропсы сообщения передаются через CdsDefaultsProvider

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

Фоновые операции ​

Передайте в сообщение promise — тост получит индикатор загрузки и не закроется, пока операция не завершится. Колбэки success и error возвращают пропсы тоста для результата: статус, текст и время автозакрытия.

Sandbox Storybook

Центр уведомлений ​

События приложения складываются в одну очередь в углу экрана: location="bottom right" уводит тосты из рабочей зоны, collapsed прячет старые в стопку, а closable даёт закрыть каждое уведомление.

Sandbox Storybook

Управление очередью ​

Колбэк onDismiss сообщения получает причину закрытия — auto, dismissed, overflow или cleared, — а exposed-метод clear() закрывает все тосты и очищает очередь.

Sandbox Storybook

API ​

Пропсы

ИмяТипПо умолчаниюОписание
absoluteboolean | undefined—Указывает, что элемент должен быть позиционирован абсолютно, а не фиксированно. Это может быть полезно для оверлеев, которые должны быть ограничены определенной областью, например, внутри контейнера с position: relative.
activator(string & {}) | Element | "parent" | ComponentPublicInstance | undefined—Элемент, который будет активировать компонент
activatorPropsRecord<string, any> | undefined{}Свойства для элемента активатора
attachstring | boolean | Element | undefined—Указывает, в какой элемент DOM следует переместить содержимое overlay. Может быть прямой ссылкой на элемент, строкой querySelector или значением true для отключения перемещения. По умолчанию используется элемент body. Как правило, не рекомендуется изменять это свойство, за исключением крайних случаев: алгоритм позиционирования по умолчанию должен справляться с большинством сценариев лучше, чем это возможно без перемещения, и может возникнуть непредвиденное поведение, если меню окажется дочерним элементом своего активатора.
bgColorstring | undefined—Цвет фона компонента
closablestring | boolean | undefined—Добавляет кнопку закрытия каждому тосту. Строковое значение задаёт цвет кнопки.
closeDelaystring | number | undefined—Время ожидания в миллисекундах перед закрытием компонента. Работает только с параметром open-on-hover.
closeOnBackboolean | undefinedfalseЗакрывает содержимое оверлея при нажатии кнопки «Назад» в браузере или вызове $router.back(), отменяя исходную навигацию. persistent оверлеи отменяют навигацию и анимируются так, как будто по ним щелкнули за пределами оверлея, вместо того чтобы закрываться.
closeOnContentClickboolean | undefined—Скрыть компонент по клику на контент
closeTextstring | undefined'$cds.dismiss'Текст кнопки закрытия.
collapsedboolean | undefined—Сворачивает неактивные тосты в стопку под последним видимым.
containedboolean | undefined—Ограничивает размер компонента и сетки в соответствии с его смещенным родительским элементом. Подразумевает использование свойств absolute и attach. (Примечание: родительский элемент должен иметь свойство position: relative.)
contentstring | number | undefined—Контент, отображаемый в компоненте.
contentClassany—Применяет пользовательский класс к отдельному элементу. Это удобно, поскольку содержимое перемещается в начало компонента cds-app (если не указан параметр attach) и не может быть выделено с помощью классов, переданных непосредственно в компонент.
contentPropsany—Применяет кастомные свойства (props) к перемещаемому контенту
disabledboolean | null | undefinednullЗаблокированное состояние
displayStrategy"overflow" | "hold" | undefined'hold'Стратегия при превышении totalVisible: hold — ждать закрытия, overflow — вытеснять самые старые.
eagerboolean | undefined—Принудительно рендерит содержимое компонента при его использовании. Это полезно, если у вас есть контент, который не отображается в DOM, но который необходимо проиндексировать для SEO.
gapstring | number | undefined8Отступ между тостами в пикселях.
heightstring | number | undefined—Высота компонента
iconfalse | IconValue | undefinednullИконка перед контентом. По умолчанию берётся из status; false скрывает иконку.
loadingboolean | undefined—Отображает индикатор загрузки вместо иконки.
locationAnchor | null | undefined'top center'Позиционирование элемента относительно его контейнера. Например, "top left", "center", "bottom right" и т.д.
locationStrategy"static" | "connected" | LocationStrategyFunction | undefined'static'Определяет способ позиционирования содержимого оверлея. По умолчанию используется значение static, при котором содержимое центрируется в контейнере. Используйте connected для привязки к элементу-активатору.
maxHeightstring | number | undefined—Максимальная высота компонента
maxWidthstring | number | undefined—Максимальная ширина компонента
minHeightstring | number | undefined—Минимальная высота компонента
minWidthstring | number | undefined—Минимальная ширина компонента
modelValuereadonly ToastMessage[] | undefined[]Очередь сообщений (v-model). Строка или объект с пропсами тоста.
opacitystring | number | undefined—Прозрачность элемента «scrim». Применяется только в том случае, если св-во scrim=true.
openDelaystring | number | undefined—Время ожидания в миллисекундах перед открытием компонента. Работает только с параметром open-on-hover.
openOnClickboolean | undefined—Показать компонент по клику на активатор
openOnFocusboolean | undefined—Показать компонент по фокусу на активатор
openOnHoverboolean | undefined—Показать компонент по наведению на активатор
originAnchor | "auto" | "overlap" | undefined'auto'Устанавливает точку привязки для содержимого наложения, которая выравнивается по точке привязки «location» на объекте-цели. При значении «auto» используется противоположная сторона точки «location». При значении «overlap» используется та же точка привязки, в результате чего наложение перекрывает объект-цель. Также задает значение CSS-свойства transform-origin для transitions enter/leave.
position"absolute" | "static" | "fixed" | "relative" | "sticky" | undefined—CSS-позиционирование компонента — значение свойства position
prependAvatarstring | undefined—Источник изображения аватара перед контентом. Имеет приоритет над иконкой.
reverseTimerboolean | undefined—Обратное направление шкалы таймера: заполняется, а не убывает.
status"progress" | "danger" | "success" | "warning" | "info" | undefined'info'Семантический статус — определяет цвет и дефолтную иконку.
target(string & {}) | Element | "parent" | ComponentPublicInstance | "cursor" | [x: number, y: number] | undefined—Если для параметра locationStrategy задано значение «connected», необходимо указать элемент или массив координат x, y, относительно которых должен располагаться оверлей. По умолчанию в качестве такого элемента используется элемент-активатор.
textstring | number | undefined—Текст, отображаемый в компоненте.
textColorstring | undefined—Цвет текста компонента
themestring | undefined—Тема компонента
timeoutstring | number | undefined5000Время в миллисекундах до автоматического скрытия тоста. Значение -1 отключает автозакрытие.
timerboolean | "top" | "bottom" | undefinedfalseОтображает шкалу таймера до автозакрытия: true/top — сверху, bottom — снизу.
timerColorstring | undefined—Цвет шкалы таймера.
titlestring | undefined—Заголовок тоста.
totalVisiblestring | number | undefined1Максимальное количество одновременно видимых тостов.
transitionstring | boolean | (TransitionProps & { component?: Component | undefined; }) | null | undefined'cds-toast-transition'Анимация перехода
verticalboolean | undefined—Вертикальная раскладка: действия переносятся под контент.
widthstring | number | undefined—Ширина компонента
zIndexstring | number | undefined2000Значение z-index для компонента.

События

ИмяТипОписание
update:modelValue[value: ToastMessage[]]Событие изменения очереди сообщений.

Слоты

ИмяТипОписание
actions{ item: ToastMessage; props: { onClick: () => void; }; }Слот действий тоста.
header{ item: ToastMessage; }Слот шапки тоста.
item{ item: ToastMessage; }Слот полной замены тоста. Пропсы тоста передаются через CdsDefaultsProvider.
text{ item: ToastMessage; }Слот текста тоста.

Exposed

ИмяТипОписание
clear() => voidОчищает очередь и закрывает все видимые тосты.