import React, { useState } from "react"; import "./Form.css"; const AddNewItemForm = (props) => { const [itemNameValue, setItemNameValue] = useState(""); const [itemDescValue, setItemDescValue] = useState(""); const [itemPriceValue, setItemPriceValue] = useState(0.00); const [itemDiscountValue, setItemDiscountValue] = useState(0.00); const [itemGSTValue, setItemGSTValue] = useState(props.defGSTValue); const [itemQtyValue, setItemQtyValue] = useState(1); const enterItemNamePrompt = "Start typing here"; const registerItemPrompt = "add new"; const emptyItemNames = [enterItemNamePrompt, registerItemPrompt, ""]; // Extract the model names from savedItems const savedItems = props.savedItems; let savedItemNames = []; for (let i = 0; i < savedItems.length; i++) { savedItemNames.push(savedItems[i].Model); } // set description and price // when item is entered const setItemInfo = (itemName) => { for (let i = 0; i <= props.savedItems.length - 1; i++) { const mod = props.savedItems[i].Model.toLowerCase(); const desc = props.savedItems[i].Description; const price = props.savedItems[i].Price; if (mod === itemName) { setItemDescValue(desc); setItemPriceValue(price); break; } } } const resetAllValues = () => { setItemNameValue(""); setItemDescValue(""); setItemQtyValue(0); setItemPriceValue(0); setItemDiscountValue(0); setItemGSTValue(props.defGSTValue); } return ( <div className={"formContainer"}> <form className={"addNewItemForm"} onSubmit={ (event) => { event.preventDefault(); const newInvoiceItem = { "Model": itemNameValue, "Description": itemDescValue, "Quantity": parseInt(itemQtyValue), "Price": parseInt(itemPriceValue), "Discount": parseInt(itemDiscountValue), "GST": parseInt(itemGSTValue) }; props.addItem(newInvoiceItem); resetAllValues(); } }> <div className={"textInputs"}> <label> Item: <select value={itemNameValue} onChange={ (event) => { setItemNameValue(event.target.value); setItemInfo(event.target.value.toLowerCase()); } }> <option key={enterItemNamePrompt}>{enterItemNamePrompt}</option> {savedItemNames.map( (i) => { return <option key={i}>{i}</option> } )} <option key={registerItemPrompt}>{registerItemPrompt}</option> </select> </label> <label> Description:<input type="text" step="0.1" value={itemDescValue} onChange={ (event) => { setItemDescValue(event.target.value); } } /> </label> </div> <div className={"numericInputs"}> <label> Quantity: <input type="number" min="1" value={itemQtyValue} onInput={ (event) => { const value = event.target.value; setItemQtyValue(value); } } required /> </label> <label> Price: <input type="number" min="1" value={itemPriceValue} onChange={ (event) => { const value = event.target.value; setItemPriceValue(value); } } required /> </label> <label> Discount: <input type="number" min="0" value={itemDiscountValue} onChange={ (event) => { const value = event.target.value; setItemDiscountValue(value); } } /> </label> <label> GST: <input type="number" min="0" value={itemGSTValue} onChange={ (event) => { const value = event.target.value; setItemGSTValue(value); } } required /> </label> </div> <div className={"menuButtons"}> <input type="button" value="Placeholder1" /> <input type="button" value="Placeholder2" /> <input type="button" value="Placeholder3" /> <input type="submit" value="Placeholder4" /> <input type="submit" value="add" disabled={ (emptyItemNames.includes(itemNameValue) || itemQtyValue <= 0 || itemPriceValue <= 0 || itemGSTValue <= 0 ) ? "disabled" : "" } /> </div> </form> </div> ) } export default AddNewItemForm;