Conditional validation patterns

Using spread

const formSchema = computed(() => {
    let schema = {
        name: yup.string().required().label("Name"),
        email: yup.string(),
        quantity: yup.number().required().moreThan(0).lessThan(11).label("Quantity"),
        productId: yup.number().required().label("Product"),
        shipMethod: yup.string().required().label("Shipping Method"),
    };

    // example of turning off validation for a field hidden by an external variable
    // .when() can alternately be used to conditionally validate based on form values
    if (!hideEmail) {
        schema = {
            ...schema,
            email: yup.string().label("Email").email().required(),
        };
    }

    return yup.object(schema);
});

Using ternaries

const formSchema = computed(() => {
    let schema = {
        name: yup.string().required().label("Name"),
        email: hideEmail ? yup.string() : yup.string().label("Email").email().required(),
        quantity: yup.number().required().moreThan(0).lessThan(11).label("Quantity"),
        productId: yup.number().required().label("Product"),
        shipMethod: yup.string().required().label("Shipping Method"),
    };

    return yup.object(schema);
});