import React, { useState, useRef, useEffect } from "react"; import styles from "./Item.module.css"; const Item = ({ blank, forCart, forInvoice, name: initialName, description: initialDescription, price: initialPrice, promoPrice, qty: initialQty, imageUrl, imageFile, id, onPlusClick, onNegativeClick, handleCreateItem, handleUpdateItem, onRemoveClick, isAvailable, isBeingEdit, last }) => { const [selectedImage, setSelectedImage] = useState(imageFile); const [previewUrl, setPreviewUrl] = useState(imageUrl); const [itemQty, setItemQty] = useState(blank ? 0 : initialQty); const [itemName, setItemName] = useState(initialName); const [itemPrice, setItemPrice] = useState(initialPrice); const [itemDescription, setItemDescription] = useState(initialDescription); const fileInputRef = useRef(null); useEffect(() => { console.log(imageUrl); console.log(selectedImage); console.log(imageFile) if (imageFile) { setPreviewUrl(imageFile); } else { setPreviewUrl(imageUrl); } }, [imageFile, imageUrl]); const handlePlusClick = () => { if (!blank) onPlusClick(id); setItemQty(itemQty + 1); }; const handleNegativeClick = () => { if (itemQty > 0) { if (!blank) onNegativeClick(id); setItemQty(itemQty - 1); } }; const handleCreate = () => { handleCreateItem(itemName, itemPrice, selectedImage, previewUrl); }; const handleUpdate = () => { handleUpdateItem(itemName, itemPrice, selectedImage, previewUrl); }; const handleRemoveClick = () => { onRemoveClick(id); }; const handleImageClick = () => { fileInputRef.current.click(); }; const handleFileChange = (event) => { const file = event.target.files[0]; if (file) { setSelectedImage(file); } }; const handlePriceChange = (event) => { setItemPrice(event.target.value); }; const handleQtyChange = (event) => { const newQty = parseInt(event.target.value, 10); if (!isNaN(newQty)) { setItemQty(newQty); } }; const handleNameChange = (event) => { setItemName(event.target.value); }; return (
{!forInvoice && ( //
{ currentTarget.onerror = null; // prevents looping currentTarget.src = "https://png.pngtree.com/png-vector/20221125/ourmid/pngtree-no-image-available-icon-flatvector-illustration-pic-design-profile-vector-png-image_40966566.jpg"; }} alt={itemName} style={{ filter: !isAvailable ? "grayscale(100%)" : "none", }} className={styles.imageContainer} /> //
)}
{forInvoice && } {/* */}

{itemName}

{forInvoice && ( <>

x

{itemQty}

)} {!forInvoice && ( //
{promoPrice && promoPrice != 0 && promoPrice != '' ? <>
Promo {(((initialPrice - promoPrice) / initialPrice) * 100).toFixed(0)}%
{promoPrice} {initialPrice}
: <>
{initialPrice}
}
)} {!forInvoice && (!isBeingEdit && itemQty != 0 ? (
{!blank && !isBeingEdit ? (

{itemQty}

) : ( )}
) : !blank && !isBeingEdit ? (
) : (
))} {forInvoice && (

Rp {itemQty * (promoPrice > 0? promoPrice : itemPrice)}

)}
{forCart && (
)} {/* {blank && ( )} */}
{itemDescription && itemDescription != 'undefined' && itemDescription?.length &&

{itemDescription}

}
); }; export default Item;