PageSourceSearch

https://exportcentersyd.se/wp-content/themes/fmd3/js/navigation.js?ver=20250521071158

js exportcentersyd.se collected 2026-10-07 20:02:47 UTC 4,245 bytes, 118 lines download raw bytes

1/**
2 * File navigation.js.
3 *
4 * Handles toggling the navigation menu for small screens and enables TAB key
5 * navigation support for dropdown menus.
6 */
7( function() {
8	const siteNavigation = document.getElementById( 'site-navigation' );
9
10	// Return early if the navigation don't exist.
11	if ( ! siteNavigation ) {
12		return;
13	}
14
15	const buttons = siteNavigation.getElementsByTagName( 'button' );
16
17	// Return early if the button don't exist.
18	if ( 'undefined' === typeof buttons[0] ) {
19		return;
20	}
21
22	const menu = siteNavigation.getElementsByTagName( 'ul' )[ 0 ];
23
24	// Hide menu toggle button if menu is empty and return early.
25	if ( 'undefined' === typeof menu ) {
26		buttons[0].style.display = 'none';
27		return;
28	}
29
30	if ( ! menu.classList.contains( 'nav-menu' ) ) {
31		menu.classList.add( 'nav-menu' );
32	}
33
34	// Toggle the .toggled class and the aria-expanded value each time the button is clicked.
35	for (var i = 0; i < buttons.length; i++) {
36		buttons[i].addEventListener( 'click', function() {
37			html = document.getElementsByTagName('html')[ 0 ];
38			if ( this.getAttribute( 'aria-expanded' ) === 'true' ) {
39				this.setAttribute( 'aria-expanded', 'false' );
40				html.style.top = null;
41			} else {
42				this.setAttribute( 'aria-expanded', 'true' );
43				//html.setAttribute( 'data-scroll-top', html.scrollTop );
44				//scrollTop = html.scrollTop - (html.scrollTop * 2);
45				//html.style.top = scrollTop + 'px';
46			}
47			siteNavigation.classList.toggle( 'toggled' );
48			html.classList.toggle( 'main-menu-toggled' );
49		} );
50	}
51
52	// Remove the .toggled class and set aria-expanded to false when the user clicks outside the navigation.
53	document.addEventListener( 'click', function( event ) {
54		const isClickInside = siteNavigation.contains( event.target );
55
56		if ( ! isClickInside ) {
57			for (var i = 0; i < buttons.length; i++) {
58				html = document.getElementsByTagName('html')[ 0 ];
59				siteNavigation.classList.remove( 'toggled' );
60				html.classList.remove( 'main-menu-toggled' );
61				buttons[i].setAttribute( 'aria-expanded', 'false' );
62				//scrollTop = html.getAttribute('data-scroll-top');
63				//html.style.top = scrollTop;
64			}
65		}
66	} );
67
68	// Open on load
69	jQuery('.main-navigation .current-menu-ancestor > .sub-menu-toggle').each(function( index ) {
70		openMenuItemLoad(jQuery(this));
71	});
72	jQuery('.main-navigation .current-menu-item > .sub-menu-toggle').each(function( index ) {
73		openMenuItemLoad(jQuery(this));
74	});
75	if ( !jQuery('.main-navigation').find('.open-sub-menu').length && jQuery('.main-navigation').find('.current_page_item').length ) {
76		openMenuItemLoad(jQuery('.main-navigation').find('.current_page_item').parent());
77	}
78	function openMenuItemLoad(elem) {
79		parentNode = elem.parent();
80		parentNode.addClass('open-sub-menu');
81		parentNode.parent().find('.open-sub-menu > .sub-menu').slideDown();
82	}
83	// Open on click
84	jQuery('.sub-menu-toggle').on('click', function() {
85		openMenuItem(jQuery(this));
86		return false;
87	});
88	function openMenuItem(elem) {
89		menuNode = elem.parents('.main-navigation');
90		parentNode = elem.parent();
91		grandParentNode = elem.parent().parent().parent();
92		if (grandParentNode.hasClass('open-sub-menu')) {
93			// Sub menus under sub menus
94			if (parentNode.hasClass('open-sub-menu')) {
95				grandParentNode.find('.open-sub-menu').addClass('closing-sub-menu');
96				parentNode.removeClass('open-sub-menu');
97				grandParentNode.find('.open-sub-menu > .sub-menu').slideUp();
98			} else {
99				grandParentNode.find('.open-sub-menu').addClass('closing-sub-menu');
100				parentNode.addClass('open-sub-menu');
101				grandParentNode.find('.open-sub-menu > .sub-menu').slideDown();
102			}
103		} else if (parentNode.hasClass('open-sub-menu')) {
104			menuNode.find('.open-sub-menu').addClass('closing-sub-menu');
105			parentNode.removeClass('open-sub-menu');
106			menuNode.find('.open-sub-menu > .sub-menu').slideUp();
107		} else {
108			menuNode.find('.open-sub-menu').addClass('closing-sub-menu');
109			parentNode.addClass('open-sub-menu');
110			menuNode.find('.open-sub-menu > .sub-menu').slideDown();
111		}
112		// Clean up
113		menuNode.find('.closing-sub-menu').find('.sub-menu').slideUp();
114		menuNode.find('.closing-sub-menu').removeClass('open-sub-menu');
115		menuNode.find('.closing-sub-menu').removeClass('closing-sub-menu');
116	}
117
118}() );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.