import React, { useState, useRef, useEffect } from "react"; import styles from "./Item.module.css"; const Item = ({ blank, forCart, forInvoice, name: initialName, price: initialPrice, qty: initialQty, imageUrl, id, onPlusClick, onNegativeClick, handleCreateItem, onRemoveClick, }) => { const [selectedImage, setSelectedImage] = useState(null); const [previewUrl, setPreviewUrl] = useState(imageUrl); const [itemQty, setItemQty] = useState(blank ? 0 : initialQty); const [itemName, setItemName] = useState(initialName); const [itemPrice, setItemPrice] = useState(initialPrice); const fileInputRef = useRef(null); useEffect(() => { if (selectedImage) { const reader = new FileReader(); reader.onloadend = () => { setPreviewUrl(reader.result); }; reader.readAsDataURL(selectedImage); } else { setPreviewUrl(imageUrl); } }, [selectedImage, 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, itemQty, selectedImage); }; 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} className={styles.itemImage} /> {blank && (
Click To Add Image
)}
)}
{forInvoice && ( <>

x

{itemQty}

)} {!forInvoice && ( )} {!forInvoice && (
{!blank &&

{itemQty}

} {blank && ( )}
)} {forInvoice && (

Rp {itemQty * itemPrice}

)}
{forCart && (
)} {blank && ( )}
); }; export default Item;