import type { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils'; import { ariaDescribedByIds, enumOptionValueDecoder, enumOptionValueEncoder, enumOptionsIsSelected, getOptionValueFormat, optionId, } from '@rjsf/utils'; import type { RadioButtonChangeEvent } from 'primereact/radiobutton'; import { RadioButton } from 'primereact/radiobutton'; /** The `RadioWidget` is a widget for rendering a radio group. * It is typically used with a string property constrained with enum options. * * @param props - The `WidgetProps` for this component */ export default function RadioWidget( props: WidgetProps, ) { const { id, htmlName, value, disabled, readonly, onChange, onBlur, onFocus, options } = props; const primeProps = (options.prime || {}) as object; const { enumOptions, enumDisabled, emptyValue } = options; const optionValueFormat = getOptionValueFormat(options); const handleChange = (e: RadioButtonChangeEvent) => { onChange(enumOptionValueDecoder(e.value, enumOptions, optionValueFormat, emptyValue)); }; const handleBlur = () => onBlur(id, value); const handleFocus = () => onFocus(id, value); return (
{Array.isArray(enumOptions) && enumOptions.map((option, index) => { const checked = enumOptionsIsSelected(option.value, value); const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.includes(option.value); return (
); })}
); }