@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.
- package/README.md +10 -8
- package/bundles/ngx-formly-core-json-schema.umd.js +6 -2
- package/bundles/ngx-formly-core-json-schema.umd.js.map +1 -1
- package/bundles/ngx-formly-core-json-schema.umd.min.js +1 -1
- package/bundles/ngx-formly-core-json-schema.umd.min.js.map +1 -1
- package/bundles/ngx-formly-core.umd.js +67 -139
- package/bundles/ngx-formly-core.umd.js.map +1 -1
- package/bundles/ngx-formly-core.umd.min.js +1 -1
- package/bundles/ngx-formly-core.umd.min.js.map +1 -1
- package/esm2015/json-schema/formly-json-schema.service.js +8 -4
- package/esm2015/lib/core.js +2 -2
- package/esm2015/lib/extensions/core/core.js +2 -1
- package/esm2015/lib/extensions/field-expression/field-expression.js +16 -19
- package/esm2015/lib/extensions/field-form/field-form.js +16 -51
- package/esm2015/lib/extensions/field-form/utils.js +19 -6
- package/esm2015/lib/services/formly.form.builder.js +3 -6
- package/esm2015/lib/templates/formly.validation-message.js +14 -3
- package/esm2015/lib/utils.js +1 -41
- package/esm2015/ngx-formly-core.js +2 -2
- package/esm2015/public_api.js +2 -2
- package/esm5/json-schema/formly-json-schema.service.js +8 -4
- package/esm5/lib/core.js +2 -2
- package/esm5/lib/extensions/core/core.js +2 -1
- package/esm5/lib/extensions/field-expression/field-expression.js +16 -19
- package/esm5/lib/extensions/field-form/field-form.js +16 -51
- package/esm5/lib/extensions/field-form/utils.js +20 -6
- package/esm5/lib/services/formly.form.builder.js +3 -7
- package/esm5/lib/templates/formly.validation-message.js +15 -3
- package/esm5/lib/utils.js +4 -58
- package/esm5/ngx-formly-core.js +2 -2
- package/esm5/public_api.js +2 -2
- package/fesm2015/ngx-formly-core-json-schema.js +7 -3
- package/fesm2015/ngx-formly-core-json-schema.js.map +1 -1
- package/fesm2015/ngx-formly-core.js +62 -119
- package/fesm2015/ngx-formly-core.js.map +1 -1
- package/fesm5/ngx-formly-core-json-schema.js +7 -3
- package/fesm5/ngx-formly-core-json-schema.js.map +1 -1
- package/fesm5/ngx-formly-core.js +69 -139
- package/fesm5/ngx-formly-core.js.map +1 -1
- package/json-schema/ngx-formly-core-json-schema.metadata.json +1 -1
- package/lib/core.d.ts +1 -1
- package/lib/extensions/field-form/utils.d.ts +1 -1
- package/lib/utils.d.ts +0 -2
- package/ngx-formly-core.metadata.json +1 -1
- 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,
|
|
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 &&
|
|
57
|
+
return field.key && ɵgetFieldValue(field) !== undefined ? 1 : 0;
|
|
58
58
|
}
|
|
59
|
-
|
|
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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"}
|
package/fesm5/ngx-formly-core.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3624
|
-
updateValidity(c_1);
|
|
3625
|
-
}
|
|
3626
|
-
else {
|
|
3627
|
-
updateValidity$$1 = true;
|
|
3628
|
-
}
|
|
3567
|
+
markForCheck = true;
|
|
3629
3568
|
}
|
|
3630
|
-
|
|
3631
|
-
|
|
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
|
|
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,
|
|
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
|