import { useCallback, useMemo, useState } from "react"; import { Formik } from "formik"; import { XIcon } from "@heroicons/react/outline"; import General from "./General"; import Data from "./Data"; import { CallbackFunction, IEditServiceForm } from "../../../types"; import { getFinalValues, getInitialValues, tabs, validationSchema } from "./form-utils"; import Build from "./Build"; import { styled } from "@mui/joy"; import Environment from "./Environment"; import Deploy from "./Deploy"; import { classNames } from "../../../utils/styles"; import { toaster } from "../../../utils"; import { reportErrorsAndSubmit } from "../../../utils/forms"; interface IModalServiceProps { onHide: CallbackFunction; onAddEndpoint: CallbackFunction; } const FormContainer = styled("div")` display: flex; flex-direction: column; justify-content: space-between; `; const TabBody = styled("div")` overflow: auto; ::-webkit-scrollbar { width: 4px; } /* Track */ ::-webkit-scrollbar-track { background: #f1f1f1; } /* Handle */ ::-webkit-scrollbar-thumb { background: #888; } /* Handle on hover */ ::-webkit-scrollbar-thumb:hover { background: #555; } `; const ModalServiceCreate = (props: IModalServiceProps) => { const { onHide, onAddEndpoint } = props; const [openTab, setOpenTab] = useState("General"); const handleCreate = useCallback( (values: IEditServiceForm, formik: any) => { const result = getFinalValues(values); onAddEndpoint(result); formik.resetForm(); onHide(); toaster( `Created "${values.serviceName}" service successfully`, "success" ); }, [onAddEndpoint, onHide] ); const initialValues = useMemo(() => getInitialValues(), []); return (