update
This commit is contained in:
98
modules/crosssellpro/views/js/cartCrossSell.js
Normal file
98
modules/crosssellpro/views/js/cartCrossSell.js
Normal file
@@ -0,0 +1,98 @@
|
||||
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 || '/';
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user