UNPKG

svogv

Version:

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

37 lines 4.3 kB
/** * The compare decorator compares two field's values and * shows an error message on the decorated field. The other field (compared to) does * not has a decorator nor receives a message. * * @param withProperty A string that represents the compared field's name. * @param msg A custom message. * */ export function Compare(withProperty, msg) { function compareInternalSetup(target, key) { // create a helper property to transport a meta data value Object.defineProperty(target, `__hasCompareProperty__${key}`, { value: true, enumerable: false, configurable: false }); Object.defineProperty(target, `__withCompare__${key}`, { value: withProperty, enumerable: false, configurable: false }); Object.defineProperty(target, `__errCompareProperty__${key}`, { value: msg || `The field ${key} must have the same value as field ${withProperty}`, enumerable: false, configurable: false }); } // the original decorator function compareInternal(target, property) { compareInternalSetup(target, property.toString()); } // return the decorator return compareInternal; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLWNvbXBhcmUuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uL3Byb2plY3RzL3N2b2d2L3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZWNvcmF0b3JzL3ZhbC1jb21wYXJlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQUMsWUFBb0IsRUFBRSxHQUFZO0lBRXhELFNBQVMsb0JBQW9CLENBQUMsTUFBVyxFQUFFLEdBQVc7UUFFcEQsMERBQTBEO1FBQzFELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLHlCQUF5QixHQUFHLEVBQUUsRUFBRTtZQUM1RCxLQUFLLEVBQUUsSUFBSTtZQUNYLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLEVBQUUsRUFBRTtZQUNyRCxLQUFLLEVBQUUsWUFBWTtZQUNuQixVQUFVLEVBQUUsS0FBSztZQUNqQixZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsR0FBRyxFQUFFLEVBQUU7WUFDNUQsS0FBSyxFQUFFLEdBQUc7bUJBQ0wsYUFBYSxHQUFHLHNDQUFzQyxZQUFZLEVBQUU7WUFDekUsVUFBVSxFQUFFLEtBQUs7WUFDakIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixTQUFTLGVBQWUsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7UUFDaEUsb0JBQW9CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsT0FBTyxlQUFlLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGNvbXBhcmUgZGVjb3JhdG9yIGNvbXBhcmVzIHR3byBmaWVsZCdzIHZhbHVlcyBhbmRcbiAqIHNob3dzIGFuIGVycm9yIG1lc3NhZ2Ugb24gdGhlIGRlY29yYXRlZCBmaWVsZC4gVGhlIG90aGVyIGZpZWxkIChjb21wYXJlZCB0bykgZG9lc1xuICogbm90IGhhcyBhIGRlY29yYXRvciBub3IgcmVjZWl2ZXMgYSBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSB3aXRoUHJvcGVydHkgQSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBjb21wYXJlZCBmaWVsZCdzIG5hbWUuXG4gKiBAcGFyYW0gbXNnIEEgY3VzdG9tIG1lc3NhZ2UuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tcGFyZSh3aXRoUHJvcGVydHk6IHN0cmluZywgbXNnPzogc3RyaW5nKSB7XG5cbiAgZnVuY3Rpb24gY29tcGFyZUludGVybmFsU2V0dXAodGFyZ2V0OiBhbnksIGtleTogc3RyaW5nKSB7XG5cbiAgICAvLyBjcmVhdGUgYSBoZWxwZXIgcHJvcGVydHkgdG8gdHJhbnNwb3J0IGEgbWV0YSBkYXRhIHZhbHVlXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9faGFzQ29tcGFyZVByb3BlcnR5X18ke2tleX1gLCB7XG4gICAgICB2YWx1ZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgYF9fd2l0aENvbXBhcmVfXyR7a2V5fWAsIHtcbiAgICAgIHZhbHVlOiB3aXRoUHJvcGVydHksXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2VyckNvbXBhcmVQcm9wZXJ0eV9fJHtrZXl9YCwge1xuICAgICAgdmFsdWU6IG1zZ1xuICAgICAgICB8fCBgVGhlIGZpZWxkICR7a2V5fSBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgZmllbGQgJHt3aXRoUHJvcGVydHl9YCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgLy8gdGhlIG9yaWdpbmFsIGRlY29yYXRvclxuICBmdW5jdGlvbiBjb21wYXJlSW50ZXJuYWwodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcgfCBzeW1ib2wpOiB2b2lkIHtcbiAgICBjb21wYXJlSW50ZXJuYWxTZXR1cCh0YXJnZXQsIHByb3BlcnR5LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBkZWNvcmF0b3JcbiAgcmV0dXJuIGNvbXBhcmVJbnRlcm5hbDtcbn1cbiJdfQ==