[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 (function () { 2 'use strict'; 3 4 /** 5 * @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org> 6 * @license GNU General Public License version 2 or later; see LICENSE.txt 7 */ 8 var allMenus = document.querySelectorAll('ul.main-nav'); 9 allMenus.forEach(function (menu) { 10 // eslint-disable-next-line no-new, no-undef 11 new MetisMenu(menu); 12 }); 13 var wrapper = document.getElementById('wrapper'); 14 var sidebar = document.getElementById('sidebar-wrapper'); 15 var menuToggleIcon = document.getElementById('menu-collapse-icon'); // If the sidebar doesn't exist, for example, on edit views, then remove the "closed" class 16 17 if (!sidebar) { 18 wrapper.classList.remove('closed'); 19 } 20 21 if (sidebar && !sidebar.getAttribute('data-hidden')) { 22 // Sidebar 23 var menuToggle = document.getElementById('menu-collapse'); 24 var firsts = [].slice.call(sidebar.querySelectorAll('.collapse-level-1')); // Apply 2nd level collapse 25 26 firsts.forEach(function (first) { 27 var seconds = [].slice.call(first.querySelectorAll('.collapse-level-1')); 28 seconds.forEach(function (second) { 29 if (second) { 30 second.classList.remove('collapse-level-1'); 31 second.classList.add('collapse-level-2'); 32 } 33 }); 34 }); // Toggle menu 35 36 menuToggle.addEventListener('click', function (event) { 37 event.preventDefault(); 38 wrapper.classList.toggle('closed'); 39 menuToggleIcon.classList.toggle('icon-toggle-on'); 40 menuToggleIcon.classList.toggle('icon-toggle-off'); 41 var listItems = [].slice.call(document.querySelectorAll('.main-nav > li')); 42 listItems.forEach(function (item) { 43 item.classList.remove('open'); 44 }); 45 var elem = document.querySelector('.child-open'); 46 47 if (elem) { 48 elem.classList.remove('child-open'); 49 } 50 51 window.dispatchEvent(new CustomEvent('joomla:menu-toggle', { 52 detail: wrapper.classList.contains('closed') ? 'closed' : 'open', 53 bubbles: true, 54 cancelable: true 55 })); 56 }); // Sidebar Nav 57 58 var allLinks = wrapper.querySelectorAll('a.no-dropdown, a.collapse-arrow, .menu-dashboard > a'); 59 var currentUrl = window.location.href; 60 var mainNav = document.querySelector('ul.main-nav'); 61 var menuParents = [].slice.call(mainNav.querySelectorAll('li.parent > a')); 62 var subMenusClose = [].slice.call(mainNav.querySelectorAll('li.parent .close')); // Set active class 63 64 allLinks.forEach(function (link) { 65 if (!link.href.match(/index\.php$/) && currentUrl.indexOf(link.href) === 0 || link.href.match(/index\.php$/) && currentUrl.match(/index\.php$/)) { 66 link.setAttribute('aria-current', 'page'); 67 link.classList.add('mm-active'); // Auto Expand Levels 68 69 if (!link.parentNode.classList.contains('parent')) { 70 var firstLevel = link.closest('.collapse-level-1'); 71 var secondLevel = link.closest('.collapse-level-2'); 72 if (firstLevel) firstLevel.parentNode.classList.add('mm-active'); 73 if (firstLevel) firstLevel.classList.add('mm-show'); 74 if (secondLevel) secondLevel.parentNode.classList.add('mm-active'); 75 if (secondLevel) secondLevel.classList.add('mm-show'); 76 } 77 } 78 }); // Child open toggle 79 80 var openToggle = function openToggle(_ref) { 81 var currentTarget = _ref.currentTarget; 82 var menuItem = currentTarget.parentNode; 83 84 if (menuItem.tagName.toLowerCase() === 'span') { 85 menuItem = currentTarget.parentNode.parentNode; 86 } 87 88 if (menuItem.classList.contains('open')) { 89 mainNav.classList.remove('child-open'); 90 menuItem.classList.remove('open'); 91 } else { 92 var siblings = [].slice.call(menuItem.parentNode.children); 93 siblings.forEach(function (sibling) { 94 sibling.classList.remove('open'); 95 }); 96 wrapper.classList.remove('closed'); 97 98 if (menuToggleIcon.classList.contains('icon-toggle-off')) { 99 menuToggleIcon.classList.toggle('icon-toggle-off'); 100 menuToggleIcon.classList.toggle('icon-toggle-on'); 101 } 102 103 mainNav.classList.add('child-open'); 104 105 if (menuItem.parentNode.classList.contains('main-nav')) { 106 menuItem.classList.add('open'); 107 } 108 } 109 110 window.dispatchEvent(new CustomEvent('joomla:menu-toggle', { 111 detail: 'open', 112 bubbles: true, 113 cancelable: true 114 })); 115 }; 116 117 menuParents.forEach(function (parent) { 118 parent.addEventListener('click', openToggle); 119 parent.addEventListener('keyup', openToggle); 120 }); // Menu close 121 122 subMenusClose.forEach(function (subMenu) { 123 subMenu.addEventListener('click', function () { 124 var menuChildsOpen = [].slice.call(mainNav.querySelectorAll('.open')); 125 menuChildsOpen.forEach(function (menuChild) { 126 menuChild.classList.remove('open'); 127 }); 128 mainNav.classList.remove('child-open'); 129 }); 130 }); 131 } 132 133 })();
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |