@ngx-formly/core 5.10.20 → 5.10.24
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/bundles/ngx-formly-core-json-schema.umd.js +35 -20
- 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 +76 -34
- 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 +36 -21
- package/esm2015/lib/components/formly.attributes.js +8 -3
- package/esm2015/lib/components/formly.field.js +24 -2
- package/esm2015/lib/components/formly.form.js +2 -2
- package/esm2015/lib/extensions/field-expression/field-expression.js +35 -16
- package/esm2015/lib/extensions/field-form/field-form.js +19 -17
- package/esm5/json-schema/formly-json-schema.service.js +36 -21
- package/esm5/lib/components/formly.attributes.js +8 -3
- package/esm5/lib/components/formly.field.js +24 -2
- package/esm5/lib/components/formly.form.js +2 -2
- package/esm5/lib/extensions/field-expression/field-expression.js +35 -16
- package/esm5/lib/extensions/field-form/field-form.js +19 -17
- package/fesm2015/ngx-formly-core-json-schema.js +35 -20
- package/fesm2015/ngx-formly-core-json-schema.js.map +1 -1
- package/fesm2015/ngx-formly-core.js +78 -35
- package/fesm2015/ngx-formly-core.js.map +1 -1
- package/fesm5/ngx-formly-core-json-schema.js +35 -20
- package/fesm5/ngx-formly-core-json-schema.js.map +1 -1
- package/fesm5/ngx-formly-core.js +77 -34
- package/fesm5/ngx-formly-core.js.map +1 -1
- package/json-schema/ngx-formly-core-json-schema.metadata.json +1 -1
- package/lib/components/formly.field.d.ts +1 -0
- package/ngx-formly-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -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\nfunction isInteger(value: any) {\n return Number.isInteger\n ? Number.isInteger(value)\n : typeof value === 'number' && Math.floor(value) === value;\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) ? null : 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 return isInteger(value / schema.multipleOf);\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] && 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 (!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 const itemSchema = schema.items[length]\n ? schema.items[length]\n : schema.additionalItems;\n\n return itemSchema\n ? _this._toFieldConfig(<JSONSchema7> itemSchema, 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.$ref) {\n schema = this.resolveDefinition(schema, options);\n }\n\n if (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) => {\n const control = f.parent.parent.fieldGroup[0].formControl;\n if (control.value === -1) {\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'].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.type as JSONSchema7TypeName;\n if (!type && 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 ɵ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) ? null : 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) => {\n const control = f.parent.parent.fieldGroup[0].formControl;\n if (control.value === -1) {\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,5 +1,5 @@
|
|
|
1
1
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
2
|
-
import { Injectable, InjectionToken, NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional, Component, Input, ChangeDetectionStrategy, EventEmitter, Output, ViewContainerRef, ViewChild, Attribute, ComponentFactoryResolver, Renderer2, ElementRef, Directive, Injector, ChangeDetectorRef,
|
|
2
|
+
import { Injectable, InjectionToken, NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional, Component, Input, ChangeDetectionStrategy, EventEmitter, Output, ViewContainerRef, ViewChild, Attribute, ComponentFactoryResolver, Renderer2, ElementRef, NgZone, Directive, Injector, ChangeDetectorRef, defineInjectable, inject, INJECTOR } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
4
|
import { __rest } from 'tslib';
|
|
5
5
|
import { debounceTime, switchMap, distinctUntilChanged, take, startWith, map } from 'rxjs/operators';
|
|
@@ -1240,7 +1240,7 @@ class FormlyForm {
|
|
|
1240
1240
|
* @return {?}
|
|
1241
1241
|
*/
|
|
1242
1242
|
field => {
|
|
1243
|
-
if (field.key && !field.fieldGroup) {
|
|
1243
|
+
if (field.key && !field.fieldGroup && field.formControl) {
|
|
1244
1244
|
/** @type {?} */
|
|
1245
1245
|
const control = field.formControl;
|
|
1246
1246
|
/** @type {?} */
|
|
@@ -1368,6 +1368,7 @@ class FormlyField {
|
|
|
1368
1368
|
this.hostObservers = [];
|
|
1369
1369
|
this.componentRefs = [];
|
|
1370
1370
|
this.hooksObservers = [];
|
|
1371
|
+
this.detectFieldBuild = false;
|
|
1371
1372
|
this.warnDeprecation = hideDeprecation === null;
|
|
1372
1373
|
}
|
|
1373
1374
|
/**
|
|
@@ -1420,6 +1421,9 @@ class FormlyField {
|
|
|
1420
1421
|
*/
|
|
1421
1422
|
ngDoCheck() {
|
|
1422
1423
|
this.triggerHook('doCheck');
|
|
1424
|
+
if (this.detectFieldBuild && (this.field && this.field.options)) {
|
|
1425
|
+
this.render();
|
|
1426
|
+
}
|
|
1423
1427
|
}
|
|
1424
1428
|
/**
|
|
1425
1429
|
* @return {?}
|
|
@@ -1547,6 +1551,12 @@ class FormlyField {
|
|
|
1547
1551
|
if (!this.field) {
|
|
1548
1552
|
return;
|
|
1549
1553
|
}
|
|
1554
|
+
// require Formly build
|
|
1555
|
+
if (!this.field.options) {
|
|
1556
|
+
this.detectFieldBuild = true;
|
|
1557
|
+
return;
|
|
1558
|
+
}
|
|
1559
|
+
this.detectFieldBuild = false;
|
|
1550
1560
|
this.hostObservers.forEach((/**
|
|
1551
1561
|
* @param {?} unsubscribe
|
|
1552
1562
|
* @return {?}
|
|
@@ -1567,9 +1577,15 @@ class FormlyField {
|
|
|
1567
1577
|
else {
|
|
1568
1578
|
if (currentValue) {
|
|
1569
1579
|
this.containerRef.clear();
|
|
1580
|
+
if (this.field.className) {
|
|
1581
|
+
this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');
|
|
1582
|
+
}
|
|
1570
1583
|
}
|
|
1571
1584
|
else {
|
|
1572
1585
|
this.renderField(this.containerRef, this.field);
|
|
1586
|
+
if (this.field.className) {
|
|
1587
|
+
this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);
|
|
1588
|
+
}
|
|
1573
1589
|
}
|
|
1574
1590
|
}
|
|
1575
1591
|
})),
|
|
@@ -1578,7 +1594,8 @@ class FormlyField {
|
|
|
1578
1594
|
* @return {?}
|
|
1579
1595
|
*/
|
|
1580
1596
|
({ firstChange, currentValue }) => {
|
|
1581
|
-
if (!firstChange || (firstChange && currentValue))
|
|
1597
|
+
if ((!firstChange || (firstChange && currentValue))
|
|
1598
|
+
&& (!this.formlyConfig.extras.lazyRender || (this.field.hide !== true))) {
|
|
1582
1599
|
this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);
|
|
1583
1600
|
}
|
|
1584
1601
|
})),
|
|
@@ -1718,7 +1735,11 @@ class FormlyAttributes {
|
|
|
1718
1735
|
* @param {?} attr
|
|
1719
1736
|
* @return {?}
|
|
1720
1737
|
*/
|
|
1721
|
-
attr =>
|
|
1738
|
+
attr => {
|
|
1739
|
+
if (currentValue[attr] != null) {
|
|
1740
|
+
this.setAttribute(attr, currentValue[attr]);
|
|
1741
|
+
}
|
|
1742
|
+
}));
|
|
1722
1743
|
}
|
|
1723
1744
|
}));
|
|
1724
1745
|
}
|
|
@@ -1756,7 +1777,8 @@ class FormlyAttributes {
|
|
|
1756
1777
|
attr => {
|
|
1757
1778
|
/** @type {?} */
|
|
1758
1779
|
const value = this.to[attr];
|
|
1759
|
-
if (this.uiAttributesCache[attr] !== value
|
|
1780
|
+
if (this.uiAttributesCache[attr] !== value
|
|
1781
|
+
&& (!this.to.attributes || !this.to.attributes.hasOwnProperty(attr.toLowerCase()))) {
|
|
1760
1782
|
this.uiAttributesCache[attr] = value;
|
|
1761
1783
|
if (value || value === 0) {
|
|
1762
1784
|
this.setAttribute(attr, value === true ? attr : `${value}`);
|
|
@@ -2443,7 +2465,8 @@ class FieldExpressionExtension {
|
|
|
2443
2465
|
* @return {?}
|
|
2444
2466
|
*/
|
|
2445
2467
|
checkField(field, ignoreCache = false) {
|
|
2446
|
-
|
|
2468
|
+
/** @type {?} */
|
|
2469
|
+
const fieldChanged = this._checkField(field, ignoreCache);
|
|
2447
2470
|
field.options._hiddenFieldsForCheck
|
|
2448
2471
|
.sort((/**
|
|
2449
2472
|
* @param {?} f
|
|
@@ -2456,6 +2479,12 @@ class FieldExpressionExtension {
|
|
|
2456
2479
|
*/
|
|
2457
2480
|
f => this.toggleFormControl(f, !!f.hide, !ignoreCache)));
|
|
2458
2481
|
field.options._hiddenFieldsForCheck = [];
|
|
2482
|
+
if (fieldChanged) {
|
|
2483
|
+
this.checkField(field);
|
|
2484
|
+
if (field.options && field.options._markForCheck) {
|
|
2485
|
+
field.options._markForCheck(field);
|
|
2486
|
+
}
|
|
2487
|
+
}
|
|
2459
2488
|
}
|
|
2460
2489
|
/**
|
|
2461
2490
|
* @private
|
|
@@ -2465,24 +2494,25 @@ class FieldExpressionExtension {
|
|
|
2465
2494
|
*/
|
|
2466
2495
|
_checkField(field, ignoreCache = false) {
|
|
2467
2496
|
/** @type {?} */
|
|
2468
|
-
let
|
|
2497
|
+
let fieldChanged = false;
|
|
2469
2498
|
field.fieldGroup.forEach((/**
|
|
2470
2499
|
* @param {?} f
|
|
2471
2500
|
* @return {?}
|
|
2472
2501
|
*/
|
|
2473
2502
|
f => {
|
|
2474
|
-
|
|
2503
|
+
if (!f.options) {
|
|
2504
|
+
return;
|
|
2505
|
+
}
|
|
2506
|
+
this.checkFieldExpressionChange(f, ignoreCache) && (fieldChanged = true);
|
|
2475
2507
|
if (this.checkFieldVisibilityChange(f, ignoreCache)) {
|
|
2476
2508
|
field.options._hiddenFieldsForCheck.push(f);
|
|
2477
|
-
|
|
2509
|
+
fieldChanged = true;
|
|
2478
2510
|
}
|
|
2479
2511
|
if (f.fieldGroup && f.fieldGroup.length > 0) {
|
|
2480
|
-
this._checkField(f, ignoreCache);
|
|
2512
|
+
this._checkField(f, ignoreCache) && (fieldChanged = true);
|
|
2481
2513
|
}
|
|
2482
2514
|
}));
|
|
2483
|
-
|
|
2484
|
-
field.options._markForCheck(field);
|
|
2485
|
-
}
|
|
2515
|
+
return fieldChanged;
|
|
2486
2516
|
}
|
|
2487
2517
|
/**
|
|
2488
2518
|
* @private
|
|
@@ -2505,7 +2535,9 @@ class FieldExpressionExtension {
|
|
|
2505
2535
|
expressionValue = !!expressionValue;
|
|
2506
2536
|
}
|
|
2507
2537
|
if (ignoreCache || (expressionProperties[key].expressionValue !== expressionValue
|
|
2508
|
-
&& (!isObject(expressionValue)
|
|
2538
|
+
&& (!isObject(expressionValue)
|
|
2539
|
+
|| isObservable(expressionValue)
|
|
2540
|
+
|| JSON.stringify(expressionValue) !== JSON.stringify(expressionProperties[key].expressionValue)))) {
|
|
2509
2541
|
markForCheck = true;
|
|
2510
2542
|
expressionProperties[key].expressionValue = expressionValue;
|
|
2511
2543
|
this.setExprValue(field, key, expressionValue);
|
|
@@ -2571,14 +2603,14 @@ class FieldExpressionExtension {
|
|
|
2571
2603
|
defineHiddenProp(field, '_hide', !!(hide || field.hide));
|
|
2572
2604
|
/** @type {?} */
|
|
2573
2605
|
const c = field.formControl;
|
|
2574
|
-
if (c['_fields'].length > 1) {
|
|
2606
|
+
if (c['_fields'] && c['_fields'].length > 1) {
|
|
2575
2607
|
updateValidity(c);
|
|
2576
2608
|
}
|
|
2577
|
-
if (hide === true && c['_fields'].every((/**
|
|
2609
|
+
if (hide === true && (!c['_fields'] || c['_fields'].every((/**
|
|
2578
2610
|
* @param {?} f
|
|
2579
2611
|
* @return {?}
|
|
2580
2612
|
*/
|
|
2581
|
-
f => !!f._hide))) {
|
|
2613
|
+
f => !!f._hide)))) {
|
|
2582
2614
|
unregisterControl(field, true);
|
|
2583
2615
|
if (resetOnHide && field.resetOnHide) {
|
|
2584
2616
|
field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });
|
|
@@ -2629,7 +2661,16 @@ class FieldExpressionExtension {
|
|
|
2629
2661
|
/** @type {?} */
|
|
2630
2662
|
let target = field;
|
|
2631
2663
|
/** @type {?} */
|
|
2632
|
-
const paths =
|
|
2664
|
+
const paths = prop.indexOf('[') === -1
|
|
2665
|
+
? prop.split('.')
|
|
2666
|
+
: prop
|
|
2667
|
+
.replace(/\'|\"/g, '')
|
|
2668
|
+
.split(/[[\]]{1,2}/) // https://stackoverflow.com/a/20198206
|
|
2669
|
+
.filter((/**
|
|
2670
|
+
* @param {?} v
|
|
2671
|
+
* @return {?}
|
|
2672
|
+
*/
|
|
2673
|
+
v => v));
|
|
2633
2674
|
/** @type {?} */
|
|
2634
2675
|
const lastIndex = paths.length - 1;
|
|
2635
2676
|
for (let i = 0; i < lastIndex; i++) {
|
|
@@ -2652,7 +2693,7 @@ class FieldExpressionExtension {
|
|
|
2652
2693
|
if (control
|
|
2653
2694
|
&& !(isNullOrUndefined(control.value) && isNullOrUndefined(value))
|
|
2654
2695
|
&& control.value !== value) {
|
|
2655
|
-
control.patchValue(value
|
|
2696
|
+
control.patchValue(value);
|
|
2656
2697
|
}
|
|
2657
2698
|
}
|
|
2658
2699
|
this.emitExpressionChanges(field, prop, value);
|
|
@@ -3004,25 +3045,27 @@ class FieldFormExtension {
|
|
|
3004
3045
|
const { formControl: c } = field;
|
|
3005
3046
|
/** @type {?} */
|
|
3006
3047
|
const disabled = field.templateOptions ? field.templateOptions.disabled : false;
|
|
3007
|
-
if (
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
if (!disabled && c.disabled) {
|
|
3017
|
-
c.enable({ emitEvent: false, onlySelf: true });
|
|
3018
|
-
if (!c.parent) {
|
|
3019
|
-
updateValidity(c);
|
|
3048
|
+
if (field.key && c) {
|
|
3049
|
+
if (disabled && c.enabled) {
|
|
3050
|
+
c.disable({ emitEvent: false, onlySelf: true });
|
|
3051
|
+
if (!c.parent) {
|
|
3052
|
+
updateValidity(c);
|
|
3053
|
+
}
|
|
3054
|
+
else {
|
|
3055
|
+
updateValidity$$1 = true;
|
|
3056
|
+
}
|
|
3020
3057
|
}
|
|
3021
|
-
|
|
3022
|
-
|
|
3058
|
+
if (!disabled && c.disabled) {
|
|
3059
|
+
c.enable({ emitEvent: false, onlySelf: true });
|
|
3060
|
+
if (!c.parent) {
|
|
3061
|
+
updateValidity(c);
|
|
3062
|
+
}
|
|
3063
|
+
else {
|
|
3064
|
+
updateValidity$$1 = true;
|
|
3065
|
+
}
|
|
3023
3066
|
}
|
|
3024
3067
|
}
|
|
3025
|
-
if (null === c.validator || null === c.asyncValidator) {
|
|
3068
|
+
if (c && (null === c.validator || null === c.asyncValidator)) {
|
|
3026
3069
|
c.setValidators((/**
|
|
3027
3070
|
* @return {?}
|
|
3028
3071
|
*/
|