import { predicates } from "@sealcode/ts-predicates"; import { RegExpField } from "./regexp.js"; import { SimpleInput } from "../controls/controls.js"; export class EmailField< Required extends boolean, > extends RegExpField { predicate = predicates.string; constructor( required: Required, public error_message = "Please enter a proper email address", public default_value = "" ) { super( required, /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/, error_message, default_value ); } setErrorMessage(message: string) { this.error_message = message; } public getControl(): SimpleInput { return new SimpleInput(this, { label: this.label || this.name, type: "email", }); } }