PageSourceSearch

https://marineinnovation.ru/templates/goodtheme/addons/stack-menu/jquery-stack-menu.js?1536395426

js marineinnovation.ru collected 2026-09-25 23:40:18 UTC 4,181 bytes, 100 lines download raw bytes

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: '&nbsp; Назад'
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('&nbsp;  <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.