PageSourceSearch

https://lums.edu.pk/modules/contrib/we_megamenu/assets/js/we_mobile_menu.js?v=1

js lums.edu.pk collected 2026-09-24 09:01:01 UTC 4,216 bytes, 127 lines download raw bytes

1(function ($) {
2
3  "use strict";
4
5  $.fn.mobileMenu = function (options) {
6    var settings = $.extend({
7      targetWrapper: '.navbar-we-mega-menu',
8      accordionMenu: 'true',
9      toggledClass: 'toggled',
10      pageSelector: 'body'
11    }, options);
12
13    if ($(window).width() <= 991) {
14      $(settings.targetWrapper).addClass('mobile-main-menu');
15    }
16
17    var toggleButton = this;
18
19    $(window).resize(function () {
20      if ($(window).width() <= 991) {
21        $(settings.targetWrapper).addClass('mobile-main-menu');
22      } else {
23        $(settings.targetWrapper).removeClass('mobile-main-menu');
24        $('body').css('overflow', '');
25        $('body').css('height', '');
26        $('body').css('position', '');
27        $(settings.pageSelector).removeClass(settings.toggledClass);
28        $(settings.pageSelector).find('.overlay').remove();
29        $(settings.pageSelector).css('position', '');
30        item.removeClass('open');
31        item.find('ul').css('display', '');
32      }
33    });
34
35    function _weMegaMenuClear() {
36      var wrapper = $(settings.pageSelector);
37      var overlay = wrapper.find('.overlay');
38      overlay.remove();
39      wrapper.css({
40        'width': '',
41        'position': ''
42      });
43      wrapper.removeClass(settings.toggledClass);
44      wrapper.find('div.region-we-mega-menu nav').removeClass('we-mobile-megamenu-active');
45
46      if (overlay.length > 0) {
47        wrapper.find('.btn-close').remove();
48        overlay.remove();
49        $('body').css('overflow', '');
50        $('body').css('height', '');
51        $('body').css('position', '');
52      }
53    }
54
55    this.off('click.mobileMenu');
56    this.on('click.mobileMenu', function (e) {
57      var targetWrapper = $(this).closest('div.region-we-mega-menu').find('nav.navbar-we-mega-menu');
58      var wrapper = $(settings.pageSelector);
59      if (!wrapper.hasClass(settings.toggledClass)) {
60        wrapper.addClass(settings.toggledClass).css('position', 'relative');
61        $(settings.targetWrapper).addClass('mobile-main-menu');
62        targetWrapper.addClass('we-mobile-megamenu-active');
63        if (wrapper.find('.overlay').length == 0) {
64          var overlay = $('<div class="overlay"></div>');
65          overlay.prependTo(wrapper);
66          overlay.click(function () {
67            _weMegaMenuClear();
68          });
69          $('body').css('overflow', 'hidden');
70          $('body').css('btn-close', 'hidden');
71          $('body').css('height', '100%');
72          $('body').css('position', 'relative');
73        }
74        if (wrapper.find('.btn-close').length == 0) {
75          var btnClose = $('<span class="btn-close"></span>');
76          btnClose.prependTo(wrapper);
77
78          $('.btn-close').on('click', function (e) {
79            _weMegaMenuClear();
80            e.preventDefault();
81            return false;
82          });
83        }
84
85      } else {
86        _weMegaMenuClear();
87      }
88      e.preventDefault();
89      e.stopPropagation();
90    });
91
92    if (settings.accordionMenu == 'true') {
93      var targetWrapper = $(this).closest('div.region-we-mega-menu').find('nav.navbar-we-mega-menu');
94      var menu = $(targetWrapper).find('ul.we-mega-menu-ul').first();
95      var item = menu.find('> li[data-submenu=1]');
96      var item_active = menu.find('> li[data-submenu=1].active');
97      if ($(window).width() <= 991) {
98        item_active.addClass('open');
99        item_active.find('> ul').css('display', 'block');
100      }
101      item.click(function (e) {
102        if ($(window).width() <= 991) {
103          var $this = $(this);
104          var $sub_menu_inner = $this.find('> .we-mega-menu-submenu');
105          if (!$this.hasClass('open')) {
106            $(item).not($this).removeClass('open');
107            item.find('> .we-mega-menu-submenu').slideUp();
108            $this.toggleClass('open');
109            if ($this.hasClass('open')) {
110              $sub_menu_inner.slideDown();
111              setTimeout(function () {
112                $(targetWrapper).animate({
113                  scrollTop: $this.offset().top
114                }, 700);
115              }, 500);
116
117            } else {
118              $sub_menu_inner.slideUp();
119            }
120            return false;
121          }
122        }
123      });
124    }
125  }
126
127}(jQuery));

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.