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 @@