@@ -100,38 +100,40 @@ function formatPhone(e: Event) {
100100 let input = (e .target as HTMLInputElement ).value ;
101101
102102
103- let digits = input .replace ( / \D / g , ' ' );
103+ const startsWithPlus = input .startsWith ( ' + ' );
104104
105105
106- if (digits .startsWith (' 8' )) {
107- digits = ' 78' + digits .slice (1 );
108- } else if (digits .startsWith (' 9' )) {
109- digits = ' 79' + digits .slice (1 );
110- } else if (digits .startsWith (' 7' )) {
111- } else if (! digits .startsWith (' 7' )) {
112- digits = ' 7' + digits ;
113- }
106+ let digits = input .replace (/ \D / g , ' ' );
114107
115- let formatted = ' +7 ' ;
108+ let formatted = ' ' ;
116109
117- if (digits .length > 1 ) {
118- formatted += ' (' + digits .slice (1 , 4 );
119- }
120- if (digits .length >= 5 ) {
121- formatted += ' ) ' + digits .slice (4 , 7 );
122- }
123- if (digits .length >= 8 ) {
124- formatted += ' -' + digits .slice (7 , 9 );
125- }
126- if (digits .length >= 10 ) {
127- formatted += ' -' + digits .slice (9 , 11 );
110+ if (startsWithPlus ) {
111+ formatted = ' +' ;
112+
113+
114+ if (digits .startsWith (' 7' )) {
115+ digits = digits .slice (1 );
116+ formatted += ' 7' ;
117+
118+ if (digits .length > 0 ) formatted += ' (' + digits .slice (0 , 3 );
119+ if (digits .length >= 4 ) formatted += ' ) ' + digits .slice (3 , 6 );
120+ if (digits .length >= 7 ) formatted += ' -' + digits .slice (6 , 8 );
121+ if (digits .length >= 9 ) formatted += ' -' + digits .slice (8 , 10 );
122+ }
123+ } else {
124+ if (digits .startsWith (' 8' )) digits = ' 7' + digits .slice (1 );
125+ else if (digits .startsWith (' 9' )) digits = ' 79' + digits .slice (1 );
126+ else if (! digits .startsWith (' 7' )) digits = ' 7' + digits ;
127+ formatted = ' +7' ;
128+ if (digits .length > 1 ) formatted += ' (' + digits .slice (1 , 4 );
129+ if (digits .length >= 5 ) formatted += ' ) ' + digits .slice (4 , 7 );
130+ if (digits .length >= 8 ) formatted += ' -' + digits .slice (7 , 9 );
131+ if (digits .length >= 10 ) formatted += ' -' + digits .slice (9 , 11 );
128132 }
129133
130-
131134 form .value .phone = formatted ;
132135}
133136
134-
135137async function sendEmail(token : string ) {
136138 if (! formRef .value ) return ;
137139
0 commit comments