1(function($) { 2 $.fn.menumaker = function(options) { 3 var cssmenu = $(this), previousWidth = $(window).width(), settings = $.extend({ 4 title: "", 5 format: "multitoggle", 6 sticky: false 7 }, options); 8 return this.each(function() { 9 cssmenu.prepend('<div id="menu-button">' + settings.title + '</div>'); 10 11 $('#menu-button').attr({ 12 'aria-label': 'Menüyü aç/kapat', 13 'aria-expanded': 'false' 14 }); 15 16 $(this).find("#menu-button").on('click', function(){ 17 $(this).toggleClass('menu-opened'); 18 var mainmenu = $(this).next('ul'); 19 if (mainmenu.hasClass('open')) { 20 mainmenu.hide().removeClass('open'); 21 $(this).attr('aria-expanded', 'false'); 22 } 23 else { 24 mainmenu.show().addClass('open'); 25 $(this).attr('aria-expanded', 'true'); 26 if (settings.format === "dropdown") { 27 mainmenu.find('ul').show(); 28 } 29 } 30 }); 31 32 cssmenu.find('li ul').parent().addClass('has-sub'); 33 34 multiTg = function() { 35 // span yerine button: aria-* özellikleri interaktif elementlerde olmalı (WCAG 4.1.2) 36 cssmenu.find(".has-sub").prepend('<button type="button" class="submenu-button" aria-label="Alt menüyü aç/kapat" aria-haspopup="true" aria-expanded="false"></button>'); 37 38 cssmenu.find('.submenu-button').on('click', function() { 39 var isOpen = $(this).siblings('ul').hasClass('open'); 40 $(this).toggleClass('submenu-opened'); 41 // aria-expanded dinamik güncelle 42 $(this).attr('aria-expanded', isOpen ? 'false' : 'true'); 43 $(this).siblings('a').attr('aria-expanded', isOpen ? 'false' : 'true'); 44 45 if (isOpen) { 46 $(this).siblings('ul').removeClass('open').hide(); 47 } 48 else { 49 $(this).siblings('ul').addClass('open').show(); 50 } 51 }); 52 }; 53 54 if (settings.format === 'multitoggle') multiTg(); 55 else cssmenu.addClass('dropdown'); 56 57 if (settings.sticky === true) cssmenu.css('position', 'fixed'); 58 59 resizeFix = function() { 60 if($(window).width() == previousWidth) return; 61 62 if ($(window).width() > 1249) { 63 cssmenu.find('ul').show(); 64 cssmenu.find('.submenu-button').attr('aria-expanded', 'false').removeClass('submenu-opened'); 65 cssmenu.find('.has-sub > a').attr('aria-expanded', 'false'); 66 cssmenu.find('#menu-button').attr('aria-expanded', 'false'); 67 } 68 69 if ($(window).width() <= 1249) { 70 cssmenu.find('ul').hide().removeClass('open'); 71 cssmenu.find('.submenu-button').attr('aria-expanded', 'false').removeClass('submenu-opened'); 72 cssmenu.find('.has-sub > a').attr('aria-expanded', 'false'); 73 cssmenu.find('#menu-button').attr('aria-expanded', 'false'); 74 } 75 }; 76 77 resizeFix(); 78 return $(window).on('resize', resizeFix); 79 }); 80 }; 81})(jQuery); 82 83(function($){ 84 $(document).ready(function(){ 85 $("#cssmenu").menumaker({ 86 title: "", 87 format: "multitoggle" 88 }); 89 }); 90})(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.