import React, { memo, useContext } from 'react'; import { RadioGroup, FormControl, FormLabel, Radio, FormControlLabel, Box, Tooltip, } from '@mui/material'; import { DataContext } from '../context/Context'; import ComponentWrapper from '../common/ComponentWrapper'; import { getFieldName } from '../permissions/getFieldName'; import { radioInputProps } from '../interface/inputfieldProps'; import Helpertext from '../common/Helpertext'; import { getComponentProps } from '../common/getComponentProps'; import { useJsonForms } from '@jsonforms/react'; const ImpaktAppsRadio = memo(function CustomRadio(props: radioInputProps) { const { required, errors, data, uischema, handleChange, path, schema, rootSchema, } = props; const uischemaData = uischema?.config?.main; const { pageName, permissions, theme, serviceProvider } = useContext(DataContext); const fieldName = getFieldName(path); const onChange = (_ev: any, value: any) => handleChange(path, value?.const ?? value); const ctx = useJsonForms(); const dynamicStyle = React.useMemo(() => { return serviceProvider( ctx, { onClick: uischema.config?.main?.styleFunction || 'getStyle', }, { event: { _reactName: 'onClick' }, path, }, ); }, [data, path]); const componentStyle = { ...uischema.config?.style, ...dynamicStyle }; return ( = 1 ? `1.5px solid ${theme.myTheme.palette.error.main}` : data !== undefined ? `1.5px solid ${theme.myTheme.palette.primary.main}` : `1.5px solid ${theme.myTheme.palette.text.disabled}`, flexDirection: 'row', display: 'flex', minWidth: 0, ...theme.RadioStyle, ...componentStyle.RadioFieldsetStyle, marginTop: '-8px', }} > {uischemaData?.label} {required ? ( * ) : ( '' )} { onChange(event, value); }} > {uischemaData?.options?.map((elem: any, i: number) => ( } label={elem?.label ?? elem} /> ))} ); }); export default ImpaktAppsRadio;