import { FormikErrors } from 'formik' import React from 'react' import { StyleSheet, Text, View } from 'react-native' import { FormField, PhoneInput } from '../../../components' import { logger } from '../../../utils/Logger' import { TicketHolderFormValues } from '../form/types' interface TicketHoldersSectionProps { ticketHolders: TicketHolderFormValues[] onChange: (index: number, field: keyof TicketHolderFormValues, value: string) => void errors?: FormikErrors[] touched?: Array>> onFieldBlur?: (index: number, field: keyof TicketHolderFormValues) => void isPhoneHidden?: boolean } export const TicketHoldersSection: React.FC = ({ ticketHolders, onChange, errors, touched, onFieldBlur, isPhoneHidden = false, }) => { return ( {ticketHolders.map((holder, index) => { const errorFields = errors ? errors[index] : {} const touchedFields = touched ? touched[index] : {} return ( Ticket {index + 1} onChange(index, 'firstName', value), onBlur: () => onFieldBlur?.(index, 'firstName'), placeholder: 'Enter first name', }} /> onChange(index, 'lastName', value), onBlur: () => onFieldBlur?.(index, 'lastName'), placeholder: 'Enter last name', }} /> onChange(index, 'email', value), onBlur: () => onFieldBlur?.(index, 'email'), placeholder: 'Enter email address', keyboardType: 'email-address', }} /> {!isPhoneHidden && ( { onChange(index, 'phone', payload.input) }} error={touchedFields?.phone ? errorFields?.phone : undefined} texts={{ label: 'Phone Number', }} /> )} ) })} ) } const styles = StyleSheet.create({ container: { marginVertical: 16, }, ticketHolderContainer: { marginTop: 16, marginBottom: 8, }, formGroup: { marginBottom: 8, }, ticketHolderTitle: { fontSize: 16, fontWeight: '600', marginBottom: 16, }, divider: { height: 1, backgroundColor: '#E1E1E1', marginTop: 16, }, }) export default TicketHoldersSection