1
- import PbEnhancedElement from "../pb_enhanced_element" ;
1
+ import PbEnhancedElement from "../pb_enhanced_element"
2
+ import { INPUTMASKS } from "./inputMask"
2
3
3
4
export default class PbTextInput extends PbEnhancedElement {
4
5
static get selector ( ) {
@@ -8,6 +9,7 @@ export default class PbTextInput extends PbEnhancedElement {
8
9
connect ( ) {
9
10
this . handleInput = this . handleInput . bind ( this ) ;
10
11
this . element . addEventListener ( "input" , this . handleInput ) ;
12
+ this . handleInput ( ) ;
11
13
}
12
14
13
15
disconnect ( ) {
@@ -20,19 +22,15 @@ export default class PbTextInput extends PbEnhancedElement {
20
22
const rawValue = this . element . value ;
21
23
let formattedValue = rawValue ;
22
24
23
- switch ( maskType ) {
24
- case "currency" :
25
- formattedValue = formatCurrency ( rawValue ) ;
26
- break ;
27
- case "ssn" :
28
- formattedValue = formatSSN ( rawValue ) ;
29
- break ;
30
- case "postal_code" :
31
- formattedValue = formatPostalCode ( rawValue ) ;
32
- break ;
33
- case "zip_code" :
34
- formattedValue = formatZipCode ( rawValue ) ;
35
- break ;
25
+ const maskKey = {
26
+ currency : 'currency' ,
27
+ ssn : 'ssn' ,
28
+ postal_code : 'postalCode' ,
29
+ zip_code : 'zipCode' ,
30
+ } [ maskType ] ;
31
+
32
+ if ( maskKey && INPUTMASKS [ maskKey ] ) {
33
+ formattedValue = INPUTMASKS [ maskKey ] . format ( rawValue ) ;
36
34
}
37
35
38
36
const sanitizedInput = this . element
@@ -57,34 +55,6 @@ export default class PbTextInput extends PbEnhancedElement {
57
55
}
58
56
}
59
57
60
- function formatCurrency ( value ) {
61
- const numericValue = value . replace ( / [ ^ 0 - 9 ] / g, "" ) . slice ( 0 , 15 ) ;
62
- if ( ! numericValue ) return "" ;
63
- const dollars = parseFloat ( ( parseInt ( numericValue ) / 100 ) . toFixed ( 2 ) ) ;
64
- if ( dollars === 0 ) return "" ;
65
- return new Intl . NumberFormat ( "en-US" , {
66
- style : "currency" ,
67
- currency : "USD" ,
68
- maximumFractionDigits : 2 ,
69
- } ) . format ( dollars ) ;
70
- }
71
-
72
- function formatSSN ( value ) {
73
- const cleaned = value . replace ( / \D / g, "" ) . slice ( 0 , 9 ) ;
74
- return cleaned
75
- . replace ( / ( \d { 5 } ) (? = \d ) / , "$1-" )
76
- . replace ( / ( \d { 3 } ) (? = \d ) / , "$1-" ) ;
77
- }
78
-
79
- function formatZipCode ( value ) {
80
- return value . replace ( / \D / g, "" ) . slice ( 0 , 5 ) ;
81
- }
82
-
83
- function formatPostalCode ( value ) {
84
- const cleaned = value . replace ( / \D / g, "" ) . slice ( 0 , 9 ) ;
85
- return cleaned . replace ( / ( \d { 5 } ) (? = \d ) / , "$1-" ) ;
86
- }
87
-
88
58
function sanitizeSSN ( input ) {
89
59
return input . replace ( / \D / g, "" ) ;
90
60
}
0 commit comments