@@ -7,16 +7,17 @@ import React, {
7
7
import { TextInput , TextInputProps } from 'react-native'
8
8
import { mask , unMask } from '../utils/mask'
9
9
import type { MaskOptions } from '../@types/MaskOptions'
10
+ import type { FormatType } from '../@types/FormatType'
10
11
11
12
type TIProps = Omit < TextInputProps , 'onChangeText' >
12
13
13
14
export interface MaskedTextInputProps extends TIProps {
14
15
mask ?: string
15
- type ?: 'custom' | 'currency'
16
+ type ?: FormatType
16
17
options ?: MaskOptions
17
18
defaultValue ?: string
18
19
onChangeText : ( text : string , rawText : string ) => void
19
- inputAccessoryView ?: JSX . Element ;
20
+ inputAccessoryView ?: JSX . Element
20
21
}
21
22
22
23
export const MaskedTextInputComponent : ForwardRefRenderFunction <
@@ -35,38 +36,43 @@ export const MaskedTextInputComponent: ForwardRefRenderFunction<
35
36
} ,
36
37
ref
37
38
) : JSX . Element => {
38
- const getMaskedValue = ( value : string ) => mask ( value , pattern , type , options ) ;
39
- const getUnMaskedValue = ( value : string ) => unMask ( value , type ) ;
39
+ const getMaskedValue = ( value : string ) => mask ( value , pattern , type , options )
40
+ const getUnMaskedValue = ( value : string ) =>
41
+ unMask ( value , type as 'custom' | 'currency' )
40
42
41
43
const defaultValueCustom = defaultValue || ''
42
44
const defaultValueCurrency = defaultValue || '0'
43
45
44
- const initialMaskedValue = getMaskedValue ( type === 'currency' ? defaultValueCurrency : defaultValueCustom ) ;
46
+ const initialMaskedValue = getMaskedValue (
47
+ type === 'currency' ? defaultValueCurrency : defaultValueCustom
48
+ )
45
49
46
- const initialUnMaskedValue = getUnMaskedValue ( type === 'currency' ? defaultValueCurrency : defaultValueCustom ) ;
50
+ const initialUnMaskedValue = getUnMaskedValue (
51
+ type === 'currency' ? defaultValueCurrency : defaultValueCustom
52
+ )
47
53
48
- const [ maskedValue , setMaskedValue ] = useState ( initialMaskedValue ) ;
49
- const [ unMaskedValue , setUnmaskedValue ] = useState ( initialUnMaskedValue ) ;
54
+ const [ maskedValue , setMaskedValue ] = useState ( initialMaskedValue )
55
+ const [ unMaskedValue , setUnmaskedValue ] = useState ( initialUnMaskedValue )
50
56
51
57
function onChange ( value : string ) {
52
- const newUnMaskedValue = unMask ( value , type ) ;
53
- const newMaskedValue = mask ( newUnMaskedValue , pattern , type , options ) ;
58
+ const newUnMaskedValue = unMask ( value , type as 'custom' | 'currency' )
59
+ const newMaskedValue = mask ( newUnMaskedValue , pattern , type , options )
54
60
55
- setMaskedValue ( newMaskedValue ) ;
56
- setUnmaskedValue ( newUnMaskedValue ) ;
61
+ setMaskedValue ( newMaskedValue )
62
+ setUnmaskedValue ( newUnMaskedValue )
57
63
}
58
64
59
65
useEffect ( ( ) => {
60
- onChangeText ( maskedValue , unMaskedValue ) ;
61
- } , [ maskedValue , unMaskedValue ] ) ;
66
+ onChangeText ( maskedValue , unMaskedValue )
67
+ } , [ maskedValue , unMaskedValue ] )
62
68
63
69
useEffect ( ( ) => {
64
70
if ( value ) {
65
- setMaskedValue ( getMaskedValue ( value ) ) ;
66
- setUnmaskedValue ( getUnMaskedValue ( value ) ) ;
71
+ setMaskedValue ( getMaskedValue ( value ) )
72
+ setUnmaskedValue ( getUnMaskedValue ( value ) )
67
73
} else {
68
- setMaskedValue ( initialMaskedValue ) ;
69
- setUnmaskedValue ( initialUnMaskedValue ) ;
74
+ setMaskedValue ( initialMaskedValue )
75
+ setUnmaskedValue ( initialUnMaskedValue )
70
76
}
71
77
} , [ value ] )
72
78
@@ -81,7 +87,7 @@ export const MaskedTextInputComponent: ForwardRefRenderFunction<
81
87
/>
82
88
{ inputAccessoryView }
83
89
</ >
84
- ) ;
85
- } ;
90
+ )
91
+ }
86
92
87
- export const MaskedTextInput = forwardRef ( MaskedTextInputComponent ) ;
93
+ export const MaskedTextInput = forwardRef ( MaskedTextInputComponent )
0 commit comments