Viewing File: /home/ubuntu/misabloom-frontend-base/src/components/Cart/CartItem.jsx
import React from 'react';
import {
deleteCartDetailsStart,
saveCartDetailsStart,
} from "../store/actions/CartsAction";
import { Image, Button } from 'react-bootstrap';
import { Link } from 'react-router-dom';
import NumericInput from "react-numeric-input";
import { connect } from 'react-redux';
import { withTranslation, useTranslation } from "react-multi-lang";
import CustomLazyLoad from '../Helper/CustomLazyLoad';
import { saveWishlistsStart } from '../store/actions/ProductAction';
const CartItem = (props) => {
const t = useTranslation();
const { cart } = props;
const updateCartQty = (productId, qty) => {
props.dispatch(saveCartDetailsStart({
product_id: productId,
quantity: qty,
}));
}
const removeUserCart = (productId) => {
props.dispatch(deleteCartDetailsStart({ product_id: productId }));
}
const wishListToggle = productUniqueId => {
props.dispatch(saveWishlistsStart({
product_unique_id: productUniqueId
}));
}
return (
<div className="cart-list-card">
<div className="cart-list-left-sec">
<Link to={`/product/${cart.product.product_unique_id}`}>
<div className="cart-list-img-sec">
{/* <Image
className="cart-list-img"
src={cart.product.file}
/> */}
<CustomLazyLoad
src={cart.product.file}
placeholderSrc={window.location.origin + "/images/loading.svg"}
classes="cart-list-img"
/>
</div>
</Link>
<div className="cart-list-info">
<Link
to={`/product/${cart.product.product_unique_id}`}
className="text-decoration-none">
<h4>{cart.product.name}</h4>
</Link>
<p>
{t("category")} <span>{cart.product.category_name}</span>
</p>
<p>
{t("vol")} <span>{cart.product.gross_weight_formatted}</span>
</p>
{cart.product.stock_status === 1
? <p>
{t("qty")}
<span>
<NumericInput
mobile
className="form-control"
value={cart.quantity}
onChange={val => updateCartQty(cart.product.product_id, val)}
min={1}
max={cart.product.quantity}
strict={true}
/>
</span>
</p>
: <p className="text-danger">{cart.product.stock_availablity_formatted}</p>
}
</div>
</div>
<div className="cart-list-right-sec">
<div className="cart-list-amout-card">
<div className="cart-amount-info">
<h4>{cart.product.selling_price_formatted}</h4>
{cart.product.discount_tag
? <p>
{cart.product.discount_tag} | <del>{cart.product.original_price_formatted}</del>
</p>
: null
}
</div>
<div className="cart-action-btn-sec">
<Button
className="cart-remove-btn"
onClick={() => removeUserCart(cart.product.product_id)}
>{t("remove")}</Button>
<Button
className="wishlist-btn"
onClick={() => wishListToggle(cart.product.product_unique_id)}
disabled={props.wishlistSave.buttonDisable &&
props.wishlistSave.data.product_unique_id === cart.product.product_unique_id}
>
{props.wishlistSave.loadingButtonContent &&
props.wishlistSave.data.product_unique_id === cart.product.product_unique_id
? props.wishlistSave.loadingButtonContent
: cart.product.is_wishlisted === 1 ? t("remove_from_wishlist") : t("add_to_wishlist")
}
</Button>
</div>
</div>
</div>
</div>
);
}
const mapStateToPros = (state) => ({
cartList: state.carts.cartList,
wishlistSave: state.product.wishlistSave
});
function mapDispatchToProps(dispatch) {
return { dispatch };
}
export default connect(
mapStateToPros,
mapDispatchToProps
)(withTranslation(CartItem));
Back to Directory
File Manager