Skip to content

Commit

Permalink
fix(fields): remove the default required_error
Browse files Browse the repository at this point in the history
when using i18n in zod, the default error overwrites the zods required translation.
  • Loading branch information
MiroslavPetrik committed Jan 30, 2025
1 parent c15d703 commit e30bea7
Show file tree
Hide file tree
Showing 10 changed files with 26 additions and 28 deletions.
4 changes: 2 additions & 2 deletions src/fields/array-field/arrayField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { z } from "zod";

import { prepareSchema } from "../../utils";
import { FieldConfig } from "../field";
import { type ZodField, defaultParams, zodField } from "../zod-field";
import { type ZodField, zodField } from "../zod-field";

export type ZodArrayField<Element extends ZodSchema = ZodAny> = ZodField<
ZodArray<Element, ArrayCardinality>,
Expand All @@ -16,7 +16,7 @@ export type ArrayFieldParams<ElementSchema extends z.Schema> = FieldConfig<
>;

export const arrayField = <ElementSchema extends z.Schema>({
required_error = defaultParams.required_error,
required_error,
value = [],
elementSchema,
schema,
Expand Down
3 changes: 1 addition & 2 deletions src/fields/boolean-field/booleanField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { ZodBoolean, z } from "zod";

import { zodField } from "..";
import { FieldConfig } from "../field";
import { defaultParams } from "../zod-field/zodParams";

export type BooleanField = ReturnType<typeof booleanField>;

Expand All @@ -12,7 +11,7 @@ export type BooleanFieldValue = ExtractAtomValue<
>;

export const booleanField = ({
required_error = defaultParams.required_error,
required_error,
...config
}: Omit<FieldConfig<ZodBoolean>, "schema" | "optionalSchema"> = {}) =>
zodField({
Expand Down
22 changes: 13 additions & 9 deletions src/fields/checkbox-field/checkboxField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { ZodBoolean, ZodLiteral, z } from "zod";

import { zodField } from "..";
import { FieldConfig } from "../field";
import { defaultParams } from "../zod-field/zodParams";

export type CheckboxField = ReturnType<typeof checkboxField>;

Expand All @@ -12,7 +11,7 @@ export type CheckboxFieldValue = ExtractAtomValue<
>;

export const checkboxField = ({
required_error = defaultParams.required_error,
required_error,
value = false,
...config
}: Partial<
Expand All @@ -26,13 +25,18 @@ export const checkboxField = ({
/**
* When checkbox is required, it must be checked, so the value must be true.
*/
schema: z.literal(true, {
errorMap: (issue) => {
return issue.code === "invalid_literal"
? { message: required_error }
: { message: issue.message ?? "Invalid" };
},
}),
schema: z.literal(
true,
required_error
? {
errorMap: (issue) => {
return issue.code === "invalid_literal"
? { message: required_error }
: { message: issue.message ?? "Invalid" };
},
}
: undefined,
),
optionalSchema: z.boolean(),
...config,
});
3 changes: 1 addition & 2 deletions src/fields/date-field/dateField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { ZodDate, z } from "zod";
import { zodField } from "..";
import { prepareSchema } from "../../utils";
import { type FieldConfig } from "../field";
import { defaultParams } from "../zod-field/zodParams";

export type DateField = ReturnType<typeof dateField>;

Expand All @@ -13,7 +12,7 @@ export type DateFieldValue = ExtractAtomValue<
>;

export const dateField = ({
required_error = defaultParams.required_error,
required_error,
schema,
optionalSchema,
...config
Expand Down
4 changes: 3 additions & 1 deletion src/fields/list-field/listField.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ describe("listField()", () => {

const { result } = renderHook(() => useFieldError(list));

expect(result.current.error).toBe("This field is required");
expect(result.current.error).toBe(
"Array must contain at least 1 element(s)",
);
});
});

Expand Down
4 changes: 2 additions & 2 deletions src/fields/list-field/listField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
WritableRequiredAtom,
schemaValidate,
} from "../../utils/schemaValidate";
import { ZodParams, defaultParams } from "../zod-field";
import { ZodParams } from "../zod-field";

export type ExtendListAtom<Fields extends FormFields, Value, State> =
ListAtom<Fields, Value> extends Atom<infer DefaultState>
Expand Down Expand Up @@ -58,7 +58,7 @@ type ListFieldConfig<Fields extends FormFields, Value> = ListAtomConfig<
UserValidateConfig<ZodArray<ZodAny, "atleastone">, ZodArray<ZodAny, "many">>;

export const listField = <Fields extends FormFields, Value>({
required_error = defaultParams.required_error,
required_error,
schema,
optionalSchema,
...config
Expand Down
4 changes: 2 additions & 2 deletions src/fields/number-field/numberField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ import { ZodNumber, z } from "zod";
import { zodField } from "..";
import { prepareSchema } from "../../utils";
import { FieldConfig } from "../field";
import { defaultParams } from "../zod-field/zodParams";

export type NumberField = ReturnType<typeof numberField>;

export type NumberFieldValue = ExtractAtomValue<
ExtractAtomValue<NumberField>["value"]
>;

export const numberField = ({
required_error = defaultParams.required_error,
required_error,
schema,
optionalSchema,
...config
Expand Down
3 changes: 1 addition & 2 deletions src/fields/string-field/stringField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { ZodString, z } from "zod";
import { zodField } from "..";
import { prepareSchema } from "../../utils";
import { FieldConfig } from "../field";
import { defaultParams } from "../zod-field/zodParams";

export type StringField = ReturnType<typeof stringField>;

Expand All @@ -13,7 +12,7 @@ export type StringFieldValue = ExtractAtomValue<
>;

export const stringField = ({
required_error = defaultParams.required_error,
required_error,
schema,
optionalSchema,
...config
Expand Down
3 changes: 1 addition & 2 deletions src/fields/text-field/textField.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { ZodString, z } from "zod";
import { zodField } from "..";
import { prepareSchema } from "../../utils";
import { FieldConfig } from "../field";
import { defaultParams } from "../zod-field/zodParams";

export type TextField = ReturnType<typeof textField>;

Expand All @@ -13,7 +12,7 @@ export type TextFieldValue = ExtractAtomValue<
>;

export const textField = ({
required_error = defaultParams.required_error,
required_error,
value = "",
schema,
optionalSchema,
Expand Down
4 changes: 0 additions & 4 deletions src/fields/zod-field/zodParams.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
export type ZodParams = {
required_error?: string;
};

export const defaultParams = {
required_error: "This field is required",
};

0 comments on commit e30bea7

Please sign in to comment.