import React, { useState, useRef, useEffect } from "react"; import styles from "./Item.module.css"; const Item = ({ blank, forCart, forInvoice, portrait, hideDetails, 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, itemDescription, promoPrice); }; const handleUpdate = () => { handleUpdateItem(itemName, itemPrice, selectedImage, itemDescription, promoPrice); }; const handleRemoveClick = () => { onRemoveClick(id); }; const handleImageClick = () => { fileInputRef.current.click(); }; const handleFileChange = (event) => { const file = event.target.files[0]; if (file) { setSelectedImage(file); } }; const formatCurrency = (value) => { const num = Number(value) || 0; return num.toLocaleString('id-ID'); }; 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); }; const toTitleCase = (str) => { if (!str) return str; return String(str) .toLowerCase() .replace(/(^|[\s\-/'])([a-zA-Z\u00C0-\u024F])/g, (m, p1, p2) => p1 + p2.toUpperCase()); }; const displayName = toTitleCase(itemName); return (
x
{itemQty}
Rp {formatCurrency(itemQty * (promoPrice > 0 ? promoPrice : itemPrice))}