diff --git a/packages/effect-fc/src/Form.ts b/packages/effect-fc/src/Form.ts
index 0ccac23..b91ff37 100644
--- a/packages/effect-fc/src/Form.ts
+++ b/packages/effect-fc/src/Form.ts
@@ -18,7 +18,7 @@ extends Pipeable.Pipeable {
readonly schema: Schema.Schema
readonly onSubmit: (value: NoInfer) => Effect.Effect
- readonly autosubmit: Option.Option
+ readonly autosubmit: boolean
readonly debounce: Option.Option
readonly valueRef: SubscriptionRef.SubscriptionRef>
@@ -37,7 +37,7 @@ extends Pipeable.Class() implements Form {
constructor(
readonly schema: Schema.Schema,
readonly onSubmit: (value: NoInfer) => Effect.Effect,
- readonly autosubmit: Option.Option,
+ readonly autosubmit: boolean,
readonly debounce: Option.Option,
readonly valueRef: SubscriptionRef.SubscriptionRef>,
@@ -82,7 +82,7 @@ export const make: {
return new FormImpl(
options.schema,
options.onSubmit,
- Option.fromNullable(options.autosubmit),
+ options.autosubmit ?? false,
Option.fromNullable(options.debounce),
valueRef,
@@ -128,13 +128,17 @@ export const run = (
onFailure: c => Option.match(
Chunk.findFirst(Cause.failures(c), e => e._tag === "ParseError"),
{
- onSome: e => SubscriptionRef.set(self.errorRef, Option.some(e)),
- onNone: () => Effect.void,
+ onSome: e => Effect.as(SubscriptionRef.set(self.errorRef, Option.some(e)), Option.none()),
+ onNone: () => Effect.succeed(Option.none()),
},
),
}),
Effect.uninterruptible,
)),
+ Effect.andThen(value => Option.isSome(value) && self.autosubmit
+ ?
+ : Effect.void
+ ),
Effect.scoped,
Effect.forkScoped,
)