ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
22 lines • 3.7 kB
JavaScript
import { EnableAction } from '../../actions';
import { computeGroupState } from '../../state';
import { childReducer, dispatchActionPerChild } from './util';
export function enableReducer(state, action) {
if (action.type !== EnableAction.TYPE) {
return state;
}
if (action.controlId !== state.id) {
return childReducer(state, action);
}
const controls = dispatchActionPerChild(state.controls, controlId => new EnableAction(controlId));
if (controls === state.controls) {
return state;
}
return computeGroupState(state.id, controls, state.value, state.errors, state.pendingValidations, state.userDefinedProperties, {
wasOrShouldBeDirty: state.isDirty,
wasOrShouldBeEnabled: true,
wasOrShouldBeTouched: state.isTouched,
wasOrShouldBeSubmitted: state.isSubmitted,
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5hYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2dyb3VwL3JlZHVjZXIvZW5hYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUE0QixNQUFNLGFBQWEsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTlELE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQTZCLEVBQzdCLE1BQXVCO0lBRXZCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxFQUFFO1FBQ3JDLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNqQyxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDcEM7SUFFRCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUVsRyxJQUFJLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxPQUFPLGlCQUFpQixDQUN0QixLQUFLLENBQUMsRUFBRSxFQUNSLFFBQVEsRUFDUixLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxNQUFNLEVBQ1osS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMscUJBQXFCLEVBQzNCO1FBQ0Usa0JBQWtCLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDakMsb0JBQW9CLEVBQUUsSUFBSTtRQUMxQixvQkFBb0IsRUFBRSxLQUFLLENBQUMsU0FBUztRQUNyQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsV0FBVztLQUMxQyxDQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9ucywgRW5hYmxlQWN0aW9uIH0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XHJcbmltcG9ydCB7IGNvbXB1dGVHcm91cFN0YXRlLCBGb3JtR3JvdXBTdGF0ZSwgS2V5VmFsdWUgfSBmcm9tICcuLi8uLi9zdGF0ZSc7XHJcbmltcG9ydCB7IGNoaWxkUmVkdWNlciwgZGlzcGF0Y2hBY3Rpb25QZXJDaGlsZCB9IGZyb20gJy4vdXRpbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUmVkdWNlcjxUVmFsdWUgZXh0ZW5kcyBLZXlWYWx1ZT4oXHJcbiAgc3RhdGU6IEZvcm1Hcm91cFN0YXRlPFRWYWx1ZT4sXHJcbiAgYWN0aW9uOiBBY3Rpb25zPFRWYWx1ZT4sXHJcbik6IEZvcm1Hcm91cFN0YXRlPFRWYWx1ZT4ge1xyXG4gIGlmIChhY3Rpb24udHlwZSAhPT0gRW5hYmxlQWN0aW9uLlRZUEUpIHtcclxuICAgIHJldHVybiBzdGF0ZTtcclxuICB9XHJcblxyXG4gIGlmIChhY3Rpb24uY29udHJvbElkICE9PSBzdGF0ZS5pZCkge1xyXG4gICAgcmV0dXJuIGNoaWxkUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGNvbnRyb2xzID0gZGlzcGF0Y2hBY3Rpb25QZXJDaGlsZChzdGF0ZS5jb250cm9scywgY29udHJvbElkID0+IG5ldyBFbmFibGVBY3Rpb24oY29udHJvbElkKSk7XHJcblxyXG4gIGlmIChjb250cm9scyA9PT0gc3RhdGUuY29udHJvbHMpIHtcclxuICAgIHJldHVybiBzdGF0ZTtcclxuICB9XHJcblxyXG4gIHJldHVybiBjb21wdXRlR3JvdXBTdGF0ZShcclxuICAgIHN0YXRlLmlkLFxyXG4gICAgY29udHJvbHMsXHJcbiAgICBzdGF0ZS52YWx1ZSxcclxuICAgIHN0YXRlLmVycm9ycyxcclxuICAgIHN0YXRlLnBlbmRpbmdWYWxpZGF0aW9ucyxcclxuICAgIHN0YXRlLnVzZXJEZWZpbmVkUHJvcGVydGllcyxcclxuICAgIHtcclxuICAgICAgd2FzT3JTaG91bGRCZURpcnR5OiBzdGF0ZS5pc0RpcnR5LFxyXG4gICAgICB3YXNPclNob3VsZEJlRW5hYmxlZDogdHJ1ZSxcclxuICAgICAgd2FzT3JTaG91bGRCZVRvdWNoZWQ6IHN0YXRlLmlzVG91Y2hlZCxcclxuICAgICAgd2FzT3JTaG91bGRCZVN1Ym1pdHRlZDogc3RhdGUuaXNTdWJtaXR0ZWQsXHJcbiAgICB9LFxyXG4gICk7XHJcbn1cclxuIl19