PageSourceSearch

https://augustaanimalclinicks.com/plugins/smb/articles/components/articles/assets/js/main.js?v.1.0.96

js augustaanimalclinicks.com collected 2026-09-27 11:17:55 UTC 2,977 bytes, 103 lines download raw bytes

1/*
2 * Convert navigation to select
3 */
4;(function($) {
5	function NavigationSelect(options) {
6		this.options = $.extend({
7			list: null,
8			levelIndentHTML: ' • ',
9			defaultOptionAttr: 'title',
10			defaultOptionText: '...',
11			selectClass: 'nav-select',
12			activeClass: 'nav-active',
13			defaultOptionClass: 'opt-default',
14			hasDropClass: 'opt-sublevel',
15			levelPrefixClass: 'opt-level-',
16			useDefaultOption: true
17		}, options);
18		if(this.options.list) {
19			this.createSelect();
20			this.attachEvents();
21		}
22	}
23
24	NavigationSelect.prototype = {
25		createSelect: function() {
26			var self = this;
27			this.startIndex = 0;
28			this.navigation = $(this.options.list);
29			this.select = $('<select>').addClass(this.options.selectClass);
30			this.createDefaultOption();
31			this.createList(this.navigation, 0);
32			this.select.insertBefore(this.navigation);
33		},
34		createDefaultOption: function() {
35			if(this.options.useDefaultOption) {
36				var attrText = this.navigation.attr(this.options.defaultOptionAttr);
37				var defaultOption = $('<option>').addClass(this.options.defaultOptionClass).text(attrText || this.options.defaultOptionText);
38				this.navigation.removeAttr(this.options.defaultOptionAttr);
39				this.select.append(defaultOption);
40				this.startIndex = 1;
41			}
42		},
43		createList: function(list, level) {
44			var self = this;
45			list.children().each(function(index, item) {
46				var listItem = $(this),
47					listLink = listItem.find('a').eq(0),
48					listDrop = listItem.find('ul').eq(0),
49					hasDrop = listDrop.length > 0;
50
51				if(listLink.length) {
52					self.select.append(self.createOption(listLink, hasDrop, level, listLink.hasClass(self.options.activeClass)));
53				}
54				if(hasDrop) {
55					self.createList(listDrop, level + 1);
56				}
57			});
58		},
59		createOption: function(link, hasDrop, level, selected) {
60			var optionHTML = this.getLevelIndent(level) + link.html();
61			return $('<option>').html(optionHTML)
62				.addClass(this.options.levelPrefixClass + (level + 1))
63				.toggleClass(this.options.hasDropClass, hasDrop)
64				.val(link.attr('href')).attr('selected', selected ? 'selected' : false);
65		},
66		getLevelIndent: function(level) {
67			return (new Array(level + 1)).join(this.options.levelIndentHTML);
68		},
69		attachEvents: function() {
70			// redirect on select change
71			var self = this;
72			this.select.change(function() {
73				if(this.selectedIndex >= self.startIndex) {
74					location.href = this.value;
75				}
76			});
77		}
78	};
79
80	// jquery plugin interface
81	$.fn.navigationSelect = function(opt) {
82		return this.each(function() {
83			new NavigationSelect($.extend({list: this}, opt));
84		});
85	};
86}(jQuery));
87
88// page init
89jQuery(function(){
90	jQuery('.pagination--mobile .pagination-list').navigationSelect({
91		useDefaultOption: false,
92		selectClass: 'pagination-select',
93		activeClass: 'active'
94	});
95
96	jQuery('.articles__pagination-item--link').each(function(){
97		if($(this).attr('href') === '#') {
98			$(this).click(function(e){
99				e.preventDefault();
100			})
101		}
102	})
103});

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.