99 lines
3.2 KiB
JavaScript
99 lines
3.2 KiB
JavaScript
document.addEventListener('DOMContentLoaded', function () {
|
|
var positionCartBlocks = function () {
|
|
var blocks = document.querySelectorAll('[data-crosssellpro-block="1"][data-crosssellpro-mode="cart"]');
|
|
Array.prototype.forEach.call(blocks, function (block) {
|
|
var cartContainer = document.querySelector('.card.cart-container');
|
|
if (cartContainer && cartContainer.parentNode) {
|
|
cartContainer.insertAdjacentElement('afterend', block);
|
|
}
|
|
});
|
|
};
|
|
|
|
var getStep = function (block) {
|
|
var track = block.querySelector('.js-crosssellpro-track');
|
|
if (!track) {
|
|
return 280;
|
|
}
|
|
var firstItem = track.querySelector('.crosssellpro-item');
|
|
if (!firstItem) {
|
|
return 280;
|
|
}
|
|
var style = window.getComputedStyle(track);
|
|
var gap = parseFloat(style.columnGap || style.gap || '0');
|
|
return firstItem.offsetWidth + gap;
|
|
};
|
|
|
|
positionCartBlocks();
|
|
|
|
document.addEventListener('click', function (event) {
|
|
var prevBtn = event.target.closest('.js-crosssellpro-prev');
|
|
if (prevBtn) {
|
|
var prevBlock = prevBtn.closest('[data-crosssellpro-block="1"]');
|
|
var prevViewport = prevBlock ? prevBlock.querySelector('.js-crosssellpro-viewport') : null;
|
|
if (prevViewport && prevBlock) {
|
|
event.preventDefault();
|
|
prevViewport.scrollBy({ left: -getStep(prevBlock), behavior: 'smooth' });
|
|
}
|
|
return;
|
|
}
|
|
|
|
var nextBtn = event.target.closest('.js-crosssellpro-next');
|
|
if (nextBtn) {
|
|
var nextBlock = nextBtn.closest('[data-crosssellpro-block="1"]');
|
|
var nextViewport = nextBlock ? nextBlock.querySelector('.js-crosssellpro-viewport') : null;
|
|
if (nextViewport && nextBlock) {
|
|
event.preventDefault();
|
|
nextViewport.scrollBy({ left: getStep(nextBlock), behavior: 'smooth' });
|
|
}
|
|
return;
|
|
}
|
|
|
|
var addBtn = event.target.closest('[data-crosssellpro-add="1"]');
|
|
if (!addBtn) {
|
|
return;
|
|
}
|
|
|
|
event.preventDefault();
|
|
|
|
var block = addBtn.closest('[data-crosssellpro-block="1"]');
|
|
if (!block) {
|
|
window.location.href = addBtn.getAttribute('href') || '/';
|
|
return;
|
|
}
|
|
|
|
var cartUrl = block.getAttribute('data-cart-url');
|
|
var returnUrl = block.getAttribute('data-return-url');
|
|
var token = block.getAttribute('data-token');
|
|
var productId = addBtn.getAttribute('data-id-product');
|
|
var qty = addBtn.getAttribute('data-qty') || '1';
|
|
var postAddUrl = addBtn.getAttribute('data-post-add-url');
|
|
|
|
if (!cartUrl || !token || !productId) {
|
|
window.location.href = returnUrl || cartUrl || '/';
|
|
return;
|
|
}
|
|
|
|
var body = new URLSearchParams();
|
|
body.set('token', token);
|
|
body.set('id_product', productId);
|
|
body.set('qty', qty);
|
|
body.set('add', '1');
|
|
body.set('action', 'update');
|
|
|
|
fetch(postAddUrl || cartUrl, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
|
},
|
|
body: body.toString(),
|
|
credentials: 'same-origin'
|
|
})
|
|
.then(function () {
|
|
window.location.href = returnUrl || cartUrl;
|
|
})
|
|
.catch(function () {
|
|
window.location.href = returnUrl || cartUrl || '/';
|
|
});
|
|
});
|
|
});
|