PageSourceSearch

https://basecoffee.love/wp-content/themes/blvnk/assets/js/scripts.js?ver=1.0.0

js basecoffee.love collected 2026-10-04 05:02:56 UTC 10,486 bytes, 386 lines download raw bytes

1/*!
2 *	scripts.
3 */
4
5(function($) {
6
7"use strict";
8
9// No # and #0 scroll on click
10$('a[href="#"], a[href="#0"]').click(function(e) {
11	e.preventDefault();
12})
13
14
15function reservation() {
16  document.querySelectorAll('[open-modal]').forEach(function(element) {
17      element.addEventListener('click', function() {
18          var id = this.getAttribute('open-modal');
19          document.querySelector('.modal#' + id).classList.add('active');
20      });
21  });
22
23  document.querySelectorAll('[close-modal]').forEach(function(element) {
24      element.addEventListener('click', function() {
25          this.closest('.modal').classList.remove('active');
26      });
27  });
28
29  document.querySelectorAll('.modal').forEach(function(element) {
30      element.addEventListener('click', function(e) {
31          if (e.target !== this) return;
32          this.classList.remove('active');
33      });
34  });
35}
36reservation();
37
38
39function acc() {
40	$('.acc > .acc-item.is-active').children('.acc-content').slideToggle('fast');
41	$(".acc > .acc-item").click(function() {
42		$(this).siblings('.acc-item').removeClass('is-active').children('.acc-content').slideUp('fast');
43		$(this).toggleClass('is-active').children('.acc-content').slideToggle('fast');
44	});
45}
46acc();
47
48
49function sliderTabs() {
50	var sliderTabsElements = document.querySelectorAll('.slider-tabs');
51	sliderTabsElements.forEach(function(sliderTabsElement, index) {
52		var newDiv1 = document.createElement('div');
53		newDiv1.classList.add('slider-button-next');
54		var newDiv2 = document.createElement('div');
55		newDiv2.classList.add('slider-button-prev');
56		var newDiv3 = document.createElement('div');
57		newDiv3.classList.add('swiper-pagination');
58		var swiperWrapper = sliderTabsElement.querySelector('.swiper-wrapper');
59		swiperWrapper.parentNode.insertBefore(newDiv1, swiperWrapper.nextSibling);
60		swiperWrapper.parentNode.insertBefore(newDiv2, swiperWrapper.nextSibling);
61		swiperWrapper.parentNode.insertBefore(newDiv3, swiperWrapper.nextSibling);
62
63		var swiperTabs = new Swiper('.swiper.slider-tabs', {
64			autoHeight: true,
65			slidesPerView: 1,
66			spaceBetween: 64,
67			navigation: {
68				nextEl: '.slider-button-next',
69				prevEl: '.slider-button-prev'
70			},
71			pagination: {
72				el: '.swiper-pagination',
73				clickable: true
74			},
75			// scrollbar: {
76			// 	el: ".swiper-scrollbar",
77			// 	hide: false,
78			// 	draggable: true,
79			// },
80			autoplay: {
81				delay: 5000,
82				disableOnInteraction: false,
83			},
84			breakpoints: {
85				768: {
86					slidesPerView: 1,
87				},
88				992: {
89					slidesPerView: 3,
90				}
91			}
92		});
93	});
94}
95sliderTabs();
96
97
98function sliderPhoto() {
99	var sliderPhotoElement = document.querySelector('.slider-photo');
100	if (sliderPhotoElement) {
101		var newDiv1 = document.createElement('div');
102		newDiv1.classList.add('swiper-pagination');
103		var swiperWrapper = sliderPhotoElement.querySelector('.swiper-wrapper');
104		swiperWrapper.parentNode.insertBefore(newDiv1, swiperWrapper.nextSibling);
105	}
106	var swiperLogos = new Swiper('.swiper.slider-photo', {
107		slidesPerView: 1,
108		spaceBetween: 48,
109		loop: true,
110		// autoplay: {
111		// 	delay: 2500,
112		// 	disableOnInteraction: true,
113		// },
114		pagination: {
115			el: '.swiper-pagination',
116			clickable: true
117		}
118	});
119}
120sliderPhoto();
121
122
123function sliderBaseFamily() {
124	var sliderBaseFamilyElement = document.querySelector('.slider-base-family');
125	if (sliderBaseFamilyElement) {
126		var newDiv1 = document.createElement('div');
127		newDiv1.classList.add('swiper-pagination');
128		var swiperWrapper = sliderBaseFamilyElement.querySelector('.swiper-wrapper');
129		swiperWrapper.parentNode.insertBefore(newDiv1, swiperWrapper.nextSibling);
130	}
131	var swiperLogos = new Swiper('.swiper.slider-base-family', {
132		slidesPerView: 1,
133		spaceBetween: 32,
134		loop: true,
135		autoplay: {
136			delay: 2500,
137			disableOnInteraction: true,
138		},
139		// pagination: {
140		// 	el: '.swiper-pagination',
141		// 	clickable: true
142		// },
143		breakpoints: {
144			768: {
145				slidesPerView: 2,
146			},
147			992: {
148				slidesPerView: 2,
149			}
150		}
151	});
152}
153sliderBaseFamily();
154
155
156function sliderBasecoffee() {
157	var sliderLocationElements = document.querySelectorAll('.slider-base-coffee');
158	sliderLocationElements.forEach(function(sliderLocationElement, index) {
159		var newDiv1 = document.createElement('div');
160		newDiv1.classList.add('slider-button-next');
161		var newDiv2 = document.createElement('div');
162		newDiv2.classList.add('slider-button-prev');
163		var newDiv4 = document.createElement('div');
164		newDiv4.classList.add('swiper-scrollbar');
165		var swiperWrapper = sliderLocationElement.querySelector('.swiper-wrapper');
166		swiperWrapper.parentNode.insertBefore(newDiv1, swiperWrapper.nextSibling);
167		swiperWrapper.parentNode.insertBefore(newDiv2, swiperWrapper.nextSibling);
168		swiperWrapper.parentNode.insertBefore(newDiv4, swiperWrapper.nextSibling);
169
170		// Use a unique selector for each slider instance
171		var swiperTabs = new Swiper(sliderLocationElement, {
172			direction: 'horizontal',
173			autoHeight: true,
174			slidesPerView: 1,
175			spaceBetween: 0,
176			autoplay: {
177				delay: 5000,
178				disableOnInteraction: false,
179			},	
180			navigation: {
181				nextEl: newDiv1,
182				prevEl: newDiv2
183			},
184			watchOverflow: true,
185			scrollbar: {
186				el: newDiv4,
187				hide: false,
188				draggable: true,
189			},
190			breakpoints: {
191				768: {
192					slidesPerView: 2,
193				},
194				992: {
195					slidesPerView: 4,
196				}
197			}
198		});
199	});
200}
201sliderBasecoffee();
202
203
204function sliderLocation() {
205	var sliderLocationElements = document.querySelectorAll('.slider-location');
206	sliderLocationElements.forEach(function(sliderLocationElement, index) {
207		// var newDiv1 = document.createElement('div');
208		// newDiv1.classList.add('slider-button-next');
209		// var newDiv2 = document.createElement('div');
210		// newDiv2.classList.add('slider-button-prev');
211		var newDiv3 = document.createElement('div');
212		newDiv3.classList.add('swiper-pagination');
213		// var newDiv4 = document.createElement('div');
214		// newDiv4.classList.add('swiper-scrollbar');
215		var swiperWrapper = sliderLocationElement.querySelector('.swiper-wrapper');
216		// swiperWrapper.parentNode.insertBefore(newDiv1, swiperWrapper.nextSibling);
217		// swiperWrapper.parentNode.insertBefore(newDiv2, swiperWrapper.nextSibling);
218		swiperWrapper.parentNode.insertBefore(newDiv3, swiperWrapper.nextSibling);
219		// swiperWrapper.parentNode.insertBefore(newDiv4, swiperWrapper.nextSibling);
220
221		var swiperTabs = new Swiper('.swiper.slider-location', {
222			direction: 'horizontal',
223			autoHeight: true,
224			slidesPerView: 1,
225			spaceBetween: 0,
226			// autoplay: {
227			// 	delay: 5000,
228			// 	disableOnInteraction: false,
229			// },	
230			// navigation: {
231			// 	nextEl: '.slider-button-next',
232			// 	prevEl: '.slider-button-prev'
233			// },
234			pagination: {
235				el: '.swiper-pagination',
236				clickable: true
237			},
238			// scrollbar: {
239			// 	el: ".swiper-scrollbar",
240			// 	hide: false,
241			// 	draggable: true,
242			// },
243			breakpoints: {
244				768: {
245					slidesPerView: 2,
246				},
247				992: {
248					slidesPerView: 2,
249				}
250			}
251		});
252	});
253}
254sliderLocation();
255
256
257// jQuery ready
258$(document).ready(function($){
259
260
261	$('.reserv-btn').first().attr('open-modal', 'example');
262
263
264	// Function to initialize header behavior on scroll
265	function initializeHeader() {
266		let lastScrollTop = 0; // Store the last scroll position
267		let headerHidden = false; // Track if the header is hidden
268
269		$(window).on("scroll", function () {
270			const currentScroll = $(this).scrollTop();
271
272			// Add or remove background class based on scroll position
273			if (currentScroll === 0) {
274				$(".site-header").removeClass("header-bg");
275			} else if (!$(".site-header").hasClass("header-hidden")) {
276				$(".site-header").addClass("header-bg");
277			}
278
279			// Hide header when scrolling down more than 200px
280			// if (currentScroll - lastScrollTop > 0 && currentScroll > 200 && !headerHidden) {
281			// 	$(".site-header").addClass("header-hidden");
282			// 	headerHidden = true;
283			// }
284
285			// Show header when scrolling up more than 10px
286			// if (lastScrollTop - currentScroll > 10 && headerHidden) {
287			// 	$(".site-header").removeClass("header-hidden").addClass("header-bg");
288			// 	headerHidden = false;
289			// }
290
291			// Update last scroll position
292			lastScrollTop = currentScroll;
293		});
294	}
295	initializeHeader();
296
297
298
299    // Add click event to parent menu items with submenus
300	$('.nav-mobile .wp-block-navigation__submenu-container.wp-block-navigation-submenu').hide();
301	$('.nav-mobile a.wp-block-navigation-item__content').click(function(e) {
302		// e.preventDefault();
303		var submenu = $(this).siblings('.nav-mobile .wp-block-navigation__submenu-container.wp-block-navigation-submenu');
304		$('.nav-mobile .wp-block-navigation__submenu-container.wp-block-navigation-submenu').not(submenu).slideUp();
305		submenu.slideToggle();
306	});
307
308
309	function initializeTabs() {
310		$('.tabs').each(function() {
311			var $container = $(this);
312
313			$container.find('.tab-link').click(function() {
314				var index = $(this).index();
315
316				$container.find('.tab-link').removeClass('active');
317				$container.find('.tab').removeClass('active');
318
319				$(this).addClass('active');
320				$container.find('.tab').eq(index).addClass('active').hide().fadeIn();
321
322				// if (window.matchMedia('(max-width: 781px)').matches) {
323				//   $('html, body').animate({
324				//     scrollTop: $container.find('.tab-content').offset().top
325				//   }, 500);
326				// }
327			});
328		});
329	}
330	initializeTabs();
331
332
333    $('.tab-button').on('click', function () {
334		// Remove active class from all buttons
335		$('.tab-button').removeClass('active');
336  
337		// Add active class to the clicked button
338		$(this).addClass('active');
339  
340		// Get the index of the clicked button
341		const index = $(this).index();
342  
343		// Fade out the currently active pane
344		$('.tab-pane.active').fadeOut(300, function () {
345		  // After fade out, remove the active class
346		  $(this).removeClass('active');
347  
348		  // Fade in the corresponding pane
349		  $('.tab-pane').eq(index).fadeIn(300).addClass('active');
350		});
351	});
352
353
354	// Function to animate count up
355	function animateCountUp(el) {
356		var endValue = parseInt($(el).text(), 10);
357		$(el).prop('Counter', 0).animate({
358			Counter: endValue
359		}, {
360			duration: 3500,
361			easing: 'swing',
362			step: function(now) {
363				$(el).text(Math.ceil(now) + "");
364			}
365		});
366	}
367
368	let observer = new IntersectionObserver((entries, observer) => {
369		entries.forEach(entry => {
370			if (entry.isIntersecting) {
371				animateCountUp(entry.target);
372				observer.unobserve(entry.target);
373			}
374		});
375	}, {
376		threshold: 0.5
377	});
378
379	$('.count-up').each(function() {
380		observer.observe(this);
381	});
382
383});
384
385
386})(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.