svogv
Version:
A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.
29 lines • 3.34 kB
JavaScript
/**
* The minlength decorator assures that a string field contains at least a number of characters.
*
* @param len: the required length.
* @param msg: A custom message.
*
*/
export function MinLength(len, msg) {
function minLengthInternalSetup(target, key) {
// create a helper property to transport a meta data value
Object.defineProperty(target, `__hasMinLength__${key}`, {
value: len,
enumerable: false,
configurable: false
});
Object.defineProperty(target, `__errMinLength__${key}`, {
value: msg || `The field ${key} needs at least ${len} characters`,
enumerable: false,
configurable: false
});
}
// the original decorator
function minLengthInternal(target, property) {
minLengthInternalSetup(target, property.toString());
}
// return the decorator
return minLengthInternal;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLW1pbmxlbmd0aC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvc3ZvZ3Yvc3JjLyIsInNvdXJjZXMiOlsibGliL2RlY29yYXRvcnMvdmFsLW1pbmxlbmd0aC5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsR0FBWTtJQUVqRCxTQUFTLHNCQUFzQixDQUFDLE1BQVcsRUFBRSxHQUFXO1FBRXRELDBEQUEwRDtRQUMxRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsR0FBRyxFQUFFLEVBQUU7WUFDdEQsS0FBSyxFQUFFLEdBQUc7WUFDVixVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsR0FBRyxFQUFFLEVBQUU7WUFDdEQsS0FBSyxFQUFFLEdBQUcsSUFBSSxhQUFhLEdBQUcsbUJBQW1CLEdBQUcsYUFBYTtZQUNqRSxVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7SUFFTCxDQUFDO0lBQ0QseUJBQXlCO0lBQ3pCLFNBQVMsaUJBQWlCLENBQUMsTUFBYyxFQUFFLFFBQXlCO1FBQ2xFLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIG1pbmxlbmd0aCBkZWNvcmF0b3IgYXNzdXJlcyB0aGF0IGEgc3RyaW5nIGZpZWxkIGNvbnRhaW5zIGF0IGxlYXN0IGEgbnVtYmVyIG9mIGNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtIGxlbjogdGhlIHJlcXVpcmVkIGxlbmd0aC5cbiAqIEBwYXJhbSBtc2c6IEEgY3VzdG9tIG1lc3NhZ2UuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gTWluTGVuZ3RoKGxlbjogbnVtYmVyLCBtc2c/OiBzdHJpbmcpIHtcblxuICBmdW5jdGlvbiBtaW5MZW5ndGhJbnRlcm5hbFNldHVwKHRhcmdldDogYW55LCBrZXk6IHN0cmluZykge1xuXG4gICAgLy8gY3JlYXRlIGEgaGVscGVyIHByb3BlcnR5IHRvIHRyYW5zcG9ydCBhIG1ldGEgZGF0YSB2YWx1ZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2hhc01pbkxlbmd0aF9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IGxlbixcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9fZXJyTWluTGVuZ3RoX18ke2tleX1gLCB7XG4gICAgICB2YWx1ZTogbXNnIHx8IGBUaGUgZmllbGQgJHtrZXl9IG5lZWRzIGF0IGxlYXN0ICR7bGVufSBjaGFyYWN0ZXJzYCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuXG4gIH1cbiAgLy8gdGhlIG9yaWdpbmFsIGRlY29yYXRvclxuICBmdW5jdGlvbiBtaW5MZW5ndGhJbnRlcm5hbCh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCk6IHZvaWQge1xuICAgIG1pbkxlbmd0aEludGVybmFsU2V0dXAodGFyZ2V0LCBwcm9wZXJ0eS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgZGVjb3JhdG9yXG4gIHJldHVybiBtaW5MZW5ndGhJbnRlcm5hbDtcbn1cbiJdfQ==