document.querySelectorAll('.bt-product-category-card5__icon-wrapper').forEach(iconWrapper => {
  iconWrapper.addEventListener('click', function () {
    const parentCard = this.closest('.bt-product-category-card5');
    const subElement = parentCard.querySelector('.bt-product-category-card5__sub');

    // Toggle the active class on the parent element
    parentCard.classList.toggle('active');

    // If the parent has the active class, show the sub-element
    if (parentCard.classList.contains('active')) {
      subElement.style.display = 'flex';
      // To animate the height, first, we need to get its actual height and then set it
      const subHeight = subElement.scrollHeight; // Get full height of the element
      subElement.style.height = `${subHeight}px`; // Set height to the actual height
    } else {
      // If the active class is removed, reverse the changes
      subElement.style.height = '0'; // Collapse the element by setting height to 0
      setTimeout(() => {
        subElement.style.display = 'none'; // Set display:none after animation
      }, 400); // Match the timing of the transition (0.4s in CSS)
    }
  });
});

Search

Stockists

Stockists

Shop by category

Search a product

Brands

Price

<script>
document.addEventListener('DOMContentLoaded', () => {
  const initializeSliders = () => {
    const sliderClasses = ['bt-product-quickview-gallery-slider', 'bt-product-quickview-gallery-slider-thumb']; // Array of main slider class names

    const sliderSelector = sliderClasses.map(cls => `.${cls}`).join(', ');

    const debounce = (fn, threshold) => {
      let timeout;
      threshold = threshold || 200;
      return function debounced(...args) {
        clearTimeout(timeout);
        const context = this;
        timeout = setTimeout(() => {
          fn.apply(context, args);
        }, threshold);
      };
    };

    const initSlider = (sliderElement) => {
      const sliderId = sliderElement.id;
      const allInstances = window.bricksData?.splideInstances;
      let mySlider = false;

      for (const key in allInstances) {
        if (key === sliderId) {
          mySlider = allInstances[key];
          break;
        }
      }

      if (!mySlider) {
        for (const key in allInstances) {
          const instance = allInstances[key];
          if (instance.root === sliderElement) {
            mySlider = instance;
            break;
          }
        }
      }

      if (mySlider) {
        const progressBar = document.querySelector(`.bt-slider-progressbar[bt-data-slider="${sliderElement.getAttribute('bt-data-slider')}"]`);
        if (progressBar) {
          const progressType = progressBar.getAttribute('bt-data-progress-type');

          if (progressType === 'progress') {
            const updateProgressBar = () => {
              const end = mySlider.Components.Controller.getEnd() + 1;
              const rate = Math.min((mySlider.index + 1) / end, 1);
              progressBar.style.width = String(100 * rate) + '%';
            };

            mySlider.on('mounted move', updateProgressBar);
            updateProgressBar();
          } else if (progressType === 'animated') {
            const interval = mySlider.options.interval || 3000;

            function startProgressBar() {
              progressBar.style.transitionDuration = interval + 'ms';
              progressBar.style.width = '100%';
            }

            function resetProgressBar() {
              progressBar.style.transitionDuration = '0ms';
              progressBar.style.width = '0%';
              setTimeout(startProgressBar, 10);
            }

            mySlider.on('autoplay:playing', function () {
              startProgressBar();
            });

            mySlider.on('move', function () {
              resetProgressBar();
            });

            startProgressBar();
          }
        }

        const myPrevBtn = document.querySelector(`.bt-slidernav-prev[bt-data-slider="${sliderElement.getAttribute('bt-data-slider')}"]`);
        const myNextBtn = document.querySelector(`.bt-slidernav-next[bt-data-slider="${sliderElement.getAttribute('bt-data-slider')}"]`);

        const updateButtonStates = () => {
          const totalSlides = mySlider.length;
          const slidesPerPage = mySlider.options.perPage || 1;
          const lastSlideIndex = totalSlides - slidesPerPage;

          if (mySlider.options.type === 'loop') {
            if (myPrevBtn) myPrevBtn.disabled = false;
            if (myNextBtn) myNextBtn.disabled = false;
          } else {
            if (myPrevBtn) {
              myPrevBtn.disabled = mySlider.index === 0;
            }
            if (myNextBtn) {
              myNextBtn.disabled = mySlider.index >= lastSlideIndex;
            }
          }
        };

        if (myPrevBtn && myNextBtn) {
          myPrevBtn.addEventListener('click', function () {
            mySlider.go('-1');
          });
          myNextBtn.addEventListener('click', function () {
            mySlider.go('+1');
          });

          mySlider.on('mounted moved', updateButtonStates);
          updateButtonStates();
        }

        const fractionsElement = document.querySelector(`[bt-data-slider="${sliderElement.getAttribute('bt-data-slider')}"][bt-data-fractions="true"]`);
        if (fractionsElement) {
          const updateFractions = () => {
            const currentIndex = mySlider.index + 1;
            const totalSlides = mySlider.length;
            fractionsElement.innerText = `${currentIndex}/${totalSlides}`;
          };

          mySlider.on('mounted move', updateFractions);
          updateFractions();
        }

        window.addEventListener('resize', debounce(() => {
          mySlider.options = mySlider.options;
          updateButtonStates();
        }, 300));
      }
    };

    const sliders = document.querySelectorAll(sliderSelector);
    sliders.forEach((sliderElement) => {
      initSlider(sliderElement);
    });

    const syncInit = (mainSliderId, thumbSliderId) => {
      const main = bricksData.splideInstances[mainSliderId],
        thumbnail = bricksData.splideInstances[thumbSliderId];

      main.sync(thumbnail);
    };

    const syncSliders = () => {
      const mainSliders = document.querySelectorAll(`[bt-data-sync="main"]`);
      mainSliders.forEach(mainSlider => {
        const mainSliderSyncValue = mainSlider.getAttribute('bt-data-slider');

        const thumbSliders = document.querySelectorAll(`[bt-data-sync="${mainSliderSyncValue}"]`);
        thumbSliders.forEach(thumbSlider => {
          const mainSliderId = mainSlider.dataset.scriptId;
          const thumbSliderId = thumbSlider.dataset.scriptId;
          
          setTimeout(() => {
            syncInit(mainSliderId, thumbSliderId);
          }, 0);

          window.addEventListener("resize", debounce(() => {
            syncInit(mainSliderId, thumbSliderId);
          }, 300));
        });
      });
    };

    syncSliders();
  };

  // Call on initial DOMContentLoaded
  setTimeout(initializeSliders, 250);

  
  // Call after AJAX popup content is loaded
  document.addEventListener('bricks/ajax/popup/loaded', (event) => {
    const popupId = event.detail.popupId;
    if (popupId == 1867) {
      setTimeout(initializeSliders, 250);  // Delay for popup content to be fully available
    }
  });
  
});
</script>