import { isNotNil } from 'es-toolkit'; import { Component, createEffect, createMemo, createSignal, mergeProps, Show } from 'solid-js'; interface SwitchProps { name?: string; checked?: boolean; disabled?: boolean; onChange?: (checked: boolean) => void; } const Switcher: Component = (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 (
); }; export default Switcher;