refactor: update radio component to handle boolean values instead of numeric (#24956)
This commit is contained in:
@@ -103,12 +103,6 @@ const BaseField = ({
|
||||
})
|
||||
}, [values, show_on])
|
||||
|
||||
const booleanRadioValue = useMemo(() => {
|
||||
if (value === null || value === undefined)
|
||||
return undefined
|
||||
return value ? 1 : 0
|
||||
}, [value])
|
||||
|
||||
if (!show)
|
||||
return null
|
||||
|
||||
@@ -215,11 +209,11 @@ const BaseField = ({
|
||||
formSchema.type === FormTypeEnum.boolean && (
|
||||
<Radio.Group
|
||||
className='flex w-fit items-center'
|
||||
value={booleanRadioValue}
|
||||
onChange={val => field.handleChange(val === 1)}
|
||||
value={value}
|
||||
onChange={v => field.handleChange(v)}
|
||||
>
|
||||
<Radio value={1} className='!mr-1'>True</Radio>
|
||||
<Radio value={0}>False</Radio>
|
||||
<Radio value={true} className='!mr-1'>True</Radio>
|
||||
<Radio value={false}>False</Radio>
|
||||
</Radio.Group>
|
||||
)
|
||||
}
|
||||
|
@@ -5,7 +5,7 @@ import cn from '@/utils/classnames'
|
||||
|
||||
export type TRadioGroupProps = {
|
||||
children?: ReactNode | ReactNode[]
|
||||
value?: string | number
|
||||
value?: string | number | boolean
|
||||
className?: string
|
||||
onChange?: (value: any) => void
|
||||
}
|
||||
|
@@ -10,7 +10,7 @@ export type IRadioProps = {
|
||||
labelClassName?: string
|
||||
children?: string | ReactNode
|
||||
checked?: boolean
|
||||
value?: string | number
|
||||
value?: string | number | boolean
|
||||
disabled?: boolean
|
||||
onChange?: (e?: IRadioProps['value']) => void
|
||||
}
|
||||
|
@@ -284,11 +284,11 @@ function Form<
|
||||
</div>
|
||||
<Radio.Group
|
||||
className='flex items-center'
|
||||
value={value[variable] === null ? undefined : (value[variable] ? 1 : 0)}
|
||||
onChange={val => handleFormChange(variable, val === 1)}
|
||||
value={value[variable]}
|
||||
onChange={val => handleFormChange(variable, val)}
|
||||
>
|
||||
<Radio value={1} className='!mr-1'>True</Radio>
|
||||
<Radio value={0}>False</Radio>
|
||||
<Radio value={true} className='!mr-1'>True</Radio>
|
||||
<Radio value={false}>False</Radio>
|
||||
</Radio.Group>
|
||||
</div>
|
||||
{fieldMoreInfo?.(formSchema)}
|
||||
|
@@ -91,8 +91,8 @@ const ParameterItem: FC<ParameterItemProps> = ({
|
||||
numberInputRef.current!.value = `${num}`
|
||||
}
|
||||
|
||||
const handleRadioChange = (v: number) => {
|
||||
handleInputChange(v === 1)
|
||||
const handleRadioChange = (v: boolean) => {
|
||||
handleInputChange(v)
|
||||
}
|
||||
|
||||
const handleStringInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
|
||||
@@ -187,11 +187,11 @@ const ParameterItem: FC<ParameterItemProps> = ({
|
||||
return (
|
||||
<Radio.Group
|
||||
className='flex w-[178px] items-center'
|
||||
value={renderValue ? 1 : 0}
|
||||
value={renderValue as boolean}
|
||||
onChange={handleRadioChange}
|
||||
>
|
||||
<Radio value={1} className='w-[83px]'>True</Radio>
|
||||
<Radio value={0} className='w-[83px]'>False</Radio>
|
||||
<Radio value={true} className='w-[83px]'>True</Radio>
|
||||
<Radio value={false} className='w-[83px]'>False</Radio>
|
||||
</Radio.Group>
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user