/* global $, prestashop */ /** * This module exposes an extension point in the form of the `showModal` function. * * If you want to override the way the modal window is displayed, simply define: * * prestashop.blockcart = prestashop.blockcart || {}; * prestashop.blockcart.showModal = function myOwnShowModal (modalHTML) { * // your own code * // please not that it is your responsibility to handle closing the modal too * }; * * Attention: your "override" JS needs to be included **before** this file. * The safest way to do so is to place your "override" inside the theme's main JS file. * */ jQuery.fn.tooltip = window._BStooltip; $(document).ready(function () { prestashop.blockcart = prestashop.blockcart || {}; var showModal = prestashop.blockcart.showModal || function (modal) {}; $(document).ready(function () { $(document).on('click', '#js-cart-close', function (e) { $('#blockcart, #mobile-cart-wrapper, #_mobile_blockcart-content, #_desktop_blockcart-content').removeClass('show'); e.stopPropagation(); }); $(document).on('click', '#blockcart-content', function (e) { e.stopPropagation(); }); prestashop.on( 'updateCart', function (event) { var refreshURL = $('#blockcart').data('refresh-url'); var requestData = {}; if (event && event.reason && typeof event.resp !== 'undefined' && !event.resp.hasError) { requestData = { id_customization: event.reason.idCustomization, id_product_attribute: event.reason.idProductAttribute, id_product: event.reason.idProduct, action: event.reason.linkAction }; } $.post(refreshURL, requestData).then(function (resp) { if (event.reason && event.reason.linkPlace == 'cart-preview') { $('#blockcart').replaceWith($(resp.preview).addClass('show')); } else { $('#blockcart').replaceWith($(resp.preview)); } $('#mobile-cart-products-count').text($(resp.preview).find('.cart-products-count-btn').first().text()); prestashop.emit('responsive updateAjax', { mobile: prestashop.responsive.mobile }); prestashop.emit('updatedAjaxCart', {}); if(event.reason.linkAction == 'delete-from-cart'){ prestashop.emit('updateProductListAddToCart', { id_product: event.reason.idProduct, id_product_attribute: event.reason.idProductAttribute, new_html: event.reason.newAddBtn }); } else{ prestashop.emit('updateProductListAddToCart', { id_product: event.reason.idProduct, id_product_attribute: event.reason.idProductAttribute, new_html: $(resp.preview).find('#updated-add-cart-btn-' + event.reason.idProduct + '-' + event.reason.idProductAttribute).html() }); } if (resp.modal) { showModal(resp.modal); } }).fail(function (resp) { prestashop.emit('handleError', {eventType: 'updateShoppingCart', resp: resp}); }); if (event && event.resp && event.resp.hasError) { prestashop.emit('showErrorNextToAddtoCartButton', { errorMessage: event.resp.errors.join('
')}); let $toast = $('#cart-error-toast'); $toast.html(event.resp.errors.join('
')); $toast.toast('show'); } } ); }); });