28 lines
772 B
TypeScript
28 lines
772 B
TypeScript
import { z } from 'zod'
|
|
import { PersonAddressSchema } from './person-address.schema'
|
|
|
|
// Schema untuk alamat opsional ketika isSameAddress = '1'
|
|
const OptionalAddressSchema = PersonAddressSchema.partial()
|
|
|
|
// Schema untuk alamat required ketika isSameAddress = '0'
|
|
const RequiredAddressSchema = PersonAddressSchema
|
|
|
|
const PersonAddressRelativeSchema = z.discriminatedUnion('isSameAddress', [
|
|
z
|
|
.object({
|
|
isSameAddress: z.literal('1').default('1'),
|
|
})
|
|
.merge(OptionalAddressSchema),
|
|
|
|
z
|
|
.object({
|
|
isSameAddress: z.literal('0'),
|
|
})
|
|
.merge(RequiredAddressSchema),
|
|
])
|
|
|
|
type PersonAddressRelativeFormData = z.infer<typeof PersonAddressRelativeSchema>
|
|
|
|
export { PersonAddressRelativeSchema }
|
|
export type { PersonAddressRelativeFormData }
|