@stemy/ngx-dynamic-form 10.2.22 → 12.0.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/bundles/stemy-ngx-dynamic-form.umd.js +1781 -902
- package/bundles/stemy-ngx-dynamic-form.umd.js.map +1 -1
- package/esm2015/ngx-dynamic-form/common-types.js +463 -7
- package/esm2015/ngx-dynamic-form/components/base/dynamic-form-base.component.js +87 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.js +91 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.js +112 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.js +19 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.js +69 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.js +23 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.js +73 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.js +20 -0
- package/esm2015/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.js +134 -0
- package/esm2015/ngx-dynamic-form/directives/async-submit.directive.js +6 -17
- package/esm2015/ngx-dynamic-form/directives/dynamic-form-control.directive.js +32 -0
- package/esm2015/ngx-dynamic-form/directives/dynamic-form-group.directive.js +40 -0
- package/esm2015/ngx-dynamic-form/directives/dynamic-form-template.directive.js +38 -0
- package/esm2015/ngx-dynamic-form/ngx-dynamic-form.module.js +36 -35
- package/esm2015/ngx-dynamic-form/services/dynamic-form.service.js +41 -386
- package/esm2015/ngx-dynamic-form/services/form-utilities.js +108 -0
- package/esm2015/ngx-dynamic-form/services/open-api.service.js +130 -0
- package/esm2015/public_api.js +15 -6
- package/esm2015/stemy-ngx-dynamic-form.js +4 -3
- package/fesm2015/stemy-ngx-dynamic-form.js +1357 -594
- package/fesm2015/stemy-ngx-dynamic-form.js.map +1 -1
- package/ngx-dynamic-form/common-types.d.ts +181 -27
- package/ngx-dynamic-form/components/base/dynamic-form-base.component.d.ts +44 -0
- package/ngx-dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +21 -0
- package/ngx-dynamic-form/components/dynamic-form-file/dynamic-form-file.component.d.ts +16 -0
- package/ngx-dynamic-form/components/dynamic-form-group/dynamic-form-group.component.d.ts +6 -0
- package/ngx-dynamic-form/components/dynamic-form-input/dynamic-form-input.component.d.ts +12 -0
- package/ngx-dynamic-form/components/dynamic-form-model/dynamic-form-model.component.d.ts +6 -0
- package/ngx-dynamic-form/components/dynamic-form-select/dynamic-form-select.component.d.ts +9 -0
- package/ngx-dynamic-form/components/dynamic-form-static/dynamic-form-static.component.d.ts +5 -0
- package/ngx-dynamic-form/components/dynamic-forms/dynamic-forms.component.d.ts +26 -0
- package/ngx-dynamic-form/directives/async-submit.directive.d.ts +1 -5
- package/ngx-dynamic-form/directives/dynamic-form-control.directive.d.ts +12 -0
- package/ngx-dynamic-form/directives/dynamic-form-group.directive.d.ts +14 -0
- package/ngx-dynamic-form/directives/dynamic-form-template.directive.d.ts +16 -0
- package/ngx-dynamic-form/ngx-dynamic-form.module.d.ts +15 -5
- package/ngx-dynamic-form/services/dynamic-form.service.d.ts +11 -39
- package/ngx-dynamic-form/services/form-utilities.d.ts +19 -0
- package/ngx-dynamic-form/services/open-api.service.d.ts +37 -0
- package/package.json +16 -17
- package/public_api.d.ts +14 -5
- package/stemy-ngx-dynamic-form.d.ts +3 -2
- package/stemy-ngx-dynamic-form.metadata.json +1 -1
- package/bundles/stemy-ngx-dynamic-form.umd.min.js +0 -16
- package/bundles/stemy-ngx-dynamic-form.umd.min.js.map +0 -1
- package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.js +0 -91
- package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form.component.js +0 -129
- package/esm2015/ngx-dynamic-form/services/dynamic-form-validation.service.js +0 -11
- package/esm2015/ngx-dynamic-form/utils/dynamic-form-array.model.js +0 -8
- package/esm2015/ngx-dynamic-form/utils/form-subject.js +0 -18
- package/esm2015/ngx-dynamic-form/utils/validators.js +0 -28
- package/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.d.ts +0 -37
- package/ngx-dynamic-form/components/base/dynamic-base-form.component.d.ts +0 -37
- package/ngx-dynamic-form/services/dynamic-form-validation.service.d.ts +0 -5
- package/ngx-dynamic-form/utils/dynamic-form-array.model.d.ts +0 -12
- package/ngx-dynamic-form/utils/form-subject.d.ts +0 -8
- package/ngx-dynamic-form/utils/validators.d.ts +0 -4
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ngx-dynamic-form/common-types.ts","../../src/ngx-dynamic-form/utils/validators.ts","../../node_modules/tslib/tslib.es6.js","../../src/ngx-dynamic-form/utils/form-subject.ts","../../src/ngx-dynamic-form/utils/dynamic-form-array.model.ts","../../src/ngx-dynamic-form/services/dynamic-form.service.ts","../../src/ngx-dynamic-form/directives/async-submit.directive.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-form.component.ts","../../src/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.ts","../../src/ngx-dynamic-form/services/dynamic-form-validation.service.ts","../../src/ngx-dynamic-form/ngx-dynamic-form.module.ts"],"names":["emptyArray","emptyTester","Promise","resolve","defaultSerializer","id","parent","control","get","value","defineFormControl","target","propertyKey","ReflectUtils","defineMetadata","getFormFieldSets","getMetadata","createFormControl","type","data","label","ObjectUtils","isNullOrUndefined","labelAlign","fieldSet","UniqueUtils","uuid","classes","readonly","hidden","validators","createFormInput","placeholder","step","mask","createFormSelect","options","classType","createFormStatic","style","createFormModel","name","validateJSON","JSON","parse","e","json","validateRequiredTranslation","length","findIndex","t","lang","translation","requiredTranslation","validatePhone","test","phone","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","reject","fulfilled","next","rejected","result","done","then","apply","__generator","body","f","y","g","_","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","TypeError","pop","push","__values","o","s","m","i","__read","r","ar","error","__spread","arguments","concat","FormSubject","notifyCallback","_this","_super","notify","controlModel","_a","Subject","DynamicFormArrayModel","config","layout","additional","Base","DynamicFormService","cs","vs","openApi","onDetectChanges","EventEmitter","defineProperty","api","language","patchGroup","formModel","formGroup","patchValueRecursive","detectChanges","patchValue","copy","patchForm","component","model","group","serialize","serializeRecursive","notifyChanges","notifyChangesRecursive","updateSelectOptions","formControlModel","formControl","DynamicSelectModel","options$","source","showErrors","form","showErrorsForGroup","formComponent","emit","keys","forEach","key","subModel","findModelById","subValue","subControl","findControlByModel","isObject","_id","DynamicFormArrayModelBase","isArray","subArray","size","removeFormArrayGroup","insertFormArrayGroup","itemModel","at","DynamicFormGroupModel","serializer","isFunction","_e","_f","_l","resArray","i_1","_h","_g","_j","_k","DynamicInputModel","inputType","parseFloat","replace","i_2","markAsTouched","onlySelf","controls","map","showErrorsForControls","FormGroup","FormArray","getFormModelForSchema","cache","_c","getSchemas","schemas","_d","getFormModelForSchemaDef","schema","properties","property","getFormControlModel","filter","enum","isString","optionsPath","getFormSelectConfig","getFormInputConfig","DynamicTextAreaModel","getFormTextareaConfig","DynamicCheckboxModel","getFormCheckboxConfig","items","$ref","getFormArrayConfig","_b","DynamicFileUploadModel","getFormUploadConfig","getFormGroupConfig","getFormControlConfig","getValidators","errorMessages","reduce","res","disabled","assign","ref","subSchema","split","groupFactory","StringUtils","has","autoComplete","multiple","accept","pattern","isNaN","min","Number","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","cols","rows","wrap","getFormSelectOptions","indeterminate","translateOptions","options_1","options_1_1","option","getTranslation","$enum","path","startsWith","substr","getValue","translatable","endpoint","list","makeListParams","labelField","url","autoUpload","maxSize","minSize","removeUrl","showFileList","required","indexOf","minLength","maxLength","format","email","Injectable","DynamicFormComponentService","DynamicFormValidationService","OpenApiService","AsyncSubmitDirective","toaster","cdr","elem","renderer","onSuccess","onError","nativeElement","tagName","setAttribute","removeAttribute","loading","ngOnInit","isDisabled","status","onStatusChange","subscribe","callback","onSubmit","callMethod","ngOnDestroy","unsubscribe","click","method","context","success","message","reason","Error","Directive","args","selector","exportAs","Inject","TOASTER_SERVICE","ChangeDetectorRef","ElementRef","Renderer2","Input","Output","HostBinding","HostListener","DynamicBaseFormComponent","formService","events","changeDetectorRef","componentService","blur","change","focus","onValueChange","templates","QueryList","subscription","Subscription","groupSubscription","labelPrefix","ngOnChanges","changes","ObservableUtils","multiSubscription","statusChanges","valueChanges","ngAfterViewInit","subjects","contentTemplates","viewTemplates","cb","toArray","reset","languageChanged","ngForm","ngSubmit","index","formArray","formArrayModel","moveFormArrayGroup","clearFormArray","validate","pipe","first","updateValueAndValidity","DynamicFormComponent","Component","template","changeDetection","ChangeDetectionStrategy","Default","decorators","EventsService","ContentChildren","DynamicTemplateDirective","ViewChildren","ViewChild","NgForm","DynamicBaseFormControlContainerComponent","componentFactoryResolver","layoutService","validationService","relationService","getCustomComponentType","getComponentType","DYNAMIC_FORM_CONTROL_TYPE_ARRAY","getAlignedTemplate","getStartTemplate","getEndTemplate","createFormControlComponent","componentRef","instance","onCreated","DynamicFormControlContainerComponent","OnPush","ComponentFactoryResolver","DynamicFormLayoutService","DynamicFormRelationService","read","ViewContainerRef","static","showErrorMessages","hasFocus","components","directives","pipes","Map","NgxDynamicFormModule","forRoot","ngModule","providers","provide","BaseDynamicFormService","useExisting","BaseDynamicFormValidationService","NgModule","declarations","imports","CommonModule","FormsModule","ReactiveFormsModule","NgxUtilsModule","exports","entryComponents","NG_VALIDATORS","useValue","multi","DYNAMIC_VALIDATORS","sets","baseUrl","uploadUrl","createUploadData","file","FormData","append","createFormFile","meta","getOwnMetadata"],"mappings":"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","sourcesContent":["import {EventEmitter, TemplateRef} from \"@angular/core\";\r\nimport {AbstractControl, FormArray} from \"@angular/forms\";\r\nimport {Observable} from \"rxjs\";\r\nimport {\r\n DynamicFormControl,\r\n DynamicFormOptionConfig,\r\n DynamicFormValueControlModel,\r\n DynamicValidatorDescriptor,\r\n DynamicValidatorsConfig\r\n} from \"@ng-dynamic-forms/core\";\r\nimport {\r\n IAsyncMessage,\r\n IRequestOptions,\r\n IResolveFactory,\r\n ObjectUtils,\r\n ReflectUtils,\r\n UniqueUtils\r\n} from \"@stemy/ngx-utils\";\r\n\r\n// --- Basic form control interfaces ---\r\n\r\nexport interface IDynamicFormBase {\r\n\r\n status: DynamicFormState;\r\n\r\n onStatusChange: EventEmitter<IDynamicFormBase>;\r\n onValueChange: EventEmitter<IDynamicFormBase>;\r\n onSubmit: EventEmitter<IDynamicFormBase>;\r\n\r\n validate(): Promise<any>;\r\n serialize(validate?: boolean): Promise<any>;\r\n}\r\n\r\nexport interface IDynamicForm extends IDynamicFormBase{\r\n\r\n}\r\n\r\nexport interface OnCreatedFormControl extends DynamicFormControl {\r\n onCreated(): any;\r\n}\r\n\r\nexport type IFormControlSerializer = (model: DynamicFormValueControlModel<any>, control: AbstractControl) => Promise<any>;\r\nexport type IFormInputMask = string | RegExp;\r\nexport type IFormInputMaskFunction = (raw: string) => IFormInputMask[];\r\nexport type IFormInputUnMaskFunction = (value: string) => any;\r\n\r\nexport interface IFormSerializer {\r\n id: string;\r\n func: IFormControlSerializer;\r\n}\r\n\r\nexport interface IFormSerializers {\r\n [id: string]: IFormControlSerializer | IResolveFactory | null\r\n}\r\n\r\nexport type DynamicFormState = \"VALID\" | \"INVALID\" | \"PENDING\" | \"DISABLED\" | \"LOADING\";\r\nexport type DynamicFormUpdateOn = \"change\" | \"blur\" | \"submit\";\r\n\r\nexport interface IFormControl {\r\n id: string;\r\n type: string;\r\n visible?: boolean;\r\n data?: IFormControlData;\r\n}\r\n\r\nexport interface IFormControlData {\r\n label?: string;\r\n labelAlign?: string;\r\n fieldSet?: string;\r\n classes?: string;\r\n readonly?: FormControlTesterFactory;\r\n hidden?: FormControlTesterFactory;\r\n shouldSerialize?: FormControlTesterFactory;\r\n shouldValidate?: FormControlTesterFactory;\r\n validator?: DynamicValidatorDescriptor;\r\n validators?: DynamicValidatorsConfig;\r\n updateOn?: DynamicFormUpdateOn;\r\n reload?: string | string[];\r\n}\r\n\r\nexport interface IFormInputData extends IFormControlData {\r\n type?: string;\r\n autocomplete?: string;\r\n placeholder?: string;\r\n useLanguage?: boolean;\r\n mask?: IFormInputMaskFunction | IFormInputMask[];\r\n unmask?: IFormInputUnMaskFunction;\r\n step?: number;\r\n min?: number;\r\n max?: number;\r\n}\r\n\r\nexport interface IFormSelectData extends IFormControlData {\r\n options?: DynamicFormOptionConfig<any>[] | Observable<DynamicFormOptionConfig<any>[]>;\r\n emptyOption?: boolean;\r\n type?: string;\r\n multi?: boolean;\r\n}\r\n\r\nexport interface IFormStaticData extends IFormControlData {\r\n properties?: string[];\r\n style?: string;\r\n}\r\n\r\nexport interface IFormFileData extends IFormControlData {\r\n accept?: string;\r\n multi?: boolean;\r\n baseUrl?: string;\r\n asFile?: boolean;\r\n asDataUrl?: boolean;\r\n uploadUrl?: string;\r\n uploadOptions?: IRequestOptions;\r\n createUploadData?: (file: File) => any;\r\n}\r\n\r\nexport interface IFormModelData extends IFormControlData, IDynamicFormInfo {\r\n\r\n}\r\n\r\nexport interface IFormFieldSet {\r\n id: string;\r\n classes?: string;\r\n title?: string;\r\n titleClasses?: string;\r\n setClasses?: string;\r\n controlClasses?: string;\r\n}\r\n\r\nexport interface IFormControlOption {\r\n id: any;\r\n label: string;\r\n selectable?: boolean;\r\n}\r\n\r\n// --- Basic form interfaces ---\r\n\r\nexport interface IDynamicFormTemplates {\r\n [id: string]: TemplateRef<any>;\r\n}\r\n\r\nexport interface IDynamicFormConfig {\r\n path?: string | number | Array<string | number>;\r\n name?: string;\r\n classes?: string;\r\n formClasses?: string;\r\n innerFormClasses?: string;\r\n id: string;\r\n}\r\n\r\nexport interface IDynamicSingleFormConfig extends IDynamicFormConfig, IDynamicFormInfo {\r\n data: any;\r\n controlData?: IFormControlData;\r\n multi?: false;\r\n}\r\n\r\nexport interface IDynamicMultiFormConfig extends IDynamicFormConfig {\r\n data: IDynamicFormsConfigs;\r\n multi: true;\r\n}\r\n\r\nexport type IDynamicFormsConfigs = Array<IDynamicSingleFormConfig | IDynamicMultiFormConfig>;\r\n\r\nexport declare type AsyncSubmitMethod = (form: IDynamicFormBase, context?: any) => Promise<IAsyncMessage>;\r\n\r\nexport interface IDynamicFormInfo {\r\n name?: string;\r\n controls?: IFormControl[];\r\n serializers?: IFormSerializers;\r\n fieldSets?: IFormFieldSet[];\r\n}\r\n\r\nexport interface IDynamicFormFieldSets {\r\n [id: string]: IFormFieldSet\r\n}\r\n\r\n// --- Basic form types ---\r\nexport type FormControlTester = (control: AbstractControl) => Promise<boolean>;\r\nexport type FormControlTesterFactory = FormControlTester | IResolveFactory;\r\n\r\n// --- Decorator functions ---\r\nconst emptyArray: any = [];\r\nconst emptyTester: FormControlTester = () => {\r\n return Promise.resolve(false);\r\n};\r\n\r\nexport function defaultSerializer(id: string, parent: FormArray): Promise<any> {\r\n const control = parent.get(id);\r\n return !control ? null: control.value;\r\n}\r\n\r\nexport function FormSerializable(serializer?: IFormControlSerializer | IResolveFactory): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n ReflectUtils.defineMetadata(\"dynamicFormSerializer\", serializer || defaultSerializer, target, propertyKey);\r\n };\r\n}\r\n\r\nexport function FormInput(data?: IFormInputData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n const meta = ReflectUtils.getOwnMetadata(\"design:type\", target, propertyKey);\r\n const type = meta ? meta.name : \"\";\r\n let inputType = propertyKey.indexOf(\"password\") < 0 ? \"text\" : \"password\";\r\n switch (type) {\r\n case \"Number\":\r\n inputType = \"number\";\r\n break;\r\n case \"Boolean\":\r\n inputType = \"checkbox\";\r\n break;\r\n }\r\n defineFormControl(target, propertyKey, createFormInput(propertyKey, data, inputType));\r\n };\r\n}\r\n\r\nexport function FormSelect(data?: IFormSelectData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormSelect(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormStatic(data?: IFormStaticData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormStatic(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormModel(data?: IFormModelData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormModel(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormFile(data?: IFormFileData): PropertyDecorator {\r\n return (target: any, propertyKey: string): void => {\r\n defineFormControl(target, propertyKey, createFormFile(propertyKey, data));\r\n };\r\n}\r\n\r\nexport function FormFieldSet(data: IFormFieldSet): ClassDecorator {\r\n return (target: any): void => {\r\n const sets = getFormFieldSets(target);\r\n data.classes = data.classes || \"\";\r\n sets[data.id] = data;\r\n ReflectUtils.defineMetadata(\"dynamicFormFieldSets\", sets, target);\r\n };\r\n}\r\n\r\nexport function defineFormControl(target: any, propertyKey: string, control: IFormControl): void {\r\n ReflectUtils.defineMetadata(\"dynamicFormControl\", control, target, propertyKey);\r\n}\r\n\r\nexport function getFormFieldSets(target: any): IDynamicFormFieldSets {\r\n return ReflectUtils.getMetadata(\"dynamicFormFieldSets\", target) || {};\r\n}\r\n\r\nexport function getFormControl(target: any, propertyKey: string): IFormControl {\r\n return ReflectUtils.getMetadata(\"dynamicFormControl\", target, propertyKey);\r\n}\r\n\r\nexport function getFormSerializer(target: any, propertyKey: string): IFormControlSerializer | IResolveFactory {\r\n return ReflectUtils.getMetadata(\"dynamicFormSerializer\", target, propertyKey);\r\n}\r\n\r\nexport function createFormControl(id: string, type: string, data?: IFormControlData): IFormControl {\r\n data = data || {};\r\n data.label = ObjectUtils.isNullOrUndefined(data.label) ? id : data.label;\r\n data.labelAlign = data.labelAlign || \"left\";\r\n data.fieldSet = data.fieldSet || UniqueUtils.uuid();\r\n data.classes = data.classes || \"\";\r\n data.readonly = data.readonly || emptyTester;\r\n data.hidden = data.hidden || emptyTester;\r\n data.validators = data.validators || emptyArray;\r\n return {\r\n id: id,\r\n type: type,\r\n data: data\r\n };\r\n}\r\n\r\nexport function createFormInput(id: string, data: IFormInputData, type: string = \"text\"): IFormControl {\r\n const control = createFormControl(id, \"input\", data);\r\n data = control.data;\r\n data.type = data.type || type;\r\n data.classes = !data.classes ? `form-group-${data.type}` : `${data.classes} form-group-${data.type}`;\r\n data.placeholder = data.placeholder || (data.type == \"mask\" ? \"_\" : \"\");\r\n data.step = data.step || 1;\r\n data.mask = data.mask || [/\\w*/gi];\r\n return control;\r\n}\r\n\r\nexport function createFormSelect(id: string, data: IFormSelectData): IFormControl {\r\n const control = createFormControl(id, \"select\", data);\r\n data = control.data;\r\n data.options = data.options || [];\r\n data.type = data.type || \"select\";\r\n const classType = data.type == \"select\" ? \"select\" : `select-${data.type}`;\r\n data.classes = !data.classes ? `form-group-${classType}` : `${data.classes} form-group-${classType}`;\r\n return control;\r\n}\r\n\r\nexport function createFormStatic(id: string, data: IFormStaticData): IFormControl {\r\n const control = createFormControl(id, \"static\", data);\r\n data = control.data;\r\n data.style = data.style || \"table\";\r\n return control;\r\n}\r\n\r\nexport function createFormModel(id: string, data: IFormModelData): IFormControl {\r\n const control = createFormControl(id, \"model\", data);\r\n data = control.data;\r\n data.name = data.name || \"\";\r\n return control;\r\n}\r\n\r\nexport function createFormFile(id: string, data: IFormFileData): IFormControl {\r\n const control = createFormControl(id, \"file\", data);\r\n data = control.data;\r\n data.accept = data.accept || \".jpg,.jpeg,.png\";\r\n data.multi = data.multi || false;\r\n data.baseUrl = ObjectUtils.isString(data.baseUrl) ? data.baseUrl : \"assets/\";\r\n data.uploadUrl = ObjectUtils.isString(data.uploadUrl) ? data.uploadUrl : \"assets\";\r\n data.createUploadData = data.createUploadData || ((file: File) => {\r\n const form = new FormData();\r\n form.append(\"file\", file);\r\n return form;\r\n });\r\n return control;\r\n}\r\n","import {AbstractControl, ValidationErrors} from \"@angular/forms\";\r\n\r\nexport function validateJSON(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (!value) return null;\r\n try {\r\n JSON.parse(value);\r\n return null;\r\n } catch (e) {\r\n return {json: true};\r\n }\r\n}\r\n\r\nexport function validateRequiredTranslation(control: AbstractControl): ValidationErrors | null {\r\n const value: any[] = control.value;\r\n if (!value || value.length == 0) return {requiredTranslation: true};\r\n return value.findIndex(t => (t.lang == \"de\" || t.lang == \"en\") && !t.translation) < 0\r\n ? null\r\n : {requiredTranslation: true};\r\n}\r\n\r\nexport function validatePhone(control: AbstractControl): ValidationErrors | null {\r\n const value = control.value;\r\n if (!value) return Promise.resolve(null);\r\n const phoneRegexp = /^(?:\\d){10,12}$/;\r\n return phoneRegexp.test(value) ? null : {phone: true};\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import {Subject} from \"rxjs\";\r\nimport {AbstractControl} from \"@angular/forms\";\r\nimport {DynamicFormControlModel} from \"@ng-dynamic-forms/core\";\r\n\r\nexport class FormSubject<T> extends Subject<T> {\r\n\r\n private readonly notifyCallback: (controlModel: DynamicFormControlModel, control: AbstractControl) => T | Promise<T>;\r\n\r\n constructor(notifyCallback: (formModel: DynamicFormControlModel, control: AbstractControl) => T | Promise<T>) {\r\n super();\r\n this.notifyCallback = notifyCallback;\r\n }\r\n\r\n async notify(controlModel: DynamicFormControlModel, control: AbstractControl): Promise<any> {\r\n let value = this.notifyCallback(controlModel, control);\r\n if (value instanceof Promise) {\r\n value = await value;\r\n }\r\n this.next(value);\r\n }\r\n}\r\n","import {\r\n DynamicFormArrayModel as Base,\r\n DynamicFormArrayModelConfig as ConfigBase,\r\n DynamicFormControlLayout\r\n} from \"@ng-dynamic-forms/core\";\r\n\r\nexport interface DynamicFormArrayModelConfig extends ConfigBase {\r\n additional?: {[key: string]: any};\r\n}\r\n\r\nexport class DynamicFormArrayModel extends Base {\r\n\r\n readonly additional: {[key: string]: any};\r\n\r\n constructor(config: DynamicFormArrayModelConfig, layout?: DynamicFormControlLayout) {\r\n super(config, layout);\r\n this.additional = config.additional || {};\r\n }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {AbstractControl, FormArray, FormGroup} from \"@angular/forms\";\r\nimport {Subject} from \"rxjs\";\r\nimport {\r\n DynamicCheckboxModel,\r\n DynamicCheckboxModelConfig,\r\n DynamicFileUploadModel,\r\n DynamicFileUploadModelConfig,\r\n DynamicFormComponent,\r\n DynamicFormComponentService,\r\n DynamicFormControlModel,\r\n DynamicFormGroupModel,\r\n DynamicFormGroupModelConfig,\r\n DynamicFormModel,\r\n DynamicFormOptionConfig,\r\n DynamicFormService as Base,\r\n DynamicFormValidationService,\r\n DynamicFormValueControlModel,\r\n DynamicFormValueControlModelConfig,\r\n DynamicInputModel,\r\n DynamicInputModelConfig,\r\n DynamicSelectModel,\r\n DynamicSelectModelConfig,\r\n DynamicTextAreaModel,\r\n DynamicTextAreaModelConfig,\r\n DynamicValidatorsConfig,\r\n DynamicFormArrayModel as DynamicFormArrayModelBase\r\n} from \"@ng-dynamic-forms/core\";\r\nimport {\r\n IApiService,\r\n ILanguageService,\r\n IOpenApiSchema,\r\n IOpenApiSchemaProperty,\r\n IOpenApiSchemas,\r\n ObjectUtils,\r\n OpenApiService,\r\n StringUtils\r\n} from \"@stemy/ngx-utils\";\r\n\r\nimport {IFormControlSerializer} from \"../common-types\";\r\n\r\nimport {FormSubject} from \"../utils/form-subject\";\r\nimport {DynamicFormArrayModel, DynamicFormArrayModelConfig} from \"../utils/dynamic-form-array.model\";\r\n\r\n@Injectable()\r\nexport class DynamicFormService extends Base {\r\n\r\n get api(): IApiService {\r\n return this.openApi.api;\r\n }\r\n\r\n get language(): ILanguageService {\r\n return this.api.language;\r\n }\r\n\r\n readonly onDetectChanges: EventEmitter<DynamicFormComponent>;\r\n protected schemas: IOpenApiSchemas;\r\n\r\n constructor(cs: DynamicFormComponentService, vs: DynamicFormValidationService, readonly openApi: OpenApiService) {\r\n super(cs, vs);\r\n this.onDetectChanges = new EventEmitter<DynamicFormComponent>();\r\n }\r\n\r\n patchGroup(value: any, formModel: DynamicFormModel, formGroup: FormGroup): void {\r\n this.patchValueRecursive(value, formModel, formGroup);\r\n this.detectChanges();\r\n formGroup.patchValue(ObjectUtils.copy(value));\r\n }\r\n\r\n patchForm(value: any, component: DynamicFormComponent): void {\r\n this.patchValueRecursive(value, component.model, component.group);\r\n this.detectChanges(component);\r\n component.group.patchValue(value);\r\n }\r\n\r\n serialize(formModel: DynamicFormModel, formGroup: FormGroup): Promise<any> {\r\n return this.serializeRecursive(formModel, formGroup);\r\n }\r\n\r\n notifyChanges(formModel: DynamicFormModel, formGroup: FormGroup): void {\r\n this.notifyChangesRecursive(formModel, formGroup);\r\n }\r\n\r\n updateSelectOptions(formControlModel: DynamicFormControlModel, formControl: AbstractControl): void {\r\n if (formControlModel instanceof DynamicSelectModel) {\r\n let options = formControlModel.options$;\r\n if (options instanceof FormSubject) {\r\n options.notify(formControlModel, formControl);\r\n return;\r\n }\r\n while (options instanceof Subject && options.source) {\r\n options = options.source;\r\n if (options instanceof FormSubject) {\r\n options.notify(formControlModel, formControl);\r\n }\r\n }\r\n }\r\n }\r\n\r\n showErrors(form: DynamicFormComponent): void {\r\n this.showErrorsForGroup(form.group);\r\n this.detectChanges(form);\r\n }\r\n\r\n detectChanges(formComponent?: DynamicFormComponent) {\r\n super.detectChanges(formComponent);\r\n this.onDetectChanges.emit(formComponent);\r\n }\r\n\r\n protected patchValueRecursive(value: any, formModel: DynamicFormModel, formGroup: FormGroup): void {\r\n Object.keys(value).forEach(key => {\r\n const subModel = this.findModelById(key, formModel);\r\n const subValue = value[key];\r\n if (!subModel) return;\r\n const subControl = this.findControlByModel(subModel, formGroup);\r\n if (subModel instanceof DynamicSelectModel && ObjectUtils.isObject(subValue)) {\r\n value[key] = subValue.id || subValue._id || subValue;\r\n return;\r\n }\r\n if (subModel instanceof DynamicFormArrayModelBase) {\r\n const length = Array.isArray(subValue) ? subValue.length : 0;\r\n const subArray = subControl as FormArray;\r\n while (subModel.size > length) {\r\n this.removeFormArrayGroup(0, subArray, subModel);\r\n }\r\n while (subModel.size < length) {\r\n this.insertFormArrayGroup(subModel.size, subArray, subModel);\r\n }\r\n for (let i = 0; i < length; i++) {\r\n const itemModel = subModel.get(i);\r\n this.patchValueRecursive(subValue[i], itemModel.group, subArray.at(i) as FormGroup);\r\n }\r\n return;\r\n }\r\n if (subModel instanceof DynamicFormGroupModel) {\r\n this.patchValueRecursive(subValue, subModel.group, subControl as FormGroup);\r\n }\r\n });\r\n }\r\n\r\n protected async serializeRecursive(formModel: DynamicFormModel, formGroup: FormGroup): Promise<any> {\r\n const result = {};\r\n if (!formModel || !formGroup || !formGroup.value) return result;\r\n for (const i in formModel) {\r\n const subModel = formModel[i] as DynamicFormValueControlModel<any>;\r\n const subControl = this.findControlByModel(subModel, formGroup);\r\n const serializer = subModel.additional?.serializer as IFormControlSerializer;\r\n if (ObjectUtils.isFunction(serializer)) {\r\n result[subModel.id] = await serializer(subModel, subControl);\r\n continue;\r\n }\r\n if (subModel instanceof DynamicFormArrayModelBase) {\r\n const length = Array.isArray(subControl.value) ? subControl.value.length : 0;\r\n const subArray = subControl as FormArray;\r\n const resArray = [];\r\n for (let i = 0; i < length; i++) {\r\n const itemModel = subModel.get(i);\r\n resArray.push(\r\n await this.serializeRecursive(itemModel.group, subArray.at(i) as FormGroup)\r\n );\r\n }\r\n result[subModel.id] = resArray;\r\n continue;\r\n }\r\n if (subModel instanceof DynamicFormGroupModel) {\r\n result[subModel.id] = await this.serializeRecursive(subModel.group, subControl as FormGroup);\r\n continue;\r\n }\r\n if (subModel instanceof DynamicInputModel && !ObjectUtils.isNullOrUndefined(subControl.value)) {\r\n result[subModel.id] = subModel.inputType == \"number\"\r\n ? parseFloat((`${subControl.value}` || \"0\").replace(/,/gi, \".\")) || null\r\n : subControl.value;\r\n continue;\r\n }\r\n result[subModel.id] = subControl.value;\r\n }\r\n return result;\r\n }\r\n\r\n protected notifyChangesRecursive(formModel: DynamicFormModel, formGroup: FormGroup): void {\r\n if (!formModel || !formGroup) return;\r\n for (const i in formModel) {\r\n const subModel = formModel[i] as DynamicFormValueControlModel<any>;\r\n const subControl = this.findControlByModel(subModel, formGroup);\r\n if (subModel instanceof DynamicFormArrayModelBase) {\r\n const length = Array.isArray(subControl.value) ? subControl.value.length : 0;\r\n const subArray = subControl as FormArray;\r\n for (let i = 0; i < length; i++) {\r\n const itemModel = subModel.get(i);\r\n this.notifyChangesRecursive(itemModel.group, subArray.at(i) as FormGroup);\r\n }\r\n continue;\r\n }\r\n if (subModel instanceof DynamicFormGroupModel) {\r\n this.notifyChangesRecursive(subModel.group, subControl as FormGroup);\r\n continue;\r\n }\r\n this.updateSelectOptions(subModel, subControl);\r\n }\r\n }\r\n\r\n protected showErrorsForGroup(formGroup: FormGroup): void {\r\n if (!formGroup) return;\r\n formGroup.markAsTouched({onlySelf: true});\r\n const controls = Object.keys(formGroup.controls).map(id => formGroup.controls[id]);\r\n this.showErrorsForControls(controls);\r\n }\r\n\r\n protected showErrorsForControls(controls: AbstractControl[]): void {\r\n controls.forEach(control => {\r\n if (control instanceof FormGroup) {\r\n this.showErrorsForGroup(control);\r\n return;\r\n }\r\n control.markAsTouched({onlySelf: true});\r\n if (control instanceof FormArray) {\r\n this.showErrorsForControls(control.controls);\r\n }\r\n });\r\n }\r\n\r\n async getFormModelForSchema(name: string): Promise<DynamicFormModel> {\r\n this.api.cache = {};\r\n this.schemas = await this.openApi.getSchemas();\r\n return this.getFormModelForSchemaDef(this.schemas[name]);\r\n }\r\n\r\n protected getFormModelForSchemaDef(schema: IOpenApiSchema): DynamicFormModel {\r\n if (!schema)\r\n return [];\r\n return Object.keys(schema.properties || {}).map(p => {\r\n const property = schema.properties[p];\r\n return this.getFormControlModel(property, schema);\r\n }).filter(t => null !== t);\r\n }\r\n\r\n protected getFormControlModel(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicFormControlModel {\r\n if (Array.isArray(property.enum) || ObjectUtils.isString(property.optionsPath)) {\r\n return new DynamicSelectModel<any>(this.getFormSelectConfig(property, schema));\r\n }\r\n switch (property.type) {\r\n case \"string\":\r\n case \"number\":\r\n case \"integer\":\r\n return new DynamicInputModel(this.getFormInputConfig(property, schema));\r\n case \"textarea\":\r\n return new DynamicTextAreaModel(this.getFormTextareaConfig(property, schema));\r\n case \"boolean\":\r\n return new DynamicCheckboxModel(this.getFormCheckboxConfig(property, schema));\r\n case \"list\":\r\n return new DynamicSelectModel<any>(this.getFormSelectConfig(property, schema));\r\n case \"array\":\r\n if (property.items?.$ref || property.$ref) {\r\n return new DynamicFormArrayModel(this.getFormArrayConfig(property, schema));\r\n } else if (property.items?.enum || property.enum) {\r\n return new DynamicSelectModel<any>(this.getFormSelectConfig(property, schema));\r\n } else {\r\n return new DynamicInputModel(this.getFormInputConfig(property, schema));\r\n }\r\n case \"file\":\r\n return new DynamicFileUploadModel(this.getFormUploadConfig(property, schema));\r\n }\r\n if (property.$ref) {\r\n return new DynamicFormGroupModel(this.getFormGroupConfig(property, schema));\r\n }\r\n return null;\r\n }\r\n\r\n protected getFormControlConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicFormValueControlModelConfig<any> {\r\n const validators = this.getValidators(property, schema);\r\n const errorMessages = Object.keys(validators).reduce((res, key) => {\r\n res[key] = `error.${key}`;\r\n return res;\r\n }, {});\r\n return {\r\n id: property.id,\r\n label: ObjectUtils.isString(property.label) ? property.label : property.id,\r\n hidden: property.hidden,\r\n disabled: property.disabled,\r\n validators,\r\n errorMessages,\r\n additional: Object.assign({}, property)\r\n };\r\n }\r\n\r\n protected getFormArrayConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicFormArrayModelConfig {\r\n const ref = property.items?.$ref || property.$ref || \"\";\r\n const subSchema = this.schemas[ref.split(\"/\").pop()];\r\n return Object.assign(this.getFormControlConfig(property, schema), {groupFactory: () => this.getFormModelForSchemaDef(subSchema)});\r\n }\r\n\r\n protected getFormGroupConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicFormGroupModelConfig {\r\n const ref = property.$ref || \"\";\r\n const subSchema = this.schemas[ref.split(\"/\").pop()];\r\n return Object.assign(this.getFormControlConfig(property, schema), {group: this.getFormModelForSchemaDef(subSchema)});\r\n }\r\n\r\n protected getFormInputConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicInputModelConfig {\r\n let inputType = StringUtils.has(property.id, \"password\", \"Password\") ? \"password\" : (property.items?.type || property.type);\r\n switch (inputType) {\r\n case \"boolean\":\r\n inputType = \"checkbox\";\r\n break;\r\n case \"textarea\":\r\n inputType = \"textarea\";\r\n break;\r\n case \"integer\":\r\n inputType = \"number\";\r\n break;\r\n }\r\n return Object.assign(\r\n this.getFormControlConfig(property, schema),\r\n {\r\n inputType,\r\n autoComplete: property.autoComplete || \"off\",\r\n multiple: property.type == \"array\",\r\n accept: ObjectUtils.isString(property.accept) ? property.accept : null,\r\n mask: ObjectUtils.isString(property.mask) ? property.mask : null,\r\n pattern: ObjectUtils.isString(property.pattern) ? property.pattern : null,\r\n step: isNaN(property.step) ? 1 : property.step,\r\n min: isNaN(property.min) ? Number.MIN_SAFE_INTEGER : property.min,\r\n max: isNaN(property.max) ? Number.MAX_SAFE_INTEGER : property.max,\r\n }\r\n );\r\n }\r\n\r\n protected getFormTextareaConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicTextAreaModelConfig {\r\n return Object.assign(\r\n this.getFormControlConfig(property, schema),\r\n {\r\n cols: property.cols || null,\r\n rows: property.rows || 10,\r\n wrap: property.wrap || false,\r\n autoComplete: property.autoComplete || \"off\",\r\n multiple: property.type == \"array\"\r\n }\r\n );\r\n }\r\n\r\n protected getFormSelectConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicSelectModelConfig<any> {\r\n return Object.assign(\r\n this.getFormControlConfig(property, schema),\r\n {\r\n options: this.getFormSelectOptions(property, schema),\r\n multiple: property.type == \"array\"\r\n }\r\n );\r\n }\r\n\r\n protected getFormCheckboxConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicCheckboxModelConfig {\r\n return Object.assign(\r\n this.getFormControlConfig(property, schema),\r\n {\r\n indeterminate: property.indeterminate === true\r\n }\r\n );\r\n }\r\n\r\n protected async translateOptions(options: DynamicFormOptionConfig<any>[]): Promise<DynamicFormOptionConfig<any>[]> {\r\n if (!options) return [];\r\n for (const option of options) {\r\n option.label = await this.language.getTranslation(option.label);\r\n }\r\n return options;\r\n }\r\n\r\n protected getFormSelectOptions(property: IOpenApiSchemaProperty, schema: IOpenApiSchema) {\r\n const $enum = property.items?.enum || property.enum;\r\n if (property.optionsPath) {\r\n return new FormSubject((formModel, control) => {\r\n let path = property.optionsPath;\r\n let target = control;\r\n if (path.startsWith(\"$root\")) {\r\n path = path.substr(5);\r\n while (target.parent) {\r\n target = target.parent;\r\n }\r\n }\r\n while (path.startsWith(\".\")) {\r\n path = path.substr(1);\r\n if (target.parent) {\r\n target = target.parent;\r\n }\r\n }\r\n const value = ObjectUtils.getValue(target.value, path);\r\n const options = (!ObjectUtils.isArray(value) ? []: value).map(value => ({value, label: value}));\r\n return this.translateOptions(options);\r\n });\r\n }\r\n if (ObjectUtils.isArray($enum)) {\r\n return new FormSubject(() => {\r\n const options = $enum.map(value => {\r\n const label = property.translatable ? `${property.id}.${value}` : value;\r\n return {value, label};\r\n });\r\n return this.translateOptions(options);\r\n });\r\n }\r\n return new FormSubject(async () => {\r\n this.api.cache[property.endpoint] = this.api.cache[property.endpoint] || this.api.list(property.endpoint, this.api.makeListParams(1, -1)).then(result => {\r\n return result.items.map(i => {\r\n return {value: i.id || i._id, label: i[property.labelField] || i.label || i.id || i._id};\r\n });\r\n });\r\n const options = (await this.api.cache[property.endpoint]).map(t => Object.assign({}, t));\r\n return this.translateOptions(options);\r\n });\r\n }\r\n\r\n protected getFormUploadConfig(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicFileUploadModelConfig {\r\n const url = this.api.url(property.url || \"assets\");\r\n const {accept, autoUpload, maxSize, minSize, removeUrl, showFileList} = property;\r\n return Object.assign(this.getFormControlConfig(property, schema), {\r\n url,\r\n accept,\r\n autoUpload,\r\n maxSize,\r\n minSize,\r\n removeUrl,\r\n showFileList\r\n });\r\n }\r\n\r\n protected getValidators(property: IOpenApiSchemaProperty, schema: IOpenApiSchema): DynamicValidatorsConfig {\r\n const validators: DynamicValidatorsConfig = {};\r\n if (ObjectUtils.isArray(schema.required) && schema.required.indexOf(property.id) >= 0) {\r\n validators.required = null;\r\n }\r\n if (property.minLength) {\r\n validators.minLength = property.minLength;\r\n }\r\n if (property.maxLength) {\r\n validators.maxLength = property.maxLength;\r\n }\r\n if (property.min) {\r\n validators.min = property.min;\r\n }\r\n if (property.max) {\r\n validators.max = property.max;\r\n }\r\n switch (property.format) {\r\n case \"email\":\r\n validators.email = null;\r\n break;\r\n }\r\n return validators;\r\n }\r\n}\r\n","import {\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {IAsyncMessage, IToasterService, TOASTER_SERVICE} from \"@stemy/ngx-utils\";\r\nimport {AsyncSubmitMethod, IDynamicFormBase} from \"../common-types\";\r\n\r\n@Directive({\r\n selector: \"[async-submit]\",\r\n exportAs: \"async-submit\"\r\n})\r\nexport class AsyncSubmitDirective implements OnInit, OnDestroy {\r\n\r\n @Input(\"async-submit\") method: AsyncSubmitMethod;\r\n @Input() form: IDynamicFormBase;\r\n @Input() context: any;\r\n\r\n @Output() onSuccess: EventEmitter<IAsyncMessage>;\r\n @Output() onError: EventEmitter<IAsyncMessage>;\r\n\r\n private loading: boolean;\r\n private disabled: boolean;\r\n private callback: Function;\r\n private onStatusChange: Subscription;\r\n private onSubmit: Subscription;\r\n\r\n @HostBinding(\"class.disabled\")\r\n get isDisabled(): boolean {\r\n return this.disabled;\r\n }\r\n\r\n set isDisabled(value: boolean) {\r\n this.disabled = value;\r\n if (value) {\r\n this.renderer.setAttribute(this.elem.nativeElement, \"disabled\", \"disabled\");\r\n return;\r\n }\r\n this.renderer.removeAttribute(this.elem.nativeElement, \"disabled\");\r\n }\r\n\r\n @HostBinding(\"class.loading\")\r\n get isLoading(): boolean {\r\n return this.loading;\r\n }\r\n\r\n constructor(@Inject(TOASTER_SERVICE) private toaster: IToasterService,\r\n readonly cdr: ChangeDetectorRef,\r\n readonly elem: ElementRef,\r\n readonly renderer: Renderer2) {\r\n this.onSuccess = new EventEmitter<IAsyncMessage>();\r\n this.onError = new EventEmitter<IAsyncMessage>();\r\n if (elem.nativeElement.tagName !== \"BUTTON\") return;\r\n renderer.setAttribute(elem.nativeElement, \"type\", \"button\");\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.form) return;\r\n this.isDisabled = this.form.status !== \"VALID\";\r\n this.cdr.detectChanges();\r\n this.onStatusChange = this.form.onStatusChange.subscribe(() => {\r\n this.isDisabled = this.form.status !== \"VALID\";\r\n this.cdr.detectChanges();\r\n if (!this.callback || this.form.status == \"PENDING\") return;\r\n if (!this.disabled) {\r\n this.callback();\r\n }\r\n this.callback = null;\r\n });\r\n this.onSubmit = this.form.onSubmit.subscribe(() => this.callMethod());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.onStatusChange) this.onStatusChange.unsubscribe();\r\n if (this.onSubmit) this.onSubmit.unsubscribe();\r\n }\r\n\r\n @HostListener(\"click\")\r\n click(): void {\r\n this.callback = () => this.callMethod();\r\n if (this.form.status !== \"VALID\" && this.form.status !== \"INVALID\") return;\r\n this.callback();\r\n this.callback = null;\r\n }\r\n\r\n callMethod(): void {\r\n if (this.loading) return;\r\n this.loading = true;\r\n this.method(this.form, this.context).then(result => {\r\n this.loading = false;\r\n if (result) {\r\n this.onSuccess.emit(result);\r\n this.toaster.success(result.message, result.context);\r\n }\r\n }, reason => {\r\n if (!reason || !reason.message)\r\n throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n this.loading = false;\r\n this.onError.emit(reason);\r\n this.toaster.error(reason.message, reason.context);\r\n });\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n SimpleChanges, ViewChild,\r\n ViewChildren\r\n} from \"@angular/core\";\r\nimport {FormArray, FormGroup, NgForm} from \"@angular/forms\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {first} from \"rxjs/operators\";\r\nimport {\r\n DynamicFormArrayModel,\r\n DynamicFormComponent,\r\n DynamicFormComponentService,\r\n DynamicFormControlEvent,\r\n DynamicFormLayout,\r\n DynamicFormModel,\r\n DynamicTemplateDirective\r\n} from \"@ng-dynamic-forms/core\";\r\nimport {EventsService, ObservableUtils} from \"@stemy/ngx-utils\";\r\nimport {DynamicFormState, IDynamicForm, IDynamicFormBase} from \"../../common-types\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\n\r\n@Component({\r\n selector: \"dynamic-base-form\",\r\n template: \"\",\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class DynamicBaseFormComponent extends DynamicFormComponent implements OnChanges, AfterViewInit, IDynamicForm {\r\n\r\n @Input() group: FormGroup;\r\n @Input() model: DynamicFormModel;\r\n @Input() layout: DynamicFormLayout;\r\n @Input() labelPrefix: string;\r\n\r\n @Output() blur: EventEmitter<DynamicFormControlEvent>;\r\n @Output() change: EventEmitter<DynamicFormControlEvent>;\r\n @Output() focus: EventEmitter<DynamicFormControlEvent>;\r\n\r\n @ContentChildren(DynamicTemplateDirective) contentTemplates: QueryList<DynamicTemplateDirective>;\r\n @ViewChildren(DynamicTemplateDirective) viewTemplates: QueryList<DynamicTemplateDirective>;\r\n\r\n get status(): DynamicFormState {\r\n return !this.group ? null : this.group.status as DynamicFormState;\r\n }\r\n\r\n @Output() readonly onStatusChange: EventEmitter<IDynamicFormBase>;\r\n @Output() readonly onValueChange: EventEmitter<IDynamicFormBase>;\r\n @Output() readonly onSubmit: EventEmitter<IDynamicFormBase>;\r\n\r\n @ViewChild(NgForm)\r\n protected ngForm: NgForm;\r\n protected subscription: Subscription;\r\n protected groupSubscription: Subscription;\r\n\r\n constructor(@Inject(DynamicFormService) readonly formService: DynamicFormService,\r\n @Inject(EventsService) readonly events: EventsService,\r\n changeDetectorRef: ChangeDetectorRef,\r\n componentService: DynamicFormComponentService,) {\r\n super(changeDetectorRef, componentService);\r\n this.blur = new EventEmitter<DynamicFormControlEvent>();\r\n this.change = new EventEmitter<DynamicFormControlEvent>();\r\n this.focus = new EventEmitter<DynamicFormControlEvent>();\r\n this.onStatusChange = new EventEmitter<IDynamicFormBase>();\r\n this.onValueChange = new EventEmitter<IDynamicFormBase>();\r\n this.onSubmit = new EventEmitter<IDynamicFormBase>();\r\n this.templates = new QueryList<DynamicTemplateDirective>();\r\n this.subscription = new Subscription();\r\n this.groupSubscription = new Subscription();\r\n this.labelPrefix = \"label\";\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.groupSubscription.unsubscribe();\r\n if (this.group) {\r\n this.groupSubscription = ObservableUtils.multiSubscription(\r\n this.group.statusChanges.subscribe(() => {\r\n this.onStatusChange.emit(this);\r\n }),\r\n this.group.valueChanges.subscribe(() => {\r\n this.onValueChange.emit(this);\r\n this.formService.notifyChanges(this.model, this.group);\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.subscription = ObservableUtils.multiSubscription(\r\n ObservableUtils.subscribe(\r\n {\r\n subjects: [this.contentTemplates.changes, this.viewTemplates.changes],\r\n cb: () => {\r\n const templates = this.contentTemplates.toArray().concat(this.viewTemplates.toArray());\r\n this.templates.reset(templates);\r\n }\r\n }\r\n ),\r\n this.events.languageChanged.subscribe(() => {\r\n this.formService.detectChanges(this)\r\n }),\r\n this.ngForm.ngSubmit.subscribe(() => {\r\n this.onSubmit.emit(this);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.subscription.unsubscribe();\r\n this.groupSubscription.unsubscribe();\r\n }\r\n\r\n insertFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\r\n this.formService.insertFormArrayGroup(index, formArray, formArrayModel);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n removeFormArrayGroup(index: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\r\n this.formService.removeFormArrayGroup(index, formArray, formArrayModel);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n moveFormArrayGroup(index: number, step: number, formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\r\n this.formService.moveFormArrayGroup(index, step, formArray, formArrayModel);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n clearFormArray(formArray: FormArray, formArrayModel: DynamicFormArrayModel): void {\r\n this.formService.clearFormArray(formArray, formArrayModel);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n validate(showErrors: boolean = true): Promise<any> {\r\n if (!this.group) return Promise.resolve();\r\n return new Promise<any>((resolve, reject) => {\r\n this.group.statusChanges.pipe(first(status => status == \"VALID\" || status == \"INVALID\")).subscribe(status => {\r\n if (showErrors) {\r\n this.formService.showErrors(this);\r\n }\r\n if (status == \"VALID\") {\r\n resolve(null);\r\n return;\r\n }\r\n reject(null);\r\n });\r\n this.group.updateValueAndValidity();\r\n });\r\n }\r\n\r\n async serialize(validate?: boolean): Promise<any> {\r\n if (!this.group) return null;\r\n if (validate) {\r\n await this.validate();\r\n }\r\n return await this.formService.serialize(this.model, this.group);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentFactoryResolver,\r\n ContentChildren,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {FormGroup} from \"@angular/forms\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {\r\n DYNAMIC_FORM_CONTROL_TYPE_ARRAY,\r\n DynamicFormArrayGroupModel,\r\n DynamicFormComponentService,\r\n DynamicFormControl,\r\n DynamicFormControlContainerComponent,\r\n DynamicFormControlEvent,\r\n DynamicFormControlModel,\r\n DynamicFormLayout,\r\n DynamicFormLayoutService,\r\n DynamicFormRelationService,\r\n DynamicFormValidationService,\r\n DynamicTemplateDirective\r\n} from \"@ng-dynamic-forms/core\";\r\nimport {DynamicBaseFormComponent} from \"./dynamic-base-form.component\";\r\nimport {DynamicFormService} from \"../../services/dynamic-form.service\";\r\nimport {ObjectUtils} from \"@stemy/ngx-utils\";\r\nimport {OnCreatedFormControl} from \"../../common-types\";\r\n\r\n@Component({\r\n selector: \"dynamic-base-form-control\",\r\n template: \"\",\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class DynamicBaseFormControlContainerComponent extends DynamicFormControlContainerComponent implements OnInit {\r\n\r\n @ContentChildren(DynamicTemplateDirective) contentTemplateList: QueryList<DynamicTemplateDirective>;\r\n\r\n @HostBinding(\"class\") klass;\r\n\r\n @Input() context: DynamicFormArrayGroupModel | null = null;\r\n @Input() group: FormGroup;\r\n @Input() hostClass: string[];\r\n @Input(\"templates\") inputTemplateList: QueryList<DynamicTemplateDirective>;\r\n @Input() layout: DynamicFormLayout;\r\n @Input() model: DynamicFormControlModel;\r\n\r\n @Output() blur: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>();\r\n @Output() change: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>();\r\n @Output() focus: EventEmitter<DynamicFormControlEvent> = new EventEmitter<DynamicFormControlEvent>();\r\n\r\n @ViewChild(\"componentViewContainer\", {read: ViewContainerRef, static: true}) componentViewContainerRef: ViewContainerRef;\r\n\r\n protected onDetectChanges: Subscription;\r\n\r\n get componentType(): Type<DynamicFormControl> | null {\r\n return this.componentService.getCustomComponentType(this.model) ?? this.getComponentType(this.model);\r\n }\r\n\r\n get startTemplate(): DynamicTemplateDirective {\r\n return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)\r\n ? this.layoutService.getAlignedTemplate(this.model, this.templates, \"ARRAY_START\" as any)\r\n : this.layoutService.getStartTemplate(this.model, this.templates);\r\n }\r\n\r\n get endTemplate(): DynamicTemplateDirective {\r\n return (this.model.type == DYNAMIC_FORM_CONTROL_TYPE_ARRAY)\r\n ? this.layoutService.getAlignedTemplate(this.model, this.templates, \"ARRAY_END\" as any)\r\n : this.layoutService.getEndTemplate(this.model, this.templates);\r\n }\r\n\r\n get formService(): DynamicFormService {\r\n return this.form.formService;\r\n }\r\n\r\n constructor(readonly form: DynamicBaseFormComponent,\r\n readonly changeDetectorRef: ChangeDetectorRef,\r\n readonly componentFactoryResolver: ComponentFactoryResolver,\r\n readonly layoutService: DynamicFormLayoutService,\r\n readonly validationService: DynamicFormValidationService,\r\n readonly componentService: DynamicFormComponentService,\r\n readonly relationService: DynamicFormRelationService) {\r\n super(changeDetectorRef, componentFactoryResolver, layoutService, validationService, componentService, relationService);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onDetectChanges = this.formService.onDetectChanges.subscribe(form => {\r\n if (form !== this.form) return;\r\n this.changeDetectorRef.detectChanges();\r\n this.formService.updateSelectOptions(this.model, this.control);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.onDetectChanges.unsubscribe();\r\n }\r\n\r\n protected createFormControlComponent() {\r\n super.createFormControlComponent();\r\n const component = this.componentRef?.instance as OnCreatedFormControl;\r\n if (!component || !ObjectUtils.isFunction(component.onCreated)) return;\r\n component.onCreated();\r\n }\r\n\r\n protected getComponentType(model: DynamicFormControlModel): Type<DynamicFormControl> | null {\r\n return null;\r\n }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {DynamicFormControlModel, DynamicFormValidationService as Base} from \"@ng-dynamic-forms/core\";\r\nimport {AbstractControl} from \"@angular/forms\";\r\n\r\n@Injectable()\r\nexport class DynamicFormValidationService extends Base {\r\n\r\n showErrorMessages(control: AbstractControl, model: DynamicFormControlModel, hasFocus: boolean): boolean {\r\n return super.showErrorMessages(control, model, hasFocus);\r\n }\r\n}\r\n","import {ModuleWithProviders, NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, NG_VALIDATORS, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {\r\n DYNAMIC_VALIDATORS,\r\n DynamicFormService as BaseDynamicFormService,\r\n DynamicFormValidationService as BaseDynamicFormValidationService,\r\n Validator,\r\n ValidatorFactory\r\n} from \"@ng-dynamic-forms/core\";\r\nimport {NgxUtilsModule} from \"@stemy/ngx-utils\";\r\n\r\nimport {DynamicFormService} from \"./services/dynamic-form.service\";\r\n\r\nimport {AsyncSubmitDirective} from \"./directives/async-submit.directive\";\r\n\r\nimport {validateJSON, validatePhone, validateRequiredTranslation} from \"./utils/validators\";\r\n\r\nimport {DynamicBaseFormComponent} from \"./components/base/dynamic-base-form.component\";\r\nimport {DynamicBaseFormControlContainerComponent} from \"./components/base/dynamic-base-form-control-container.component\";\r\nimport {DynamicFormValidationService} from \"./services/dynamic-form-validation.service\";\r\n\r\n// --- Components ---\r\nexport const components = [\r\n DynamicBaseFormComponent,\r\n DynamicBaseFormControlContainerComponent\r\n];\r\n\r\n// --- Directives ---\r\nexport const directives = [\r\n AsyncSubmitDirective,\r\n];\r\n\r\n// --- Pipes ---\r\nexport const pipes = [];\r\n\r\n@NgModule({\r\n declarations: [\r\n ...components,\r\n ...directives,\r\n ...pipes\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxUtilsModule\r\n ],\r\n exports: [\r\n ...components,\r\n ...directives,\r\n ...pipes,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n NgxUtilsModule\r\n ],\r\n entryComponents: components,\r\n providers: [\r\n ...pipes,\r\n {provide: NG_VALIDATORS, useValue: validateJSON, multi: true},\r\n {provide: NG_VALIDATORS, useValue: validateRequiredTranslation, multi: true},\r\n {provide: NG_VALIDATORS, useValue: validatePhone, multi: true},\r\n {\r\n provide: DYNAMIC_VALIDATORS,\r\n useValue: new Map<string, Validator | ValidatorFactory>([\r\n [\"validateJSON\", validateJSON],\r\n [\"validateRequiredTranslation\", validateRequiredTranslation],\r\n [\"validatePhone\", validatePhone],\r\n ])\r\n }\r\n ]\r\n})\r\nexport class NgxDynamicFormModule {\r\n\r\n static forRoot(): ModuleWithProviders<NgxDynamicFormModule> {\r\n return {\r\n ngModule: NgxDynamicFormModule,\r\n providers: [\r\n DynamicFormService,\r\n DynamicFormValidationService,\r\n {\r\n provide: BaseDynamicFormService,\r\n useExisting: DynamicFormService\r\n },\r\n {\r\n provide: BaseDynamicFormValidationService,\r\n useExisting: DynamicFormValidationService\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n"]}
|
package/esm2015/ngx-dynamic-form/components/base/dynamic-base-form-control-container.component.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactoryResolver, ContentChildren, EventEmitter, HostBinding, Input, Output, ViewChild, ViewContainerRef } from "@angular/core";
|
|
2
|
-
import { DYNAMIC_FORM_CONTROL_TYPE_ARRAY, DynamicFormComponentService, DynamicFormControlContainerComponent, DynamicFormLayoutService, DynamicFormRelationService, DynamicFormValidationService, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
|
|
3
|
-
import { DynamicBaseFormComponent } from "./dynamic-base-form.component";
|
|
4
|
-
import { ObjectUtils } from "@stemy/ngx-utils";
|
|
5
|
-
export class DynamicBaseFormControlContainerComponent extends DynamicFormControlContainerComponent {
|
|
6
|
-
constructor(form, changeDetectorRef, componentFactoryResolver, layoutService, validationService, componentService, relationService) {
|
|
7
|
-
super(changeDetectorRef, componentFactoryResolver, layoutService, validationService, componentService, relationService);
|
|
8
|
-
this.form = form;
|
|
9
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
10
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
11
|
-
this.layoutService = layoutService;
|
|
12
|
-
this.validationService = validationService;
|
|
13
|
-
this.componentService = componentService;
|
|
14
|
-
this.relationService = relationService;
|
|
15
|
-
this.context = null;
|
|
16
|
-
this.blur = new EventEmitter();
|
|
17
|
-
this.change = new EventEmitter();
|
|
18
|
-
this.focus = new EventEmitter();
|
|
19
|
-
}
|
|
20
|
-
get componentType() {
|
|
21
|
-
var _a;
|
|
22
|
-
return (_a = this.componentService.getCustomComponentType(this.model)) !== null && _a !== void 0 ? _a : this.getComponentType(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
|
-
this.onDetectChanges = this.formService.onDetectChanges.subscribe(form => {
|
|
39
|
-
if (form !== this.form)
|
|
40
|
-
return;
|
|
41
|
-
this.changeDetectorRef.detectChanges();
|
|
42
|
-
this.formService.updateSelectOptions(this.model, this.control);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
ngOnDestroy() {
|
|
46
|
-
super.ngOnDestroy();
|
|
47
|
-
this.onDetectChanges.unsubscribe();
|
|
48
|
-
}
|
|
49
|
-
createFormControlComponent() {
|
|
50
|
-
var _a;
|
|
51
|
-
super.createFormControlComponent();
|
|
52
|
-
const component = (_a = this.componentRef) === null || _a === void 0 ? void 0 : _a.instance;
|
|
53
|
-
if (!component || !ObjectUtils.isFunction(component.onCreated))
|
|
54
|
-
return;
|
|
55
|
-
component.onCreated();
|
|
56
|
-
}
|
|
57
|
-
getComponentType(model) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
DynamicBaseFormControlContainerComponent.decorators = [
|
|
62
|
-
{ type: Component, args: [{
|
|
63
|
-
selector: "dynamic-base-form-control",
|
|
64
|
-
template: "",
|
|
65
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
66
|
-
},] }
|
|
67
|
-
];
|
|
68
|
-
DynamicBaseFormControlContainerComponent.ctorParameters = () => [
|
|
69
|
-
{ type: DynamicBaseFormComponent },
|
|
70
|
-
{ type: ChangeDetectorRef },
|
|
71
|
-
{ type: ComponentFactoryResolver },
|
|
72
|
-
{ type: DynamicFormLayoutService },
|
|
73
|
-
{ type: DynamicFormValidationService },
|
|
74
|
-
{ type: DynamicFormComponentService },
|
|
75
|
-
{ type: DynamicFormRelationService }
|
|
76
|
-
];
|
|
77
|
-
DynamicBaseFormControlContainerComponent.propDecorators = {
|
|
78
|
-
contentTemplateList: [{ type: ContentChildren, args: [DynamicTemplateDirective,] }],
|
|
79
|
-
klass: [{ type: HostBinding, args: ["class",] }],
|
|
80
|
-
context: [{ type: Input }],
|
|
81
|
-
group: [{ type: Input }],
|
|
82
|
-
hostClass: [{ type: Input }],
|
|
83
|
-
inputTemplateList: [{ type: Input, args: ["templates",] }],
|
|
84
|
-
layout: [{ type: Input }],
|
|
85
|
-
model: [{ type: Input }],
|
|
86
|
-
blur: [{ type: Output }],
|
|
87
|
-
change: [{ type: Output }],
|
|
88
|
-
focus: [{ type: Output }],
|
|
89
|
-
componentViewContainerRef: [{ type: ViewChild, args: ["componentViewContainer", { read: ViewContainerRef, static: true },] }]
|
|
90
|
-
};
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLWNvbnRyb2wtY29udGFpbmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Qsd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0gsK0JBQStCLEVBRS9CLDJCQUEyQixFQUUzQixvQ0FBb0MsRUFJcEMsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQiw0QkFBNEIsRUFDNUIsd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBUTdDLE1BQU0sT0FBTyx3Q0FBeUMsU0FBUSxvQ0FBb0M7SUF5QzlGLFlBQXFCLElBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyx3QkFBa0QsRUFDbEQsYUFBdUMsRUFDdkMsaUJBQStDLEVBQy9DLGdCQUE2QyxFQUM3QyxlQUEyQztRQUM1RCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBUHZHLFNBQUksR0FBSixJQUFJLENBQTBCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtR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RDs7O1lBVE8sd0JBQXdCO1lBOUI1QixpQkFBaUI7WUFFakIsd0JBQXdCO1lBdUJ4Qix3QkFBd0I7WUFFeEIsNEJBQTRCO1lBUjVCLDJCQUEyQjtZQU8zQiwwQkFBMEI7OztrQ0FnQnpCLGVBQWUsU0FBQyx3QkFBd0I7b0JBRXhDLFdBQVcsU0FBQyxPQUFPO3NCQUVuQixLQUFLO29CQUNMLEtBQUs7d0JBQ0wsS0FBSztnQ0FDTCxLQUFLLFNBQUMsV0FBVztxQkFDakIsS0FBSztvQkFDTCxLQUFLO21CQUVMLE1BQU07cUJBQ04sTUFBTTtvQkFDTixNQUFNO3dDQUVOLFNBQVMsU0FBQyx3QkFBd0IsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIElucHV0LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgVHlwZSxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdDb250YWluZXJSZWZcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9BUlJBWSxcclxuICAgIER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Db21wb25lbnRTZXJ2aWNlLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sLFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sQ29udGFpbmVyQ29tcG9uZW50LFxyXG4gICAgRHluYW1pY0Zvcm1Db250cm9sRXZlbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1MYXlvdXRTZXJ2aWNlLFxyXG4gICAgRHluYW1pY0Zvcm1SZWxhdGlvblNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybVZhbGlkYXRpb25TZXJ2aWNlLFxyXG4gICAgRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlXHJcbn0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtEeW5hbWljQmFzZUZvcm1Db21wb25lbnR9IGZyb20gXCIuL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCJAc3RlbXkvbmd4LXV0aWxzXCI7XHJcbmltcG9ydCB7T25DcmVhdGVkRm9ybUNvbnRyb2x9IGZyb20gXCIuLi8uLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZHluYW1pYy1iYXNlLWZvcm0tY29udHJvbFwiLFxyXG4gICAgdGVtcGxhdGU6IFwiXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Jhc2VGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIER5bmFtaWNGb3JtQ29udHJvbENvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmUpIGNvbnRlbnRUZW1wbGF0ZUxpc3Q6IFF1ZXJ5TGlzdDxEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmU+O1xyXG5cclxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzXCIpIGtsYXNzO1xyXG5cclxuICAgIEBJbnB1dCgpIGNvbnRleHQ6IER5bmFtaWNGb3JtQXJyYXlHcm91cE1vZGVsIHwgbnVsbCA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gICAgQElucHV0KCkgaG9zdENsYXNzOiBzdHJpbmdbXTtcclxuICAgIEBJbnB1dChcInRlbXBsYXRlc1wiKSBpbnB1dFRlbXBsYXRlTGlzdDogUXVlcnlMaXN0PER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZT47XHJcbiAgICBASW5wdXQoKSBsYXlvdXQ6IER5bmFtaWNGb3JtTGF5b3V0O1xyXG4gICAgQElucHV0KCkgbW9kZWw6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsO1xyXG5cclxuICAgIEBPdXRwdXQoKSBibHVyOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4oKTtcclxuICAgIEBPdXRwdXQoKSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPER5bmFtaWNGb3JtQ29udHJvbEV2ZW50PigpO1xyXG4gICAgQE91dHB1dCgpIGZvY3VzOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4oKTtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwiY29tcG9uZW50Vmlld0NvbnRhaW5lclwiLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlfSkgY29tcG9uZW50Vmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgb25EZXRlY3RDaGFuZ2VzOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgZ2V0IGNvbXBvbmVudFR5cGUoKTogVHlwZTxEeW5hbWljRm9ybUNvbnRyb2w+IHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50U2VydmljZS5nZXRDdXN0b21Db21wb25lbnRUeXBlKHRoaXMubW9kZWwpID8/IHRoaXMuZ2V0Q29tcG9uZW50VHlwZSh0aGlzLm1vZGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc3RhcnRUZW1wbGF0ZSgpOiBEeW5hbWljVGVtcGxhdGVEaXJlY3RpdmUge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC50eXBlID09IERZTkFNSUNfRk9STV9DT05UUk9MX1RZUEVfQVJSQVkpXHJcbiAgICAgICAgICAgID8gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEFsaWduZWRUZW1wbGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnRlbXBsYXRlcywgXCJBUlJBWV9TVEFSVFwiIGFzIGFueSlcclxuICAgICAgICAgICAgOiB0aGlzLmxheW91dFNlcnZpY2UuZ2V0U3RhcnRUZW1wbGF0ZSh0aGlzLm1vZGVsLCB0aGlzLnRlbXBsYXRlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGVuZFRlbXBsYXRlKCk6IER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLm1vZGVsLnR5cGUgPT0gRFlOQU1JQ19GT1JNX0NPTlRST0xfVFlQRV9BUlJBWSlcclxuICAgICAgICAgICAgPyB0aGlzLmxheW91dFNlcnZpY2UuZ2V0QWxpZ25lZFRlbXBsYXRlKHRoaXMubW9kZWwsIHRoaXMudGVtcGxhdGVzLCBcIkFSUkFZX0VORFwiIGFzIGFueSlcclxuICAgICAgICAgICAgOiB0aGlzLmxheW91dFNlcnZpY2UuZ2V0RW5kVGVtcGxhdGUodGhpcy5tb2RlbCwgdGhpcy50ZW1wbGF0ZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb3JtU2VydmljZSgpOiBEeW5hbWljRm9ybVNlcnZpY2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZm9ybVNlcnZpY2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgZm9ybTogRHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSBsYXlvdXRTZXJ2aWNlOiBEeW5hbWljRm9ybUxheW91dFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICByZWFkb25seSB2YWxpZGF0aW9uU2VydmljZTogRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IGNvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNGb3JtQ29tcG9uZW50U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IHJlbGF0aW9uU2VydmljZTogRHluYW1pY0Zvcm1SZWxhdGlvblNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihjaGFuZ2VEZXRlY3RvclJlZiwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBsYXlvdXRTZXJ2aWNlLCB2YWxpZGF0aW9uU2VydmljZSwgY29tcG9uZW50U2VydmljZSwgcmVsYXRpb25TZXJ2aWNlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9uRGV0ZWN0Q2hhbmdlcyA9IHRoaXMuZm9ybVNlcnZpY2Uub25EZXRlY3RDaGFuZ2VzLnN1YnNjcmliZShmb3JtID0+IHtcclxuICAgICAgICAgICAgaWYgKGZvcm0gIT09IHRoaXMuZm9ybSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS51cGRhdGVTZWxlY3RPcHRpb25zKHRoaXMubW9kZWwsIHRoaXMuY29udHJvbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLm9uRGV0ZWN0Q2hhbmdlcy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpIHtcclxuICAgICAgICBzdXBlci5jcmVhdGVGb3JtQ29udHJvbENvbXBvbmVudCgpO1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSBhcyBPbkNyZWF0ZWRGb3JtQ29udHJvbDtcclxuICAgICAgICBpZiAoIWNvbXBvbmVudCB8fCAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihjb21wb25lbnQub25DcmVhdGVkKSkgcmV0dXJuO1xyXG4gICAgICAgIGNvbXBvbmVudC5vbkNyZWF0ZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Q29tcG9uZW50VHlwZShtb2RlbDogRHluYW1pY0Zvcm1Db250cm9sTW9kZWwpOiBUeXBlPER5bmFtaWNGb3JtQ29udHJvbD4gfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Inject, Input, Output, QueryList, ViewChild, ViewChildren } from "@angular/core";
|
|
3
|
-
import { NgForm } from "@angular/forms";
|
|
4
|
-
import { Subscription } from "rxjs";
|
|
5
|
-
import { first } from "rxjs/operators";
|
|
6
|
-
import { DynamicFormComponent, DynamicFormComponentService, DynamicTemplateDirective } from "@ng-dynamic-forms/core";
|
|
7
|
-
import { EventsService, ObservableUtils } from "@stemy/ngx-utils";
|
|
8
|
-
import { DynamicFormService } from "../../services/dynamic-form.service";
|
|
9
|
-
export class DynamicBaseFormComponent extends DynamicFormComponent {
|
|
10
|
-
constructor(formService, events, changeDetectorRef, componentService) {
|
|
11
|
-
super(changeDetectorRef, componentService);
|
|
12
|
-
this.formService = formService;
|
|
13
|
-
this.events = events;
|
|
14
|
-
this.blur = new EventEmitter();
|
|
15
|
-
this.change = new EventEmitter();
|
|
16
|
-
this.focus = new EventEmitter();
|
|
17
|
-
this.onStatusChange = new EventEmitter();
|
|
18
|
-
this.onValueChange = new EventEmitter();
|
|
19
|
-
this.onSubmit = new EventEmitter();
|
|
20
|
-
this.templates = new QueryList();
|
|
21
|
-
this.subscription = new Subscription();
|
|
22
|
-
this.groupSubscription = new Subscription();
|
|
23
|
-
this.labelPrefix = "label";
|
|
24
|
-
}
|
|
25
|
-
get status() {
|
|
26
|
-
return !this.group ? null : this.group.status;
|
|
27
|
-
}
|
|
28
|
-
ngOnChanges(changes) {
|
|
29
|
-
this.groupSubscription.unsubscribe();
|
|
30
|
-
if (this.group) {
|
|
31
|
-
this.groupSubscription = ObservableUtils.multiSubscription(this.group.statusChanges.subscribe(() => {
|
|
32
|
-
this.onStatusChange.emit(this);
|
|
33
|
-
}), this.group.valueChanges.subscribe(() => {
|
|
34
|
-
this.onValueChange.emit(this);
|
|
35
|
-
this.formService.notifyChanges(this.model, this.group);
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
ngAfterViewInit() {
|
|
40
|
-
this.subscription = ObservableUtils.multiSubscription(ObservableUtils.subscribe({
|
|
41
|
-
subjects: [this.contentTemplates.changes, this.viewTemplates.changes],
|
|
42
|
-
cb: () => {
|
|
43
|
-
const templates = this.contentTemplates.toArray().concat(this.viewTemplates.toArray());
|
|
44
|
-
this.templates.reset(templates);
|
|
45
|
-
}
|
|
46
|
-
}), this.events.languageChanged.subscribe(() => {
|
|
47
|
-
this.formService.detectChanges(this);
|
|
48
|
-
}), this.ngForm.ngSubmit.subscribe(() => {
|
|
49
|
-
this.onSubmit.emit(this);
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
ngOnDestroy() {
|
|
53
|
-
super.ngOnDestroy();
|
|
54
|
-
this.subscription.unsubscribe();
|
|
55
|
-
this.groupSubscription.unsubscribe();
|
|
56
|
-
}
|
|
57
|
-
insertFormArrayGroup(index, formArray, formArrayModel) {
|
|
58
|
-
this.formService.insertFormArrayGroup(index, formArray, formArrayModel);
|
|
59
|
-
this.changeDetectorRef.detectChanges();
|
|
60
|
-
}
|
|
61
|
-
removeFormArrayGroup(index, formArray, formArrayModel) {
|
|
62
|
-
this.formService.removeFormArrayGroup(index, formArray, formArrayModel);
|
|
63
|
-
this.changeDetectorRef.detectChanges();
|
|
64
|
-
}
|
|
65
|
-
moveFormArrayGroup(index, step, formArray, formArrayModel) {
|
|
66
|
-
this.formService.moveFormArrayGroup(index, step, formArray, formArrayModel);
|
|
67
|
-
this.changeDetectorRef.detectChanges();
|
|
68
|
-
}
|
|
69
|
-
clearFormArray(formArray, formArrayModel) {
|
|
70
|
-
this.formService.clearFormArray(formArray, formArrayModel);
|
|
71
|
-
this.changeDetectorRef.detectChanges();
|
|
72
|
-
}
|
|
73
|
-
validate(showErrors = true) {
|
|
74
|
-
if (!this.group)
|
|
75
|
-
return Promise.resolve();
|
|
76
|
-
return new Promise((resolve, reject) => {
|
|
77
|
-
this.group.statusChanges.pipe(first(status => status == "VALID" || status == "INVALID")).subscribe(status => {
|
|
78
|
-
if (showErrors) {
|
|
79
|
-
this.formService.showErrors(this);
|
|
80
|
-
}
|
|
81
|
-
if (status == "VALID") {
|
|
82
|
-
resolve(null);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
reject(null);
|
|
86
|
-
});
|
|
87
|
-
this.group.updateValueAndValidity();
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
serialize(validate) {
|
|
91
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
-
if (!this.group)
|
|
93
|
-
return null;
|
|
94
|
-
if (validate) {
|
|
95
|
-
yield this.validate();
|
|
96
|
-
}
|
|
97
|
-
return yield this.formService.serialize(this.model, this.group);
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
DynamicBaseFormComponent.decorators = [
|
|
102
|
-
{ type: Component, args: [{
|
|
103
|
-
selector: "dynamic-base-form",
|
|
104
|
-
template: "",
|
|
105
|
-
changeDetection: ChangeDetectionStrategy.Default
|
|
106
|
-
},] }
|
|
107
|
-
];
|
|
108
|
-
DynamicBaseFormComponent.ctorParameters = () => [
|
|
109
|
-
{ type: DynamicFormService, decorators: [{ type: Inject, args: [DynamicFormService,] }] },
|
|
110
|
-
{ type: EventsService, decorators: [{ type: Inject, args: [EventsService,] }] },
|
|
111
|
-
{ type: ChangeDetectorRef },
|
|
112
|
-
{ type: DynamicFormComponentService }
|
|
113
|
-
];
|
|
114
|
-
DynamicBaseFormComponent.propDecorators = {
|
|
115
|
-
group: [{ type: Input }],
|
|
116
|
-
model: [{ type: Input }],
|
|
117
|
-
layout: [{ type: Input }],
|
|
118
|
-
labelPrefix: [{ type: Input }],
|
|
119
|
-
blur: [{ type: Output }],
|
|
120
|
-
change: [{ type: Output }],
|
|
121
|
-
focus: [{ type: Output }],
|
|
122
|
-
contentTemplates: [{ type: ContentChildren, args: [DynamicTemplateDirective,] }],
|
|
123
|
-
viewTemplates: [{ type: ViewChildren, args: [DynamicTemplateDirective,] }],
|
|
124
|
-
onStatusChange: [{ type: Output }],
|
|
125
|
-
onValueChange: [{ type: Output }],
|
|
126
|
-
onSubmit: [{ type: Output }],
|
|
127
|
-
ngForm: [{ type: ViewChild, args: [NgForm,] }]
|
|
128
|
-
};
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1iYXNlLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vY29tcG9uZW50cy9iYXNlL2R5bmFtaWMtYmFzZS1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNNLFNBQVMsRUFDeEIsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBdUIsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUVILG9CQUFvQixFQUNwQiwyQkFBMkIsRUFJM0Isd0JBQXdCLEVBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQU92RSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsb0JBQW9CO0lBMkI5RCxZQUFpRCxXQUErQixFQUNwQyxNQUFxQixFQUNyRCxpQkFBb0MsRUFDcEMsZ0JBQTZDO1FBQ3JELEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBSkUsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQWU7UUFJN0QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQztRQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLElB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QUFZLFNBQUMsd0JBQXdCOzZCQU1yQyxNQUFNOzRCQUNOLE1BQU07dUJBQ04sTUFBTTtxQkFFTixTQUFTLFNBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUXVlcnlMaXN0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLFxyXG4gICAgVmlld0NoaWxkcmVuXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtGb3JtQXJyYXksIEZvcm1Hcm91cCwgTmdGb3JtfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Zmlyc3R9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheU1vZGVsLFxyXG4gICAgRHluYW1pY0Zvcm1Db21wb25lbnQsXHJcbiAgICBEeW5hbWljRm9ybUNvbXBvbmVudFNlcnZpY2UsXHJcbiAgICBEeW5hbWljRm9ybUNvbnRyb2xFdmVudCxcclxuICAgIER5bmFtaWNGb3JtTGF5b3V0LFxyXG4gICAgRHluYW1pY0Zvcm1Nb2RlbCxcclxuICAgIER5bmFtaWNUZW1wbGF0ZURpcmVjdGl2ZVxyXG59IGZyb20gXCJAbmctZHluYW1pYy1mb3Jtcy9jb3JlXCI7XHJcbmltcG9ydCB7RXZlbnRzU2VydmljZSwgT2JzZXJ2YWJsZVV0aWxzfSBmcm9tIFwiQHN0ZW15L25neC11dGlsc1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU3RhdGUsIElEeW5hbWljRm9ybSwgSUR5bmFtaWNGb3JtQmFzZX0gZnJvbSBcIi4uLy4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge0R5bmFtaWNGb3JtU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImR5bmFtaWMtYmFzZS1mb3JtXCIsXHJcbiAgICB0ZW1wbGF0ZTogXCJcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Jhc2VGb3JtQ29tcG9uZW50IGV4dGVuZHMgRHluYW1pY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIElEeW5hbWljRm9ybSB7XHJcblxyXG4gICAgQElucHV0KCkgZ3JvdXA6IEZvcm1Hcm91cDtcclxuICAgIEBJbnB1dCgpIG1vZGVsOiBEeW5hbWljRm9ybU1vZGVsO1xyXG4gICAgQElucHV0KCkgbGF5b3V0OiBEeW5hbWljRm9ybUxheW91dDtcclxuICAgIEBJbnB1dCgpIGxhYmVsUHJlZml4OiBzdHJpbmc7XHJcblxyXG4gICAgQE91dHB1dCgpIGJsdXI6IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD47XHJcbiAgICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+O1xyXG4gICAgQE91dHB1dCgpIGZvY3VzOiBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlKSBjb250ZW50VGVtcGxhdGVzOiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuICAgIEBWaWV3Q2hpbGRyZW4oRHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlKSB2aWV3VGVtcGxhdGVzOiBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPjtcclxuXHJcbiAgICBnZXQgc3RhdHVzKCk6IER5bmFtaWNGb3JtU3RhdGUge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5ncm91cCA/IG51bGwgOiB0aGlzLmdyb3VwLnN0YXR1cyBhcyBEeW5hbWljRm9ybVN0YXRlO1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblN0YXR1c0NoYW5nZTogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybUJhc2U+O1xyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IG9uVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJRHluYW1pY0Zvcm1CYXNlPjtcclxuICAgIEBPdXRwdXQoKSByZWFkb25seSBvblN1Ym1pdDogRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybUJhc2U+O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoTmdGb3JtKVxyXG4gICAgcHJvdGVjdGVkIG5nRm9ybTogTmdGb3JtO1xyXG4gICAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJvdGVjdGVkIGdyb3VwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChEeW5hbWljRm9ybVNlcnZpY2UpIHJlYWRvbmx5IGZvcm1TZXJ2aWNlOiBEeW5hbWljRm9ybVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KEV2ZW50c1NlcnZpY2UpIHJlYWRvbmx5IGV2ZW50czogRXZlbnRzU2VydmljZSxcclxuICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudFNlcnZpY2U6IER5bmFtaWNGb3JtQ29tcG9uZW50U2VydmljZSwpIHtcclxuICAgICAgICBzdXBlcihjaGFuZ2VEZXRlY3RvclJlZiwgY29tcG9uZW50U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5ibHVyID0gbmV3IEV2ZW50RW1pdHRlcjxEeW5hbWljRm9ybUNvbnRyb2xFdmVudD4oKTtcclxuICAgICAgICB0aGlzLmNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5mb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8RHluYW1pY0Zvcm1Db250cm9sRXZlbnQ+KCk7XHJcbiAgICAgICAgdGhpcy5vblN0YXR1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtQmFzZT4oKTtcclxuICAgICAgICB0aGlzLm9uVmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPElEeW5hbWljRm9ybUJhc2U+KCk7XHJcbiAgICAgICAgdGhpcy5vblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8SUR5bmFtaWNGb3JtQmFzZT4oKTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IG5ldyBRdWVyeUxpc3Q8RHluYW1pY1RlbXBsYXRlRGlyZWN0aXZlPigpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5sYWJlbFByZWZpeCA9IFwibGFiZWxcIjtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ncm91cFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBTdWJzY3JpcHRpb24gPSBPYnNlcnZhYmxlVXRpbHMubXVsdGlTdWJzY3JpcHRpb24oXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlLmVtaXQodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQodGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5ub3RpZnlDaGFuZ2VzKHRoaXMubW9kZWwsIHRoaXMuZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gT2JzZXJ2YWJsZVV0aWxzLm11bHRpU3Vic2NyaXB0aW9uKFxyXG4gICAgICAgICAgICBPYnNlcnZhYmxlVXRpbHMuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1YmplY3RzOiBbdGhpcy5jb250ZW50VGVtcGxhdGVzLmNoYW5nZXMsIHRoaXMudmlld1RlbXBsYXRlcy5jaGFuZ2VzXSxcclxuICAgICAgICAgICAgICAgICAgICBjYjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMudG9BcnJheSgpLmNvbmNhdCh0aGlzLnZpZXdUZW1wbGF0ZXMudG9BcnJheSgpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMucmVzZXQodGVtcGxhdGVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5kZXRlY3RDaGFuZ2VzKHRoaXMpXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICB0aGlzLm5nRm9ybS5uZ1N1Ym1pdC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KHRoaXMpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuZ3JvdXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbnNlcnRGb3JtQXJyYXlHcm91cChpbmRleDogbnVtYmVyLCBmb3JtQXJyYXk6IEZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWw6IER5bmFtaWNGb3JtQXJyYXlNb2RlbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuaW5zZXJ0Rm9ybUFycmF5R3JvdXAoaW5kZXgsIGZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUZvcm1BcnJheUdyb3VwKGluZGV4OiBudW1iZXIsIGZvcm1BcnJheTogRm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbDogRHluYW1pY0Zvcm1BcnJheU1vZGVsKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5yZW1vdmVGb3JtQXJyYXlHcm91cChpbmRleCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbW92ZUZvcm1BcnJheUdyb3VwKGluZGV4OiBudW1iZXIsIHN0ZXA6IG51bWJlciwgZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLm1vdmVGb3JtQXJyYXlHcm91cChpbmRleCwgc3RlcCwgZm9ybUFycmF5LCBmb3JtQXJyYXlNb2RlbCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJGb3JtQXJyYXkoZm9ybUFycmF5OiBGb3JtQXJyYXksIGZvcm1BcnJheU1vZGVsOiBEeW5hbWljRm9ybUFycmF5TW9kZWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmNsZWFyRm9ybUFycmF5KGZvcm1BcnJheSwgZm9ybUFycmF5TW9kZWwpO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXRlKHNob3dFcnJvcnM6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBpZiAoIXRoaXMuZ3JvdXApIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXAuc3RhdHVzQ2hhbmdlcy5waXBlKGZpcnN0KHN0YXR1cyA9PiBzdGF0dXMgPT0gXCJWQUxJRFwiIHx8IHN0YXR1cyA9PSBcIklOVkFMSURcIikpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHNob3dFcnJvcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnNob3dFcnJvcnModGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IFwiVkFMSURcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VyaWFsaXplKHZhbGlkYXRlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdyb3VwKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBpZiAodmFsaWRhdGUpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5mb3JtU2VydmljZS5zZXJpYWxpemUodGhpcy5tb2RlbCwgdGhpcy5ncm91cCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { DynamicFormValidationService as Base } from "@ng-dynamic-forms/core";
|
|
3
|
-
export class DynamicFormValidationService extends Base {
|
|
4
|
-
showErrorMessages(control, model, hasFocus) {
|
|
5
|
-
return super.showErrorMessages(control, model, hasFocus);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
DynamicFormValidationService.decorators = [
|
|
9
|
-
{ type: Injectable }
|
|
10
|
-
];
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLXZhbGlkYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtZHluYW1pYy1mb3JtL3NlcnZpY2VzL2R5bmFtaWMtZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQTBCLDRCQUE0QixJQUFJLElBQUksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBSXJHLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxJQUFJO0lBRWxELGlCQUFpQixDQUFDLE9BQXdCLEVBQUUsS0FBOEIsRUFBRSxRQUFpQjtRQUN6RixPQUFPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7OztZQUxKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RHluYW1pY0Zvcm1Db250cm9sTW9kZWwsIER5bmFtaWNGb3JtVmFsaWRhdGlvblNlcnZpY2UgYXMgQmFzZX0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2x9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1WYWxpZGF0aW9uU2VydmljZSBleHRlbmRzIEJhc2Uge1xyXG5cclxuICAgIHNob3dFcnJvck1lc3NhZ2VzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgbW9kZWw6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLCBoYXNGb2N1czogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5zaG93RXJyb3JNZXNzYWdlcyhjb250cm9sLCBtb2RlbCwgaGFzRm9jdXMpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { DynamicFormArrayModel as Base } from "@ng-dynamic-forms/core";
|
|
2
|
-
export class DynamicFormArrayModel extends Base {
|
|
3
|
-
constructor(config, layout) {
|
|
4
|
-
super(config, layout);
|
|
5
|
-
this.additional = config.additional || {};
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vdXRpbHMvZHluYW1pYy1mb3JtLWFycmF5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxxQkFBcUIsSUFBSSxJQUFJLEVBR2hDLE1BQU0sd0JBQXdCLENBQUM7QUFNaEMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLElBQUk7SUFJM0MsWUFBWSxNQUFtQyxFQUFFLE1BQWlDO1FBQzlFLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgRHluYW1pY0Zvcm1BcnJheU1vZGVsIGFzIEJhc2UsXHJcbiAgICBEeW5hbWljRm9ybUFycmF5TW9kZWxDb25maWcgYXMgQ29uZmlnQmFzZSxcclxuICAgIER5bmFtaWNGb3JtQ29udHJvbExheW91dFxyXG59IGZyb20gXCJAbmctZHluYW1pYy1mb3Jtcy9jb3JlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIER5bmFtaWNGb3JtQXJyYXlNb2RlbENvbmZpZyBleHRlbmRzIENvbmZpZ0Jhc2Uge1xyXG4gICAgYWRkaXRpb25hbD86IHtba2V5OiBzdHJpbmddOiBhbnl9O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHluYW1pY0Zvcm1BcnJheU1vZGVsIGV4dGVuZHMgQmFzZSB7XHJcblxyXG4gICAgcmVhZG9ubHkgYWRkaXRpb25hbDoge1trZXk6IHN0cmluZ106IGFueX07XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBEeW5hbWljRm9ybUFycmF5TW9kZWxDb25maWcsIGxheW91dD86IER5bmFtaWNGb3JtQ29udHJvbExheW91dCkge1xyXG4gICAgICAgIHN1cGVyKGNvbmZpZywgbGF5b3V0KTtcclxuICAgICAgICB0aGlzLmFkZGl0aW9uYWwgPSBjb25maWcuYWRkaXRpb25hbCB8fCB7fTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Subject } from "rxjs";
|
|
3
|
-
export class FormSubject extends Subject {
|
|
4
|
-
constructor(notifyCallback) {
|
|
5
|
-
super();
|
|
6
|
-
this.notifyCallback = notifyCallback;
|
|
7
|
-
}
|
|
8
|
-
notify(controlModel, control) {
|
|
9
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10
|
-
let value = this.notifyCallback(controlModel, control);
|
|
11
|
-
if (value instanceof Promise) {
|
|
12
|
-
value = yield value;
|
|
13
|
-
}
|
|
14
|
-
this.next(value);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdWJqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC1keW5hbWljLWZvcm0vdXRpbHMvZm9ybS1zdWJqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSTdCLE1BQU0sT0FBTyxXQUFlLFNBQVEsT0FBVTtJQUkxQyxZQUFZLGNBQWdHO1FBQ3hHLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDekMsQ0FBQztJQUVLLE1BQU0sQ0FBQyxZQUFxQyxFQUFFLE9BQXdCOztZQUN4RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RCxJQUFJLEtBQUssWUFBWSxPQUFPLEVBQUU7Z0JBQzFCLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQzthQUN2QjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztLQUFBO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtEeW5hbWljRm9ybUNvbnRyb2xNb2RlbH0gZnJvbSBcIkBuZy1keW5hbWljLWZvcm1zL2NvcmVcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtU3ViamVjdDxUPiBleHRlbmRzIFN1YmplY3Q8VD4ge1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZ5Q2FsbGJhY2s6IChjb250cm9sTW9kZWw6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IFQgfCBQcm9taXNlPFQ+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKG5vdGlmeUNhbGxiYWNrOiAoZm9ybU1vZGVsOiBEeW5hbWljRm9ybUNvbnRyb2xNb2RlbCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiBUIHwgUHJvbWlzZTxUPikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZnlDYWxsYmFjayA9IG5vdGlmeUNhbGxiYWNrO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIG5vdGlmeShjb250cm9sTW9kZWw6IER5bmFtaWNGb3JtQ29udHJvbE1vZGVsLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMubm90aWZ5Q2FsbGJhY2soY29udHJvbE1vZGVsLCBjb250cm9sKTtcclxuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gYXdhaXQgdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubmV4dCh2YWx1ZSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export function validateJSON(control) {
|
|
2
|
-
const value = control.value;
|
|
3
|
-
if (!value)
|
|
4
|
-
return null;
|
|
5
|
-
try {
|
|
6
|
-
JSON.parse(value);
|
|
7
|
-
return null;
|
|
8
|
-
}
|
|
9
|
-
catch (e) {
|
|
10
|
-
return { json: true };
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export function validateRequiredTranslation(control) {
|
|
14
|
-
const value = control.value;
|
|
15
|
-
if (!value || value.length == 0)
|
|
16
|
-
return { requiredTranslation: true };
|
|
17
|
-
return value.findIndex(t => (t.lang == "de" || t.lang == "en") && !t.translation) < 0
|
|
18
|
-
? null
|
|
19
|
-
: { requiredTranslation: true };
|
|
20
|
-
}
|
|
21
|
-
export function validatePhone(control) {
|
|
22
|
-
const value = control.value;
|
|
23
|
-
if (!value)
|
|
24
|
-
return Promise.resolve(null);
|
|
25
|
-
const phoneRegexp = /^(?:\d){10,12}$/;
|
|
26
|
-
return phoneRegexp.test(value) ? null : { phone: true };
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtZHluYW1pYy1mb3JtL3V0aWxzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUF3QjtJQUNqRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVCLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDeEIsSUFBSTtRQUNBLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1IsT0FBTyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsQ0FBQztLQUN2QjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsMkJBQTJCLENBQUMsT0FBd0I7SUFDaEUsTUFBTSxLQUFLLEdBQVUsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNuQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztRQUFFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNwRSxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztRQUNqRixDQUFDLENBQUMsSUFBSTtRQUNOLENBQUMsQ0FBQyxFQUFDLG1CQUFtQixFQUFFLElBQUksRUFBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQXdCO0lBQ2xELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQUM7SUFDdEMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVKU09OKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBKU09OLnBhcnNlKHZhbHVlKTtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICByZXR1cm4ge2pzb246IHRydWV9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSZXF1aXJlZFRyYW5zbGF0aW9uKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGNvbnN0IHZhbHVlOiBhbnlbXSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PSAwKSByZXR1cm4ge3JlcXVpcmVkVHJhbnNsYXRpb246IHRydWV9O1xyXG4gICAgcmV0dXJuIHZhbHVlLmZpbmRJbmRleCh0ID0+ICh0LmxhbmcgPT0gXCJkZVwiIHx8IHQubGFuZyA9PSBcImVuXCIpICYmICF0LnRyYW5zbGF0aW9uKSA8IDBcclxuICAgICAgICA/IG51bGxcclxuICAgICAgICA6IHtyZXF1aXJlZFRyYW5zbGF0aW9uOiB0cnVlfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGhvbmUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICAgIGNvbnN0IHBob25lUmVnZXhwID0gL14oPzpcXGQpezEwLDEyfSQvO1xyXG4gICAgcmV0dXJuIHBob25lUmVnZXhwLnRlc3QodmFsdWUpID8gbnVsbCA6IHtwaG9uZTogdHJ1ZX07XHJcbn1cclxuIl19
|