svogv
Version:
A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.
29 lines • 3.31 kB
JavaScript
/**
* The decorator assures that a string field fullfilles a regular expression pattern.
*
* @param pattern: The expression as RegExp.
* @param msg: A custom message.
*
*/
export function Pattern(pattern, msg) {
function patternInternalSetup(target, key) {
// create a helper property to transport a meta data value
Object.defineProperty(target, `__hasPattern__${key}`, {
value: true,
enumerable: false,
configurable: false
});
Object.defineProperty(target, `__errPattern__${key}`, {
value: msg || `The field ${key} must fullfill the pattern ${pattern}`,
enumerable: false,
configurable: false
});
}
// the original decorator
function patternInternal(target, property) {
patternInternalSetup(target, property.toString());
}
// return the decorator
return patternInternal;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLXBhdHRlcm4uZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL3N2b2d2L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZWNvcmF0b3JzL3ZhbC1wYXR0ZXJuLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFZO0lBRW5ELFNBQVMsb0JBQW9CLENBQUMsTUFBVyxFQUFFLEdBQVc7UUFFcEQsMERBQTBEO1FBQzFELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUNwRCxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUNwRCxLQUFLLEVBQUUsR0FBRyxJQUFJLGFBQWEsR0FBRyw4QkFBOEIsT0FBTyxFQUFFO1lBQ3JFLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCx5QkFBeUI7SUFDekIsU0FBUyxlQUFlLENBQUMsTUFBYyxFQUFFLFFBQXlCO1FBQ2hFLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBkZWNvcmF0b3IgYXNzdXJlcyB0aGF0IGEgc3RyaW5nIGZpZWxkIGZ1bGxmaWxsZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybi5cbiAqXG4gKiBAcGFyYW0gcGF0dGVybjogVGhlIGV4cHJlc3Npb24gYXMgUmVnRXhwLlxuICogQHBhcmFtIG1zZzogQSBjdXN0b20gbWVzc2FnZS5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBQYXR0ZXJuKHBhdHRlcm46IFJlZ0V4cCwgbXNnPzogc3RyaW5nKSB7XG5cbiAgZnVuY3Rpb24gcGF0dGVybkludGVybmFsU2V0dXAodGFyZ2V0OiBhbnksIGtleTogc3RyaW5nKSB7XG5cbiAgICAvLyBjcmVhdGUgYSBoZWxwZXIgcHJvcGVydHkgdG8gdHJhbnNwb3J0IGEgbWV0YSBkYXRhIHZhbHVlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9faGFzUGF0dGVybl9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2VyclBhdHRlcm5fXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiBtc2cgfHwgYFRoZSBmaWVsZCAke2tleX0gbXVzdCBmdWxsZmlsbCB0aGUgcGF0dGVybiAke3BhdHRlcm59YCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuICB9XG4gIC8vIHRoZSBvcmlnaW5hbCBkZWNvcmF0b3JcbiAgZnVuY3Rpb24gcGF0dGVybkludGVybmFsKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eTogc3RyaW5nIHwgc3ltYm9sKTogdm9pZCB7XG4gICAgcGF0dGVybkludGVybmFsU2V0dXAodGFyZ2V0LCBwcm9wZXJ0eS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgZGVjb3JhdG9yXG4gIHJldHVybiBwYXR0ZXJuSW50ZXJuYWw7XG59XG5cbiJdfQ==