$(document).ready(function () { window.sliderResume = new Swiper('.product-resume-carousel', { loop: false, observer: true, navigation: { nextEl: '.next-product', prevEl: '.prev-product', } }); new Swiper('.product-gallery-thumbnail', { direction: 'horizontal', slidesPerView: 1, spaceBetween: 0, observer: true, loop: false, navigation: { nextEl: '.next-thumbnail', prevEl: '.prev-thumbnail' }, breakpoints: { 640: { slidesPerView: 1, slidesPerGroup: 1, spaceBetween: 0, direction: 'horizontal', }, 768: { slidesPerView: 3, slidesPerGroup: 3, spaceBetween: 10, direction: 'horizontal', }, 1024: { slidesPerView: 5, slidesPerGroup: 5, spaceBetween: 20, direction: 'vertical', }, } }); new Swiper('.detailsCarousel', { slidesPerView: 2, freeMode: true, observer: true, breakpoints: { 640: { slidesPerView: 2, }, 768: { slidesPerView: 3, }, 1024: { slidesPerView: 4, }, } }); (function ($) { "use strict"; $.fn.CalypsoProductSelector = function (params) { // Default options var options = $.extend({ showProductDetailsSelector: '.show-product-details', dataSkuAttribute: 'data-sku', loadingResumeSelector: '.loading-resume-product', productResumeSelector: '.product-content-resume', btnAddCartSelector: '.add-to-cart', btnAddCartMobile: '.add-to-cart-product-main-mobile', nodeModel: params.nodeModel, isProductView: params.loadFirstSku || false, first_time: params.first_time || true, tabletSize: 770 }, params); // Plugin variables var $self = this; var model = null; // Put your DOM elements here var elements = { showProductDetailsBtn: $(options.showProductDetailsSelector), loadingResume: $(options.loadingResumeSelector), productResume: $(options.productResumeSelector), btnAddCart: $(options.btnAddCartSelector), btnAddCartMobile: $(options.btnAddCartMobile) }; var methods = { init: function () { events.addToCartClick(); if (!options.isProductView) { events.showSKUDetails(); events.slideChangeResume(); } if (options.isProductView) { methods.getProduct(skuJson.productId, false); //methods.getProduct(404, false); events.showMaterialProduct(); events.nextGallery(); events.prevGallery(); } events.handleZoomProductResume(); events.closeZoomProductResume(); }, initCarouselVariationColor: function () { new Swiper('.variations-colors', { slidesPerView: 7, spaceBetween: 10, freeMode: true, observer: true, scrollbar: { el: '.scrollbar-variations', }, breakpoints: { 640: { slidesPerView: 7, }, 768: { slidesPerView: 7, }, 1024: { slidesPerView: 10, }, } }); }, addToCart: function () { if (model != null && !model.hasEmptyFields()) { var productSKU = model.skuSelected(); if (productSKU != null) { $.ajax({ url: '/checkout/cart/add?sku=' + productSKU.itemId + '&qty=' + model.quantity() + '&seller=' + productSKU.sellers[0].sellerId + '&redirect=false&sc=1', beforeSend: function () { model.addingToCart(true); }, complete: function () { }, success: function (res) { model.addingToCart(false); closeSidebarModal('product-resume'); $('#product-resume').trigger('showOrder'); }, error: function (e) { model.addingToCart(false); } }); } } }, getProduct: function (id, showSidebar) { $.ajax({ url: '/api/catalog_system/pub/products/search/?fq=productId:' + id, beforeSend: function () { elements.loadingResume.css({ zIndex: 0, pointerEvents: 'all' }); elements.productResume.css({ opacity: 0 }); elements.loadingResume.css({ opacity: 1 }); }, complete: function () { }, success: function (res) { if (showSidebar) { gsap.to(elements.productResume, { duration: .3, opacity: 1, delay: .3 }); gsap.to(elements.loadingResume, { duration: .3, opacity: 0 }); elements.loadingResume.css({ zIndex: -1, pointerEvents: 'none' }); } function setFirstSku() { if (model.product().items.length > 0) { var minorSku = model.product().items[0]; model.product().items.forEach((sku) => { if (sku.sellers[0].commertialOffer.Price < minorSku.sellers[0].commertialOffer.Price) { minorSku = sku; } }); model.skuSelected(minorSku); if (minorSku.Dimensiones != null) { model.optionsSelected()['Dimensiones'] = minorSku.Dimensiones[0]; } if (minorSku.Color != null) { model.optionsSelected()['Color'] = minorSku.Color[0]; model.colorSelected(minorSku.Color[0]); } model.showImage(minorSku); model.name(minorSku.name); model.images(minorSku.images); minorSku['indexSku'] = 0; sliderResume.slideTo(minorSku.indexSku); } } if (res[0].skuSpecifications != null) { res[0].skuSpecifications.sort(function (a, b) { if (a.field.name > b.field.name) { return 1; } if (a.field.name < b.field.name) { return -1; } return 0; }); } if (options.first_time) { options.first_time = false; model = new ProductViewModel(res[0], options.isProductView); setFirstSku(); ko.applyBindings(model, options.nodeModel); } else { model.resetAll(res[0]); } if (options.isProductView) { if (model.product()['Banner descripción'] != null) { $('.product-description-table .col-sm-12').addClass('col-sm-6').removeClass('col-sm-12'); $('.product-description-table').prepend("