Skip to content

Commit d175f23

Browse files
Overload getFormattedNumber utility function (GH-26)
2 parents 7919e8a + f1cff9e commit d175f23

File tree

6 files changed

+13
-10
lines changed

6 files changed

+13
-10
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ opposite. You can use the [development](./development) to test and develop your
1919
```jsx
2020
import {getFormattedNumber, getMetadata, parsePhoneNumber, useMask} from "react-phone-hooks";
2121

22+
getFormattedNumber("440201111111"); // +44 (02) 011 11111
2223
getMetadata("440201111111"); // ["gb", "United Kingdom", "44", "+44 (..) ... ....."]
23-
getFormattedNumber("440201111111", "+44 (..) ... ....."); // +44 (02) 011 11111
2424
parsePhoneNumber("+44 (02) 011 11111"); // {countryCode: 44, areaCode: "02", phoneNumber: "01111111", isoCode: "gb"}
2525

2626
const PhoneInput = (props) => {

development/src/phone-hooks/metadata/countries.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1173,7 +1173,7 @@
11731173
"xk",
11741174
"Kosovo",
11751175
"383",
1176-
"+383 (...) ... ..."
1176+
"+383 (...) ... ... ..."
11771177
],
11781178
[
11791179
"kw",
@@ -1899,7 +1899,7 @@
18991899
"sg",
19001900
"Singapore",
19011901
"65",
1902-
"+65 (....) ... ...."
1902+
"+65 (....) .... ..."
19031903
],
19041904
[
19051905
"sx",

development/src/phone-hooks/metadata/validations.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@
181181
],
182182
"cu": [
183183
"^\\d{6,10}$",
184-
"^[27]\\d{6,7}|[34]\\d{5,7}|63\\d{6}|(?:5|8\\d\\d)\\d{7}$"
184+
"^(?:[2-7]|8\\d\\d)\\d{7}|[2-47]\\d{6}|[34]\\d{5}$"
185185
],
186186
"cv": [
187187
"^\\d{7}$",
@@ -577,7 +577,7 @@
577577
],
578578
"mx": [
579579
"^\\d{10,11}$",
580-
"^1(?:(?:22|44|7[27]|87|99)[1-9]|65[0-689])\\d{7}|(?:1(?:[01]\\d|2[13-9]|[35][1-9]|4[0-35-9]|6[0-46-9]|7[013-689]|8[1-69]|9[1-8])|[2-9]\\d)\\d{8}$"
580+
"^1(?:(?:22|44|7[27]|87|9[69])[1-9]|65[0-689])\\d{7}|(?:1(?:[01]\\d|2[13-9]|[35][1-9]|4[0-35-9]|6[0-46-9]|7[013-689]|8[1-69]|9[1-578])|[2-9]\\d)\\d{8}$"
581581
],
582582
"my": [
583583
"^\\d{8,10}$",
@@ -825,7 +825,7 @@
825825
],
826826
"tm": [
827827
"^\\d{8}$",
828-
"^[1-6]\\d{7}$"
828+
"^(?:[1-6]\\d|71)\\d{6}$"
829829
],
830830
"tn": [
831831
"^\\d{8}$",
@@ -912,8 +912,8 @@
912912
"^(?:[2-6]|8\\d{5})\\d{4}|[78]\\d{6}|[68]\\d{5}$"
913913
],
914914
"xk": [
915-
"^\\d{8,9}$",
916-
"^[23]\\d{7,8}|(?:4\\d\\d|[89]00)\\d{5}$"
915+
"^\\d{8,12}$",
916+
"^2\\d{7,8}|3\\d{7,11}|(?:4\\d\\d|[89]00)\\d{5}$"
917917
],
918918
"ye": [
919919
"^\\d{7,9}$",

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "0.1.2",
2+
"version": "0.1.3",
33
"name": "react-phone-hooks",
44
"description": "React hooks and utility functions for parsing and validating phone numbers.",
55
"keywords": [

src/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ export const cleanInput = (input: any, pattern: string) => {
3636
return Array.from(pattern, c => input[0] === c || slots.has(c) ? input.shift() || c : c);
3737
}
3838

39-
export const getFormattedNumber = (rawValue: any, pattern: string) => {
39+
export const getFormattedNumber = (rawValue: any, pattern?: string) => {
4040
/** Returns the reformatted input value based on the given pattern */
41+
pattern = pattern || getMetadata(rawValue)?.[3] || "";
4142
return displayFormat(cleanInput(rawValue, pattern.replaceAll(/\d/g, ".")).join(""));
4243
}
4344

tests/utils.test.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ describe("Verifying the basic functionality", () => {
88
const metadata = getMetadata(rawValue);
99

1010
const formattedNumber = getFormattedNumber(rawValue, (metadata as any)[3]);
11+
const formattedNumberOverloaded = getFormattedNumber(rawValue);
1112
const parsedPhoneNumber = parsePhoneNumber(formattedNumber);
1213
const rawPhoneNumber = getRawValue(formattedNumber);
1314

15+
assert(formattedNumber === formattedNumberOverloaded);
1416
assert(formattedNumber !== null && formattedNumber === "+1 (702) 123 4567");
1517
assert(parsedPhoneNumber !== null && parsedPhoneNumber.countryCode === 1);
1618
assert(parsedPhoneNumber.areaCode === "702" && parsedPhoneNumber.phoneNumber === "1234567");

0 commit comments

Comments
 (0)