diff --git a/src/lib/RadioGroup.svelte b/src/lib/RadioGroup.svelte index acafb67..0cf37a0 100644 --- a/src/lib/RadioGroup.svelte +++ b/src/lib/RadioGroup.svelte @@ -23,8 +23,20 @@ ...props }: Props = $props(); let valid = $state(true); + let hiddenInput: HTMLInputElement; - const group = new RadioGroup(props); + const group = new RadioGroup({ + ...props, + onValueChange(active) { + // call any passed in handler + props.onValueChange?.(active); + + requestAnimationFrame(() => { + // send keyboard event to trigger validation + hiddenInput?.dispatchEvent(new KeyboardEvent('keyup')); + }); + } + }); const isVert = $derived(group.orientation === 'vertical'); @@ -69,8 +81,9 @@ (valid = e.detail.valid)} + bind:this={hiddenInput} /> {#if required} diff --git a/src/routes/statemachine/+page.svelte b/src/routes/statemachine/+page.svelte index 65c2ada..cf2ca46 100644 --- a/src/routes/statemachine/+page.svelte +++ b/src/routes/statemachine/+page.svelte @@ -1,11 +1,12 @@