PageSourceSearch

https://www.thebushcraftstore.co.uk/ekmps/designs/assets/master/1635/other/theme.min.js

js thebushcraftstore.co.uk collected 2026-09-26 11:21:29 UTC 7,163 bytes, 247 lines download raw bytes

1var $j = jQuery;
2
3// Click Navigation Dropdown
4$j('.main-nav-d ul li:has(ul)').addClass('jsNavDropdown jsNavArrowDown');
5
6$j(".jsNavDropdown").click(function(e){
7    e.preventDefault();
8    e.stopPropagation();
9    var x = $j(this).hasClass('jsNavActive');
10    if (x){
11        $j('.jsNavDropdown.jsNavActive').removeClass('jsNavActive');
12        $j('.jsNavDropdown.jsNavArrowUp').removeClass('jsNavArrowUp').addClass('jsNavArrowDown');
13        $j('.jsNavOverlay').removeClass('jsNavOverlayActive');
14        return
15    }
16    $j('.jsNavDropdown.jsNavActive').not(this).removeClass('jsNavActive');
17    $j('.jsNavDropdown.jsNavArrowUp').not(this).removeClass('jsNavArrowUp').addClass('jsNavArrowDown');
18    $j('.jsNavOverlay').addClass('jsNavOverlayActive');
19    $j(this).toggleClass('jsNavActive jsNavArrowDown jsNavArrowUp');
20});
21
22$j(".jsNavDropdown .mega-menu").click(function(e){
23	e.stopPropagation();
24});
25
26$j(document).click(function(e) {
27  if( e.target.class != '.jsNavDropdown') {
28    $j('.jsNavDropdown').removeClass('jsNavActive');
29    $j('.jsNavOverlay').removeClass('jsNavOverlayActive');
30	$j('.jsNavDropdown.jsNavArrowUp').not(this).removeClass('jsNavArrowUp').addClass('jsNavArrowDown');
31  }
32});
33
34$j(window).load(function() {
35	var headerBar = $j('.main-nav-d').outerHeight(),
36	    header = headerBar;
37	
38	$j('.mega-menu').css({
39		'top': header
40	});
41});
42
43$j(window).resize(function() {
44	var headerBar = $j('.main-nav-d').outerHeight(),
45	    header = headerBar;
46	
47	$j('.mega-menu').css({
48		'top': header
49	});
50});
51
52
53
54// Filter Slide Drawers
55(function(){
56
57function closeAccordions( accordion ) {
58    var accoridon = accordion;
59    var contents = [].slice.call( document.querySelectorAll( "[data-" + dataPanel + "]" ), 0 );
60    contents.forEach( function( content ){
61        content.classList.add( classHidden );
62    });
63}
64
65function openAccordion( element ) {
66    element.classList.remove( classHidden );
67}
68
69function headingActive( heading ) {
70    heading.classList.add( classActive );
71}
72
73function headingInactive() {
74    var headings = [].slice.call( document.querySelectorAll( "[data-" + dataHeading + "]" ), 0 );
75    headings.forEach( function( heading ){
76        heading.classList.remove( classActive );
77    });
78}
79
80var accordions = [].slice.call( document.querySelectorAll( ".jsDrawerWrapper" ), 0 ),
81    dataHeading = "heading",
82    dataPanel   = "panel",
83    classHidden = "jsDrawerHidden",
84    classActive = "jsDrawerBtnActive";
85
86function setupAccordions(accordions){
87    accordions.forEach( function( accordion ){
88        var headings = [].slice.call( document.querySelectorAll( "[data-" + dataHeading + "]" ), 0 );
89        headings.forEach( function( heading ) {
90			if (!heading.classList.contains("jsDrawerHeading")){
91	            heading.addEventListener( "click", function( event ) {
92	                event.preventDefault();
93	                
94	                var content = this.getAttribute("data-" + dataHeading + ""),
95	                    panel   = document.querySelector( "[data-" + dataPanel + "='" + content + "']" );
96
97	                var shouldOpen = !heading.classList.contains( classActive );
98
99	                closeAccordions( accordion );
100	                headingInactive( this );
101
102	                if ( shouldOpen ) {
103	                    openAccordion( panel );
104	                    headingActive( this );
105	                }                
106	                
107	                $j('.jsDrawerOverlay').fadeIn();
108	                $j('body').addClass('jsDrawerActiveScroll');
109	            });
110	            
111				heading.classList.add("jsDrawerHeading");
112	    	}
113        });
114    		
115    });
116}
117
118if ( accordions ) {
119	setupAccordions(accordions);
120}
121
122window.filterSortCallback = function(){
123	if ( accordions ) {
124		setupAccordions(accordions);
125	}
126}
127
128// Close Drawers On Click Outside
129$j(document).mouseup(function(e) {
130    var container = $j(".jsDrawer");
131
132    if (!container.is(e.target) && container.has(e.target).length === 0)
133  {
134      accordions.forEach(function(accordion){
135          closeAccordions(accordion);
136	});
137        $j('.jsDrawerOverlay').fadeOut();
138		$j('body').removeClass('jsDrawerActiveScroll');
139        $j('.jsDrawer').addClass('jsDrawerHidden');
140        $j('.jsDrawerBtn').removeClass('jsDrawerBtnActive');
141  }
142});
143})();
144
145function closeJSDrawer(){
146	$j('.jsDrawer').addClass('jsDrawerHidden');
147	$j('.jsDrawerOverlay').fadeOut();
148	$j('body').removeClass('jsDrawerActiveScroll')
149}
150
151$j(".jsDrawerCloseBtn").click(function(){
152	closeJSDrawer();
153});
154
155
156
157// Product Page Thumbnail Show/Hide
158(function(){
159	function changeEventHandler( event ) {
160	    imageWrappers.forEach( function( imageWrapper ) {
161	    	var href = imageWrapper.querySelector( "a" ).getAttribute("href");
162
163	    	if ( href === "#" ) {
164	    		imageWrapper.parentNode.classList.add("jsThumbnailNoImg");
165	    	} else {
166	    		imageWrapper.parentNode.classList.remove("jsThumbnailNoImg");
167	    	}
168	    });
169	}
170	
171	var	imageWrappers = [].slice.call( document.querySelectorAll( ".thumbnail-img" ), 0);
172
173})();
174
175
176
177// Product Page Tabs
178$j('.jsTabContent:first-of-type').show();
179$j('.jsTabBtns a').click(function(e){
180  e.preventDefault();
181    var $jthis = $j(this),
182        tabGroup = '#'+$jthis.parents('.jsTabBtns').data('jstabgroup'),
183        tabOthers = $jthis.closest('li').siblings().children('a'),
184        tabTarget = $jthis.attr('href');
185    tabOthers.parent().removeClass('jsTabActive');
186    $jthis.parent().addClass('jsTabActive');
187    $j(tabGroup).children('.jsTabContent').hide();
188    $j(tabTarget).show();
189});
190
191
192
193// Quantity Spinner 
194$j('.prod-page-qty').each(function() {
195	var spinner = $j(this),
196		input = spinner.find('input[type="number"]'),
197		btnUp = spinner.find('.prod-page-qty-up-btn'),
198		btnDown = spinner.find('.prod-page-qty-down-btn'),
199		min = input.attr('min'),
200		max = input.attr('max');
201		
202	btnDown.click(function() {
203		var oldValue = parseFloat(input.val());
204		if (oldValue <= min) {
205			var newVal = oldValue;
206		} else {
207			var newVal = oldValue - 1;
208		}
209		spinner.find('input').val(newVal);
210		spinner.find('input').trigger('change');
211	});
212	
213	btnUp.click(function() {
214		var oldValue = parseFloat(input.val());
215		if (oldValue >= max) {
216			var newVal = oldValue;
217		} else {
218			var newVal = oldValue + 1;
219		}
220		spinner.find('input').val(newVal);
221		spinner.find('input').trigger('change');
222	});
223});
224
225
226
227// Customer Reviews Reviewer Icon
228$j('.reviewer').each(function(i, obj) {
229   var firstName = $j(this).find('.review-name').text();
230   var intials = $j(this).find('.review-name').text().charAt(0);
231   var profileImage = $j(this).find('.review-image').text(intials);
232});
233
234
235
236// Header Background Image
237
238bgImageWrapper =  document.querySelectorAll('.jsBgImageReplace')
239bgImageWrapper.forEach ((image) => {
240	bgImage = image.querySelector('img');
241	image.parentNode.style.backgroundImage = ("url(" + "\"" + bgImage.src + "\"");
242})
243
244function filterChange(){
245	
246	setTimeout(function(){ closeJSDrawer(); }, 1000);
247}

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.