Sha256: f87fc3a8545210c0d66639e6e8be97e5f33ef055e8e39b9f1a68b8b87bfcdd60
Contents?: true
Size: 1.28 KB
Versions: 7
Compression:
Stored size: 1.28 KB
Contents
/** * This file handles the interactions of actions in notifications (if any) * @param {HTMLElement} node target node * @returns {void} */ export default function(node = document) { const actions = node.querySelectorAll("[data-notification-action]") if (!actions.length) { return; } const extractMessage = (detail) => { return detail && detail.message || detail[0] && detail[0].message }; const resolvePanel = (panel, message, klass) => { panel.classList.remove("spinner-container"); if (message) { panel.innerHTML = `<div class="callout ${klass}">${message}</div>`; } else { panel.innerHTML = ""; } }; actions.forEach((action) => { const panel = action.closest(".notification__snippet-actions") action.addEventListener("ajax:beforeSend", () => { panel.classList.add("spinner-container"); panel.querySelectorAll("[data-notification-action]").forEach((el) => { el.disabled = true; }); }); action.addEventListener("ajax:success", (event) => { resolvePanel(panel, extractMessage(event.detail), "success"); }); action.addEventListener("ajax:error", (event) => { resolvePanel(panel, extractMessage(event.detail) || window.Decidim.config.get("notifications").action_error, "alert"); }); }); }
Version data entries
7 entries across 7 versions & 1 rubygems