ngrx-forms
Version:
Proper integration of forms in Angular 4 applications using ngrx
72 lines • 11.9 kB
JavaScript
import { AddGroupControlAction, FocusAction, isNgrxFormsAction, RemoveGroupControlAction, UnfocusAction, } from '../actions';
import { isArrayState } from '../state';
import { addControlReducer } from './reducer/add-control';
import { clearAsyncErrorReducer } from './reducer/clear-async-error';
import { disableReducer } from './reducer/disable';
import { enableReducer } from './reducer/enable';
import { markAsDirtyReducer } from './reducer/mark-as-dirty';
import { markAsPristineReducer } from './reducer/mark-as-pristine';
import { markAsSubmittedReducer } from './reducer/mark-as-submitted';
import { markAsTouchedReducer } from './reducer/mark-as-touched';
import { markAsUnsubmittedReducer } from './reducer/mark-as-unsubmitted';
import { markAsUntouchedReducer } from './reducer/mark-as-untouched';
import { moveControlReducer } from './reducer/move-control';
import { removeControlReducer } from './reducer/remove-control';
import { resetReducer } from './reducer/reset';
import { setAsyncErrorReducer } from './reducer/set-async-error';
import { setErrorsReducer } from './reducer/set-errors';
import { setUserDefinedPropertyReducer } from './reducer/set-user-defined-property';
import { setValueReducer } from './reducer/set-value';
import { startAsyncValidationReducer } from './reducer/start-async-validation';
import { swapControlReducer } from './reducer/swap-control';
import { childReducer } from './reducer/util';
export function formArrayReducerInternal(state, action) {
if (!isArrayState(state)) {
throw new Error('The state must be an array state');
}
if (!isNgrxFormsAction(action)) {
return state;
}
if (!action.controlId.startsWith(state.id)) {
return state;
}
switch (action.type) {
case FocusAction.TYPE:
case UnfocusAction.TYPE:
case AddGroupControlAction.TYPE:
case RemoveGroupControlAction.TYPE:
return childReducer(state, action);
default:
break;
}
state = setValueReducer(state, action);
state = setErrorsReducer(state, action);
state = startAsyncValidationReducer(state, action);
state = setAsyncErrorReducer(state, action);
state = clearAsyncErrorReducer(state, action);
state = enableReducer(state, action);
state = disableReducer(state, action);
state = markAsDirtyReducer(state, action);
state = markAsPristineReducer(state, action);
state = markAsTouchedReducer(state, action);
state = markAsUntouchedReducer(state, action);
state = markAsSubmittedReducer(state, action);
state = markAsUnsubmittedReducer(state, action);
state = setUserDefinedPropertyReducer(state, action);
state = resetReducer(state, action);
state = addControlReducer(state, action);
state = removeControlReducer(state, action);
state = swapControlReducer(state, action);
state = moveControlReducer(state, action);
return state;
}
/**
* This reducer function updates a form array state with actions.
*/
export function formArrayReducer(state, action) {
if (!state) {
throw new Error('The array state must be defined!');
}
return formArrayReducerInternal(state, action);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcnJheS9yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBa0IsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFB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QUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBUyxLQUF5QyxFQUFFLE1BQWM7SUFDaEcsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztLQUNyRDtJQUVELE9BQU8sd0JBQXdCLENBQUMsS0FBSyxFQUFFLE1BQWEsQ0FBQyxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEFjdGlvbnMsXHJcbiAgQWRkR3JvdXBDb250cm9sQWN0aW9uLFxyXG4gIEZvY3VzQWN0aW9uLFxyXG4gIGlzTmdyeEZvcm1zQWN0aW9uLFxyXG4gIFJlbW92ZUdyb3VwQ29udHJvbEFjdGlvbixcclxuICBVbmZvY3VzQWN0aW9uLFxyXG59IGZyb20gJy4uL2FjdGlvbnMnO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXlTdGF0ZSwgaXNBcnJheVN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xyXG5pbXBvcnQgeyBhZGRDb250cm9sUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9hZGQtY29udHJvbCc7XHJcbmltcG9ydCB7IGNsZWFyQXN5bmNFcnJvclJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvY2xlYXItYXN5bmMtZXJyb3InO1xyXG5pbXBvcnQgeyBkaXNhYmxlUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9kaXNhYmxlJztcclxuaW1wb3J0IHsgZW5hYmxlUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9lbmFibGUnO1xyXG5pbXBvcnQgeyBtYXJrQXNEaXJ0eVJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvbWFyay1hcy1kaXJ0eSc7XHJcbmltcG9ydCB7IG1hcmtBc1ByaXN0aW5lUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9tYXJrLWFzLXByaXN0aW5lJztcclxuaW1wb3J0IHsgbWFya0FzU3VibWl0dGVkUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9tYXJrLWFzLXN1Ym1pdHRlZCc7XHJcbmltcG9ydCB7IG1hcmtBc1RvdWNoZWRSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL21hcmstYXMtdG91Y2hlZCc7XHJcbmltcG9ydCB7IG1hcmtBc1Vuc3VibWl0dGVkUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9tYXJrLWFzLXVuc3VibWl0dGVkJztcclxuaW1wb3J0IHsgbWFya0FzVW50b3VjaGVkUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9tYXJrLWFzLXVudG91Y2hlZCc7XHJcbmltcG9ydCB7IG1vdmVDb250cm9sUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9tb3ZlLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyByZW1vdmVDb250cm9sUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9yZW1vdmUtY29udHJvbCc7XHJcbmltcG9ydCB7IHJlc2V0UmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9yZXNldCc7XHJcbmltcG9ydCB7IHNldEFzeW5jRXJyb3JSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3NldC1hc3luYy1lcnJvcic7XHJcbmltcG9ydCB7IHNldEVycm9yc1JlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvc2V0LWVycm9ycyc7XHJcbmltcG9ydCB7IHNldFVzZXJEZWZpbmVkUHJvcGVydHlSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3NldC11c2VyLWRlZmluZWQtcHJvcGVydHknO1xyXG5pbXBvcnQgeyBzZXRWYWx1ZVJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvc2V0LXZhbHVlJztcclxuaW1wb3J0IHsgc3RhcnRBc3luY1ZhbGlkYXRpb25SZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3N0YXJ0LWFzeW5jLXZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBzd2FwQ29udHJvbFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvc3dhcC1jb250cm9sJztcclxuaW1wb3J0IHsgY2hpbGRSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3V0aWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1BcnJheVJlZHVjZXJJbnRlcm5hbDxUVmFsdWU+KHN0YXRlOiBGb3JtQXJyYXlTdGF0ZTxUVmFsdWU+LCBhY3Rpb246IEFjdGlvbnM8VFZhbHVlW10+KSB7XHJcbiAgaWYgKCFpc0FycmF5U3RhdGUoc3RhdGUpKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGF0ZSBtdXN0IGJlIGFuIGFycmF5IHN0YXRlJyk7XHJcbiAgfVxyXG5cclxuICBpZiAoIWlzTmdyeEZvcm1zQWN0aW9uKGFjdGlvbikpIHtcclxuICAgIHJldHVybiBzdGF0ZTtcclxuICB9XHJcblxyXG4gIGlmICghYWN0aW9uLmNvbnRyb2xJZC5zdGFydHNXaXRoKHN0YXRlLmlkKSkge1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xyXG4gICAgY2FzZSBGb2N1c0FjdGlvbi5UWVBFOlxyXG4gICAgY2FzZSBVbmZvY3VzQWN0aW9uLlRZUEU6XHJcbiAgICBjYXNlIEFkZEdyb3VwQ29udHJvbEFjdGlvbi5UWVBFOlxyXG4gICAgY2FzZSBSZW1vdmVHcm91cENvbnRyb2xBY3Rpb24uVFlQRTpcclxuICAgICAgcmV0dXJuIGNoaWxkUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuXHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBicmVhaztcclxuICB9XHJcblxyXG4gIHN0YXRlID0gc2V0VmFsdWVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gc2V0RXJyb3JzUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IHN0YXJ0QXN5bmNWYWxpZGF0aW9uUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IHNldEFzeW5jRXJyb3JSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gY2xlYXJBc3luY0Vycm9yUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IGVuYWJsZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBkaXNhYmxlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc0RpcnR5UmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc1ByaXN0aW5lUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc1RvdWNoZWRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gbWFya0FzVW50b3VjaGVkUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc1N1Ym1pdHRlZFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBtYXJrQXNVbnN1Ym1pdHRlZFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBzZXRVc2VyRGVmaW5lZFByb3BlcnR5UmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IHJlc2V0UmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IGFkZENvbnRyb2xSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gcmVtb3ZlQ29udHJvbFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBzd2FwQ29udHJvbFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBtb3ZlQ29udHJvbFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcblxyXG4gIHJldHVybiBzdGF0ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoaXMgcmVkdWNlciBmdW5jdGlvbiB1cGRhdGVzIGEgZm9ybSBhcnJheSBzdGF0ZSB3aXRoIGFjdGlvbnMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZm9ybUFycmF5UmVkdWNlcjxUVmFsdWU+KHN0YXRlOiBGb3JtQXJyYXlTdGF0ZTxUVmFsdWU+IHwgdW5kZWZpbmVkLCBhY3Rpb246IEFjdGlvbikge1xyXG4gIGlmICghc3RhdGUpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGFycmF5IHN0YXRlIG11c3QgYmUgZGVmaW5lZCEnKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBmb3JtQXJyYXlSZWR1Y2VySW50ZXJuYWwoc3RhdGUsIGFjdGlvbiBhcyBhbnkpO1xyXG59XHJcbiJdfQ==