@stemy/ngx-dynamic-form 19.1.13 → 19.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/fesm2022/stemy-ngx-dynamic-form-ui-nebular.mjs +4 -4
  2. package/fesm2022/stemy-ngx-dynamic-form-ui-nebular.mjs.map +1 -1
  3. package/fesm2022/stemy-ngx-dynamic-form.mjs +859 -1662
  4. package/fesm2022/stemy-ngx-dynamic-form.mjs.map +1 -1
  5. package/ngx-dynamic-form/common-types.d.ts +109 -26
  6. package/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +21 -0
  7. package/ngx-dynamic-form/components/dynamic-form-array/dynamic-form-array.component.d.ts +9 -0
  8. package/ngx-dynamic-form/components/dynamic-form-chips/dynamic-form-chips.component.d.ts +7 -0
  9. package/ngx-dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +6 -0
  10. package/ngx-dynamic-form/components/dynamic-form-fieldset/dynamic-form-fieldset.component.d.ts +7 -0
  11. package/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.d.ts +6 -0
  12. package/ngx-dynamic-form/components/dynamic-form-upload/dynamic-form-upload.component.d.ts +7 -0
  13. package/ngx-dynamic-form/directives/async-submit.directive.d.ts +17 -23
  14. package/ngx-dynamic-form/ngx-dynamic-form.imports.d.ts +5 -9
  15. package/ngx-dynamic-form/ngx-dynamic-form.module.d.ts +13 -11
  16. package/ngx-dynamic-form/services/dynamic-form-builder.service.d.ts +27 -0
  17. package/ngx-dynamic-form/services/dynamic-form.service.d.ts +28 -46
  18. package/ngx-dynamic-form/utils/customizer.d.ts +5 -12
  19. package/ngx-dynamic-form/utils/decorators.d.ts +10 -0
  20. package/ngx-dynamic-form/utils/misc.d.ts +2 -4
  21. package/ngx-dynamic-form/utils/validation.d.ts +13 -0
  22. package/package.json +21 -16
  23. package/public_api.d.ts +13 -18
  24. package/ui-nebular/index.d.ts +1 -5
  25. package/common-types.d.ts +0 -37
  26. package/components/base/dynamic-base-form-array.component.d.ts +0 -38
  27. package/components/base/dynamic-base-form-control-container.component.d.ts +0 -39
  28. package/components/base/dynamic-base-form-control.component.d.ts +0 -26
  29. package/components/base/dynamic-base-form-group.component.d.ts +0 -25
  30. package/components/base/dynamic-base-form.component.d.ts +0 -46
  31. package/components/base/dynamic-base-select.component.d.ts +0 -15
  32. package/directives/async-submit.directive.d.ts +0 -31
  33. package/esm2020/ngx-dynamic-form/common-types.mjs +0 -2
  34. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-array.component.mjs +0 -104
  35. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.mjs +0 -127
  36. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control.component.mjs +0 -57
  37. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-group.component.mjs +0 -75
  38. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form.component.mjs +0 -182
  39. package/esm2020/ngx-dynamic-form/components/base/dynamic-base-select.component.mjs +0 -66
  40. package/esm2020/ngx-dynamic-form/directives/async-submit.directive.mjs +0 -116
  41. package/esm2020/ngx-dynamic-form/ngx-dynamic-form.imports.mjs +0 -26
  42. package/esm2020/ngx-dynamic-form/ngx-dynamic-form.module.mjs +0 -116
  43. package/esm2020/ngx-dynamic-form/services/dynamic-form.service.mjs +0 -615
  44. package/esm2020/ngx-dynamic-form/utils/creators.mjs +0 -67
  45. package/esm2020/ngx-dynamic-form/utils/customizer.mjs +0 -28
  46. package/esm2020/ngx-dynamic-form/utils/dynamic-editor.model.mjs +0 -14
  47. package/esm2020/ngx-dynamic-form/utils/dynamic-form-array.model.mjs +0 -128
  48. package/esm2020/ngx-dynamic-form/utils/dynamic-form-group.model.mjs +0 -26
  49. package/esm2020/ngx-dynamic-form/utils/dynamic-select.model.mjs +0 -59
  50. package/esm2020/ngx-dynamic-form/utils/form-select-subject.mjs +0 -26
  51. package/esm2020/ngx-dynamic-form/utils/form-subject.mjs +0 -29
  52. package/esm2020/ngx-dynamic-form/utils/misc.mjs +0 -47
  53. package/esm2020/ngx-dynamic-form/utils/validation-errors.mjs +0 -22
  54. package/esm2020/ngx-dynamic-form/utils/validators.mjs +0 -56
  55. package/esm2020/public_api.mjs +0 -21
  56. package/esm2020/stemy-ngx-dynamic-form.mjs +0 -5
  57. package/fesm2015/stemy-ngx-dynamic-form.mjs +0 -1927
  58. package/fesm2015/stemy-ngx-dynamic-form.mjs.map +0 -1
  59. package/fesm2020/stemy-ngx-dynamic-form.mjs +0 -1893
  60. package/fesm2020/stemy-ngx-dynamic-form.mjs.map +0 -1
  61. package/fesm2022/stemy-ngx-dynamic-form-src-ngx-dynamic-form-nebular.mjs +0 -50
  62. package/fesm2022/stemy-ngx-dynamic-form-src-ngx-dynamic-form-nebular.mjs.map +0 -1
  63. package/imports.d.ts +0 -12
  64. package/ngx-dynamic-form/components/base/dynamic-base-form-array.component.d.ts +0 -38
  65. package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +0 -39
  66. package/ngx-dynamic-form/components/base/dynamic-base-form-control.component.d.ts +0 -26
  67. package/ngx-dynamic-form/components/base/dynamic-base-form-group.component.d.ts +0 -25
  68. package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +0 -46
  69. package/ngx-dynamic-form/components/base/dynamic-base-select.component.d.ts +0 -15
  70. package/ngx-dynamic-form/services/dynamic-form-layout.service.d.ts +0 -7
  71. package/ngx-dynamic-form/utils/creators.d.ts +0 -18
  72. package/ngx-dynamic-form/utils/dynamic-editor.model.d.ts +0 -11
  73. package/ngx-dynamic-form/utils/dynamic-form-array.model.d.ts +0 -69
  74. package/ngx-dynamic-form/utils/dynamic-form-group.model.d.ts +0 -14
  75. package/ngx-dynamic-form/utils/dynamic-select.model.d.ts +0 -39
  76. package/ngx-dynamic-form/utils/form-select-subject.d.ts +0 -6
  77. package/ngx-dynamic-form/utils/form-subject.d.ts +0 -10
  78. package/ngx-dynamic-form/utils/validators.d.ts +0 -8
  79. package/ngx-dynamic-form.imports.d.ts +0 -12
  80. package/ngx-dynamic-form.module.d.ts +0 -21
  81. package/services/dynamic-form.service.d.ts +0 -61
  82. package/src/ngx-dynamic-form/nebular/imports.d.ts +0 -4
  83. package/src/ngx-dynamic-form/nebular/index.d.ts +0 -5
  84. package/src/ngx-dynamic-form/nebular/ngx-dynamic-form.nebular.module.d.ts +0 -9
  85. package/src/ngx-dynamic-form/nebular/public_api.d.ts +0 -1
  86. package/stemy-ngx-dynamic-form.d.ts +0 -5
  87. package/ui-nebular/public_api.d.ts +0 -1
  88. package/utils/creators.d.ts +0 -18
  89. package/utils/customizer.d.ts +0 -14
  90. package/utils/dynamic-editor.model.d.ts +0 -11
  91. package/utils/dynamic-form-array.model.d.ts +0 -69
  92. package/utils/dynamic-form-group.model.d.ts +0 -14
  93. package/utils/dynamic-select.model.d.ts +0 -39
  94. package/utils/form-select-subject.d.ts +0 -6
  95. package/utils/form-subject.d.ts +0 -10
  96. package/utils/misc.d.ts +0 -11
  97. package/utils/validation-errors.d.ts +0 -11
  98. package/utils/validators.d.ts +0 -8
package/public_api.d.ts CHANGED
@@ -1,21 +1,16 @@
1
- export { IDynamicFormEvent, IDynamicForm, FormControlSerializer, FormModelCustomizer, ModelForSchemaOptions, DynamicFormState, DynamicFormUpdateOn, DynamicFormInitControl, AsyncSubmitMethod, GetFormControlComponentType, IDynamicFormModuleConfig, } from "./ngx-dynamic-form/common-types";
2
- export { createFormCheckbox, createFormDate, createFormEditor, createFormArray, createFormGroup, createFormInput, createFormSelect, createFormTextarea, createFormFile, } from "./ngx-dynamic-form/utils/creators";
3
- export { IFormComponentCustomizer, getFormComponent, IFormModelCustomizer, customizeFormModel } from "./ngx-dynamic-form/utils/customizer";
4
- export { replaceSpecialChars, mergeFormModels, collectPathAble, getDynamicPath, MIN_INPUT_NUM, MAX_INPUT_NUM, EDITOR_FORMATS } from "./ngx-dynamic-form/utils/misc";
5
- export { validateJSON, validateRequiredTranslation, validatePhone, validateItemsMinLength, validateItemsMaxLength, validateItemsMinValue, validateItemsMaxValue } from "./ngx-dynamic-form/utils/validators";
6
- export { DynamicEditorModelConfig, DynamicEditorModel } from "./ngx-dynamic-form/utils/dynamic-editor.model";
7
- export { SaveTabFunc, RestoreTabFunc, TabLabelFunc, DynamicFormArrayGroupModel, DynamicFormArrayModelConfig, DynamicFormArrayModel } from "./ngx-dynamic-form/utils/dynamic-form-array.model";
8
- export { DynamicFormFieldSet, DynamicFormFieldSets, DynamicFormGroupModelConfig, DynamicFormGroupModel } from "./ngx-dynamic-form/utils/dynamic-form-group.model";
9
- export { DynamicFormOptionConfig, DynamicFormOption, DynamicFormOptionGroup, OptionClassesFunc, DynamicSelectModelConfig, DynamicSelectModel } from "./ngx-dynamic-form/utils/dynamic-select.model";
10
- export { FormSelectSubject } from "./ngx-dynamic-form/utils/form-select-subject";
11
- export { FormSubject } from "./ngx-dynamic-form/utils/form-subject";
1
+ export { FORM_ROOT_KEY, FormBuilderOptions, FormFieldProps, FormBaseFieldConfig, FormFieldSerializer, FormHookFn, FormHookConfig, FormFieldConfig, FormFieldType, FormSerializeResult, FormSelectOption, FormSelectOptions, IDynamicForm, ValidationMessageFn, ValidatorFn, ValidatorExpression, Validators, AsyncValidatorFn, AsyncValidatorExpression, AsyncValidators, FormFieldCustom, FormFieldData, FormInputData, FormSelectData, FormUploadData, FormGroupData, FormArrayData, FormFieldCustomizer, ConfigForSchemaOptions, DynamicFormState, DynamicFormUpdateOn, AsyncSubmitMethod, IDynamicFormModuleConfig, } from "./ngx-dynamic-form/common-types";
2
+ export { IFormFieldCustomizer, customizeFormField } from "./ngx-dynamic-form/utils/customizer";
3
+ export { FormSerializable, FormInput, FormSelect, FormUpload, FormFile, FormGroup, FormModel } from "./ngx-dynamic-form/utils/decorators";
4
+ export { validationMessage, jsonValidation, requiredValidation, translationValidation, phoneValidation, emailValidation, minLengthValidation, maxLengthValidation, minValueValidation, maxValueValidation } from "./ngx-dynamic-form/utils/validation";
5
+ export { replaceSpecialChars, mergeFormFields, MIN_INPUT_NUM, MAX_INPUT_NUM, EDITOR_FORMATS } from "./ngx-dynamic-form/utils/misc";
6
+ export { DynamicFormBuilderService } from "./ngx-dynamic-form/services/dynamic-form-builder.service";
12
7
  export { DynamicFormService } from "./ngx-dynamic-form/services/dynamic-form.service";
13
8
  export { AsyncSubmitDirective } from "./ngx-dynamic-form/directives/async-submit.directive";
14
- export { DynamicBaseFormComponent } from "./ngx-dynamic-form/components/base/dynamic-base-form.component";
15
- export { DynamicBaseFormArrayComponent } from "./ngx-dynamic-form/components/base/dynamic-base-form-array.component";
16
- export { DynamicBaseFormControlComponent } from "./ngx-dynamic-form/components/base/dynamic-base-form-control.component";
17
- export { DynamicBaseFormControlContainerComponent } from "./ngx-dynamic-form/components/base/dynamic-base-form-control-container.component";
18
- export { DynamicBaseFormGroupComponent } from "./ngx-dynamic-form/components/base/dynamic-base-form-group.component";
19
- export { DynamicBaseSelectComponent } from "./ngx-dynamic-form/components/base/dynamic-base-select.component";
9
+ export { DynamicFormComponent } from "./ngx-dynamic-form/components/dynamic-form/dynamic-form.component";
10
+ export { DynamicFormArrayComponent } from "./ngx-dynamic-form/components/dynamic-form-array/dynamic-form-array.component";
11
+ export { DynamicFormChipsComponent } from "./ngx-dynamic-form/components/dynamic-form-chips/dynamic-form-chips.component";
12
+ export { DynamicFormFieldComponent } from "./ngx-dynamic-form/components/dynamic-form-field/dynamic-form-field.component";
13
+ export { DynamicFormFieldsetComponent } from "./ngx-dynamic-form/components/dynamic-form-fieldset/dynamic-form-fieldset.component";
14
+ export { DynamicFormGroupComponent } from "./ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component";
15
+ export { DynamicFormUploadComponent } from "./ngx-dynamic-form/components/dynamic-form-upload/dynamic-form-upload.component";
20
16
  export { NgxDynamicFormModule } from "./ngx-dynamic-form/ngx-dynamic-form.module";
21
- export { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX, DYNAMIC_FORM_CONTROL_TYPE_CHECKBOX_GROUP, DYNAMIC_FORM_CONTROL_TYPE_FILE_UPLOAD, DYNAMIC_FORM_CONTROL_TYPE_GROUP, DYNAMIC_FORM_CONTROL_TYPE_INPUT, DYNAMIC_FORM_CONTROL_TYPE_DATEPICKER, DYNAMIC_FORM_CONTROL_TYPE_RADIO_GROUP, DYNAMIC_FORM_CONTROL_TYPE_SELECT, DYNAMIC_FORM_CONTROL_TYPE_TEXTAREA, DYNAMIC_FORM_CONTROL_TYPE_EDITOR, DynamicTemplateDirective, DynamicListDirective, DynamicFormModel, DynamicFormControlMapFn, DynamicFormsCoreModule, DynamicCheckboxModelConfig, DynamicCheckboxModel, DynamicCheckboxGroupModel, DynamicFileUploadModelConfig, DynamicFileUploadModel, DynamicInputModelConfig, DynamicInputModel, DynamicDatePickerModelConfig, DynamicDatePickerModel, DynamicRadioGroupModelConfig, DynamicRadioGroupModel, DynamicTextAreaModelConfig, DynamicTextAreaModel, DynamicFormControlComponent, DynamicFormControlModelConfig, DynamicFormControlModel, } from "@ng-dynamic-forms/core";
@@ -1,5 +1 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@stemy/ngx-dynamic-form/ui-nebular" />
5
- export * from './public_api';
1
+ export { NgxDynamicFormNebularModule } from "./ngx-dynamic-form.nebular.module";
package/common-types.d.ts DELETED
@@ -1,37 +0,0 @@
1
- import { ChangeDetectorRef, EventEmitter, Injector, Type } from "@angular/core";
2
- import { AbstractControl } from "@angular/forms";
3
- import { DynamicFormControl, DynamicFormControlComponent, DynamicFormControlEvent, DynamicFormControlMapFn, DynamicFormControlModel, DynamicFormControlModelConfig, DynamicFormValueControlModel, DynamicFormComponent } from "@ng-dynamic-forms/core";
4
- import { IAsyncMessage, IOpenApiSchema, IOpenApiSchemaProperty } from "@stemy/ngx-utils";
5
- export type DynamicFormState = "VALID" | "INVALID" | "PENDING" | "DISABLED" | "LOADING";
6
- export type DynamicFormUpdateOn = "change" | "blur" | "submit";
7
- export interface IDynamicFormEvent extends DynamicFormControlEvent {
8
- form: IDynamicForm;
9
- }
10
- export interface IDynamicForm extends DynamicFormComponent {
11
- status?: DynamicFormState;
12
- onValueChange?: EventEmitter<IDynamicFormEvent>;
13
- onStatusChange?: EventEmitter<IDynamicForm>;
14
- onSubmit?: EventEmitter<IDynamicForm>;
15
- }
16
- export declare interface ModelType extends Function {
17
- new (config: DynamicFormControlModelConfig): DynamicFormControlModel;
18
- }
19
- export type PromiseOrNot<T> = Promise<T> | T;
20
- export type FormControlSerializer = (model: DynamicFormValueControlModel<any>, control: AbstractControl) => Promise<any>;
21
- export type FormModelCustomizer = (property: IOpenApiSchemaProperty, schema: IOpenApiSchema, model: DynamicFormControlModel, config: DynamicFormControlModelConfig, injector: Injector) => PromiseOrNot<DynamicFormControlModel | DynamicFormControlModel[]>;
22
- export interface ModelForSchemaOptions {
23
- labelPrefix?: string;
24
- customizer?: FormModelCustomizer;
25
- }
26
- export interface ModelForSchemaWrapOptions extends Omit<ModelForSchemaOptions, "customizer"> {
27
- schema: IOpenApiSchema;
28
- customizer?: (property: IOpenApiSchemaProperty, options: ModelForSchemaWrapOptions, modelType: ModelType, config: DynamicFormControlModelConfig, path: string) => Promise<DynamicFormControlModel[]>;
29
- }
30
- export interface DynamicFormInitControl extends DynamicFormControl {
31
- initialize(cdr?: ChangeDetectorRef): void;
32
- }
33
- export declare type AsyncSubmitMethod = (form: IDynamicForm, context?: any) => Promise<IAsyncMessage>;
34
- export type GetFormControlComponentType = (model: DynamicFormControlModel, injector: Injector) => Type<DynamicFormControlComponent>;
35
- export interface IDynamicFormModuleConfig {
36
- controlProvider?: (injector: Injector) => DynamicFormControlMapFn;
37
- }
@@ -1,38 +0,0 @@
1
- import { ChangeDetectorRef, EventEmitter, Injector, OnDestroy, QueryList } from "@angular/core";
2
- import { FormGroup } from "@angular/forms";
3
- import { Subscription } from "rxjs";
4
- import { DynamicFormArrayComponent, DynamicFormControlCustomEvent, DynamicFormControlLayout, DynamicFormControlLayoutContext, DynamicFormControlLayoutPlace, DynamicFormControlModel, DynamicFormLayout, DynamicFormLayoutService, DynamicFormValidationService, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
5
- import { DynamicFormArrayGroupModel, DynamicFormArrayModel } from "../../utils/dynamic-form-array.model";
6
- import { DynamicFormInitControl } from "../../common-types";
7
- import { DynamicBaseFormComponent } from "./dynamic-base-form.component";
8
- import { DynamicBaseFormControlContainerComponent } from "./dynamic-base-form-control-container.component";
9
- import * as i0 from "@angular/core";
10
- export declare class DynamicBaseFormArrayComponent extends DynamicFormArrayComponent implements DynamicFormInitControl, OnDestroy {
11
- readonly form: DynamicBaseFormComponent;
12
- readonly injector: Injector;
13
- readonly cdr: ChangeDetectorRef;
14
- formLayout: DynamicFormLayout;
15
- group: FormGroup;
16
- layout: DynamicFormControlLayout;
17
- model: DynamicFormArrayModel;
18
- templates: QueryList<DynamicTemplateDirective> | undefined;
19
- blur: EventEmitter<any>;
20
- change: EventEmitter<any>;
21
- customEvent: EventEmitter<DynamicFormControlCustomEvent>;
22
- focus: EventEmitter<any>;
23
- components: QueryList<DynamicBaseFormControlContainerComponent>;
24
- get useTabs(): boolean;
25
- protected subscription: Subscription;
26
- constructor(layoutService: DynamicFormLayoutService, validationService: DynamicFormValidationService, form: DynamicBaseFormComponent, injector: Injector, cdr: ChangeDetectorRef);
27
- initialize(cdr: ChangeDetectorRef): void;
28
- ngOnDestroy(): void;
29
- saveTab(index: number): void;
30
- restoreTab(): number;
31
- getTabLabel(index: number, model: DynamicFormArrayGroupModel): string;
32
- getClass(context: DynamicFormControlLayoutContext, place: DynamicFormControlLayoutPlace, model?: DynamicFormControlModel): string;
33
- protected getModelClass(model?: DynamicFormControlModel): string;
34
- protected getAdditionalClass(model?: DynamicFormControlModel): string;
35
- protected updateGroups(filteredGroups: ReadonlyArray<DynamicFormArrayGroupModel>): void;
36
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicBaseFormArrayComponent, never>;
37
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicBaseFormArrayComponent, "dynamic-base-form-array", never, { "formLayout": { "alias": "formLayout"; "required": false; }; "group": { "alias": "group"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "model": { "alias": "model"; "required": false; }; "templates": { "alias": "templates"; "required": false; }; }, { "blur": "blur"; "change": "change"; "customEvent": "customEvent"; "focus": "focus"; }, never, never, false, never>;
38
- }
@@ -1,39 +0,0 @@
1
- import { ChangeDetectorRef, ComponentFactoryResolver, EventEmitter, Injector, QueryList, Type, ViewContainerRef } from "@angular/core";
2
- import { FormGroup } from "@angular/forms";
3
- import { Subscription } from "rxjs";
4
- import { DynamicFormComponentService, DynamicFormControl, DynamicFormControlContainerComponent, DynamicFormControlEvent, DynamicFormControlModel, DynamicFormLayout, DynamicFormLayoutService, DynamicFormRelationService, DynamicFormValidationService, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
5
- import { DynamicFormArrayGroupModel } from "../../utils/dynamic-form-array.model";
6
- import { DynamicFormService } from "../../services/dynamic-form.service";
7
- import { DynamicBaseFormComponent } from "./dynamic-base-form.component";
8
- import * as i0 from "@angular/core";
9
- export declare class DynamicBaseFormControlContainerComponent extends DynamicFormControlContainerComponent {
10
- readonly form: DynamicBaseFormComponent;
11
- readonly cdr: ChangeDetectorRef;
12
- readonly injector: Injector;
13
- contentTemplateList: QueryList<DynamicTemplateDirective>;
14
- klass: any;
15
- context: DynamicFormArrayGroupModel | null;
16
- group: FormGroup;
17
- hostClass: string[];
18
- inputTemplateList: QueryList<DynamicTemplateDirective>;
19
- layout: DynamicFormLayout;
20
- model: DynamicFormControlModel;
21
- blur: EventEmitter<DynamicFormControlEvent>;
22
- change: EventEmitter<DynamicFormControlEvent>;
23
- focus: EventEmitter<DynamicFormControlEvent>;
24
- componentViewContainerRef: ViewContainerRef;
25
- get componentType(): Type<DynamicFormControl> | null;
26
- get startTemplate(): DynamicTemplateDirective;
27
- get endTemplate(): DynamicTemplateDirective;
28
- get formService(): DynamicFormService;
29
- protected onDetectChanges: Subscription;
30
- constructor(form: DynamicBaseFormComponent, cdr: ChangeDetectorRef, injector: Injector, cfr: ComponentFactoryResolver, layoutService: DynamicFormLayoutService, validationService: DynamicFormValidationService, componentService: DynamicFormComponentService, relationService: DynamicFormRelationService);
31
- ngOnInit(): void;
32
- ngOnDestroy(): void;
33
- getLabel(): string;
34
- getLabelIcon(): string;
35
- clickLabel(): void;
36
- protected createFormControlComponent(): void;
37
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicBaseFormControlContainerComponent, never>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicBaseFormControlContainerComponent, "dynamic-base-form-control", never, { "context": { "alias": "context"; "required": false; }; "group": { "alias": "group"; "required": false; }; "hostClass": { "alias": "hostClass"; "required": false; }; "inputTemplateList": { "alias": "templates"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "model": { "alias": "model"; "required": false; }; }, { "blur": "blur"; "change": "change"; "focus": "focus"; }, ["contentTemplateList"], never, false, never>;
39
- }
@@ -1,26 +0,0 @@
1
- import { AfterViewInit, ChangeDetectorRef, EventEmitter, Injector, OnDestroy } from "@angular/core";
2
- import { FormGroup } from "@angular/forms";
3
- import { Subscription } from "rxjs";
4
- import { DynamicFormControlComponent, DynamicFormControlLayout, DynamicFormControlModel, DynamicFormLayout, DynamicFormLayoutService, DynamicFormValidationService } from "@ng-dynamic-forms/core";
5
- import { DynamicBaseFormComponent } from "./dynamic-base-form.component";
6
- import * as i0 from "@angular/core";
7
- export declare class DynamicBaseFormControlComponent<T extends DynamicFormControlModel> extends DynamicFormControlComponent implements AfterViewInit, OnDestroy {
8
- readonly form: DynamicBaseFormComponent;
9
- readonly injector: Injector;
10
- readonly cdr: ChangeDetectorRef;
11
- formLayout: DynamicFormLayout;
12
- group: FormGroup;
13
- layout: DynamicFormControlLayout;
14
- model: T;
15
- blur: EventEmitter<any>;
16
- change: EventEmitter<any>;
17
- focus: EventEmitter<any>;
18
- protected subscription: Subscription;
19
- constructor(layoutService: DynamicFormLayoutService, validationService: DynamicFormValidationService, form: DynamicBaseFormComponent, injector: Injector, cdr: ChangeDetectorRef);
20
- ngAfterViewInit(): void;
21
- ngOnDestroy(): void;
22
- submit(): void;
23
- protected onValueChanged(value: any): void;
24
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicBaseFormControlComponent<any>, [null, null, { optional: true; }, null, null]>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicBaseFormControlComponent<any>, "dynamic-base-form-control", never, { "formLayout": { "alias": "formLayout"; "required": false; }; "group": { "alias": "group"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "model": { "alias": "model"; "required": false; }; }, { "blur": "blur"; "change": "change"; "focus": "focus"; }, never, never, false, never>;
26
- }
@@ -1,25 +0,0 @@
1
- import { EventEmitter, QueryList } from "@angular/core";
2
- import { FormGroup } from "@angular/forms";
3
- import { DynamicFormControlContainerComponent, DynamicFormControlCustomEvent, DynamicFormControlLayout, DynamicFormControlLayoutContext, DynamicFormControlLayoutPlace, DynamicFormControlModel, DynamicFormGroupComponent, DynamicFormLayout, DynamicFormLayoutService, DynamicFormValidationService, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
4
- import { DynamicFormGroupModel } from "../../utils/dynamic-form-group.model";
5
- import * as i0 from "@angular/core";
6
- export declare class DynamicBaseFormGroupComponent extends DynamicFormGroupComponent {
7
- protected layoutService: DynamicFormLayoutService;
8
- protected validationService: DynamicFormValidationService;
9
- formLayout: DynamicFormLayout;
10
- group: FormGroup;
11
- layout: DynamicFormControlLayout;
12
- model: DynamicFormGroupModel;
13
- templates: QueryList<DynamicTemplateDirective> | DynamicTemplateDirective[] | undefined;
14
- blur: EventEmitter<any>;
15
- change: EventEmitter<any>;
16
- customEvent: EventEmitter<DynamicFormControlCustomEvent>;
17
- focus: EventEmitter<any>;
18
- components: QueryList<DynamicFormControlContainerComponent>;
19
- constructor(layoutService: DynamicFormLayoutService, validationService: DynamicFormValidationService);
20
- getClass(context: DynamicFormControlLayoutContext, place: DynamicFormControlLayoutPlace, model?: DynamicFormControlModel): string;
21
- protected getModelClass(model?: DynamicFormControlModel): string;
22
- protected getAdditionalClass(model?: DynamicFormControlModel): string;
23
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicBaseFormGroupComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicBaseFormGroupComponent, "dynamic-base-form-group", never, { "formLayout": { "alias": "formLayout"; "required": false; }; "group": { "alias": "group"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "model": { "alias": "model"; "required": false; }; "templates": { "alias": "templates"; "required": false; }; }, { "blur": "blur"; "change": "change"; "customEvent": "customEvent"; "focus": "focus"; }, never, never, false, never>;
25
- }
@@ -1,46 +0,0 @@
1
- import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnChanges, QueryList, SimpleChanges } from "@angular/core";
2
- import { FormArray, FormGroup } from "@angular/forms";
3
- import { Subscription } from "rxjs";
4
- import { DynamicFormComponent, DynamicFormComponentService, DynamicFormControlEvent, DynamicFormControlModel, DynamicFormLayout, DynamicFormModel, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
5
- import { EventsService } from "@stemy/ngx-utils";
6
- import { DynamicFormState, GetFormControlComponentType, IDynamicForm, IDynamicFormEvent } from "../../common-types";
7
- import { DynamicFormGroupModel } from "../../utils/dynamic-form-group.model";
8
- import { DynamicFormArrayModel } from "../../utils/dynamic-form-array.model";
9
- import { DynamicFormService } from "../../services/dynamic-form.service";
10
- import * as i0 from "@angular/core";
11
- export declare class DynamicBaseFormComponent extends DynamicFormComponent implements OnChanges, AfterViewInit, IDynamicForm {
12
- readonly formService: DynamicFormService;
13
- readonly events: EventsService;
14
- group: FormGroup;
15
- model: DynamicFormModel;
16
- layout: DynamicFormLayout;
17
- blur: EventEmitter<DynamicFormControlEvent>;
18
- change: EventEmitter<DynamicFormControlEvent>;
19
- focus: EventEmitter<DynamicFormControlEvent>;
20
- groupModel: DynamicFormGroupModel;
21
- labelPrefix: string;
22
- getComponentType: GetFormControlComponentType;
23
- contentTemplates: QueryList<DynamicTemplateDirective>;
24
- viewTemplates: QueryList<DynamicTemplateDirective>;
25
- get status(): DynamicFormState;
26
- readonly onValueChange: EventEmitter<IDynamicFormEvent>;
27
- readonly onStatusChange: EventEmitter<IDynamicForm>;
28
- readonly onSubmit: EventEmitter<IDynamicForm>;
29
- readonly onDetectChanges: EventEmitter<IDynamicForm>;
30
- protected subscription: Subscription;
31
- protected groupSubscription: Subscription;
32
- constructor(formService: DynamicFormService, events: EventsService, changeDetectorRef: ChangeDetectorRef, componentService: DynamicFormComponentService);
33
- submit(): void;
34
- ngOnChanges(changes: SimpleChanges): void;
35
- ngAfterViewInit(): void;
36
- ngOnDestroy(): void;
37
- detectChanges(): void;
38
- insertFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void;
39
- cloneFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void;
40
- removeFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void;
41
- moveFormArrayGroup(index: number, step: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void;
42
- clearFormArray(formArray: FormArray, formArrayModel: DynamicFormArrayModel): void;
43
- getClass(model?: DynamicFormControlModel): string;
44
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicBaseFormComponent, never>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicBaseFormComponent, "dynamic-base-form", never, { "group": { "alias": "group"; "required": false; }; "model": { "alias": "model"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "groupModel": { "alias": "groupModel"; "required": false; }; "labelPrefix": { "alias": "labelPrefix"; "required": false; }; "getComponentType": { "alias": "getComponentType"; "required": false; }; }, { "blur": "blur"; "change": "change"; "focus": "focus"; "onValueChange": "onValueChange"; "onStatusChange": "onStatusChange"; "onSubmit": "onSubmit"; "onDetectChanges": "onDetectChanges"; }, ["contentTemplates"], never, false, never>;
46
- }
@@ -1,15 +0,0 @@
1
- import { OnDestroy, OnInit } from "@angular/core";
2
- import { BehaviorSubject } from "rxjs";
3
- import { DynamicBaseFormControlComponent } from "./dynamic-base-form-control.component";
4
- import { DynamicFormOption, DynamicFormOptionGroup, DynamicSelectModel } from "../../utils/dynamic-select.model";
5
- import * as i0 from "@angular/core";
6
- export declare class DynamicBaseSelectComponent extends DynamicBaseFormControlComponent<DynamicSelectModel<any>> implements OnInit, OnDestroy {
7
- groups$: BehaviorSubject<DynamicFormOptionGroup<any>[]>;
8
- hasOptions: boolean;
9
- ngOnInit(): void;
10
- ngOnDestroy(): void;
11
- isSelected(option: DynamicFormOption<any>): boolean;
12
- selectToggle(option: DynamicFormOption<any>, state: boolean): void;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<DynamicBaseSelectComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<DynamicBaseSelectComponent, "dynamic-base-select", never, {}, {}, never, never, false, never>;
15
- }
@@ -1,31 +0,0 @@
1
- import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, Renderer2, SimpleChanges } from "@angular/core";
2
- import { Subscription } from "rxjs";
3
- import { IAsyncMessage, IToasterService } from "@stemy/ngx-utils";
4
- import { AsyncSubmitMethod, IDynamicForm } from "../common-types";
5
- import * as i0 from "@angular/core";
6
- export declare class AsyncSubmitDirective implements OnChanges, OnDestroy {
7
- private toaster;
8
- readonly cdr: ChangeDetectorRef;
9
- readonly zone: NgZone;
10
- readonly elem: ElementRef<HTMLElement>;
11
- readonly renderer: Renderer2;
12
- method: AsyncSubmitMethod;
13
- form: IDynamicForm;
14
- context: any;
15
- onSuccess: EventEmitter<IAsyncMessage>;
16
- onError: EventEmitter<IAsyncMessage>;
17
- protected loading: boolean;
18
- protected disabled: boolean;
19
- protected callback: Function;
20
- protected subscription: Subscription;
21
- get isDisabled(): boolean;
22
- set isDisabled(value: boolean);
23
- get isLoading(): boolean;
24
- constructor(toaster: IToasterService, cdr: ChangeDetectorRef, zone: NgZone, elem: ElementRef<HTMLElement>, renderer: Renderer2);
25
- ngOnChanges(changes: SimpleChanges): void;
26
- ngOnDestroy(): void;
27
- click(): void;
28
- callMethod(): void;
29
- static ɵfac: i0.ɵɵFactoryDeclaration<AsyncSubmitDirective, never>;
30
- static ɵdir: i0.ɵɵDirectiveDeclaration<AsyncSubmitDirective, "[async-submit]", ["async-submit"], { "method": { "alias": "async-submit"; "required": false; }; "form": { "alias": "form"; "required": false; }; "context": { "alias": "context"; "required": false; }; }, { "onSuccess": "onSuccess"; "onError": "onError"; }, never, never, false, never>;
31
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tbW9uLXR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbENvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbEV2ZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTWFwRm4sXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnLFxyXG4gICAgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbFxyXG59IGZyb20gXCJAbmctZHluYW1pYy1mb3Jtcy9jb3JlXCI7XHJcbmltcG9ydCB7SUFzeW5jTWVzc2FnZSwgSU9wZW5BcGlTY2hlbWEsIElPcGVuQXBpU2NoZW1hUHJvcGVydHl9IGZyb20gXCJAc3RlbXkvbmd4LXV0aWxzXCI7XHJcblxyXG4vLyAtLS0gQmFzaWMgZm9ybSBjb250cm9sIGludGVyZmFjZXMgLS0tXHJcblxyXG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybVN0YXRlID0gXCJWQUxJRFwiIHwgXCJJTlZBTElEXCIgfCBcIlBFTkRJTkdcIiB8IFwiRElTQUJMRURcIiB8IFwiTE9BRElOR1wiO1xyXG5leHBvcnQgdHlwZSBEeW5hbWljRm9ybVVwZGF0ZU9uID0gXCJjaGFuZ2VcIiB8IFwiYmx1clwiIHwgXCJzdWJtaXRcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtRXZlbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCB7XHJcbiAgICBmb3JtOiBJRHluYW1pY0Zvcm07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUR5bmFtaWNGb3JtIHtcclxuXHJcbiAgICByZWFkb25seSBncm91cDogRm9ybUdyb3VwO1xyXG5cclxuICAgIHN0YXR1czogRHluYW1pY0Zvcm1TdGF0ZTtcclxuXHJcbiAgICBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtRXZlbnQ+O1xyXG4gICAgb25TdGF0dXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+O1xyXG4gICAgb25TdWJtaXQ6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm0+O1xyXG5cclxuICAgIHZhbGlkYXRlKCk6IFByb21pc2U8YW55PjtcclxuICAgIHNlcmlhbGl6ZSh2YWxpZGF0ZT86IGJvb2xlYW4pOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBNb2RlbFR5cGUgZXh0ZW5kcyBGdW5jdGlvbiB7XHJcbiAgICBuZXcgKGNvbmZpZzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWxDb25maWcpOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvbWlzZU9yTm90PFQ+ID0gUHJvbWlzZTxUPiB8IFQ7XHJcbmV4cG9ydCB0eXBlIEZvcm1Db250cm9sU2VyaWFsaXplciA9IChtb2RlbDogRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbDxhbnk+LCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IFByb21pc2U8YW55PjtcclxuZXhwb3J0IHR5cGUgRm9ybU1vZGVsQ3VzdG9taXplciA9IChcclxuICAgIHByb3BlcnR5OiBJT3BlbkFwaVNjaGVtYVByb3BlcnR5LCBzY2hlbWE6IElPcGVuQXBpU2NoZW1hLFxyXG4gICAgbW9kZWw6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLCBjb25maWc6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnLCBpbmplY3RvcjogSW5qZWN0b3JcclxuKSA9PiBQcm9taXNlT3JOb3Q8RHluYW1pY0Zvcm1Db250cm9sTW9kZWwgfCBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbFtdPjtcclxuZXhwb3J0IHR5cGUgRm9ybU1vZGVsQ3VzdG9taXplcldyYXAgPSAoXHJcbiAgICBwcm9wZXJ0eTogSU9wZW5BcGlTY2hlbWFQcm9wZXJ0eSwgc2NoZW1hOiBJT3BlbkFwaVNjaGVtYSxcclxuICAgIG1vZGVsVHlwZTogTW9kZWxUeXBlLCBjb25maWc6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsQ29uZmlnXHJcbikgPT4gUHJvbWlzZTxEeW5hbWljRm9ybUNvbnRyb2xNb2RlbFtdPjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1Db250cm9sIHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICBjb25maWc/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbENvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEeW5hbWljRm9ybUluaXRDb250cm9sIGV4dGVuZHMgRHluYW1pY0Zvcm1Db250cm9sIHtcclxuICAgIGluaXRpYWxpemUoY2RyPzogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgZGVjbGFyZSB0eXBlIEFzeW5jU3VibWl0TWV0aG9kID0gKGZvcm06IElEeW5hbWljRm9ybSwgY29udGV4dD86IGFueSkgPT4gUHJvbWlzZTxJQXN5bmNNZXNzYWdlPjtcclxuXHJcbmV4cG9ydCB0eXBlIEdldEZvcm1Db250cm9sQ29tcG9uZW50VHlwZSA9IChtb2RlbDogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsIGluamVjdG9yOiBJbmplY3RvcikgPT4gVHlwZTxEeW5hbWljRm9ybUNvbnRyb2xDb21wb25lbnQ+O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJRHluYW1pY0Zvcm1Nb2R1bGVDb25maWcge1xyXG4gICAgY29udHJvbFByb3ZpZGVyPzogKGluamVjdG9yOiBJbmplY3RvcikgPT4gRHluYW1pY0Zvcm1Db250cm9sTWFwRm47XHJcbn1cclxuIl19
@@ -1,104 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewChildren } from "@angular/core";
2
- import { DynamicFormArrayComponent, DynamicFormGroupModel, DynamicFormValueControlModel } from "@ng-dynamic-forms/core";
3
- import { DynamicFormArrayModel } from "../../utils/dynamic-form-array.model";
4
- import { collectPathAble } from "../../utils/misc";
5
- import { DynamicBaseFormControlContainerComponent } from "./dynamic-base-form-control-container.component";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ng-dynamic-forms/core";
8
- import * as i2 from "./dynamic-base-form.component";
9
- export class DynamicBaseFormArrayComponent extends DynamicFormArrayComponent {
10
- constructor(layoutService, validationService, form, injector, cdr) {
11
- super(layoutService, validationService);
12
- this.form = form;
13
- this.injector = injector;
14
- this.cdr = cdr;
15
- this.blur = new EventEmitter();
16
- this.change = new EventEmitter();
17
- this.customEvent = new EventEmitter();
18
- this.focus = new EventEmitter();
19
- }
20
- get useTabs() {
21
- return this.model?.useTabs;
22
- }
23
- initialize(cdr) {
24
- this.subscription = this.model.filteredGroups.subscribe(filteredGroups => {
25
- this.updateGroups(filteredGroups);
26
- });
27
- this.model.initialize(this.array);
28
- }
29
- ngOnDestroy() {
30
- if (this.subscription)
31
- this.subscription.unsubscribe();
32
- }
33
- saveTab(index) {
34
- this.model.saveTab(index, this.model.getFiltered(index), this.model, this.injector);
35
- }
36
- restoreTab() {
37
- return this.model.restoreTab(this.model, this.injector);
38
- }
39
- getTabLabel(index, model) {
40
- return this.model.getTabLabel(index, model, this.model, this.array, this.injector);
41
- }
42
- getClass(context, place, model) {
43
- return [
44
- context == "element" ? this.getModelClass(model) : null,
45
- context == "element" ? this.getAdditionalClass(model) : null,
46
- super.getClass(context, place, model),
47
- model instanceof DynamicFormValueControlModel ? model.additional?.classes : null
48
- ].filter(cls => !!cls).join(" ");
49
- }
50
- getModelClass(model) {
51
- const parts = collectPathAble(model, p => p.id);
52
- if (parts.length == 0)
53
- return "";
54
- if (model instanceof DynamicFormGroupModel) {
55
- return `form-group-${parts.join("-")}`;
56
- }
57
- return `form-control-${parts.join("-")}`;
58
- }
59
- getAdditionalClass(model) {
60
- if (model instanceof DynamicFormArrayModel) {
61
- return model.additional?.classes;
62
- }
63
- if (model instanceof DynamicFormValueControlModel) {
64
- return model.additional?.classes;
65
- }
66
- return null;
67
- }
68
- updateGroups(filteredGroups) {
69
- this.cdr.detectChanges();
70
- this.components.forEach(t => t.cdr.detectChanges());
71
- }
72
- }
73
- DynamicBaseFormArrayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormArrayComponent, deps: [{ token: i1.DynamicFormLayoutService }, { token: i1.DynamicFormValidationService }, { token: i2.DynamicBaseFormComponent }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
74
- DynamicBaseFormArrayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormArrayComponent, selector: "dynamic-base-form-array", inputs: { formLayout: "formLayout", group: "group", layout: "layout", model: "model", templates: "templates" }, outputs: { blur: "blur", change: "change", customEvent: "customEvent", focus: "focus" }, viewQueries: [{ propertyName: "components", predicate: i0.forwardRef(function () { return DynamicBaseFormControlContainerComponent; }), descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormArrayComponent, decorators: [{
76
- type: Component,
77
- args: [{
78
- selector: "dynamic-base-form-array",
79
- template: "",
80
- changeDetection: ChangeDetectionStrategy.OnPush
81
- }]
82
- }], ctorParameters: function () { return [{ type: i1.DynamicFormLayoutService }, { type: i1.DynamicFormValidationService }, { type: i2.DynamicBaseFormComponent }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { formLayout: [{
83
- type: Input
84
- }], group: [{
85
- type: Input
86
- }], layout: [{
87
- type: Input
88
- }], model: [{
89
- type: Input
90
- }], templates: [{
91
- type: Input
92
- }], blur: [{
93
- type: Output
94
- }], change: [{
95
- type: Output
96
- }], customEvent: [{
97
- type: Output
98
- }], focus: [{
99
- type: Output
100
- }], components: [{
101
- type: ViewChildren,
102
- args: [forwardRef(() => DynamicBaseFormControlContainerComponent)]
103
- }] } });
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tYXJyYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWFycmF5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLEtBQUssRUFFTCxNQUFNLEVBRU4sWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDSCx5QkFBeUIsRUFNekIscUJBQXFCLEVBSXJCLDRCQUE0QixFQUUvQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBNkIscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHakQsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0saURBQWlELENBQUM7Ozs7QUFPekcsTUFBTSxPQUFPLDZCQUE4QixTQUFRLHlCQUF5QjtJQXNCeEUsWUFBWSxhQUF1QyxFQUFFLGlCQUErQyxFQUMvRSxJQUE4QixFQUFXLFFBQWtCLEVBQVcsR0FBc0I7UUFDN0csS0FBSyxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQVcsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFXLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZnZHLFNBQUksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3QyxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsZ0JBQVcsR0FBZ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5RSxVQUFLLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFjeEQsQ0FBQztJQVRELElB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Q0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLFlBQVksQ0FBQyxjQUF5RDtRQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7OzBIQWxGUSw2QkFBNkI7OEdBQTdCLDZCQUE2QiwwVUFhUCx3Q0FBd0MsMkVBaEI3RCxFQUFFOzJGQUdILDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7d1BBR1ksVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBR1AsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgZm9yd2FyZFJlZixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheUNvbXBvbmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbEN1c3RvbUV2ZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTGF5b3V0Q29udGV4dCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbExheW91dFBsYWNlLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUdyb3VwTW9kZWwsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbCwgRHluYW1pY0Zvcm1BcnJheU1vZGVsfSBmcm9tIFwiLi4vLi4vdXRpbHMvZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsXCI7XHJcbmltcG9ydCB7Y29sbGVjdFBhdGhBYmxlfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWlzY1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtSW5pdENvbnRyb2x9IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2wtY29udGFpbmVyLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLWJhc2UtZm9ybS1hcnJheVwiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Jhc2VGb3JtQXJyYXlDb21wb25lbnQgZXh0ZW5kcyBEeW5hbWljRm9ybUFycmF5Q29tcG9uZW50IGltcGxlbWVudHMgRHluYW1pY0Zvcm1Jbml0Q29udHJvbCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBASW5wdXQoKSBmb3JtTGF5b3V0OiBEeW5hbWljRm9ybUxheW91dDtcclxuICAgIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgICBASW5wdXQoKSBsYXlvdXQ6IER5bmFtaWNGb3JtQ29udHJvbExheW91dDtcclxuICAgIEBJbnB1dCgpIG1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWw7XHJcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+IHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGN1c3RvbUV2ZW50OiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sQ3VzdG9tRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGZvY3VzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBAVmlld0NoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRHluYW1pY0Jhc2VGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCkpXHJcbiAgICBjb21wb25lbnRzOiBRdWVyeUxpc3Q8RHluYW1pY0Jhc2VGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudD47XHJcblxyXG4gICAgZ2V0IHVzZVRhYnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZWw/LnVzZVRhYnM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGxheW91dFNlcnZpY2U6IER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSwgdmFsaWRhdGlvblNlcnZpY2U6IER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBmb3JtOiBEeW5hbWljQmFzZUZvcm1Db21wb25lbnQsIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvciwgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgICAgIHN1cGVyKGxheW91dFNlcnZpY2UsIHZhbGlkYXRpb25TZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMubW9kZWwuZmlsdGVyZWRHcm91cHMuc3Vic2NyaWJlKGZpbHRlcmVkR3JvdXBzID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVHcm91cHMoZmlsdGVyZWRHcm91cHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubW9kZWwuaW5pdGlhbGl6ZSh0aGlzLmFycmF5KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pXHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVRhYihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5zYXZlVGFiKGluZGV4LCB0aGlzLm1vZGVsLmdldEZpbHRlcmVkKGluZGV4KSwgdGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZVRhYigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGVsLnJlc3RvcmVUYWIodGhpcy5tb2RlbCwgdGhpcy5pbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGFiTGFiZWwoaW5kZXg6IG51bWJlciwgbW9kZWw6IER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5nZXRUYWJMYWJlbChpbmRleCwgbW9kZWwsIHRoaXMubW9kZWwsIHRoaXMuYXJyYXksIHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldENsYXNzKGNvbnRleHQ6IER5bmFtaWNGb3JtQ29udHJvbExheW91dENvbnRleHQsIHBsYWNlOiBEeW5hbWljRm9ybUNvbnRyb2xMYXlvdXRQbGFjZSwgbW9kZWw/OiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgY29udGV4dCA9PSBcImVsZW1lbnRcIiA/IHRoaXMuZ2V0TW9kZWxDbGFzcyhtb2RlbCkgOiBudWxsLFxyXG4gICAgICAgICAgICBjb250ZXh0ID09IFwiZWxlbWVudFwiID8gdGhpcy5nZXRBZGRpdGlvbmFsQ2xhc3MobW9kZWwpIDogbnVsbCxcclxuICAgICAgICAgICAgc3VwZXIuZ2V0Q2xhc3MoY29udGV4dCwgcGxhY2UsIG1vZGVsKSxcclxuICAgICAgICAgICAgbW9kZWwgaW5zdGFuY2VvZiBEeW5hbWljRm9ybVZhbHVlQ29udHJvbE1vZGVsID8gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcyA6IG51bGxcclxuICAgICAgICBdLmZpbHRlcihjbHMgPT4gISFjbHMpLmpvaW4oXCIgXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRNb2RlbENsYXNzKG1vZGVsPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHBhcnRzID0gY29sbGVjdFBhdGhBYmxlKG1vZGVsLCBwID0+IHAuaWQpO1xyXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT0gMCkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1Hcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgZm9ybS1ncm91cC0ke3BhcnRzLmpvaW4oXCItXCIpfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgZm9ybS1jb250cm9sLSR7cGFydHMuam9pbihcIi1cIil9YDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0QWRkaXRpb25hbENsYXNzKG1vZGVsPzogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1vZGVsIGluc3RhbmNlb2YgRHluYW1pY0Zvcm1WYWx1ZUNvbnRyb2xNb2RlbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9kZWwuYWRkaXRpb25hbD8uY2xhc3NlcztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUdyb3VwcyhmaWx0ZXJlZEdyb3VwczogUmVhZG9ubHlBcnJheTxEeW5hbWljRm9ybUFycmF5R3JvdXBNb2RlbD4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRzLmZvckVhY2godCA9PiB0LmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,127 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostBinding, Input, Output, ViewChild, ViewContainerRef } from "@angular/core";
2
- import { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DynamicFormControlContainerComponent, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
3
- import { ObjectUtils } from "@stemy/ngx-utils";
4
- import { collectPathAble } from "../../utils/misc";
5
- import { DynamicFormArrayGroupModel } from "../../utils/dynamic-form-array.model";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "./dynamic-base-form.component";
8
- import * as i2 from "@ng-dynamic-forms/core";
9
- export class DynamicBaseFormControlContainerComponent extends DynamicFormControlContainerComponent {
10
- constructor(form, cdr, injector, cfr, layoutService, validationService, componentService, relationService) {
11
- super(cdr, cfr, layoutService, validationService, componentService, relationService);
12
- this.form = form;
13
- this.cdr = cdr;
14
- this.injector = injector;
15
- this.context = null;
16
- this.blur = new EventEmitter();
17
- this.change = new EventEmitter();
18
- this.focus = new EventEmitter();
19
- }
20
- get componentType() {
21
- return this.form.getComponentType?.(this.model, this.injector)
22
- ?? this.componentService.getCustomComponentType(this.model);
23
- }
24
- get startTemplate() {
25
- return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)
26
- ? this.layoutService.getAlignedTemplate(this.model, this.templates, "ARRAY_START")
27
- : this.layoutService.getStartTemplate(this.model, this.templates);
28
- }
29
- get endTemplate() {
30
- return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)
31
- ? this.layoutService.getAlignedTemplate(this.model, this.templates, "ARRAY_END")
32
- : this.layoutService.getEndTemplate(this.model, this.templates);
33
- }
34
- get formService() {
35
- return this.form.formService;
36
- }
37
- ngOnInit() {
38
- super.ngOnInit();
39
- this.onDetectChanges = this.form.onDetectChanges.subscribe(() => {
40
- this.changeDetectorRef.detectChanges();
41
- });
42
- }
43
- ngOnDestroy() {
44
- super.ngOnDestroy();
45
- this.onDetectChanges.unsubscribe();
46
- }
47
- getLabel() {
48
- const label = collectPathAble(this.model, p => p.label);
49
- if (label.length == 0)
50
- return "";
51
- if (this.form?.labelPrefix) {
52
- label.unshift(this.form.labelPrefix);
53
- }
54
- return label.join(".");
55
- }
56
- getLabelIcon() {
57
- if (this.context instanceof DynamicFormArrayGroupModel) {
58
- const arrayModel = this.context.context;
59
- if (arrayModel && arrayModel.sortBy == this.model.id) {
60
- return arrayModel.sortOrder;
61
- }
62
- }
63
- return null;
64
- }
65
- clickLabel() {
66
- if (this.context instanceof DynamicFormArrayGroupModel) {
67
- const arrayModel = this.context.context;
68
- if (arrayModel) {
69
- arrayModel.sortBy = this.model.id;
70
- }
71
- }
72
- }
73
- createFormControlComponent() {
74
- super.createFormControlComponent();
75
- const component = this.componentRef?.instance;
76
- if (!component || !ObjectUtils.isFunction(component.initialize))
77
- return;
78
- component.initialize(this.changeDetectorRef);
79
- }
80
- }
81
- DynamicBaseFormControlContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlContainerComponent, deps: [{ token: i1.DynamicBaseFormComponent }, { token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: i0.ComponentFactoryResolver }, { token: i2.DynamicFormLayoutService }, { token: i2.DynamicFormValidationService }, { token: i2.DynamicFormComponentService }, { token: i2.DynamicFormRelationService }], target: i0.ɵɵFactoryTarget.Component });
82
- DynamicBaseFormControlContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: DynamicBaseFormControlContainerComponent, selector: "dynamic-base-form-control", inputs: { context: "context", group: "group", hostClass: "hostClass", inputTemplateList: ["templates", "inputTemplateList"], layout: "layout", model: "model" }, outputs: { blur: "blur", change: "change", focus: "focus" }, host: { properties: { "class": "this.klass" } }, providers: [
83
- { provide: DynamicFormControlContainerComponent, useExisting: DynamicBaseFormControlContainerComponent }
84
- ], queries: [{ propertyName: "contentTemplateList", predicate: DynamicTemplateDirective }], viewQueries: [{ propertyName: "componentViewContainerRef", first: true, predicate: ["componentViewContainer"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: DynamicBaseFormControlContainerComponent, decorators: [{
86
- type: Component,
87
- args: [{
88
- selector: "dynamic-base-form-control",
89
- template: "",
90
- changeDetection: ChangeDetectionStrategy.OnPush,
91
- providers: [
92
- { provide: DynamicFormControlContainerComponent, useExisting: DynamicBaseFormControlContainerComponent }
93
- ]
94
- }]
95
- }], ctorParameters: function () { return [{ type: i1.DynamicBaseFormComponent }, { type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: i2.DynamicFormLayoutService }, { type: i2.DynamicFormValidationService }, { type: i2.DynamicFormComponentService }, { type: i2.DynamicFormRelationService }]; }, propDecorators: { contentTemplateList: [{
96
- type: ContentChildren,
97
- args: [DynamicTemplateDirective]
98
- }], klass: [{
99
- type: HostBinding,
100
- args: ["class"]
101
- }], context: [{
102
- type: Input
103
- }], group: [{
104
- type: Input
105
- }], hostClass: [{
106
- type: Input
107
- }], inputTemplateList: [{
108
- type: Input,
109
- args: ["templates"]
110
- }], layout: [{
111
- type: Input
112
- }], model: [{
113
- type: Input
114
- }], blur: [{
115
- type: Output
116
- }], change: [{
117
- type: Output
118
- }], focus: [{
119
- type: Output
120
- }], componentViewContainerRef: [{
121
- type: ViewChild,
122
- args: ["componentViewContainer", {
123
- read: ViewContainerRef,
124
- static: true
125
- }]
126
- }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2wtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFdBQVcsRUFFWCxLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNILCtCQUErQixFQUcvQixvQ0FBb0MsRUFPcEMsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQzs7OztBQVloRixNQUFNLE9BQU8sd0NBQXlDLFNBQVEsb0NBQW9DO0lBNkM5RixZQUFxQixJQUE4QixFQUM5QixHQUFzQixFQUN0QixRQUFrQixFQUMzQixHQUE2QixFQUM3QixhQUF1QyxFQUN2QyxpQkFBK0MsRUFDL0MsZ0JBQTZDLEVBQzdDLGVBQTJDO1FBQ25ELEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQVJwRSxTQUFJLEdBQUosSUFBSSxDQUEwQjtRQUM5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBekM5QixZQUFPLEdBQXNDLElBQUksQ0FBQztRQU9qRCxTQUFJLEdBQTBDLElBQUksWUFBWSxFQUEyQixDQUFDO1FBQzFGLFdBQU0sR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFDNUYsVUFBSyxHQUEwQyxJQUFJLFlBQVksRUFBMkIsQ0FBQztJQXVDckcsQ0FBQztJQWhDRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUM7ZUFDdkQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLCtCQUErQixDQUFDO1lBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFvQixDQUFDO1lBQ3pGLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksK0JBQStCLENBQUM7WUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQWtCLENBQUM7WUFDdkYsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFlRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM1RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3hCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksSUFBSSxDQUFDLE9BQU8sWUFBWSwwQkFBMEIsRUFBRTtZQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUN4QyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUNsRCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7YUFDL0I7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxZQUFZLDBCQUEwQixFQUFFO1lBQ3BELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3hDLElBQUksVUFBVSxFQUFFO2dCQUNaLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7YUFDckM7U0FDSjtJQUNMLENBQUM7SUFFUywwQkFBMEI7UUFDaEMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFrQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFBRSxPQUFPO1FBQ3hFLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakQsQ0FBQzs7cUlBckdRLHdDQUF3Qzt5SEFBeEMsd0NBQXdDLG1VQUp0QztRQUNQLEVBQUMsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLFdBQVcsRUFBRSx3Q0FBd0MsRUFBQztLQUN6Ryw4REFJZ0Isd0JBQXdCLDZJQWdCL0IsZ0JBQWdCLGtFQXhCaEIsRUFBRTsyRkFNSCx3Q0FBd0M7a0JBUnBELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFNBQVMsRUFBRTt3QkFDUCxFQUFDLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxXQUFXLDBDQUEwQyxFQUFDO3FCQUN6RztpQkFDSjtrWEFHOEMsbUJBQW1CO3NCQUE3RCxlQUFlO3VCQUFDLHdCQUF3QjtnQkFFbkIsS0FBSztzQkFBMUIsV0FBVzt1QkFBQyxPQUFPO2dCQUVYLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDYyxpQkFBaUI7c0JBQXBDLEtBQUs7dUJBQUMsV0FBVztnQkFDVCxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUtKLHlCQUF5QjtzQkFIM0IsU0FBUzt1QkFBQyx3QkFBd0IsRUFBRTt3QkFDakMsSUFBSSxFQUFFLGdCQUFnQjt3QkFDdEIsTUFBTSxFQUFFLElBQUk7cUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5qZWN0b3IsXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIFF1ZXJ5TGlzdCxcclxuICAgIFR5cGUsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuICAgIERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfQVJSQVksXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2wsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXQsXHJcbiAgICBEeW5hbWljRm9ybUxheW91dFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVJlbGF0aW9uU2VydmljZSxcclxuICAgIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmVcclxufSBmcm9tIFwiQG5nLWR5bmFtaWMtZm9ybXMvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5cclxuaW1wb3J0IHtEeW5hbWljRm9ybUluaXRDb250cm9sfSBmcm9tIFwiLi4vLi4vY29tbW9uLXR5cGVzXCI7XHJcbmltcG9ydCB7Y29sbGVjdFBhdGhBYmxlfSBmcm9tIFwiLi4vLi4vdXRpbHMvbWlzY1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsfSBmcm9tIFwiLi4vLi4vdXRpbHMvZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvZHluYW1pYy1mb3JtLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJkeW5hbWljLWJhc2UtZm9ybS1jb250cm9sXCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAge3Byb3ZpZGU6IER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IER5bmFtaWNCYXNlRm9ybUNvbnRyb2xDb250YWluZXJDb21wb25lbnR9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeW5hbWljQmFzZUZvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50IHtcclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSkgY29udGVudFRlbXBsYXRlTGlzdDogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT47XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3NcIikga2xhc3M7XHJcblxyXG4gICAgQElucHV0KCkgY29udGV4dDogRHluYW1pY0Zvcm1BcnJheUdyb3VwTW9kZWwgfCBudWxsID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgICBASW5wdXQoKSBob3N0Q2xhc3M6IHN0cmluZ1tdO1xyXG4gICAgQElucHV0KFwidGVtcGxhdGVzXCIpIGlucHV0VGVtcGxhdGVMaXN0OiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuICAgIEBJbnB1dCgpIGxheW91dDogRHluYW1pY0Zvcm1MYXlvdXQ7XHJcbiAgICBASW5wdXQoKSBtb2RlbDogRHluYW1pY0Zvcm1Db250cm9sTW9kZWw7XHJcblxyXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PigpO1xyXG4gICAgQE91dHB1dCgpIGNoYW5nZTogRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgZm9jdXM6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoXCJjb21wb25lbnRWaWV3Q29udGFpbmVyXCIsIHtcclxuICAgICAgICByZWFkOiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICAgIHN0YXRpYzogdHJ1ZVxyXG4gICAgfSkgY29tcG9uZW50Vmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgICBnZXQgY29tcG9uZW50VHlwZSgpOiBUeXBlPER5bmFtaWNGb3JtQ29udHJvbD4gfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmdldENvbXBvbmVudFR5cGU/Lih0aGlzLm1vZGVsLCB0aGlzLmluamVjdG9yKVxyXG4gICAgICAgICAgICA/PyB0aGlzLmNvbXBvbmVudFNlcnZpY2UuZ2V0Q3VzdG9tQ29tcG9uZW50VHlwZSh0aGlzLm1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc3RhcnRUZW1wbGF0ZSgpOiBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC50eXBlID09IERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfQVJSQVkpXHJcbiAgICAgICAgICAgID8gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEFsaWduZWRUZW1wbGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnRlbXBsYXRlcywgXCJBUlJBWV9TVEFSVFwiIGFzIGFueSlcclxuICAgICAgICAgICAgOiB0aGlzLmxheW91dFNlcnZpY2UuZ2V0U3RhcnRUZW1wbGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnRlbXBsYXRlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGVuZFRlbXBsYXRlKCk6IER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsLnR5cGUgPT0gRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9BUlJBWSlcclxuICAgICAgICAgICAgPyB0aGlzLmxheW91dFNlcnZpY2UuZ2V0QWxpZ25lZFRlbXBsYXRlKHRoaXMubW9kZWwsIHRoaXMudGVtcGxhdGVzLCBcIkFSUkFZX0VORFwiIGFzIGFueSlcclxuICAgICAgICAgICAgOiB0aGlzLmxheW91dFNlcnZpY2UuZ2V0RW5kVGVtcGxhdGUodGhpcy5tb2RlbCwgdGhpcy50ZW1wbGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb3JtU2VydmljZSgpOiBEeW5hbWljRm9ybVNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZm9ybVNlcnZpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uRGV0ZWN0Q2hhbmdlczogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGZvcm06IER5bmFtaWNCYXNlRm9ybUNvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgICAgICAgICBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICAgICAgICAgIGxheW91dFNlcnZpY2U6IER5bmFtaWNGb3JtTGF5b3V0U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb25TZXJ2aWNlOiBEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50U2VydmljZTogRHluYW1pY0Zvcm1Db21wb25lbnRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcmVsYXRpb25TZXJ2aWNlOiBEeW5hbWljRm9ybVJlbGF0aW9uU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGNkciwgY2ZyLCBsYXlvdXRTZXJ2aWNlLCB2YWxpZGF0aW9uU2VydmljZSwgY29tcG9uZW50U2VydmljZSwgcmVsYXRpb25TZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgICAgIHRoaXMub25EZXRlY3RDaGFuZ2VzID0gdGhpcy5mb3JtLm9uRGV0ZWN0Q2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gICAgICAgIHRoaXMub25EZXRlY3RDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGFiZWwoKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IGNvbGxlY3RQYXRoQWJsZSh0aGlzLm1vZGVsLCBwID0+IHAubGFiZWwpO1xyXG4gICAgICAgIGlmIChsYWJlbC5sZW5ndGggPT0gMCkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgaWYgKHRoaXMuZm9ybT8ubGFiZWxQcmVmaXgpIHtcclxuICAgICAgICAgICAgbGFiZWwudW5zaGlmdCh0aGlzLmZvcm0ubGFiZWxQcmVmaXgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFiZWwuam9pbihcIi5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TGFiZWxJY29uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFycmF5TW9kZWwgPSB0aGlzLmNvbnRleHQuY29udGV4dDtcclxuICAgICAgICAgICAgaWYgKGFycmF5TW9kZWwgJiYgYXJyYXlNb2RlbC5zb3J0QnkgPT0gdGhpcy5tb2RlbC5pZCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5TW9kZWwuc29ydE9yZGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrTGFiZWwoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCBpbnN0YW5jZW9mIER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFycmF5TW9kZWwgPSB0aGlzLmNvbnRleHQuY29udGV4dDtcclxuICAgICAgICAgICAgaWYgKGFycmF5TW9kZWwpIHtcclxuICAgICAgICAgICAgICAgIGFycmF5TW9kZWwuc29ydEJ5ID0gdGhpcy5tb2RlbC5pZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlRm9ybUNvbnRyb2xDb21wb25lbnQoKSB7XHJcbiAgICAgICAgc3VwZXIuY3JlYXRlRm9ybUNvbnRyb2xDb21wb25lbnQoKTtcclxuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZj8uaW5zdGFuY2UgYXMgRHluYW1pY0Zvcm1Jbml0Q29udHJvbDtcclxuICAgICAgICBpZiAoIWNvbXBvbmVudCB8fCAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihjb21wb25lbnQuaW5pdGlhbGl6ZSkpIHJldHVybjtcclxuICAgICAgICBjb21wb25lbnQuaW5pdGlhbGl6ZSh0aGlzLmNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH1cclxufVxyXG4iXX0=