/* * OpenBills - Self hosted browser app to generate and keep track of simple invoices * Version - 0 * Licensed under the MIT license - https://opensource.org/licenses/MIT * * Copyright (c) 2021 Vidhu Kant Sharma */ // TODO: Code isn't tested properly // I'd be surprised if it < 10 bugs import React, { useState, Dispatch, SetStateAction } from "react"; import "./../Form.scss"; import { NewItem } from "./../../../interfaces" import axios from "axios"; interface props { defGSTValue: number setVisibility: Dispatch> // this component's visibility updateItemsList: () => Promise } const RegisterItemForm: React.FC = (props) => { const [newItemName, setNewItemName] = useState(""); const [newItemDesc, setNewItemDesc] = useState(""); const [newItemPrice, setNewItemPrice] = useState(0.00); const [newItemHSN, setNewItemHSN] = useState(""); const [newItemGST, setNewItemGST] = useState(props.defGSTValue); const [newItemBrand, setNewItemBrand] = useState(""); const [newItemCategory, setNewItemCategory] = useState(""); const hideSelf = () => props.setVisibility(false); const closeOnBGClicked = (event: any) => event.target.className === "floatingMenuBG" && hideSelf(); const postForm = (event: any) => { event.preventDefault(); const newItem: NewItem = { Model: newItemName, Description: newItemDesc, UnitPrice: newItemPrice, HSN: newItemHSN, TotalGST: newItemGST, Brand: newItemBrand, Category: newItemCategory } // TODO: show confirmation before being invisible // TODO: Implement override protection axios.post("/api/items/register", newItem) .then((res) => { console.log(res); hideSelf(); props.updateItemsList(); }) .catch((err) => { console.log(err); alert("Something went wrong, please check the log by opening the console.") }); } return (
hideSelf()} />
); } export default RegisterItemForm;