import React, { useState } from 'react'; import styled from 'styled-components'; import FlexRow, { FlexRowProps } from '../../layout/FlexRow/FlexRow'; import FlexCol, { FlexColProps } from '../../layout/FlexCol/FlexCol'; import RadioField from '../RadioField/RadioField'; import ErrorMessage from '../../atoms/ErrorMessage/ErrorMessage'; import Fieldset from '../../atoms/Fieldset/Fieldset'; import Legend from '../../atoms/Legend/Legend'; const RadioWrapper = styled.div` padding: 4px 0; `; type RadioGroupFieldItem = { value: string; label?: string | React.ReactNode; defaultChecked?: boolean; disabled?: boolean; }; export type RadioGroupFieldProps = { label?: string; items: RadioGroupFieldItem[]; onChange: (value: string) => void; onBlur?: () => void; disabled?: boolean; value?: string; isValid?: boolean; errorMessage?: string; className?: string; flexColProps?: FlexColProps; flexRowProps?: FlexRowProps; hideControl?: boolean; name?: string; 'data-automation'?: string; }; const RadioGroupField = ({ items, label, name, onChange, onBlur, value, disabled, isValid = false, errorMessage, className, flexRowProps = {}, flexColProps = {}, hideControl, 'data-automation': dataAutomation, }: RadioGroupFieldProps) => { const { value: defaultValue } = items.find(({ defaultChecked }) => defaultChecked) || {}; const [innerValue, setInnerValue] = useState(defaultValue); const isControlled = !!value; const handleChange = (value: string) => () => { if (!disabled) { if (!isControlled) { setInnerValue(value); } onChange(value); } }; return (
); }; export default RadioGroupField;