Files
simrsx-fe/app/schemas/person-family.schema.ts
T
Khafid Prayoga 3cac23ce8a fix edit form state
fix: id list for contacts and address list

fix warning

fix duplicate contacts responsible: true

fix edit family

fix nik required
2025-12-10 14:36:32 +07:00

46 lines
1.2 KiB
TypeScript

import { z } from 'zod'
const PersonFamilySchema = z.object({
id: z.number().optional(),
relation: z.enum(['mother', 'father', 'guardian', 'emergency_contact']),
name: z
.string({
required_error: 'Mohon lengkapi nama',
})
.min(1, 'Mohon lengkapi nama'),
education: z
.string({
required_error: 'Mohon pilih pendidikan',
})
.min(1, 'Mohon pilih pendidikan'),
occupation: z.string().optional(),
})
const PersonFamiliesSchema = z.discriminatedUnion('shareFamilyData', [
z.object({
shareFamilyData: z.literal('0'),
families: z.array(PersonFamilySchema).optional().default([]),
}),
z.object({
shareFamilyData: z.literal('1'),
families: z.array(PersonFamilySchema).min(1, 'Minimal 1 kontak keluarga'),
}),
])
interface PersonFamiliesFormData {
shareFamilyData: '0' | '1'
families: {
id?: number
relation: 'mother' | 'father' | 'guardian' | 'emergency_contact'
name: string
education: string
occupation?: string
}[]
}
type PersonFamilyFormData = z.infer<typeof PersonFamilySchema>
// type PersonFamiliesFormData = z.infer<typeof PersonFamiliesSchema>
export { PersonFamilySchema, PersonFamiliesSchema }
export type { PersonFamilyFormData, PersonFamiliesFormData }