/** * Copyright ETS Software Technology Co., Ltd * * NOTICE OF LICENSE * * This file is not open source! Each license that you purchased is only available for 1 website only. * If you want to use this file on more websites (or projects), you need to purchase additional licenses. * You are not allowed to redistribute, resell, lease, license, sub-license or offer our resources to any third party. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. * * @author ETS Software Technology Co., Ltd * @copyright ETS Software Technology Co., Ltd * @license Valid for 1 website (or project) for each purchase of license */ $(document).ready(function(){ if($('#quantity_wanted').length && $('.product-add-to-cart').length) { setTimeout(function(){ $.ajax({ type: 'POST', url: '', async: true, cache: false, dataType : "json", data: 'ajax=1&quickview=0&action=refresh&quantity_wanted='+$('#quantity_wanted').val(), success: function(jsonData,textStatus,jqXHR) { if(jsonData) { var addToCartBt = ".page-product:not(.modal-open) .row .product-add-to-cart, .page-product:not(.modal-open) .product-container .product-add-to-cart, .page-product:not(.modal-open) .row .js-product-add-to-cart, .page-product:not(.modal-open) .product-container .js-product-add-to-cart"; if(jsonData.product_add_to_cart && $(addToCartBt).length) { var t = $(addToCartBt).find('.add'); if (!(t.length <= 0)) { var n = $(jsonData.product_add_to_cart).find('.add'); if(n.length > 0) t.replaceWith(n[0].outerHTML); else t.html(""); } t = $(addToCartBt).find('#product-availability'); if (!(t.length <= 0)) { var p = $(jsonData.product_add_to_cart).find('#product-availability'); if(p.length > 0) t.replaceWith(p[0].outerHTML); else t.html(""); } t = $(addToCartBt).find('.product-minimal-quantity'); if (!(t.length <= 0)) { var m = $(jsonData.product_add_to_cart).find('.product-minimal-quantity'); if(m.length > 0) t.replaceWith(m[0].outerHTML); else t.html(""); } } } }, error: function(XMLHttpRequest, textStatus, errorThrown) { } }); },200); } prestashop.on('updateCart', function (){ const currentCart = $('.elementor-element[data-widget_type="shopping-cart.default"]'); const lightbox = currentCart.find('.elementor-cart__wrapper .elementor-lightbox'); if(currentCart.length && lightbox.length && !lightbox.hasClass('elementor-cart--shown')){ currentCart.find('.elementor-cart__toggle').find('a').first().trigger('click'); } }); if($('.ets_speed_dynamic_hook').length || ssIsCeInstalled) { var datas=''; $('.ets_speed_dynamic_hook').each(function(index, domhook){ datas = datas + '&hook_' + index + '=' + $(this).attr('data-hook')+'&module_'+index+'='+$(this).attr('data-moudule')+'¶ms_'+index+'='+JSON.stringify($(this).data('params')); }); var url = window.location.href; var indexphp = url.indexOf('?'); var indexthang = url.indexOf('#'); if(indexthang>=0) url = url.substr(0,indexthang); $.ajax({ type: 'POST', headers: { "cache-control": "no-cache" }, url: url, async: true, cache: false, dataType : "json", data: 'ajax=1&ets_superseed_load_content=1&ajax=1&count_datas='+$('.ets_speed_dynamic_hook').length+datas, success: function(jsonData,textStatus,jqXHR) { if(jsonData) { renderDataAjax(jsonData); if(jsonData.cart_products_count) { $('.cart-products-count').text(jsonData.cart_products_count); prestashop.emit('updatedAjaxCart', {}); } if(jsonData.creativeelements_header && $('.elementor-'+jsonData.creativeelements_header.uid).length) { $('.elementor-'+jsonData.creativeelements_header.uid).replaceWith(jsonData.creativeelements_header.content); if(typeof ceFrontend != 'undefined'){ ceFrontend.init(); } } if($(window).width()<768) { $("*[id^='_desktop_']").each(function(t, e){ var n = $("#" + e.id.replace("_desktop_", "_mobile_")); if($(this).html().trim()!='' && n.length) n.html($(this).html()); }); } $(document).trigger("hooksLoaded"); } }, error: function(XMLHttpRequest, textStatus, errorThrown) { } }); } }); function ets_superspeed_getCeCartHandler(){ var ShoppingCart = elementorModules.frontend.handlers.Base.extend({ getDefaultSettings: function getDefaultSettings() { return { selectors: { container: '.elementor-cart__container', toggle: '.elementor-cart__toggle .elementor-button', closeButton: '.elementor-cart__close-button' }, classes: { isShown: 'elementor-cart--shown', lightbox: 'elementor-lightbox', isHidden: 'elementor-cart-hidden' } }; }, getDefaultElements: function getDefaultElements() { var selectors = this.getSettings('selectors'), elements = {}; elements.$container = this.$element.find(selectors.container); elements.$toggle = this.$element.find(selectors.toggle); elements.$closeButton = this.$element.find(selectors.closeButton); return elements; }, bindEvents: function bindEvents() { var self = this, $ = jQuery, $container = self.elements.$container, $closeButton = self.elements.$closeButton, classes = this.getSettings('classes'); // Activate topbar mode on click self.elements.$toggle.on('click', function (event) { if (!self.elements.$toggle.hasClass(classes.isHidden)) { event.preventDefault(); $container.toggleClass(classes.isShown); } }); // Deactivate topbar mode on click or on esc. $container.on('click', function (event) { if ($container.hasClass(classes.isShown) && $container[0] === event.target) { $container.removeClass(classes.isShown); } }); $closeButton.on('click', function () { $container.removeClass(classes.isShown); }); ceFrontend.elements.$document.keyup(function (event) { var ESC_KEY = 27; if (ESC_KEY === event.keyCode) { if ($container.hasClass(classes.isShown)) { $container.click(); } } }); $container.on('click', '.elementor-cart__product-remove a', function (event) { var dataset = $(this).data(); dataset.linkAction = 'delete-from-cart'; $(this).closest('.elementor-cart__product').addClass('ce-disabled'); event.preventDefault(); $.ajax({ url: this.href, method: 'POST', dataType: 'json', data: { ajax: 1, action: 'update', }, }).then(function (resp) { prestashop.emit('updateCart', { reason: dataset, resp: resp, }); }).fail(function (resp) { prestashop.emit('handleError', { eventType: 'updateProductInCart', resp: resp, cartAction: dataset.linkAction, }); }); }); prestashop.on('updateCart', function(data) { if (!data || !data.resp || !data.resp.cart) { return; } var cart = data.resp.cart, gift = $container.find('.elementor-cart__products').data('gift'), $products = $(); // Update toggle self.elements.$toggle.find('.elementor-button-text') .html(cart['subtotals']['products']['value']) ; self.elements.$toggle.find('.elementor-button-icon') .attr('data-counter', cart['products_count']) .data('counter', cart['products_count']) ; // Update products cart.products.forEach(function (product) { var $prod = $( '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' ), $attrs = $prod.find('.elementor-cart__product-attrs'), cover = product.cover || prestashop.urls.no_picture_image; if (product.embedded_attributes && product.embedded_attributes.id_image) { // PS 1.7.8 fix - product.cover contains wrong image var i, id_cover = product.embedded_attributes.id_image.split('-').pop(); for (i = 0; i < product.images.length; i++) { if (id_cover == product.images[i].id_image) { cover = product.images[i]; break; } } } $('').appendTo($prod.find('.elementor-cart__product-image')).attr({ src: cover.bySize.cart_default && cover.bySize.cart_default.url || cover.small.url, alt: cover.legend, }); $('').prependTo($prod.find('.elementor-cart__product-name')) .attr('href', product['url']) .html(product['name']) ; // Add product attributes for (var label in product['attributes']) { $('
').html( '' + label + ': ' + '' + product['attributes'][label] + '' ).appendTo($attrs); } // Add product customizations product.customizations && product.customizations.forEach(function (customization) { customization.fields.forEach(function (field) { $('
').html( '' + field['label'] + ': ' + '' + ('image' === field['type'] ? $('').attr('src', field['image']['small']['url'])[0].outerHTML : field['text']) + '' ).appendTo($attrs); }); }); $prod.find('.elementor-cart__product-price').html( '' + product['quantity'] + ' × ' + (product['is_gift'] ? gift : product['price']) + ' ' ).append(product['has_discount'] ? $('').html(product['regular_price']) : []); $('').appendTo($prod.find('.elementor-cart__product-remove')).attr({ href: product['remove_from_cart_url'], rel: 'nofollow', 'data-id-product': product['id_product'], 'data-id-product-attribute': product['id_product_attribute'], 'data-id-customization': product['id_customization'], }).data({ 'idProduct': product['id_product'], 'idProductAttribute': product['id_product_attribute'], 'idCustomization': product['id_customization'], }); $products.push($prod[0]); }); // Update cart $container.find('.elementor-cart__products') .empty() .append($products) ; $container.find('.elementor-cart__empty-message') .toggleClass('elementor-hidden', !!cart['products_count']) ; $container.find('.elementor-cart__summary').html( '
' + cart['summary_string'] + '
' + '
' + cart['subtotals']['products']['value'] + '
' + '' + cart['subtotals']['shipping']['label'] + '' + '' + cart['subtotals']['shipping']['value'] + '' + '' + cart['totals']['total']['label'] + '' + '' + cart['totals']['total']['value'] + '' ); $container.find('.elementor-alert-warning') .toggleClass('elementor-hidden', !cart['minimalPurchaseRequired']) .html('' + cart['minimalPurchaseRequired'] + ''); ; $container.find('.elementor-button--checkout') .toggleClass('ce-disabled', cart['minimalPurchaseRequired'] || !cart['products_count']) ; // Open shopping cart after updated if (self.getElementSettings('action_open_cart')) { self.elements.$container.hasClass(classes.isShown) || self.elements.$toggle.triggerHandler('click'); } }); } }); return ShoppingCart; }