ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
21 lines • 3.67 kB
JavaScript
import { MarkAsUntouchedAction } from '../../actions';
import { computeGroupState } from '../../state';
import { childReducer, dispatchActionPerChild } from './util';
export function markAsUntouchedReducer(state, action) {
if (action.type !== MarkAsUntouchedAction.TYPE) {
return state;
}
if (action.controlId !== state.id) {
return childReducer(state, action);
}
if (state.isUntouched) {
return state;
}
return computeGroupState(state.id, dispatchActionPerChild(state.controls, controlId => new MarkAsUntouchedAction(controlId)), state.value, state.errors, state.pendingValidations, state.userDefinedProperties, {
wasOrShouldBeDirty: state.isDirty,
wasOrShouldBeEnabled: state.isEnabled,
wasOrShouldBeTouched: false,
wasOrShouldBeSubmitted: state.isSubmitted,
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFyay1hcy11bnRvdWNoZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JvdXAvcmVkdWNlci9tYXJrLWFzLXVudG91Y2hlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUE0QixNQUFNLGFBQWEsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsS0FBNkIsRUFDN0IsTUFBdUI7SUFFdkIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLElBQUksRUFBRTtRQUM5QyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDakMsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLGlCQUFpQixDQUN0QixLQUFLLENBQUMsRUFBRSxFQUNSLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQ3pGLEtBQUssQ0FBQyxLQUFLLEVBQ1gsS0FBSyxDQUFDLE1BQU0sRUFDWixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxxQkFBcUIsRUFDM0I7UUFDRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsT0FBTztRQUNqQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsU0FBUztRQUNyQyxvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxXQUFXO0tBQzFDLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zLCBNYXJrQXNVbnRvdWNoZWRBY3Rpb24gfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcclxuaW1wb3J0IHsgY29tcHV0ZUdyb3VwU3RhdGUsIEZvcm1Hcm91cFN0YXRlLCBLZXlWYWx1ZSB9IGZyb20gJy4uLy4uL3N0YXRlJztcclxuaW1wb3J0IHsgY2hpbGRSZWR1Y2VyLCBkaXNwYXRjaEFjdGlvblBlckNoaWxkIH0gZnJvbSAnLi91dGlsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrQXNVbnRvdWNoZWRSZWR1Y2VyPFRWYWx1ZSBleHRlbmRzIEtleVZhbHVlPihcclxuICBzdGF0ZTogRm9ybUdyb3VwU3RhdGU8VFZhbHVlPixcclxuICBhY3Rpb246IEFjdGlvbnM8VFZhbHVlPixcclxuKTogRm9ybUdyb3VwU3RhdGU8VFZhbHVlPiB7XHJcbiAgaWYgKGFjdGlvbi50eXBlICE9PSBNYXJrQXNVbnRvdWNoZWRBY3Rpb24uVFlQRSkge1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgaWYgKGFjdGlvbi5jb250cm9sSWQgIT09IHN0YXRlLmlkKSB7XHJcbiAgICByZXR1cm4gY2hpbGRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlLmlzVW50b3VjaGVkKSB7XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gY29tcHV0ZUdyb3VwU3RhdGUoXHJcbiAgICBzdGF0ZS5pZCxcclxuICAgIGRpc3BhdGNoQWN0aW9uUGVyQ2hpbGQoc3RhdGUuY29udHJvbHMsIGNvbnRyb2xJZCA9PiBuZXcgTWFya0FzVW50b3VjaGVkQWN0aW9uKGNvbnRyb2xJZCkpLFxyXG4gICAgc3RhdGUudmFsdWUsXHJcbiAgICBzdGF0ZS5lcnJvcnMsXHJcbiAgICBzdGF0ZS5wZW5kaW5nVmFsaWRhdGlvbnMsXHJcbiAgICBzdGF0ZS51c2VyRGVmaW5lZFByb3BlcnRpZXMsXHJcbiAgICB7XHJcbiAgICAgIHdhc09yU2hvdWxkQmVEaXJ0eTogc3RhdGUuaXNEaXJ0eSxcclxuICAgICAgd2FzT3JTaG91bGRCZUVuYWJsZWQ6IHN0YXRlLmlzRW5hYmxlZCxcclxuICAgICAgd2FzT3JTaG91bGRCZVRvdWNoZWQ6IGZhbHNlLFxyXG4gICAgICB3YXNPclNob3VsZEJlU3VibWl0dGVkOiBzdGF0ZS5pc1N1Ym1pdHRlZCxcclxuICAgIH0sXHJcbiAgKTtcclxufVxyXG4iXX0=