localgov_alert_banner-1.8.5/js/alert_banner.js

js/alert_banner.js
/**
 * @file
 * Hide the alert banner, and set a cookie that matches the token.
 *
 * This is so if the alert changes, the banner is reshown.
 */

function setAlertBannerHideCookie(cookieTokens, token) {
  cookieTokens.push(token);
  const newCookie = cookieTokens.join('+');
  // Set expiry 30 days.
  const expiry = Date.now() + 30 * 24 * 60 * 60 * 1000;
  document.cookie = `hide-alert-banner-token=${newCookie}; expires=${new Date(
    expiry,
  ).toUTCString()}; path=/; SameSite=Lax;`;
}

(function localgovAlertBannerScript(Drupal) {
  Drupal.behaviors.localgovAlertBanners = {
    attach(context) {
      const allCookies = document.cookie.split('; ');
      let cookie;

      for (let i = 0; i < allCookies.length; i++) {
        const indvCookie = allCookies[i].split('=');
        if (indvCookie[0] === 'hide-alert-banner-token') {
          [, cookie] = indvCookie;
        }
      }

      const cookieTokens =
        typeof cookie !== 'undefined' ? cookie.split('+') : [];

      const alertBanners = once(
        'allAlertBanners',
        '.js-localgov-alert-banner',
        context,
      );

      if (alertBanners) {
        alertBanners.forEach((banner) => {
          banner.classList.remove('hidden');
          const token = banner.getAttribute('data-dismiss-alert-token');
          if (cookieTokens.includes(token)) {
            banner.style.display = 'none';
          }
        });
      }

      const alertBannerCloseButtons = once(
        'allAlertBannerCloseButtons',
        '.js-localgov-alert-banner__close',
        context,
      );

      if (alertBannerCloseButtons) {
        alertBannerCloseButtons.forEach((closeButton) => {
          closeButton.addEventListener('click', (e) => {
            e.preventDefault();
            const banner = closeButton.closest('.js-localgov-alert-banner');
            banner.setAttribute('aria-hidden', 'true');
            banner.style.display = 'none';
            setAlertBannerHideCookie(
              cookieTokens,
              banner.getAttribute('data-dismiss-alert-token'),
            );
          });
        });
      }
    },
  };
})(Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc