89 lines
2.4 KiB
React
89 lines
2.4 KiB
React
|
|
|
|
'use client'
|
|
|
|
import { useContextElement } from "@/context/Context";
|
|
import React from "react";
|
|
|
|
const Quantity = ({data}) => {
|
|
|
|
const { cartProducts, setCartProducts , isAddedToCartProducts } = useContextElement();
|
|
|
|
const handleIncrease = () => {
|
|
const productQuantity = document.getElementById('productQuantity')
|
|
productQuantity.value = Number(productQuantity.value) + 1
|
|
if (isAddedToCartProducts(data.id) ) {
|
|
|
|
const cartItem = cartProducts.filter((elm)=>elm.id == data.id)[0]
|
|
const itemIndex = cartProducts.indexOf(cartItem)
|
|
const item = cartProducts[itemIndex];
|
|
|
|
item.quantity += 1;
|
|
const updated = [...cartProducts];
|
|
updated[itemIndex] = item;
|
|
|
|
|
|
setCartProducts(updated);
|
|
}
|
|
};
|
|
const handleQuantity = (e) => {
|
|
if (isAddedToCartProducts(data.id)) {
|
|
const cartItem = cartProducts.filter((elm)=>elm.id == data.id)[0]
|
|
const itemIndex = cartProducts.indexOf(cartItem)
|
|
const item = cartProducts[itemIndex];
|
|
item.quantity = Number(e.target.value);
|
|
const updated = [...cartProducts];
|
|
updated[itemIndex] = item;
|
|
|
|
setCartProducts(updated);
|
|
}
|
|
}
|
|
const handleDecrease = () => {
|
|
const productQuantity = document.getElementById('productQuantity')
|
|
productQuantity.value = Number(productQuantity.value) - 1
|
|
if (isAddedToCartProducts(data.id)) {
|
|
|
|
const cartItem = cartProducts.filter((elm)=>elm.id == data.id)[0]
|
|
|
|
|
|
const itemIndex = cartProducts.indexOf(cartItem)
|
|
const item = cartProducts[itemIndex];
|
|
|
|
if (item.quantity > 1) {
|
|
item.quantity -= 1;
|
|
const updated = [...cartProducts];
|
|
updated[itemIndex] = item;
|
|
|
|
|
|
setCartProducts(updated);
|
|
} }
|
|
};
|
|
return (
|
|
<div className="button-group">
|
|
<ul className="style-none d-flex align-items-center">
|
|
<li>
|
|
<button onClick={()=>handleDecrease()} className="value-decrease">-</button>
|
|
</li>
|
|
<li>
|
|
<input
|
|
type="number"
|
|
min="1"
|
|
|
|
defaultValue={cartProducts.filter((elm)=>elm.id == data.id)[0] ? cartProducts.filter((elm)=>elm.id == data.id)[0].quantity : "1"}
|
|
id="productQuantity"
|
|
|
|
|
|
onChange={handleQuantity}
|
|
className="product-value val"
|
|
/>
|
|
</li>
|
|
<li>
|
|
<button onClick={()=>handleIncrease()} className="value-increase">+ </button>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default Quantity;
|