diff --git a/src/components/Check.tsx b/src/components/Check.tsx index 58c9625..cf94db7 100644 --- a/src/components/Check.tsx +++ b/src/components/Check.tsx @@ -5,6 +5,7 @@ import { createMemo, createSignal, mergeProps, + onMount, ParentComponent, ParentProps, Show, @@ -14,6 +15,7 @@ import { Dynamic } from 'solid-js/web'; interface CheckBoxProps { name?: string; checked?: boolean; + defaultChecked?: boolean; disabled?: boolean; onChange?: (checked?: boolean) => void; } @@ -40,6 +42,11 @@ const Check: ParentComponent = (props) => { const originalChecked = createMemo(() => mProps.checked); const [internalChecked, setInternalChecked] = createSignal(undefined); + onMount(() => { + if (isNotNil(mProps.defaultChecked)) { + setInternalChecked(mProps.defaultChecked); + } + }); createEffect(() => { if (isNotNil(originalChecked()) && originalChecked() !== internalChecked()) { setInternalChecked(originalChecked()); diff --git a/src/components/Radio.tsx b/src/components/Radio.tsx index 57074bc..f5c4d83 100644 --- a/src/components/Radio.tsx +++ b/src/components/Radio.tsx @@ -5,6 +5,7 @@ import { createMemo, createSignal, mergeProps, + onMount, ParentComponent, ParentProps, Show, @@ -14,6 +15,7 @@ import { Dynamic } from 'solid-js/web'; interface RadioProps { name?: string; checked?: boolean; + defaultChecked?: boolean; disabled?: boolean; onChange?: (value?: boolean) => void; } @@ -40,6 +42,11 @@ const Radio: ParentComponent = (props) => { const originalChecked = createMemo(() => mProps.checked); const [internalChecked, setInternalChecked] = createSignal(undefined); + onMount(() => { + if (isNotNil(mProps.defaultChecked)) { + setInternalChecked(mProps.defaultChecked); + } + }); createEffect(() => { if (isNotNil(originalChecked()) && originalChecked() !== internalChecked()) { setInternalChecked(originalChecked()); diff --git a/src/components/RadioGroup.tsx b/src/components/RadioGroup.tsx index 519a4f5..8a9da62 100644 --- a/src/components/RadioGroup.tsx +++ b/src/components/RadioGroup.tsx @@ -7,6 +7,7 @@ import { Index, JSX, mergeProps, + onMount, Show, } from 'solid-js'; import Radio from './Radio'; @@ -20,6 +21,7 @@ interface RadioGroupProps { name?: string; options?: Option[]; value?: Option['value']; + defalutValue?: Option['value']; disabled?: boolean; onChange?: (value?: Option['value']) => void; } @@ -36,6 +38,11 @@ const RadioGroup: Component = (props) => { const originalValue = createMemo(() => mProps.value); const [selectedValue, setSelectedValue] = createSignal(undefined); + onMount(() => { + if (isNotNil(mProps.defalutValue)) { + setSelectedValue(mProps.defalutValue); + } + }); createEffect(() => { if (isNotNil(originalValue()) && originalValue() !== selectedValue()) { setSelectedValue(originalValue()); diff --git a/src/components/Segments.tsx b/src/components/Segments.tsx index 14f86b1..877fb03 100644 --- a/src/components/Segments.tsx +++ b/src/components/Segments.tsx @@ -8,6 +8,7 @@ import { Index, JSX, mergeProps, + onMount, Show, } from 'solid-js'; @@ -20,6 +21,7 @@ interface SegmentsProps { name?: string; options: Option[]; value?: Option['value']; + defaultValue?: Option['value']; direction?: 'horizontal' | 'vertical'; disabled?: boolean; onChange?: (value: Option['value'] | undefined) => void; @@ -43,6 +45,11 @@ const Segments: Component = (props) => { const [indicatorHeight, setIndicatorHeight] = createSignal(0); const [indicatorWidth, setIndicatorWidth] = createSignal(0); + onMount(() => { + if (isNotNil(mProps.defaultValue)) { + setSelected(mProps.defaultValue); + } + }); createEffect(() => { if (isNotNil(originalValue()) && originalValue() !== selected()) { setSelected(originalValue());