refactor: update radio component to handle boolean values instead of numeric (#24956)

This commit is contained in:
17hz
2025-09-02 15:11:42 +08:00
committed by GitHub
parent d6b3df8f6f
commit 2ac8f8003f
5 changed files with 15 additions and 21 deletions

View File

@@ -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>
)
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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)}

View File

@@ -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>
)
}