ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
20 lines • 3.57 kB
JavaScript
import { SetAsyncErrorAction } from '../../actions';
import { deepEquals } from '../../util';
export function setAsyncErrorReducer(state, action) {
if (action.type !== SetAsyncErrorAction.TYPE) {
return state;
}
if (state.isDisabled) {
return state;
}
const name = `$${action.name}`;
let value = action.value;
if (deepEquals(state.errors[name], action.value)) {
value = state.errors[name];
}
const errors = Object.assign(Object.assign({}, state.errors), { [name]: value });
const pendingValidations = state.pendingValidations.filter(v => v !== action.name);
return Object.assign(Object.assign({}, state), { isValid: false, isInvalid: true, errors,
pendingValidations, isValidationPending: pendingValidations.length > 0 });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LWFzeW5jLWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbnRyb2wvcmVkdWNlci9zZXQtYXN5bmMtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFeEMsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxLQUErQixFQUMvQixNQUF1QjtJQUV2QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsSUFBSSxFQUFFO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7UUFDcEIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFFekIsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDaEQsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDNUI7SUFFRCxNQUFNLE1BQU0sbUNBQVEsS0FBSyxDQUFDLE1BQU0sS0FBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssR0FBRSxDQUFDO0lBQ2xELE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFbkYsdUNBQ0ssS0FBSyxLQUNSLE9BQU8sRUFBRSxLQUFLLEVBQ2QsU0FBUyxFQUFFLElBQUksRUFDZixNQUFNO1FBQ04sa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQ2xEO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbnMsIFNldEFzeW5jRXJyb3JBY3Rpb24gfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xTdGF0ZSwgRm9ybUNvbnRyb2xWYWx1ZVR5cGVzIH0gZnJvbSAnLi4vLi4vc3RhdGUnO1xyXG5pbXBvcnQgeyBkZWVwRXF1YWxzIH0gZnJvbSAnLi4vLi4vdXRpbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0QXN5bmNFcnJvclJlZHVjZXI8VFZhbHVlIGV4dGVuZHMgRm9ybUNvbnRyb2xWYWx1ZVR5cGVzPihcclxuICBzdGF0ZTogRm9ybUNvbnRyb2xTdGF0ZTxUVmFsdWU+LFxyXG4gIGFjdGlvbjogQWN0aW9uczxUVmFsdWU+LFxyXG4pOiBGb3JtQ29udHJvbFN0YXRlPFRWYWx1ZT4ge1xyXG4gIGlmIChhY3Rpb24udHlwZSAhPT0gU2V0QXN5bmNFcnJvckFjdGlvbi5UWVBFKSB7XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUuaXNEaXNhYmxlZCkge1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbmFtZSA9IGAkJHthY3Rpb24ubmFtZX1gO1xyXG4gIGxldCB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcclxuXHJcbiAgaWYgKGRlZXBFcXVhbHMoc3RhdGUuZXJyb3JzW25hbWVdLCBhY3Rpb24udmFsdWUpKSB7XHJcbiAgICB2YWx1ZSA9IHN0YXRlLmVycm9yc1tuYW1lXTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGVycm9ycyA9IHsgLi4uc3RhdGUuZXJyb3JzLCBbbmFtZV06IHZhbHVlIH07XHJcbiAgY29uc3QgcGVuZGluZ1ZhbGlkYXRpb25zID0gc3RhdGUucGVuZGluZ1ZhbGlkYXRpb25zLmZpbHRlcih2ID0+IHYgIT09IGFjdGlvbi5uYW1lKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICBpc0ludmFsaWQ6IHRydWUsXHJcbiAgICBlcnJvcnMsXHJcbiAgICBwZW5kaW5nVmFsaWRhdGlvbnMsXHJcbiAgICBpc1ZhbGlkYXRpb25QZW5kaW5nOiBwZW5kaW5nVmFsaWRhdGlvbnMubGVuZ3RoID4gMCxcclxuICB9O1xyXG59XHJcbiJdfQ==