ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
40 lines • 3.33 kB
JavaScript
import { unbox } from 'ngrx-forms';
/**
* A validation function that requires the value to be strictly not equal (i.e. `!==`)
* to another value.
*
* The validation error returned by this validation function has the following shape:
*
```typescript
{
notEqualTo: {
comparand: T;
actual: T;
};
}
```
*
* 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(notEqualTo('John Doe')),
})
```
*/
export function notEqualTo(comparand) {
return (value) => {
value = unbox(value);
if (value !== comparand) {
return {};
}
return {
notEqualTo: {
comparand,
actual: value,
},
};
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90LWVxdWFsLXRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFsaWRhdGlvbi9zcmMvbm90LWVxdWFsLXRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUyxLQUFLLEVBQW9CLE1BQU0sWUFBWSxDQUFDO0FBYzVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUksU0FBWTtJQUN4QyxPQUFPLENBQThCLEtBQVMsRUFBb0IsRUFBRTtRQUNsRSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBWSxDQUFDO1FBRWhDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsT0FBTztZQUNMLFVBQVUsRUFBRTtnQkFDVixTQUFTO2dCQUNULE1BQU0sRUFBRSxLQUFLO2FBQ2Q7U0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJveGVkLCB1bmJveCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ25ncngtZm9ybXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOb3RFcXVhbFRvVmFsaWRhdGlvbkVycm9yPFQ+IHtcclxuICBjb21wYXJhbmQ6IFQ7XHJcbiAgYWN0dWFsOiBUO1xyXG59XHJcblxyXG4vLyBAdHMtaWdub3JlXHJcbmRlY2xhcmUgbW9kdWxlICduZ3J4LWZvcm1zJyB7XHJcbiAgZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0aW9uRXJyb3JzIHtcclxuICAgIG5vdEVxdWFsVG8/OiBOb3RFcXVhbFRvVmFsaWRhdGlvbkVycm9yPGFueT47XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHRoYXQgcmVxdWlyZXMgdGhlIHZhbHVlIHRvIGJlIHN0cmljdGx5IG5vdCBlcXVhbCAoaS5lLiBgIT09YClcclxuICogdG8gYW5vdGhlciB2YWx1ZS5cclxuICpcclxuICogVGhlIHZhbGlkYXRpb24gZXJyb3IgcmV0dXJuZWQgYnkgdGhpcyB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyB0aGUgZm9sbG93aW5nIHNoYXBlOlxyXG4gKlxyXG5gYGB0eXBlc2NyaXB0XHJcbntcclxuICBub3RFcXVhbFRvOiB7XHJcbiAgICBjb21wYXJhbmQ6IFQ7XHJcbiAgICBhY3R1YWw6IFQ7XHJcbiAgfTtcclxufVxyXG5gYGBcclxuICpcclxuICogVXN1YWxseSB5b3Ugd291bGQgdXNlIHRoaXMgdmFsaWRhdGlvbiBmdW5jdGlvbiBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBgdmFsaWRhdGVgXHJcbiAqIHVwZGF0ZSBmdW5jdGlvbiB0byBwZXJmb3JtIHN5bmNocm9ub3VzIHZhbGlkYXRpb24gaW4geW91ciByZWR1Y2VyOlxyXG4gKlxyXG5gYGB0eXBlc2NyaXB0XHJcbnVwZGF0ZUdyb3VwPE15Rm9ybVZhbHVlPih7XHJcbiAgbmFtZTogdmFsaWRhdGUobm90RXF1YWxUbygnSm9obiBEb2UnKSksXHJcbn0pXHJcbmBgYFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG5vdEVxdWFsVG88VD4oY29tcGFyYW5kOiBUKSB7XHJcbiAgcmV0dXJuIDxUViBleHRlbmRzIFQgfCBCb3hlZDxUPiA9IFQ+KHZhbHVlOiBUVik6IFZhbGlkYXRpb25FcnJvcnMgPT4ge1xyXG4gICAgdmFsdWUgPSB1bmJveCh2YWx1ZSkgYXMgVCBhcyBUVjtcclxuXHJcbiAgICBpZiAodmFsdWUgIT09IGNvbXBhcmFuZCkge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbm90RXF1YWxUbzoge1xyXG4gICAgICAgIGNvbXBhcmFuZCxcclxuICAgICAgICBhY3R1YWw6IHZhbHVlLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbiJdfQ==