From f45dee703450c42521884f8e0da8ae49f652b8c6 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 16 Dec 2022 11:22:45 +0700 Subject: item cart delete confirmation --- src/pages/shop/brands.js | 2 +- src/pages/shop/cart.js | 53 ++++++++++++++++++++++++++++++++-------- src/pages/shop/product/[slug].js | 4 ++- 3 files changed, 47 insertions(+), 12 deletions(-) (limited to 'src/pages/shop') diff --git a/src/pages/shop/brands.js b/src/pages/shop/brands.js index 6c1f1816..af9ab59c 100644 --- a/src/pages/shop/brands.js +++ b/src/pages/shop/brands.js @@ -47,7 +47,7 @@ export default function Brands({ initialManufactures }) {

Semua Brand di Indoteknik

{alphabets.map((alphabet, index) => ( - ))} diff --git a/src/pages/shop/cart.js b/src/pages/shop/cart.js index 06ac94b4..0baaccd1 100644 --- a/src/pages/shop/cart.js +++ b/src/pages/shop/cart.js @@ -10,15 +10,21 @@ import TrashIcon from "../../icons/trash.svg"; import { LazyLoadImage } from "react-lazy-load-image-component"; import apiOdoo from "../../helpers/apiOdoo"; import currencyFormat from "../../helpers/currencyFormat"; +import { createSlug } from "../../helpers/slug"; +import ConfirmAlert from "../../components/ConfirmAlert"; +import { toast } from "react-hot-toast"; import 'react-lazy-load-image-component/src/effects/blur.css'; -import { createSlug } from "../../helpers/slug"; export default function Cart() { const [products, setProducts] = useState([]); const [totalPriceBeforeTax, setTotalPriceBeforeTax] = useState(0); const [totalTaxAmount, setTotalTaxAmount] = useState(0); const [totalDiscountAmount, setTotalDiscountAmount] = useState(0); + const [deleteConfirmation, setDeleteConfirmation] = useState({ + productId: null, + show: false + }); const getProducts = async () => { let cart = getCart(); @@ -91,12 +97,29 @@ export default function Cart() { updateCart(productId, quantity); } - const deleteItem = (productId) => { + const showDeleteConfirmation = (productId) => { + setDeleteConfirmation({ + productId: productId, + show: true + }); + } + + const hideDeleteConfirmation = () => { + setDeleteConfirmation({ + productId: null, + show: false + }); + } + + const deleteItem = () => { + const productId = deleteConfirmation.productId; let productIndexToUpdate = products.findIndex((product) => product.id == productId); let productsToUpdate = products; productsToUpdate.splice(productIndexToUpdate, 1); setProducts([...productsToUpdate]); deleteItemCart(productId); + hideDeleteConfirmation(); + toast.success('Berhasil menghapus 1 item dari keranjang', { duration: 1500 }); } const toggleProductToProcess = (productId) => { @@ -108,8 +131,15 @@ export default function Cart() { return ( <> +
+ {/* jsx-start: Progress Bar */}
@@ -154,9 +184,12 @@ export default function Cart() {
- {product.parent.name} {product.attributes.length > 0 ? `- ${product.attributes.join(', ')}` : ''} + {product.parent.name} -

{product.code ? product.code : '-'}

+

+ {product.code || '-'} + {product.attributes.length > 0 ? ` | ${product.attributes.join(', ')}` : ''} +

{currencyFormat(product.price.price_discount)}

{product.price.discount_percentage > 0 ? ( @@ -169,15 +202,15 @@ export default function Cart() {

{currencyFormat(product.quantity * product.price.price_discount)}

-
+
@@ -207,7 +240,7 @@ export default function Cart() {

Ringkasan Pesanan

{getProductsToProcess().length > 0 ? ( -

{getProductsToProcess().length} Barang

+

{getProductsToProcess().length} Barang

) : ''}

diff --git a/src/pages/shop/product/[slug].js b/src/pages/shop/product/[slug].js index 9bb76fb6..de52eb72 100644 --- a/src/pages/shop/product/[slug].js +++ b/src/pages/shop/product/[slug].js @@ -10,6 +10,7 @@ import "react-lazy-load-image-component/src/effects/blur.css"; import ProductSlider from "../../../components/product/ProductSlider"; import Layout from "../../../components/Layout"; import { createOrUpdateItemCart } from "../../../helpers/cart"; +import toast from "react-hot-toast"; export async function getServerSideProps( context ) { const { slug } = context.query; @@ -83,6 +84,7 @@ export default function ProductDetail({ product }) { let addItemToCart = () => { if (quantity > 0) { + toast.success('Berhasil menambahkan ke keranjang', { duration: 1500 }); createOrUpdateItemCart(activeVariant.id, parseInt(quantity)); } return true; @@ -143,7 +145,7 @@ export default function ProductDetail({ product }) { -- cgit v1.2.3