1(function($) { 2 var methods; 3 methods = { 4 init: function(element, options) { 5 element.addClass('stack-menu'); 6 element.find('ul').addClass('stack-menu__list'); 7 element.find('ul:first').addClass('stack-menu__list--root').addClass('stack-menu__list--active'); 8 element.find('li').addClass('stack-menu__item'); 9 element.find('a').addClass('stack-menu__link'); 10 $('.stack-menu__item', element).each(function(index) { 11 $(this).attr('data-id', index); 12 if ($(this).find('.stack-menu__list').length > 0) { 13 $(this).children('.stack-menu__link').addClass('stack-menu__link--parent'); 14 } 15 }); 16 $('.stack-menu__list', element).each(function() { 17 var allItemElement, allLinkElement, backItemElement, backLinkElement, url; 18 if (!$(this).hasClass('stack-menu__list--root')) { 19 if (options.all) { 20 url = $(this).closest('.stack-menu__item').find('.stack-menu__link').attr('href'); 21 allItemElement = $('<li>', { 22 "class": 'stack-menu__item' 23 }); 24 allLinkElement = $('<a>', { 25 "class": 'stack-menu__link', 26 href: url, 27 text: options.allTitle 28 }); 29 allItemElement.append(allLinkElement); 30 $(this).prepend(allItemElement); 31 } 32 backItemElement = $('<li>', { 33 "class": 'stack-menu__item' 34 }); 35 backLinkElement = $('<a>', { 36 "class": 'stack-menu__link stack-menu__link--back', 37 href: '#', 38 html: ' Ðазад' 39 }); 40 backItemElement.append(backLinkElement); 41 $(this).prepend(backItemElement); 42 } 43 }); 44 element.find('.stack-menu__link').click(function(event) { 45 var item, link, list, parent, sub; 46 link = $(this); 47 item = link.closest('.stack-menu__item'); 48 list = item.closest('.stack-menu__list'); 49 parent = list.closest('.stack-menu__item'); 50 sub = item.children('.stack-menu__list'); 51 52 if (link.hasClass('clicked') && item.hasClass('folder') && event.target.nodeName=='SPAN') { 53 return true; 54 } 55 56 if (link.hasClass('stack-menu__link--back')) { 57 event.preventDefault(); 58 list.removeClass('stack-menu__list--active'); 59 list.removeClass('stack-menu__list--active'); 60 parent.removeClass('stack-menu__item--opened'); 61 parent.find('.stack-menu__link').removeClass('stack-menu__link--hidden'); 62 parent.closest('.stack-menu__list').children('.stack-menu__item').removeClass('stack-menu__item--hidden'); 63 } else { 64 if (item.children('.stack-menu__list').length === 0) { 65 return true; 66 } else { 67 event.preventDefault(); 68 parent.addClass('stack-menu__item--opened'); 69 link.addClass('stack-menu__link--hidden'); 70 sub.addClass('stack-menu__list--active'); 71 72 element.find('.stack-menu__link--back').html(' <span class="text-muted">'+element.find('.stack-menu__list.stack-menu__list--active').prev('.stack-menu__link.stack-menu__link--parent').find('span').text()+'</span>'); 73 74 $(list.children('.stack-menu__item')).each(function() { 75 if ($(this).data('id') !== item.data('id')) { 76 $(this).addClass('stack-menu__item--hidden'); 77 } 78 }); 79 } 80 } 81 }); 82 } 83 }; 84 jQuery.fn.stackMenu = function(options) { 85 options = $.extend({ 86 all: false, 87 allTitle: 'All' 88 }, options); 89 methods.init(this, options); 90 return { 91 reset: function(element) { 92 $(element).find('.stack-menu').removeClass('stack-menu--active'); 93 $(element).find('.stack-menu__list').removeClass('stack-menu__list--active'); 94 $(element).find('.stack-menu__item').removeClass('stack-menu__item--hidden').removeClass('stack-menu__item--opened'); 95 $(element).find('.stack-menu__link').removeClass('stack-menu__link--hidden'); 96 $(element).find('.stack-menu__list--root').addClass('stack-menu__list--active'); 97 } 98 }; 99 }; 100})(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.