Подтверждения и сообщения: modal, dropdown, overlay, Data API и AJAX.
Data API и AJAX
Декларативный запуск, безопасный GET и журнал событий.
Под каждым примером — его HTML, JavaScript и CSS. Подключите JS из
vgapp и SCSS из vgapp/scss (или готовый CSS пакета).
Кнопки и раскладка используют OKAUX 1.0.2; тема сайта управляется OKAUX.
Data API и DOM-события
boot подключает делегирование один раз. Динамически добавленные кнопки также работают. Результат приходит на исходный элемент и всплывает до document.
Ожидает события.
HTML
<button type="button" class="btn btn-primary btn-sm" id="alert-data-trigger"
data-vg-toggle="alert" data-size="compact"
data-message-title="Подтвердить выбор?"
data-message-description="Data API читает параметры с этой кнопки."
data-buttons-agree-class='["btn-primary", "btn-sm"]'
data-buttons-cancel-class='["btn-surface", "btn-sm"]'>Запустить Data API</button>
<p id="alert-data-result" role="status" class="mt-3 mb-0">Ожидает события.</p>
JavaScript
/**
* Описание: рабочий пример VGAlert для копирования и демо.
* Возможности: запуск публичного API и отображение результата без изменения данных.
*/
import { VGAlert } from 'vgapp';
function initAlertDemo() {
// Дополнительная инициализация не требуется: используется Data API.
// VGAlert.boot() нужен один раз, если приложение не запускает модули автоматически.
VGAlert.boot();
const button = document.querySelector('#alert-data-trigger');
if (!button) return;
const result = document.querySelector('#alert-data-result');
for (const name of ['accept', 'reject', 'finally']) {
button.addEventListener('vg.alert.' + name, () => {
result.textContent += ' → vg.alert.' + name;
});
}
button.addEventListener('click', () => { result.textContent = 'Ожидает решения'; });
}
initAlertDemo();
CSS
/* Дополнительные стили не требуются. */
Запрос после подтверждения
VGAlert.confirm запускает безопасный GET /api/alert/demo?mode=success|empty|error. Отмена не отправляет запрос. Повторные вызовы разрешены; пустой ответ очищает target.
Текущий AJAX-контракт: HTTP-ошибка передаётся как status: error через
vg.alert.loaded, затем vg.alert.accept. Поэтому проверяйте
event.stats или event.vgalert.status, а не только имя accept.
vg.alert.reject сообщает об отмене или отклонении цепочки.
Пример выводит фактическую последовательность событий.