dsfr4drupal-1.x-dev/js/header.mobile.js

js/header.mobile.js
/**
 * @file
 * Manage header mobile behaviors.
 */

((window, Drupal, once) => {
  "use strict";

  /**
   * DSFR Large screen breakpoint.
   * Displays menu button under this screen size.
   *
   * @type {number}
   */
  const DSFR_BREAKPOINT_LG = 992;

  /**
   * DSFR Header wrappers.
   *
   * @type {string}
   */
  const MENU_LINKS_WRAPPER = ".fr-header__menu-links";
  const TOOLS_LINKS_WRAPPER = ".fr-header__tools-links";

  Drupal.behaviors.dsfrHeaderMobile = {
    attach: (context) => {
      const menuLinksWrapper = once("header-menu-links-wrapper", MENU_LINKS_WRAPPER, context);
      const toolsLinksWrapper = once("header-tools-links-wrapper", TOOLS_LINKS_WRAPPER, context);

      if (!menuLinksWrapper.length || !toolsLinksWrapper.length) {
        return;
      }

      window.addEventListener("resize",  () => {
        if(
          window.innerWidth < DSFR_BREAKPOINT_LG &&
          toolsLinksWrapper[0].innerHTML
        ) {
          // Move tools links into menu links.
          menuLinksWrapper[0].innerHTML = toolsLinksWrapper[0].innerHTML;
          toolsLinksWrapper[0].innerHTML = "";
        }
        else if (
          window.innerWidth >= DSFR_BREAKPOINT_LG &&
          !toolsLinksWrapper[0].innerHTML
        ) {
          // Move menu links into tools links.
          toolsLinksWrapper[0].innerHTML = menuLinksWrapper[0].innerHTML;
          menuLinksWrapper[0].innerHTML = "";
        }
      });

      // Trigger resize event on page loading.
      window.dispatchEvent(new Event("resize"));
    }
  };

})(window, Drupal, once);

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

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