@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
@@ -5,5 +5,5 @@
5
5
  /*
6
6
  * Public API Surface of core
7
7
  */
8
- export { FormlyForm, FormlyField, FormlyAttributes, FORMLY_CONFIG, FormlyConfig, FormlyFormBuilder, FieldType, Field, FieldArrayType, FieldWrapper, FormlyModule, ɵdefineHiddenProp, ɵreverseDeepMerge, ɵgetFieldInitialValue, ɵclone, ɵwrapProperty } from './lib/core';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2NvcmUvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSw0UEFBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGNvcmVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlJztcbiJdfQ==
8
+ export { FormlyForm, FormlyField, FormlyAttributes, FORMLY_CONFIG, FormlyConfig, FormlyFormBuilder, FieldType, Field, FieldArrayType, FieldWrapper, FormlyModule, ɵdefineHiddenProp, ɵreverseDeepMerge, ɵgetFieldValue, ɵclone, ɵwrapProperty } from './lib/core';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BuZ3gtZm9ybWx5L2NvcmUvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxxUEFBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGNvcmVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlJztcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { __rest } 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
+ const total = field.fieldGroup.reduce((/**
60
61
  * @param {?} s
61
62
  * @param {?} f
62
63
  * @return {?}
63
64
  */
64
65
  (s, f) => totalMatchedFields(f) + s), 0);
66
+ return total === 0
67
+ ? field.key && ɵgetFieldValue(field) !== undefined ? 1 : 0
68
+ : total;
65
69
  }
66
70
  class FormlyJsonschema {
67
71
  /**
@@ -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","clone"],"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","clone"],"mappings":"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"}
@@ -2,9 +2,9 @@ import { DOCUMENT, CommonModule } from '@angular/common';
2
2
  import { TemplateRef, Injectable, InjectionToken, NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional, Component, Input, ChangeDetectionStrategy, EventEmitter, Output, Attribute, ViewChild, ElementRef, NgZone, ViewContainerRef, ComponentFactoryResolver, Renderer2, Directive, Injector, ChangeDetectorRef, defineInjectable, inject, INJECTOR } from '@angular/core';
3
3
  import { DomSanitizer } from '@angular/platform-browser';
4
4
  import { __rest } from 'tslib';
5
- import { debounceTime, switchMap, distinctUntilChanged, take, startWith, map } from 'rxjs/operators';
5
+ import { debounceTime, switchMap, distinctUntilChanged, take, startWith, filter, map } from 'rxjs/operators';
6
6
  import { AbstractControl, FormArray, FormGroup, FormControl, FormGroupDirective, Validators } from '@angular/forms';
7
- import { isObservable, Subject, of, Observable } from 'rxjs';
7
+ import { isObservable, Subject, of, merge, Observable } from 'rxjs';
8
8
 
9
9
  /**
10
10
  * @fileoverview added by tsickle
@@ -105,27 +105,6 @@ 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
- /** @type {?} */
114
- let value = field.options['_initialModel'];
115
- /** @type {?} */
116
- let paths = getKeyPath(field);
117
- while (field.parent) {
118
- field = field.parent;
119
- paths = [...getKeyPath(field), ...paths];
120
- }
121
- for (const path of paths) {
122
- if (!value) {
123
- return undefined;
124
- }
125
- value = value[path];
126
- }
127
- return value;
128
- }
129
108
  /**
130
109
  * @param {?} field
131
110
  * @return {?}
@@ -337,25 +316,6 @@ function wrapProperty(o, prop, setFn) {
337
316
  */
338
317
  () => fns.splice(fns.indexOf(setFn), 1));
339
318
  }
340
- /**
341
- * @param {?} form
342
- * @param {?} action
343
- * @return {?}
344
- */
345
- function reduceFormUpdateValidityCalls(form, action) {
346
- /** @type {?} */
347
- const updateValidity = form._updateTreeValidity.bind(form);
348
- /** @type {?} */
349
- let updateValidityArgs = { called: false, emitEvent: false };
350
- form._updateTreeValidity = (/**
351
- * @param {?=} __0
352
- * @return {?}
353
- */
354
- ({ emitEvent } = { emitEvent: true }) => updateValidityArgs = { called: true, emitEvent: emitEvent || updateValidityArgs.emitEvent });
355
- action();
356
- updateValidityArgs.called && updateValidity({ emitEvent: updateValidityArgs.emitEvent });
357
- form._updateTreeValidity = updateValidity;
358
- }
359
319
 
360
320
  /**
361
321
  * @fileoverview added by tsickle
@@ -672,10 +632,7 @@ class FormlyFormBuilder {
672
632
  }
673
633
  /** @type {?} */
674
634
  const field = { fieldGroup, model, formControl, options: this._setOptions(options) };
675
- reduceFormUpdateValidityCalls(formControl, (/**
676
- * @return {?}
677
- */
678
- () => this._buildForm(field)));
635
+ this._buildForm(field);
679
636
  field.options._checkField(field, true);
680
637
  }
681
638
  /**
@@ -803,13 +760,18 @@ FormlyFormBuilder.ctorParameters = () => [
803
760
  */
804
761
  function unregisterControl(field, emitEvent = false) {
805
762
  /** @type {?} */
806
- const form = (/** @type {?} */ (field.formControl.parent));
763
+ const control = field.formControl;
764
+ /** @type {?} */
765
+ const fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;
766
+ if (fieldIndex !== -1) {
767
+ control['_fields'].splice(fieldIndex, 1);
768
+ }
769
+ /** @type {?} */
770
+ const form = (/** @type {?} */ (control.parent));
807
771
  if (!form) {
808
772
  return;
809
773
  }
810
774
  /** @type {?} */
811
- const control = field.formControl;
812
- /** @type {?} */
813
775
  const opts = { emitEvent };
814
776
  if (form instanceof FormArray) {
815
777
  /** @type {?} */
@@ -930,15 +892,21 @@ function registerControl(field, control, emitEvent = false) {
930
892
  }
931
893
  /**
932
894
  * @param {?} c
895
+ * @param {?=} onlySelf
933
896
  * @return {?}
934
897
  */
935
- function updateValidity(c) {
898
+ function updateValidity(c, onlySelf = false) {
936
899
  /** @type {?} */
937
900
  const status = c.status;
938
- c.updateValueAndValidity({ emitEvent: false });
901
+ /** @type {?} */
902
+ const value = c.value;
903
+ c.updateValueAndValidity({ emitEvent: false, onlySelf });
939
904
  if (status !== c.status) {
940
905
  ((/** @type {?} */ (c.statusChanges))).emit(c.status);
941
906
  }
907
+ if (value !== c.value) {
908
+ ((/** @type {?} */ (c.valueChanges))).emit(c.value);
909
+ }
942
910
  }
943
911
  /**
944
912
  * @param {?} form
@@ -991,6 +959,8 @@ function updateControl(form, opts, action) {
991
959
  */
992
960
  function clearControl(form) {
993
961
  form['_fields'] && delete form['_fields'];
962
+ form.setValidators(null);
963
+ form.setAsyncValidators(null);
994
964
  if (form instanceof FormGroup || form instanceof FormArray) {
995
965
  Object.keys(form.controls)
996
966
  .forEach((/**
@@ -2153,7 +2123,17 @@ class FormlyValidationMessage {
2153
2123
  * @return {?}
2154
2124
  */
2155
2125
  ngOnChanges() {
2156
- this.errorMessage$ = this.field.formControl.statusChanges.pipe(startWith(null), switchMap((/**
2126
+ this.errorMessage$ = merge(this.field.formControl.statusChanges, (!this.field.options
2127
+ ? of(null)
2128
+ : this.field.options.fieldChanges.pipe(filter((/**
2129
+ * @param {?} __0
2130
+ * @return {?}
2131
+ */
2132
+ ({ field, type, property }) => {
2133
+ return (field === this.field)
2134
+ && (type === 'expressionChanges')
2135
+ && (property.indexOf('validation') !== -1);
2136
+ }))))).pipe(startWith(null), switchMap((/**
2157
2137
  * @return {?}
2158
2138
  */
2159
2139
  () => isObservable(this.errorMessage)
@@ -2310,10 +2290,7 @@ class FieldExpressionExtension {
2310
2290
  (f, ignoreCache) => {
2311
2291
  if (!checkLocked) {
2312
2292
  checkLocked = true;
2313
- reduceFormUpdateValidityCalls(f.formControl, (/**
2314
- * @return {?}
2315
- */
2316
- () => this.checkField(f, ignoreCache)));
2293
+ this.checkField(f, ignoreCache);
2317
2294
  checkLocked = false;
2318
2295
  }
2319
2296
  });
@@ -2600,6 +2577,19 @@ class FieldExpressionExtension {
2600
2577
  * @return {?}
2601
2578
  */
2602
2579
  toggleFormControl(field, hide, resetOnHide) {
2580
+ if (field.fieldGroup) {
2581
+ field.fieldGroup
2582
+ .filter((/**
2583
+ * @param {?} f
2584
+ * @return {?}
2585
+ */
2586
+ f => !f.hideExpression))
2587
+ .forEach((/**
2588
+ * @param {?} f
2589
+ * @return {?}
2590
+ */
2591
+ f => this.toggleFormControl(f, hide, resetOnHide)));
2592
+ }
2603
2593
  if (field.formControl && field.key) {
2604
2594
  defineHiddenProp(field, '_hide', !!(hide || field.hide));
2605
2595
  /** @type {?} */
@@ -2633,19 +2623,6 @@ class FieldExpressionExtension {
2633
2623
  }
2634
2624
  }
2635
2625
  }
2636
- if (field.fieldGroup) {
2637
- field.fieldGroup
2638
- .filter((/**
2639
- * @param {?} f
2640
- * @return {?}
2641
- */
2642
- f => !f.hideExpression))
2643
- .forEach((/**
2644
- * @param {?} f
2645
- * @return {?}
2646
- */
2647
- f => this.toggleFormControl(f, hide, resetOnHide)));
2648
- }
2649
2626
  if (field.options.fieldChanges) {
2650
2627
  field.options.fieldChanges.next((/** @type {?} */ ({ field, type: 'hidden', value: hide })));
2651
2628
  }
@@ -2986,22 +2963,7 @@ class FieldFormExtension {
2986
2963
  if (field.parent) {
2987
2964
  return;
2988
2965
  }
2989
- /** @type {?} */
2990
- const fieldsToUpdate = this.setValidators(field);
2991
- if (fieldsToUpdate.length === 0) {
2992
- return;
2993
- }
2994
- if (fieldsToUpdate.length === 1) {
2995
- /** @type {?} */
2996
- let control = fieldsToUpdate[0].formControl;
2997
- while (control) {
2998
- ((/** @type {?} */ (control)))._updateTreeValidity({ onlySelf: true });
2999
- control = control.parent;
3000
- }
3001
- }
3002
- else {
3003
- ((/** @type {?} */ (field.formControl)))._updateTreeValidity();
3004
- }
2966
+ this.setValidators(field);
3005
2967
  }
3006
2968
  /**
3007
2969
  * @private
@@ -3041,7 +3003,12 @@ class FieldFormExtension {
3041
3003
  */
3042
3004
  setValidators(field) {
3043
3005
  /** @type {?} */
3044
- let updateValidity$$1 = false;
3006
+ let markForCheck = false;
3007
+ (field.fieldGroup || []).forEach((/**
3008
+ * @param {?} f
3009
+ * @return {?}
3010
+ */
3011
+ f => this.setValidators(f) && (markForCheck = true)));
3045
3012
  if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {
3046
3013
  const { formControl: c } = field;
3047
3014
  /** @type {?} */
@@ -3049,21 +3016,11 @@ class FieldFormExtension {
3049
3016
  if (field.key && c) {
3050
3017
  if (disabled && c.enabled) {
3051
3018
  c.disable({ emitEvent: false, onlySelf: true });
3052
- if (!c.parent) {
3053
- updateValidity(c);
3054
- }
3055
- else {
3056
- updateValidity$$1 = true;
3057
- }
3019
+ markForCheck = true;
3058
3020
  }
3059
3021
  if (!disabled && c.disabled) {
3060
3022
  c.enable({ emitEvent: false, onlySelf: true });
3061
- if (!c.parent) {
3062
- updateValidity(c);
3063
- }
3064
- else {
3065
- updateValidity$$1 = true;
3066
- }
3023
+ markForCheck = true;
3067
3024
  }
3068
3025
  }
3069
3026
  if (c && (null === c.validator || null === c.asyncValidator)) {
@@ -3083,28 +3040,13 @@ class FieldFormExtension {
3083
3040
  const v = Validators.composeAsync(this.mergeValidators(field, '_asyncValidators'));
3084
3041
  return v ? v(c) : of(null);
3085
3042
  }));
3086
- if (!c.parent) {
3087
- updateValidity(c);
3088
- }
3089
- else {
3090
- updateValidity$$1 = true;
3091
- }
3043
+ markForCheck = true;
3092
3044
  }
3093
- }
3094
- /** @type {?} */
3095
- const fieldsToUpdate = updateValidity$$1 ? [field] : [];
3096
- (field.fieldGroup || []).forEach((/**
3097
- * @param {?} f
3098
- * @return {?}
3099
- */
3100
- f => {
3101
- /** @type {?} */
3102
- const childrenToUpdate = this.setValidators(f);
3103
- if (!updateValidity$$1) {
3104
- fieldsToUpdate.push(...childrenToUpdate);
3045
+ if (markForCheck) {
3046
+ updateValidity(c, true);
3105
3047
  }
3106
- }));
3107
- return fieldsToUpdate;
3048
+ }
3049
+ return markForCheck;
3108
3050
  }
3109
3051
  /**
3110
3052
  * @private
@@ -3255,6 +3197,7 @@ class CoreExtension {
3255
3197
  id: getFieldId(`formly_${this.formId}`, field, field['index']),
3256
3198
  hooks: {},
3257
3199
  modelOptions: {},
3200
+ validation: { messages: {} },
3258
3201
  templateOptions: !field.type || !field.key ? {} : {
3259
3202
  label: '',
3260
3203
  placeholder: '',
@@ -3474,6 +3417,6 @@ FormlyModule.ctorParameters = () => [
3474
3417
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3475
3418
  */
3476
3419
 
3477
- 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 };
3420
+ 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 };
3478
3421
 
3479
3422
  //# sourceMappingURL=ngx-formly-core.js.map