import React, { useEffect, useState } from 'react'; import { RadiosProps } from './'; import { CreditCard, CreditCardProps } from '../CreditCard'; import styles from './Radios.styles'; const { DivStyled, DivWrapperStyled, FieldsetStyled, LabelStyled, LegendStyled, RadioButtonStyled, } = styles; const Radios: React.FC = ({ disabled = false, id, isRow = false, items, ref, onChange, onBlur, onCreditCardRemoved, selectedState, setWhichIsChecked, suffix, title, validation, ...props }) => { const formattedID = id?.replace(/\s/g, '-'); const isCreditCards = Boolean(typeof items[0] === 'object'); const [whichIsChecked, setChecked] = useState( setWhichIsChecked || items.length, ); useEffect(() => { if (typeof selectedState != 'undefined') { setChecked(selectedState); } }, [selectedState]); const renderCreditCard = (item: CreditCardProps, arrayIndex: number) => ( onCreditCardRemoved && onCreditCardRemoved(arrayIndex) } /> ); return ( {title && ( {title} )} {(items as Array).map( (item: CreditCardProps | string, i: number) => ( { if (disabled) { return; } onChange(e); if (typeof selectedState == 'undefined') { setChecked(i); } }} onBlur={(e) => onBlur && onBlur(e)} required={validation?.required} type="radio" value={i} {...props} /> {typeof item === 'string' ? item : renderCreditCard(item, i)} ), )} {suffix && <>{suffix}} ); }; export default Radios;