import { Icon } from '@iconify-icon/solid'; import { isNotNil } from 'es-toolkit'; import { createEffect, createMemo, createSignal, mergeProps, ParentComponent, ParentProps, Show, } from 'solid-js'; interface CheckBoxProps { name?: string; checked?: boolean; disabled?: boolean; onChange?: (checked: boolean) => void; } const Check: 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; } console.debug('[Check]before', internalChecked()); setInternalChecked((prev) => !prev); console.debug('[Check]after', internalChecked()); mProps.onChange?.(internalChecked()); }; return (
{mProps.children}
); }; export default Check;