svogv
Version:
A decorator based approach for model driven forms, including an advanced DataGrid and a TreeView component.
28 lines • 3.22 kB
JavaScript
/**
* This decorator is for validation of mandatory fields.
* The default message is 'The field {keyName} is required'.
*
* @param msg The error message shown in case of error. A default value is being provided if omitted.
*
*/
export function Required(msg) {
function requiredInternalSetup(target, key) {
Object.defineProperty(target, `__isRequired__${key}`, {
get() { return true; },
enumerable: false,
configurable: false
});
Object.defineProperty(target, `__errRequired__${key}`, {
value: msg || `The field ${key} is required`,
enumerable: false,
configurable: false
});
}
// the original decorator
function requiredInternal(target, property) {
requiredInternalSetup(target, property.toString());
}
// return the decorator
return requiredInternal;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsLXJlcXVpcmVkLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLi9wcm9qZWN0cy9zdm9ndi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVjb3JhdG9ycy92YWwtcmVxdWlyZWQuZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBWTtJQUNuQyxTQUFTLHFCQUFxQixDQUFDLE1BQVcsRUFBRSxHQUFXO1FBQ3JELE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixHQUFHLEVBQUUsRUFBRTtZQUNwRCxHQUFHLEtBQUssT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGtCQUFrQixHQUFHLEVBQUUsRUFBRTtZQUNyRCxLQUFLLEVBQUUsR0FBRyxJQUFJLGFBQWEsR0FBRyxjQUFjO1lBQzVDLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCx5QkFBeUI7SUFDekIsU0FBUyxnQkFBZ0IsQ0FBQyxNQUFjLEVBQUUsUUFBeUI7UUFDakUscUJBQXFCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGRlY29yYXRvciBpcyBmb3IgdmFsaWRhdGlvbiBvZiBtYW5kYXRvcnkgZmllbGRzLlxuICogVGhlIGRlZmF1bHQgbWVzc2FnZSBpcyAnVGhlIGZpZWxkIHtrZXlOYW1lfSBpcyByZXF1aXJlZCcuXG4gKlxuICogQHBhcmFtIG1zZyBUaGUgZXJyb3IgbWVzc2FnZSBzaG93biBpbiBjYXNlIG9mIGVycm9yLiBBIGRlZmF1bHQgdmFsdWUgaXMgYmVpbmcgcHJvdmlkZWQgaWYgb21pdHRlZC5cbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBSZXF1aXJlZChtc2c/OiBzdHJpbmcpIHtcbiAgZnVuY3Rpb24gcmVxdWlyZWRJbnRlcm5hbFNldHVwKHRhcmdldDogYW55LCBrZXk6IHN0cmluZykge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2lzUmVxdWlyZWRfXyR7a2V5fWAsIHtcbiAgICAgIGdldCgpIHsgcmV0dXJuIHRydWU7IH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGBfX2VyclJlcXVpcmVkX18ke2tleX1gLCB7XG4gICAgICB2YWx1ZTogbXNnIHx8IGBUaGUgZmllbGQgJHtrZXl9IGlzIHJlcXVpcmVkYCxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxuICAgIH0pO1xuICB9XG4gIC8vIHRoZSBvcmlnaW5hbCBkZWNvcmF0b3JcbiAgZnVuY3Rpb24gcmVxdWlyZWRJbnRlcm5hbCh0YXJnZXQ6IG9iamVjdCwgcHJvcGVydHk6IHN0cmluZyB8IHN5bWJvbCk6IHZvaWQge1xuICAgIHJlcXVpcmVkSW50ZXJuYWxTZXR1cCh0YXJnZXQsIHByb3BlcnR5LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBkZWNvcmF0b3JcbiAgcmV0dXJuIHJlcXVpcmVkSW50ZXJuYWw7XG59XG5cbiJdfQ==