diff --git a/packages/conform-zod/README.md b/packages/conform-zod/README.md index 996bd1af..c21edfa4 100644 --- a/packages/conform-zod/README.md +++ b/packages/conform-zod/README.md @@ -56,7 +56,6 @@ function ExampleForm() { onValidate({ formData }) { return parse(formData, { schema, - stripEmptyValue: true, }); }, }); @@ -82,9 +81,6 @@ export async function action({ request }) { // If you need extra validation on server side schema: schema.refine(/* ... */), - // Recommended: this will be the default in the future - stripEmptyValue: true, - // If the schema definition includes async validation async: true, }); diff --git a/packages/conform-zod/index.ts b/packages/conform-zod/index.ts index a0a78e4f..71a9622c 100644 --- a/packages/conform-zod/index.ts +++ b/packages/conform-zod/index.ts @@ -225,7 +225,7 @@ export function parse( }, ): Submission> | Promise>> { return baseParse>(payload, { - stripEmptyValue: config.stripEmptyValue, + stripEmptyValue: config.stripEmptyValue ?? true, resolve(payload, intent) { const schema = typeof config.schema === 'function' diff --git a/playground/app/routes/async-validation.tsx b/playground/app/routes/async-validation.tsx index ab923321..896b60bb 100644 --- a/playground/app/routes/async-validation.tsx +++ b/playground/app/routes/async-validation.tsx @@ -51,7 +51,6 @@ export async function action({ request }: ActionArgs) { }); }, }), - stripEmptyValue: true, async: true, }); @@ -67,7 +66,6 @@ export default function EmployeeForm() { ? ({ formData }) => parse(formData, { schema: (intent) => createSchema(intent), - stripEmptyValue: true, }) : undefined, }); diff --git a/playground/app/routes/custom-inputs.tsx b/playground/app/routes/custom-inputs.tsx index b284874c..ee242f3d 100644 --- a/playground/app/routes/custom-inputs.tsx +++ b/playground/app/routes/custom-inputs.tsx @@ -27,7 +27,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -39,7 +39,7 @@ export default function Example() { id: 'example', lastSubmission, onValidate: !noClientValidate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, }); diff --git a/playground/app/routes/file-upload.tsx b/playground/app/routes/file-upload.tsx index 8061aaa0..31828641 100644 --- a/playground/app/routes/file-upload.tsx +++ b/playground/app/routes/file-upload.tsx @@ -41,7 +41,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -52,7 +52,7 @@ export default function FileUpload() { const [form, { file, files }] = useForm({ lastSubmission, onValidate: !noClientValidate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, }); diff --git a/playground/app/routes/index.tsx b/playground/app/routes/index.tsx index d4c92d66..30cd4a5d 100644 --- a/playground/app/routes/index.tsx +++ b/playground/app/routes/index.tsx @@ -20,7 +20,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -31,7 +31,7 @@ export default function Example() { const [form, { name }] = useForm({ lastSubmission, onValidate: !noClientValidate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, }); diff --git a/playground/app/routes/multiple-errors.tsx b/playground/app/routes/multiple-errors.tsx index fe8d2a91..07cea915 100644 --- a/playground/app/routes/multiple-errors.tsx +++ b/playground/app/routes/multiple-errors.tsx @@ -61,7 +61,6 @@ function parseForm(formData: FormData, validator: string | null) { ) .refine((username) => username.match(/[0-9]/), 'At least 1 number'), }), - stripEmptyValue: true, acceptMultipleErrors({ name }) { return name === 'username'; }, diff --git a/playground/app/routes/payment.tsx b/playground/app/routes/payment.tsx index a1acf8f5..1a4c4fda 100644 --- a/playground/app/routes/payment.tsx +++ b/playground/app/routes/payment.tsx @@ -42,7 +42,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -55,7 +55,7 @@ export default function PaymentForm() { lastSubmission, constraint: getFieldsetConstraint(schema), onValidate: config.validate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, shouldRevalidate: 'onInput', }); diff --git a/playground/app/routes/reset-default-value.tsx b/playground/app/routes/reset-default-value.tsx index 5ba3b2d9..4675e299 100644 --- a/playground/app/routes/reset-default-value.tsx +++ b/playground/app/routes/reset-default-value.tsx @@ -49,7 +49,6 @@ export async function action({ request }: ActionArgs) { const formData = await request.formData(); const submission = parse(formData, { schema, - stripEmptyValue: true, }); if (!submission.value || submission.intent !== 'submit') { diff --git a/playground/app/routes/simple-list.tsx b/playground/app/routes/simple-list.tsx index c1b98c98..ddb76d53 100644 --- a/playground/app/routes/simple-list.tsx +++ b/playground/app/routes/simple-list.tsx @@ -27,7 +27,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -41,7 +41,7 @@ export default function SimpleList() { ? { items: ['default item 0', 'default item 1'] } : undefined, onValidate: !noClientValidate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, }); const itemsList = useFieldList(form.ref, items); diff --git a/playground/app/routes/todos.tsx b/playground/app/routes/todos.tsx index 97f1178e..1f7fb515 100644 --- a/playground/app/routes/todos.tsx +++ b/playground/app/routes/todos.tsx @@ -34,7 +34,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -47,7 +47,7 @@ export default function TodosForm() { lastSubmission, constraint: getFieldsetConstraint(schema), onValidate: config.validate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, }); const taskList = useFieldList(form.ref, tasks); diff --git a/playground/app/routes/validate.tsx b/playground/app/routes/validate.tsx index b8219208..0b76d973 100644 --- a/playground/app/routes/validate.tsx +++ b/playground/app/routes/validate.tsx @@ -21,7 +21,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -32,7 +32,7 @@ export default function Validate() { const [form, { name, message }] = useForm({ lastSubmission, onValidate: !noClientValidate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, }); diff --git a/playground/app/routes/validation-flow.tsx b/playground/app/routes/validation-flow.tsx index dbd308ef..b959c9bb 100644 --- a/playground/app/routes/validation-flow.tsx +++ b/playground/app/routes/validation-flow.tsx @@ -37,7 +37,7 @@ export async function loader({ request }: LoaderArgs) { export async function action({ request }: ActionArgs) { const formData = await request.formData(); - const submission = parse(formData, { schema, stripEmptyValue: true }); + const submission = parse(formData, { schema }); return json(submission); } @@ -55,7 +55,7 @@ export default function ValidationFlow() { shouldValidate, shouldRevalidate, onValidate: !noClientValidate - ? ({ formData }) => parse(formData, { schema, stripEmptyValue: true }) + ? ({ formData }) => parse(formData, { schema }) : undefined, });