fix(input-tel): make use of awesome-phonenumber

Co-authored-by: Thijs Louisse <thijs.louisse@ing.com>
This commit is contained in:
gerjanvangeest 2022-05-10 15:16:24 +02:00 committed by Thijs Louisse
parent 33fd1bef09
commit d382887e67
14 changed files with 33 additions and 15062 deletions

View file

@ -0,0 +1,5 @@
---
'@lion/input-tel': patch
---
Make use of awsome-phonenumber, remove local copy

View file

@ -20,13 +20,12 @@ import { localize } from '@lion/localize';
* @typedef {import('lit/directives/ref.js').Ref} Ref * @typedef {import('lit/directives/ref.js').Ref} Ref
* @typedef {import('@lion/core').RenderOptions} RenderOptions * @typedef {import('@lion/core').RenderOptions} RenderOptions
* @typedef {import('@lion/form-core/types/FormatMixinTypes').FormatHost} FormatHost * @typedef {import('@lion/form-core/types/FormatMixinTypes').FormatHost} FormatHost
* @typedef {import('@lion/input-tel/types').FormatStrategy} FormatStrategy
* @typedef {import('@lion/input-tel/types').RegionCode} RegionCode * @typedef {import('@lion/input-tel/types').RegionCode} RegionCode
* @typedef {import('../types').TemplateDataForDropdownInputTel} TemplateDataForDropdownInputTel * @typedef {import('../types').TemplateDataForDropdownInputTel} TemplateDataForDropdownInputTel
* @typedef {import('../types').OnDropdownChangeEvent} OnDropdownChangeEvent * @typedef {import('../types').OnDropdownChangeEvent} OnDropdownChangeEvent
* @typedef {import('../types').DropdownRef} DropdownRef * @typedef {import('../types').DropdownRef} DropdownRef
* @typedef {import('../types').RegionMeta} RegionMeta * @typedef {import('../types').RegionMeta} RegionMeta
* @typedef {* & import('@lion/input-tel/src/lib/awesome-phonenumber-esm').default} AwesomePhoneNumber * @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
* @typedef {import('@lion/select-rich').LionSelectRich} LionSelectRich * @typedef {import('@lion/select-rich').LionSelectRich} LionSelectRich
* @typedef {import('@lion/overlays').OverlayController} OverlayController * @typedef {import('@lion/overlays').OverlayController} OverlayController
* @typedef {TemplateDataForDropdownInputTel & {data: {regionMetaList:RegionMeta[]}}} TemplateDataForIntlInputTel * @typedef {TemplateDataForDropdownInputTel & {data: {regionMetaList:RegionMeta[]}}} TemplateDataForIntlInputTel

View file

@ -1,4 +1,4 @@
import { RegionCode } from '@lion/input-tel/types/types'; import { RegionCode } from '@lion/input-tel/types';
import { LionSelectRich } from '@lion/select-rich'; import { LionSelectRich } from '@lion/select-rich';
import { LionCombobox } from '@lion/combobox'; import { LionCombobox } from '@lion/combobox';

View file

@ -40,7 +40,8 @@
"@lion/core": "0.22.0", "@lion/core": "0.22.0",
"@lion/form-core": "0.17.1", "@lion/form-core": "0.17.1",
"@lion/input": "0.17.0", "@lion/input": "0.17.0",
"@lion/localize": "0.24.0" "@lion/localize": "0.24.0",
"awesome-phonenumber": "^3.0.1"
}, },
"keywords": [ "keywords": [
"input", "input",

View file

@ -9,12 +9,12 @@ import { PhoneNumber } from './validators.js';
import { localizeNamespaceLoader } from './localizeNamespaceLoader.js'; import { localizeNamespaceLoader } from './localizeNamespaceLoader.js';
/** /**
* @typedef {import('../types').FormatStrategy} FormatStrategy
* @typedef {import('../types').RegionCode} RegionCode * @typedef {import('../types').RegionCode} RegionCode
* @typedef {import('../types').PhoneNumberType} PhoneNumberType * @typedef {import('awesome-phonenumber').PhoneNumberFormat} PhoneNumberFormat
* @typedef {import('awesome-phonenumber').PhoneNumberTypes} PhoneNumberTypes
* @typedef {import('@lion/form-core/types/FormatMixinTypes').FormatOptions} FormatOptions * @typedef {import('@lion/form-core/types/FormatMixinTypes').FormatOptions} FormatOptions
* @typedef {* & import('@lion/input-tel/src/lib/awesome-phonenumber-esm').default} AwesomePhoneNumber * @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
* @typedef {FormatOptions & {regionCode: RegionCode; formatStrategy: FormatStrategy}} FormatOptionsTel * @typedef {FormatOptions & {regionCode: RegionCode; formatStrategy: PhoneNumberFormat}} FormatOptionsTel
*/ */
export class LionInputTel extends LocalizeMixin(LionInput) { export class LionInputTel extends LocalizeMixin(LionInput) {
@ -65,7 +65,7 @@ export class LionInputTel extends LocalizeMixin(LionInput) {
* -'unknown' * -'unknown'
* See https://www.npmjs.com/package/awesome-phonenumber * See https://www.npmjs.com/package/awesome-phonenumber
* @readonly * @readonly
* @property {PhoneNumberType|undefined} activePhoneNumberType * @property {PhoneNumberTypes|undefined} activePhoneNumberTypes
*/ */
get activePhoneNumberType() { get activePhoneNumberType() {
let pn; let pn;
@ -135,7 +135,7 @@ export class LionInputTel extends LocalizeMixin(LionInput) {
* Determines what the formatter output should look like. * Determines what the formatter output should look like.
* Formatting strategies as provided by google-libphonenumber * Formatting strategies as provided by google-libphonenumber
* See: https://www.npmjs.com/package/google-libphonenumber * See: https://www.npmjs.com/package/google-libphonenumber
* @type {FormatStrategy} * @type {PhoneNumberFormat}
*/ */
this.formatStrategy = 'international'; this.formatStrategy = 'international';
@ -286,7 +286,7 @@ export class LionInputTel extends LocalizeMixin(LionInput) {
*/ */
_onPhoneNumberUtilReady() { _onPhoneNumberUtilReady() {
// This should trigger a rerender in shadow dom // This should trigger a rerender in shadow dom
this._phoneUtil = /** @type {PhoneNumber} */ (PhoneUtilManager.PhoneUtil); this._phoneUtil = /** @type {AwesomePhoneNumber} */ (PhoneUtilManager.PhoneUtil);
// This should trigger a rerender in light dom // This should trigger a rerender in light dom
this._scheduleLightDomRender(); this._scheduleLightDomRender();
// Format when libPhoneNumber is loaded // Format when libPhoneNumber is loaded

View file

@ -9,7 +9,7 @@ let resolveLoaded;
*/ */
export class PhoneUtilManager { export class PhoneUtilManager {
static async loadLibPhoneNumber() { static async loadLibPhoneNumber() {
const PhoneUtil = (await import('./lib/awesome-phonenumber-esm.js')).default; const PhoneUtil = (await import('awesome-phonenumber')).default;
this.PhoneUtil = PhoneUtil; this.PhoneUtil = PhoneUtil;
resolveLoaded(undefined); resolveLoaded(undefined);
return PhoneUtil; return PhoneUtil;

View file

@ -1,16 +1,16 @@
import { PhoneUtilManager } from './PhoneUtilManager.js'; import { PhoneUtilManager } from './PhoneUtilManager.js';
/** /**
* @typedef {import('../types').FormatStrategy} FormatStrategy * @typedef {import('awesome-phonenumber').PhoneNumberFormat} PhoneNumberFormat
* @typedef {import('../types').RegionCode} RegionCode * @typedef {import('../types').RegionCode} RegionCode
* @typedef {* & import('@lion/input-tel/src/lib/awesome-phonenumber-esm').default} AwesomePhoneNumber * @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
*/ */
/** /**
* @param {string} modelValue * @param {string} modelValue
* @param {object} options * @param {object} options
* @param {RegionCode} options.regionCode * @param {RegionCode} options.regionCode
* @param {FormatStrategy} [options.formatStrategy='international'] * @param {PhoneNumberFormat} [options.formatStrategy='international']
* @returns {string} * @returns {string}
*/ */
export function formatPhoneNumber(modelValue, { regionCode, formatStrategy = 'international' }) { export function formatPhoneNumber(modelValue, { regionCode, formatStrategy = 'international' }) {

File diff suppressed because it is too large Load diff

View file

@ -2,12 +2,12 @@ import { PhoneUtilManager } from './PhoneUtilManager.js';
/** /**
* @typedef {import('../types').RegionCode} RegionCode * @typedef {import('../types').RegionCode} RegionCode
* @typedef {* & import('@lion/input-tel/src/lib/awesome-phonenumber-esm').default} AwesomePhoneNumber * @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
*/ */
/** /**
* @param {string} viewValue * @param {string} viewValue
* @param {{regionCode:RegionCode;}} options * @param {{regionCode:RegionCode}} options
* @returns {string} * @returns {string}
*/ */
export function parsePhoneNumber(viewValue, { regionCode }) { export function parsePhoneNumber(viewValue, { regionCode }) {

View file

@ -2,9 +2,9 @@ import { PhoneUtilManager } from './PhoneUtilManager.js';
import { formatPhoneNumber } from './formatters.js'; import { formatPhoneNumber } from './formatters.js';
/** /**
* @typedef {import('../types').FormatStrategy} FormatStrategy
* @typedef {import('../types').RegionCode} RegionCode * @typedef {import('../types').RegionCode} RegionCode
* @typedef {* & import('@lion/input-tel/src/lib/awesome-phonenumber-esm').default} AwesomePhoneNumber * @typedef {import('awesome-phonenumber').PhoneNumberFormat} PhoneNumberFormat
* @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
*/ */
/** /**
@ -13,7 +13,7 @@ import { formatPhoneNumber } from './formatters.js';
* @param {RegionCode} options.regionCode * @param {RegionCode} options.regionCode
* @param {string} options.prevViewValue * @param {string} options.prevViewValue
* @param {number} options.currentCaretIndex * @param {number} options.currentCaretIndex
* @param {FormatStrategy} options.formatStrategy * @param {PhoneNumberFormat} options.formatStrategy
* @returns {{viewValue:string; caretIndex:number;}|undefined} * @returns {{viewValue:string; caretIndex:number;}|undefined}
*/ */
export function liveFormatPhoneNumber( export function liveFormatPhoneNumber(

View file

@ -3,7 +3,7 @@ import { PhoneUtilManager } from './PhoneUtilManager.js';
/** /**
* @typedef {import('../types').RegionCode} RegionCode * @typedef {import('../types').RegionCode} RegionCode
* @typedef {* & import('@lion/input-tel/src/lib/awesome-phonenumber-esm').default} AwesomePhoneNumber * @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
*/ */
/** /**

View file

@ -8,7 +8,7 @@ import {
} from '../test-helpers/mockPhoneUtilManager.js'; } from '../test-helpers/mockPhoneUtilManager.js';
/** /**
* @typedef {* & import('@lion/input-tel/src/lib/awesome-phonenumber-esm').default} AwesomePhoneNumber * @typedef {* & import('awesome-phonenumber').default} AwesomePhoneNumber
*/ */
// For enum output, see: https://www.npmjs.com/package/awesome-phonenumber // For enum output, see: https://www.npmjs.com/package/awesome-phonenumber

View file

@ -1,46 +1,6 @@
/*
* Phone number types as provided by google-libphonenumber
* See:
* - https://www.npmjs.com/package/google-libphonenumber
* - https://www.npmjs.com/package/awesome-phonenumber
*/
export type PhoneNumberType =
| 'fixed-line'
| 'fixed-line-or-mobile'
| 'mobile'
| 'pager'
| 'personal-number'
| 'premium-rate'
| 'shared-cost'
| 'toll-free'
| 'uan'
| 'voip'
| 'unknown';
/*
* Phone number possibilities as provided by google-libphonenumber
* See:
* - https://www.npmjs.com/package/google-libphonenumber
* - https://www.npmjs.com/package/awesome-phonenumber
*/
export type PhoneNumberPossibility =
| 'is-possible'
| 'invalid-country-code'
| 'too-long'
| 'too-short'
| 'unknown';
/*
* Phone number formats / formatting strategies as provided by google-libphonenumber
* See:
* - https://www.npmjs.com/package/google-libphonenumber
* - https://www.npmjs.com/package/awesome-phonenumber
*/
export type FormatStrategy = 'e164' | 'international' | 'national' | 'rfc3966' | 'significant';
/** /**
* Supported countries/regions as provided via * Supported countries/regions as provided via
* `libphonenumber.PhoneNumberUtil.getInstance().getSupportedRegions()` * `libphonenumber.getSupportedRegionCodes()`
*/ */
export type RegionCode = export type RegionCode =
| 'AC' | 'AC'

View file

@ -3430,6 +3430,11 @@ autosize@4.0.2:
resolved "https://registry.yarnpkg.com/autosize/-/autosize-4.0.2.tgz#073cfd07c8bf45da4b9fd153437f5bafbba1e4c9" resolved "https://registry.yarnpkg.com/autosize/-/autosize-4.0.2.tgz#073cfd07c8bf45da4b9fd153437f5bafbba1e4c9"
integrity sha512-jnSyH2d+qdfPGpWlcuhGiHmqBJ6g3X+8T+iRwFrHPLVcdoGJE/x6Qicm6aDHfTsbgZKxyV8UU/YB2p4cjKDRRA== integrity sha512-jnSyH2d+qdfPGpWlcuhGiHmqBJ6g3X+8T+iRwFrHPLVcdoGJE/x6Qicm6aDHfTsbgZKxyV8UU/YB2p4cjKDRRA==
awesome-phonenumber@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/awesome-phonenumber/-/awesome-phonenumber-3.0.1.tgz#8d73aaa1c2b0a660b117567b0d9797623457e1d0"
integrity sha512-H5rqjTJ1+HxmyuSKDoPgvHUgP+RBRhtWQ25ccy4BmSLQL5UVg3K+yo2QCX4IlkxiVNst3suGMArV9TH7B1KEPw==
axe-core@^4.3.3: axe-core@^4.3.3:
version "4.3.3" version "4.3.3"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.3.3.tgz#b55cd8e8ddf659fe89b064680e1c6a4dceab0325"