diff --git a/src/components/ItemConfig.js b/src/components/ItemConfig.js index da44dba..4e9ac51 100644 --- a/src/components/ItemConfig.js +++ b/src/components/ItemConfig.js @@ -2,14 +2,28 @@ import React, { useState, useEffect, useRef } from "react"; import styles from "./Modal.module.css"; import { getImageUrl } from "../helpers/itemHelper.js"; -const ItemConfig = ({ Item, cancelEdit }) => { - const [selectedImage, setSelectedImage] = useState(null); - const [previewUrl, setPreviewUrl] = useState(Item.image); +const ItemConfig = ({ + name: initialName, + description: initialDescription, + price: initialPrice, + promoPrice: initialPromoPrice, + imageUrl, + imageFile, + isBeingEdit, + cancelEdit, + handleCreateItem, + handleUpdateItem +}) => { + const [selectedImage, setSelectedImage] = useState(imageFile); + 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(() => { - console.log(Item.image) // Prevent scrolling when modal is open document.body.style.overflow = "hidden"; @@ -21,10 +35,9 @@ const ItemConfig = ({ Item, cancelEdit }) => { }; reader.readAsDataURL(selectedImage); } else { - setPreviewUrl(Item.image); + setPreviewUrl(imageUrl); } - }, [selectedImage, Item]); - + }, [selectedImage, imageUrl]); const handleOverlayClick = (event) => { // Prevent scrolling when modal is open @@ -32,19 +45,15 @@ const ItemConfig = ({ Item, cancelEdit }) => { cancelEdit(); }; - - // Function to handle clicks on the modal content 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) { @@ -52,13 +61,35 @@ const ItemConfig = ({ Item, cancelEdit }) => { } }; - return ( -
-
-
-
- + 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 = () => { + handleCreateItem(itemName, itemPrice, selectedImage, previewUrl); + }; + const handleUpdate = () => { + handleUpdateItem(itemName, itemPrice, selectedImage, previewUrl); + }; + + return ( +
+
+
+
+ { />
-
handleChangeImage()} style={{ width: '140px', height: '40px', alignContent: 'center', textAlign: 'center', borderRadius: '10px', border: '1px solid #60d37e', color: '#60d37e', backgroundColor: 'white' }}> - Ganti gambar +
handleChangeImage()} style={{ width: '140px', height: '40px', alignContent: 'center', textAlign: 'center', borderRadius: '10px', border: '1px solid #60d37e', color: '#60d37e', backgroundColor: 'white', display: 'flex', justifyContent: 'center', alignItems: 'center' }}> + {isBeingEdit ? 'Ganti gambar' : 'Tambah gambar'}
-
-

Nama item

- + +
+

Nama item

+ setItemName(e.target.value)} + onFocus={(e) => e.target.style.borderColor = '#60d37e'} + onBlur={(e) => e.target.style.borderColor = '#ccc'} + />
+
-
-

Harga

- -
-

Harga promo

- +
+

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

- +

Deskripsi

+ +