ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
36 lines • 3.15 kB
JavaScript
import { unbox } from 'ngrx-forms';
/**
* A validation function that requires the value to be non-`undefined`, non-'null',
* and non-empty.
*
* The validation error returned by this validation function has the following shape:
*
```typescript
{
required: {
actual: T | null | undefined;
};
}
```
*
* Usually you would use this validation function in conjunction with the `validate`
* update function to perform synchronous validation in your reducer:
*
```typescript
updateGroup<MyFormValue>({
name: validate(required),
})
```
*/
export function required(value) {
value = unbox(value);
if (value !== undefined && value !== null && value.length !== 0) {
return {};
}
return {
required: {
actual: value,
},
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi92YWxpZGF0aW9uL3NyYy9yZXF1aXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVMsS0FBSyxFQUFvQixNQUFNLFlBQVksQ0FBQztBQWE1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUksS0FBc0M7SUFDaEUsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQXlCLENBQUM7SUFFN0MsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUssS0FBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDeEUsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUVELE9BQU87UUFDTCxRQUFRLEVBQUU7WUFDUixNQUFNLEVBQUUsS0FBSztTQUNkO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb3hlZCwgdW5ib3gsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICduZ3J4LWZvcm1zJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWlyZWRWYWxpZGF0aW9uRXJyb3I8VD4ge1xyXG4gIGFjdHVhbDogVCB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbi8vIEB0cy1pZ25vcmVcclxuZGVjbGFyZSBtb2R1bGUgJ25ncngtZm9ybXMnIHtcclxuICBleHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25FcnJvcnMge1xyXG4gICAgcmVxdWlyZWQ/OiBSZXF1aXJlZFZhbGlkYXRpb25FcnJvcjxhbnk+O1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgdmFsaWRhdGlvbiBmdW5jdGlvbiB0aGF0IHJlcXVpcmVzIHRoZSB2YWx1ZSB0byBiZSBub24tYHVuZGVmaW5lZGAsIG5vbi0nbnVsbCcsXHJcbiAqIGFuZCBub24tZW1wdHkuXHJcbiAqXHJcbiAqIFRoZSB2YWxpZGF0aW9uIGVycm9yIHJldHVybmVkIGJ5IHRoaXMgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgdGhlIGZvbGxvd2luZyBzaGFwZTpcclxuICpcclxuYGBgdHlwZXNjcmlwdFxyXG57XHJcbiAgcmVxdWlyZWQ6IHtcclxuICAgIGFjdHVhbDogVCB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgfTtcclxufVxyXG5gYGBcclxuICpcclxuICogVXN1YWxseSB5b3Ugd291bGQgdXNlIHRoaXMgdmFsaWRhdGlvbiBmdW5jdGlvbiBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBgdmFsaWRhdGVgXHJcbiAqIHVwZGF0ZSBmdW5jdGlvbiB0byBwZXJmb3JtIHN5bmNocm9ub3VzIHZhbGlkYXRpb24gaW4geW91ciByZWR1Y2VyOlxyXG4gKlxyXG5gYGB0eXBlc2NyaXB0XHJcbnVwZGF0ZUdyb3VwPE15Rm9ybVZhbHVlPih7XHJcbiAgbmFtZTogdmFsaWRhdGUocmVxdWlyZWQpLFxyXG59KVxyXG5gYGBcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZDxUPih2YWx1ZTogVCB8IEJveGVkPFQ+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IFZhbGlkYXRpb25FcnJvcnMge1xyXG4gIHZhbHVlID0gdW5ib3godmFsdWUpIGFzIFQgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG5cclxuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAodmFsdWUgYXMgYW55KS5sZW5ndGggIT09IDApIHtcclxuICAgIHJldHVybiB7fTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICByZXF1aXJlZDoge1xyXG4gICAgICBhY3R1YWw6IHZhbHVlLFxyXG4gICAgfSxcclxuICB9O1xyXG59XHJcbiJdfQ==