import { Icon } from '@iconify-icon/solid'; import { isNotNil } from 'es-toolkit'; import { createEffect, createMemo, createSignal, mergeProps, ParentComponent, ParentProps, Show, } from 'solid-js'; import { Dynamic } from 'solid-js/web'; interface RadioProps { name?: string; checked?: boolean; disabled?: boolean; onChange?: (value?: boolean) => void; } const RadioIcon = [ () => , () => , ]; const Radio: ParentComponent = (props) => { const mProps = mergeProps[]>( { disabled: false, }, props, ); const originalChecked = createMemo(() => mProps.checked); const [internalChecked, setInternalChecked] = createSignal(undefined); createEffect(() => { if (isNotNil(originalChecked()) && originalChecked() !== internalChecked()) { setInternalChecked(originalChecked()); } }); const handleClick = () => { if (mProps.disabled) { return; } setInternalChecked((prev) => !prev); mProps.onChange?.(internalChecked()); }; return (
{mProps.children}
); }; export default Radio;