Skip to main content

Email

This example demonstrates a Formik email input field with validation. The Email field is used to capture a valid email address from the user. It ensures that the entered value follows the standard email format and is not left empty.

This example uses the FormikFormBuilder to render an email input field for collecting a user’s email address. The field is validated using Yup and defined in the emailField config variable. Check Validation Rules for more detail.

Live Demo

Code Editor


import { Box, Button } from "@mui/joy";
import { Formik, Form, Field, ErrorMessage } from "formik";
import * as Yup from "yup";

function Email() {
  const emailField: FieldType[] = [
{
  field: "email",
  type: InputTypes.TEXT,
  label: "Email",
  validation: {
required: true,
message: "Email is required",
email: true, 
pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
patternRuleMsg: "Enter a valid email",
},
  helperText: "Please enter a valid email address",
  muiProps: {
    variant: "outlined",
    fullWidth: false,
    sx: { width: "300px" },
  },
  gridProps: { xs: 12  },
},
]

const { initailValues, yupSchemaValidation } = useFormBuilder(emailField);

return (
  <Formik
    initialValues={initailValues}
    validationSchema={yupSchemaValidation}
    onSubmit={(values, actions) => {
      console.log(values);
      alert(JSON.stringify(values, null, 2));
      actions.setSubmitting(false);
    }}
  >
    {({ values }) => (
      <Form>
        <FormBuilder
          group="form"
          values={values}
          data-test="form"
          fields={emailField}
        />
        <Box
          width="100%"
          display="flex"
          justifyContent="center"
          alignItems="center"
          mt={2}
        >
          <Button variant="solid" type="submit">
            Continue
          </Button>
        </Box>
      </Form>
    )}
  </Formik>
);
};

export default Email;