/* * 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 */ import React, { useState } from "react"; import "./../Form.scss"; import { Person } from "./../../../interfaces" import axios from "axios"; interface props { setVisibility: any // this component's visibility updatePeopleList: any } const RegisterPersonForm: React.FC = (props) => { const [newPersonName, setNewPersonName] = useState(""); const [newPersonPhone, setNewPersonPhone] = useState(""); const [newPersonEmail, setNewPersonEmail] = useState(""); const [shipToBillAddress, setShipToBillAddress] = useState(true); const [newPersonBillAddressLine, setNewPersonBillAddressLine] = useState(""); const [newPersonBillCity, setNewPersonBillCity] = useState(""); const [newPersonBillState, setNewPersonBillState] = useState(""); const [newPersonBillPINCode, setNewPersonBillPINCode] = useState(""); const [newPersonBillCountry, setNewPersonBillCountry] = useState(""); const hideSelf = () => props.setVisibility(false); const closeOnBGClicked = (event: any) => event.target.className === "floatingMenuBG" && hideSelf(); const postForm = (event: any) => { event.preventDefault(); const newClient: Person = { Name: newPersonName, Phone: newPersonPhone, Email: newPersonEmail, BillAddress: { AddressLine: newPersonBillAddressLine, City: newPersonBillCity, State: newPersonBillState, PINCode: newPersonBillPINCode, Country: newPersonBillCountry }, // currently same as BillAddress ShipAddress: { AddressLine: newPersonBillAddressLine, City: newPersonBillCity, State: newPersonBillState, PINCode: newPersonBillPINCode, Country: newPersonBillCountry }, } // TODO: show confirmation before being invisible // TODO: Implement override protection axios.post("/api/people/register", newClient) .then((res) => { console.log(res); props.updatePeopleList(); hideSelf(); }) .catch((err) => { console.log(err); alert("Something went wrong, please check the log by opening the console.") }); } return (

Client Details

Billing Address

{shipToBillAddress || // TODO: Make it store different data // TODO: maybe move it to its own prop

Shipping Address

}
hideSelf()} />
); } export default RegisterPersonForm;