@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.
- package/fesm2022/stemy-ngx-dynamic-form-ui-nebular.mjs +4 -4
- package/fesm2022/stemy-ngx-dynamic-form-ui-nebular.mjs.map +1 -1
- package/fesm2022/stemy-ngx-dynamic-form.mjs +859 -1662
- package/fesm2022/stemy-ngx-dynamic-form.mjs.map +1 -1
- package/ngx-dynamic-form/common-types.d.ts +109 -26
- package/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +21 -0
- package/ngx-dynamic-form/components/dynamic-form-array/dynamic-form-array.component.d.ts +9 -0
- package/ngx-dynamic-form/components/dynamic-form-chips/dynamic-form-chips.component.d.ts +7 -0
- package/ngx-dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +6 -0
- package/ngx-dynamic-form/components/dynamic-form-fieldset/dynamic-form-fieldset.component.d.ts +7 -0
- package/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.d.ts +6 -0
- package/ngx-dynamic-form/components/dynamic-form-upload/dynamic-form-upload.component.d.ts +7 -0
- package/ngx-dynamic-form/directives/async-submit.directive.d.ts +17 -23
- package/ngx-dynamic-form/ngx-dynamic-form.imports.d.ts +5 -9
- package/ngx-dynamic-form/ngx-dynamic-form.module.d.ts +13 -11
- package/ngx-dynamic-form/services/dynamic-form-builder.service.d.ts +27 -0
- package/ngx-dynamic-form/services/dynamic-form.service.d.ts +28 -46
- package/ngx-dynamic-form/utils/customizer.d.ts +5 -12
- package/ngx-dynamic-form/utils/decorators.d.ts +10 -0
- package/ngx-dynamic-form/utils/misc.d.ts +2 -4
- package/ngx-dynamic-form/utils/validation.d.ts +13 -0
- package/package.json +21 -16
- package/public_api.d.ts +13 -18
- package/ui-nebular/index.d.ts +1 -5
- package/common-types.d.ts +0 -37
- package/components/base/dynamic-base-form-array.component.d.ts +0 -38
- package/components/base/dynamic-base-form-control-container.component.d.ts +0 -39
- package/components/base/dynamic-base-form-control.component.d.ts +0 -26
- package/components/base/dynamic-base-form-group.component.d.ts +0 -25
- package/components/base/dynamic-base-form.component.d.ts +0 -46
- package/components/base/dynamic-base-select.component.d.ts +0 -15
- package/directives/async-submit.directive.d.ts +0 -31
- package/esm2020/ngx-dynamic-form/common-types.mjs +0 -2
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-array.component.mjs +0 -104
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.mjs +0 -127
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control.component.mjs +0 -57
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-group.component.mjs +0 -75
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form.component.mjs +0 -182
- package/esm2020/ngx-dynamic-form/components/base/dynamic-base-select.component.mjs +0 -66
- package/esm2020/ngx-dynamic-form/directives/async-submit.directive.mjs +0 -116
- package/esm2020/ngx-dynamic-form/ngx-dynamic-form.imports.mjs +0 -26
- package/esm2020/ngx-dynamic-form/ngx-dynamic-form.module.mjs +0 -116
- package/esm2020/ngx-dynamic-form/services/dynamic-form.service.mjs +0 -615
- package/esm2020/ngx-dynamic-form/utils/creators.mjs +0 -67
- package/esm2020/ngx-dynamic-form/utils/customizer.mjs +0 -28
- package/esm2020/ngx-dynamic-form/utils/dynamic-editor.model.mjs +0 -14
- package/esm2020/ngx-dynamic-form/utils/dynamic-form-array.model.mjs +0 -128
- package/esm2020/ngx-dynamic-form/utils/dynamic-form-group.model.mjs +0 -26
- package/esm2020/ngx-dynamic-form/utils/dynamic-select.model.mjs +0 -59
- package/esm2020/ngx-dynamic-form/utils/form-select-subject.mjs +0 -26
- package/esm2020/ngx-dynamic-form/utils/form-subject.mjs +0 -29
- package/esm2020/ngx-dynamic-form/utils/misc.mjs +0 -47
- package/esm2020/ngx-dynamic-form/utils/validation-errors.mjs +0 -22
- package/esm2020/ngx-dynamic-form/utils/validators.mjs +0 -56
- package/esm2020/public_api.mjs +0 -21
- package/esm2020/stemy-ngx-dynamic-form.mjs +0 -5
- package/fesm2015/stemy-ngx-dynamic-form.mjs +0 -1927
- package/fesm2015/stemy-ngx-dynamic-form.mjs.map +0 -1
- package/fesm2020/stemy-ngx-dynamic-form.mjs +0 -1893
- package/fesm2020/stemy-ngx-dynamic-form.mjs.map +0 -1
- package/fesm2022/stemy-ngx-dynamic-form-src-ngx-dynamic-form-nebular.mjs +0 -50
- package/fesm2022/stemy-ngx-dynamic-form-src-ngx-dynamic-form-nebular.mjs.map +0 -1
- package/imports.d.ts +0 -12
- package/ngx-dynamic-form/components/base/dynamic-base-form-array.component.d.ts +0 -38
- package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +0 -39
- package/ngx-dynamic-form/components/base/dynamic-base-form-control.component.d.ts +0 -26
- package/ngx-dynamic-form/components/base/dynamic-base-form-group.component.d.ts +0 -25
- package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +0 -46
- package/ngx-dynamic-form/components/base/dynamic-base-select.component.d.ts +0 -15
- package/ngx-dynamic-form/services/dynamic-form-layout.service.d.ts +0 -7
- package/ngx-dynamic-form/utils/creators.d.ts +0 -18
- package/ngx-dynamic-form/utils/dynamic-editor.model.d.ts +0 -11
- package/ngx-dynamic-form/utils/dynamic-form-array.model.d.ts +0 -69
- package/ngx-dynamic-form/utils/dynamic-form-group.model.d.ts +0 -14
- package/ngx-dynamic-form/utils/dynamic-select.model.d.ts +0 -39
- package/ngx-dynamic-form/utils/form-select-subject.d.ts +0 -6
- package/ngx-dynamic-form/utils/form-subject.d.ts +0 -10
- package/ngx-dynamic-form/utils/validators.d.ts +0 -8
- package/ngx-dynamic-form.imports.d.ts +0 -12
- package/ngx-dynamic-form.module.d.ts +0 -21
- package/services/dynamic-form.service.d.ts +0 -61
- package/src/ngx-dynamic-form/nebular/imports.d.ts +0 -4
- package/src/ngx-dynamic-form/nebular/index.d.ts +0 -5
- package/src/ngx-dynamic-form/nebular/ngx-dynamic-form.nebular.module.d.ts +0 -9
- package/src/ngx-dynamic-form/nebular/public_api.d.ts +0 -1
- package/stemy-ngx-dynamic-form.d.ts +0 -5
- package/ui-nebular/public_api.d.ts +0 -1
- package/utils/creators.d.ts +0 -18
- package/utils/customizer.d.ts +0 -14
- package/utils/dynamic-editor.model.d.ts +0 -11
- package/utils/dynamic-form-array.model.d.ts +0 -69
- package/utils/dynamic-form-group.model.d.ts +0 -14
- package/utils/dynamic-select.model.d.ts +0 -39
- package/utils/form-select-subject.d.ts +0 -6
- package/utils/form-subject.d.ts +0 -10
- package/utils/misc.d.ts +0 -11
- package/utils/validation-errors.d.ts +0 -11
- package/utils/validators.d.ts +0 -8
package/public_api.d.ts
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
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 {
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
export {
|
|
19
|
-
export {
|
|
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";
|
package/ui-nebular/index.d.ts
CHANGED
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==
|
package/esm2020/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.mjs
DELETED
|
@@ -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=
|