UNPKG

ngrx-forms

Version:

Proper integration of forms in Angular 4 applications using ngrx

70 lines 11.6 kB
import { AddArrayControlAction, FocusAction, isNgrxFormsAction, MoveArrayControlAction, RemoveArrayControlAction, SwapArrayControlAction, UnfocusAction, } from '../actions'; import { isGroupState } 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 { 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 { childReducer } from './reducer/util'; export function formGroupReducerInternal(state, action) { if (!isGroupState(state)) { throw new Error('The state must be a group state'); } if (!isNgrxFormsAction(action)) { return state; } if (!action.controlId.startsWith(state.id)) { return state; } switch (action.type) { case FocusAction.TYPE: case UnfocusAction.TYPE: case AddArrayControlAction.TYPE: case RemoveArrayControlAction.TYPE: case MoveArrayControlAction.TYPE: case SwapArrayControlAction.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 = addControlReducer(state, action); state = removeControlReducer(state, action); state = setUserDefinedPropertyReducer(state, action); state = resetReducer(state, action); return state; } /** * This reducer function updates a form group state with actions. */ export function formGroupReducer(state, action) { if (!state) { throw new Error('The group state must be defined!'); } return formGroupReducerInternal(state, action); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ncm91cC9yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixhQUFhLEdBQ2QsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFrQixZQUFZLEVBQVksTUFBTSxVQUFVLENBQUM7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxNQUFNLFVBQVUsd0JBQXdCLENBQTBCLEtBQTZCLEVBQUUsTUFBdUI7SUFDdEgsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7S0FDcEQ7SUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDOUIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDMUMsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDdEIsS0FBSyxhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ3hCLEtBQUsscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBQ2hDLEtBQUssd0JBQXdCLENBQUMsSUFBSSxDQUFDO1FBQ25DLEtBQUssc0JBQXNCLENBQUMsSUFBSSxDQUFDO1FBQ2pDLEtBQUssc0JBQXNCLENBQUMsSUFBSTtZQUM5QixPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckM7WUFDRSxNQUFNO0tBQ1Q7SUFFRCxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2QyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLEtBQUssR0FBRywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxLQUFLLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLEtBQUssR0FBRyxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUMsS0FBSyxHQUFHLHFCQUFxQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxLQUFLLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUMsS0FBSyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxLQUFLLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsS0FBSyxHQUFHLG9CQUFvQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxLQUFLLEdBQUcsNkJBQTZCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXBDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUEwQixLQUF5QyxFQUFFLE1BQWM7SUFDakgsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztLQUNyRDtJQUVELE9BQU8sd0JBQXdCLENBQUMsS0FBSyxFQUFFLE1BQWEsQ0FBQyxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEFjdGlvbnMsXHJcbiAgQWRkQXJyYXlDb250cm9sQWN0aW9uLFxyXG4gIEZvY3VzQWN0aW9uLFxyXG4gIGlzTmdyeEZvcm1zQWN0aW9uLFxyXG4gIE1vdmVBcnJheUNvbnRyb2xBY3Rpb24sXHJcbiAgUmVtb3ZlQXJyYXlDb250cm9sQWN0aW9uLFxyXG4gIFN3YXBBcnJheUNvbnRyb2xBY3Rpb24sXHJcbiAgVW5mb2N1c0FjdGlvbixcclxufSBmcm9tICcuLi9hY3Rpb25zJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwU3RhdGUsIGlzR3JvdXBTdGF0ZSwgS2V5VmFsdWUgfSBmcm9tICcuLi9zdGF0ZSc7XHJcbmltcG9ydCB7IGFkZENvbnRyb2xSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL2FkZC1jb250cm9sJztcclxuaW1wb3J0IHsgY2xlYXJBc3luY0Vycm9yUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9jbGVhci1hc3luYy1lcnJvcic7XHJcbmltcG9ydCB7IGRpc2FibGVSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL2Rpc2FibGUnO1xyXG5pbXBvcnQgeyBlbmFibGVSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL2VuYWJsZSc7XHJcbmltcG9ydCB7IG1hcmtBc0RpcnR5UmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9tYXJrLWFzLWRpcnR5JztcclxuaW1wb3J0IHsgbWFya0FzUHJpc3RpbmVSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL21hcmstYXMtcHJpc3RpbmUnO1xyXG5pbXBvcnQgeyBtYXJrQXNTdWJtaXR0ZWRSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL21hcmstYXMtc3VibWl0dGVkJztcclxuaW1wb3J0IHsgbWFya0FzVG91Y2hlZFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvbWFyay1hcy10b3VjaGVkJztcclxuaW1wb3J0IHsgbWFya0FzVW5zdWJtaXR0ZWRSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL21hcmstYXMtdW5zdWJtaXR0ZWQnO1xyXG5pbXBvcnQgeyBtYXJrQXNVbnRvdWNoZWRSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL21hcmstYXMtdW50b3VjaGVkJztcclxuaW1wb3J0IHsgcmVtb3ZlQ29udHJvbFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvcmVtb3ZlLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyByZXNldFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXIvcmVzZXQnO1xyXG5pbXBvcnQgeyBzZXRBc3luY0Vycm9yUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9zZXQtYXN5bmMtZXJyb3InO1xyXG5pbXBvcnQgeyBzZXRFcnJvcnNSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3NldC1lcnJvcnMnO1xyXG5pbXBvcnQgeyBzZXRVc2VyRGVmaW5lZFByb3BlcnR5UmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9zZXQtdXNlci1kZWZpbmVkLXByb3BlcnR5JztcclxuaW1wb3J0IHsgc2V0VmFsdWVSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3NldC12YWx1ZSc7XHJcbmltcG9ydCB7IHN0YXJ0QXN5bmNWYWxpZGF0aW9uUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlci9zdGFydC1hc3luYy12YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgY2hpbGRSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2VyL3V0aWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1Hcm91cFJlZHVjZXJJbnRlcm5hbDxUVmFsdWUgZXh0ZW5kcyBLZXlWYWx1ZT4oc3RhdGU6IEZvcm1Hcm91cFN0YXRlPFRWYWx1ZT4sIGFjdGlvbjogQWN0aW9uczxUVmFsdWU+KSB7XHJcbiAgaWYgKCFpc0dyb3VwU3RhdGUoc3RhdGUpKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBzdGF0ZSBtdXN0IGJlIGEgZ3JvdXAgc3RhdGUnKTtcclxuICB9XHJcblxyXG4gIGlmICghaXNOZ3J4Rm9ybXNBY3Rpb24oYWN0aW9uKSkge1xyXG4gICAgcmV0dXJuIHN0YXRlO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFhY3Rpb24uY29udHJvbElkLnN0YXJ0c1dpdGgoc3RhdGUuaWQpKSB7XHJcbiAgICByZXR1cm4gc3RhdGU7XHJcbiAgfVxyXG5cclxuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XHJcbiAgICBjYXNlIEZvY3VzQWN0aW9uLlRZUEU6XHJcbiAgICBjYXNlIFVuZm9jdXNBY3Rpb24uVFlQRTpcclxuICAgIGNhc2UgQWRkQXJyYXlDb250cm9sQWN0aW9uLlRZUEU6XHJcbiAgICBjYXNlIFJlbW92ZUFycmF5Q29udHJvbEFjdGlvbi5UWVBFOlxyXG4gICAgY2FzZSBNb3ZlQXJyYXlDb250cm9sQWN0aW9uLlRZUEU6XHJcbiAgICBjYXNlIFN3YXBBcnJheUNvbnRyb2xBY3Rpb24uVFlQRTpcclxuICAgICAgcmV0dXJuIGNoaWxkUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuXHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBicmVhaztcclxuICB9XHJcblxyXG4gIHN0YXRlID0gc2V0VmFsdWVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gc2V0RXJyb3JzUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IHN0YXJ0QXN5bmNWYWxpZGF0aW9uUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IHNldEFzeW5jRXJyb3JSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gY2xlYXJBc3luY0Vycm9yUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IGVuYWJsZVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBkaXNhYmxlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc0RpcnR5UmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc1ByaXN0aW5lUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc1RvdWNoZWRSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gbWFya0FzVW50b3VjaGVkUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IG1hcmtBc1N1Ym1pdHRlZFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBtYXJrQXNVbnN1Ym1pdHRlZFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSBhZGRDb250cm9sUmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcclxuICBzdGF0ZSA9IHJlbW92ZUNvbnRyb2xSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xyXG4gIHN0YXRlID0gc2V0VXNlckRlZmluZWRQcm9wZXJ0eVJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcbiAgc3RhdGUgPSByZXNldFJlZHVjZXIoc3RhdGUsIGFjdGlvbik7XHJcblxyXG4gIHJldHVybiBzdGF0ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoaXMgcmVkdWNlciBmdW5jdGlvbiB1cGRhdGVzIGEgZm9ybSBncm91cCBzdGF0ZSB3aXRoIGFjdGlvbnMuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZm9ybUdyb3VwUmVkdWNlcjxUVmFsdWUgZXh0ZW5kcyBLZXlWYWx1ZT4oc3RhdGU6IEZvcm1Hcm91cFN0YXRlPFRWYWx1ZT4gfCB1bmRlZmluZWQsIGFjdGlvbjogQWN0aW9uKSB7XHJcbiAgaWYgKCFzdGF0ZSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZ3JvdXAgc3RhdGUgbXVzdCBiZSBkZWZpbmVkIScpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGZvcm1Hcm91cFJlZHVjZXJJbnRlcm5hbChzdGF0ZSwgYWN0aW9uIGFzIGFueSk7XHJcbn1cclxuIl19