document.addEventListener("DOMContentLoaded", function (){
function initTaxonomySliders(){
if(window.innerWidth >=992){
return;
}
const wrappers=document.querySelectorAll('.taxonomy-slider-wrapper:not(.no-mobile-carousel)');
wrappers.forEach(function(wrapper){
if(wrapper.offsetParent===null||wrapper.offsetWidth===0||wrapper.offsetHeight===0){
return;
}
const slider=wrapper.querySelector('.taxonomy-responsive-slider');
const controlsContainer=wrapper.querySelector('.taxonomy-slider-controls-container');
if(!slider||!controlsContainer){
return;
}
const prevButton=controlsContainer.querySelector('.taxonomy-slide-prev');
const nextButton=controlsContainer.querySelector('.taxonomy-slide-next');
const dotsContainer=controlsContainer.querySelector('.taxonomy-dots');
const items=slider.querySelectorAll('.category-small-box, .category-small-box-alt');
if(!prevButton||!nextButton||!dotsContainer||items.length===0){
return;
}
let currentPosition=0;
function getItemWidth(){
if(items.length > 0){
const itemRect=items[0].getBoundingClientRect();
const itemStyle=window.getComputedStyle(items[0]);
const marginRight=parseFloat(itemStyle.marginRight)||0;
return itemRect.width + marginRight + 20;
}
if(window.innerWidth <=480){
return (window.innerWidth / 2 - 10) + 20;
}
return (window.innerWidth / 3 - 20) + 20;
}
function getMaxTranslateX(){
const itemWidth=getItemWidth();
const totalContentWidth=items.length * itemWidth;
const visibleWidth=wrapper.clientWidth;
if(totalContentWidth <=visibleWidth){
return 0;
}
return Math.max(0, totalContentWidth - visibleWidth - 20);
}
function calculateVisibleItems(){
const containerWidth=wrapper.clientWidth;
const itemWidth=getItemWidth();
return Math.floor(containerWidth / itemWidth);
}
function getTotalSlides(){
const visibleItems=calculateVisibleItems();
return Math.ceil(items.length / visibleItems);
}
function generateDots(){
const totalSlides=getTotalSlides();
dotsContainer.innerHTML='';
for (let i=0; i < totalSlides; i++){
const li=document.createElement('li');
li.setAttribute('role', 'presentation');
li.setAttribute('aria-selected', i===0 ? 'true':'false');
li.setAttribute('aria-controls', `navigation${i}`);
li.setAttribute('id', `slick-slide${i}`);
if(i===0){
li.classList.add('active');
}
const button=document.createElement('button');
button.type='button';
button.setAttribute('data-role', 'none');
button.setAttribute('role', 'button');
button.setAttribute('tabindex', '0');
button.textContent=(i + 1).toString();
li.appendChild(button);
dotsContainer.appendChild(li);
li.addEventListener('click', function(){
goToSlide(i);
});
}}
function goToSlide(slideIndex){
const visibleItems=calculateVisibleItems();
const targetPosition=slideIndex * visibleItems;
currentPosition=Math.min(targetPosition, items.length - visibleItems);
currentPosition=Math.max(0, currentPosition);
updateSliderPosition();
updateDots();
}
function updateDots(){
const dots=dotsContainer.querySelectorAll('li');
const visibleItems=calculateVisibleItems();
const currentSlide=Math.floor(currentPosition / visibleItems);
dots.forEach((dot, index)=> {
dot.classList.remove('active');
dot.setAttribute('aria-selected', 'false');
if(index===currentSlide){
dot.classList.add('active');
dot.setAttribute('aria-selected', 'true');
}});
}
function updateSliderPosition(){
const itemWidth=getItemWidth();
const requestedTranslateX=currentPosition * itemWidth;
const maxTranslateX=getMaxTranslateX();
const actualTranslateX=Math.min(requestedTranslateX, maxTranslateX);
slider.style.transform=`translateX(-${actualTranslateX}px)`;
updateNavigationButtons();
updateDots();
}
function updateNavigationButtons(){
if(currentPosition <=0){
prevButton.classList.add('slick-disabled');
}else{
prevButton.classList.remove('slick-disabled');
}
const itemWidth=getItemWidth();
const nextPositionTranslateX=(currentPosition + 1) * itemWidth;
const maxTranslateX=getMaxTranslateX();
if(nextPositionTranslateX > maxTranslateX){
nextButton.classList.add('slick-disabled');
}else{
nextButton.classList.remove('slick-disabled');
}}
prevButton.addEventListener("click", function (e){
e.preventDefault();
e.stopPropagation();
if(currentPosition > 0){
currentPosition--;
updateSliderPosition();
}});
nextButton.addEventListener("click", function (e){
e.preventDefault();
e.stopPropagation();
const itemWidth=getItemWidth();
const requestedTranslateX=(currentPosition + 1) * itemWidth;
const maxTranslateX=getMaxTranslateX();
if(requestedTranslateX <=maxTranslateX){
currentPosition++;
updateSliderPosition();
}});
function handleResize(){
if(window.innerWidth >=992){
slider.style.transform='none';
return;
}
const visibleItems=calculateVisibleItems();
currentPosition=Math.min(currentPosition,
Math.max(0, items.length - visibleItems)
);
generateDots();
updateSliderPosition();
}
window.addEventListener("resize", handleResize);
let startX=0;
let endX=0;
let touchStartTime=0;
slider.addEventListener("touchstart", function (e){
startX=e.touches[0].clientX;
touchStartTime=Date.now();
});
slider.addEventListener("touchmove", function (e){
endX=e.touches[0].clientX;
});
slider.addEventListener("touchend", function (e){
const deltaX=endX - startX;
const touchDuration=Date.now() - touchStartTime;
if(Math.abs(deltaX) > 50&&touchDuration < 300){
if(deltaX > 0){
if(currentPosition > 0){
currentPosition--;
updateSliderPosition();
}}else{
const itemWidth=getItemWidth();
const requestedTranslateX=(currentPosition + 1) * itemWidth;
const maxTranslateX=getMaxTranslateX();
if(requestedTranslateX <=maxTranslateX){
currentPosition++;
updateSliderPosition();
}}
}});
generateDots();
updateSliderPosition();
});
}
initTaxonomySliders();
let resizeTimeout;
window.addEventListener("resize", function(){
clearTimeout(resizeTimeout);
resizeTimeout=setTimeout(function(){
if(window.innerWidth < 992){
initTaxonomySliders();
}}, 250);
});
});
(function($){
'use strict';
var ListeoFAQ=function($scope, $){
var $container=$scope.find('.faq-container');
if($container.length===0){
return;
}
var $faqItems=$container.find('.faq-item');
var behavior=$container.data('behavior')||'single';
init();
function init(){
bindEvents();
setupAccessibility();
}
function bindEvents(){
$faqItems.each(function(){
var $item=$(this);
var $question=$item.find('.faq-question');
$question.on('click', function(e){
e.preventDefault();
toggleFAQ($item);
});
$question.on('keydown', function(e){
if(e.key==='Enter'||e.key===' '){
e.preventDefault();
toggleFAQ($item);
}});
});
}
function toggleFAQ($item){
var isActive=$item.hasClass('active');
var $question=$item.find('.faq-question');
if(behavior==='single'){
$faqItems.not($item).each(function(){
var $otherItem=$(this);
var $otherQuestion=$otherItem.find('.faq-question');
$otherItem.removeClass('active');
$otherQuestion.attr('aria-expanded', 'false');
});
}
if(isActive){
$item.removeClass('active');
$question.attr('aria-expanded', 'false');
}else{
$item.addClass('active');
$question.attr('aria-expanded', 'true');
}}
function setupAccessibility(){
$faqItems.each(function(index){
var $item=$(this);
var $question=$item.find('.faq-question');
var $answer=$item.find('.faq-answer');
var questionId='faq-question-' + index;
var answerId='faq-answer-' + index;
$question.attr({
'id': questionId,
'aria-controls': answerId,
'aria-expanded': $item.hasClass('active') ? 'true':'false'
});
$answer.attr({
'id': answerId,
'aria-labelledby': questionId,
'role': 'region'
});
});
}};
$(window).on('elementor/frontend/init', function(){
elementorFrontend.hooks.addAction('frontend/element_ready/listeo-faq.default', ListeoFAQ);
});
$(document).ready(function(){
$('.faq-container').each(function(){
ListeoFAQ($(this), $);
});
});
})(jQuery);