ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
44 lines • 3.83 kB
JavaScript
import { unbox } from 'ngrx-forms';
/**
* A validation function that requires the value to be `true`. Considers `null` and
* `undefined` as valid. Combine this function with the `required` validation
* function if `null` or `undefined` should be considered invalid.
*
* The validation error returned by this validation function has the following shape:
*
```typescript
{
required: {
actual: boolean;
};
}
```
*
* Usually you would use this validation function in conjunction with the `validate`
* update function to perform synchronous validation in your reducer:
*
```typescript
updateGroup<MyFormValue>({
agreeWithTermsOfService: validate(requiredTrue),
})
```
*
* Note that this function is generic to allow the compiler to properly infer the type
* of the `validate` function for both optional and non-optional controls.
*/
export function requiredTrue(value) {
value = unbox(value);
// tslint:disable-next-line:strict-type-predicates
if (value === null || value === undefined) {
return {};
}
if (value) {
return {};
}
return {
required: {
actual: value,
},
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtdHJ1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhbGlkYXRpb24vc3JjL3JlcXVpcmVkLXRydWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFTLEtBQUssRUFBb0IsTUFBTSxZQUFZLENBQUM7QUFFNUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBd0QsS0FBUTtJQUMxRixLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBb0MsQ0FBQztJQUV4RCxrREFBa0Q7SUFDbEQsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDekMsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELElBQUksS0FBSyxFQUFFO1FBQ1QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE9BQU87UUFDTCxRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUUsS0FBSztTQUNkO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3hlZCwgdW5ib3gsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICduZ3J4LWZvcm1zJztcclxuXHJcbi8qKlxyXG4gKiBBIHZhbGlkYXRpb24gZnVuY3Rpb24gdGhhdCByZXF1aXJlcyB0aGUgdmFsdWUgdG8gYmUgYHRydWVgLiBDb25zaWRlcnMgYG51bGxgIGFuZFxyXG4gKiBgdW5kZWZpbmVkYCBhcyB2YWxpZC4gQ29tYmluZSB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIGByZXF1aXJlZGAgdmFsaWRhdGlvblxyXG4gKiBmdW5jdGlvbiBpZiBgbnVsbGAgb3IgYHVuZGVmaW5lZGAgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW52YWxpZC5cclxuICpcclxuICogVGhlIHZhbGlkYXRpb24gZXJyb3IgcmV0dXJuZWQgYnkgdGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93aW5nIHNoYXBlOlxyXG4gKlxyXG5gYGB0eXBlc2NyaXB0XHJcbntcclxuICByZXF1aXJlZDoge1xyXG4gICAgYWN0dWFsOiBib29sZWFuO1xyXG4gIH07XHJcbn1cclxuYGBgXHJcbiAqXHJcbiAqIFVzdWFsbHkgeW91IHdvdWxkIHVzZSB0aGlzIHZhbGlkYXRpb24gZnVuY3Rpb24gaW4gY29uanVuY3Rpb24gd2l0aCB0aGUgYHZhbGlkYXRlYFxyXG4gKiB1cGRhdGUgZnVuY3Rpb24gdG8gcGVyZm9ybSBzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGluIHlvdXIgcmVkdWNlcjpcclxuICpcclxuYGBgdHlwZXNjcmlwdFxyXG51cGRhdGVHcm91cDxNeUZvcm1WYWx1ZT4oe1xyXG4gIGFncmVlV2l0aFRlcm1zT2ZTZXJ2aWNlOiB2YWxpZGF0ZShyZXF1aXJlZFRydWUpLFxyXG59KVxyXG5gYGBcclxuICpcclxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgZ2VuZXJpYyB0byBhbGxvdyB0aGUgY29tcGlsZXIgdG8gcHJvcGVybHkgaW5mZXIgdGhlIHR5cGVcclxuICogb2YgdGhlIGB2YWxpZGF0ZWAgZnVuY3Rpb24gZm9yIGJvdGggb3B0aW9uYWwgYW5kIG5vbi1vcHRpb25hbCBjb250cm9scy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZFRydWU8VCBleHRlbmRzIGJvb2xlYW4gfCBCb3hlZDxib29sZWFuPiB8IG51bGwgfCB1bmRlZmluZWQ+KHZhbHVlOiBUKTogVmFsaWRhdGlvbkVycm9ycyB7XHJcbiAgdmFsdWUgPSB1bmJveCh2YWx1ZSkgYXMgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgYXMgVDtcclxuXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN0cmljdC10eXBlLXByZWRpY2F0ZXNcclxuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgcmV0dXJuIHt9O1xyXG4gIH1cclxuXHJcbiAgaWYgKHZhbHVlKSB7XHJcbiAgICByZXR1cm4ge307XHJcbiAgfVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgcmVxdWlyZWQ6IHtcclxuICAgICAgYWN0dWFsOiB2YWx1ZSxcclxuICAgIH0sXHJcbiAgfTtcclxufVxyXG4iXX0=