forked from MapComplete/MapComplete
		
	Themes: phone validation now knows about some short-codes
This commit is contained in:
		
							parent
							
								
									5f627124e9
								
							
						
					
					
						commit
						38b9523b83
					
				
					 1 changed files with 23 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -35,6 +35,10 @@ export default class PhoneValidator extends Validator {
 | 
			
		|||
        if (country !== undefined) {
 | 
			
		||||
            countryCode = country()?.toUpperCase()
 | 
			
		||||
        }
 | 
			
		||||
        if (this.isShortCode(str, countryCode)) {
 | 
			
		||||
            return true
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return parsePhoneNumberFromString(str, countryCode)?.isValid() ?? false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -46,9 +50,28 @@ export default class PhoneValidator extends Validator {
 | 
			
		|||
        if (country) {
 | 
			
		||||
            countryCode = country()
 | 
			
		||||
        }
 | 
			
		||||
        if (this.isShortCode(str, countryCode?.toUpperCase())) {
 | 
			
		||||
            return str
 | 
			
		||||
        }
 | 
			
		||||
        return parsePhoneNumberFromString(
 | 
			
		||||
            str,
 | 
			
		||||
            countryCode?.toUpperCase() as any
 | 
			
		||||
        )?.formatInternational()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Indicates if the given string is a special 'short code' valid in the given country
 | 
			
		||||
     * see https://nl.wikipedia.org/wiki/Short_code
 | 
			
		||||
     * @param str a possible phone number
 | 
			
		||||
     * @param country the upper case, two-letter code for a country
 | 
			
		||||
     * @private
 | 
			
		||||
     */
 | 
			
		||||
    private isShortCode(str: string, country: string) {
 | 
			
		||||
        if (country == "BE" && str.length === 4 && str.match(/[0-9]{4}/)) {
 | 
			
		||||
            return true
 | 
			
		||||
        }
 | 
			
		||||
        if (country == "NL" && str.length === 4 && str.match(/14[0-9]{3}/)) {
 | 
			
		||||
            return true
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue