UNPKG

svogv

Version:

A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.

32 lines 4.21 kB
/** * Validates a field against an email pattern. * Based on "pattern", so in form one must use `hasError('pattern')` to get validation results. * * @param msg A custom message. If not provided "The field ffff must contain a valid e-mail address." * will be generated, while ffff is the property name. * */ export function Email(msg) { function emailInternalSetup(target, key) { // tslint:disable-next-line:max-line-length const pattern = /^(([^<>()\[\]\\.,;:\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,}))$/; // create a helper property to transport a meta data value Object.defineProperty(target, `__hasPattern__${key}`, { value: pattern, enumerable: false, configurable: false }); Object.defineProperty(target, `__errPattern__${key}`, { value: msg || `The field ${key} must contain a valid e-mail address.`, enumerable: false, configurable: false }); } // the original decorator function emailInternal(target, property) { emailInternalSetup(target, property.toString()); } // return the decorator return emailInternal; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLWVtYWlsLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9zdm9ndi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVjb3JhdG9ycy92YWwtZW1haWwuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLEdBQVk7SUFFaEMsU0FBUyxrQkFBa0IsQ0FBQyxNQUFXLEVBQUUsR0FBVztRQUVsRCwyQ0FBMkM7UUFDM0MsTUFBTSxPQUFPLEdBQVcsd0pBQXdKLENBQUM7UUFFakwsMERBQTBEO1FBQzFELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUNwRCxLQUFLLEVBQUUsT0FBTztZQUNkLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUNwRCxLQUFLLEVBQUUsR0FBRyxJQUFJLGFBQWEsR0FBRyx1Q0FBdUM7WUFDckUsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELHlCQUF5QjtJQUN6QixTQUFTLGFBQWEsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7UUFDOUQsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVmFsaWRhdGVzIGEgZmllbGQgYWdhaW5zdCBhbiBlbWFpbCBwYXR0ZXJuLlxuICogQmFzZWQgb24gXCJwYXR0ZXJuXCIsIHNvIGluIGZvcm0gb25lIG11c3QgdXNlIGBoYXNFcnJvcigncGF0dGVybicpYCB0byBnZXQgdmFsaWRhdGlvbiByZXN1bHRzLlxuICpcbiAqIEBwYXJhbSBtc2cgQSBjdXN0b20gbWVzc2FnZS4gSWYgbm90IHByb3ZpZGVkIFwiVGhlIGZpZWxkIGZmZmYgbXVzdCBjb250YWluIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MuXCJcbiAqICAgICAgICAgICAgIHdpbGwgYmUgZ2VuZXJhdGVkLCB3aGlsZSBmZmZmIGlzIHRoZSBwcm9wZXJ0eSBuYW1lLlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEVtYWlsKG1zZz86IHN0cmluZykge1xuXG4gIGZ1bmN0aW9uIGVtYWlsSW50ZXJuYWxTZXR1cCh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcpIHtcblxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICBjb25zdCBwYXR0ZXJuOiBSZWdFeHAgPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcblxuICAgIC8vIGNyZWF0ZSBhIGhlbHBlciBwcm9wZXJ0eSB0byB0cmFuc3BvcnQgYSBtZXRhIGRhdGEgdmFsdWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX19oYXNQYXR0ZXJuX18ke2tleX1gLCB7XG4gICAgICB2YWx1ZTogcGF0dGVybixcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9fZXJyUGF0dGVybl9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IG1zZyB8fCBgVGhlIGZpZWxkICR7a2V5fSBtdXN0IGNvbnRhaW4gYSB2YWxpZCBlLW1haWwgYWRkcmVzcy5gLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG4gIH1cbiAgLy8gdGhlIG9yaWdpbmFsIGRlY29yYXRvclxuICBmdW5jdGlvbiBlbWFpbEludGVybmFsKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eTogc3RyaW5nIHwgc3ltYm9sKTogdm9pZCB7XG4gICAgZW1haWxJbnRlcm5hbFNldHVwKHRhcmdldCwgcHJvcGVydHkudG9TdHJpbmcoKSk7XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGRlY29yYXRvclxuICByZXR1cm4gZW1haWxJbnRlcm5hbDtcbn1cblxuIl19