document.addEventListener('DOMContentLoaded', function () {
let cartBlock = document.querySelector('main');
// Создаем наблюдатель
const observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation.type === 'childList') {
updateCart(cartBlock)
}
});
});
observer.observe(cartBlock, {
childList: true // Отслеживать изменения дочерних элементов
});
updateCart(cartBlock)
});
function updateCart(cartBlock){
const cartProducts = document.querySelectorAll('.number-input-cart');
cartProducts.forEach(product => {
let btnMinus = product.querySelector('.minus');
let btnPlus = product.querySelector('.plus');
let inputCartProducts = product.querySelector('input');
btnPlus.addEventListener('click', function () {
let value = parseInt(inputCartProducts.value);
inputCartProducts.value = value + 1;
quantityRefresh(cartBlock);
});
btnMinus.addEventListener('click', function () {
let value = parseInt(inputCartProducts.value);
if (value > 1) {
inputCartProducts.value = value - 1;
quantityRefresh(cartBlock)
}
});
});
function quantityRefresh(cartBlock) {
let data = new FormData();
let productQuantities = [];
cartProducts.forEach(product => {
productQuantities.push(product.querySelector('input').value)
})
for (let key in productQuantities) {
if (!productQuantities.hasOwnProperty(key)) continue;
let value = productQuantities[key];
data.append('quantity[' + key + ']', value);
}
Joomla.request({
url: '/?option=com_jshopping&controller=cart&task=refresh&ajax=1',
method: 'POST',
data: data,
onSuccess: (response, xhr) => {
if (response !== '') {
updateCartDisplay(cartBlock); // Обновляем отображение корзины
}
}
});
}
// Функция для обновления отображения корзины
function updateCartDisplay(cartBlock) {
fetch('/?option=com_jshopping&controller=cart&task=view&ajax=1')
.then(response => response.text())
.then(data => {
//let cartBlock = document.querySelector('main');
if (cartBlock) {
cartBlock.innerHTML = data;
}
})
.catch(error => {
console.error('Ошибка:', error);
});
}
}