diff --git a/console/package-lock.json b/console/package-lock.json index 9076727154..086b3de455 100644 --- a/console/package-lock.json +++ b/console/package-lock.json @@ -32,10 +32,12 @@ "codemirror": "^5.65.8", "cors": "^2.8.5", "file-saver": "^2.0.5", + "flag-icons": "^6.6.6", "google-proto-files": "^3.0.2", "google-protobuf": "^3.21.2", "grpc-web": "^1.4.1", - "libphonenumber-js": "^1.10.15", + "i18n-iso-countries": "^7.5.0", + "libphonenumber-js": "^1.10.19", "material-design-icons-iconfont": "^6.1.1", "moment": "^2.29.4", "ngx-color": "^8.0.3", @@ -6728,6 +6730,11 @@ "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "dev": true }, + "node_modules/diacritics": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", + "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==" + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -7929,6 +7936,11 @@ "node": ">=8" } }, + "node_modules/flag-icons": { + "version": "6.6.6", + "resolved": "https://registry.npmjs.org/flag-icons/-/flag-icons-6.6.6.tgz", + "integrity": "sha512-4lHDKxldnQ7q617pf9Dx9nAetT+9zcMpUexbRrc9kjLw9KJgZ83zA5Dky3Vv7ZDzUjAiZ46x/cy5P0HnEnqA2A==" + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -8688,6 +8700,17 @@ "ms": "^2.0.0" } }, + "node_modules/i18n-iso-countries": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/i18n-iso-countries/-/i18n-iso-countries-7.5.0.tgz", + "integrity": "sha512-PtfKJNWLVhhU0KBX/8asmywjAcuyQk07mmmMwxFJcddTNBJJ1yvpY2qxVmyxbtVF+9+6eg9phgpv83XPUKU5CA==", + "dependencies": { + "diacritics": "1.3.0" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -10194,9 +10217,9 @@ } }, "node_modules/libphonenumber-js": { - "version": "1.10.15", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.15.tgz", - "integrity": "sha512-sLeVLmWX17VCKKulc+aDIRHS95TxoTsKMRJi5s5gJdwlqNzMWcBCtSHHruVyXjqfi67daXM2SnLf2juSrdx5Sg==" + "version": "1.10.19", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.19.tgz", + "integrity": "sha512-MDZ1zLIkfSDZV5xBta3nuvbEOlsnKCPe4z5r3hyup/AXveevkl9A1eSWmLhd2FX4k7pJDe4MrLeQsux0HI/VWg==" }, "node_modules/license-webpack-plugin": { "version": "4.0.2", diff --git a/console/package.json b/console/package.json index 8cc184db54..d4b80636f6 100644 --- a/console/package.json +++ b/console/package.json @@ -36,10 +36,12 @@ "codemirror": "^5.65.8", "cors": "^2.8.5", "file-saver": "^2.0.5", + "flag-icons": "^6.6.6", "google-proto-files": "^3.0.2", "google-protobuf": "^3.21.2", "grpc-web": "^1.4.1", - "libphonenumber-js": "^1.10.15", + "i18n-iso-countries": "^7.5.0", + "libphonenumber-js": "^1.10.19", "material-design-icons-iconfont": "^6.1.1", "moment": "^2.29.4", "ngx-color": "^8.0.3", diff --git a/console/src/app/app.module.ts b/console/src/app/app.module.ts index 8d5690df5e..1ad82dfd4a 100644 --- a/console/src/app/app.module.ts +++ b/console/src/app/app.module.ts @@ -18,6 +18,7 @@ import { ServiceWorkerModule } from '@angular/service-worker'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { AuthConfig, OAuthModule, OAuthStorage } from 'angular-oauth2-oidc'; import { from, Observable } from 'rxjs'; +import * as i18nIsoCountries from 'i18n-iso-countries'; import { AuthGuard } from 'src/app/guards/auth.guard'; import { RoleGuard } from 'src/app/guards/role.guard'; import { UserGuard } from 'src/app/guards/user.guard'; @@ -58,10 +59,15 @@ import { ThemeService } from './services/theme.service'; import { ToastService } from './services/toast.service'; registerLocaleData(localeDe); +i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/de.json')); registerLocaleData(localeZh); +i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/zh.json')); registerLocaleData(localeFr); +i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/fr.json')); registerLocaleData(localeIt); +i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/it.json')); registerLocaleData(localeEn); +i18nIsoCountries.registerLocale(require('i18n-iso-countries/langs/en.json')); export class WebpackTranslateLoader implements TranslateLoader { getTranslation(lang: string): Observable { diff --git a/console/src/app/pages/users/user-create/user-create.component.html b/console/src/app/pages/users/user-create/user-create.component.html index 3832f6f72d..4705f2c683 100644 --- a/console/src/app/pages/users/user-create/user-create.component.html +++ b/console/src/app/pages/users/user-create/user-create.component.html @@ -139,13 +139,26 @@

{{ 'USER.CREATE.ADDRESSANDPHONESECTION' | translate }}

- - {{ 'USER.PROFILE.PHONE' | translate }} - - - {{ 'USER.VALIDATION.REQUIRED' | translate }} - - +
+ + {{ 'USER.PROFILE.COUNTRY' | translate }} + + + + + {{ country.countryName }} + +{{ country.countryCallingCode }} + + + + + {{ 'USER.PROFILE.PHONE' | translate }} + + + {{ 'USER.VALIDATION.REQUIRED' | translate }} + + +