/** Shopify CDN: Minification failed Line 12:0 Transforming class syntax to the configured target environment ("es5") is not supported yet Line 13:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet Line 24:4 Transforming const to the configured target environment ("es5") is not supported yet Line 32:11 Transforming object literal extensions to the configured target environment ("es5") is not supported yet Line 39:8 Transforming object literal extensions to the configured target environment ("es5") is not supported yet Line 59:15 Transforming object literal extensions to the configured target environment ("es5") is not supported yet Line 61:4 Transforming const to the configured target environment ("es5") is not supported yet **/ class SliderComponent extends HTMLElement { constructor() { super(); this.slider = this.querySelector('ul'); this.sliderItems = this.querySelectorAll('li'); this.pageCount = this.querySelector('.slider-counter--current'); this.pageTotal = this.querySelector('.slider-counter--total'); this.prevButton = this.querySelector('button[name="previous"]'); this.nextButton = this.querySelector('button[name="next"]'); if (!this.slider || !this.nextButton) return; const resizeObserver = new ResizeObserver(entries => this.initPages()); resizeObserver.observe(this.slider); this.slider.addEventListener('scroll', this.update.bind(this)); this.prevButton.addEventListener('click', this.onButtonClick.bind(this)); this.nextButton.addEventListener('click', this.onButtonClick.bind(this)); } initPages() { if (!this.sliderItems.length === 0) return; this.slidesPerPage = Math.floor(this.slider.clientWidth / this.sliderItems[0].clientWidth); this.totalPages = this.sliderItems.length - this.slidesPerPage + 1; this.update(); } update() { if (!this.pageCount || !this.pageTotal) return; this.currentPage = Math.round(this.slider.scrollLeft / this.sliderItems[0].clientWidth) + 1; if (this.currentPage === 1) { this.prevButton.setAttribute('disabled', true); } else { this.prevButton.removeAttribute('disabled'); } if (this.currentPage === this.totalPages) { this.nextButton.setAttribute('disabled', true); } else { this.nextButton.removeAttribute('disabled'); } this.pageCount.textContent = this.currentPage; this.pageTotal.textContent = this.totalPages; } onButtonClick(event) { event.preventDefault(); const slideScrollPosition = event.currentTarget.name === 'next' ? this.slider.scrollLeft + this.sliderItems[0].clientWidth : this.slider.scrollLeft - this.sliderItems[0].clientWidth; this.slider.scrollTo({ left: slideScrollPosition }); } } customElements.define('slider-component', SliderComponent);