Sha256: c3f624eb810882a8efcd3e78f1d9cecc3d1b2661b16ce9a5e0ecc75947ae3018

Contents?: true

Size: 1.67 KB

Versions: 7

Compression:

Stored size: 1.67 KB

Contents

/* global Swal */

document.addEventListener('DOMContentLoaded', function() {
  const alertEl = document.querySelectorAll('[data-alert-type]')

  if (!alertEl) return

  alertEl.forEach(function (elem) {
    const alertType = elem.dataset.alertType
    const alertMessage = elem.innerHTML

    show_flash(alertType, alertMessage)
  })
})

// eslint-disable-next-line camelcase
function show_flash(type, message) {
  let sanitizedType = DOMPurify.sanitize(type)
  const sanitizedMessage = DOMPurify.sanitize(message)

  if (sanitizedType === 'notice') sanitizedType = 'info'

  // Set up Swal toast alert defaults
  const Toast = Swal.mixin({
    toast: true,
    position: 'bottom',
    showConfirmButton: false,
    showCloseButton: true,
    timer: 4500,
    timerProgressBar: false,
    showClass: {
      popup: 'animate__animated animate__fadeInUp animate__faster',
      backdrop: '-',
      icon: '-'
    },
    hideClass: {
      popup: 'animate__animated animate__fadeOutDown animate__faster',
      backdrop: '-',
      icon: '-'
    }
  })

  Toast.fire({
    icon: sanitizedType,
    title: sanitizedMessage
  })

  appendToFlashAlertsContainer(sanitizedMessage, sanitizedType)
}

function appendToFlashAlertsContainer (message, type) {
  if (type === 'info') type = 'notice'

  const parnetNode = document.querySelector('#FlashAlertsContainer')
  const node = document.createElement('SPAN');
  const textNode = document.createTextNode(message);

  // Only the most recent alert should be left in the #FlashAlertsContainer.
  parnetNode.innerHTML = ''

  node.classList.add('d-none')
  node.setAttribute('data-alert-type', type);
  node.appendChild(textNode)

  parnetNode.appendChild(node);
}

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spree_backend-4.3.3 app/assets/javascripts/spree/backend/global/alerts.es6
spree_backend-4.3.2 app/assets/javascripts/spree/backend/global/alerts.es6
spree_backend-4.3.1 app/assets/javascripts/spree/backend/global/alerts.es6
spree_backend-4.3.0 app/assets/javascripts/spree/backend/global/alerts.es6
spree_backend-4.3.0.rc3 app/assets/javascripts/spree/backend/global/alerts.es6
spree_backend-4.3.0.rc2 app/assets/javascripts/spree/backend/global/alerts.es6
spree_backend-4.3.0.rc1 app/assets/javascripts/spree/backend/global/alerts.es6