139 lines
4.9 KiB
JavaScript
139 lines
4.9 KiB
JavaScript
/* 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.
|
|
*
|
|
*/
|
|
|
|
$(document).ready(function () {
|
|
prestashop.blockcart = prestashop.blockcart || {};
|
|
|
|
var showModal = prestashop.blockcart.showModal || function (modal) {
|
|
var $body = $('body');
|
|
$body.append(modal);
|
|
$body.one('click', '#blockcart-modal', function (event) {
|
|
if (event.target.id === 'blockcart-modal') {
|
|
$(event.target).remove();
|
|
}
|
|
});
|
|
};
|
|
|
|
$(document).ready(function () {
|
|
prestashop.on(
|
|
'updateCart',
|
|
function (event) {
|
|
|
|
if($('body:not(#cart)').hasClass('add1')) {
|
|
var cart_click = function (e) {
|
|
$('body').addClass('side_open side_content')
|
|
$('.side_menu .side_menu_rel > div').removeClass('show');
|
|
$('#side_cart_wrap').addClass('show');
|
|
$('.side_close').removeClass('search_close menu_close mail_close').addClass('cart_close');
|
|
$('.side_menu').find('.cart-prods').addClass('loading');
|
|
}
|
|
cart_click();
|
|
}
|
|
|
|
var refreshURL = $('.blockcart').data('refresh-url');
|
|
var requestData = {};
|
|
|
|
if (event && event.reason) {
|
|
requestData = {
|
|
id_product_attribute: event.reason.idProductAttribute,
|
|
id_product: event.reason.idProduct,
|
|
action: event.reason.linkAction
|
|
};
|
|
}
|
|
|
|
$.post(refreshURL, requestData).then(function (resp) {
|
|
$('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
|
|
var count_new = $(resp.preview).find('.cart-products-count').text()
|
|
$('.box-cart.cart-products-count').html(count_new);
|
|
|
|
if($('body').hasClass('add1')) {
|
|
$('.side_menu').find('.cart-prods').addClass('loading');
|
|
|
|
setTimeout(function(){
|
|
$('.side_menu').find('.cart-prods').removeClass('loading');
|
|
$('.side_menu').find('.cart-prods > li:not(.show)').each(function(i){
|
|
var row = $(this);
|
|
setTimeout(function(){
|
|
row.addClass('show');
|
|
}, 300 + i * 160);
|
|
});
|
|
}, 400);
|
|
} else {
|
|
if (resp.modal) {
|
|
showModal(resp.modal);
|
|
}
|
|
}
|
|
|
|
$('.side_close, .close_cross, .return').click(function () {
|
|
$('body').removeClass('side_open side_content');
|
|
$('.side_menu').find('.cart-prods > li').each(function(i){
|
|
$(this).removeClass('show');
|
|
});
|
|
setTimeout(function(){
|
|
$('body').removeClass('was_open');
|
|
}, 440);
|
|
});
|
|
var reopen = function() {
|
|
if($('body').hasClass('side_open')) {
|
|
|
|
$('body').removeClass('side_content');
|
|
$('.side_menu').removeClass('reopen_go').addClass('reopen_hide');
|
|
setTimeout(function(){
|
|
$('body').addClass('side_content');
|
|
}, 320);
|
|
setTimeout(function(){
|
|
$('.side_menu').removeClass('reopen_hide').addClass('reopen_go');
|
|
}, 600);
|
|
|
|
} else {
|
|
$('body').addClass('side_open side_content was_open')
|
|
}
|
|
}
|
|
var cartprodsshow = function () {
|
|
$('.side_menu').find('.cart-prods > li').each(function(i){
|
|
var row = $(this);
|
|
setTimeout(function(){
|
|
row.addClass('show');
|
|
}, 300 + i * 220);
|
|
});
|
|
}
|
|
var cart_click = function (e) {
|
|
e.preventDefault();
|
|
reopen();
|
|
$('.side_menu .side_menu_rel > div').removeClass('show');
|
|
$('#side_cart_wrap').addClass('show');
|
|
$('.side_close').removeClass('search_close menu_close acc_close').addClass('cart_close');
|
|
$('.side_close i').toggleClass('rotateit');
|
|
if($('.side_menu').hasClass('reopen_hide')) {
|
|
setTimeout(function(){
|
|
cartprodsshow();
|
|
}, 320);
|
|
} else {
|
|
cartprodsshow();
|
|
}
|
|
}
|
|
$('#header .row.action .blockcart a.cart_nogo').off("click", cart_click).on("click", cart_click);
|
|
|
|
}).fail(function (resp) {
|
|
prestashop.emit('handleError', {eventType: 'updateShoppingCart', resp: resp});
|
|
});
|
|
}
|
|
);
|
|
});
|
|
});
|