diff --git a/apps/web/feactures/training/components/form.tsx b/apps/web/feactures/training/components/form.tsx index 323bf6e..3c8872b 100644 --- a/apps/web/feactures/training/components/form.tsx +++ b/apps/web/feactures/training/components/form.tsx @@ -23,6 +23,10 @@ import { useForm } from 'react-hook-form'; import { useCreateTraining } from "../hooks/use-training"; import { TrainingSchema, trainingSchema } from '../schemas/training'; +import { SelectSearchable } from '@repo/shadcn/select-searchable' +import React from 'react'; +import { useStateQuery, useMunicipalityQuery, useParishQuery } from '@/feactures/location/hooks/use-query-location'; + const PRODUCTIVE_ACTIVITIES = [ 'Agricola', 'Textil', @@ -47,6 +51,25 @@ export function CreateTrainingForm({ isPending: isSaving, } = useCreateTraining(); + const [state, setState] = React.useState(0); + const [municipality, setMunicipality] = React.useState(0); + const [disabledMunicipality, setDisabledMunicipality] = React.useState(true); + const [disabledParish, setDisabledParish] = React.useState(true); + + const { data : dataState } = useStateQuery() + const { data : dataMunicipality } = useMunicipalityQuery(state) + const { data : dataParish } = useParishQuery(municipality) + + const stateOptions = dataState?.data || [{id:0,name:'Sin estados'}] + + const municipalityOptions = Array.isArray(dataMunicipality?.data) && dataMunicipality.data.length > 0 + ? dataMunicipality.data + : [{id:0,stateId:0,name:'Sin Municipios'}] + // const parishOptions = dataParish?.data || [{id:0,municipalityId:0,name:'Sin Parroquias'}] + const parishOptions = Array.isArray(dataParish?.data) && dataParish.data.length > 0 + ? dataParish.data + : [{id:0,stateId:0,name:'Sin Parroquias'}] + const form = useForm({ resolver: zodResolver(trainingSchema), defaultValues: { @@ -80,9 +103,9 @@ export function CreateTrainingForm({ photo2: defaultValues?.photo2 || '', photo3: defaultValues?.photo3 || '', paralysisReason: defaultValues?.paralysisReason || '', - state: defaultValues?.state || '', - municipality: defaultValues?.municipality || '', - parish: defaultValues?.parish || '', + state: defaultValues?.state || undefined, + municipality: defaultValues?.municipality || undefined, + parish: defaultValues?.parish || undefined, }, mode: 'onChange', }); @@ -147,7 +170,85 @@ export function CreateTrainingForm({

Ubicación

- ( + ( + + Estado + + ({ + value: item.id.toString(), + label: item.name, + })) || [] + } + onValueChange={(value : any) => + {field.onChange(Number(value)); setState(value); setDisabledMunicipality(false); setDisabledParish(true)} + } + placeholder="Selecciona un estado" + defaultValue={field.value?.toString()} + // disabled={readOnly} + /> + + + )} + /> + + ( + + Municipio + + ({ + value: item.id.toString(), + label: item.name, + })) || [] + } + onValueChange={(value : any) => + {field.onChange(Number(value)); setMunicipality(value); setDisabledParish(false)} + } + placeholder="Selecciona un Municipio" + defaultValue={field.value?.toString()} + disabled={disabledMunicipality} + /> + + + )} + /> + + ( + + Parroquia + + ({ + value: item.id.toString(), + label: item.name, + })) || [] + } + onValueChange={(value : any) => + field.onChange(Number(value)) + } + placeholder="Selecciona una Parroquia" + defaultValue={field.value?.toString()} + disabled={disabledParish} + /> + + + )} + /> + + {/* ( Estado @@ -169,7 +270,7 @@ export function CreateTrainingForm({ - )} /> + )} /> */} ( diff --git a/apps/web/feactures/training/schemas/training.ts b/apps/web/feactures/training/schemas/training.ts index e82ac50..ab9ac5f 100644 --- a/apps/web/feactures/training/schemas/training.ts +++ b/apps/web/feactures/training/schemas/training.ts @@ -32,9 +32,9 @@ export const trainingSchema = z.object({ photo2: z.string().optional().default(''), photo3: z.string().optional().default(''), paralysisReason: z.string().optional().default(''), - state: z.string().optional().nullable(), - municipality: z.string().optional().nullable(), - parish: z.string().optional().nullable(), + state: z.number().optional().nullable(), + municipality: z.number().optional().nullable(), + parish: z.number().optional().nullable(), }); export type TrainingSchema = z.infer; diff --git a/apps/web/feactures/users/components/update-profile-form.tsx b/apps/web/feactures/users/components/update-profile-form.tsx index f85c207..322cbf4 100644 --- a/apps/web/feactures/users/components/update-profile-form.tsx +++ b/apps/web/feactures/users/components/update-profile-form.tsx @@ -78,9 +78,7 @@ export function ModalForm({ parish: undefined } - - - console.log(defaultValues); + // console.log(defaultValues); const form = useForm({ resolver: zodResolver(updateUser),