import React from 'react'; import { IFieldComponentProps } from '../../types'; import { makeStyles, createStyles, FormControl, FormControlLabel, RadioGroup, RadioGroupProps, Radio, Divider, } from '@material-ui/core'; import FieldLabel from '../../FieldLabel'; import FieldErrorMessage from '../../FieldErrorMessage'; import FieldAssistiveText from '../../FieldAssistiveText'; const useStyles = makeStyles(theme => createStyles({ root: { display: 'flex' }, formControl: { marginLeft: 0, marginRight: 0, }, disabled: {}, radio: { padding: theme.spacing(1.5), margin: theme.spacing(0, -0.5, 0, -1.5), '$formControl:not($disabled):hover &': { backgroundColor: theme.palette.action.hover, }, }, formControlLabel: { padding: theme.spacing(1.25, 0), marginLeft: theme.spacing(1), }, divider: { marginLeft: theme.spacing(3 + 2) }, assistiveText: { margin: theme.spacing(1, 0, 0, 3 + 2) }, }) ); export interface IRadioComponentProps extends IFieldComponentProps, Omit { options: (string | { value: string; label: React.ReactNode })[]; } export default function RadioComponent({ field: { onChange, onBlur, value, ref }, fieldState, formState, name, useFormMethods, label, errorMessage, assistiveText, required, options, ...props }: IRadioComponentProps) { const classes = useStyles(); return ( {label} {options.map(item => { let option: { label: React.ReactNode; value: string } = { label: '', value: '', }; if (typeof item === 'object') option = item; if (typeof item === 'string') option = { label: item, value: item }; return ( } classes={{ root: classes.formControl, disabled: classes.disabled, label: classes.formControlLabel, }} /> ); })}
{errorMessage} {assistiveText}
); }