1- import { mergeProps , prop , type FictNode , type JSX } from '@fictjs/runtime'
1+ import { mergeProps , prop , untrack , type FictNode , type JSX } from '@fictjs/runtime'
22import { createSignal } from '@fictjs/runtime/advanced'
33
44import { useComposedRefs , type PossibleRef } from '@fictjs/compose-refs'
@@ -166,8 +166,11 @@ function CheckboxProvider(props: ScopedProps<CheckboxProviderProps>): FictNode {
166166 ...( props . onCheckedChange ? { onChange : props . onCheckedChange } : { } ) ,
167167 }
168168 const [ checked , setChecked ] = useControllableState < CheckedState > ( controllableStateProps )
169- const initialDefaultChecked = normalizeChecked ( checked ( ) )
170- let previousBubbleChecked = checked ( )
169+ const updateChecked : SetStateFn < CheckedState > = ( nextChecked ) => {
170+ setChecked ( nextChecked )
171+ }
172+ const initialDefaultChecked = normalizeChecked ( untrack ( ( ) => checked ( ) ) )
173+ let previousBubbleChecked = untrack ( ( ) => checked ( ) )
171174
172175 useLayoutEffect ( ( ) => {
173176 const currentControl = control ( )
@@ -210,7 +213,7 @@ function CheckboxProvider(props: ScopedProps<CheckboxProviderProps>): FictNode {
210213 name = { name }
211214 required = { required }
212215 setBubbleInput = { bubbleInput }
213- setChecked = { setChecked }
216+ setChecked = { updateChecked }
214217 setControl = { control }
215218 value = { value }
216219 >
@@ -227,7 +230,7 @@ function CheckboxTrigger(props: ScopedProps<CheckboxTriggerProps>): FictNode {
227230 const composedRefs = useComposedRefs ( props . ref as PossibleRef < HTMLButtonElement > , ( node ) =>
228231 context . setControl ( node ) ,
229232 )
230- const initialCheckedState = context . checked ( )
233+ const initialCheckedState = untrack ( ( ) => context . checked ( ) )
231234
232235 useLayoutEffect ( ( ) => {
233236 const formElement = context . control ( ) ?. form
0 commit comments