2025-08-08 11:53:47 +05:30

193 lines
8.2 KiB
JavaScript

import React, { Fragment, useState } from "react";
import Navbar2 from '../../components/Navbar2/Navbar2';
import PageTitle from "../../components/pagetitle/PageTitle";
import Scrollbar from "../../components/scrollbar/scrollbar";
import { Button, Grid } from "@mui/material";
import Link from "next/link";
import { connect } from "react-redux";
import { totalPrice } from "../../utils";
import {
removeFromCart,
incrementQuantity,
decrementQuantity,
} from "../../store/actions/action";
import Footer from "../../components/footer/Footer";
import { Tooltip } from 'react-tooltip'
import 'react-tooltip/dist/react-tooltip.css'
const CartPage = (props) => {
const ClickHandler = () => {
window.scrollTo(10, 0);
};
const SubmitHandler = (e) => {
e.preventDefault()
};
const { carts } = props;
const [delivery, deliveryCount] = useState(0);
return (
<Fragment>
<Navbar2 />
<PageTitle pageTitle={"Cart"} pagesub={"Cart"} />
<div className="cart-area section-padding">
<div className="container">
<div className="row">
<div className="col-12">
<div className="single-page-title">
<h2>Your Cart</h2>
<p>There are {carts.length} products in this list</p>
</div>
</div>
</div>
<div className="cart-wrapper">
<div className="row">
<div className="col-lg-8 col-12">
<form onSubmit={SubmitHandler}>
<div className="cart-item">
<table className="table-responsive cart-wrap">
<thead>
<tr>
<th className="images images-b">Product</th>
<th className="ptice">Price</th>
<th className="stock">Quantity</th>
<th className="ptice total">Subtotal</th>
<th className="remove remove-b">Remove</th>
</tr>
</thead>
<tbody>
{carts &&
carts.length > 0 &&
carts.map((catItem, crt) => (
<tr key={crt} className="wishlist-item">
<td className="product-item-wish">
<div className="check-box"><input type="checkbox"
className="myproject-checkbox" />
</div>
<div className="images">
<span>
<img src={catItem.proImg} alt="" />
</span>
</div>
<div className="product">
<ul>
<li className="first-cart">{catItem.title}</li>
<li>
<div className="rating-product">
<i className="fi flaticon-star"></i>
<i className="fi flaticon-star"></i>
<i className="fi flaticon-star"></i>
<i className="fi flaticon-star"></i>
<i className="fi flaticon-star"></i>
<span>{catItem.ratting}</span>
</div>
</li>
</ul>
</div>
</td>
<td className="ptice">${catItem.price}</td>
<td className="td-quantity">
<div className="quantity cart-plus-minus">
<Grid className="quantity cart-plus-minus">
<Button
className="dec qtybutton"
onClick={() =>
props.decrementQuantity(catItem.id)
}
>
-
</Button>
<input value={catItem.qty} type="text" />
<Button
className="inc qtybutton"
onClick={() =>
props.incrementQuantity(catItem.id)
}
>
+
</Button>
</Grid>
</div>
</td>
<td className="ptice">${catItem.qty * catItem.price}</td>
<td className="action">
<ul>
<li className="w-btn">
<button
data-tooltip-id="r-cart"
data-tooltip-content="Remove from Cart"
onClick={() =>
props.removeFromCart(catItem.id)
}><i className="fi ti-trash"></i></button>
<Tooltip id="r-cart" />
</li>
</ul>
</td>
</tr>
))}
</tbody>
</table>
</div>
<div className="cart-action">
<div className="apply-area">
<input type="text" className="form-control" placeholder="Enter your coupon" />
<button className="theme-btn" type="submit">Apply</button>
</div>
<button className="theme-btn" type="button"><i className="fi flaticon-refresh"></i> Update Cart</button>
</div>
</form>
</div>
<div className="col-lg-4 col-12">
<div className="cart-total-wrap">
<h3>Cart Totals</h3>
<div className="sub-total">
<h4>Subtotal</h4>
<span>${totalPrice(carts)}</span>
</div>
<div className="shipping-option">
<span>Shipping</span>
<ul>
<li className="free" checked onClick={() => deliveryCount(delivery - delivery)}>
<input id="Free" type="radio" name="color" value="30" />
<label htmlFor="Free">Free Shipping</label>
</li>
<li className="free" onClick={() => deliveryCount(delivery + 10)}>
<input id="Local" type="radio" name="color" value="30"/>
<label htmlFor="Local">Local Pickup: <span>$10.00</span></label>
</li>
<li className="free">
<span>
Shipping options will be updated during checkout.
</span>
</li>
</ul>
</div>
<div className="total">
<h4>Total</h4>
<span>${totalPrice(carts) + delivery}</span>
</div>
<Link className="theme-btn" onClick={ClickHandler} href="/checkout">Proceed To CheckOut</Link>
</div>
</div>
</div>
</div>
</div>
</div>
<Footer />
<Scrollbar />
</Fragment>
);
};
const mapStateToProps = (state) => {
return {
carts: state.cartList.cart,
};
};
export default connect(mapStateToProps, {
removeFromCart,
incrementQuantity,
decrementQuantity,
})(CartPage);