UNPKG

@ng-dynamic-forms/core

Version:

A rapid form development library for Angular

62 lines 9.07 kB
import { InjectionToken } from "@angular/core"; import { DynamicFormValidationService } from "./dynamic-form-validation.service"; import { isObject } from "../utils/core.utils"; import { DynamicFormService } from "./dynamic-form.service"; export const MATCH_DISABLED = "DISABLED"; export const MATCH_ENABLED = "ENABLED"; export const MATCH_HIDDEN = "HIDDEN"; export const MATCH_OPTIONAL = "OPTIONAL"; export const MATCH_REQUIRED = "REQUIRED"; export const MATCH_VISIBLE = "VISIBLE"; export const AND_OPERATOR = "AND"; export const OR_OPERATOR = "OR"; export const DYNAMIC_MATCHERS = new InjectionToken("DYNAMIC_MATCHERS"); export const DISABLED_MATCHER = { match: MATCH_DISABLED, opposingMatch: MATCH_ENABLED, onChange(hasMatch, model) { model.disabled = hasMatch; } }; export const HIDDEN_MATCHER = { match: MATCH_HIDDEN, opposingMatch: MATCH_VISIBLE, onChange(hasMatch, model) { model.hidden = hasMatch; } }; export const REQUIRED_MATCHER = { match: MATCH_REQUIRED, opposingMatch: MATCH_OPTIONAL, onChange(hasMatch, model, control, injector) { let validatorsConfig = null; if (hasMatch) { validatorsConfig = isObject(model.validators) ? { ...model.validators, required: null } : { required: null }; } else { if (isObject(model.validators)) { delete model.validators.required; validatorsConfig = { ...model.validators }; } } injector.get(DynamicFormValidationService).updateValidators(validatorsConfig, control, model); injector.get(DynamicFormService).detectChanges(); } }; export const DISABLED_MATCHER_PROVIDER = { provide: DYNAMIC_MATCHERS, useValue: DISABLED_MATCHER, multi: true }; export const HIDDEN_MATCHER_PROVIDER = { provide: DYNAMIC_MATCHERS, useValue: HIDDEN_MATCHER, multi: true }; export const REQUIRED_MATCHER_PROVIDER = { provide: DYNAMIC_MATCHERS, useValue: REQUIRED_MATCHER, multi: true }; export const DYNAMIC_MATCHER_PROVIDERS = [DISABLED_MATCHER_PROVIDER, HIDDEN_MATCHER_PROVIDER, REQUIRED_MATCHER_PROVIDER]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXJlbGF0aW9uLW1hdGNoZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZHluYW1pYy1mb3Jtcy9jb3JlL3NyYy9saWIvc2VydmljZS9keW5hbWljLWZvcm0tcmVsYXRpb24tbWF0Y2hlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFHeEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBRXZDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDbEMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQztBQVNoQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBNEIsa0JBQWtCLENBQUMsQ0FBQztBQUVsRyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBOEI7SUFDdkQsS0FBSyxFQUFFLGNBQWM7SUFDckIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLO1FBQ3BCLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUE4QjtJQUNyRCxLQUFLLEVBQUUsWUFBWTtJQUNuQixhQUFhLEVBQUUsYUFBYTtJQUM1QixRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUs7UUFDcEIsS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztDQUNKLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBOEI7SUFDdkQsS0FBSyxFQUFFLGNBQWM7SUFDckIsYUFBYSxFQUFFLGNBQWM7SUFDN0IsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVE7UUFDdkMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFNUIsSUFBSSxRQUFRLEVBQUU7WUFDVixnQkFBZ0IsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDO1NBRTVHO2FBQU07WUFDSCxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzVCLE9BQVEsS0FBSyxDQUFDLFVBQXdELENBQUMsUUFBUSxDQUFDO2dCQUNoRixnQkFBZ0IsR0FBRyxFQUFDLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBQyxDQUFDO2FBQzVDO1NBQ0o7UUFFRCxRQUFRLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlGLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0NBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFrQjtJQUNwRCxPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7SUFDMUIsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQWtCO0lBQ2xELE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQWtCO0lBQ3BELE9BQU8sRUFBRSxnQkFBZ0I7SUFDekIsUUFBUSxFQUFFLGdCQUFnQjtJQUMxQixLQUFLLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLHlCQUF5QixFQUFFLHVCQUF1QixFQUFFLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFZhbHVlUHJvdmlkZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCB9IGZyb20gXCIuLi9tb2RlbC9keW5hbWljLWZvcm0tY29udHJvbC5tb2RlbFwiO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSB9IGZyb20gXCIuL2R5bmFtaWMtZm9ybS12YWxpZGF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IGlzT2JqZWN0IH0gZnJvbSBcIi4uL3V0aWxzL2NvcmUudXRpbHNcIjtcbmltcG9ydCB7IER5bmFtaWNWYWxpZGF0b3JzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVsL21pc2MvZHluYW1pYy1mb3JtLWNvbnRyb2wtdmFsaWRhdGlvbi5tb2RlbFwiO1xuaW1wb3J0IHsgRHluYW1pY0Zvcm1TZXJ2aWNlIH0gZnJvbSBcIi4vZHluYW1pYy1mb3JtLnNlcnZpY2VcIjtcblxuZXhwb3J0IGNvbnN0IE1BVENIX0RJU0FCTEVEID0gXCJESVNBQkxFRFwiO1xuZXhwb3J0IGNvbnN0IE1BVENIX0VOQUJMRUQgPSBcIkVOQUJMRURcIjtcbmV4cG9ydCBjb25zdCBNQVRDSF9ISURERU4gPSBcIkhJRERFTlwiO1xuZXhwb3J0IGNvbnN0IE1BVENIX09QVElPTkFMID0gXCJPUFRJT05BTFwiO1xuZXhwb3J0IGNvbnN0IE1BVENIX1JFUVVJUkVEID0gXCJSRVFVSVJFRFwiO1xuZXhwb3J0IGNvbnN0IE1BVENIX1ZJU0lCTEUgPSBcIlZJU0lCTEVcIjtcblxuZXhwb3J0IGNvbnN0IEFORF9PUEVSQVRPUiA9IFwiQU5EXCI7XG5leHBvcnQgY29uc3QgT1JfT1BFUkFUT1IgPSBcIk9SXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHluYW1pY0Zvcm1Db250cm9sTWF0Y2hlciB7XG4gICAgbWF0Y2g6IHN0cmluZztcbiAgICBvcHBvc2luZ01hdGNoOiBzdHJpbmcgfCBudWxsO1xuXG4gICAgb25DaGFuZ2UoaGFzTWF0Y2g6IGJvb2xlYW4sIG1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCwgY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCBpbmplY3RvcjogSW5qZWN0b3IpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19NQVRDSEVSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEeW5hbWljRm9ybUNvbnRyb2xNYXRjaGVyPihcIkRZTkFNSUNfTUFUQ0hFUlNcIik7XG5cbmV4cG9ydCBjb25zdCBESVNBQkxFRF9NQVRDSEVSOiBEeW5hbWljRm9ybUNvbnRyb2xNYXRjaGVyID0ge1xuICAgIG1hdGNoOiBNQVRDSF9ESVNBQkxFRCxcbiAgICBvcHBvc2luZ01hdGNoOiBNQVRDSF9FTkFCTEVELFxuICAgIG9uQ2hhbmdlKGhhc01hdGNoLCBtb2RlbCkge1xuICAgICAgICBtb2RlbC5kaXNhYmxlZCA9IGhhc01hdGNoO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBISURERU5fTUFUQ0hFUjogRHluYW1pY0Zvcm1Db250cm9sTWF0Y2hlciA9IHtcbiAgICBtYXRjaDogTUFUQ0hfSElEREVOLFxuICAgIG9wcG9zaW5nTWF0Y2g6IE1BVENIX1ZJU0lCTEUsXG4gICAgb25DaGFuZ2UoaGFzTWF0Y2gsIG1vZGVsKSB7XG4gICAgICAgIG1vZGVsLmhpZGRlbiA9IGhhc01hdGNoO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBSRVFVSVJFRF9NQVRDSEVSOiBEeW5hbWljRm9ybUNvbnRyb2xNYXRjaGVyID0ge1xuICAgIG1hdGNoOiBNQVRDSF9SRVFVSVJFRCxcbiAgICBvcHBvc2luZ01hdGNoOiBNQVRDSF9PUFRJT05BTCxcbiAgICBvbkNoYW5nZShoYXNNYXRjaCwgbW9kZWwsIGNvbnRyb2wsIGluamVjdG9yKSB7XG4gICAgICAgIGxldCB2YWxpZGF0b3JzQ29uZmlnID0gbnVsbDtcblxuICAgICAgICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnNDb25maWcgPSBpc09iamVjdChtb2RlbC52YWxpZGF0b3JzKSA/IHsuLi5tb2RlbC52YWxpZGF0b3JzLCByZXF1aXJlZDogbnVsbH0gOiB7cmVxdWlyZWQ6IG51bGx9O1xuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QobW9kZWwudmFsaWRhdG9ycykpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgKG1vZGVsLnZhbGlkYXRvcnMgYXMgUGljazxEeW5hbWljVmFsaWRhdG9yc0NvbmZpZywgXCJyZXF1aXJlZFwiPikucmVxdWlyZWQ7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yc0NvbmZpZyA9IHsuLi5tb2RlbC52YWxpZGF0b3JzfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGluamVjdG9yLmdldChEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlKS51cGRhdGVWYWxpZGF0b3JzKHZhbGlkYXRvcnNDb25maWcsIGNvbnRyb2wsIG1vZGVsKTtcbiAgICAgICAgaW5qZWN0b3IuZ2V0KER5bmFtaWNGb3JtU2VydmljZSkuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBESVNBQkxFRF9NQVRDSEVSX1BST1ZJREVSOiBWYWx1ZVByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IERZTkFNSUNfTUFUQ0hFUlMsXG4gICAgdXNlVmFsdWU6IERJU0FCTEVEX01BVENIRVIsXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbmV4cG9ydCBjb25zdCBISURERU5fTUFUQ0hFUl9QUk9WSURFUjogVmFsdWVQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBEWU5BTUlDX01BVENIRVJTLFxuICAgIHVzZVZhbHVlOiBISURERU5fTUFUQ0hFUixcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IFJFUVVJUkVEX01BVENIRVJfUFJPVklERVI6IFZhbHVlUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogRFlOQU1JQ19NQVRDSEVSUyxcbiAgICB1c2VWYWx1ZTogUkVRVUlSRURfTUFUQ0hFUixcbiAgICBtdWx0aTogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IERZTkFNSUNfTUFUQ0hFUl9QUk9WSURFUlMgPSBbRElTQUJMRURfTUFUQ0hFUl9QUk9WSURFUiwgSElEREVOX01BVENIRVJfUFJPVklERVIsIFJFUVVJUkVEX01BVENIRVJfUFJPVklERVJdO1xuIl19