Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(conform-zod)!: default stripEmptyValue option to true #227

Merged
merged 2 commits into from
Jul 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions packages/conform-zod/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ function ExampleForm() {
onValidate({ formData }) {
return parse(formData, {
schema,
stripEmptyValue: true,
});
},
});
Expand All @@ -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,
});
Expand Down
2 changes: 1 addition & 1 deletion packages/conform-zod/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ export function parse<Schema extends z.ZodTypeAny>(
},
): Submission<z.output<Schema>> | Promise<Submission<z.output<Schema>>> {
return baseParse<z.output<Schema>>(payload, {
stripEmptyValue: config.stripEmptyValue,
stripEmptyValue: config.stripEmptyValue ?? true,
resolve(payload, intent) {
const schema =
typeof config.schema === 'function'
Expand Down
2 changes: 0 additions & 2 deletions playground/app/routes/async-validation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ export async function action({ request }: ActionArgs) {
});
},
}),
stripEmptyValue: true,
async: true,
});

Expand All @@ -67,7 +66,6 @@ export default function EmployeeForm() {
? ({ formData }) =>
parse(formData, {
schema: (intent) => createSchema(intent),
stripEmptyValue: true,
})
: undefined,
});
Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/custom-inputs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -39,7 +39,7 @@ export default function Example() {
id: 'example',
lastSubmission,
onValidate: !noClientValidate
? ({ formData }) => parse(formData, { schema, stripEmptyValue: true })
? ({ formData }) => parse(formData, { schema })
: undefined,
});

Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/file-upload.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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,
});

Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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,
});

Expand Down
1 change: 0 additions & 1 deletion playground/app/routes/multiple-errors.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
},
Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/payment.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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',
});
Expand Down
1 change: 0 additions & 1 deletion playground/app/routes/reset-default-value.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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') {
Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/simple-list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/todos.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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);
Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/validate.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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,
});

Expand Down
4 changes: 2 additions & 2 deletions playground/app/routes/validation-flow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -55,7 +55,7 @@ export default function ValidationFlow() {
shouldValidate,
shouldRevalidate,
onValidate: !noClientValidate
? ({ formData }) => parse(formData, { schema, stripEmptyValue: true })
? ({ formData }) => parse(formData, { schema })
: undefined,
});

Expand Down