Add hover mega menu

header-mega-menu.liquid
{% comment %}
  Renders a megamenu for the header.

  Usage:
  {% render 'header-mega-menu' %}
{% endcomment %}

<nav class="header__inline-menu">
  <ul class="list-menu list-menu--inline" role="list">
    {%- for link in section.settings.menu.links -%}
      <li>
        {%- if link.links != blank -%}
          <header-menu>
            <details id="Details-HeaderMenu-{{ forloop.index }}" class="mega-menu mega_menu_hover">
              <summary
                id="HeaderMenu-{{ link.handle }}"
                class="header__menu-item list-menu__item link focus-inset"
              >
                <span
                  {%- if link.child_active %}
                    class="header__active-menu-item"
                  {% endif %}
                >
                  {{- link.title | escape -}}
                </span>
                {{- 'icon-caret.svg' | inline_asset_content -}}
              </summary>
              <div
                id="MegaMenu-Content-{{ forloop.index }}"
                class="mega-menu__content  header__submenu color-{{ section.settings.menu_color_scheme }} gradient motion-reduce global-settings-popup"
                tabindex="-1"
              >
                <ul
                  class="mega-menu__list page-width{% if link.levels == 1 %} mega-menu__list--condensed{% endif %}"
                  role="list"
                >
                  {%- for childlink in link.links -%}
                    <li>
                      <a
                        id="HeaderMenu-{{ link.handle }}-{{ childlink.handle }}"
                        href="{{ childlink.url }}"
                        class="mega-menu__link mega-menu__link--level-2 link{% if childlink.current %} mega-menu__link--active{% endif %}"
                        {% if childlink.current %}
                          aria-current="page"
                        {% endif %}
                      >
                        {{ childlink.title | escape }}
                         {%- assign collection_handle = childlink.url | split: '/' | last -%}
                    {%- assign collection = collections[collection_handle] -%}
                    {%- if collection and collection.image -%}
                      <img
                        src="{{ collection.image | img_url: 'master' }}"
                        alt="{{ collection.title | escape }}"
                        class="mega-menu__image"
                      />
                    {%- endif -%}
                                        
                      </a>
                      {%- if childlink.links != blank -%}
                        <ul class="list-unstyled" role="list">
                          {%- for grandchildlink in childlink.links -%}
                            <li>
                              <a
                                id="HeaderMenu-{{ link.handle }}-{{ childlink.handle }}-{{ grandchildlink.handle }}"
                                href="{{ grandchildlink.url }}"
                                class="mega-menu__link link{% if grandchildlink.current %} mega-menu__link--active{% endif %}"
                                {% if grandchildlink.current %}
                                  aria-current="page"
                                {% endif %}
                              >
                                {{ grandchildlink.title | escape }}
                              </a>
                            </li>
                          {%- endfor -%}
                        </ul>
                      {%- endif -%}
                    </li>
                  {%- endfor -%}
                </ul>
                
              </div>
            </details>
          </header-menu>
        {%- else -%}
          <a
            id="HeaderMenu-{{ link.handle }}"
            href="{{ link.url }}"
            class="header__menu-item list-menu__item link link--text focus-inset"
            {% if link.current %}
              aria-current="page"
            {% endif %}
          >
            <span
              {%- if link.current %}
                class="header__active-menu-item"
              {% endif %}
            >
              {{- link.title | escape -}}
            </span>
          </a>
        {%- endif -%}
      </li>
    {%- endfor -%}
  </ul>
</nav>
js 
/****** theme custom menu appears on hover Start ******/
     // Add this code make menu appears on hover
          function bindMouseOverToMegaMenu (item) {
            item.addEventListener("mouseover", () => {
                item.setAttribute("open", true);
                item.querySelector(".mega-menu__content, .header__submenu").addEventListener("mouseover", () => {
                  item.setAttribute("open", true);
                });
                item.querySelector(".mega-menu__content, .header__submenu").addEventListener("mouseleave", () => {
                  item.removeAttribute("open");
                });
              item.addEventListener("mouseleave", () => {
                item.removeAttribute("open");
              });
            });
          }
     let main_header_iner_items = document.querySelector(".header__inline-menu");
    if(main_header_iner_items){
    let items = main_header_iner_items.querySelectorAll("details.mega_menu_hover, details.drop-down-hover");
    items.forEach(bindMouseOverToMegaMenu);
    }
/****** theme custom menu appears on hover End ******/

Leave a Reply

Your email address will not be published. Required fields are marked *