mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-23 23:05:46 +00:00
feat(FE-42): create Warehouse form validation schema
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
import * as Yup from 'yup';
|
||||||
|
import { WarehouseType } from '@/types/api/master-data/warehouse';
|
||||||
|
|
||||||
|
const TYPE_VALUES = ['AREA', 'LOKASI', 'KANDANG'] as const;
|
||||||
|
|
||||||
|
export const WarehouseFormSchema = Yup.object({
|
||||||
|
name: Yup.string().required('Nama wajib diisi!'),
|
||||||
|
|
||||||
|
type: Yup.string<WarehouseType>()
|
||||||
|
.oneOf(TYPE_VALUES)
|
||||||
|
.required('Tipe wajib diisi!'),
|
||||||
|
|
||||||
|
areaId: Yup.number()
|
||||||
|
.transform((v, orig) =>
|
||||||
|
orig === '' || orig === 0 || Number.isNaN(v) ? undefined : v
|
||||||
|
)
|
||||||
|
.when('type', {
|
||||||
|
is: (t: WarehouseType | undefined) =>
|
||||||
|
t === 'AREA' || t === 'LOKASI' || t === 'KANDANG',
|
||||||
|
then: (s) => s.min(1, 'Area wajib diisi!').required('Area wajib diisi!'),
|
||||||
|
otherwise: (s) => s.notRequired(),
|
||||||
|
}),
|
||||||
|
area: Yup.object({
|
||||||
|
value: Yup.number().min(1).required(),
|
||||||
|
label: Yup.string().required(),
|
||||||
|
})
|
||||||
|
.nullable()
|
||||||
|
.when('type', {
|
||||||
|
is: (t: WarehouseType | undefined) =>
|
||||||
|
t === 'AREA' || t === 'LOKASI' || t === 'KANDANG',
|
||||||
|
then: (s) => s.notRequired(),
|
||||||
|
otherwise: (s) => s.notRequired(),
|
||||||
|
}),
|
||||||
|
|
||||||
|
locationId: Yup.number()
|
||||||
|
.transform((v, orig) =>
|
||||||
|
orig === '' || orig === 0 || Number.isNaN(v) ? undefined : v
|
||||||
|
)
|
||||||
|
.when('type', {
|
||||||
|
is: (t: WarehouseType | undefined) => t === 'LOKASI' || t === 'KANDANG',
|
||||||
|
then: (s) =>
|
||||||
|
s.min(1, 'Lokasi wajib diisi!').required('Lokasi wajib diisi!'),
|
||||||
|
otherwise: (s) => s.notRequired(),
|
||||||
|
}),
|
||||||
|
location: Yup.object({
|
||||||
|
value: Yup.number().min(1).required(),
|
||||||
|
label: Yup.string().required(),
|
||||||
|
})
|
||||||
|
.nullable()
|
||||||
|
.when('type', {
|
||||||
|
is: (t: WarehouseType | undefined) => t === 'LOKASI' || t === 'KANDANG',
|
||||||
|
then: (s) => s.notRequired(),
|
||||||
|
otherwise: (s) => s.notRequired(),
|
||||||
|
}),
|
||||||
|
|
||||||
|
kandangId: Yup.number()
|
||||||
|
.transform((v, orig) =>
|
||||||
|
orig === '' || orig === 0 || Number.isNaN(v) ? undefined : v
|
||||||
|
)
|
||||||
|
.when('type', {
|
||||||
|
is: (t: WarehouseType | undefined) => t === 'KANDANG',
|
||||||
|
then: (s) =>
|
||||||
|
s.min(1, 'Kandang wajib diisi!').required('Kandang wajib diisi!'),
|
||||||
|
otherwise: (s) => s.notRequired(),
|
||||||
|
}),
|
||||||
|
kandang: Yup.object({
|
||||||
|
value: Yup.number().min(1).required(),
|
||||||
|
label: Yup.string().required(),
|
||||||
|
})
|
||||||
|
.nullable()
|
||||||
|
.when('type', {
|
||||||
|
is: (t: WarehouseType | undefined) => t === 'KANDANG',
|
||||||
|
then: (s) => s.notRequired(),
|
||||||
|
otherwise: (s) => s.notRequired(),
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const UpdateWarehouseFormSchema = WarehouseFormSchema;
|
||||||
|
|
||||||
|
export type WarehouseFormValues = Yup.InferType<typeof WarehouseFormSchema>;
|
||||||
Reference in New Issue
Block a user