From 9168380c80f711f71869aeb464ce37f968a533b5 Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Sun, 23 Nov 2025 02:32:42 +0100 Subject: [PATCH] as --- partials/structure/layout_start.php | 1 - public/assets/js/header.js | 44 ++++++++++++++++------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/partials/structure/layout_start.php b/partials/structure/layout_start.php index eaf5b29..a765f90 100644 --- a/partials/structure/layout_start.php +++ b/partials/structure/layout_start.php @@ -20,7 +20,6 @@ if (!isset($pageDescription) || !is_string($pageDescription)) { $pageDescription = ''; } if (function_exists('tpl_add_script')) { - tpl_add_script('/assets/js/header-user-menu.js', 'footer', true, false, '', null); tpl_add_script('/assets/js/header.js', 'footer', true, false, '', null); } diff --git a/public/assets/js/header.js b/public/assets/js/header.js index 95386a0..2022039 100644 --- a/public/assets/js/header.js +++ b/public/assets/js/header.js @@ -1,9 +1,8 @@ // public/assets/js/header.js - document.addEventListener('DOMContentLoaded', function () { - // ------------------------- - // Login-Button - // ------------------------- + // -------------------------------------------------- + // LOGIN-BUTTON → /login mit redirect + lang + // -------------------------------------------------- const loginBtn = document.getElementById('loginButton'); if (loginBtn) { @@ -39,9 +38,9 @@ document.addEventListener('DOMContentLoaded', function () { }); } - // ------------------------- - // Avatar-Menü ein-/ausblenden - // ------------------------- + // -------------------------------------------------- + // AVATAR-MENÜ (userAvatar / userMenu) + // -------------------------------------------------- const avatarBtn = document.getElementById('userAvatar'); const userMenu = document.getElementById('userMenu'); @@ -56,21 +55,23 @@ document.addEventListener('DOMContentLoaded', function () { // Klick außerhalb schließt Menü document.addEventListener('click', function (event) { - if (!userMenu.classList.contains('hidden')) { - const clickedInsideMenu = userMenu.contains(event.target); - const clickedAvatarButton = avatarBtn.contains(event.target); + if (userMenu.classList.contains('hidden')) { + return; + } - if (!clickedInsideMenu && !clickedAvatarButton) { - userMenu.classList.add('hidden'); - avatarBtn.setAttribute('aria-expanded', 'false'); - } + const clickedInsideMenu = userMenu.contains(event.target); + const clickedAvatarButton = avatarBtn.contains(event.target); + + if (!clickedInsideMenu && !clickedAvatarButton) { + userMenu.classList.add('hidden'); + avatarBtn.setAttribute('aria-expanded', 'false'); } }); } - // ------------------------- - // Logout-Modal - // ------------------------- + // -------------------------------------------------- + // LOGOUT-MODAL + // -------------------------------------------------- const logoutButtons = document.querySelectorAll('[data-logout-link="true"]'); const backdrop = document.getElementById('logoutModalBackdrop'); const btnConfirm = document.getElementById('logoutConfirm'); @@ -99,7 +100,10 @@ document.addEventListener('DOMContentLoaded', function () { event.preventDefault(); event.stopPropagation(); - const href = btn.getAttribute('data-logout-href') || btn.getAttribute('href') || '/auth/logout'; + const href = btn.getAttribute('data-logout-href') + || btn.getAttribute('href') + || '/auth/logout'; + showLogoutModal(href); // Avatar-Menü beim Öffnen des Modals schließen @@ -126,9 +130,9 @@ document.addEventListener('DOMContentLoaded', function () { hideLogoutModal(); }); - // Klick auf Hintergrund schließt Modal + // Klick auf Hintergrund schließt Modal (außer man klickt auf die Card) backdrop.addEventListener('click', function (event) { - const card = backdrop.querySelector('div.w-full.max-w-sm'); + const card = backdrop.querySelector('.max-w-sm'); if (card && !card.contains(event.target)) { hideLogoutModal(); }