ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
21 lines • 3.66 kB
JavaScript
import { MarkAsPristineAction } from '../../actions';
import { computeGroupState } from '../../state';
import { childReducer, dispatchActionPerChild } from './util';
export function markAsPristineReducer(state, action) {
if (action.type !== MarkAsPristineAction.TYPE) {
return state;
}
if (action.controlId !== state.id) {
return childReducer(state, action);
}
if (state.isPristine) {
return state;
}
return computeGroupState(state.id, dispatchActionPerChild(state.controls, controlId => new MarkAsPristineAction(controlId)), state.value, state.errors, state.pendingValidations, state.userDefinedProperties, {
wasOrShouldBeDirty: false,
wasOrShouldBeEnabled: state.isEnabled,
wasOrShouldBeTouched: state.isTouched,
wasOrShouldBeSubmitted: state.isSubmitted,
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1hcy1wcmlzdGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9ncm91cC9yZWR1Y2VyL21hcmstYXMtcHJpc3RpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFXLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBNEIsTUFBTSxhQUFhLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU5RCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEtBQTZCLEVBQzdCLE1BQXVCO0lBRXZCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUU7UUFDN0MsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ2pDLE9BQU8sWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNwQztJQUVELElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtRQUNwQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxpQkFBaUIsQ0FDdEIsS0FBSyxDQUFDLEVBQUUsRUFDUixzQkFBc0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUN4RixLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxNQUFNLEVBQ1osS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMscUJBQXFCLEVBQzNCO1FBQ0Usa0JBQWtCLEVBQUUsS0FBSztRQUN6QixvQkFBb0IsRUFBRSxLQUFLLENBQUMsU0FBUztRQUNyQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsU0FBUztRQUNyQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsV0FBVztLQUMxQyxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9ucywgTWFya0FzUHJpc3RpbmVBY3Rpb24gfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcclxuaW1wb3J0IHsgY29tcHV0ZUdyb3VwU3RhdGUsIEZvcm1Hcm91cFN0YXRlLCBLZXlWYWx1ZSB9IGZyb20gJy4uLy4uL3N0YXRlJztcclxuaW1wb3J0IHsgY2hpbGRSZWR1Y2VyLCBkaXNwYXRjaEFjdGlvblBlckNoaWxkIH0gZnJvbSAnLi91dGlsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrQXNQcmlzdGluZVJlZHVjZXI8VFZhbHVlIGV4dGVuZHMgS2V5VmFsdWU+KFxyXG4gIHN0YXRlOiBGb3JtR3JvdXBTdGF0ZTxUVmFsdWU+LFxyXG4gIGFjdGlvbjogQWN0aW9uczxUVmFsdWU+LFxyXG4pOiBGb3JtR3JvdXBTdGF0ZTxUVmFsdWU+IHtcclxuICBpZiAoYWN0aW9uLnR5cGUgIT09IE1hcmtBc1ByaXN0aW5lQWN0aW9uLlRZUEUpIHtcclxuICAgIHJldHVybiBzdGF0ZTtcclxuICB9XHJcblxyXG4gIGlmIChhY3Rpb24uY29udHJvbElkICE9PSBzdGF0ZS5pZCkge1xyXG4gICAgcmV0dXJuIGNoaWxkUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5pc1ByaXN0aW5lKSB7XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gY29tcHV0ZUdyb3VwU3RhdGUoXHJcbiAgICBzdGF0ZS5pZCxcclxuICAgIGRpc3BhdGNoQWN0aW9uUGVyQ2hpbGQoc3RhdGUuY29udHJvbHMsIGNvbnRyb2xJZCA9PiBuZXcgTWFya0FzUHJpc3RpbmVBY3Rpb24oY29udHJvbElkKSksXHJcbiAgICBzdGF0ZS52YWx1ZSxcclxuICAgIHN0YXRlLmVycm9ycyxcclxuICAgIHN0YXRlLnBlbmRpbmdWYWxpZGF0aW9ucyxcclxuICAgIHN0YXRlLnVzZXJEZWZpbmVkUHJvcGVydGllcyxcclxuICAgIHtcclxuICAgICAgd2FzT3JTaG91bGRCZURpcnR5OiBmYWxzZSxcclxuICAgICAgd2FzT3JTaG91bGRCZUVuYWJsZWQ6IHN0YXRlLmlzRW5hYmxlZCxcclxuICAgICAgd2FzT3JTaG91bGRCZVRvdWNoZWQ6IHN0YXRlLmlzVG91Y2hlZCxcclxuICAgICAgd2FzT3JTaG91bGRCZVN1Ym1pdHRlZDogc3RhdGUuaXNTdWJtaXR0ZWQsXHJcbiAgICB9LFxyXG4gICk7XHJcbn1cclxuIl19