import { Button, ButtonGroup, FormGroup, FormLabel } from '@mui/material'; import { type FormikValues, useFormikContext } from 'formik'; import { equals, path, split } from 'ramda'; import { useTranslation } from 'react-i18next'; import { useMemoComponent } from '../..'; import type { InputPropsWithoutGroup } from './models'; const SegmentedButtons = ({ dataTestId, fieldName, label, segmentedButtons, getDisabled, additionalMemoProps }: InputPropsWithoutGroup): JSX.Element => { const { t } = useTranslation(); const { values, setFieldValue, setFieldTouched } = useFormikContext(); const value = path(split('.', fieldName), values); const disabled = getDisabled?.(values) || false; const select = (optionValue: string) => (): void => { setFieldTouched(fieldName, true, false); setFieldValue(fieldName, optionValue); }; return useMemoComponent({ Component: ( {t(label)} {segmentedButtons?.options.map( ({ label: optionLabel, value: optionValue }) => { const isSelected = equals(value, optionValue); return ( ); } )} ), memoProps: [value, disabled, segmentedButtons, additionalMemoProps] }); }; export default SegmentedButtons;