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

Version Path
decidim-core-0.29.2 app/packs/src/decidim/notifications_actions.js
decidim-core-0.29.1 app/packs/src/decidim/notifications_actions.js
decidim-core-0.29.0 app/packs/src/decidim/notifications_actions.js
decidim-core-0.29.0.rc4 app/packs/src/decidim/notifications_actions.js
decidim-core-0.29.0.rc3 app/packs/src/decidim/notifications_actions.js
decidim-core-0.29.0.rc2 app/packs/src/decidim/notifications_actions.js
decidim-core-0.29.0.rc1 app/packs/src/decidim/notifications_actions.js