diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ea64e10fe69e794d9810e3995266725951e842ba..aa28930f3d67c06e53fea94b8b16963ec416a3f2 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -29,6 +29,7 @@ "i18next": "^20.6.0", "i18next-browser-languagedetector": "^6.1.2", "i18next-http-backend": "^1.3.1", + "libphonenumber-js": "^1.9.35", "react": "^17.0.2", "react-datepicker": "^4.2.1", "react-dom": "^17.0.2", @@ -13861,6 +13862,11 @@ "node": ">= 0.8.0" } }, + "node_modules/libphonenumber-js": { + "version": "1.9.35", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.35.tgz", + "integrity": "sha512-6ok1JD4GcU7owpbp07WJZlxoGdlY538OCgN9fmOlWwCzqPNLzra7tvaFz7NJP8Hcmp1lkm97wNZ2hICN9uGylg==" + }, "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -33050,6 +33056,11 @@ "type-check": "~0.4.0" } }, + "libphonenumber-js": { + "version": "1.9.35", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.35.tgz", + "integrity": "sha512-6ok1JD4GcU7owpbp07WJZlxoGdlY538OCgN9fmOlWwCzqPNLzra7tvaFz7NJP8Hcmp1lkm97wNZ2hICN9uGylg==" + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", diff --git a/frontend/package.json b/frontend/package.json index 53e25d000eea33036ee0e4110a332145e4e95a1b..720dd094e06b00236343ac044abd8c87ebbcc854 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -24,6 +24,7 @@ "i18next": "^20.6.0", "i18next-browser-languagedetector": "^6.1.2", "i18next-http-backend": "^1.3.1", + "libphonenumber-js": "^1.9.35", "react": "^17.0.2", "react-datepicker": "^4.2.1", "react-dom": "^17.0.2", diff --git a/frontend/public/locales/en/common.json b/frontend/public/locales/en/common.json index f002b0643b3d6a387ecce79fc8d2fb399e364b54..b9cdf253be1bb63721cb96b9594f1cbdfdf7885d 100644 --- a/frontend/public/locales/en/common.json +++ b/frontend/public/locales/en/common.json @@ -48,7 +48,8 @@ "invalidIdNumber": "Invalid national ID number", "nationalIdNumberRequired": "National ID number required", "roleTypeRequired": "Role type is required", - "roleEndRequired": "Role end date is required" + "roleEndRequired": "Role end date is required", + "invalidMobilePhoneNumber": "Invalid phone number" }, "button": { "back": "Back", diff --git a/frontend/public/locales/nb/common.json b/frontend/public/locales/nb/common.json index 314af2fff20c2c6cc5a5e1128e88260eb7dde61a..06f1daa6c7ab405ee389b3eff5532e261e76bf85 100644 --- a/frontend/public/locales/nb/common.json +++ b/frontend/public/locales/nb/common.json @@ -48,6 +48,8 @@ "invalidIdNumber": "Ugyldig fødselsnummer", "nationalIdNumberRequired": "Fødselsnummer er påkrevd", "roleTypeRequired": "Rolletype er påkrevd", + "roleEndRequired": "Sluttdato for rolle er påkrevd", + "invalidMobilePhoneNumber": "Ugyldig telefonnummer" "roleEndRequired": "Sluttdato for rolle er påkrevd" }, "button": { diff --git a/frontend/public/locales/nn/common.json b/frontend/public/locales/nn/common.json index f3263eefaff0c7d4a55ecbd4e2a7855772a9bbce..a04fe47ebe889b769ae7c57a8bc783ccfb4c4fc9 100644 --- a/frontend/public/locales/nn/common.json +++ b/frontend/public/locales/nn/common.json @@ -49,6 +49,8 @@ "invalidIdNumber": "Ugyldig fødselsnummer", "nationalIdNumberRequired": "Fødselsnummer er påkrevd", "roleTypeRequired": "Rolletype er påkrevd", + "roleEndRequired": "Sluttdato for rolle er påkrevd", + "invalidMobilePhoneNumber": "Ugyldig telefonnummer" "roleEndRequired": "Sluttdato for rolle er påkrevd" }, "button": { diff --git a/frontend/src/utils/index.ts b/frontend/src/utils/index.ts index f269b160aac3b663ad716744d901823f859a7d38..d91492690d219b9de7aaa5310bba5b16ecc31ed2 100644 --- a/frontend/src/utils/index.ts +++ b/frontend/src/utils/index.ts @@ -1,5 +1,6 @@ import validator from '@navikt/fnrvalidator' import i18n from 'i18next' +import { isValidPhoneNumber } from 'libphonenumber-js' export function getCookie(name: string) { if (!document.cookie) { @@ -50,3 +51,12 @@ export function isValidFnr(data: string | undefined): boolean | string { // TypeScript complains if toString is not used on the function result return i18n.t('common:validation.invalidIdNumber').toString() } + +export function isValidMobilePhoneNumber(data: string): boolean | string { + const valid = isValidPhoneNumber(data) + if (valid) { + return true + } + // TypeScript complains if toString is not used on the function result + return i18n.t('common:validation.invalidMobilePhoneNumber').toString() +} \ No newline at end of file