[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/media/mod_menu/js/ -> admin-menu-es5.js (source)

   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  })();


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer