Files
drmaterac.pl/modules/crosssellpro/views/js/cartCrossSell.js
2026-04-01 01:17:17 +02:00

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 || '/';
});
});
});