import React, { useState, useEffect, useRef } from "react"; import styles from "./Modal.module.css"; import { getImageUrl } from "../helpers/itemHelper.js"; const ItemConfig = ({ name: initialName, description: initialDescription, price: initialPrice, promoPrice: initialPromoPrice, imageUrl, imageFile, isBeingEdit, cancelEdit, handleCreateItem, handleUpdateItem }) => { const [selectedImage, setSelectedImage] = useState(); const [previewUrl, setPreviewUrl] = useState(imageUrl); const [itemName, setItemName] = useState(initialName); const [itemPrice, setItemPrice] = useState(initialPrice); const [itemPromoPrice, setItemPromoPrice] = useState(initialPromoPrice); const [itemDescription, setItemDescription] = useState(initialDescription); const fileInputRef = useRef(null); const textareaRef = useRef(null); useEffect(() => { // Prevent scrolling when modal is open document.body.style.overflow = "hidden"; if(selectedImage){ const reader = new FileReader(); reader.onloadend = () => { setPreviewUrl(reader.result); }; reader.readAsDataURL(selectedImage); } else if (imageFile) { setPreviewUrl(imageFile); } else { setPreviewUrl(imageUrl); } }, [selectedImage, imageFile, imageUrl]); const handleOverlayClick = (event) => { // Prevent scrolling when modal is open document.body.style.overflow = "auto"; cancelEdit(); }; const handleContentClick = (event) => { // Prevent click event from propagating to the overlay event.stopPropagation(); }; const handleChangeImage = () => { fileInputRef.current.click(); }; const handleFileChange = (event) => { const file = event.target.files[0]; if (file) { setSelectedImage(file); } }; useEffect(() => { const textarea = textareaRef.current; if (textarea) { const handleResize = () => { textarea.style.height = "auto"; textarea.style.height = `${textarea.scrollHeight}px`; }; handleResize(); // Initial resize textarea.addEventListener("input", handleResize); return () => textarea.removeEventListener("input", handleResize); } }, [textareaRef.current]); const handleCreate = () => { console.log(itemPromoPrice) handleCreateItem(itemName, itemPrice, selectedImage, previewUrl, itemDescription, itemPromoPrice); }; const handleUpdate = () => { console.log(itemName, itemPrice, selectedImage, itemDescription, itemPromoPrice) handleUpdateItem(itemName, itemPrice, selectedImage, itemDescription, itemPromoPrice); }; return (
Nama item
setItemName(e.target.value)} onFocus={(e) => e.target.style.borderColor = '#60d37e'} onBlur={(e) => e.target.style.borderColor = '#ccc'} />Harga
setItemPrice(e.target.value)} onFocus={(e) => e.target.style.borderColor = '#60d37e'} onBlur={(e) => e.target.style.borderColor = '#ccc'} />Harga promo
setItemPromoPrice(e.target.value)} onFocus={(e) => e.target.style.borderColor = '#60d37e'} onBlur={(e) => e.target.style.borderColor = '#ccc'} />Deskripsi