@@ -11,8 +11,7 @@ import {
1111 ActivityIndicator ,
1212} from 'react-native' ;
1313import { Input } from '@components/common' ;
14- import type { Cliente , ClientePayload } from '@types/cliente' ;
15-
14+ import type { Cliente , ClientePayload } from '@typings/cliente' ;
1615interface ClienteFormProps {
1716 visivel : boolean ;
1817 clienteParaEditar ?: Cliente | null ;
@@ -33,6 +32,22 @@ export function ClienteForm({ visivel, clienteParaEditar, onSalvar, onFechar }:
3332 const [ form , setForm ] = useState < ClientePayload > ( VAZIO ) ;
3433 const [ salvando , setSalvando ] = useState ( false ) ;
3534 const [ erros , setErros ] = useState < Partial < Record < keyof ClientePayload , string > > > ( { } ) ;
35+ function mascaraCPF ( value : string ) : string {
36+ return value
37+ . replace ( / \D / g, '' )
38+ . slice ( 0 , 11 )
39+ . replace ( / ( \d { 3 } ) ( \d ) / , '$1.$2' )
40+ . replace ( / ( \d { 3 } ) ( \d ) / , '$1.$2' )
41+ . replace ( / ( \d { 3 } ) ( \d { 1 , 2 } ) $ / , '$1-$2' ) ;
42+ }
43+
44+ function mascaraTelefone ( value : string ) : string {
45+ return value
46+ . replace ( / \D / g, '' )
47+ . slice ( 0 , 11 )
48+ . replace ( / ( \d { 2 } ) ( \d ) / , '($1)$2' )
49+ . replace ( / ( \d { 5 } ) ( \d { 1 , 4 } ) $ / , '$1-$2' ) ;
50+ }
3651
3752 useEffect ( ( ) => {
3853 if ( clienteParaEditar ) {
@@ -48,8 +63,7 @@ export function ClienteForm({ visivel, clienteParaEditar, onSalvar, onFechar }:
4863 setForm ( VAZIO ) ;
4964 }
5065 setErros ( { } ) ;
51- } , [ clienteParaEditar , visivel ] ) ;
52-
66+ } , [ clienteParaEditar ] ) ;
5367 function set ( field : keyof ClientePayload , value : string ) {
5468 setForm ( ( prev ) => ( { ...prev , [ field ] : value } ) ) ;
5569 setErros ( ( prev ) => ( { ...prev , [ field ] : undefined } ) ) ;
@@ -100,20 +114,22 @@ export function ClienteForm({ visivel, clienteParaEditar, onSalvar, onFechar }:
100114 placeholder = "Nome completo"
101115 />
102116 < Input
103- label = "CPF *"
104- value = { form . cpf }
105- onChangeText = { ( v ) => set ( 'cpf' , v ) }
106- error = { erros . cpf }
107- placeholder = "000.000.000-00"
117+ label = "CPF *"
118+ value = { form . cpf }
119+ onChangeText = { ( v ) => set ( 'cpf' , mascaraCPF ( v ) ) }
120+ error = { erros . cpf }
121+ placeholder = "000.000.000-00"
122+ keyboardType = "numeric"
108123 />
109- < Input
110- label = "Telefone *"
111- value = { form . telefone }
112- onChangeText = { ( v ) => set ( 'telefone' , v ) }
113- error = { erros . telefone }
114- placeholder = "(00) 00000-0000"
124+ < Input
125+ label = "Telefone *"
126+ value = { form . telefone }
127+ onChangeText = { ( v ) => set ( 'telefone' , mascaraTelefone ( v ) ) }
128+ error = { erros . telefone }
129+ placeholder = "(00)90000-0000"
130+ keyboardType = "numeric"
115131 />
116- < Input
132+ < Input
117133 label = "E-mail *"
118134 value = { form . email }
119135 onChangeText = { ( v ) => set ( 'email' , v ) }
0 commit comments