Files
web/apps/scandic-web/components/HotelReservation/FindMyBooking/schema.ts
Christel Westerberg 9ca7cfc0d3 Merged in fix/STAY-15-validation-messages (pull request #3203)
fix: Show correct validation errors in additionalInfoForm

* fix: Show correct validation errors in additionalInfoForm


Approved-by: Bianca Widstam
Approved-by: Erik Tiekstra
2025-11-24 08:36:17 +00:00

49 lines
1.3 KiB
TypeScript

import { z } from "zod"
export {
type AdditionalInfoFormSchema,
additionalInfoFormSchema,
findMyBookingErrors,
type FindMyBookingFormSchema,
findMyBookingFormSchema,
}
const findMyBookingErrors = {
BOOKING_NUMBER_INVALID: "BOOKING_NUMBER_INVALID",
BOOKING_NUMBER_REQUIRED: "BOOKING_NUMBER_REQUIRED",
FIRST_NAME_REQUIRED: "FIRST_NAME_REQUIRED",
LAST_NAME_REQUIRED: "LAST_NAME_REQUIRED",
EMAIL_INVALID: "EMAIL_INVALID",
EMAIL_REQUIRED: "EMAIL_REQUIRED",
} as const
const additionalInfoFormSchema = z.object({
firstName: z
.string()
.trim()
.max(250)
.min(1, findMyBookingErrors.FIRST_NAME_REQUIRED),
email: z
.string()
.max(250)
.min(1, findMyBookingErrors.EMAIL_REQUIRED)
.email(findMyBookingErrors.EMAIL_INVALID),
})
const findMyBookingFormSchema = additionalInfoFormSchema.extend({
confirmationNumber: z
.string()
.trim()
.min(1, findMyBookingErrors.BOOKING_NUMBER_REQUIRED)
.regex(/^[0-9]+(-[0-9])?$/, findMyBookingErrors.BOOKING_NUMBER_INVALID),
lastName: z
.string()
.trim()
.max(250)
.min(1, findMyBookingErrors.LAST_NAME_REQUIRED),
})
type AdditionalInfoFormSchema = z.output<typeof additionalInfoFormSchema>
type FindMyBookingFormSchema = z.output<typeof findMyBookingFormSchema>