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)
 | |
|     }
 | |
| }
 |