diff --git a/apps/web/components/eventtype/EventSetupTab.tsx b/apps/web/components/eventtype/EventSetupTab.tsx index fae1b20c27..46035b4d44 100644 --- a/apps/web/components/eventtype/EventSetupTab.tsx +++ b/apps/web/components/eventtype/EventSetupTab.tsx @@ -290,7 +290,7 @@ export const EventSetupTab = ( setDefaultDuration( selectedMultipleDuration.find((opt) => opt.value === option?.value) ?? null ); - formMethods.setValue("length", Number(option?.value)); + if (option) formMethods.setValue("length", option.value); }} /> @@ -298,14 +298,11 @@ export const EventSetupTab = ( ) : ( {t("minutes")}} defaultValue={eventType.length ?? 15} - onChange={(e) => { - formMethods.setValue("length", Number(e.target.value)); - }} + {...formMethods.register("length")} + addOnSuffix={<>{t("minutes")}} /> )}
diff --git a/apps/web/pages/event-types/[type]/index.tsx b/apps/web/pages/event-types/[type]/index.tsx index fa01ad45ec..44a4a4eace 100644 --- a/apps/web/pages/event-types/[type]/index.tsx +++ b/apps/web/pages/event-types/[type]/index.tsx @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-empty-function */ import { useAutoAnimate } from "@formkit/auto-animate/react"; +import { zodResolver } from "@hookform/resolvers/zod"; import { PeriodType, Prisma, SchedulingType } from "@prisma/client"; import { GetServerSidePropsContext } from "next"; import { useRouter } from "next/router"; @@ -204,6 +205,16 @@ const EventTypePage = (props: inferSSRProps) => { ), metadata, }, + resolver: zodResolver( + z + .object({ + // Length if string, is converted to a number or it can be a number + // Make it optional because it's not submitted from all tabs of the page + length: z.union([z.string().transform((val) => +val), z.number()]).optional(), + }) + // TODO: Add schema for other fields later. + .passthrough() + ), }); const appsMetadata = formMethods.getValues("metadata")?.apps;