Skip to content

Commit b7ae40d

Browse files
deps: update zod to latest version
1 parent a8e19f3 commit b7ae40d

9 files changed

Lines changed: 56 additions & 38 deletions

File tree

.ncurc.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@ module.exports = {
77
if (
88
(name === "@types/node" &&
99
parseInt(upgradedVersionSemver?.major) >= 22) ||
10-
(name === "tailwindcss" && parseInt(upgradedVersionSemver?.major) >= 4) ||
11-
(name === "zod" && parseInt(upgradedVersionSemver?.major) >= 4) ||
12-
(name === "@hookform/resolvers" &&
13-
parseInt(upgradedVersionSemver?.major) >= 4)
10+
(name === "tailwindcss" && parseInt(upgradedVersionSemver?.major) >= 4)
1411
) {
1512
return false
1613
}

packages/app-elements/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@
6767
"swr": "^2.3.4",
6868
"ts-invariant": "^0.10.3",
6969
"type-fest": "^4.41.0",
70-
"zod": "^3.25.76"
70+
"zod": "^4.0.5"
7171
},
7272
"devDependencies": {
73-
"@hookform/resolvers": "^3.10.0",
73+
"@hookform/resolvers": "^5.1.1",
7474
"@phosphor-icons/react": "v2.1.10",
7575
"@tailwindcss/forms": "^0.5.10",
7676
"@testing-library/jest-dom": "^6.6.3",

packages/app-elements/src/ui/resources/ResourceAddress/ResourceAddressFormFields.tsx

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import type { ResourceAddressProps } from "./ResourceAddress"
1414

1515
const zodRequiredField = z
1616
.string({
17-
required_error: "Required field",
18-
invalid_type_error: "Invalid format",
17+
error: (iss) =>
18+
iss.input === undefined ? "Required field" : "Invalid format",
1919
})
2020
.min(1, {
2121
message: "Required field",
@@ -37,12 +37,19 @@ export const getResourceAddressFormFieldsSchema = ({
3737
state_code: zodRequiredField,
3838
country_code: zodRequiredField,
3939
phone: zodRequiredField,
40-
billing_info: requiresBillingInfo
41-
? zodRequiredField
42-
: z.string().nullish(),
40+
billing_info: z.string().nullish(),
4341
notes: z.string().nullish(),
4442
})
4543
.superRefine((data, ctx) => {
44+
if (requiresBillingInfo) {
45+
if (data.billing_info == null || data.billing_info.length === 0) {
46+
ctx.addIssue({
47+
code: "custom",
48+
path: ["billing_info"],
49+
message: t("common.forms.required_field"),
50+
})
51+
}
52+
}
4653
if (data.business === true) {
4754
if (data.company == null || data.company.length === 0) {
4855
ctx.addIssue({

packages/app-elements/src/ui/resources/useResourceFilters/adaptFormValuesToSdk.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export function adaptFormValuesToSdk<
6666
if (predicateWhitelist.includes(key)) {
6767
return {
6868
...acc,
69-
[key]: formValues[key],
69+
[key]: formValues[key] ?? undefined,
7070
}
7171
}
7272

@@ -80,7 +80,8 @@ export function adaptFormValuesToSdk<
8080
) {
8181
return {
8282
...acc,
83-
[key]: instructionItem.sdk.parseFormValue(formValues[key]),
83+
[key]:
84+
instructionItem.sdk.parseFormValue(formValues[key]) ?? undefined,
8485
}
8586
}
8687

@@ -90,7 +91,7 @@ export function adaptFormValuesToSdk<
9091
) {
9192
return {
9293
...acc,
93-
[key]: castArray(formValues[key]).join(","),
94+
[key]: castArray(formValues[key]).join(",") ?? undefined,
9495
}
9596
}
9697

packages/app-elements/src/ui/resources/useResourceFilters/timeUtils.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ export const timeRangeValidationSchema = z
102102
timeTo: z.date().optional().nullable(),
103103
timePreset: z.enum(filterableTimeRangePreset).optional().nullable(),
104104
})
105-
.passthrough()
106105
.superRefine((data, ctx) => {
107106
if (data.timePreset === "custom" && data.timeFrom == null) {
108107
ctx.addIssue({
@@ -125,7 +124,9 @@ export const timeRangeValidationSchema = z
125124
data.timeFrom > data.timeTo
126125
) {
127126
ctx.addIssue({
128-
code: "invalid_date",
127+
code: "invalid_type",
128+
expected: "date",
129+
input: data.timeTo,
129130
path: ["timeTo"],
130131
message: 'The "To" date must be greater than the "From" date',
131132
})

packages/app-elements/src/ui/resources/useResourceFilters/types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ export const filterableTimeRangePreset = [
1111
] as const
1212

1313
export type UiFilterName = string
14-
export type UiFilterValue = string | string[] | boolean | Date | undefined
14+
export type UiFilterValue =
15+
| string
16+
| string[]
17+
| boolean
18+
| Date
19+
| undefined
20+
| null
1521

1622
export type TimeRangePreset = (typeof filterableTimeRangePreset)[number]
1723

packages/docs/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"devDependencies": {
2424
"@babel/core": "^7.28.0",
2525
"@babel/preset-env": "^7.28.0",
26-
"@hookform/resolvers": "^3.10.0",
26+
"@hookform/resolvers": "^5.1.1",
2727
"@mdx-js/react": "^3.1.0",
2828
"@storybook/addon-docs": "^9.0.17",
2929
"@storybook/addon-links": "^9.0.17",
@@ -46,7 +46,7 @@
4646
"typescript": "~5.8.3",
4747
"vite": "^7.0.4",
4848
"vite-tsconfig-paths": "^5.1.4",
49-
"zod": "^3.25.76"
49+
"zod": "^4.0.5"
5050
},
5151
"msw": {
5252
"workerDirectory": "public"

packages/docs/src/stories/resources/ResourceAddress.stories.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,8 @@ export const ReuseTheAddressForm: StoryFn = () => {
182182
z.object({
183183
name: z
184184
.string({
185-
required_error: "Required field",
186-
invalid_type_error: "Invalid format",
185+
error: (iss) =>
186+
iss.input === undefined ? "Required field" : "Invalid format",
187187
})
188188
.min(1, {
189189
message: "Required field",
@@ -228,8 +228,8 @@ export const ShowNameOrCompany: StoryFn = () => {
228228
z.object({
229229
name: z
230230
.string({
231-
required_error: "Required field",
232-
invalid_type_error: "Invalid format",
231+
error: (iss) =>
232+
iss.input === undefined ? "Required field" : "Invalid format",
233233
})
234234
.min(1, {
235235
message: "Required field",

pnpm-lock.yaml

Lines changed: 21 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)