svogv
Version:
A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.
29 lines • 3.36 kB
JavaScript
/**
* The maxlength decorator assures that a string field contains not more than a number of characters.
*
* @param len: the maximum length.
* @param msg: A custom message.
*
*/
export function MaxLength(len, msg) {
function maxLengthInternalSetup(target, key) {
// create a helper property to transport a meta data value
Object.defineProperty(target, `__hasMaxLength__${key}`, {
value: len,
enumerable: false,
configurable: false
});
Object.defineProperty(target, `__errMaxLength__${key}`, {
value: msg || `The field ${key} has max length of ${len} characters`,
enumerable: false,
configurable: false
});
}
// the original decorator
function maxLengthInternal(target, property) {
maxLengthInternalSetup(target, property.toString());
}
// return the decorator
return maxLengthInternal;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLW1heGxlbmd0aC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvc3ZvZ3Yvc3JjLyIsInNvdXJjZXMiOlsibGliL2RlY29yYXRvcnMvdmFsLW1heGxlbmd0aC5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFXLEVBQUUsR0FBWTtJQUVqRCxTQUFTLHNCQUFzQixDQUFDLE1BQVcsRUFBRSxHQUFXO1FBRXRELDBEQUEwRDtRQUMxRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsR0FBRyxFQUFFLEVBQUU7WUFDdEQsS0FBSyxFQUFFLEdBQUc7WUFDVixVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsR0FBRyxFQUFFLEVBQUU7WUFDdEQsS0FBSyxFQUFFLEdBQUcsSUFBSSxhQUFhLEdBQUcsc0JBQXNCLEdBQUcsYUFBYTtZQUNwRSxVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7SUFFTCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLFNBQVMsaUJBQWlCLENBQUMsTUFBYyxFQUFFLFFBQXlCO1FBQ2xFLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIG1heGxlbmd0aCBkZWNvcmF0b3IgYXNzdXJlcyB0aGF0IGEgc3RyaW5nIGZpZWxkIGNvbnRhaW5zIG5vdCBtb3JlIHRoYW4gYSBudW1iZXIgb2YgY2hhcmFjdGVycy5cbiAqXG4gKiBAcGFyYW0gbGVuOiB0aGUgbWF4aW11bSBsZW5ndGguXG4gKiBAcGFyYW0gbXNnOiBBIGN1c3RvbSBtZXNzYWdlLlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1heExlbmd0aChsZW46IG51bWJlciwgbXNnPzogc3RyaW5nKSB7XG5cbiAgZnVuY3Rpb24gbWF4TGVuZ3RoSW50ZXJuYWxTZXR1cCh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcpIHtcblxuICAgIC8vIGNyZWF0ZSBhIGhlbHBlciBwcm9wZXJ0eSB0byB0cmFuc3BvcnQgYSBtZXRhIGRhdGEgdmFsdWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX19oYXNNYXhMZW5ndGhfXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiBsZW4sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2Vyck1heExlbmd0aF9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IG1zZyB8fCBgVGhlIGZpZWxkICR7a2V5fSBoYXMgbWF4IGxlbmd0aCBvZiAke2xlbn0gY2hhcmFjdGVyc2AsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcblxuICB9XG5cbiAgLy8gdGhlIG9yaWdpbmFsIGRlY29yYXRvclxuICBmdW5jdGlvbiBtYXhMZW5ndGhJbnRlcm5hbCh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCk6IHZvaWQge1xuICAgIG1heExlbmd0aEludGVybmFsU2V0dXAodGFyZ2V0LCBwcm9wZXJ0eS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgZGVjb3JhdG9yXG4gIHJldHVybiBtYXhMZW5ndGhJbnRlcm5hbDtcbn1cbiJdfQ==