import Button from "@material-ui/core/Button" import { makeStyles } from "@material-ui/core/styles" import { FormikContextType, useFormik } from "formik" import React from "react" import * as Yup from "yup" import { DropdownItem, FormDropdownField, FormTextField, FormTitle, FormSection, FormCloseButton, } from "../components/Form" import { LoadingButton } from "../components/Button" import { Organization, Project, Provisioner, CreateProjectRequest } from "./../api" export interface CreateProjectFormProps { provisioners: Provisioner[] organizations: Organization[] onSubmit: (request: CreateProjectRequest) => Promise onCancel: () => void } const validationSchema = Yup.object({ provisioner: Yup.string().required("Provisioner is required."), organizationId: Yup.string().required("Organization is required."), name: Yup.string().required("Name is required"), }) export const CreateProjectForm: React.FC = ({ provisioners, organizations, onSubmit, onCancel, }) => { const styles = useStyles() const form: FormikContextType = useFormik({ initialValues: { provisioner: provisioners[0].id, organizationId: organizations[0].name, name: "", }, enableReinitialize: true, validationSchema: validationSchema, onSubmit: (req) => { return onSubmit(req) }, }) const organizationDropDownItems: DropdownItem[] = organizations.map((org) => { return { value: org.name, name: org.name, } }) const provisionerDropDownItems: DropdownItem[] = provisioners.map((provisioner) => { return { value: provisioner.id, name: provisioner.name, } }) return (
Submit
) } const useStyles = makeStyles(() => ({ root: { maxWidth: "1380px", width: "100%", display: "flex", flexDirection: "column", alignItems: "center", }, footer: { display: "flex", flex: "0", flexDirection: "row", justifyContent: "center", alignItems: "center", }, button: { margin: "1em", }, }))