Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 3x 3x 3x 3x 6x 3x 6x 6x 6x 6x | import { FormField, LanguageService } from '@bigcommerce/checkout-sdk';
import { memoize } from '@bigcommerce/memoize';
import { object, string, ObjectSchema } from 'yup';
import { getCustomFormFieldsValidationSchema, CustomFormFieldValues, TranslateValidationErrorFunction } from '../formFields';
import getEmailValidationSchema from './getEmailValidationSchema';
import { PasswordRequirements } from './getPasswordRequirements';
export type CreateAccountFormValues = {
firstName: string;
lastName: string;
email: string;
password: string;
acceptsMarketingEmails?: string[];
token?: string;
} & CustomFormFieldValues;
export interface CreateCustomerValidationSchema {
formFields: FormField[];
language: LanguageService;
passwordRequirements: PasswordRequirements;
}
function getTranslateCreateCustomerError(language?: LanguageService): TranslateValidationErrorFunction {
return (type, { label, min, max }) => {
if (!language) {
return;
}
if (type === 'required') {
return language.translate('customer.required_error', { label });
}
if (type === 'max' && max) {
return language.translate('customer.max_error', { label, max });
}
if (type === 'min' && min) {
return language.translate('customer.min_error', { label, min });
}
if (type === 'invalid') {
return language.translate('customer.invalid_characters_error', { label });
}
return;
};
}
export default memoize(function getCreateCustomerValidationSchema({
formFields,
language,
passwordRequirements: { description, numeric, alpha, minLength },
}: CreateCustomerValidationSchema): ObjectSchema<CreateAccountFormValues> {
return object({
firstName: string().required(language.translate('address.first_name_required_error')),
lastName: string().required(language.translate('address.last_name_required_error')),
password: string()
.required(description || language.translate('customer.password_required_error'))
.matches(numeric, description || language.translate('customer.password_number_required_error'))
.matches(alpha, description || language.translate('customer.password_letter_required_error'))
.min(minLength, description || language.translate('customer.password_under_minimum_length_error'))
.max(100, language.translate('customer.password_over_maximum_length_error')),
})
.concat(getEmailValidationSchema({ language }))
.concat(getCustomFormFieldsValidationSchema({
formFields,
translate: getTranslateCreateCustomerError(language),
}));
});
|