@ngx-formly/core 6.1.3 → 6.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-formly-core-select.mjs","sources":["../../../../src/core/select/src/select-options.pipe.ts","../../../../src/core/select/src/select.module.ts","../../../../src/core/select/src/ngx-formly-core-select.ts"],"sourcesContent":["import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { FormlyFieldConfig, FormlyFieldProps } from '@ngx-formly/core';\n\nexport interface FormlySelectOption {\n label: string;\n disabled?: boolean;\n value?: any;\n group?: FormlySelectOption[];\n}\n\nexport interface FormlyFieldSelectProps extends FormlyFieldProps {\n groupProp?: string | ((option: any) => string);\n labelProp?: string | ((option: any) => any);\n valueProp?: string | ((option: any) => boolean);\n disabledProp?: string | ((option: any) => string);\n}\n\ntype ITransformOption = {\n labelProp: (option: any) => string;\n valueProp: (option: any) => any;\n disabledProp: (option: any) => boolean;\n groupProp: (option: any) => string;\n};\n\n@Pipe({ name: 'formlySelectOptions' })\nexport class FormlySelectOptionsPipe implements PipeTransform, OnDestroy {\n private _subscription: Subscription;\n private _options: BehaviorSubject<any[]>;\n\n transform(options: any, field?: FormlyFieldConfig): Observable<FormlySelectOption[]> {\n if (!(options instanceof Observable)) {\n options = this.observableOf(options, field);\n } else {\n this.dispose();\n }\n\n return (options as Observable<any>).pipe(map((value) => this.transformOptions(value, field)));\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n private transformOptions(options: any[], field?: FormlyFieldConfig): FormlySelectOption[] {\n const to = this.transformSelectProps(field);\n\n const opts: FormlySelectOption[] = [];\n const groups: { [id: string]: number } = {};\n\n options?.forEach((option) => {\n const o = this.transformOption(option, to);\n if (o.group) {\n const id = groups[o.label];\n if (id === undefined) {\n groups[o.label] = opts.push(o) - 1;\n } else {\n o.group.forEach((o) => opts[id].group.push(o));\n }\n } else {\n opts.push(o);\n }\n });\n\n return opts;\n }\n\n private transformOption(option: any, props: ITransformOption): FormlySelectOption {\n const group = props.groupProp(option);\n if (Array.isArray(group)) {\n return {\n label: props.labelProp(option),\n group: group.map((opt) => this.transformOption(opt, props)),\n };\n }\n\n option = {\n label: props.labelProp(option),\n value: props.valueProp(option),\n disabled: !!props.disabledProp(option),\n };\n\n if (group) {\n return { label: group, group: [option] };\n }\n\n return option;\n }\n\n private transformSelectProps(field?: FormlyFieldConfig): ITransformOption {\n const props = field?.props || field?.templateOptions || {};\n const selectPropFn = (prop: any) => (typeof prop === 'function' ? prop : (o: any) => o[prop]);\n\n return {\n groupProp: selectPropFn(props.groupProp || 'group'),\n labelProp: selectPropFn(props.labelProp || 'label'),\n valueProp: selectPropFn(props.valueProp || 'value'),\n disabledProp: selectPropFn(props.disabledProp || 'disabled'),\n };\n }\n\n private dispose() {\n if (this._options) {\n this._options.complete();\n this._options = null;\n }\n\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n\n private observableOf(options: any, f?: FormlyFieldConfig) {\n this.dispose();\n if (f && f.options && f.options.fieldChanges) {\n this._subscription = f.options.fieldChanges\n .pipe(\n filter(({ property, type, field }) => {\n return (\n type === 'expressionChanges' &&\n (property.indexOf('templateOptions.options') === 0 || property.indexOf('props.options') === 0) &&\n field === f &&\n Array.isArray(field.props.options) &&\n !!this._options\n );\n }),\n tap(() => this._options.next(f.props.options as any)),\n )\n .subscribe();\n }\n\n this._options = new BehaviorSubject(options);\n return this._options.asObservable();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormlySelectOptionsPipe } from './select-options.pipe';\n\n@NgModule({\n declarations: [FormlySelectOptionsPipe],\n exports: [FormlySelectOptionsPipe],\n})\nexport class FormlySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-formly-core-select.mjs","sources":["../../../../src/core/select/src/select-options.pipe.ts","../../../../src/core/select/src/select.module.ts","../../../../src/core/select/src/ngx-formly-core-select.ts"],"sourcesContent":["import { OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { FormlyFieldConfig, FormlyFieldProps } from '@ngx-formly/core';\n\nexport interface FormlySelectOption {\n label: string;\n disabled?: boolean;\n value?: any;\n group?: FormlySelectOption[];\n}\n\nexport interface FormlyFieldSelectProps extends FormlyFieldProps {\n groupProp?: string | ((option: any) => string);\n labelProp?: string | ((option: any) => string);\n valueProp?: string | ((option: any) => any);\n disabledProp?: string | ((option: any) => boolean);\n}\n\ntype ITransformOption = {\n labelProp: (option: any) => string;\n valueProp: (option: any) => any;\n disabledProp: (option: any) => boolean;\n groupProp: (option: any) => string;\n};\n\n@Pipe({ name: 'formlySelectOptions' })\nexport class FormlySelectOptionsPipe implements PipeTransform, OnDestroy {\n private _subscription: Subscription;\n private _options: BehaviorSubject<any[]>;\n\n transform(options: any, field?: FormlyFieldConfig): Observable<FormlySelectOption[]> {\n if (!(options instanceof Observable)) {\n options = this.observableOf(options, field);\n } else {\n this.dispose();\n }\n\n return (options as Observable<any>).pipe(map((value) => this.transformOptions(value, field)));\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n private transformOptions(options: any[], field?: FormlyFieldConfig): FormlySelectOption[] {\n const to = this.transformSelectProps(field);\n\n const opts: FormlySelectOption[] = [];\n const groups: { [id: string]: number } = {};\n\n options?.forEach((option) => {\n const o = this.transformOption(option, to);\n if (o.group) {\n const id = groups[o.label];\n if (id === undefined) {\n groups[o.label] = opts.push(o) - 1;\n } else {\n o.group.forEach((o) => opts[id].group.push(o));\n }\n } else {\n opts.push(o);\n }\n });\n\n return opts;\n }\n\n private transformOption(option: any, props: ITransformOption): FormlySelectOption {\n const group = props.groupProp(option);\n if (Array.isArray(group)) {\n return {\n label: props.labelProp(option),\n group: group.map((opt) => this.transformOption(opt, props)),\n };\n }\n\n option = {\n label: props.labelProp(option),\n value: props.valueProp(option),\n disabled: !!props.disabledProp(option),\n };\n\n if (group) {\n return { label: group, group: [option] };\n }\n\n return option;\n }\n\n private transformSelectProps(field?: FormlyFieldConfig): ITransformOption {\n const props = field?.props || field?.templateOptions || {};\n const selectPropFn = (prop: any) => (typeof prop === 'function' ? prop : (o: any) => o[prop]);\n\n return {\n groupProp: selectPropFn(props.groupProp || 'group'),\n labelProp: selectPropFn(props.labelProp || 'label'),\n valueProp: selectPropFn(props.valueProp || 'value'),\n disabledProp: selectPropFn(props.disabledProp || 'disabled'),\n };\n }\n\n private dispose() {\n if (this._options) {\n this._options.complete();\n this._options = null;\n }\n\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n\n private observableOf(options: any, f?: FormlyFieldConfig) {\n this.dispose();\n if (f && f.options && f.options.fieldChanges) {\n this._subscription = f.options.fieldChanges\n .pipe(\n filter(({ property, type, field }) => {\n return (\n type === 'expressionChanges' &&\n (property.indexOf('templateOptions.options') === 0 || property.indexOf('props.options') === 0) &&\n field === f &&\n Array.isArray(field.props.options) &&\n !!this._options\n );\n }),\n tap(() => this._options.next(f.props.options as any)),\n )\n .subscribe();\n }\n\n this._options = new BehaviorSubject(options);\n return this._options.asObservable();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormlySelectOptionsPipe } from './select-options.pipe';\n\n@NgModule({\n declarations: [FormlySelectOptionsPipe],\n exports: [FormlySelectOptionsPipe],\n})\nexport class FormlySelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -220,7 +220,7 @@ function observe(o, paths, setFn) {
220
220
  if (state.onChange.indexOf(setFn) === -1) {
221
221
  state.onChange.push(setFn);
222
222
  setFn({ currentValue: state.value, firstChange: true });
223
- if (state.onChange.length >= 1) {
223
+ if (state.onChange.length >= 1 && isObject(target)) {
224
224
  const { enumerable } = Object.getOwnPropertyDescriptor(target, key) || { enumerable: true };
225
225
  Object.defineProperty(target, key, {
226
226
  enumerable,
@@ -892,7 +892,7 @@ class FormlyField {
892
892
  }
893
893
  const subscribes = [
894
894
  observeDeep(field, ['props'], () => field.options.detectChanges(field)),
895
- observeDeep(field.options, ['formState'], () => field.options.detectChanges(field)),
895
+ observeDeep(field, ['options', 'formState'], () => field.options.detectChanges(field)),
896
896
  ];
897
897
  for (const key of Object.keys(field._expressions || {})) {
898
898
  const expressionObserver = observe(field, ['_expressions', key], ({ currentValue, previousValue }) => {
@@ -1685,28 +1685,35 @@ class FieldExpressionExtension {
1685
1685
  }
1686
1686
  }
1687
1687
  evalExpr(field, prop, value) {
1688
- try {
1689
- let target = field;
1690
- const paths = this._evalExpressionPath(field, prop);
1691
- const lastIndex = paths.length - 1;
1692
- for (let i = 0; i < lastIndex; i++) {
1693
- target = target[paths[i]];
1694
- }
1695
- target[paths[lastIndex]] = value;
1696
- }
1697
- catch (error) {
1698
- error.message = `[Formly Error] [Expression "${prop}"] ${error.message}`;
1699
- throw error;
1700
- }
1701
- if (['templateOptions.disabled', 'props.disabled'].includes(prop) && hasKey(field)) {
1702
- this.changeDisabledState(field, value);
1703
- }
1704
1688
  if (prop.indexOf('model.') === 0) {
1705
- const key = prop.replace(/^model\./, ''), control = field?.key === key ? field.formControl : field.form.get(key);
1689
+ const key = prop.replace(/^model\./, ''), parent = field.fieldGroup ? field : field.parent;
1690
+ let control = field?.key === key ? field.formControl : field.form.get(key);
1691
+ if (!control && field.get(key)) {
1692
+ control = field.get(key).formControl;
1693
+ }
1694
+ assignFieldValue({ key, parent, model: field.model }, value);
1706
1695
  if (control && !(isNil(control.value) && isNil(value)) && control.value !== value) {
1707
1696
  control.patchValue(value);
1708
1697
  }
1709
1698
  }
1699
+ else {
1700
+ try {
1701
+ let target = field;
1702
+ const paths = this._evalExpressionPath(field, prop);
1703
+ const lastIndex = paths.length - 1;
1704
+ for (let i = 0; i < lastIndex; i++) {
1705
+ target = target[paths[i]];
1706
+ }
1707
+ target[paths[lastIndex]] = value;
1708
+ }
1709
+ catch (error) {
1710
+ error.message = `[Formly Error] [Expression "${prop}"] ${error.message}`;
1711
+ throw error;
1712
+ }
1713
+ if (['templateOptions.disabled', 'props.disabled'].includes(prop) && hasKey(field)) {
1714
+ this.changeDisabledState(field, value);
1715
+ }
1716
+ }
1710
1717
  this.emitExpressionChanges(field, prop, value);
1711
1718
  }
1712
1719
  emitExpressionChanges(field, property, value) {
@@ -1919,6 +1926,9 @@ class FieldFormExtension {
1919
1926
  }
1920
1927
  addFormControl(field) {
1921
1928
  let control = findControl(field);
1929
+ if (field.fieldArray) {
1930
+ return;
1931
+ }
1922
1932
  if (!control) {
1923
1933
  const controlOptions = { updateOn: field.modelOptions.updateOn };
1924
1934
  if (field.fieldGroup) {
@@ -1926,7 +1936,7 @@ class FieldFormExtension {
1926
1936
  }
1927
1937
  else {
1928
1938
  const value = hasKey(field) ? getFieldValue(field) : field.defaultValue;
1929
- control = new FormControl({ value, disabled: false }, { ...controlOptions, initialValueIsDefault: true });
1939
+ control = new FormControl({ value, disabled: !!field.props.disabled }, { ...controlOptions, initialValueIsDefault: true });
1930
1940
  }
1931
1941
  }
1932
1942
  registerControl(field, control);