feat: Enhance MegaMenu with localization, caching, and new properties
- Added localization support for loading states, empty navigation, and submenu actions in both German and English. - Introduced new properties in IMenuItem for description, openInNewWindow, and external links. - Updated SPTermStorePickerService to handle cache versioning and language-specific caching. - Implemented a new MegaMenuCore service for handling term properties, cache management, and navigation URL resolution. - Refactored TaxonomyNavigationService to build menu hierarchy and filter hidden terms. - Added automated tests for MegaMenu core functionalities and static asset validation. - Removed unused ItemDictionary service. - Created a comprehensive ToDo document outlining the implementation status and future tasks.
This commit is contained in:
@@ -36,11 +36,13 @@
|
||||
|
||||
<div class="megamenu-classic-container">
|
||||
<nav id="Mega-Menu" class="mega-menu-main mega-menu-mode-megaMenu" data-menu-mode="megaMenu" aria-label="Hauptnavigation">
|
||||
<ul class="mega-menu-top-level">
|
||||
<button type="button" class="mega-menu-mobile-toggle" aria-expanded="false" aria-controls="Mega-Menu-Items" aria-label="Hauptnavigation öffnen"><span class="mega-menu-mobile-icon" aria-hidden="true"></span><span class="mega-menu-mobile-label">Hauptnavigation</span></button>
|
||||
<ul id="Mega-Menu-Items" class="mega-menu-top-level">
|
||||
<li class="mega-menu-top-item"><a class="menu-item-link" href="#">Startseite</a></li>
|
||||
<li class="mega-menu-top-item is-active">
|
||||
<a class="menu-item-link menu-item-has-children" href="#unternehmen" aria-haspopup="true" aria-expanded="true">Unternehmen</a>
|
||||
<div class="mega-menu js-open" aria-expanded="true">
|
||||
<a class="menu-item-link menu-item-has-children" href="#unternehmen">Unternehmen</a>
|
||||
<button type="button" class="menu-item-toggle" aria-haspopup="true" aria-expanded="true" aria-controls="Mega-Menu-Panel-Unternehmen" aria-label="Untermenü schließen für Unternehmen"><span aria-hidden="true"></span></button>
|
||||
<div id="Mega-Menu-Panel-Unternehmen" class="mega-menu js-open" aria-expanded="true">
|
||||
<div class="mega-menu-grid" style="--megaMenuColumnCount:4">
|
||||
<section class="mega-menu-category">
|
||||
<h3 class="mega-menu-category-title"><a href="#ueber-uns">Über uns</a></h3>
|
||||
@@ -77,7 +79,7 @@
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
var triggers = document.querySelectorAll('.mega-menu-top-level > .mega-menu-top-item > [aria-haspopup="true"]');
|
||||
var triggers = document.querySelectorAll('.mega-menu-top-level > .mega-menu-top-item > .menu-item-toggle');
|
||||
function closeAll(except) {
|
||||
Array.prototype.forEach.call(document.querySelectorAll('.mega-menu.js-open'), function (panel) {
|
||||
if (panel !== except) { panel.classList.remove('js-open'); panel.setAttribute('aria-expanded', 'false'); if (panel.previousElementSibling) { panel.previousElementSibling.setAttribute('aria-expanded', 'false'); } }
|
||||
@@ -92,6 +94,8 @@
|
||||
panel.classList.toggle('js-open', !open); panel.setAttribute('aria-expanded', String(!open)); trigger.setAttribute('aria-expanded', String(!open));
|
||||
});
|
||||
});
|
||||
var mobile = document.querySelector('.mega-menu-mobile-toggle');
|
||||
mobile.addEventListener('click', function () { var open = mobile.getAttribute('aria-expanded') !== 'true'; mobile.setAttribute('aria-expanded', String(open)); document.getElementById('Mega-Menu').classList.toggle('is-mobile-open', open); });
|
||||
}());
|
||||
</script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user