UNPKG

svogv

Version:

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

39 lines 4.7 kB
/** * Validates a field against an range. Applies to numerical values or dates. * * The range's values are included in the valid range. * * @param from The minimum value (included) as number or Date * @param to The maximum value (included) as number or Date * @param msg A custom message. If not provided "The field [field] does not fall into the range from [from] to [to]" * will be generated, while [field] is the propertie's name. */ export function Range(from, to, msg) { function rangeInternalSetup(target, key) { // property value // create a helper property to transport a meta data value Object.defineProperty(target, `__hasRangeFrom__${key}`, { value: from, enumerable: false, configurable: false }); Object.defineProperty(target, `__hasRangeTo__${key}`, { value: to, enumerable: false, configurable: false }); Object.defineProperty(target, `__errRange__${key}`, { value: msg || `The field ${key} does not fall into the range from ${from} to ${to}`, enumerable: false, configurable: false }); } // the original decorator function rangeInternal(target, property) { rangeInternalSetup(target, property.toString()); } // return the decorator return rangeInternal; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLXJhbmdlLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9zdm9ndi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVjb3JhdG9ycy92YWwtcmFuZ2UuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsSUFBbUIsRUFBRSxFQUFpQixFQUFFLEdBQVk7SUFFeEUsU0FBUyxrQkFBa0IsQ0FBQyxNQUFXLEVBQUUsR0FBVztRQUNsRCxpQkFBaUI7UUFFakIsMERBQTBEO1FBQzFELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLG1CQUFtQixHQUFHLEVBQUUsRUFBRTtZQUN0RCxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUNwRCxLQUFLLEVBQUUsRUFBRTtZQUNULFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGVBQWUsR0FBRyxFQUFFLEVBQUU7WUFDbEQsS0FBSyxFQUFFLEdBQUc7bUJBQ0wsYUFBYSxHQUFHLHNDQUFzQyxJQUFJLE9BQU8sRUFBRSxFQUFFO1lBQzFFLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztJQUVMLENBQUM7SUFDRCx5QkFBeUI7SUFDekIsU0FBUyxhQUFhLENBQUMsTUFBYyxFQUFFLFFBQXlCO1FBQzlELGtCQUFrQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhbGlkYXRlcyBhIGZpZWxkIGFnYWluc3QgYW4gcmFuZ2UuIEFwcGxpZXMgdG8gbnVtZXJpY2FsIHZhbHVlcyBvciBkYXRlcy5cbiAqXG4gKiBUaGUgcmFuZ2UncyB2YWx1ZXMgYXJlIGluY2x1ZGVkIGluIHRoZSB2YWxpZCByYW5nZS5cbiAqXG4gKiBAcGFyYW0gZnJvbSAgVGhlIG1pbmltdW0gdmFsdWUgKGluY2x1ZGVkKSBhcyBudW1iZXIgb3IgRGF0ZVxuICogQHBhcmFtIHRvICAgIFRoZSBtYXhpbXVtIHZhbHVlIChpbmNsdWRlZCkgYXMgbnVtYmVyIG9yIERhdGVcbiAqIEBwYXJhbSBtc2cgICBBIGN1c3RvbSBtZXNzYWdlLiBJZiBub3QgcHJvdmlkZWQgXCJUaGUgZmllbGQgW2ZpZWxkXSBkb2VzIG5vdCBmYWxsIGludG8gdGhlIHJhbmdlIGZyb20gW2Zyb21dIHRvIFt0b11cIlxuICogICAgICAgICAgICAgIHdpbGwgYmUgZ2VuZXJhdGVkLCB3aGlsZSBbZmllbGRdIGlzIHRoZSBwcm9wZXJ0aWUncyBuYW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gUmFuZ2UoZnJvbTogbnVtYmVyIHwgRGF0ZSwgdG86IG51bWJlciB8IERhdGUsIG1zZz86IHN0cmluZykge1xuXG4gIGZ1bmN0aW9uIHJhbmdlSW50ZXJuYWxTZXR1cCh0YXJnZXQ6IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICAvLyBwcm9wZXJ0eSB2YWx1ZVxuXG4gICAgLy8gY3JlYXRlIGEgaGVscGVyIHByb3BlcnR5IHRvIHRyYW5zcG9ydCBhIG1ldGEgZGF0YSB2YWx1ZVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2hhc1JhbmdlRnJvbV9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IGZyb20sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2hhc1JhbmdlVG9fXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiB0byxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9fZXJyUmFuZ2VfXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiBtc2dcbiAgICAgICAgfHwgYFRoZSBmaWVsZCAke2tleX0gZG9lcyBub3QgZmFsbCBpbnRvIHRoZSByYW5nZSBmcm9tICR7ZnJvbX0gdG8gJHt0b31gLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG5cbiAgfVxuICAvLyB0aGUgb3JpZ2luYWwgZGVjb3JhdG9yXG4gIGZ1bmN0aW9uIHJhbmdlSW50ZXJuYWwodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wpOiB2b2lkIHtcbiAgICByYW5nZUludGVybmFsU2V0dXAodGFyZ2V0LCBwcm9wZXJ0eS50b1N0cmluZygpKTtcbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgZGVjb3JhdG9yXG4gIHJldHVybiByYW5nZUludGVybmFsO1xufVxuIl19