Sha256: 5e4ebe7161096eb52e6667ee94abf0f3051f2158e31ce66c9f030d0d1b84d536

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

//= require harpiya/frontend/viewport

Harpiya.fetchProductCarousel = function (taxonId, htmlContainer) {
  return $.ajax({
    url: Harpiya.routes.product_carousel(taxonId)
  }).done(function (data) {
    htmlContainer.html(data);
    htmlContainer.find('.carousel').carouselBootstrap4()
  })
}

Harpiya.loadCarousel = function (element, div) {
  var container = $(element)
  var productCarousel = $(div)
  var carouselLoaded = productCarousel.attr('data-product-carousel-loaded')

  if (container.length && !carouselLoaded && container.isInViewport()) {
    var taxonId = productCarousel.attr('data-product-carousel-taxon-id')
    productCarousel.attr('data-product-carousel-loaded', 'true')

    Harpiya.fetchProductCarousel(taxonId, container)
  }
}

Harpiya.loadsCarouselElements = function () {
  $('div[data-product-carousel-taxon-id]').each(function (_index, element) { Harpiya.loadCarousel(element, this) })
}

document.addEventListener('turbolinks:load', function () {
  var carouselPresent = $('div[data-product-carousel-taxon-id]')

  if (carouselPresent.length) {
    // load Carousels straight away if they are in the viewport
    Harpiya.loadsCarouselElements()

    // load additional Carousels when scrolling down
    $(window).on('resize scroll', function () {
      Harpiya.loadsCarouselElements()
    })
  }
})

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
harpiya_frontend-4.3.0.alpha app/assets/javascripts/harpiya/frontend/views/harpiya/home/product_carousels.js