ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
23 lines • 4.09 kB
JavaScript
import { RemoveGroupControlAction } from '../../actions';
import { computeGroupState } from '../../state';
import { childReducer } from './util';
export function removeControlReducer(state, action) {
if (action.type !== RemoveGroupControlAction.TYPE) {
return state;
}
if (action.controlId !== state.id) {
return childReducer(state, action);
}
if (!state.controls.hasOwnProperty(action.name)) {
throw new Error(`Group '${state.id}' does not have child control '${action.name}'!`); // `;
}
const controls = Object.assign({}, state.controls);
delete controls[action.name];
return computeGroupState(state.id, controls, state.value, state.errors, state.pendingValidations, state.userDefinedProperties, {
wasOrShouldBeDirty: true,
wasOrShouldBeEnabled: state.isEnabled,
wasOrShouldBeTouched: state.isTouched,
wasOrShouldBeSubmitted: state.isSubmitted,
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWNvbnRyb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ3JvdXAvcmVkdWNlci9yZW1vdmUtY29udHJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUE0QixNQUFNLGFBQWEsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXRDLE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsS0FBNkIsRUFDN0IsTUFBdUI7SUFFdkIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDLElBQUksRUFBRTtRQUNqRCxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUU7UUFDakMsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ3BDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxDQUFDLEVBQUUsa0NBQWtDLE1BQU0sQ0FBQyxJQUFjLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSztLQUN0RztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFN0IsT0FBTyxpQkFBaUIsQ0FDdEIsS0FBSyxDQUFDLEVBQUUsRUFDUixRQUFRLEVBQ1IsS0FBSyxDQUFDLEtBQUssRUFDWCxLQUFLLENBQUMsTUFBTSxFQUNaLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLHFCQUFxQixFQUMzQjtRQUNFLGtCQUFrQixFQUFFLElBQUk7UUFDeEIsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDckMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDckMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLFdBQVc7S0FDMUMsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbnMsIFJlbW92ZUdyb3VwQ29udHJvbEFjdGlvbiB9IGZyb20gJy4uLy4uL2FjdGlvbnMnO1xyXG5pbXBvcnQgeyBjb21wdXRlR3JvdXBTdGF0ZSwgRm9ybUdyb3VwU3RhdGUsIEtleVZhbHVlIH0gZnJvbSAnLi4vLi4vc3RhdGUnO1xyXG5pbXBvcnQgeyBjaGlsZFJlZHVjZXIgfSBmcm9tICcuL3V0aWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNvbnRyb2xSZWR1Y2VyPFRWYWx1ZSBleHRlbmRzIEtleVZhbHVlPihcclxuICBzdGF0ZTogRm9ybUdyb3VwU3RhdGU8VFZhbHVlPixcclxuICBhY3Rpb246IEFjdGlvbnM8VFZhbHVlPixcclxuKTogRm9ybUdyb3VwU3RhdGU8VFZhbHVlPiB7XHJcbiAgaWYgKGFjdGlvbi50eXBlICE9PSBSZW1vdmVHcm91cENvbnRyb2xBY3Rpb24uVFlQRSkge1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgaWYgKGFjdGlvbi5jb250cm9sSWQgIT09IHN0YXRlLmlkKSB7XHJcbiAgICByZXR1cm4gY2hpbGRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFzdGF0ZS5jb250cm9scy5oYXNPd25Qcm9wZXJ0eShhY3Rpb24ubmFtZSkpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihgR3JvdXAgJyR7c3RhdGUuaWR9JyBkb2VzIG5vdCBoYXZlIGNoaWxkIGNvbnRyb2wgJyR7YWN0aW9uLm5hbWUgYXMgc3RyaW5nfSchYCk7IC8vIGA7XHJcbiAgfVxyXG5cclxuICBjb25zdCBjb250cm9scyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmNvbnRyb2xzKTtcclxuICBkZWxldGUgY29udHJvbHNbYWN0aW9uLm5hbWVdO1xyXG5cclxuICByZXR1cm4gY29tcHV0ZUdyb3VwU3RhdGUoXHJcbiAgICBzdGF0ZS5pZCxcclxuICAgIGNvbnRyb2xzLFxyXG4gICAgc3RhdGUudmFsdWUsXHJcbiAgICBzdGF0ZS5lcnJvcnMsXHJcbiAgICBzdGF0ZS5wZW5kaW5nVmFsaWRhdGlvbnMsXHJcbiAgICBzdGF0ZS51c2VyRGVmaW5lZFByb3BlcnRpZXMsXHJcbiAgICB7XHJcbiAgICAgIHdhc09yU2hvdWxkQmVEaXJ0eTogdHJ1ZSxcclxuICAgICAgd2FzT3JTaG91bGRCZUVuYWJsZWQ6IHN0YXRlLmlzRW5hYmxlZCxcclxuICAgICAgd2FzT3JTaG91bGRCZVRvdWNoZWQ6IHN0YXRlLmlzVG91Y2hlZCxcclxuICAgICAgd2FzT3JTaG91bGRCZVN1Ym1pdHRlZDogc3RhdGUuaXNTdWJtaXR0ZWQsXHJcbiAgICB9LFxyXG4gICk7XHJcbn1cclxuIl19