import React, { useEffect, useState } from "react"; import Button from "@mui/material/Button"; import TextField from "@mui/material/TextField"; import Dialog from "@mui/material/Dialog"; import DialogActions from "@mui/material/DialogActions"; import DialogContent from "@mui/material/DialogContent"; import DialogContentText from "@mui/material/DialogContentText"; import DialogTitle from "@mui/material/DialogTitle"; import Box from "@mui/material/Box"; import InputLabel from "@mui/material/InputLabel"; import MenuItem from "@mui/material/MenuItem"; import Select from "@mui/material/Select"; import CloseIcon from "@mui/icons-material/Close"; import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'; import FormStyles from "./Form.Styles"; import IconButton from "@mui/material/IconButton"; import Typography from "@mui/material/Typography"; import useForm from "../../../hooks/useForm"; import { formValidation } from "../_utility"; import SubmitButtonWithLoader from "../../../components/SubmitButtonWithLoader"; import { form_text_builder, API_SUCCESS_MESSAGE } from "../../../constants"; import { getItems } from '../../workorder/list/api'; import { getContacts } from '../../contacts/list/api'; const ItemForm = ({ item, mode, open, setOpen, apiCall, setApiStatus, }) => { const [isFormLoading, setIsFormLoading] = useState(false); const [workOrders, setWorkOrders] = useState([]); const [contacts, setContacts] = useState([]); const [isFormSubmit, setIsFormSubmit] = useState(false); const classes = FormStyles(); const { PRIMARY_TEXT, SECONDARY_TEXT, BUTTON_TEXT } = form_text_builder(mode); const { values, errors, handleChangeKV, handleSubmit, setValues } = useForm({ initialValues: item, onSubmit(values) { setIsFormLoading(true); apiCall(values) .then((response) => { setApiStatus({ status: 'success', message: API_SUCCESS_MESSAGE, show: true, }); handleClose(); }) .catch((e) => { setApiStatus({ status: "failed", message: e.message, show: true, }); handleClose(); }); }, validate: (formValues) => { if (isFormSubmit) setIsFormSubmit(false); return formValidation(formValues); }, }); const handleClose = () => { setOpen({ open: false }); }; const handlelineItemIncrements = () => { setValues((values) => ({ ...values, ...{lineitems:[...values.lineitems||[], {descriptions:'', lineitem:0}]}, })); }; useEffect(() => { getItems().then((response) => { handleSuccess(response, setWorkOrders) }); getContacts().then((response) => { handleSuccess(response, setContacts) }); }, []); function handleSuccess(response, cb) { cb(response || []); } return (
{values && ( Quote {PRIMARY_TEXT} { const { value } = event.target; handleChangeKV("projectName", value); }} error={!!errors.projectName} helperText={errors.projectName} />
Date* { const { value } = event.target; handleChangeKV("date", value); }} error={!!errors.LastName} helperText={errors.LastName} />
POC*
Personal For*
PO # : { const { value } = event.target; handleChangeKV("po", value); }} error={!!errors.po} helperText={errors.po} />
TT # { const { value } = event.target; handleChangeKV("tt", value); }} error={!!errors.tt} helperText={errors.tt} />
Site Name { const { value } = event.target; handleChangeKV("siteName", value); }} error={!!errors.siteName} helperText={errors.siteName} />
Site Id { const { value } = event.target; handleChangeKV("siteId", value); }} error={!!errors.siteId} helperText={errors.siteId} />
List Items {values?.lineitems?.map((li,i) => { return (
Description { const { value } = event.target; li.descriptions = value; setValues((oldValues) => ({ ...oldValues, ...values, })); }} error={!!errors.descriptions} helperText={errors.descriptions} />
Amount { const { value } = event.target; li.lineitem = value; setValues((oldValues) => ({ ...oldValues, ...values, })); }} error={!!errors.lineitem} helperText={errors.lineitem} />
) })}
)}
); }; export default ItemForm;