import {Field} from '@givewp/forms/types'; import {FieldProps} from '@givewp/forms/propTypes'; import {UseFormReturn} from 'react-hook-form'; import buildRegisterValidationOptions from './buildRegisterValidationOptions'; import getErrorByFieldName from './getErrorByFieldName'; const formTemplates = window.givewp.form.templates; const LabelTemplate = formTemplates.layouts.fieldLabel; const ErrorMessageTemplate = formTemplates.layouts.fieldError; /** * @since 4.3.0 include aria-required attribute in all required fields. */ export default function registerFieldAndBuildProps( field: Field, register: UseFormReturn['register'], errors ): FieldProps { const fieldError = getErrorByFieldName(errors, field.name); const validationOptions = buildRegisterValidationOptions(field.validationRules); const baseInputProps = register(field.name, validationOptions); const inputProps = { ...baseInputProps, 'aria-required': !!field.validationRules?.required ? 'true' : undefined, }; return { ...field, inputProps: inputProps, fieldError, Label: () => , ErrorMessage: () => , }; }