HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/innodrive/src/js/modules/catalog-dropdown.js
import { $, $$, isMobile } from '@utils';
import { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';

export default () => {
  const catalogDropdown = $('.catalog-popup');
  const menuLinks = [...$$('.main-header__dropdown-wrp a')];
  const mobileCatalog = $('.main-header__dropdown-wrp');
  const toggleMobileCatalog = $('.main-header__dropdown-menu-close');

  const onCurrentClick = (e) => {
    e.preventDefault();

    if (isMobile()) {
      mobileCatalog.classList.toggle('js-opened');
      disableBodyScroll(catalogDropdown);
    } else {
      window.location = e.currentTarget.href;
    }
  };

  if (toggleMobileCatalog) {
    toggleMobileCatalog.addEventListener('click', function () {
      mobileCatalog.classList.toggle('js-opened');
      clearAllBodyScrollLocks();
    });
  }

  menuLinks.forEach((link) => {
    link.addEventListener('click', onCurrentClick);
  });

  [...$$('.menu__item')].forEach((item) => {
    item.addEventListener('mouseover', (ev) => {
      if (item.dataset.value) {
        ev.preventDefault();
        ev.stopPropagation();

        const dropDownList = item.closest('.menu__dropdown-lists');
        const menuList = item.closest('.menu__list');
        const active = menuList.querySelector('.menu__item-active');

        if (active) {
          active.classList.remove('menu__item-active');
        }
        item.classList.add('menu__item-active');
        const haveChild = dropDownList.nextSibling;
        if (haveChild) {
          const activeItems = haveChild.querySelectorAll('.menu__item-active');
          [...activeItems].forEach((item) => {
            item.classList.remove('menu__item-active');
          });

          const isFirst = haveChild.nextSibling;
          if (isFirst) {
            const lastVisible = isFirst.querySelectorAll('.menu__list.visible');
            [...lastVisible].forEach((item) => {
              item.classList.remove('visible');
            });

            const activeItems2 = isFirst.querySelectorAll('.menu__item-active');
            [...activeItems2].forEach((item) => {
              item.classList.remove('menu__item-active');
            });

            const isSecond = isFirst.nextSibling;
            if (isSecond) {
              const lastlastVisible = isSecond.querySelectorAll('.menu__list.visible');
              [...lastlastVisible].forEach((item) => {
                item.classList.remove('visible');
              });

              const activeItems3 = isSecond.querySelectorAll('.menu__item-active');
              [...activeItems3].forEach((item) => {
                item.classList.remove('menu__item-active');
              });
            }
          }

          const nextVisible = haveChild.querySelectorAll('.menu__list.visible');
          [...nextVisible].forEach((item) => {
            item.classList.remove('visible');
          });

          const toShow = haveChild.querySelector(`.menu__list[data-value="${item.dataset.value}"]`);
          if (toShow) {
            toShow.classList.add('visible');
          }
        }
      }
    });
  });
};