Mary_Pieroszkiewicz

app.js

Oct 31st, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. document.addEventListener('DOMContentLoaded', function() {
  2.  
  3.     const dropdownSubmenu = document.querySelectorAll('.nav--submenu');
  4.  
  5.     function closeOpenItems() {
  6.         openDropmenus = document.querySelectorAll('.nav__list--submenu');
  7.         openDropmenus.forEach(function(dropmenus) {
  8.             dropmenus.classList.remove('show--submenu');
  9.         });
  10.     }
  11.  
  12.     dropdownSubmenu.forEach(function(submenu) {
  13.  
  14.         submenu.addEventListener('click', function(e) {
  15.             e.preventDefault();
  16.             e.stopPropagation();
  17.  
  18.             const dropContent = submenu.querySelector('.nav__list--submenu');
  19.  
  20.             closeOpenItems();
  21.  
  22.             if (!dropContent.classList.contains('show--submenu')) {
  23.                 dropContent.classList.add('show--submenu');
  24.             }
  25.  
  26.         });
  27.      });
  28.  
  29.     window.addEventListener('click', function(event) {
  30.         closeOpenItems();
  31.     });
  32.  
  33.  
  34.     const selector = '.nav__link';
  35.     const elems = Array.from( document.querySelectorAll(selector));
  36.     const navigation = document.querySelector('nav');
  37.  
  38.     function makeActive(evt) {
  39.       const target = evt.target;
  40.      
  41.         if ( !target || !target.matches(selector)) {
  42.           return;
  43.         }
  44.      
  45.         elems.forEach(elem => elem.classList.remove('active'));
  46.         evt.target.classList.add('active');
  47.  
  48.         if (evt.target.parentElement.classList.contains('nav__item--submenu')) {
  49.             evt.target.closest('.nav--submenu').querySelector('.nav__link').classList.add('active');
  50.         }
  51.     }
  52.  
  53.     navigation.addEventListener('mousedown', makeActive);
  54.  
  55. });
Add Comment
Please, Sign In to add comment