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, isAvailable, }) => { 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 (
x
{itemQty}
> )} {!forInvoice && ( )} {!forInvoice && (itemQty != 0 ? ({itemQty}
) : ( )}Rp {itemQty * itemPrice}
)}