PageSourceSearch

https://bayern-gegen-gewalt.de/imperia/md/content/stmas/bayern-gewalt/system/js/main-menu.js

js bayern-gegen-gewalt.de collected 2026-09-24 21:48:48 UTC 8,063 bytes, 200 lines download raw bytes

1"use strict";
2
3$(document).ready(function () {
4  $('.main-menu__areas-item').css('display', 'none'); // ------ DESKTOP -----
5
6  if ($(window).innerWidth() > 768) {
7    // set min-height to flyout
8    var setFlyoutHeight = function setFlyoutHeight(items) {
9      if (items.length === 0) return;
10      var highestCount = 0;
11      var subMenus = items.find('ul');
12      subMenus.each(function (i, e) {
13        var count = $(e).find('> li').length;
14        if (count > highestCount) highestCount = count;
15      });
16      var itemHeight = items.first().innerHeight();
17      var minHeight = itemHeight * highestCount + 150;
18      $('.flyout__wrapper').css('min-height', "".concat(minHeight, "px"));
19    }; // Level 1
20
21
22    $('.level-1 > li.has-children > .main-menu__item-list-anchor').on('click', function (e) {
23      var li = $(e.target).closest('li');
24
25      if (li.hasClass('has-children')) {
26        e.preventDefault();
27        $('.level-1 > li.has-children').removeClass('open');
28        $('.level-3, .level-4').removeClass('open');
29        $('.main-menu__item-list-anchor').removeClass('main-menu__item-list-anchor--active');
30        $('.main-menu__item-list-anchor, li.has-children > .main-menu__areas-item-link[aria-haspopup=true]').attr('aria-expanded', false);
31        var flyout = li.find('.flyout');
32        $('.flyout').not(flyout).removeClass('open');
33
34        if (flyout.hasClass('open')) {
35          flyout.removeClass('open');
36          $('li.has-children').removeClass('has-children--expanded');
37        } else {
38          flyout.addClass('open');
39          $(e.target).addClass('main-menu__item-list-anchor--active');
40          setFlyoutHeight(li.find('.menu').first().find('ul').first().find('> li'));
41          $(e.target).attr('aria-expanded', true);
42        }
43
44        if ($('.main-menu .menu.open').length > 0) {
45          $('.main-menu').addClass('main-menu--active');
46        } else {
47          $('.main-menu').removeClass('main-menu--active');
48        }
49      }
50    }); // Levels below
51
52    $('.level-2 > div > div > ul > li.has-children > .main-menu__areas-item-link').on('click', function (e) {
53      var li = $(e.target).closest('li').first();
54
55      if (li.hasClass('has-children')) {
56        e.preventDefault();
57        $('.level-3, .level-4').removeClass('open');
58        $('li.has-children').removeClass('has-children--expanded');
59        $('li.has-children > .main-menu__areas-item-link[aria-haspopup=true]').attr('aria-expanded', false);
60        var flyout = li.find('.menu').first();
61
62        if (flyout.hasClass('open')) {
63          flyout.removeClass('open');
64          $(e.target).attr('aria-expanded', false);
65        } else {
66          flyout.addClass('open');
67          $('.level-2 > .row > div > ul > li.has-children').removeClass('has-children--expanded');
68          li.addClass('has-children--expanded');
69          $(e.target).attr('aria-expanded', true);
70        }
71
72        if ($('.main-menu .menu.open').length > 0) {
73          $('.main-menu').addClass('main-menu--active');
74        } else {
75          $('.main-menu').removeClass('main-menu--active');
76        }
77      }
78    });
79    $('.level-3 li.has-children > .main-menu__areas-item-link').on('click', function (e) {
80      var li = $(e.target).closest('li').first();
81
82      if (li.hasClass('has-children')) {
83        e.preventDefault();
84        $('.level-4').removeClass('open');
85        var flyout = li.find('.menu').first();
86        $('.level-3 .main-menu__areas-item-link[aria-haspopup=true]').attr('aria-expanded', false);
87
88        if (flyout.hasClass('open')) {
89          flyout.removeClass('open');
90          $('li.has-children').removeClass('has-children--expanded');
91          $(e.target).attr('aria-expanded', false);
92        } else {
93          flyout.addClass('open');
94          $('.level-3 > ul > li.has-children').removeClass('has-children--expanded');
95          li.addClass('has-children--expanded');
96          $(e.target).attr('aria-expanded', true);
97        }
98
99        if ($('.main-menu .menu.open').length > 0) {
100          $('.main-menu').addClass('main-menu--active');
101        } else {
102          $('.main-menu').removeClass('main-menu--active');
103        }
104      }
105    }); // Keyboard
106
107    $('.main-menu').on('keydown', function (e) {
108      if (e.which === 13) {// enter
109      } else if (e.which === 27) {
110        // esc
111        var activeLvl1 = $('.level-1 .main-menu__item-list-anchor--active');
112        var activeLvl2, activeLvl3;
113
114        if (activeLvl1) {
115          activeLvl2 = activeLvl1.parent().find('.level-2 li.has-children.has-children--expanded').first();
116
117          if (activeLvl2) {
118            activeLvl3 = activeLvl2.find('.level-3 ul li.has-children.has-children--expanded').first();
119          }
120        } // Close current active sub-menu
121
122
123        if (activeLvl3.length) {
124          activeLvl3.removeClass('has-children--expanded');
125          activeLvl3.find('.menu').removeClass('open');
126          activeLvl3.find('.main-menu__areas-item-link').focus();
127        } else if (activeLvl2.length && activeLvl3.length === 0) {
128          activeLvl2.removeClass('has-children--expanded');
129          activeLvl2.find('.menu').removeClass('open');
130          activeLvl2.find('.main-menu__areas-item-link').focus();
131        } else if (activeLvl2.length === 0) {
132          $('.main-menu').removeClass('main-menu--active');
133          $('.level-3, .level-4').removeClass('open');
134          $('li.has-children').removeClass('has-children--expanded');
135          $('.main-menu__item-list-anchor').removeClass('main-menu__item-list-anchor--active');
136          $('.flyout').removeClass('open');
137        }
138      }
139    });
140  } else {
141    // ------ MOBILE -----
142    // mobile menu toggle
143    var mobileMenuOpened = false;
144    var lastOpenedSubmenu;
145    $('.main-menu__mobile-toggle').on('click', function () {
146      var nav = $('#main-menu');
147      var toggle = $('#main-menu-toggle');
148      var menu = $('.main-menu__item-list-wrapper');
149      mobileMenuOpened = !mobileMenuOpened;
150
151      if (mobileMenuOpened) {
152        menu.css('display', 'flex').hide().fadeIn();
153        toggle.find('span').html(window.t('closeMenu'));
154        toggle.find('i').removeClass('fa-bars');
155        toggle.find('i').addClass('fa-times');
156        nav.addClass('main-menu--active');
157      } else {
158        menu.fadeOut();
159        toggle.find('span').html(window.t('menu'));
160        toggle.find('i').removeClass('fa-times');
161        toggle.find('i').addClass('fa-bars');
162        nav.removeClass('main-menu--active');
163      }
164    }); // mobile accordion arrow / highlighting logic
165
166    $('#main-menu-accordion').on('show.bs.collapse', function (e) {
167      var head = $(e.target).parent();
168      var icon = head.find('i');
169      lastOpenedSubmenu = $(e.target).closest('.main-menu__item-list-anchor-container');
170      icon.removeClass('fa-angle-down fa-angle-up');
171      icon.addClass('fa-angle-up');
172    }).on('hide.bs.collapse', function (e) {
173      var head = $(e.target).parent();
174      var icon = head.find('i');
175      icon.removeClass('fa-angle-down fa-angle-up');
176      icon.addClass('fa-angle-down');
177    });
178    $('#main-menu-accordion').on('keydown', function (e) {
179      if (e.which === 27) {
180        if ($('.main-menu__item-list-anchor-container.show').length) {
181          var parentMenu = lastOpenedSubmenu.closest('.main-menu__item-list-anchor-container').parent().find('> .main-menu__item-list-anchor-head');
182          lastOpenedSubmenu.collapse('hide');
183          lastOpenedSubmenu = $(e.target).closest('.main-menu__item-list-anchor-container.show');
184          parentMenu.focus();
185        } else {
186          var menu = $('.main-menu__item-list-wrapper');
187          var toggle = $('#main-menu-toggle');
188          var nav = $('#main-menu');
189          menu.fadeOut();
190          toggle.find('span').html(window.t('menu'));
191          toggle.find('i').removeClass('fa-times');
192          toggle.find('i').addClass('fa-bars');
193          nav.removeClass('main-menu--active');
194          toggle.focus();
195          mobileMenuOpened = false;
196        }
197      }
198    });
199  }
200});

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.