Уведомления, стек, перетаскивание, AJAX и жизненный цикл.
API, события и оформление
Ручное управление, отмена скрытия и справочник публичного контракта.
Каждый пример независим. Кнопка «Показать код» раскрывает HTML, JavaScript и CSS,
которые используются в самом примере. Стили оболочки и кнопок предоставляет OKAUX 1.0.2.
Жизненный цикл
show, hide, toggle, dispose и повторный init. Для очистки сначала скройте тост. Флажок запрещает скрытие через отменяемое событие.
Журнал событий
Управление экземпляром. Esc и кнопка закрытия вызывают hide().
Значения проверены по исходникам VGToast; особенности build и статической разметки различаются.
Подключение
import { VGToast } from 'vgapp'; стили — @use "vgapp/scss" либо публичный entrypoint vgapp/toast.
На этом сайте кнопки и поля предоставляет OKAUX 1.0.2. Для переноса CSS примеров добавьте класс page-module-toast на body.
Состояние темы хранит OKAUX; адаптер vgapp/theme привязывает переменные VGApp к data-theme.
Создают и сразу показывают тост; возвращают экземпляр. Текст — строка HTML или массив [заголовок, тело].
Callback получает экземпляр до вызова show(). Не передавайте недоверенный HTML без очистки.
Получение экземпляра для существующей разметки. Повторный getOrCreateInstance возвращает существующий экземпляр, не меняя его настройки.
static / autohide / delay
Для разметки: true / false / 3000 мс. Для run и build: false / true / 3000 мс.
При static: true в build автоскрытие по умолчанию выключается. Таймер стартует после shown.
Нажатие указателя приостанавливает таймер, отпускание внутри тоста запускает его заново.
placement / stack
По умолчанию bottom center. top или bottom плюс left, center или right, разделённые пробелом.
stack: {enable: true, max: 5}. Лимит и смещения общие для вертикальной группы top / bottom.
stack.enable: false заменяет уведомления своей группы.
enableClickToast / enableButtonClose / keyboard
true / false / true. Для тоста с интерактивным содержимым отключайте закрытие по клику.
enableButtonClose добавляет кнопку только в build; в статическом HTML кнопку с data-vg-dismiss="toast" добавляют вручную.
Esc закрывает все показанные экземпляры с keyboard: true.
theme / type
theme: 'dark' добавляет класс при build. Пустая строка оставляет базовые переменные темы.
type: null; success, error, warning, info добавляют иконку при build. Тип не назначает цвет автоматически.
animation
enable: true, in: animate__backInUp, out: animate__backOutDown, delay: 300.
Для этих классов нужен Animate.css. effect: none, fade, zoom, blur, slide-up, slide-down, массив эффектов
или собственный CSS-класс. Встроенные эффекты работают и при enable: false.
drag / resize
Оба по умолчанию выключены. drag: {enable, selector: '.vg-toast-wrapper', threshold: 4, resizeEdgeSize: 8, debug: false}.
resize: {enable, edgeSize: 8, minWidth: 220, minHeight: 64, debug: false}.
Явно указывайте enable: true; boolean true также поддерживается.
ajax
route: '', target: '', method: 'get', loader: false, once: false, output: true.
target обязателен для вывода HTML, автоматической подстановки тела тоста нет.
output: false позволяет обработать ответ самостоятельно через loaded.
once кэширует завершение, включая ошибку; для повторных попыток используйте once: false.
Data API
data-vg-toggle="toast" + data-vg-target="#id"; закрытие — data-vg-dismiss="toast".
Вложенные параметры: data-stack-max="3", data-ajax-route="/api/toast/demo".
camelCase-настройки передавайте через JSON data-params, например {"enableClickToast": false}.
show / hide / toggle / dispose
show(relatedTarget?) читает параметры триггера. Повторный show видимого тоста не запускает новый цикл.
hide асинхронный; завершение — hidden. dispose освобождает экземпляр; при static: true сохраняет DOM.
Сначала скройте тост, затем вызывайте dispose.
События
vg.toast.show и vg.toast.hide отменяются через preventDefault(); vg.toast.shown и vg.toast.hidden сообщают о завершении.
show/shown содержат detail.relatedTarget. vg.toast.loaded содержит detail.stats ('success' / 'error') и detail.data.
hidePrevented.vg.toast объявлено в старом README, но реализация его не отправляет.
--vg-toast-header-font-size, --vg-toast-header-font-weight, --vg-toast-body-font-size, --vg-toast-body-font-weight.
Объявленная --vg-toast-font-size непосредственно шаблоном не используется.