forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { Translation } from "../../i18n/Translation.js"
 | 
						|
import Translations from "../../i18n/Translations.js"
 | 
						|
import * as emailValidatorLibrary from "email-validator"
 | 
						|
import { Validator } from "../Validator"
 | 
						|
 | 
						|
export default class EmailValidator extends Validator {
 | 
						|
    constructor() {
 | 
						|
        super("email", "An email adress", "email")
 | 
						|
    }
 | 
						|
 | 
						|
    isValid = (str) => {
 | 
						|
        if (str === undefined) {
 | 
						|
            return false
 | 
						|
        }
 | 
						|
        str = str.trim()
 | 
						|
        if (str.startsWith("mailto:")) {
 | 
						|
            str = str.substring("mailto:".length)
 | 
						|
        }
 | 
						|
        return emailValidatorLibrary.validate(str)
 | 
						|
    }
 | 
						|
 | 
						|
    reformat = (str) => {
 | 
						|
        if (str === undefined) {
 | 
						|
            return undefined
 | 
						|
        }
 | 
						|
        str = str.trim()
 | 
						|
        if (str.startsWith("mailto:")) {
 | 
						|
            str = str.substring("mailto:".length)
 | 
						|
        }
 | 
						|
        return str
 | 
						|
    }
 | 
						|
 | 
						|
    getFeedback(s: string): Translation {
 | 
						|
        if (s.indexOf("@") < 0) {
 | 
						|
            return Translations.t.validation.email.noAt
 | 
						|
        }
 | 
						|
 | 
						|
        return super.getFeedback(s)
 | 
						|
    }
 | 
						|
}
 |