const btnCart = document.querySelector('#cart-icon');
const cart = document.querySelector('.cart');
const btnClose = document.querySelector('#cart-close');
btnCart.addEventListener('click', () => {
cart.classList.add('cart-active');
});
btnClose.addEventListener('click', () => {
cart.classList.remove('cart-active');
});
document.addEventListener('DOMContentLoaded', () => {
loadContent();
loadFood();
});
function loadFood() {
// Any initialization related to food items can be placed here
}
function loadContent() {
// Retrieve item list from localStorage
itemList = JSON.parse(localStorage.getItem('cartItems')) || [];
// Remove Food Items From Cart
let btnRemove = document.querySelectorAll('.cart-remove');
btnRemove.forEach((btn) => {
btn.addEventListener('click', removeItem);
});
// Product Item Change Event
let qtyElements = document.querySelectorAll('.cart-quantity');
qtyElements.forEach((input) => {
input.addEventListener('change', changeQty);
});
// Product Cart
let cartBtns = document.querySelectorAll('.add-cart');
cartBtns.forEach((btn) => {
btn.addEventListener('click', addCart);
});
// Update cart UI and total
updateCartUI();
}
function removeItem() {
if (confirm('Are You Sure to Remove')) {
let title = this.parentElement.querySelector('.cart-food-title').innerHTML;
itemList = itemList.filter((el) => el.title !== title);
localStorage.setItem('cartItems', JSON.stringify(itemList)); // Update localStorage
this.parentElement.remove();
updateCartUI();
}
}
function changeQty() {
if (isNaN(this.value) || this.value < 1) {
this.value = 1;
}
let title = this.parentElement.querySelector('.cart-food-title').innerHTML;
itemList = itemList.map((item) => {
if (item.title === title) {
item.quantity = parseInt(this.value); // Update quantity
}
return item;
});
localStorage.setItem('cartItems', JSON.stringify(itemList)); // Update localStorage
updateCartUI();
}
function addCart() {
let food = this.parentElement;
let title = food.querySelector('.food-title').innerHTML;
let price = food.querySelector('.food-price').innerHTML;
let imgSrc = food.querySelector('.food-img').src;
let newProduct = { title, price, imgSrc, quantity: 1 };
// Check if product already exists in cart
let existingItem = itemList.find((el) => el.title === newProduct.title);
if (existingItem) {
alert('Product Already added in Cart');
return;
}
itemList.push(newProduct);
localStorage.setItem('cartItems', JSON.stringify(itemList)); // Save to localStorage
let newProductElement = createCartProduct(title, price, imgSrc);
let element = document.createElement('div');
element.innerHTML = newProductElement;
let cartBasket = document.querySelector('.cart-content');
cartBasket.append(element);
updateCartUI();
}
function createCartProduct(title, price, imgSrc) {
return `
<div class="cart-box">
<img src="${imgSrc}" class="cart-img">
<div class="detail-box">
<div class="cart-food-title">${title}</div>
<div class="price-box">
<div class="cart-price">${price}</div>
<div class="cart-amt">${price}</div>
</div>
<input type="number" value="1" class="cart-quantity">
</div>
<ion-icon name="trash" class="cart-remove"></ion-icon>
</div>
`;
}
function updateCartUI() {
const cartItems = document.querySelectorAll('.cart-box');
const totalValue = document.querySelector('.total-price');
let total = 0;
cartItems.forEach(product => {
let priceElement = product.querySelector('.cart-price');
let price = parseFloat(priceElement.innerHTML.replace("Rs.", ""));
let qty = product.querySelector('.cart-quantity').value;
total += (price * qty);
product.querySelector('.cart-amt').innerText = "Rs." + (price * qty);
});
totalValue.innerHTML = 'Rs.' + total.toFixed(2);
// Update Product Count in Cart Icon
const cartCount = document.querySelector('.cart-count');
let count = itemList.length;
cartCount.innerHTML = count;
if (count === 0) {
cartCount.style.display = 'none';
} else {
cartCount.style.display = 'block';
}
}
Comments
Post a Comment