mirror of
				https://github.com/kevinveenbirkenbach/homepage.veen.world.git
				synced 2025-11-04 09:27:58 +00:00 
			
		
		
		
	Refactored code
This commit is contained in:
		@@ -2,57 +2,36 @@ document.addEventListener('DOMContentLoaded', () => {
 | 
			
		||||
  const menuItems = document.querySelectorAll('.nav-item.dropdown');
 | 
			
		||||
  const subMenuItems = document.querySelectorAll('.dropdown-submenu');
 | 
			
		||||
 | 
			
		||||
  menuItems.forEach(item => {
 | 
			
		||||
    let timeout;
 | 
			
		||||
  function addMenuEventListeners(items, isTopLevel) {
 | 
			
		||||
    items.forEach(item => {
 | 
			
		||||
      let timeout;
 | 
			
		||||
 | 
			
		||||
    // Öffnen beim Hovern
 | 
			
		||||
    item.addEventListener('mouseenter', () => {
 | 
			
		||||
      clearTimeout(timeout);
 | 
			
		||||
      openMenu(item, true);
 | 
			
		||||
      // Öffnen beim Hovern
 | 
			
		||||
      item.addEventListener('mouseenter', () => {
 | 
			
		||||
        clearTimeout(timeout);
 | 
			
		||||
        openMenu(item, isTopLevel);
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      // Verzögertes Schließen beim Verlassen
 | 
			
		||||
      item.addEventListener('mouseleave', () => {
 | 
			
		||||
        timeout = setTimeout(() => closeMenu(item), 500);
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      // Öffnen und Position anpassen beim Klicken
 | 
			
		||||
      item.addEventListener('click', (e) => {
 | 
			
		||||
        e.preventDefault(); // Verhindert die Standardaktion
 | 
			
		||||
        e.stopPropagation(); // Verhindert das Schließen von Menüs bei Klick
 | 
			
		||||
        if (item.classList.contains('open')) {
 | 
			
		||||
          closeMenu(item);
 | 
			
		||||
        } else {
 | 
			
		||||
          openMenu(item, isTopLevel);
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    // Verzögertes Schließen beim Verlassen
 | 
			
		||||
    item.addEventListener('mouseleave', () => {
 | 
			
		||||
      timeout = setTimeout(() => closeMenu(item), 500);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // Öffnen und Position anpassen beim Klicken
 | 
			
		||||
    item.addEventListener('click', (e) => {
 | 
			
		||||
      e.preventDefault(); // Verhindert die Standardaktion
 | 
			
		||||
      e.stopPropagation(); // Verhindert das Schließen von Menüs bei Klick
 | 
			
		||||
      if (item.classList.contains('open')) {
 | 
			
		||||
        closeMenu(item);
 | 
			
		||||
      } else {
 | 
			
		||||
        openMenu(item, true);
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  subMenuItems.forEach(item => {
 | 
			
		||||
    let timeout;
 | 
			
		||||
 | 
			
		||||
    // Öffnen beim Hovern
 | 
			
		||||
    item.addEventListener('mouseenter', () => {
 | 
			
		||||
      clearTimeout(timeout);
 | 
			
		||||
      openMenu(item, false);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // Verzögertes Schließen beim Verlassen
 | 
			
		||||
    item.addEventListener('mouseleave', () => {
 | 
			
		||||
      timeout = setTimeout(() => closeMenu(item), 500);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // Öffnen und Position anpassen beim Klicken
 | 
			
		||||
    item.addEventListener('click', (e) => {
 | 
			
		||||
      e.preventDefault(); // Verhindert die Standardaktion
 | 
			
		||||
      e.stopPropagation(); // Verhindert das Schließen von Menüs bei Klick
 | 
			
		||||
      if (item.classList.contains('open')) {
 | 
			
		||||
        closeMenu(item);
 | 
			
		||||
      } else {
 | 
			
		||||
        openMenu(item, false);
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
  addMenuEventListeners(menuItems, true);
 | 
			
		||||
  addMenuEventListeners(subMenuItems, false);
 | 
			
		||||
 | 
			
		||||
  // Globale Klick-Listener, um Menüs zu schließen, wenn außerhalb geklickt wird
 | 
			
		||||
  document.addEventListener('click', () => {
 | 
			
		||||
@@ -114,7 +93,7 @@ document.addEventListener('DOMContentLoaded', () => {
 | 
			
		||||
      // Öffnen nach oben, wenn unten kein Platz ist
 | 
			
		||||
      if (spaceBelow < rect.height && spaceAbove > rect.height) {
 | 
			
		||||
        submenu.style.top = 'auto';
 | 
			
		||||
        submenu.style.bottom = `${parentRect.bottom - parentRect.top}px`;
 | 
			
		||||
        submenu.style.bottom = `${parentRect.bottom - parentRect.top - rect.height}px`; // Höhe des Submenüs wird berücksichtigt
 | 
			
		||||
      } else {
 | 
			
		||||
        submenu.style.top = '0';
 | 
			
		||||
        submenu.style.bottom = 'auto';
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user