UNPKG

ngrx-forms

Version:

Proper integration of forms in Angular 4 applications using ngrx

21 lines 3.87 kB
import { ClearAsyncErrorAction } from '../../actions'; import { isEmpty } from '../../util'; export function clearAsyncErrorReducer(state, action) { if (action.type !== ClearAsyncErrorAction.TYPE) { return state; } const name = `$${action.name}`; let errors = state.errors; if (errors.hasOwnProperty(name)) { errors = Object.assign({}, state.errors); delete errors[name]; } const pendingValidations = state.pendingValidations.filter(v => v !== action.name); const isValid = isEmpty(errors); if (errors === state.errors && isValid === state.isValid && pendingValidations.length === state.pendingValidations.length) { return state; } return Object.assign(Object.assign({}, state), { isValid, isInvalid: !isValid, errors, pendingValidations, isValidationPending: pendingValidations.length > 0 }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYXItYXN5bmMtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29udHJvbC9yZWR1Y2VyL2NsZWFyLWFzeW5jLWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJDLE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsS0FBK0IsRUFDL0IsTUFBdUI7SUFFdkIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLElBQUksRUFBRTtRQUM5QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFL0IsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUUxQixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDL0IsTUFBTSxxQkFBUSxLQUFLLENBQUMsTUFBTSxDQUFFLENBQUM7UUFDN0IsT0FBUSxNQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7SUFFRCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25GLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVoQyxJQUFJLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFO1FBQ3pILE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCx1Q0FDSyxLQUFLLEtBQ1IsT0FBTyxFQUNQLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFDbkIsTUFBTTtRQUNOLGtCQUFrQixFQUNsQixtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUNsRDtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zLCBDbGVhckFzeW5jRXJyb3JBY3Rpb24gfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2xTdGF0ZSwgRm9ybUNvbnRyb2xWYWx1ZVR5cGVzIH0gZnJvbSAnLi4vLi4vc3RhdGUnO1xyXG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnLi4vLi4vdXRpbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJBc3luY0Vycm9yUmVkdWNlcjxUVmFsdWUgZXh0ZW5kcyBGb3JtQ29udHJvbFZhbHVlVHlwZXM+KFxyXG4gIHN0YXRlOiBGb3JtQ29udHJvbFN0YXRlPFRWYWx1ZT4sXHJcbiAgYWN0aW9uOiBBY3Rpb25zPFRWYWx1ZT4sXHJcbik6IEZvcm1Db250cm9sU3RhdGU8VFZhbHVlPiB7XHJcbiAgaWYgKGFjdGlvbi50eXBlICE9PSBDbGVhckFzeW5jRXJyb3JBY3Rpb24uVFlQRSkge1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbmFtZSA9IGAkJHthY3Rpb24ubmFtZX1gO1xyXG5cclxuICBsZXQgZXJyb3JzID0gc3RhdGUuZXJyb3JzO1xyXG5cclxuICBpZiAoZXJyb3JzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XHJcbiAgICBlcnJvcnMgPSB7IC4uLnN0YXRlLmVycm9ycyB9O1xyXG4gICAgZGVsZXRlIChlcnJvcnMgYXMgYW55KVtuYW1lXTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHBlbmRpbmdWYWxpZGF0aW9ucyA9IHN0YXRlLnBlbmRpbmdWYWxpZGF0aW9ucy5maWx0ZXIodiA9PiB2ICE9PSBhY3Rpb24ubmFtZSk7XHJcbiAgY29uc3QgaXNWYWxpZCA9IGlzRW1wdHkoZXJyb3JzKTtcclxuXHJcbiAgaWYgKGVycm9ycyA9PT0gc3RhdGUuZXJyb3JzICYmIGlzVmFsaWQgPT09IHN0YXRlLmlzVmFsaWQgJiYgcGVuZGluZ1ZhbGlkYXRpb25zLmxlbmd0aCA9PT0gc3RhdGUucGVuZGluZ1ZhbGlkYXRpb25zLmxlbmd0aCkge1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgaXNWYWxpZCxcclxuICAgIGlzSW52YWxpZDogIWlzVmFsaWQsXHJcbiAgICBlcnJvcnMsXHJcbiAgICBwZW5kaW5nVmFsaWRhdGlvbnMsXHJcbiAgICBpc1ZhbGlkYXRpb25QZW5kaW5nOiBwZW5kaW5nVmFsaWRhdGlvbnMubGVuZ3RoID4gMCxcclxuICB9O1xyXG59XHJcbiJdfQ==