From 5d2222d9fa782b94ba6787e5c6b23aab1e468308 Mon Sep 17 00:00:00 2001 From: MikunoNaka Date: Thu, 24 Jun 2021 20:00:10 +0530 Subject: Multiple minor bug fixes and convert more compnents to TS --- src/components/Form/Items/RegisterItemForm.tsx | 125 +++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/components/Form/Items/RegisterItemForm.tsx (limited to 'src/components/Form/Items/RegisterItemForm.tsx') diff --git a/src/components/Form/Items/RegisterItemForm.tsx b/src/components/Form/Items/RegisterItemForm.tsx new file mode 100644 index 0000000..dc48d3c --- /dev/null +++ b/src/components/Form/Items/RegisterItemForm.tsx @@ -0,0 +1,125 @@ +/* + * 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 + +// TODO: Implement override protection + +import React, { useState } from "react"; +import axios from "axios"; +import "./../Form.scss"; + +interface props { + defGSTValue: number + setVisibility: any // this component's visibility + updateItemsList: () => Promise +} + +const RegisterItemForm: React.FC = (props) => { + const [newItemNameValue, setNewItemNameValue] = useState(""); + const [newItemDescValue, setNewItemDescValue] = useState(""); + const [newItemPriceValue, setNewItemPriceValue] = useState(0.00); + const [newItemHSNValue, setNewItemHSNValue] = useState(); + const [newItemGSTValue, setNewItemGSTValue] = useState(props.defGSTValue); + // const [newItemBrandValue, setNewItemBrandValue] = useState(""); + // const [newItemTypeValue, setNewItemTypeValue] = useState(""); + + const hideSelf = () => props.setVisibility(false); + + const closeOnBGClicked = (event: any) => + event.target.className === "floatingMenuBG" && hideSelf(); + + const postForm = (event: any) => { + event.preventDefault(); + // TODO: show confirmation before being invisible + axios.post( + `/api/items/register/` + + `?model=${newItemNameValue}` + + `&desc=${newItemDescValue}` + + `&price=${newItemPriceValue}` + + `&hsn=${newItemHSNValue}` + + `&gst=${newItemGSTValue}` + ) + .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; -- cgit v1.2.3