UNPKG

svogv

Version:

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

42 lines 5.22 kB
/** * The decorator that assures that a string field contains at least a number of characters and a minimum number, too. * The default message is 'The field {fieldname} needs at least {minlength} characters'. * * @param min: The required length. * @param max: The maximum length. * @param msg: Optionally a custom message. * */ export function StringLength(min, max, msg) { function stringLengthInternalSetup(target, key) { // create a helper property to transport a meta data value Object.defineProperty(target, `__hasMaxLength__${key}`, { value: max, enumerable: false, configurable: false }); Object.defineProperty(target, `__errMaxLength__${key}`, { value: msg || `The field ${key} has max length of ${max} characters`, enumerable: false, configurable: false }); // create a helper property to transport a meta data value Object.defineProperty(target, `__hasMinLength__${key}`, { value: min, enumerable: false, configurable: false }); Object.defineProperty(target, `__errMinLength__${key}`, { value: msg || `The field ${key} needs at least ${min} characters`, enumerable: false, configurable: false }); } // the original decorator function stringLengthInternal(target, property) { stringLengthInternalSetup(target, property.toString()); } // return the decorator return stringLengthInternal; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLXN0cmluZ2xlbmd0aC5kZWNvcmF0b3IuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvc3ZvZ3Yvc3JjLyIsInNvdXJjZXMiOlsibGliL2RlY29yYXRvcnMvdmFsLXN0cmluZ2xlbmd0aC5kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBWTtJQUNqRSxTQUFTLHlCQUF5QixDQUFDLE1BQVcsRUFBRSxHQUFXO1FBRXpELDBEQUEwRDtRQUMxRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsR0FBRyxFQUFFLEVBQUU7WUFDdEQsS0FBSyxFQUFFLEdBQUc7WUFDVixVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsR0FBRyxFQUFFLEVBQUU7WUFDdEQsS0FBSyxFQUFFLEdBQUcsSUFBSSxhQUFhLEdBQUcsc0JBQXNCLEdBQUcsYUFBYTtZQUNwRSxVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCwwREFBMEQ7UUFDMUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEdBQUcsRUFBRSxFQUFFO1lBQ3RELEtBQUssRUFBRSxHQUFHO1lBQ1YsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEdBQUcsRUFBRSxFQUFFO1lBQ3RELEtBQUssRUFBRSxHQUFHLElBQUksYUFBYSxHQUFHLG1CQUFtQixHQUFHLGFBQWE7WUFDakUsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUNELHlCQUF5QjtJQUN6QixTQUFTLG9CQUFvQixDQUFDLE1BQWMsRUFBRSxRQUF5QjtRQUNyRSx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixPQUFPLG9CQUFvQixDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBkZWNvcmF0b3IgdGhhdCBhc3N1cmVzIHRoYXQgYSBzdHJpbmcgZmllbGQgY29udGFpbnMgYXQgbGVhc3QgYSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbmQgYSBtaW5pbXVtIG51bWJlciwgdG9vLlxuICogVGhlIGRlZmF1bHQgbWVzc2FnZSBpcyAnVGhlIGZpZWxkIHtmaWVsZG5hbWV9IG5lZWRzIGF0IGxlYXN0IHttaW5sZW5ndGh9IGNoYXJhY3RlcnMnLlxuICpcbiAqIEBwYXJhbSBtaW46IFRoZSByZXF1aXJlZCBsZW5ndGguXG4gKiBAcGFyYW0gbWF4OiBUaGUgbWF4aW11bSBsZW5ndGguXG4gKiBAcGFyYW0gbXNnOiBPcHRpb25hbGx5IGEgY3VzdG9tIG1lc3NhZ2UuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RyaW5nTGVuZ3RoKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbXNnPzogc3RyaW5nKSB7XG4gIGZ1bmN0aW9uIHN0cmluZ0xlbmd0aEludGVybmFsU2V0dXAodGFyZ2V0OiBhbnksIGtleTogc3RyaW5nKSB7XG5cbiAgICAvLyBjcmVhdGUgYSBoZWxwZXIgcHJvcGVydHkgdG8gdHJhbnNwb3J0IGEgbWV0YSBkYXRhIHZhbHVlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9faGFzTWF4TGVuZ3RoX18ke2tleX1gLCB7XG4gICAgICB2YWx1ZTogbWF4LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX19lcnJNYXhMZW5ndGhfXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiBtc2cgfHwgYFRoZSBmaWVsZCAke2tleX0gaGFzIG1heCBsZW5ndGggb2YgJHttYXh9IGNoYXJhY3RlcnNgLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG5cbiAgICAvLyBjcmVhdGUgYSBoZWxwZXIgcHJvcGVydHkgdG8gdHJhbnNwb3J0IGEgbWV0YSBkYXRhIHZhbHVlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9faGFzTWluTGVuZ3RoX18ke2tleX1gLCB7XG4gICAgICB2YWx1ZTogbWluLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBgX19lcnJNaW5MZW5ndGhfXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiBtc2cgfHwgYFRoZSBmaWVsZCAke2tleX0gbmVlZHMgYXQgbGVhc3QgJHttaW59IGNoYXJhY3RlcnNgLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG5cbiAgfVxuICAvLyB0aGUgb3JpZ2luYWwgZGVjb3JhdG9yXG4gIGZ1bmN0aW9uIHN0cmluZ0xlbmd0aEludGVybmFsKHRhcmdldDogb2JqZWN0LCBwcm9wZXJ0eTogc3RyaW5nIHwgc3ltYm9sKTogdm9pZCB7XG4gICAgc3RyaW5nTGVuZ3RoSW50ZXJuYWxTZXR1cCh0YXJnZXQsIHByb3BlcnR5LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBkZWNvcmF0b3JcbiAgcmV0dXJuIHN0cmluZ0xlbmd0aEludGVybmFsO1xufVxuIl19