diff --git a/src/actions/text/GetCapitalize.ts b/src/actions/text/GetCapitalize.ts new file mode 100644 index 0000000..42e2caa --- /dev/null +++ b/src/actions/text/GetCapitalize.ts @@ -0,0 +1,11 @@ +/** + * Capitaliza a primeira letra de uma string. + * + * @param text - Texto que será capitalizado + * @returns String com a primeira letra em maiúscula + */ +export default function GetCapitalize(text: string): string { + if (!text) return ""; + + return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase(); +} diff --git a/src/app/(protected)/(cadastros)/cadastros/_components/t_pessoa/TPessoaForm.tsx b/src/app/(protected)/(cadastros)/cadastros/_components/t_pessoa/TPessoaForm.tsx index 402317e..3da7915 100644 --- a/src/app/(protected)/(cadastros)/cadastros/_components/t_pessoa/TPessoaForm.tsx +++ b/src/app/(protected)/(cadastros)/cadastros/_components/t_pessoa/TPessoaForm.tsx @@ -6,7 +6,6 @@ import { useForm, Controller } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Button } from "@/components/ui/button"; -import { Checkbox } from "@/components/ui/checkbox"; import { Dialog, DialogClose, @@ -25,14 +24,17 @@ import { FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; -import { Label } from "@/components/ui/label"; import { TPessoaSchema } from "../../_schemas/TPessoaSchema"; -import { SituacoesEnum } from "@/enums/SituacoesEnum"; import LoadingButton from "@/app/_components/loadingButton/LoadingButton"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; -import { Select, SelectContent, SelectItem, SelectTrigger } from "@/components/ui/select"; -import { Textarea } from "@/components/ui/textarea"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { HouseIcon, IdCardIcon, UserIcon } from "lucide-react"; +import { Sexo } from "@/enums/SexoEnum"; +import { useGTBEstadoCivilReadHook } from "../../_hooks/g_tb_estadocivil/useGTBEstadoCivilReadHook"; +import GetCapitalize from "@/actions/text/GetCapitalize"; +import { useGTBRegimeComunhaoReadHook } from "../../_hooks/g_tb_regimecomunhao/useGTBRegimeComunhaoReadHook"; +import { useGTBProfissaoReadHook } from "../../_hooks/g_tb_profissao/useGTBProfissaoReadHook"; type FormValues = z.infer; @@ -45,6 +47,11 @@ interface TPessoaFormProps { } export default function TCensecForm({ isOpen, data, onClose, onSave, buttonIsLoading }: TPessoaFormProps) { + + const { gTBProfissao, fetchGTBProfissao } = useGTBProfissaoReadHook(); + const { gTBEstadoCivil, fetchGTBEstadoCivil } = useGTBEstadoCivilReadHook(); + const { gTBRegimeComunhao, fetchGTBRegimeComunhao } = useGTBRegimeComunhaoReadHook(); + // Inicializa o react-hook-form com schema zod const form = useForm({ resolver: zodResolver(TPessoaSchema), @@ -56,7 +63,21 @@ export default function TCensecForm({ isOpen, data, onClose, onSave, buttonIsLoa // Atualiza o formulário quando recebe dados para edição useEffect(() => { - if (data) form.reset(data); + + const loadData = async () => { + + // Se existir dados, reseta o formulário com os dados informados + if (data) form.reset(data); + + // Aguarda a busca terminar + await fetchGTBProfissao(); + await fetchGTBEstadoCivil(); + await fetchGTBRegimeComunhao(); + }; + + // Dispara a função + loadData(); + }, [data, form]); return ( @@ -66,7 +87,8 @@ export default function TCensecForm({ isOpen, data, onClose, onSave, buttonIsLoa if (!open) onClose(null, false); }} > - + + Pessoa Preencha os dados da pessoa @@ -77,209 +99,628 @@ export default function TCensecForm({ isOpen, data, onClose, onSave, buttonIsLoa {/* Tabs */} - - Dados Pessoais - Documentos - Endereço - Contato - Casamento/Conjuge - Outros + + + + Dados Pessoais + + + Endereço + + + Documentos + {/* Dados Pessoais */} - ( - - Nome - - - - - - )} /> - - ( - - Data de Nascimento - - - - - - )} /> - - ( - - Sexo - - - - - - )} /> - - - ( - - Nacionalidade - - - - - - )} /> - - - {/* Documentos */} - - ( - - CPF/CNPJ - - - - - - )} /> - - ( - - Documento - - - - - - )} /> - - ( - - Validade do Documento - - - - - - )} /> +
+ {/* Nome */} +
+ ( + + + Nome + + + + + + + )} + /> +
+ {/* Data de Nascimento */} +
+ ( + + + Data de Nascimento + + + + + + + )} + /> +
+ {/* Sexo */} +
+ ( + + Sexo + + + + + + )} + /> +
+ {/* Nacionalidade */} +
+ ( + + + Nacionalidade + + + + + + + )} + /> +
+ {/* País de Nascimento */} +
+ ( + + + País de Nascimento + + + + + + + )} + /> +
+ {/* UF */} +
+ ( + + + UF + + + + + + + )} + /> +
+ {/* Município */} +
+ ( + + + Município + + + + + + + )} + /> +
+ {/* Naturalidade */} +
+ ( + + + Naturalidade + + + + + + + )} + /> +
+ {/* Estado Civil */} +
+ ( + + + Estado Civil + + + + + )} + /> +
+ {/* Regime */} +
+ ( + + + Regime + + + + + )} + /> +
+ {/* Profissão */} +
+ ( + + + Profissão + + + + + )} + /> +
+ {/* Pai */} +
+ ( + + + Pai + + + + + + + )} + /> +
+ {/* Mãe */} +
+ ( + + + Mãe + + + + + + + )} + /> +
+
{/* Endereço */} - ( - - Endereço - - - - - - )} /> - - ( - - Bairro - - - - - - )} /> - - ( - - Cidade - - - - - - )} /> - - ( - - UF - - - - - - )} /> - - ( - - CEP - - - - - - )} /> +
+ {/* País */} +
+ ( + + + País + + + + + + + )} + /> +
+ {/* UF */} +
+ ( + + + UF + + + + + + + )} + /> +
+ {/* CEP */} +
+ ( + + + CEP + + + + + + + )} + /> +
+ {/* Cidade */} +
+ ( + + + Cidade + + + + + + + )} + /> +
+ {/* Município */} +
+ ( + + + Município + + + + + + + )} + /> +
+ {/* Bairro */} +
+ ( + + + Bairro + + + + + + + )} + /> +
+ {/* Logradouro */} +
+ ( + + + Logradouro + + + + + + + )} + /> +
+ {/* Número */} +
+ ( + + + Número + + + + + + + )} + /> +
+ {/* Unidade */} +
+ ( + + + Unidade + + + + + + + )} + /> +
+ {/* Cidade não encontrada */} +
+ ( + + + Cidade não encontrada + + + + + + + )} + /> +
+
- {/* Contato */} - - ( - - Telefone - - - - - - )} /> + {/* Documentos */} + +
- ( - - Email - - - - - - )} /> + {/* Tipo */} +
+ ( + + Tipo + + + + + + )} + /> +
+ + {/* Número */} +
+ ( + + Número + + + + + + )} + /> +
+ + {/* CPF */} +
+ ( + + CPF + + + + + + )} + /> +
+ + {/* Órgão Emissor */} +
+ ( + + Órgão + + + + + + )} + /> +
+ + {/* UF */} +
+ ( + + UF + + + + + + )} + /> +
+ + {/* Data de Expedição */} +
+ ( + + Expedição + + + + + + )} + /> +
+ + {/* Validade */} +
+ ( + + Validade + + + + + + )} + /> +
+ +
- {/* Casamento / Conjuge */} - - ( - - Nome do Cônjuge - - - - - - )} /> - - ( - - Data do Casamento - - - - - - )} /> - - - {/* Outros */} - - ( - - Observação - -