@ngx-formly/core 5.10.26 → 5.10.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +10 -8
  2. package/bundles/ngx-formly-core-json-schema.umd.js +6 -2
  3. package/bundles/ngx-formly-core-json-schema.umd.js.map +1 -1
  4. package/bundles/ngx-formly-core-json-schema.umd.min.js +1 -1
  5. package/bundles/ngx-formly-core-json-schema.umd.min.js.map +1 -1
  6. package/bundles/ngx-formly-core.umd.js +67 -139
  7. package/bundles/ngx-formly-core.umd.js.map +1 -1
  8. package/bundles/ngx-formly-core.umd.min.js +1 -1
  9. package/bundles/ngx-formly-core.umd.min.js.map +1 -1
  10. package/esm2015/json-schema/formly-json-schema.service.js +8 -4
  11. package/esm2015/lib/core.js +2 -2
  12. package/esm2015/lib/extensions/core/core.js +2 -1
  13. package/esm2015/lib/extensions/field-expression/field-expression.js +16 -19
  14. package/esm2015/lib/extensions/field-form/field-form.js +16 -51
  15. package/esm2015/lib/extensions/field-form/utils.js +19 -6
  16. package/esm2015/lib/services/formly.form.builder.js +3 -6
  17. package/esm2015/lib/templates/formly.validation-message.js +14 -3
  18. package/esm2015/lib/utils.js +1 -41
  19. package/esm2015/ngx-formly-core.js +2 -2
  20. package/esm2015/public_api.js +2 -2
  21. package/esm5/json-schema/formly-json-schema.service.js +8 -4
  22. package/esm5/lib/core.js +2 -2
  23. package/esm5/lib/extensions/core/core.js +2 -1
  24. package/esm5/lib/extensions/field-expression/field-expression.js +16 -19
  25. package/esm5/lib/extensions/field-form/field-form.js +16 -51
  26. package/esm5/lib/extensions/field-form/utils.js +20 -6
  27. package/esm5/lib/services/formly.form.builder.js +3 -7
  28. package/esm5/lib/templates/formly.validation-message.js +15 -3
  29. package/esm5/lib/utils.js +4 -58
  30. package/esm5/ngx-formly-core.js +2 -2
  31. package/esm5/public_api.js +2 -2
  32. package/fesm2015/ngx-formly-core-json-schema.js +7 -3
  33. package/fesm2015/ngx-formly-core-json-schema.js.map +1 -1
  34. package/fesm2015/ngx-formly-core.js +62 -119
  35. package/fesm2015/ngx-formly-core.js.map +1 -1
  36. package/fesm5/ngx-formly-core-json-schema.js +7 -3
  37. package/fesm5/ngx-formly-core-json-schema.js.map +1 -1
  38. package/fesm5/ngx-formly-core.js +69 -139
  39. package/fesm5/ngx-formly-core.js.map +1 -1
  40. package/json-schema/ngx-formly-core-json-schema.metadata.json +1 -1
  41. package/lib/core.d.ts +1 -1
  42. package/lib/extensions/field-form/utils.d.ts +1 -1
  43. package/lib/utils.d.ts +0 -2
  44. package/ngx-formly-core.metadata.json +1 -1
  45. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { __assign, __rest, __read, __spread } from 'tslib';
2
2
  import { Injectable, defineInjectable } from '@angular/core';
3
3
  import { FormGroup } from '@angular/forms';
4
- import { ɵreverseDeepMerge, ɵgetFieldInitialValue, ɵclone } from '@ngx-formly/core';
4
+ import { ɵreverseDeepMerge, ɵgetFieldValue, ɵclone } from '@ngx-formly/core';
5
5
  import { tap } from 'rxjs/operators';
6
6
 
7
7
  /**
@@ -54,14 +54,18 @@ function isConst(schema) {
54
54
  */
55
55
  function totalMatchedFields(field) {
56
56
  if (!field.fieldGroup) {
57
- return field.key && ɵgetFieldInitialValue(field) !== undefined ? 1 : 0;
57
+ return field.key && ɵgetFieldValue(field) !== undefined ? 1 : 0;
58
58
  }
59
- return field.fieldGroup.reduce((/**
59
+ /** @type {?} */
60
+ var total = field.fieldGroup.reduce((/**
60
61
  * @param {?} s
61
62
  * @param {?} f
62
63
  * @return {?}
63
64
  */
64
65
  function (s, f) { return totalMatchedFields(f) + s; }), 0);
66
+ return total === 0
67
+ ? field.key && ɵgetFieldValue(field) !== undefined ? 1 : 0
68
+ : total;
65
69
  }
66
70
  var FormlyJsonschema = /** @class */ (function () {
67
71
  function FormlyJsonschema() {
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-formly-core-json-schema.js.map","sources":["ng://@ngx-formly/core/json-schema/formly-json-schema.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { JSONSchema7, JSONSchema7TypeName } from 'json-schema';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport {\n ɵreverseDeepMerge as reverseDeepMerge,\n ɵgetFieldInitialValue as getFieldInitialValue,\n ɵclone as clone,\n} from '@ngx-formly/core';\nimport { tap } from 'rxjs/operators';\n\nexport interface FormlyJsonschemaOptions {\n /**\n * allows to intercept the mapping, taking the already mapped\n * formly field and the original JSONSchema source from which it\n * was mapped.\n */\n map?: (mappedField: FormlyFieldConfig, mapSource: JSONSchema7) => FormlyFieldConfig;\n}\n\n// https://stackoverflow.com/a/27865285\nfunction decimalPlaces(a: number) {\n if (!isFinite(a)) {\n return 0;\n }\n\n let e = 1, p = 0;\n while (Math.round(a * e) / e !== a) { e *= 10; p++; }\n\n return p;\n}\n\nfunction isEmpty(v: any) {\n return v === '' || v === undefined || v === null;\n}\n\nfunction isObject(v: any) {\n return v != null && typeof v === 'object' && !Array.isArray(v);\n}\n\nfunction isConst(schema: JSONSchema7) {\n return schema.hasOwnProperty('const') || (schema.enum && schema.enum.length === 1);\n}\n\nfunction totalMatchedFields(field: FormlyFieldConfig): number {\n if (!field.fieldGroup) {\n return field.key && getFieldInitialValue(field) !== undefined ? 1 : 0;\n }\n\n return field.fieldGroup.reduce((s, f) => totalMatchedFields(f) + s, 0);\n}\n\ninterface IOptions extends FormlyJsonschemaOptions {\n schema: JSONSchema7;\n resetOnHide?: boolean;\n shareFormControl?: boolean;\n ignoreDefault?: boolean;\n readOnly?: boolean;\n key?: FormlyFieldConfig['key'];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyJsonschema {\n toFieldConfig(schema: JSONSchema7, options?: FormlyJsonschemaOptions): FormlyFieldConfig {\n return this._toFieldConfig(schema, { schema, ...(options || {}) });\n }\n\n private _toFieldConfig(schema: JSONSchema7, { key, ...options }: IOptions): FormlyFieldConfig {\n schema = this.resolveSchema(schema, options);\n\n let field: FormlyFieldConfig = {\n type: this.guessType(schema),\n defaultValue: schema.default,\n templateOptions: {\n label: schema.title,\n readonly: schema.readOnly,\n description: schema.description,\n },\n };\n\n if (key != null) {\n field.key = key;\n }\n\n if (!options.ignoreDefault && (schema.readOnly || options.readOnly)) {\n field.templateOptions.disabled = true;\n options = { ...options, readOnly: true };\n }\n\n if (options.resetOnHide) {\n field['resetOnHide'] = true;\n }\n\n if (options.shareFormControl === false) {\n field['shareFormControl'] = false;\n }\n\n if (options.ignoreDefault) {\n delete field.defaultValue;\n }\n\n switch (field.type) {\n case 'null': {\n this.addValidator(field, 'null', ({ value }) => value === null);\n break;\n }\n case 'number':\n case 'integer': {\n field.parsers = [v => isEmpty(v) ? (v === '' ? null : v) : Number(v)];\n if (schema.hasOwnProperty('minimum')) {\n field.templateOptions.min = schema.minimum;\n }\n\n if (schema.hasOwnProperty('maximum')) {\n field.templateOptions.max = schema.maximum;\n }\n\n if (schema.hasOwnProperty('exclusiveMinimum')) {\n field.templateOptions.exclusiveMinimum = schema.exclusiveMinimum;\n this.addValidator(field, 'exclusiveMinimum', ({ value }) => isEmpty(value) || (value > schema.exclusiveMinimum));\n }\n\n if (schema.hasOwnProperty('exclusiveMaximum')) {\n field.templateOptions.exclusiveMaximum = schema.exclusiveMaximum;\n this.addValidator(field, 'exclusiveMaximum', ({ value }) => isEmpty(value) || (value < schema.exclusiveMaximum));\n }\n\n if (schema.hasOwnProperty('multipleOf')) {\n field.templateOptions.step = schema.multipleOf;\n this.addValidator(field, 'multipleOf', ({ value }) => {\n if (isEmpty(value) || typeof value !== 'number' || value === 0 || schema.multipleOf <= 0) {\n return true;\n }\n\n // https://github.com/ajv-validator/ajv/issues/652#issue-283610859\n const multiplier = Math.pow(10, decimalPlaces(schema.multipleOf));\n return Math.round(value * multiplier) % Math.round(schema.multipleOf * multiplier) === 0;\n });\n }\n break;\n }\n case 'string': {\n const schemaType = schema.type as JSONSchema7TypeName;\n if (Array.isArray(schemaType) && (schemaType.indexOf('null') !== -1)) {\n field.parsers = [v => isEmpty(v) ? null : v];\n }\n\n ['minLength', 'maxLength', 'pattern'].forEach(prop => {\n if (schema.hasOwnProperty(prop)) {\n field.templateOptions[prop] = schema[prop];\n }\n });\n break;\n }\n case 'object': {\n field.fieldGroup = [];\n\n const [propDeps, schemaDeps] = this.resolveDependencies(schema);\n Object.keys(schema.properties || {}).forEach(property => {\n const f = this._toFieldConfig(<JSONSchema7> schema.properties[property], { ...options, key: property });\n field.fieldGroup.push(f);\n if (\n (Array.isArray(schema.required) && schema.required.indexOf(property) !== -1)\n || propDeps[property]\n ) {\n f.expressionProperties = {\n ...(f.expressionProperties || {}),\n 'templateOptions.required': (m, s, f) => {\n let parent = f.parent;\n const model = f.fieldGroup && f.key != null ? parent.model : f.model;\n while (parent.key == null && parent.parent) {\n parent = parent.parent;\n }\n\n const required = parent && parent.templateOptions ? parent.templateOptions.required : false;\n if (!model && !required) {\n return false;\n }\n\n if (Array.isArray(schema.required) && schema.required.indexOf(property) !== -1) {\n return true;\n }\n\n return propDeps[property] && (m && propDeps[property].some(k => !isEmpty(m[k])));\n },\n };\n }\n\n if (schemaDeps[property]) {\n const getConstValue = (s: JSONSchema7) => {\n return s.hasOwnProperty('const') ? s.const : s.enum[0];\n };\n\n const oneOfSchema = schemaDeps[property].oneOf;\n if (\n oneOfSchema\n && oneOfSchema.every(o => o.properties && o.properties[property] && isConst(o.properties[property]))\n ) {\n oneOfSchema.forEach(oneOfSchemaItem => {\n const { [property]: constSchema, ...properties } = oneOfSchemaItem.properties;\n field.fieldGroup.push({\n ...this._toFieldConfig({ ...oneOfSchemaItem, properties }, { ...options, resetOnHide: true }),\n hideExpression: m => !m || getConstValue(constSchema) !== m[property],\n });\n });\n } else {\n field.fieldGroup.push({\n ...this._toFieldConfig(schemaDeps[property], options),\n hideExpression: m => !m || isEmpty(m[property]),\n });\n }\n\n }\n });\n\n if (schema.oneOf) {\n field.fieldGroup.push(this.resolveMultiSchema(\n 'oneOf',\n <JSONSchema7[]> schema.oneOf,\n { ...options, shareFormControl: false },\n ));\n }\n\n if (schema.anyOf) {\n field.fieldGroup.push(this.resolveMultiSchema(\n 'anyOf',\n <JSONSchema7[]> schema.anyOf,\n options,\n ));\n }\n break;\n }\n case 'array': {\n if (schema.hasOwnProperty('minItems')) {\n field.templateOptions.minItems = schema.minItems;\n this.addValidator(field, 'minItems', ({ value }) => isEmpty(value) || (value.length >= schema.minItems));\n }\n if (schema.hasOwnProperty('maxItems')) {\n field.templateOptions.maxItems = schema.maxItems;\n this.addValidator(field, 'maxItems', ({ value }) => isEmpty(value) || (value.length <= schema.maxItems));\n }\n if (schema.hasOwnProperty('uniqueItems')) {\n field.templateOptions.uniqueItems = schema.uniqueItems;\n this.addValidator(field, 'uniqueItems', ({ value }) => {\n if (isEmpty(value) || !schema.uniqueItems) {\n return true;\n }\n\n const uniqueItems = Array.from(\n new Set(value.map((v: any) => JSON.stringify(v))),\n );\n\n return uniqueItems.length === value.length;\n });\n }\n\n // resolve items schema needed for isEnum check\n if (schema.items && !Array.isArray(schema.items)) {\n schema.items = this.resolveSchema(<JSONSchema7> schema.items, options);\n }\n\n // TODO: remove isEnum check once adding an option to skip extension\n if (!this.isEnum(schema)) {\n const _this = this;\n Object.defineProperty(field, 'fieldArray', {\n get: function () {\n if (schema.items && !Array.isArray(schema.items)) {\n // When items is a single schema, the additionalItems keyword is meaningless, and it should not be used.\n return _this._toFieldConfig(<JSONSchema7> schema.items, options);\n }\n\n const length = this.fieldGroup ? this.fieldGroup.length : 0;\n if (schema.items && schema.items[length]) {\n const f = _this._toFieldConfig(<JSONSchema7> schema.items[length], { ...options});\n f.templateOptions.removable = false;\n\n return f;\n }\n\n return schema.additionalItems\n ? _this._toFieldConfig(<JSONSchema7> schema.additionalItems, options)\n : {};\n },\n enumerable: true,\n configurable: true,\n });\n }\n\n break;\n }\n }\n\n if (schema.hasOwnProperty('const')) {\n field.templateOptions.const = schema.const;\n this.addValidator(field, 'const', ({ value }) => value === schema.const);\n if (!field.type) {\n field.defaultValue = schema.const;\n }\n }\n\n if (this.isEnum(schema)) {\n field.templateOptions.multiple = field.type === 'array';\n field.type = 'enum';\n field.templateOptions.options = this.toEnumOptions(schema);\n }\n\n // map in possible formlyConfig options from the widget property\n if (schema['widget'] && schema['widget'].formlyConfig) {\n field = this.mergeFields(field, schema['widget'].formlyConfig);\n }\n\n // if there is a map function passed in, use it to allow the user to\n // further customize how fields are being mapped\n return options.map ? options.map(field, schema) : field;\n }\n\n private resolveSchema(schema: JSONSchema7, options: IOptions) {\n if (schema && schema.$ref) {\n schema = this.resolveDefinition(schema, options);\n }\n\n if (schema && schema.allOf) {\n schema = this.resolveAllOf(schema, options);\n }\n\n return schema;\n }\n\n private resolveAllOf({ allOf, ...baseSchema }: JSONSchema7, options: IOptions) {\n if (!allOf.length) {\n throw Error(`allOf array can not be empty ${allOf}.`);\n }\n\n return allOf.reduce((base: JSONSchema7, schema: JSONSchema7) => {\n schema = this.resolveSchema(schema, options);\n if (base.required && schema.required) {\n base.required = [...base.required, ...schema.required];\n }\n\n if (schema.uniqueItems) {\n base.uniqueItems = schema.uniqueItems;\n }\n\n // resolve to min value\n ['maxLength', 'maximum', 'exclusiveMaximum', 'maxItems', 'maxProperties']\n .forEach(prop => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n base[prop] = base[prop] < schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n // resolve to max value\n ['minLength', 'minimum', 'exclusiveMinimum', 'minItems', 'minProperties']\n .forEach(prop => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n base[prop] = base[prop] > schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n return reverseDeepMerge(base, schema);\n }, baseSchema);\n }\n\n private resolveMultiSchema(\n mode: 'oneOf' | 'anyOf',\n schemas: JSONSchema7[],\n options: IOptions,\n ): FormlyFieldConfig {\n return {\n type: 'multischema',\n fieldGroup: [\n {\n type: 'enum',\n defaultValue: -1,\n templateOptions: {\n multiple: mode === 'anyOf',\n options: schemas\n .map((s, i) => ({ label: s.title, value: i, disabled: s.readOnly })),\n },\n hooks: {\n onInit: f => f.formControl.valueChanges.pipe(\n tap(() => (f.options as any)._checkField(f.parent)),\n ),\n },\n },\n {\n fieldGroup: schemas.map((s, i) => ({\n ...this._toFieldConfig(s, { ...options, resetOnHide: true }),\n hideExpression: (m, fs, f, forceUpdate?: boolean) => {\n const control = f.parent.parent.fieldGroup[0].formControl;\n if ((control.value === -1) || forceUpdate) {\n let value = f.parent.fieldGroup\n .map((f, i) => [f, i] as [FormlyFieldConfig, number])\n .filter(([f, i]) => {\n return this.isFieldValid(f, schemas[i], options);\n })\n .sort(([f1], [f2]) => {\n const matchedFields1 = totalMatchedFields(f1);\n const matchedFields2 = totalMatchedFields(f2);\n if (matchedFields1 === matchedFields2) {\n if (f1.templateOptions.disabled === f2.templateOptions.disabled) {\n return 0;\n }\n\n return f1.templateOptions.disabled ? 1 : -1;\n }\n\n return matchedFields2 > matchedFields1 ? 1 : -1;\n })\n .map(([, i]) => i)\n ;\n\n if (mode === 'anyOf') {\n const definedValue = value.filter(i => totalMatchedFields(f.parent.fieldGroup[i]));\n value = definedValue.length > 0 ? definedValue : [value[0] || 0];\n }\n\n value = value.length > 0 ? value : [0];\n control.setValue(mode === 'anyOf' ? value : value[0]);\n }\n\n return Array.isArray(control.value)\n ? control.value.indexOf(i) === -1\n : control.value !== i;\n },\n })),\n },\n ],\n };\n }\n\n private resolveDefinition(schema: JSONSchema7, options: IOptions): JSONSchema7 {\n const [uri, pointer] = schema.$ref.split('#/');\n if (uri) {\n throw Error(`Remote schemas for ${schema.$ref} not supported yet.`);\n }\n\n const definition = !pointer ? null : pointer.split('/').reduce(\n (def, path) => def && def.hasOwnProperty(path) ? def[path] : null,\n options.schema,\n );\n\n if (!definition) {\n throw Error(`Cannot find a definition for ${schema.$ref}.`);\n }\n\n if (definition.$ref) {\n return this.resolveDefinition(definition, options);\n }\n\n return {\n ...definition,\n ...['title', 'description', 'default', 'widget'].reduce((annotation, p) => {\n if (schema.hasOwnProperty(p)) {\n annotation[p] = schema[p];\n }\n\n return annotation;\n }, {}),\n };\n }\n\n private resolveDependencies(schema: JSONSchema7) {\n const deps = {};\n const schemaDeps = {};\n\n Object.keys(schema.dependencies || {}).forEach(prop => {\n const dependency = schema.dependencies[prop] as JSONSchema7;\n if (Array.isArray(dependency)) {\n // Property dependencies\n dependency.forEach(dep => {\n if (!deps[dep]) {\n deps[dep] = [prop];\n } else {\n deps[dep].push(prop);\n }\n });\n } else {\n // schema dependencies\n schemaDeps[prop] = dependency;\n }\n });\n\n return [deps, schemaDeps];\n }\n\n private guessType(schema: JSONSchema7) {\n const type = schema ? schema.type as JSONSchema7TypeName : null;\n if (!type && schema && schema.properties) {\n return 'object';\n }\n\n if (Array.isArray(type)) {\n if (type.length === 1) {\n return type[0];\n }\n\n if (type.length === 2 && type.indexOf('null') !== -1) {\n return type[type[0] === 'null' ? 1 : 0];\n }\n }\n\n return type;\n }\n\n private addValidator(field: FormlyFieldConfig, name: string, validator: (control: AbstractControl) => boolean) {\n field.validators = field.validators || {};\n field.validators[name] = validator;\n }\n\n private isEnum(schema: JSONSchema7) {\n return schema.enum\n || (schema.anyOf && schema.anyOf.every(isConst))\n || (schema.oneOf && schema.oneOf.every(isConst))\n || schema.uniqueItems && schema.items && !Array.isArray(schema.items) && this.isEnum(<JSONSchema7> schema.items);\n }\n\n private toEnumOptions(schema: JSONSchema7) {\n if (schema.enum) {\n return schema.enum.map(value => ({ value, label: value }));\n }\n\n const toEnum = (s: JSONSchema7) => {\n const value = s.hasOwnProperty('const') ? s.const : s.enum[0];\n const option: any = { value: value, label: s.title || value };\n if (s.readOnly) {\n option.disabled = true;\n }\n\n return option;\n };\n\n if (schema.anyOf) {\n return schema.anyOf.map(toEnum);\n }\n\n if (schema.oneOf) {\n return schema.oneOf.map(toEnum);\n }\n\n return this.toEnumOptions(<JSONSchema7> schema.items);\n }\n\n private isFieldValid(field: FormlyFieldConfig, schema: JSONSchema7, options: IOptions): boolean {\n const { form } = (field.options as any)._buildField({\n form: new FormGroup({}),\n fieldGroup: [this._toFieldConfig(schema, { ...options, resetOnHide: true, ignoreDefault: true, map: null })],\n model: field.model ? clone(field.model) : (field.fieldArray ? [] : {}),\n });\n\n return form.valid;\n }\n\n private mergeFields(f1: FormlyFieldConfig, f2: FormlyFieldConfig) {\n for (let prop in f2) {\n if (isObject(f1[prop]) && isObject(f2[prop])) {\n f1[prop] = this.mergeFields(f1[prop], f2[prop]);\n } else if (f2[prop] != null) {\n f1[prop] = f2[prop];\n }\n }\n\n return f1;\n }\n}\n"],"names":["getFieldInitialValue","reverseDeepMerge"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-formly-core-json-schema.js.map","sources":["ng://@ngx-formly/core/json-schema/formly-json-schema.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { JSONSchema7, JSONSchema7TypeName } from 'json-schema';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport {\n ɵreverseDeepMerge as reverseDeepMerge,\n ɵgetFieldValue as getFieldValue,\n ɵclone as clone,\n} from '@ngx-formly/core';\nimport { tap } from 'rxjs/operators';\n\nexport interface FormlyJsonschemaOptions {\n /**\n * allows to intercept the mapping, taking the already mapped\n * formly field and the original JSONSchema source from which it\n * was mapped.\n */\n map?: (mappedField: FormlyFieldConfig, mapSource: JSONSchema7) => FormlyFieldConfig;\n}\n\n// https://stackoverflow.com/a/27865285\nfunction decimalPlaces(a: number) {\n if (!isFinite(a)) {\n return 0;\n }\n\n let e = 1, p = 0;\n while (Math.round(a * e) / e !== a) { e *= 10; p++; }\n\n return p;\n}\n\nfunction isEmpty(v: any) {\n return v === '' || v === undefined || v === null;\n}\n\nfunction isObject(v: any) {\n return v != null && typeof v === 'object' && !Array.isArray(v);\n}\n\nfunction isConst(schema: JSONSchema7) {\n return schema.hasOwnProperty('const') || (schema.enum && schema.enum.length === 1);\n}\n\nfunction totalMatchedFields(field: FormlyFieldConfig): number {\n if (!field.fieldGroup) {\n return field.key && getFieldValue(field) !== undefined ? 1 : 0;\n }\n\n const total = field.fieldGroup.reduce((s, f) => totalMatchedFields(f) + s, 0);\n return total === 0\n ? field.key && getFieldValue(field) !== undefined ? 1 : 0\n : total;\n}\n\ninterface IOptions extends FormlyJsonschemaOptions {\n schema: JSONSchema7;\n resetOnHide?: boolean;\n shareFormControl?: boolean;\n ignoreDefault?: boolean;\n readOnly?: boolean;\n key?: FormlyFieldConfig['key'];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyJsonschema {\n toFieldConfig(schema: JSONSchema7, options?: FormlyJsonschemaOptions): FormlyFieldConfig {\n return this._toFieldConfig(schema, { schema, ...(options || {}) });\n }\n\n private _toFieldConfig(schema: JSONSchema7, { key, ...options }: IOptions): FormlyFieldConfig {\n schema = this.resolveSchema(schema, options);\n\n let field: FormlyFieldConfig = {\n type: this.guessType(schema),\n defaultValue: schema.default,\n templateOptions: {\n label: schema.title,\n readonly: schema.readOnly,\n description: schema.description,\n },\n };\n\n if (key != null) {\n field.key = key;\n }\n\n if (!options.ignoreDefault && (schema.readOnly || options.readOnly)) {\n field.templateOptions.disabled = true;\n options = { ...options, readOnly: true };\n }\n\n if (options.resetOnHide) {\n field['resetOnHide'] = true;\n }\n\n if (options.shareFormControl === false) {\n field['shareFormControl'] = false;\n }\n\n if (options.ignoreDefault) {\n delete field.defaultValue;\n }\n\n switch (field.type) {\n case 'null': {\n this.addValidator(field, 'null', ({ value }) => value === null);\n break;\n }\n case 'number':\n case 'integer': {\n field.parsers = [v => isEmpty(v) ? (v === '' ? null : v) : Number(v)];\n if (schema.hasOwnProperty('minimum')) {\n field.templateOptions.min = schema.minimum;\n }\n\n if (schema.hasOwnProperty('maximum')) {\n field.templateOptions.max = schema.maximum;\n }\n\n if (schema.hasOwnProperty('exclusiveMinimum')) {\n field.templateOptions.exclusiveMinimum = schema.exclusiveMinimum;\n this.addValidator(field, 'exclusiveMinimum', ({ value }) => isEmpty(value) || (value > schema.exclusiveMinimum));\n }\n\n if (schema.hasOwnProperty('exclusiveMaximum')) {\n field.templateOptions.exclusiveMaximum = schema.exclusiveMaximum;\n this.addValidator(field, 'exclusiveMaximum', ({ value }) => isEmpty(value) || (value < schema.exclusiveMaximum));\n }\n\n if (schema.hasOwnProperty('multipleOf')) {\n field.templateOptions.step = schema.multipleOf;\n this.addValidator(field, 'multipleOf', ({ value }) => {\n if (isEmpty(value) || typeof value !== 'number' || value === 0 || schema.multipleOf <= 0) {\n return true;\n }\n\n // https://github.com/ajv-validator/ajv/issues/652#issue-283610859\n const multiplier = Math.pow(10, decimalPlaces(schema.multipleOf));\n return Math.round(value * multiplier) % Math.round(schema.multipleOf * multiplier) === 0;\n });\n }\n break;\n }\n case 'string': {\n const schemaType = schema.type as JSONSchema7TypeName;\n if (Array.isArray(schemaType) && (schemaType.indexOf('null') !== -1)) {\n field.parsers = [v => isEmpty(v) ? null : v];\n }\n\n ['minLength', 'maxLength', 'pattern'].forEach(prop => {\n if (schema.hasOwnProperty(prop)) {\n field.templateOptions[prop] = schema[prop];\n }\n });\n break;\n }\n case 'object': {\n field.fieldGroup = [];\n\n const [propDeps, schemaDeps] = this.resolveDependencies(schema);\n Object.keys(schema.properties || {}).forEach(property => {\n const f = this._toFieldConfig(<JSONSchema7> schema.properties[property], { ...options, key: property });\n field.fieldGroup.push(f);\n if (\n (Array.isArray(schema.required) && schema.required.indexOf(property) !== -1)\n || propDeps[property]\n ) {\n f.expressionProperties = {\n ...(f.expressionProperties || {}),\n 'templateOptions.required': (m, s, f) => {\n let parent = f.parent;\n const model = f.fieldGroup && f.key != null ? parent.model : f.model;\n while (parent.key == null && parent.parent) {\n parent = parent.parent;\n }\n\n const required = parent && parent.templateOptions ? parent.templateOptions.required : false;\n if (!model && !required) {\n return false;\n }\n\n if (Array.isArray(schema.required) && schema.required.indexOf(property) !== -1) {\n return true;\n }\n\n return propDeps[property] && (m && propDeps[property].some(k => !isEmpty(m[k])));\n },\n };\n }\n\n if (schemaDeps[property]) {\n const getConstValue = (s: JSONSchema7) => {\n return s.hasOwnProperty('const') ? s.const : s.enum[0];\n };\n\n const oneOfSchema = schemaDeps[property].oneOf;\n if (\n oneOfSchema\n && oneOfSchema.every(o => o.properties && o.properties[property] && isConst(o.properties[property]))\n ) {\n oneOfSchema.forEach(oneOfSchemaItem => {\n const { [property]: constSchema, ...properties } = oneOfSchemaItem.properties;\n field.fieldGroup.push({\n ...this._toFieldConfig({ ...oneOfSchemaItem, properties }, { ...options, resetOnHide: true }),\n hideExpression: m => !m || getConstValue(constSchema) !== m[property],\n });\n });\n } else {\n field.fieldGroup.push({\n ...this._toFieldConfig(schemaDeps[property], options),\n hideExpression: m => !m || isEmpty(m[property]),\n });\n }\n\n }\n });\n\n if (schema.oneOf) {\n field.fieldGroup.push(this.resolveMultiSchema(\n 'oneOf',\n <JSONSchema7[]> schema.oneOf,\n { ...options, shareFormControl: false },\n ));\n }\n\n if (schema.anyOf) {\n field.fieldGroup.push(this.resolveMultiSchema(\n 'anyOf',\n <JSONSchema7[]> schema.anyOf,\n options,\n ));\n }\n break;\n }\n case 'array': {\n if (schema.hasOwnProperty('minItems')) {\n field.templateOptions.minItems = schema.minItems;\n this.addValidator(field, 'minItems', ({ value }) => isEmpty(value) || (value.length >= schema.minItems));\n }\n if (schema.hasOwnProperty('maxItems')) {\n field.templateOptions.maxItems = schema.maxItems;\n this.addValidator(field, 'maxItems', ({ value }) => isEmpty(value) || (value.length <= schema.maxItems));\n }\n if (schema.hasOwnProperty('uniqueItems')) {\n field.templateOptions.uniqueItems = schema.uniqueItems;\n this.addValidator(field, 'uniqueItems', ({ value }) => {\n if (isEmpty(value) || !schema.uniqueItems) {\n return true;\n }\n\n const uniqueItems = Array.from(\n new Set(value.map((v: any) => JSON.stringify(v))),\n );\n\n return uniqueItems.length === value.length;\n });\n }\n\n // resolve items schema needed for isEnum check\n if (schema.items && !Array.isArray(schema.items)) {\n schema.items = this.resolveSchema(<JSONSchema7> schema.items, options);\n }\n\n // TODO: remove isEnum check once adding an option to skip extension\n if (!this.isEnum(schema)) {\n const _this = this;\n Object.defineProperty(field, 'fieldArray', {\n get: function () {\n if (schema.items && !Array.isArray(schema.items)) {\n // When items is a single schema, the additionalItems keyword is meaningless, and it should not be used.\n return _this._toFieldConfig(<JSONSchema7> schema.items, options);\n }\n\n const length = this.fieldGroup ? this.fieldGroup.length : 0;\n if (schema.items && schema.items[length]) {\n const f = _this._toFieldConfig(<JSONSchema7> schema.items[length], { ...options});\n f.templateOptions.removable = false;\n\n return f;\n }\n\n return schema.additionalItems\n ? _this._toFieldConfig(<JSONSchema7> schema.additionalItems, options)\n : {};\n },\n enumerable: true,\n configurable: true,\n });\n }\n\n break;\n }\n }\n\n if (schema.hasOwnProperty('const')) {\n field.templateOptions.const = schema.const;\n this.addValidator(field, 'const', ({ value }) => value === schema.const);\n if (!field.type) {\n field.defaultValue = schema.const;\n }\n }\n\n if (this.isEnum(schema)) {\n field.templateOptions.multiple = field.type === 'array';\n field.type = 'enum';\n field.templateOptions.options = this.toEnumOptions(schema);\n }\n\n // map in possible formlyConfig options from the widget property\n if (schema['widget'] && schema['widget'].formlyConfig) {\n field = this.mergeFields(field, schema['widget'].formlyConfig);\n }\n\n // if there is a map function passed in, use it to allow the user to\n // further customize how fields are being mapped\n return options.map ? options.map(field, schema) : field;\n }\n\n private resolveSchema(schema: JSONSchema7, options: IOptions) {\n if (schema && schema.$ref) {\n schema = this.resolveDefinition(schema, options);\n }\n\n if (schema && schema.allOf) {\n schema = this.resolveAllOf(schema, options);\n }\n\n return schema;\n }\n\n private resolveAllOf({ allOf, ...baseSchema }: JSONSchema7, options: IOptions) {\n if (!allOf.length) {\n throw Error(`allOf array can not be empty ${allOf}.`);\n }\n\n return allOf.reduce((base: JSONSchema7, schema: JSONSchema7) => {\n schema = this.resolveSchema(schema, options);\n if (base.required && schema.required) {\n base.required = [...base.required, ...schema.required];\n }\n\n if (schema.uniqueItems) {\n base.uniqueItems = schema.uniqueItems;\n }\n\n // resolve to min value\n ['maxLength', 'maximum', 'exclusiveMaximum', 'maxItems', 'maxProperties']\n .forEach(prop => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n base[prop] = base[prop] < schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n // resolve to max value\n ['minLength', 'minimum', 'exclusiveMinimum', 'minItems', 'minProperties']\n .forEach(prop => {\n if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n base[prop] = base[prop] > schema[prop] ? base[prop] : schema[prop];\n }\n });\n\n return reverseDeepMerge(base, schema);\n }, baseSchema);\n }\n\n private resolveMultiSchema(\n mode: 'oneOf' | 'anyOf',\n schemas: JSONSchema7[],\n options: IOptions,\n ): FormlyFieldConfig {\n return {\n type: 'multischema',\n fieldGroup: [\n {\n type: 'enum',\n defaultValue: -1,\n templateOptions: {\n multiple: mode === 'anyOf',\n options: schemas\n .map((s, i) => ({ label: s.title, value: i, disabled: s.readOnly })),\n },\n hooks: {\n onInit: f => f.formControl.valueChanges.pipe(\n tap(() => (f.options as any)._checkField(f.parent)),\n ),\n },\n },\n {\n fieldGroup: schemas.map((s, i) => ({\n ...this._toFieldConfig(s, { ...options, resetOnHide: true }),\n hideExpression: (m, fs, f, forceUpdate?: boolean) => {\n const control = f.parent.parent.fieldGroup[0].formControl;\n if ((control.value === -1) || forceUpdate) {\n let value = f.parent.fieldGroup\n .map((f, i) => [f, i] as [FormlyFieldConfig, number])\n .filter(([f, i]) => {\n return this.isFieldValid(f, schemas[i], options);\n })\n .sort(([f1], [f2]) => {\n const matchedFields1 = totalMatchedFields(f1);\n const matchedFields2 = totalMatchedFields(f2);\n if (matchedFields1 === matchedFields2) {\n if (f1.templateOptions.disabled === f2.templateOptions.disabled) {\n return 0;\n }\n\n return f1.templateOptions.disabled ? 1 : -1;\n }\n\n return matchedFields2 > matchedFields1 ? 1 : -1;\n })\n .map(([, i]) => i)\n ;\n\n if (mode === 'anyOf') {\n const definedValue = value.filter(i => totalMatchedFields(f.parent.fieldGroup[i]));\n value = definedValue.length > 0 ? definedValue : [value[0] || 0];\n }\n\n value = value.length > 0 ? value : [0];\n control.setValue(mode === 'anyOf' ? value : value[0]);\n }\n\n return Array.isArray(control.value)\n ? control.value.indexOf(i) === -1\n : control.value !== i;\n },\n })),\n },\n ],\n };\n }\n\n private resolveDefinition(schema: JSONSchema7, options: IOptions): JSONSchema7 {\n const [uri, pointer] = schema.$ref.split('#/');\n if (uri) {\n throw Error(`Remote schemas for ${schema.$ref} not supported yet.`);\n }\n\n const definition = !pointer ? null : pointer.split('/').reduce(\n (def, path) => def && def.hasOwnProperty(path) ? def[path] : null,\n options.schema,\n );\n\n if (!definition) {\n throw Error(`Cannot find a definition for ${schema.$ref}.`);\n }\n\n if (definition.$ref) {\n return this.resolveDefinition(definition, options);\n }\n\n return {\n ...definition,\n ...['title', 'description', 'default', 'widget'].reduce((annotation, p) => {\n if (schema.hasOwnProperty(p)) {\n annotation[p] = schema[p];\n }\n\n return annotation;\n }, {}),\n };\n }\n\n private resolveDependencies(schema: JSONSchema7) {\n const deps = {};\n const schemaDeps = {};\n\n Object.keys(schema.dependencies || {}).forEach(prop => {\n const dependency = schema.dependencies[prop] as JSONSchema7;\n if (Array.isArray(dependency)) {\n // Property dependencies\n dependency.forEach(dep => {\n if (!deps[dep]) {\n deps[dep] = [prop];\n } else {\n deps[dep].push(prop);\n }\n });\n } else {\n // schema dependencies\n schemaDeps[prop] = dependency;\n }\n });\n\n return [deps, schemaDeps];\n }\n\n private guessType(schema: JSONSchema7) {\n const type = schema ? schema.type as JSONSchema7TypeName : null;\n if (!type && schema && schema.properties) {\n return 'object';\n }\n\n if (Array.isArray(type)) {\n if (type.length === 1) {\n return type[0];\n }\n\n if (type.length === 2 && type.indexOf('null') !== -1) {\n return type[type[0] === 'null' ? 1 : 0];\n }\n }\n\n return type;\n }\n\n private addValidator(field: FormlyFieldConfig, name: string, validator: (control: AbstractControl) => boolean) {\n field.validators = field.validators || {};\n field.validators[name] = validator;\n }\n\n private isEnum(schema: JSONSchema7) {\n return schema.enum\n || (schema.anyOf && schema.anyOf.every(isConst))\n || (schema.oneOf && schema.oneOf.every(isConst))\n || schema.uniqueItems && schema.items && !Array.isArray(schema.items) && this.isEnum(<JSONSchema7> schema.items);\n }\n\n private toEnumOptions(schema: JSONSchema7) {\n if (schema.enum) {\n return schema.enum.map(value => ({ value, label: value }));\n }\n\n const toEnum = (s: JSONSchema7) => {\n const value = s.hasOwnProperty('const') ? s.const : s.enum[0];\n const option: any = { value: value, label: s.title || value };\n if (s.readOnly) {\n option.disabled = true;\n }\n\n return option;\n };\n\n if (schema.anyOf) {\n return schema.anyOf.map(toEnum);\n }\n\n if (schema.oneOf) {\n return schema.oneOf.map(toEnum);\n }\n\n return this.toEnumOptions(<JSONSchema7> schema.items);\n }\n\n private isFieldValid(field: FormlyFieldConfig, schema: JSONSchema7, options: IOptions): boolean {\n const { form } = (field.options as any)._buildField({\n form: new FormGroup({}),\n fieldGroup: [this._toFieldConfig(schema, { ...options, resetOnHide: true, ignoreDefault: true, map: null })],\n model: field.model ? clone(field.model) : (field.fieldArray ? [] : {}),\n });\n\n return form.valid;\n }\n\n private mergeFields(f1: FormlyFieldConfig, f2: FormlyFieldConfig) {\n for (let prop in f2) {\n if (isObject(f1[prop]) && isObject(f2[prop])) {\n f1[prop] = this.mergeFields(f1[prop], f2[prop]);\n } else if (f2[prop] != null) {\n f1[prop] = f2[prop];\n }\n }\n\n return f1;\n }\n}\n"],"names":["getFieldValue","reverseDeepMerge"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { DOCUMENT, CommonModule } from '@angular/common';
2
- import { TemplateRef, Injectable, InjectionToken, NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional, Component, Input, ChangeDetectionStrategy, ComponentFactoryResolver, Injector, ChangeDetectorRef, Directive, EventEmitter, Renderer2, ElementRef, Attribute, Output, ViewChild, ViewContainerRef, NgZone, defineInjectable, inject, INJECTOR } from '@angular/core';
2
+ import { TemplateRef, Injectable, InjectionToken, NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional, Component, Input, ChangeDetectionStrategy, ComponentFactoryResolver, Injector, ChangeDetectorRef, Directive, EventEmitter, NgZone, Attribute, Output, ViewChild, Renderer2, ElementRef, ViewContainerRef, defineInjectable, inject, INJECTOR } from '@angular/core';
3
3
  import { DomSanitizer } from '@angular/platform-browser';
4
- import { debounceTime, switchMap, distinctUntilChanged, take, startWith, map } from 'rxjs/operators';
4
+ import { debounceTime, switchMap, distinctUntilChanged, take, startWith, filter, map } from 'rxjs/operators';
5
5
  import { AbstractControl, FormArray, FormGroup, FormControl, FormGroupDirective, Validators } from '@angular/forms';
6
- import { isObservable, Subject, of, Observable } from 'rxjs';
7
- import { __extends, __spread, __assign, __rest, __values, __read } from 'tslib';
6
+ import { isObservable, Subject, of, merge, Observable } from 'rxjs';
7
+ import { __extends, __assign, __spread, __rest, __values, __read } from 'tslib';
8
8
 
9
9
  /**
10
10
  * @fileoverview added by tsickle
@@ -105,44 +105,12 @@ function assignModelValue(model, paths, value) {
105
105
  }
106
106
  model[paths[paths.length - 1]] = clone(value);
107
107
  }
108
- /**
109
- * @param {?} field
110
- * @return {?}
111
- */
112
- function getFieldInitialValue(field) {
113
- var e_1, _a;
114
- /** @type {?} */
115
- var value = field.options['_initialModel'];
116
- /** @type {?} */
117
- var paths = getKeyPath(field);
118
- while (field.parent) {
119
- field = field.parent;
120
- paths = __spread(getKeyPath(field), paths);
121
- }
122
- try {
123
- for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
124
- var path = paths_1_1.value;
125
- if (!value) {
126
- return undefined;
127
- }
128
- value = value[path];
129
- }
130
- }
131
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
132
- finally {
133
- try {
134
- if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);
135
- }
136
- finally { if (e_1) throw e_1.error; }
137
- }
138
- return value;
139
- }
140
108
  /**
141
109
  * @param {?} field
142
110
  * @return {?}
143
111
  */
144
112
  function getFieldValue(field) {
145
- var e_2, _a;
113
+ var e_1, _a;
146
114
  /** @type {?} */
147
115
  var model = field.parent.model;
148
116
  try {
@@ -154,12 +122,12 @@ function getFieldValue(field) {
154
122
  model = model[path];
155
123
  }
156
124
  }
157
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
125
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
158
126
  finally {
159
127
  try {
160
128
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
161
129
  }
162
- finally { if (e_2) throw e_2.error; }
130
+ finally { if (e_1) throw e_1.error; }
163
131
  }
164
132
  return model;
165
133
  }
@@ -363,28 +331,6 @@ function wrapProperty(o, prop, setFn) {
363
331
  */
364
332
  function () { return fns.splice(fns.indexOf(setFn), 1); });
365
333
  }
366
- /**
367
- * @param {?} form
368
- * @param {?} action
369
- * @return {?}
370
- */
371
- function reduceFormUpdateValidityCalls(form, action) {
372
- /** @type {?} */
373
- var updateValidity = form._updateTreeValidity.bind(form);
374
- /** @type {?} */
375
- var updateValidityArgs = { called: false, emitEvent: false };
376
- form._updateTreeValidity = (/**
377
- * @param {?=} __0
378
- * @return {?}
379
- */
380
- function (_a) {
381
- var emitEvent = (_a === void 0 ? { emitEvent: true } : _a).emitEvent;
382
- return updateValidityArgs = { called: true, emitEvent: emitEvent || updateValidityArgs.emitEvent };
383
- });
384
- action();
385
- updateValidityArgs.called && updateValidity({ emitEvent: updateValidityArgs.emitEvent });
386
- form._updateTreeValidity = updateValidity;
387
- }
388
334
 
389
335
  /**
390
336
  * @fileoverview added by tsickle
@@ -766,17 +712,13 @@ var FormlyFormBuilder = /** @class */ (function () {
766
712
  * @return {?}
767
713
  */
768
714
  function (formControl, fieldGroup, model, options) {
769
- var _this = this;
770
715
  if (fieldGroup === void 0) { fieldGroup = []; }
771
716
  if (!this.formlyConfig.extensions.core) {
772
717
  throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');
773
718
  }
774
719
  /** @type {?} */
775
720
  var field = { fieldGroup: fieldGroup, model: model, formControl: formControl, options: this._setOptions(options) };
776
- reduceFormUpdateValidityCalls(formControl, (/**
777
- * @return {?}
778
- */
779
- function () { return _this._buildForm(field); }));
721
+ this._buildForm(field);
780
722
  field.options._checkField(field, true);
781
723
  };
782
724
  /**
@@ -923,13 +865,18 @@ var FormlyFormBuilder = /** @class */ (function () {
923
865
  function unregisterControl(field, emitEvent) {
924
866
  if (emitEvent === void 0) { emitEvent = false; }
925
867
  /** @type {?} */
926
- var form = (/** @type {?} */ (field.formControl.parent));
868
+ var control = field.formControl;
869
+ /** @type {?} */
870
+ var fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;
871
+ if (fieldIndex !== -1) {
872
+ control['_fields'].splice(fieldIndex, 1);
873
+ }
874
+ /** @type {?} */
875
+ var form = (/** @type {?} */ (control.parent));
927
876
  if (!form) {
928
877
  return;
929
878
  }
930
879
  /** @type {?} */
931
- var control = field.formControl;
932
- /** @type {?} */
933
880
  var opts = { emitEvent: emitEvent };
934
881
  if (form instanceof FormArray) {
935
882
  /** @type {?} */
@@ -1055,15 +1002,22 @@ function registerControl(field, control, emitEvent) {
1055
1002
  }
1056
1003
  /**
1057
1004
  * @param {?} c
1005
+ * @param {?=} onlySelf
1058
1006
  * @return {?}
1059
1007
  */
1060
- function updateValidity(c) {
1008
+ function updateValidity(c, onlySelf) {
1009
+ if (onlySelf === void 0) { onlySelf = false; }
1061
1010
  /** @type {?} */
1062
1011
  var status = c.status;
1063
- c.updateValueAndValidity({ emitEvent: false });
1012
+ /** @type {?} */
1013
+ var value = c.value;
1014
+ c.updateValueAndValidity({ emitEvent: false, onlySelf: onlySelf });
1064
1015
  if (status !== c.status) {
1065
1016
  ((/** @type {?} */ (c.statusChanges))).emit(c.status);
1066
1017
  }
1018
+ if (value !== c.value) {
1019
+ ((/** @type {?} */ (c.valueChanges))).emit(c.value);
1020
+ }
1067
1021
  }
1068
1022
  /**
1069
1023
  * @param {?} form
@@ -1116,6 +1070,8 @@ function updateControl(form, opts, action) {
1116
1070
  */
1117
1071
  function clearControl(form) {
1118
1072
  form['_fields'] && delete form['_fields'];
1073
+ form.setValidators(null);
1074
+ form.setAsyncValidators(null);
1119
1075
  if (form instanceof FormGroup || form instanceof FormArray) {
1120
1076
  Object.keys(form.controls)
1121
1077
  .forEach((/**
@@ -2531,7 +2487,18 @@ var FormlyValidationMessage = /** @class */ (function () {
2531
2487
  */
2532
2488
  function () {
2533
2489
  var _this = this;
2534
- this.errorMessage$ = this.field.formControl.statusChanges.pipe(startWith(null), switchMap((/**
2490
+ this.errorMessage$ = merge(this.field.formControl.statusChanges, (!this.field.options
2491
+ ? of(null)
2492
+ : this.field.options.fieldChanges.pipe(filter((/**
2493
+ * @param {?} __0
2494
+ * @return {?}
2495
+ */
2496
+ function (_a) {
2497
+ var field = _a.field, type = _a.type, property = _a.property;
2498
+ return (field === _this.field)
2499
+ && (type === 'expressionChanges')
2500
+ && (property.indexOf('validation') !== -1);
2501
+ }))))).pipe(startWith(null), switchMap((/**
2535
2502
  * @return {?}
2536
2503
  */
2537
2504
  function () { return isObservable(_this.errorMessage)
@@ -2707,10 +2674,7 @@ FieldExpressionExtension = /** @class */ (function () {
2707
2674
  function (f, ignoreCache) {
2708
2675
  if (!checkLocked) {
2709
2676
  checkLocked = true;
2710
- reduceFormUpdateValidityCalls(f.formControl, (/**
2711
- * @return {?}
2712
- */
2713
- function () { return _this.checkField(f, ignoreCache); }));
2677
+ _this.checkField(f, ignoreCache);
2714
2678
  checkLocked = false;
2715
2679
  }
2716
2680
  });
@@ -3061,6 +3025,19 @@ FieldExpressionExtension = /** @class */ (function () {
3061
3025
  */
3062
3026
  function (field, hide, resetOnHide) {
3063
3027
  var _this = this;
3028
+ if (field.fieldGroup) {
3029
+ field.fieldGroup
3030
+ .filter((/**
3031
+ * @param {?} f
3032
+ * @return {?}
3033
+ */
3034
+ function (f) { return !f.hideExpression; }))
3035
+ .forEach((/**
3036
+ * @param {?} f
3037
+ * @return {?}
3038
+ */
3039
+ function (f) { return _this.toggleFormControl(f, hide, resetOnHide); }));
3040
+ }
3064
3041
  if (field.formControl && field.key) {
3065
3042
  defineHiddenProp(field, '_hide', !!(hide || field.hide));
3066
3043
  /** @type {?} */
@@ -3094,19 +3071,6 @@ FieldExpressionExtension = /** @class */ (function () {
3094
3071
  }
3095
3072
  }
3096
3073
  }
3097
- if (field.fieldGroup) {
3098
- field.fieldGroup
3099
- .filter((/**
3100
- * @param {?} f
3101
- * @return {?}
3102
- */
3103
- function (f) { return !f.hideExpression; }))
3104
- .forEach((/**
3105
- * @param {?} f
3106
- * @return {?}
3107
- */
3108
- function (f) { return _this.toggleFormControl(f, hide, resetOnHide); }));
3109
- }
3110
3074
  if (field.options.fieldChanges) {
3111
3075
  field.options.fieldChanges.next((/** @type {?} */ ({ field: field, type: 'hidden', value: hide })));
3112
3076
  }
@@ -3512,22 +3476,7 @@ FieldFormExtension = /** @class */ (function () {
3512
3476
  if (field.parent) {
3513
3477
  return;
3514
3478
  }
3515
- /** @type {?} */
3516
- var fieldsToUpdate = this.setValidators(field);
3517
- if (fieldsToUpdate.length === 0) {
3518
- return;
3519
- }
3520
- if (fieldsToUpdate.length === 1) {
3521
- /** @type {?} */
3522
- var control = fieldsToUpdate[0].formControl;
3523
- while (control) {
3524
- ((/** @type {?} */ (control)))._updateTreeValidity({ onlySelf: true });
3525
- control = control.parent;
3526
- }
3527
- }
3528
- else {
3529
- ((/** @type {?} */ (field.formControl)))._updateTreeValidity();
3530
- }
3479
+ this.setValidators(field);
3531
3480
  };
3532
3481
  /**
3533
3482
  * @private
@@ -3578,7 +3527,12 @@ FieldFormExtension = /** @class */ (function () {
3578
3527
  function (field) {
3579
3528
  var _this = this;
3580
3529
  /** @type {?} */
3581
- var updateValidity$$1 = false;
3530
+ var markForCheck = false;
3531
+ (field.fieldGroup || []).forEach((/**
3532
+ * @param {?} f
3533
+ * @return {?}
3534
+ */
3535
+ function (f) { return _this.setValidators(f) && (markForCheck = true); }));
3582
3536
  if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {
3583
3537
  var c_1 = field.formControl;
3584
3538
  /** @type {?} */
@@ -3586,21 +3540,11 @@ FieldFormExtension = /** @class */ (function () {
3586
3540
  if (field.key && c_1) {
3587
3541
  if (disabled && c_1.enabled) {
3588
3542
  c_1.disable({ emitEvent: false, onlySelf: true });
3589
- if (!c_1.parent) {
3590
- updateValidity(c_1);
3591
- }
3592
- else {
3593
- updateValidity$$1 = true;
3594
- }
3543
+ markForCheck = true;
3595
3544
  }
3596
3545
  if (!disabled && c_1.disabled) {
3597
3546
  c_1.enable({ emitEvent: false, onlySelf: true });
3598
- if (!c_1.parent) {
3599
- updateValidity(c_1);
3600
- }
3601
- else {
3602
- updateValidity$$1 = true;
3603
- }
3547
+ markForCheck = true;
3604
3548
  }
3605
3549
  }
3606
3550
  if (c_1 && (null === c_1.validator || null === c_1.asyncValidator)) {
@@ -3620,28 +3564,13 @@ FieldFormExtension = /** @class */ (function () {
3620
3564
  var v = Validators.composeAsync(_this.mergeValidators(field, '_asyncValidators'));
3621
3565
  return v ? v(c_1) : of(null);
3622
3566
  }));
3623
- if (!c_1.parent) {
3624
- updateValidity(c_1);
3625
- }
3626
- else {
3627
- updateValidity$$1 = true;
3628
- }
3567
+ markForCheck = true;
3629
3568
  }
3630
- }
3631
- /** @type {?} */
3632
- var fieldsToUpdate = updateValidity$$1 ? [field] : [];
3633
- (field.fieldGroup || []).forEach((/**
3634
- * @param {?} f
3635
- * @return {?}
3636
- */
3637
- function (f) {
3638
- /** @type {?} */
3639
- var childrenToUpdate = _this.setValidators(f);
3640
- if (!updateValidity$$1) {
3641
- fieldsToUpdate.push.apply(fieldsToUpdate, __spread(childrenToUpdate));
3569
+ if (markForCheck) {
3570
+ updateValidity(c_1, true);
3642
3571
  }
3643
- }));
3644
- return fieldsToUpdate;
3572
+ }
3573
+ return markForCheck;
3645
3574
  };
3646
3575
  /**
3647
3576
  * @private
@@ -3819,6 +3748,7 @@ CoreExtension = /** @class */ (function () {
3819
3748
  id: getFieldId("formly_" + this.formId, field, field['index']),
3820
3749
  hooks: {},
3821
3750
  modelOptions: {},
3751
+ validation: { messages: {} },
3822
3752
  templateOptions: !field.type || !field.key ? {} : {
3823
3753
  label: '',
3824
3754
  placeholder: '',
@@ -4051,6 +3981,6 @@ var FormlyModule = /** @class */ (function () {
4051
3981
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4052
3982
  */
4053
3983
 
4054
- export { FormlyForm, FormlyField, FormlyAttributes, FORMLY_CONFIG, FormlyConfig, FormlyFormBuilder, FieldType, Field, FieldArrayType, FieldWrapper, FormlyModule, defineHiddenProp as ɵdefineHiddenProp, reverseDeepMerge as ɵreverseDeepMerge, getFieldInitialValue as ɵgetFieldInitialValue, clone as ɵclone, wrapProperty as ɵwrapProperty, defaultFormlyConfig as ɵa, CoreExtension as ɵe, FieldExpressionExtension as ɵh, FieldFormExtension as ɵg, FieldValidationExtension as ɵf, FormlyTemplateType as ɵd, FormlyGroup as ɵb, FormlyValidationMessage as ɵc };
3984
+ export { FormlyForm, FormlyField, FormlyAttributes, FORMLY_CONFIG, FormlyConfig, FormlyFormBuilder, FieldType, Field, FieldArrayType, FieldWrapper, FormlyModule, defineHiddenProp as ɵdefineHiddenProp, reverseDeepMerge as ɵreverseDeepMerge, getFieldValue as ɵgetFieldValue, clone as ɵclone, wrapProperty as ɵwrapProperty, defaultFormlyConfig as ɵa, CoreExtension as ɵe, FieldExpressionExtension as ɵh, FieldFormExtension as ɵg, FieldValidationExtension as ɵf, FormlyTemplateType as ɵd, FormlyGroup as ɵb, FormlyValidationMessage as ɵc };
4055
3985
 
4056
3986
  //# sourceMappingURL=ngx-formly-core.js.map