class CustomTestimonials extends HTMLElement { connectedCallback() { this.attachShadow({ mode: 'open' }); this.shadowRoot.innerHTML = `
`; // Slider functionality const container = this.shadowRoot.getElementById('testimonial-container'); const dots = this.shadowRoot.querySelectorAll('.slider-dot'); const prevBtn = this.shadowRoot.getElementById('prev-btn'); const nextBtn = this.shadowRoot.getElementById('next-btn'); let currentIndex = 0; const totalSlides = dots.length; const updateSlider = () => { container.style.transform = `translateX(-${currentIndex * 100}%)`; // Update dots dots.forEach((dot, index) => { if (index === currentIndex) { dot.classList.add('active'); } else { dot.classList.remove('active'); } }); }; const nextSlide = () => { currentIndex = (currentIndex + 1) % totalSlides; updateSlider(); }; const prevSlide = () => { currentIndex = (currentIndex - 1 + totalSlides) % totalSlides; updateSlider(); }; // Event listeners nextBtn.addEventListener('click', nextSlide); prevBtn.addEventListener('click', prevSlide); dots.forEach(dot => { dot.addEventListener('click', () => { currentIndex = parseInt(dot.getAttribute('data-index')); updateSlider(); }); }); // Auto-advance slider setInterval(nextSlide, 5000); // Initialize Feather icons feather.replace(); } } customElements.define('custom-testimonials', CustomTestimonials);