special-forms 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/.angular/cache/14.1.3/ng-packagr/content-v2/sha512/0f/5d/4e8fdfaa026b76a388545f18eec614210a0a9c380eaf0fdb454c56f605e2c6b46c66b88bef9113f9bc4521f472860463984614606b2be866123d0a825052 +1 -0
  2. package/.angular/cache/14.1.3/ng-packagr/content-v2/sha512/16/c3/534096c42a7bf78b4784f7588bb786086a1caf43aa10a3541b04a69a8ccf2b95af0e5febfc479a651ca4a84ac78e7b08f7f2e8e8bf0d616916cada66d305 +1 -0
  3. package/.angular/cache/14.1.3/ng-packagr/content-v2/sha512/29/bb/f15d4e8b0d33c1de4969216f0d8aee8b072848755e140b83746be03e9f941cda84a5e6c74c128aec4fb62b4c6c49bb0f911a99d40390bf73a3205d3dd17e +1 -0
  4. package/.angular/cache/14.1.3/ng-packagr/index-v5/09/8e/12e12ff81fc74249e744c65a0517fa1b481adc8330fff9f7cd8751aec608 +2 -1
  5. package/.angular/cache/14.1.3/ng-packagr/index-v5/74/b6/fa395f5b34ba0ef88964a666024b6c1bc05161fcfe410f167d6242757e90 +2 -1
  6. package/.angular/cache/14.1.3/ng-packagr/index-v5/9f/df/506a82e08d516c58b731cbaac17b2c19ca1a96f7e01510b011dd2bbbd161 +2 -1
  7. package/dist/special-forms/esm2020/lib/components/index.mjs +3 -4
  8. package/dist/special-forms/esm2020/lib/components/special-form/special-form.component.mjs +46 -28
  9. package/dist/special-forms/esm2020/lib/components/special-form/special-form.module.mjs +20 -15
  10. package/dist/special-forms/esm2020/public-api.mjs +1 -2
  11. package/dist/special-forms/fesm2015/special-forms.mjs +118 -161
  12. package/dist/special-forms/fesm2015/special-forms.mjs.map +1 -1
  13. package/dist/special-forms/fesm2020/special-forms.mjs +118 -161
  14. package/dist/special-forms/fesm2020/special-forms.mjs.map +1 -1
  15. package/dist/special-forms/lib/components/index.d.ts +2 -3
  16. package/dist/special-forms/lib/components/special-form/special-form.component.d.ts +10 -49
  17. package/dist/special-forms/lib/components/special-form/special-form.module.d.ts +12 -14
  18. package/dist/special-forms/public-api.d.ts +0 -1
  19. package/package.json +1 -1
  20. package/special-forms-1.1.0.tgz +0 -0
  21. package/dist/special-forms/esm2020/lib/components/special-form/special-form-array.module.mjs +0 -32
  22. package/dist/special-forms/esm2020/lib/core/directives/control-render.directive.mjs +0 -31
  23. package/dist/special-forms/esm2020/lib/core/directives/control-render.module.mjs +0 -18
  24. package/dist/special-forms/lib/components/special-form/special-form-array.module.d.ts +0 -11
  25. package/dist/special-forms/lib/core/directives/control-render.directive.d.ts +0 -13
  26. package/dist/special-forms/lib/core/directives/control-render.module.d.ts +0 -8
  27. package/special-forms-1.0.0.tgz +0 -0
  28. package/special-forms-1.0.1.tgz +0 -0
@@ -0,0 +1 @@
1
+ {"hash":"88bb5e3b135395e295998e920ce1aa32b04e385f","fesm2020":{"code":"import * as i0 from '@angular/core';\nimport { Pipe, Component, ChangeDetectionStrategy, Input, NgModule, EventEmitter, Output, Directive, Injectable } from '@angular/core';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@ngneat/input-mask';\nimport { InputMaskModule } from '@ngneat/input-mask';\nimport * as i1$1 from '@angular/material/form-field';\nimport * as i2 from '@angular/material/input';\nimport { MatInputModule } from '@angular/material/input';\nimport * as i6 from '@angular/material/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport * as i7 from '@angular/forms';\nimport { ReactiveFormsModule, FormControl, FormsModule, FormGroup, FormArray, Validators } from '@angular/forms';\nimport * as i7$1 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as i3$1 from '@angular/material/select';\nimport { MatSelectModule } from '@angular/material/select';\nimport * as i5 from '@angular/material/core';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport * as i4 from '@angular/material/autocomplete';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { debounceTime } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport * as i3$2 from '@angular/material/datepicker';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport * as i9 from '@angular/material/chips';\nimport { MatChipsModule } from '@angular/material/chips';\nimport * as i2$1 from '@angular/material/checkbox';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport * as i2$2 from '@angular/cdk/text-field';\nimport * as i1$2 from '@angular/platform-browser';\nimport * as i2$3 from 'ngx-dropzone';\nimport { NgxDropzoneModule } from 'ngx-dropzone';\nimport { EControlTypes as EControlTypes$1 } from '@lib/core/aux-data/control-types.enum';\n\nclass ErrorMessagePipe {\r\n transform(errorsObj, errorMessages, control) {\r\n const errors = errorsObj ? Object.keys(errorsObj) : [];\r\n const error = errors[0];\r\n const message = errorMessages[error] || error;\r\n if (control) {\r\n control.setErrors(errorsObj);\r\n }\r\n return message;\r\n }\r\n}\r\nErrorMessagePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\r\nErrorMessagePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipe, name: \"errorMessage\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipe, decorators: [{\r\n type: Pipe,\r\n args: [{\r\n name: \"errorMessage\",\r\n }]\r\n }] });\n\nclass SpecialInputComponent {\r\n constructor() { }\r\n ngOnInit() { }\r\n onEnterClick() {\r\n if (this.settings.onEnter) {\r\n this.settings.onEnter(this.control.value);\r\n }\r\n }\r\n onBlurAction() {\r\n if (this.settings.onBlur) {\r\n this.settings.onBlur(this.control.value);\r\n }\r\n }\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\nSpecialInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialInputComponent, selector: \"sp-input\", inputs: { control: \"control\" }, ngImport: i0, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n (blur)=\\\"onBlurAction()\\\"\\n (keydown.enter)=\\\"onEnterClick()\\\"\\n [inputMask]=\\\"settings?.mask\\\"\\n autocomplete=\\\"off\\\"\\n [type]=\\\"settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <button\\n *ngIf=\\\"settings?.icon\\\"\\n mat-icon-button\\n matSuffix\\n (click)=\\\"iconClick($event)\\\"\\n >\\n <mat-icon>\\n {{ settings.icon }}\\n </mat-icon>\\n </button>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1.InputMaskDirective, selector: \"[inputMask]\", inputs: [\"inputMask\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-input', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n (blur)=\\\"onBlurAction()\\\"\\n (keydown.enter)=\\\"onEnterClick()\\\"\\n [inputMask]=\\\"settings?.mask\\\"\\n autocomplete=\\\"off\\\"\\n [type]=\\\"settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <button\\n *ngIf=\\\"settings?.icon\\\"\\n mat-icon-button\\n matSuffix\\n (click)=\\\"iconClick($event)\\\"\\n >\\n <mat-icon>\\n {{ settings.icon }}\\n </mat-icon>\\n </button>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass ErrorMessagePipeModule {\r\n}\r\nErrorMessagePipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nErrorMessagePipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, declarations: [ErrorMessagePipe], imports: [CommonModule], exports: [ErrorMessagePipe] });\r\nErrorMessagePipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, imports: [CommonModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [ErrorMessagePipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ErrorMessagePipe],\r\n }]\r\n }] });\n\nclass TextByFunctionPipe {\r\n transform(value, field) {\r\n if (field instanceof Function) {\r\n return field(value);\r\n }\r\n else if (value instanceof Object) {\r\n return value[field];\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n}\r\nTextByFunctionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\r\nTextByFunctionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipe, name: \"textByFunction\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipe, decorators: [{\r\n type: Pipe,\r\n args: [{ name: 'textByFunction' }]\r\n }] });\n\nclass TextByFunctionPipeModule {\r\n}\r\nTextByFunctionPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nTextByFunctionPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, declarations: [TextByFunctionPipe], imports: [CommonModule], exports: [TextByFunctionPipe] });\r\nTextByFunctionPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, imports: [CommonModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [TextByFunctionPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [TextByFunctionPipe],\r\n }]\r\n }] });\n\nclass SpecialInputModule {\r\n}\r\nSpecialInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, declarations: [SpecialInputComponent], imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialInputComponent] });\r\nSpecialInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialInputComponent],\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialInputComponent],\r\n }]\r\n }] });\n\nclass SpecialDropdownComponent {\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n optionSelected(value) {\r\n if (this.settings.onSelect)\r\n this.settings.onSelect(value);\r\n }\r\n}\r\nSpecialDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialDropdownComponent, selector: \"sp-dropdown\", inputs: { control: \"control\" }, ngImport: i0, template: \"<mat-form-field\\r\\n *ngIf=\\\"control\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n>\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <mat-select\\r\\n [formControl]=\\\"control\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n (selectionChange)=\\\"optionSelected($event.value)\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n >\\r\\n <mat-option *ngIf=\\\"!control.required\\\" [value]=\\\"null\\\">\\r\\n {{ control.placeholder || control.settings.notSelectedText }}\\r\\n </mat-option>\\r\\n <mat-option\\r\\n *ngFor=\\\"let item of control.settings.source | async\\\"\\r\\n [value]=\\\"item[control.settings.fieldId]\\\"\\r\\n >\\r\\n {{ item | textByFunction: control.settings.fieldName }}\\r\\n </mat-option>\\r\\n </mat-select>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <mat-hint *ngIf=\\\"control.tooltip\\\">{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n</mat-form-field>\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"component\", type: i3$1.MatSelect, selector: \"mat-select\", inputs: [\"disabled\", \"disableRipple\", \"tabIndex\"], exportAs: [\"matSelect\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", exportAs: [\"matOption\"] }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\r\\n *ngIf=\\\"control\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n>\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <mat-select\\r\\n [formControl]=\\\"control\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n (selectionChange)=\\\"optionSelected($event.value)\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n >\\r\\n <mat-option *ngIf=\\\"!control.required\\\" [value]=\\\"null\\\">\\r\\n {{ control.placeholder || control.settings.notSelectedText }}\\r\\n </mat-option>\\r\\n <mat-option\\r\\n *ngFor=\\\"let item of control.settings.source | async\\\"\\r\\n [value]=\\\"item[control.settings.fieldId]\\\"\\r\\n >\\r\\n {{ item | textByFunction: control.settings.fieldName }}\\r\\n </mat-option>\\r\\n </mat-select>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <mat-hint *ngIf=\\\"control.tooltip\\\">{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n</mat-form-field>\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialDropdownModule {\r\n}\r\nSpecialDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, declarations: [SpecialDropdownComponent], imports: [CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipeModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule], exports: [SpecialDropdownComponent] });\r\nSpecialDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, imports: [CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipeModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialDropdownComponent],\r\n imports: [\r\n CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipeModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule\r\n ],\r\n exports: [SpecialDropdownComponent],\r\n }]\r\n }] });\n\nclass SpecialAutocompleteComponent {\r\n constructor() {\r\n this.subs = new Subscription();\r\n this.configValue = (item) => {\r\n if (!item)\r\n return '';\r\n const fieldName = this.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n }\r\n ngOnInit() {\r\n this.init();\r\n }\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n init() {\r\n this.subs.add(this.control.valueChanges.pipe(debounceTime(500)).subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.settings.getData(value, this.control);\r\n }\r\n }));\r\n }\r\n optionSelected(data) {\r\n this.control.setValue(data.option.value);\r\n if (this.settings.onSelect)\r\n this.settings.onSelect(data.option.value);\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\nSpecialAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialAutocompleteComponent, selector: \"sp-autocomplete\", inputs: { control: \"control\" }, ngImport: i0, template: \"<ng-container *ngIf=\\\"control && !control.hidden\\\">\\r\\n <mat-form-field\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label\\r\\n [ngClass]=\\\"{ 'is-link': control.label }\\\"\\r\\n class=\\\"control-label\\\"\\r\\n *ngIf=\\\"control.label\\\"\\r\\n >\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"control\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n</ng-container>\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i4.MatAutocomplete, selector: \"mat-autocomplete\", inputs: [\"disableRipple\"], exportAs: [\"matAutocomplete\"] }, { kind: \"directive\", type: i4.MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", exportAs: [\"matAutocompleteTrigger\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", exportAs: [\"matOption\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ng-container *ngIf=\\\"control && !control.hidden\\\">\\r\\n <mat-form-field\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label\\r\\n [ngClass]=\\\"{ 'is-link': control.label }\\\"\\r\\n class=\\\"control-label\\\"\\r\\n *ngIf=\\\"control.label\\\"\\r\\n >\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"control\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n</ng-container>\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialAutocompleteModule {\r\n}\r\nSpecialAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, declarations: [SpecialAutocompleteComponent], imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule], exports: [SpecialAutocompleteComponent] });\r\nSpecialAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialAutocompleteComponent],\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n ],\r\n exports: [SpecialAutocompleteComponent],\r\n }]\r\n }] });\n\nclass SpecialDatepickerComponent {\r\n constructor() { }\r\n get startAt() {\r\n return this.control.settings?.startAt || new Date();\r\n }\r\n ngOnInit() { }\r\n}\r\nSpecialDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialDatepickerComponent, selector: \"sp-datepicker\", inputs: { control: \"control\" }, ngImport: i0, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [matDatepicker]=\\\"picker\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-datepicker-toggle matSuffix [for]=\\\"picker\\\"></mat-datepicker-toggle>\\n <mat-datepicker #picker startView=\\\"year\\\" [startAt]=\\\"startAt\\\">\\n </mat-datepicker>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: i3$2.MatDatepicker, selector: \"mat-datepicker\", exportAs: [\"matDatepicker\"] }, { kind: \"directive\", type: i3$2.MatDatepickerInput, selector: \"input[matDatepicker]\", inputs: [\"matDatepicker\", \"min\", \"max\", \"matDatepickerFilter\"], exportAs: [\"matDatepickerInput\"] }, { kind: \"component\", type: i3$2.MatDatepickerToggle, selector: \"mat-datepicker-toggle\", inputs: [\"for\", \"tabIndex\", \"aria-label\", \"disabled\", \"disableRipple\"], exportAs: [\"matDatepickerToggle\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [matDatepicker]=\\\"picker\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-datepicker-toggle matSuffix [for]=\\\"picker\\\"></mat-datepicker-toggle>\\n <mat-datepicker #picker startView=\\\"year\\\" [startAt]=\\\"startAt\\\">\\n </mat-datepicker>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialDatepickerModule {\r\n}\r\nSpecialDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, declarations: [SpecialDatepickerComponent], imports: [MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n MatNativeDateModule], exports: [SpecialDatepickerComponent] });\r\nSpecialDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, imports: [MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n MatNativeDateModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialDatepickerComponent],\r\n imports: [\r\n MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n MatNativeDateModule\r\n ],\r\n exports: [SpecialDatepickerComponent],\r\n }]\r\n }] });\n\nclass SpecialMultipleAutocompleteComponent {\r\n constructor() {\r\n this.subs = new Subscription();\r\n this.internalControl = new FormControl();\r\n this.configValue = (item) => {\r\n if (!item)\r\n return '';\r\n const fieldName = this.control.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n }\r\n ngOnInit() {\r\n this.init();\r\n }\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n init() {\r\n this.subs.add(this.internalControl.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.control.settings.getData(value, this.control);\r\n }\r\n }));\r\n }\r\n optionSelected(data) {\r\n const newItem = data.option.value;\r\n this.internalControl.reset();\r\n this.control.setValue([\r\n ...(this.control.value || []).filter((item) => item[this.control.settings.fieldId] !==\r\n newItem[this.control.settings.fieldId]),\r\n newItem,\r\n ]);\r\n if (this.settings.onSelect)\r\n this.settings.onSelect(newItem);\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n remove(value) {\r\n let currentValues = Array.from(this.control.value);\r\n const index = currentValues.indexOf(value);\r\n if (index > -1) {\r\n currentValues.splice(index, 1);\r\n const value = currentValues;\r\n this.control.markAsDirty();\r\n this.control.setValue(value);\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\nSpecialMultipleAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialMultipleAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialMultipleAutocompleteComponent, selector: \"sp-multiple-autocomplete\", inputs: { control: \"control\" }, ngImport: i0, template: \"<div\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n *ngIf=\\\"control && !control.hidden\\\"\\r\\n>\\r\\n <mat-form-field\\r\\n class=\\\"w-full\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required && !control.value?.length\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"internalControl\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n\\r\\n <mat-chip-list>\\r\\n <mat-chip\\r\\n class=\\\"chip-style\\\"\\r\\n *ngFor=\\\"let chip of control.value\\\"\\r\\n [removable]=\\\"true\\\"\\r\\n (removed)=\\\"remove(chip)\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"chip | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n {{ chip | textByFunction: settings.fieldName }}\\r\\n <mat-icon matChipRemove>cancel</mat-icon>\\r\\n </div>\\r\\n </mat-chip>\\r\\n </mat-chip-list>\\r\\n</div>\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i4.MatAutocomplete, selector: \"mat-autocomplete\", inputs: [\"disableRipple\"], exportAs: [\"matAutocomplete\"] }, { kind: \"directive\", type: i4.MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", exportAs: [\"matAutocompleteTrigger\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", exportAs: [\"matOption\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"component\", type: i9.MatChipList, selector: \"mat-chip-list\", inputs: [\"role\", \"aria-describedby\", \"errorStateMatcher\", \"multiple\", \"compareWith\", \"value\", \"required\", \"placeholder\", \"disabled\", \"aria-orientation\", \"selectable\", \"tabIndex\"], outputs: [\"change\", \"valueChange\"], exportAs: [\"matChipList\"] }, { kind: \"directive\", type: i9.MatChip, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: [\"color\", \"disableRipple\", \"tabIndex\", \"role\", \"selected\", \"value\", \"selectable\", \"disabled\", \"removable\"], outputs: [\"selectionChange\", \"destroyed\", \"removed\"], exportAs: [\"matChip\"] }, { kind: \"directive\", type: i9.MatChipRemove, selector: \"[matChipRemove]\" }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-multiple-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n *ngIf=\\\"control && !control.hidden\\\"\\r\\n>\\r\\n <mat-form-field\\r\\n class=\\\"w-full\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required && !control.value?.length\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"internalControl\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n\\r\\n <mat-chip-list>\\r\\n <mat-chip\\r\\n class=\\\"chip-style\\\"\\r\\n *ngFor=\\\"let chip of control.value\\\"\\r\\n [removable]=\\\"true\\\"\\r\\n (removed)=\\\"remove(chip)\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"chip | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n {{ chip | textByFunction: settings.fieldName }}\\r\\n <mat-icon matChipRemove>cancel</mat-icon>\\r\\n </div>\\r\\n </mat-chip>\\r\\n </mat-chip-list>\\r\\n</div>\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialMultipleAutocompleteModule {\r\n}\r\nSpecialMultipleAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialMultipleAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, declarations: [SpecialMultipleAutocompleteComponent], imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n MatChipsModule], exports: [SpecialMultipleAutocompleteComponent] });\r\nSpecialMultipleAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n MatChipsModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialMultipleAutocompleteComponent],\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n MatChipsModule,\r\n ],\r\n exports: [SpecialMultipleAutocompleteComponent],\r\n }]\r\n }] });\n\nclass SpecialCheckboxComponent {\r\n constructor() { }\r\n ngOnInit() { }\r\n}\r\nSpecialCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialCheckboxComponent, selector: \"sp-checkbox\", inputs: { control: \"control\" }, ngImport: i0, template: \"<div\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full flex flex-col {{ control.styleClasses }}\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <mat-checkbox\\n [ngModel]=\\\"control.value\\\"\\n (ngModelChange)=\\\"control.setValue($event); control.markAsDirty()\\\"\\n [indeterminate]=\\\"control.settings.indeterminate\\\"\\n [labelPosition]=\\\"control.settings.labelPosition\\\"\\n [disabled]=\\\"control.disabled\\\"\\n >\\n <mat-icon *ngIf=\\\"control.icon\\\" matSuffix>{{ control.icon }} </mat-icon>\\n {{ control.placeholder }}\\n </mat-checkbox>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i2$1.MatCheckbox, selector: \"mat-checkbox\", inputs: [\"disableRipple\", \"color\", \"tabIndex\"], exportAs: [\"matCheckbox\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full flex flex-col {{ control.styleClasses }}\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <mat-checkbox\\n [ngModel]=\\\"control.value\\\"\\n (ngModelChange)=\\\"control.setValue($event); control.markAsDirty()\\\"\\n [indeterminate]=\\\"control.settings.indeterminate\\\"\\n [labelPosition]=\\\"control.settings.labelPosition\\\"\\n [disabled]=\\\"control.disabled\\\"\\n >\\n <mat-icon *ngIf=\\\"control.icon\\\" matSuffix>{{ control.icon }} </mat-icon>\\n {{ control.placeholder }}\\n </mat-checkbox>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialCheckboxModule {\r\n}\r\nSpecialCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, declarations: [SpecialCheckboxComponent], imports: [FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialCheckboxComponent] });\r\nSpecialCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, imports: [FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialCheckboxComponent],\r\n imports: [\r\n FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialCheckboxComponent],\r\n }]\r\n }] });\n\nclass SpecialTextAreaComponent {\r\n constructor() {\r\n this.onBlur = new EventEmitter();\r\n this.onEnter = new EventEmitter();\r\n }\r\n ngOnInit() { }\r\n}\r\nSpecialTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialTextAreaComponent, selector: \"sp-text-area\", inputs: { control: \"control\" }, outputs: { onBlur: \"onBlur\", onEnter: \"onEnter\" }, ngImport: i0, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <textarea\\n cdkTextareaAutosize\\n #autosize=\\\"cdkTextareaAutosize\\\"\\n cdkAutosizeMinRows=\\\"1\\\"\\n cdkAutosizeMaxRows=\\\"5\\\"\\n matInput\\n (blur)=\\\"onBlur.emit(control.value)\\\"\\n (keydown.enter)=\\\"onEnter.emit(control.value)\\\"\\n [type]=\\\"control.settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n ></textarea>\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2$2.CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: [\"cdkAutosizeMinRows\", \"cdkAutosizeMaxRows\", \"cdkTextareaAutosize\", \"placeholder\"], exportAs: [\"cdkTextareaAutosize\"] }, { kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-text-area', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <textarea\\n cdkTextareaAutosize\\n #autosize=\\\"cdkTextareaAutosize\\\"\\n cdkAutosizeMinRows=\\\"1\\\"\\n cdkAutosizeMaxRows=\\\"5\\\"\\n matInput\\n (blur)=\\\"onBlur.emit(control.value)\\\"\\n (keydown.enter)=\\\"onEnter.emit(control.value)\\\"\\n [type]=\\\"control.settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n ></textarea>\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }], onBlur: [{\r\n type: Output\r\n }], onEnter: [{\r\n type: Output\r\n }] } });\n\nclass SpecialTextAreaModule {\r\n}\r\nSpecialTextAreaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialTextAreaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, declarations: [SpecialTextAreaComponent], imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialTextAreaComponent] });\r\nSpecialTextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialTextAreaComponent],\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n ],\r\n exports: [SpecialTextAreaComponent],\r\n }]\r\n }] });\n\nclass SpecialUploadComponent {\r\n constructor(sanitizer) {\r\n this.sanitizer = sanitizer;\r\n this.onSelect = new EventEmitter();\r\n this.previewImages = [];\r\n }\r\n set controlSetter(control) {\r\n this.control = control;\r\n this.previewImages = control.value;\r\n }\r\n ngOnInit() { }\r\n onSelectMultiple(event) {\r\n this.previewImages = [\r\n ...this.previewImages,\r\n ...event.addedFiles.map(file => ({\r\n lastModified: file.lastModified,\r\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\r\n }))\r\n ];\r\n this.control.setValue([\r\n ...this.control.value,\r\n ...event.addedFiles.map(this.fixFileName)\r\n ]);\r\n this.onSelect.emit(this.control.value);\r\n this.control.markAsDirty();\r\n }\r\n onSelectOne(event) {\r\n this.previewImages = event.addedFiles.map(file => ({\r\n lastModified: file.lastModified,\r\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\r\n }));\r\n this.control.setValue(event.addedFiles.map(this.fixFileName));\r\n this.onSelect.emit(this.control.value);\r\n this.control.markAsDirty();\r\n }\r\n fixFileName(file) {\r\n return Object.defineProperty(file, 'name', {\r\n writable: true,\r\n value: file.name.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\r\n });\r\n }\r\n clean() {\r\n this.previewImages = [];\r\n }\r\n onRemove(file) {\r\n this.control.setValue(this.control.value.filter(fl => fl.lastModified !== file.lastModified));\r\n this.previewImages = this.previewImages.filter(fl => fl.lastModified !== file.lastModified);\r\n }\r\n}\r\nSpecialUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadComponent, deps: [{ token: i1$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialUploadComponent, selector: \"sp-upload\", inputs: { controlSetter: [\"control\", \"controlSetter\"] }, outputs: { onSelect: \"onSelect\" }, ngImport: i0, template: \"<div class=\\\"special_upload mb-2\\\">\\n <ngx-dropzone\\n class=\\\"special_upload__dropzone\\\"\\n [ngClass]=\\\"{\\n 'special_upload--error-dashed':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n [multiple]=\\\"control.settings?.multiple\\\"\\n [accept]=\\\"\\n control.settings?.accept\\n ? control.settings?.accept\\n : 'image/png, .jpeg, .jpg, image/gif'\\n \\\"\\n (change)=\\\"\\n control.settings?.multiple\\n ? onSelectMultiple($event)\\n : onSelectOne($event)\\n \\\"\\n >\\n <ngx-dropzone-label\\n [ngClass]=\\\"{\\n 'special_upload--error':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n >\\n <mat-icon class=\\\"special_upload__icon\\\"*ngIf=\\\"control.icon\\\">{{ control.icon }} </mat-icon>\\n <h2 class=\\\"text-base font-bold\\\">\\n {{ control.label }}\\n </h2>\\n <h3 class=\\\"text-base\\\">\\n {{ control.placeholder }}\\n </h3>\\n </ngx-dropzone-label>\\n <ngx-dropzone-preview\\n *ngFor=\\\"let file of previewImages\\\"\\n [removable]=\\\"true\\\"\\n (removed)=\\\"onRemove(file)\\\"\\n >\\n <ngx-dropzone-label class=\\\"special_upload__card\\\">\\n <img class=\\\"special_upload__card--image\\\" [src]=\\\"file?.url\\\" alt=\\\"\\\" />\\n </ngx-dropzone-label>\\n </ngx-dropzone-preview>\\n </ngx-dropzone>\\n <div\\n class=\\\"special_upload--error mt-2\\\"\\n *ngIf=\\\"!!control.errors && (control.dirty || control.touched)\\\"\\n >\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}:host .special-upload{margin-bottom:2rem}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\\n\"], dependencies: [{ kind: \"component\", type: i2$3.NgxDropzoneComponent, selector: \"ngx-dropzone, [ngx-dropzone]\", inputs: [\"accept\", \"disabled\", \"multiple\", \"maxFileSize\", \"expandable\", \"disableClick\", \"processDirectoryDrop\", \"id\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\"], outputs: [\"change\"] }, { kind: \"directive\", type: i2$3.NgxDropzoneLabelDirective, selector: \"ngx-dropzone-label\" }, { kind: \"component\", type: i2$3.NgxDropzonePreviewComponent, selector: \"ngx-dropzone-preview\", inputs: [\"file\", \"removable\"], outputs: [\"removed\"] }, { kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-upload', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"special_upload mb-2\\\">\\n <ngx-dropzone\\n class=\\\"special_upload__dropzone\\\"\\n [ngClass]=\\\"{\\n 'special_upload--error-dashed':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n [multiple]=\\\"control.settings?.multiple\\\"\\n [accept]=\\\"\\n control.settings?.accept\\n ? control.settings?.accept\\n : 'image/png, .jpeg, .jpg, image/gif'\\n \\\"\\n (change)=\\\"\\n control.settings?.multiple\\n ? onSelectMultiple($event)\\n : onSelectOne($event)\\n \\\"\\n >\\n <ngx-dropzone-label\\n [ngClass]=\\\"{\\n 'special_upload--error':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n >\\n <mat-icon class=\\\"special_upload__icon\\\"*ngIf=\\\"control.icon\\\">{{ control.icon }} </mat-icon>\\n <h2 class=\\\"text-base font-bold\\\">\\n {{ control.label }}\\n </h2>\\n <h3 class=\\\"text-base\\\">\\n {{ control.placeholder }}\\n </h3>\\n </ngx-dropzone-label>\\n <ngx-dropzone-preview\\n *ngFor=\\\"let file of previewImages\\\"\\n [removable]=\\\"true\\\"\\n (removed)=\\\"onRemove(file)\\\"\\n >\\n <ngx-dropzone-label class=\\\"special_upload__card\\\">\\n <img class=\\\"special_upload__card--image\\\" [src]=\\\"file?.url\\\" alt=\\\"\\\" />\\n </ngx-dropzone-label>\\n </ngx-dropzone-preview>\\n </ngx-dropzone>\\n <div\\n class=\\\"special_upload--error mt-2\\\"\\n *ngIf=\\\"!!control.errors && (control.dirty || control.touched)\\\"\\n >\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}:host .special-upload{margin-bottom:2rem}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\\n\"] }]\r\n }], ctorParameters: function () { return [{ type: i1$2.DomSanitizer }]; }, propDecorators: { controlSetter: [{\r\n type: Input,\r\n args: ['control']\r\n }], onSelect: [{\r\n type: Output\r\n }] } });\n\nclass SpecialUploadModule {\r\n}\r\nSpecialUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, declarations: [SpecialUploadComponent], imports: [FormsModule,\r\n NgxDropzoneModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialUploadComponent] });\r\nSpecialUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, imports: [FormsModule,\r\n NgxDropzoneModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialUploadComponent],\r\n imports: [\r\n FormsModule,\r\n NgxDropzoneModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialUploadComponent],\r\n }]\r\n }] });\n\nclass SpecialLabelComponent {\r\n constructor() { }\r\n ngOnInit() { }\r\n get settings() {\r\n return this.control.settings || { isLink: false };\r\n }\r\n onLink() {\r\n if (this.settings.isLink && this.settings.onClickLink) {\r\n this.settings.onClickLink(this.control.value);\r\n }\r\n }\r\n}\r\nSpecialLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialLabelComponent, selector: \"sp-label\", inputs: { control: \"control\" }, ngImport: i0, template: \"<div class=\\\"px-2 {{control.styleClasses}} {{ control.value | textByFunction: settings.stylesPipe}}\\\">\\n <div *ngIf=\\\"!!control.label\\\" class=\\\"font-bold\\\">{{control.label}}</div>\\n <div [ngClass]=\\\"{'cursor-pointer text-blue-600 hover:text-blue-700':settings.isLink }\\\" (click)=\\\"onLink()\\\">\\n {{ control.value | textByFunction: control.settings.pipe}}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-label', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"px-2 {{control.styleClasses}} {{ control.value | textByFunction: settings.stylesPipe}}\\\">\\n <div *ngIf=\\\"!!control.label\\\" class=\\\"font-bold\\\">{{control.label}}</div>\\n <div [ngClass]=\\\"{'cursor-pointer text-blue-600 hover:text-blue-700':settings.isLink }\\\" (click)=\\\"onLink()\\\">\\n {{ control.value | textByFunction: control.settings.pipe}}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialLabelModule {\r\n}\r\nSpecialLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, declarations: [SpecialLabelComponent], imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule,\r\n ErrorMessagePipeModule], exports: [SpecialLabelComponent] });\r\nSpecialLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialLabelComponent],\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialLabelComponent],\r\n }]\r\n }] });\n\nclass FormControlsListPipe {\r\n transform(controls) {\r\n if (!controls)\r\n return [];\r\n return Object.values(controls)\r\n .filter((control) => !control.hidden)\r\n .map((control) => control);\r\n }\r\n}\r\nFormControlsListPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\r\nFormControlsListPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipe, name: \"controlsList\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipe, decorators: [{\r\n type: Pipe,\r\n args: [{ name: 'controlsList' }]\r\n }] });\n\nclass SpecialFormComponent {\r\n set control(form) {\r\n this.form = form;\r\n }\r\n ngOnInit() { }\r\n}\r\nSpecialFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialFormComponent, selector: \"sp-form\", inputs: { form: [\"control\", \"form\"] }, ngImport: i0, template: \"<div class=\\\"w-full box-border p-2\\\">\\n <div\\n *ngIf=\\\"form\\\"\\n [class]=\\\"\\n form.label\\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\\n : 'container'\\n \\\"\\n >\\n <h1 *ngIf=\\\"!!form.label\\\" class=\\\"font-bold py-3\\\">{{ form.label }}</h1>\\n <div class=\\\"w-full flex flex-wrap\\\">\\n <ng-template\\n *ngFor=\\\"let control of form.controls | controlsList\\\"\\n controlRender\\n [control]=\\\"control\\\"\\n ></ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i3.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return FormControlsRenderDirective; }), selector: \"[controlRender]\", inputs: [\"control\"] }, { kind: \"pipe\", type: i0.forwardRef(function () { return FormControlsListPipe; }), name: \"controlsList\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-form', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"w-full box-border p-2\\\">\\n <div\\n *ngIf=\\\"form\\\"\\n [class]=\\\"\\n form.label\\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\\n : 'container'\\n \\\"\\n >\\n <h1 *ngIf=\\\"!!form.label\\\" class=\\\"font-bold py-3\\\">{{ form.label }}</h1>\\n <div class=\\\"w-full flex flex-wrap\\\">\\n <ng-template\\n *ngFor=\\\"let control of form.controls | controlsList\\\"\\n controlRender\\n [control]=\\\"control\\\"\\n ></ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], propDecorators: { form: [{\r\n type: Input,\r\n args: ['control']\r\n }] } });\r\nclass SpecialArrayComponent {\r\n constructor() { }\r\n set control(formArray) {\r\n this.formArray = formArray;\r\n }\r\n get withFormHeader() {\r\n return this.formArray.settings.withFormHeader;\r\n }\r\n get settings() {\r\n return this.formArray.settings;\r\n }\r\n ngOnInit() { }\r\n removeItem(index) {\r\n this.formArray.removeAt(index);\r\n }\r\n addItem() {\r\n this.formArray.addItem();\r\n }\r\n}\r\nSpecialArrayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialArrayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialArrayComponent, selector: \"sp-array\", inputs: { formArray: [\"control\", \"formArray\"] }, ngImport: i0, template: \"<div class=\\\"w-full box-border p-2\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray\\\"\\r\\n class=\\\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\\\"\\r\\n >\\r\\n <h1 *ngIf=\\\"!!formArray.label\\\" class=\\\"font-bold py-3\\\">\\r\\n {{ formArray.label }}\\r\\n </h1>\\r\\n <div class=\\\"divide-y divide-solid\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray.form\\\"\\r\\n [ngClass]=\\\"{ 'md:grid-cols-15': settings.withActionButtons }\\\"\\r\\n class=\\\"grid gap-4 grid-cols-12\\\"\\r\\n >\\r\\n <ng-container *ngIf=\\\"!withFormHeader; else FORMHEADERREF\\\">\\r\\n <h2\\r\\n [class]=\\\"item.styleClasses\\\"\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n >\\r\\n {{ item.label }}\\r\\n </h2>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n ></div>\\r\\n </ng-container>\\r\\n <ng-template #FORMHEADERREF>\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button\\r\\n mat-flat-button\\r\\n color=\\\"primary\\\"\\r\\n [disabled]=\\\"formArray.form.invalid\\\"\\r\\n (click)=\\\"addItem()\\\"\\r\\n >\\r\\n Add\\r\\n </button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </div>\\r\\n <div\\r\\n class=\\\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\\\"\\r\\n *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formGroup.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button mat-flat-button color=\\\"warn\\\" (click)=\\\"removeItem(i)\\\">\\r\\n Remove\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<!-- <table class=\\\"form-array-container__table\\\">\\r\\n <thead *ngIf=\\\"formArray.form\\\">\\r\\n <tr\\r\\n *ngIf=\\\"headerForm; else HEADERFORMREF\\\"\\r\\n class=\\\"form-array-container__table-header\\\"\\r\\n >\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n {{ control.label | translate }}\\r\\n </th>\\r\\n <th *ngIf=\\\"!formArray.readOnly\\\"></th>\\r\\n </tr>\\r\\n <ng-template #HEADERFORMREF>\\r\\n <tr class=\\\"table-form-header\\\">\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n [ngSwitch]=\\\"control.type\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </th>\\r\\n <th class=\\\"header-cell\\\" *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </th>\\r\\n </tr>\\r\\n </ng-template>\\r\\n </thead> -->\\r\\n\\r\\n<!-- [ngStyle]=\\\"{'max-height':'calc(100vh - '+maxHeight+'px)' }\\\"> -->\\r\\n<!-- <tbody>\\r\\n <tr *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\">\\r\\n <td [ngSwitch]=\\\"control.type\\\" *ngFor=\\\"let control of formGroup.controls | controlsList\\\">\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </td>\\r\\n <td *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'delete_outline'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [bdrColor]=\\\"'error-500'\\\"\\r\\n [tColor]=\\\"'error-500'\\\"\\r\\n (onClick)=\\\"deleteItem(i)\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </td>\\r\\n </tr>\\r\\n </tbody> -->\\r\\n<!-- </table> -->\\r\\n\\r\\n<!-- <ng-template #TABLET>\\r\\n <div class=\\\"mt-1\\\">\\r\\n <ng-container *ngIf=\\\"headerFormEnable\\\">\\r\\n <div class=\\\"card-form-container\\\">\\r\\n <automatic-forms [form]=\\\"formArray.form\\\" [enableButtons]=\\\"false\\\">\\r\\n </automatic-forms>\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </div>\\r\\n </ng-container>\\r\\n <ng-content select=\\\"[header]\\\"></ng-content>\\r\\n </div>\\r\\n <div class=\\\"accordion-container\\\">\\r\\n <mat-accordion>\\r\\n <mat-expansion-panel\\r\\n class=\\\"mat-elevation-z1\\\"\\r\\n *ngFor=\\\"let item of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <mat-expansion-panel-header\\r\\n class=\\\"expanded-header\\\"\\r\\n collapsedHeight=\\\"3rem\\\"\\r\\n expandedHeight=\\\"3rem\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardHeaderTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n <mat-icon\\r\\n *ngIf=\\\"!formArray.readOnly\\\"\\r\\n class=\\\"mobile-delete\\\"\\r\\n (click)=\\\"deleteItem(i)\\\"\\r\\n color=\\\"warn\\\"\\r\\n >\\r\\n delete_outline\\r\\n </mat-icon>\\r\\n </mat-expansion-panel-header>\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardBodyTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n </mat-expansion-panel>\\r\\n </mat-accordion>\\r\\n </div>\\r\\n</ng-template>\\r\\n\\r\\n<div class=\\\"text-error\\\" *ngIf=\\\"formArray.dirty && formArray.invalid\\\">\\r\\n {{ formArray.errors | errorMessage | translate }}\\r\\n</div>\\r\\n\\r\\n<ng-template #ADDBUTTON>\\r\\n <div class=\\\"add-item-btn\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'add'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [bdrColor]=\\\"'aux-success'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [tColor]=\\\"'aux-success'\\\"\\r\\n [disabled]=\\\"!formArray.form.valid || !formArray.form.dirty\\\"\\r\\n (onClick)=\\\"addItemAction()\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </div>\\r\\n</ng-template> -->\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i3.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i3.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i0.forwardRef(function () { return i7$1.MatButton; }), selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return FormControlsRenderDirective; }), selector: \"[controlRender]\", inputs: [\"control\"] }, { kind: \"pipe\", type: i0.forwardRef(function () { return FormControlsListPipe; }), name: \"controlsList\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialArrayComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-array', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"w-full box-border p-2\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray\\\"\\r\\n class=\\\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\\\"\\r\\n >\\r\\n <h1 *ngIf=\\\"!!formArray.label\\\" class=\\\"font-bold py-3\\\">\\r\\n {{ formArray.label }}\\r\\n </h1>\\r\\n <div class=\\\"divide-y divide-solid\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray.form\\\"\\r\\n [ngClass]=\\\"{ 'md:grid-cols-15': settings.withActionButtons }\\\"\\r\\n class=\\\"grid gap-4 grid-cols-12\\\"\\r\\n >\\r\\n <ng-container *ngIf=\\\"!withFormHeader; else FORMHEADERREF\\\">\\r\\n <h2\\r\\n [class]=\\\"item.styleClasses\\\"\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n >\\r\\n {{ item.label }}\\r\\n </h2>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n ></div>\\r\\n </ng-container>\\r\\n <ng-template #FORMHEADERREF>\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button\\r\\n mat-flat-button\\r\\n color=\\\"primary\\\"\\r\\n [disabled]=\\\"formArray.form.invalid\\\"\\r\\n (click)=\\\"addItem()\\\"\\r\\n >\\r\\n Add\\r\\n </button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </div>\\r\\n <div\\r\\n class=\\\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\\\"\\r\\n *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formGroup.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button mat-flat-button color=\\\"warn\\\" (click)=\\\"removeItem(i)\\\">\\r\\n Remove\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<!-- <table class=\\\"form-array-container__table\\\">\\r\\n <thead *ngIf=\\\"formArray.form\\\">\\r\\n <tr\\r\\n *ngIf=\\\"headerForm; else HEADERFORMREF\\\"\\r\\n class=\\\"form-array-container__table-header\\\"\\r\\n >\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n {{ control.label | translate }}\\r\\n </th>\\r\\n <th *ngIf=\\\"!formArray.readOnly\\\"></th>\\r\\n </tr>\\r\\n <ng-template #HEADERFORMREF>\\r\\n <tr class=\\\"table-form-header\\\">\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n [ngSwitch]=\\\"control.type\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </th>\\r\\n <th class=\\\"header-cell\\\" *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </th>\\r\\n </tr>\\r\\n </ng-template>\\r\\n </thead> -->\\r\\n\\r\\n<!-- [ngStyle]=\\\"{'max-height':'calc(100vh - '+maxHeight+'px)' }\\\"> -->\\r\\n<!-- <tbody>\\r\\n <tr *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\">\\r\\n <td [ngSwitch]=\\\"control.type\\\" *ngFor=\\\"let control of formGroup.controls | controlsList\\\">\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </td>\\r\\n <td *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'delete_outline'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [bdrColor]=\\\"'error-500'\\\"\\r\\n [tColor]=\\\"'error-500'\\\"\\r\\n (onClick)=\\\"deleteItem(i)\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </td>\\r\\n </tr>\\r\\n </tbody> -->\\r\\n<!-- </table> -->\\r\\n\\r\\n<!-- <ng-template #TABLET>\\r\\n <div class=\\\"mt-1\\\">\\r\\n <ng-container *ngIf=\\\"headerFormEnable\\\">\\r\\n <div class=\\\"card-form-container\\\">\\r\\n <automatic-forms [form]=\\\"formArray.form\\\" [enableButtons]=\\\"false\\\">\\r\\n </automatic-forms>\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </div>\\r\\n </ng-container>\\r\\n <ng-content select=\\\"[header]\\\"></ng-content>\\r\\n </div>\\r\\n <div class=\\\"accordion-container\\\">\\r\\n <mat-accordion>\\r\\n <mat-expansion-panel\\r\\n class=\\\"mat-elevation-z1\\\"\\r\\n *ngFor=\\\"let item of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <mat-expansion-panel-header\\r\\n class=\\\"expanded-header\\\"\\r\\n collapsedHeight=\\\"3rem\\\"\\r\\n expandedHeight=\\\"3rem\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardHeaderTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n <mat-icon\\r\\n *ngIf=\\\"!formArray.readOnly\\\"\\r\\n class=\\\"mobile-delete\\\"\\r\\n (click)=\\\"deleteItem(i)\\\"\\r\\n color=\\\"warn\\\"\\r\\n >\\r\\n delete_outline\\r\\n </mat-icon>\\r\\n </mat-expansion-panel-header>\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardBodyTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n </mat-expansion-panel>\\r\\n </mat-accordion>\\r\\n </div>\\r\\n</ng-template>\\r\\n\\r\\n<div class=\\\"text-error\\\" *ngIf=\\\"formArray.dirty && formArray.invalid\\\">\\r\\n {{ formArray.errors | errorMessage | translate }}\\r\\n</div>\\r\\n\\r\\n<ng-template #ADDBUTTON>\\r\\n <div class=\\\"add-item-btn\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'add'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [bdrColor]=\\\"'aux-success'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [tColor]=\\\"'aux-success'\\\"\\r\\n [disabled]=\\\"!formArray.form.valid || !formArray.form.dirty\\\"\\r\\n (onClick)=\\\"addItemAction()\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </div>\\r\\n</ng-template> -->\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { formArray: [{\r\n type: Input,\r\n args: ['control']\r\n }] } });\r\nclass FormControlsRenderDirective {\r\n constructor(viewContainer) {\r\n this.viewContainer = viewContainer;\r\n this.componentsBuffer = {\r\n [EControlTypes$1.autocomplete]: SpecialAutocompleteComponent,\r\n [EControlTypes$1.checkbox]: SpecialCheckboxComponent,\r\n [EControlTypes$1.date]: SpecialDatepickerComponent,\r\n [EControlTypes$1.dropdown]: SpecialDropdownComponent,\r\n [EControlTypes$1.array]: SpecialArrayComponent,\r\n [EControlTypes$1.input]: SpecialInputComponent,\r\n [EControlTypes$1.multiple]: SpecialMultipleAutocompleteComponent,\r\n [EControlTypes$1.textArea]: SpecialTextAreaComponent,\r\n [EControlTypes$1.label]: SpecialLabelComponent,\r\n [EControlTypes$1.upload]: SpecialUploadComponent,\r\n [EControlTypes$1.form]: SpecialFormComponent,\r\n };\r\n }\r\n set controlSetter(control) {\r\n this.viewContainer.clear();\r\n const component = this.componentsBuffer[control.type];\r\n if (component) {\r\n const componentRef = this.viewContainer.createComponent(component);\r\n componentRef.instance.control = control;\r\n }\r\n }\r\n}\r\nFormControlsRenderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsRenderDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\r\nFormControlsRenderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.1.3\", type: FormControlsRenderDirective, selector: \"[controlRender]\", inputs: { controlSetter: [\"control\", \"controlSetter\"] }, ngImport: i0 });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsRenderDirective, decorators: [{\r\n type: Directive,\r\n args: [{\r\n selector: `[controlRender]`,\r\n }]\r\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { controlSetter: [{\r\n type: Input,\r\n args: ['control']\r\n }] } });\n\nclass FormControlsListPipeModule {\r\n}\r\nFormControlsListPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nFormControlsListPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, declarations: [FormControlsListPipe], imports: [CommonModule], exports: [FormControlsListPipe] });\r\nFormControlsListPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, imports: [CommonModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [FormControlsListPipe],\r\n imports: [CommonModule],\r\n exports: [FormControlsListPipe],\r\n }]\r\n }] });\n\nclass SpecialFormModule {\r\n}\r\nSpecialFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, declarations: [SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent], imports: [CommonModule,\r\n FormControlsListPipeModule,\r\n MatButtonModule,\r\n SpecialDropdownModule,\r\n SpecialInputModule,\r\n SpecialAutocompleteModule,\r\n SpecialDatepickerModule,\r\n SpecialLabelModule,\r\n SpecialMultipleAutocompleteModule,\r\n SpecialCheckboxModule,\r\n SpecialTextAreaModule,\r\n SpecialUploadModule], exports: [SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent] });\r\nSpecialFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, imports: [CommonModule,\r\n FormControlsListPipeModule,\r\n MatButtonModule,\r\n SpecialDropdownModule,\r\n SpecialInputModule,\r\n SpecialAutocompleteModule,\r\n SpecialDatepickerModule,\r\n SpecialLabelModule,\r\n SpecialMultipleAutocompleteModule,\r\n SpecialCheckboxModule,\r\n SpecialTextAreaModule,\r\n SpecialUploadModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormControlsListPipeModule,\r\n MatButtonModule,\r\n SpecialDropdownModule,\r\n SpecialInputModule,\r\n SpecialAutocompleteModule,\r\n SpecialDatepickerModule,\r\n SpecialLabelModule,\r\n SpecialMultipleAutocompleteModule,\r\n SpecialCheckboxModule,\r\n SpecialTextAreaModule,\r\n SpecialUploadModule,\r\n ],\r\n exports: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n }]\r\n }] });\n\nvar EControlTypes;\r\n(function (EControlTypes) {\r\n EControlTypes[\"pkey\"] = \"PRIMARY-KEY\";\r\n EControlTypes[\"input\"] = \"INPUT\";\r\n EControlTypes[\"textArea\"] = \"TEXT-AREA\";\r\n EControlTypes[\"dropdown\"] = \"DROPDOWN\";\r\n EControlTypes[\"date\"] = \"DATE\";\r\n EControlTypes[\"time\"] = \"TIME\";\r\n EControlTypes[\"checkbox\"] = \"CHECKBOX\";\r\n EControlTypes[\"upload\"] = \"UPLOAD\";\r\n EControlTypes[\"autocomplete\"] = \"AUTOCOMPLETE\";\r\n EControlTypes[\"multiple\"] = \"MULTIPLE-AUTOCOMPLETE\";\r\n EControlTypes[\"array\"] = \"ARRAY\";\r\n EControlTypes[\"form\"] = \"FORM\";\r\n EControlTypes[\"label\"] = \"LABEL\";\r\n EControlTypes[\"default\"] = \"DEFAULT\";\r\n})(EControlTypes || (EControlTypes = {}));\n\nclass SpecialFormControl extends FormControl {\r\n constructor({ name, settings, type, validators, asyncValidators, elementId, styleClasses, defaultValue, hidden, icon, label, length, placeholder, readOnly, required, tooltip, errorMessages, disabled, }) {\r\n super(defaultValue, validators, asyncValidators);\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n setReadOnly(status = true) {\r\n this.readOnly = status;\r\n }\r\n setDisabled(status = true) {\r\n status ? this.disable() : this.enable();\r\n }\r\n setHidden(status = true) {\r\n this.hidden = status;\r\n }\r\n}\r\nclass SpecialFormGroup extends FormGroup {\r\n constructor({ name, settings, type, validators, asyncValidators, elementId, styleClasses, defaultValue, hidden, icon, label, length, placeholder, readOnly, required, tooltip, disabled, }, controls) {\r\n super(controls, validators, asyncValidators);\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n unpristineRequired() {\r\n Object.values(this.controls).forEach((control) => {\r\n if (control instanceof SpecialFormControl) {\r\n control.markAsDirty();\r\n }\r\n else if (control instanceof SpecialFormGroup) {\r\n control.unpristineRequired();\r\n }\r\n else if (control instanceof SpecialFormArray) {\r\n control.unpristineRequired();\r\n }\r\n });\r\n }\r\n specialReset(value = {}) {\r\n const aux = {};\r\n Object.entries(this.controls).map(([key, control]) => {\r\n if (control instanceof SpecialFormControl) {\r\n aux[key] = control.defaultValue;\r\n }\r\n else if (control instanceof SpecialFormArray) {\r\n control.clear();\r\n }\r\n });\r\n this.reset({ ...aux, ...value });\r\n }\r\n setReadOnly(status = true) {\r\n Object.values(this.controls).map((value) => {\r\n if (value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup) {\r\n value.setReadOnly(status);\r\n }\r\n });\r\n }\r\n setReadOnlyByFields(fieldsObject) {\r\n Object.entries(fieldsObject).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.readOnly = value;\r\n }\r\n });\r\n }\r\n setHiddenByFields(fields) {\r\n Object.entries(fields).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.hidden = value;\r\n }\r\n });\r\n }\r\n setDisabled(status) {\r\n Object.values(this.controls).map((value) => {\r\n if (value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup) {\r\n value.setDisabled(status);\r\n }\r\n });\r\n }\r\n setDisabledByFields(fieldsObject) {\r\n Object.entries(fieldsObject).map((entries) => {\r\n if (this.controls[entries[0]] instanceof SpecialFormControl) {\r\n entries[1]\r\n ? this.controls[entries[0]].enable()\r\n : this.controls[entries[0]].disable();\r\n }\r\n });\r\n }\r\n /**\r\n * donde value es el objeto semilla y detailForm es un arreglo de form key para dar un marco al formarray\r\n */\r\n setFormValue(value) {\r\n this.specialReset(value);\r\n Object.entries(this.controls)\r\n .filter(([_key, control]) => control instanceof SpecialFormArray)\r\n .map(([key, control]) => {\r\n control.fillFormArray(value[key]);\r\n });\r\n }\r\n /**\r\n * Método que retorna\r\n */\r\n getIdPkey() {\r\n return Object.values(this.controls).find((control) => control instanceof SpecialFormControl && control.type === 'PRIMARY-KEY');\r\n }\r\n}\r\nclass SpecialFormArray extends FormArray {\r\n constructor({ name, settings, type, validators, asyncValidators, elementId, styleClasses, defaultValue, hidden, icon, label, placeholder, readOnly, required, tooltip, errorMessages, disabled, }, formCreation, controls) {\r\n super(controls, validators, asyncValidators);\r\n this.formCreation = formCreation;\r\n this.form = this.formCreation();\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n fillFormArray(data) {\r\n this.form.reset();\r\n this.clear();\r\n data.forEach((item) => {\r\n const form = this.formCreation(item);\r\n this.push(form);\r\n });\r\n }\r\n addItem() {\r\n const form = this.formCreation(this.form.value);\r\n this.form.specialReset();\r\n this.push(form);\r\n this.markAsDirty();\r\n }\r\n specialPush(index) {\r\n const form = this.formCreation(this.form.value);\r\n if (!index)\r\n this.push(form);\r\n else\r\n this.controls[index].reset(this.form.value);\r\n }\r\n specialInsert(index = 0) {\r\n const form = this.formCreation(this.form.value);\r\n this.insert(index, form);\r\n }\r\n specialEdit(index, newValue) {\r\n this.controls[index].reset({ ...this.controls[index].value, ...newValue });\r\n this.markAsDirty();\r\n }\r\n /**\r\n * Vuelve todos los controles del formArray de lectura o de sololectura\r\n * @param status\r\n */\r\n setReadOnly(status) {\r\n this.readOnly = status;\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setReadOnly(status);\r\n }\r\n });\r\n }\r\n /**\r\n * Vuelve todos los controles del formArray habilitados o deshabilitados\r\n * @param status\r\n */\r\n setDisabled(status) {\r\n status ? this.disable() : this.enable();\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setDisabled(status);\r\n }\r\n });\r\n }\r\n /**\r\n * Permite editar un control especifico.\r\n * @param index\r\n */\r\n editControl(index) {\r\n this.form.reset(this.controls[index].value);\r\n }\r\n unpristineRequired() {\r\n this.markAsDirty();\r\n this.controls.forEach((item) => {\r\n item.unpristineRequired();\r\n });\r\n }\r\n recursiveFillForm(form, data) {\r\n Object.entries(form.controls).map(([key, control]) => {\r\n if (control instanceof FormControl) {\r\n control.setValue(data[key]);\r\n }\r\n else if (control instanceof FormArray) {\r\n data[key].forEach(() => { });\r\n }\r\n else if (control instanceof FormGroup) {\r\n control.reset(data[key]);\r\n }\r\n });\r\n return form;\r\n }\r\n}\n\nclass SpecialFormBuilderService {\r\n constructor() {\r\n this.defectField = {\r\n asyncValidators: null,\r\n validators: null,\r\n defaultValue: null,\r\n elementId: '',\r\n hidden: false,\r\n icon: '',\r\n label: '',\r\n disabled: false,\r\n length: 0,\r\n placeholder: '',\r\n readOnly: false,\r\n required: false,\r\n styleClasses: '',\r\n errorMessages: {},\r\n tooltip: '',\r\n };\r\n this.inputDefectField = {\r\n ...this.defectField,\r\n settings: {},\r\n type: EControlTypes.input,\r\n name: '',\r\n };\r\n this.formDefectField = {\r\n ...this.defectField,\r\n settings: {\r\n formFields: {},\r\n },\r\n type: EControlTypes.form,\r\n name: '',\r\n };\r\n this.arrayDefectField = {\r\n ...this.defectField,\r\n settings: {\r\n formFields: {},\r\n },\r\n type: EControlTypes.array,\r\n name: '',\r\n };\r\n }\r\n control(field) {\r\n const formField = {\r\n ...this.inputDefectField,\r\n ...field,\r\n };\r\n const { control } = this.setFormControl(formField);\r\n return control;\r\n }\r\n group(fields, parentField = {}) {\r\n return this.formGenerator(this.fieldDataToArray(fields), parentField);\r\n }\r\n array() { }\r\n fieldDataToArray(fields) {\r\n return Object.entries(fields).map(([name, field]) => this.setDefectFieldOptions(name, field));\r\n }\r\n setDefectFieldOptions(name, field) {\r\n return {\r\n ...this.inputDefectField,\r\n ...field,\r\n name,\r\n };\r\n }\r\n formGenerator(fields, parentField = {}) {\r\n const formField = {\r\n ...this.formDefectField,\r\n ...parentField,\r\n };\r\n const structure = fields\r\n .map((field) => this.getControlAndNameByType(field))\r\n .reduce((prev, { name, control }) => ({\r\n ...prev,\r\n [name]: control,\r\n }), {});\r\n return new SpecialFormGroup(formField, structure);\r\n }\r\n getControlAndNameByType(field) {\r\n switch (field.type) {\r\n case EControlTypes.array:\r\n return this.setFormArray(field);\r\n case EControlTypes.form:\r\n return this.setFormGroup(field);\r\n default:\r\n return this.setFormControl(field);\r\n }\r\n }\r\n setFormGroup(field) {\r\n const control = this.formGenerator(this.fieldDataToArray(field.settings.formFields), field);\r\n return { control, name: field.name };\r\n }\r\n setFormArray(field) {\r\n const auxForm = (value = {}) => {\r\n const auxForm = this.formGenerator(this.fieldDataToArray(field.settings.formFields), {});\r\n auxForm.reset(value);\r\n return auxForm;\r\n };\r\n if (field.required) {\r\n field.validators = this.setValidatorsArray(field.validators, [\r\n this.arrayLengthRequired,\r\n ]);\r\n }\r\n return {\r\n name: field.name,\r\n control: new SpecialFormArray(field, auxForm, []),\r\n };\r\n }\r\n setFormControl(field) {\r\n const validators = [];\r\n if (field.required)\r\n validators.push(this.setRequiredValidator(field));\r\n if (field.length)\r\n validators.push(Validators.maxLength(field.length));\r\n field.validators = this.setValidatorsArray(field.validators, validators);\r\n return {\r\n name: field.name,\r\n control: new SpecialFormControl(field),\r\n };\r\n }\r\n setRequiredValidator(field) {\r\n if (field.type !== EControlTypes.autocomplete) {\r\n return Validators.required;\r\n }\r\n return (control) => !!control.value && control.value instanceof Object\r\n ? null\r\n : { required: true };\r\n }\r\n setValidatorsArray(validators, newValidators) {\r\n if (!validators) {\r\n return newValidators;\r\n }\r\n return validators instanceof Array\r\n ? [...validators, ...newValidators]\r\n : [validators, ...newValidators];\r\n }\r\n arrayLengthRequired(control) {\r\n if (control.value.length) {\r\n return {};\r\n }\r\n return { noItems: 'NO_SELECTED_ITEM' };\r\n }\r\n}\r\nSpecialFormBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nSpecialFormBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormBuilderService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormBuilderService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root',\r\n }]\r\n }], ctorParameters: function () { return []; } });\n\n/*\r\n * Public API Surface of special-forms\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { FormControlsRenderDirective, SpecialArrayComponent, SpecialAutocompleteComponent, SpecialAutocompleteModule, SpecialCheckboxComponent, SpecialCheckboxModule, SpecialDatepickerComponent, SpecialDatepickerModule, SpecialDropdownComponent, SpecialDropdownModule, SpecialFormBuilderService, SpecialFormComponent, SpecialFormModule, SpecialInputComponent, SpecialInputModule, SpecialLabelComponent, SpecialLabelModule, SpecialMultipleAutocompleteComponent, SpecialMultipleAutocompleteModule, SpecialTextAreaComponent, SpecialTextAreaModule, SpecialUploadComponent, SpecialUploadModule };\n//# sourceMappingURL=special-forms.mjs.map\n","map":{"version":3,"file":"special-forms.mjs","sources":["../../../projects/special-forms/src/lib/pipes/error-message-pipe/error.pipe.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.component.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.component.html","../../../projects/special-forms/src/lib/pipes/error-message-pipe/error.pipe.module.ts","../../../projects/special-forms/src/lib/pipes/text-by-function/text-by-function.pipe.ts","../../../projects/special-forms/src/lib/pipes/text-by-function/text-by-function.pipe.module.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.module.ts","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.ts","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.html","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.module.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.module.ts","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.ts","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.html","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.module.ts","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.module.ts","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.ts","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.html","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.module.ts","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.ts","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.html","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.module.ts","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.ts","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.html","../../../projects/special-forms/src/lib/components/special-upload/special-upload.module.ts","../../../projects/special-forms/src/lib/components/special-label/special-label.component.ts","../../../projects/special-forms/src/lib/components/special-label/special-label.component.html","../../../projects/special-forms/src/lib/components/special-label/special-label.module.ts","../../../projects/special-forms/src/lib/pipes/controls-list-pipe/controls-list.pipe.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.component.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form-array.component.html","../../../projects/special-forms/src/lib/pipes/controls-list-pipe/controls-list.pipe.module.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.module.ts","../../../projects/special-forms/src/lib/core/aux-data/control-types.enum.ts","../../../projects/special-forms/src/lib/core/forms/special-forms.ts","../../../projects/special-forms/src/lib/core/services/special-form-builder/special-form-builder.service.ts","../../../projects/special-forms/src/public-api.ts","../../../projects/special-forms/src/special-forms.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\n\r\n@Pipe({\r\n name: \"errorMessage\",\r\n})\r\nexport class ErrorMessagePipe implements PipeTransform {\r\n transform(\r\n errorsObj: { [key: string]: any },\r\n errorMessages: { [key: string]: any },\r\n control?: FormControl\r\n ): any {\r\n const errors = errorsObj ? Object.keys(errorsObj) : [];\r\n const error = errors[0];\r\n const message = errorMessages[error] || error;\r\n if (control) {\r\n control.setErrors(errorsObj);\r\n }\r\n return message;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { IInputSettings } from './special-input.interface';\n@Component({\n selector: 'sp-input',\n templateUrl: './special-input.component.html',\n styleUrls: ['./special-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialInputComponent implements OnInit {\n @Input() control: SpecialFormControl<IInputSettings>;\n\n constructor() {}\n\n ngOnInit(): void {}\n\n onEnterClick() {\n if (this.settings.onEnter) {\n this.settings.onEnter(this.control.value);\n }\n }\n\n onBlurAction() {\n if (this.settings.onBlur) {\n this.settings.onBlur(this.control.value);\n }\n }\n\n get settings(): IInputSettings {\n return this.control.settings;\n }\n\n iconClick(event) {\n if (this.settings.iconAction) {\n this.settings.iconAction(this.control.value);\n event.stopPropagation();\n }\n }\n}\n","<mat-form-field\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'standard'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n (blur)=\"onBlurAction()\"\n (keydown.enter)=\"onEnterClick()\"\n [inputMask]=\"settings?.mask\"\n autocomplete=\"off\"\n [type]=\"settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <button\n *ngIf=\"settings?.icon\"\n mat-icon-button\n matSuffix\n (click)=\"iconClick($event)\"\n >\n <mat-icon>\n {{ settings.icon }}\n </mat-icon>\n </button>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ErrorMessagePipe } from \"./error.pipe\";\r\n\r\n@NgModule({\r\n declarations: [ErrorMessagePipe],\r\n imports: [\r\n CommonModule,\r\n\r\n ],\r\n exports: [ErrorMessagePipe],\r\n})\r\nexport class ErrorMessagePipeModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'textByFunction' })\r\nexport class TextByFunctionPipe implements PipeTransform {\r\n transform(value: any, field: string | ((value: any) => string)): any {\r\n if (field instanceof Function) {\r\n return field(value);\r\n } else if (value instanceof Object) {\r\n return value[field];\r\n } else {\r\n return value;\r\n }\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TextByFunctionPipe } from \"./text-by-function.pipe\";\r\n\r\n@NgModule({\r\n declarations: [TextByFunctionPipe],\r\n imports: [\r\n CommonModule,\r\n\r\n ],\r\n exports: [TextByFunctionPipe],\r\n})\r\nexport class TextByFunctionPipeModule {}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialInputComponent } from './special-input.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputMaskModule } from \"@ngneat/input-mask\";\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\n\n@NgModule({\n declarations: [SpecialInputComponent],\n imports: [\n InputMaskModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialInputComponent],\n})\nexport class SpecialInputModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n HostBinding,\r\n} from '@angular/core';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IDropdownSettings } from './special-dropdown.interface';\r\nimport { OverlayContainer } from '@angular/cdk/overlay';\r\n@Component({\r\n selector: 'sp-dropdown',\r\n templateUrl: './special-dropdown.component.html',\r\n styleUrls: ['./special-dropdown.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialDropdownComponent {\r\n @Input() control: SpecialFormControl<IDropdownSettings>;\r\n\r\n get settings(): IDropdownSettings {\r\n return this.control.settings;\r\n }\r\n\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n optionSelected(value) {\r\n if (this.settings.onSelect) this.settings.onSelect(value);\r\n }\r\n\r\n}\r\n","<mat-form-field\r\n *ngIf=\"control\"\r\n [id]=\"control.elementId\"\r\n class=\"w-full {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'standard'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">\r\n {{ control.label }}\r\n </mat-label>\r\n <mat-select\r\n [formControl]=\"control\"\r\n [required]=\"control.required\"\r\n (selectionChange)=\"optionSelected($event.value)\"\r\n [placeholder]=\"control.placeholder\"\r\n >\r\n <mat-option *ngIf=\"!control.required\" [value]=\"null\">\r\n {{ control.placeholder || control.settings.notSelectedText }}\r\n </mat-option>\r\n <mat-option\r\n *ngFor=\"let item of control.settings.source | async\"\r\n [value]=\"item[control.settings.fieldId]\"\r\n >\r\n {{ item | textByFunction: control.settings.fieldName }}\r\n </mat-option>\r\n </mat-select>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <mat-hint *ngIf=\"control.tooltip\">{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialDropdownComponent } from './special-dropdown.component';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n@NgModule({\n declarations: [SpecialDropdownComponent],\n imports: [\n CommonModule,\n MatSelectModule,\n ReactiveFormsModule,\n ErrorMessagePipeModule,\n MatIconModule,\n MatButtonModule,\n TextByFunctionPipeModule\n ],\n exports: [SpecialDropdownComponent],\n})\nexport class SpecialDropdownModule {}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IAutocompleteSettings } from './special-autocomplete.interface';\r\n@Component({\r\n selector: 'sp-autocomplete',\r\n templateUrl: './special-autocomplete.component.html',\r\n styleUrls: ['./special-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialAutocompleteComponent {\r\n @Input() control: SpecialFormControl<IAutocompleteSettings>;\r\n\r\n subs = new Subscription();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IAutocompleteSettings {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.control.valueChanges.pipe(debounceTime(500)).subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n this.control.setValue(data.option.value);\r\n if (this.settings.onSelect) this.settings.onSelect(data.option.value);\r\n }\r\n\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<ng-container *ngIf=\"control && !control.hidden\">\r\n <mat-form-field\r\n class=\"w-full {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'standard'\"\r\n >\r\n <mat-label\r\n [ngClass]=\"{ 'is-link': control.label }\"\r\n class=\"control-label\"\r\n *ngIf=\"control.label\"\r\n >\r\n {{ control.label }}\r\n </mat-label>\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"control\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n class=\"autocomplete-options\"\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of settings?.source | async\"\r\n [value]=\"option\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\nimport { SpecialAutocompleteComponent } from './special-autocomplete.component';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [SpecialAutocompleteComponent],\n imports: [\n MatInputModule,\n CommonModule,\n MatAutocompleteModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n TextByFunctionPipeModule,\n ],\n exports: [SpecialAutocompleteComponent],\n})\nexport class SpecialAutocompleteModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { IDatePickerSettings } from './special-datepicker.interface';\n\n@Component({\n selector: 'sp-datepicker',\n templateUrl: './special-datepicker.component.html',\n styleUrls: ['./special-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialDatepickerComponent implements OnInit {\n @Input() control: SpecialFormControl<IDatePickerSettings>;\n\n constructor() {}\n\n get startAt() {\n return this.control.settings?.startAt || new Date();\n }\n\n ngOnInit(): void {}\n}\n","<mat-form-field\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'standard'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n autocomplete=\"off\"\n [readonly]=\"control.readOnly\"\n [matDatepicker]=\"picker\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\n </mat-datepicker>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialDatepickerComponent } from './special-datepicker.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\n\n@NgModule({\n declarations: [SpecialDatepickerComponent],\n imports: [\n MatInputModule,\n MatDatepickerModule,\n CommonModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n MatNativeDateModule\n ],\n exports: [SpecialDatepickerComponent],\n})\nexport class SpecialDatepickerModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IMultipleAutocompleteSettings } from './special-multiple-autocomplete.interface';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'sp-multiple-autocomplete',\r\n templateUrl: './special-multiple-autocomplete.component.html',\r\n styleUrls: ['./special-multiple-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialMultipleAutocompleteComponent {\r\n @Input() control: SpecialFormControl<IMultipleAutocompleteSettings>;\r\n\r\n subs = new Subscription();\r\n internalControl = new FormControl();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IMultipleAutocompleteSettings {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.internalControl.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.control.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n const newItem = data.option.value;\r\n this.internalControl.reset();\r\n this.control.setValue([\r\n ...(this.control.value || []).filter(\r\n (item) =>\r\n item[this.control.settings.fieldId] !==\r\n newItem[this.control.settings.fieldId]\r\n ),\r\n newItem,\r\n ]);\r\n\r\n if (this.settings.onSelect) this.settings.onSelect(newItem);\r\n }\r\n\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n remove(value: any[]): void {\r\n let currentValues = Array.from(this.control.value);\r\n const index = currentValues.indexOf(value);\r\n\r\n if (index > -1) {\r\n currentValues.splice(index, 1);\r\n const value = currentValues;\r\n this.control.markAsDirty();\r\n this.control.setValue(value);\r\n }\r\n }\r\n\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.control.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"w-full {{ control.styleClasses }}\"\r\n *ngIf=\"control && !control.hidden\"\r\n>\r\n <mat-form-field\r\n class=\"w-full\"\r\n [id]=\"control.elementId\"\r\n [appearance]=\"control.label ? 'outline' : 'standard'\"\r\n >\r\n <mat-label *ngIf=\"control.label\">\r\n {{ control.label }}\r\n </mat-label>\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required && !control.value?.length\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"internalControl\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n class=\"autocomplete-options\"\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of settings?.source | async\"\r\n [value]=\"option\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2 object-contain\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-chip-list>\r\n <mat-chip\r\n class=\"chip-style\"\r\n *ngFor=\"let chip of control.value\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(chip)\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2 object-contain\"\r\n alt=\"\"\r\n [src]=\"chip | textByFunction: settings.fieldImage\"\r\n />\r\n {{ chip | textByFunction: settings.fieldName }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </div>\r\n </mat-chip>\r\n </mat-chip-list>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { SpecialMultipleAutocompleteComponent } from './special-multiple-autocomplete.component';\n\n@NgModule({\n declarations: [SpecialMultipleAutocompleteComponent],\n imports: [\n MatInputModule,\n CommonModule,\n MatAutocompleteModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n TextByFunctionPipeModule,\n MatChipsModule,\n\n ],\n exports: [SpecialMultipleAutocompleteComponent],\n})\nexport class SpecialMultipleAutocompleteModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { ICheckboxSettings } from './special-checkbox.interface';\n@Component({\n selector: 'sp-checkbox',\n templateUrl: './special-checkbox.component.html',\n styleUrls: ['./special-checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialCheckboxComponent implements OnInit {\n @Input() control: SpecialFormControl<ICheckboxSettings>;\n constructor() {}\n ngOnInit(): void {}\n}\n","<div\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full flex flex-col {{ control.styleClasses }}\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <mat-checkbox\n [ngModel]=\"control.value\"\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\n [indeterminate]=\"control.settings.indeterminate\"\n [labelPosition]=\"control.settings.labelPosition\"\n [disabled]=\"control.disabled\"\n >\n <mat-icon *ngIf=\"control.icon\" matSuffix>{{ control.icon }} </mat-icon>\n {{ control.placeholder }}\n </mat-checkbox>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialCheckboxComponent } from './special-checkbox.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\n\n@NgModule({\n declarations: [SpecialCheckboxComponent],\n imports: [\n FormsModule,\n MatCheckboxModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialCheckboxComponent],\n})\nexport class SpecialCheckboxModule {}\n","import { ChangeDetectionStrategy } from '@angular/core';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { ITextAreaField } from './special-text-area.interface';\n@Component({\n selector: 'sp-text-area',\n templateUrl: './special-text-area.component.html',\n styleUrls: ['./special-text-area.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialTextAreaComponent implements OnInit {\n @Input() control: SpecialFormControl<ITextAreaField>;\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n @Output() onEnter: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<mat-form-field\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'standard'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <textarea\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n matInput\n (blur)=\"onBlur.emit(control.value)\"\n (keydown.enter)=\"onEnter.emit(control.value)\"\n [type]=\"control.settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n ></textarea>\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialTextAreaComponent } from './special-text-area.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputMaskModule } from '@ngneat/input-mask';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\n\n@NgModule({\n declarations: [SpecialTextAreaComponent],\n imports: [\n InputMaskModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n ],\n exports: [SpecialTextAreaComponent],\n})\nexport class SpecialTextAreaModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { IUploadSettings } from './special-upload.interface';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'sp-upload',\n templateUrl: './special-upload.component.html',\n styleUrls: ['./special-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialUploadComponent implements OnInit {\n control: SpecialFormControl<IUploadSettings>;\n\n @Input('control') set controlSetter(control) {\n this.control = control;\n this.previewImages = control.value;\n }\n\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n previewImages = [];\n\n constructor( private sanitizer: DomSanitizer) {}\n\n ngOnInit(): void {}\n\n onSelectMultiple(event) {\n this.previewImages = [\n ...this.previewImages,\n ...event.addedFiles.map(file =>\n ({\n lastModified: file.lastModified,\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\n }\n ))\n ];\n\n this.control.setValue(\n [\n ...this.control.value,\n ...event.addedFiles.map(this.fixFileName)\n ]\n );\n this.onSelect.emit(this.control.value)\n this.control.markAsDirty();\n }\n\n onSelectOne(event) {\n this.previewImages = event.addedFiles.map(file =>\n ({\n lastModified: file.lastModified,\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\n }))\n\n this.control.setValue(\n event.addedFiles.map(this.fixFileName)\n );\n this.onSelect.emit(this.control.value)\n this.control.markAsDirty();\n }\n\n fixFileName(file: File) {\n return Object.defineProperty(file, 'name', {\n writable: true,\n value: file.name.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\n });\n }\n\n clean() {\n this.previewImages = [];\n }\n onRemove(file) {\n this.control.setValue(this.control.value.filter(fl => fl.lastModified !== file.lastModified));\n this.previewImages = this.previewImages.filter(fl => fl.lastModified !== file.lastModified)\n }\n\n}\n","<div class=\"special_upload mb-2\">\n <ngx-dropzone\n class=\"special_upload__dropzone\"\n [ngClass]=\"{\n 'special_upload--error-dashed':\n !!control.errors && (control.dirty || control.touched)\n }\"\n [multiple]=\"control.settings?.multiple\"\n [accept]=\"\n control.settings?.accept\n ? control.settings?.accept\n : 'image/png, .jpeg, .jpg, image/gif'\n \"\n (change)=\"\n control.settings?.multiple\n ? onSelectMultiple($event)\n : onSelectOne($event)\n \"\n >\n <ngx-dropzone-label\n [ngClass]=\"{\n 'special_upload--error':\n !!control.errors && (control.dirty || control.touched)\n }\"\n >\n <mat-icon class=\"special_upload__icon\"*ngIf=\"control.icon\">{{ control.icon }} </mat-icon>\n <h2 class=\"text-base font-bold\">\n {{ control.label }}\n </h2>\n <h3 class=\"text-base\">\n {{ control.placeholder }}\n </h3>\n </ngx-dropzone-label>\n <ngx-dropzone-preview\n *ngFor=\"let file of previewImages\"\n [removable]=\"true\"\n (removed)=\"onRemove(file)\"\n >\n <ngx-dropzone-label class=\"special_upload__card\">\n <img class=\"special_upload__card--image\" [src]=\"file?.url\" alt=\"\" />\n </ngx-dropzone-label>\n </ngx-dropzone-preview>\n </ngx-dropzone>\n <div\n class=\"special_upload--error mt-2\"\n *ngIf=\"!!control.errors && (control.dirty || control.touched)\"\n >\n {{ control.errors | errorMessage: control.errorMessages }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialUploadComponent } from './special-upload.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\nimport { NgxDropzoneModule } from 'ngx-dropzone';\n\n@NgModule({\n declarations: [SpecialUploadComponent],\n imports: [\n FormsModule,\n NgxDropzoneModule,\n CommonModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialUploadComponent],\n})\nexport class SpecialUploadModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { ILabelSettings } from './special-label.interface';\n\n@Component({\n selector: 'sp-label',\n templateUrl: './special-label.component.html',\n styleUrls: ['./special-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialLabelComponent implements OnInit {\n @Input() control: SpecialFormControl<ILabelSettings>;\n\n constructor() {}\n\n ngOnInit(): void {}\n\n get settings(): ILabelSettings {\n return this.control.settings || { isLink: false };\n }\n\n onLink() {\n if (this.settings.isLink && this.settings.onClickLink) {\n this.settings.onClickLink(this.control.value);\n }\n }\n}\n","<div class=\"px-2 {{control.styleClasses}} {{ control.value | textByFunction: settings.stylesPipe}}\">\n <div *ngIf=\"!!control.label\" class=\"font-bold\">{{control.label}}</div>\n <div [ngClass]=\"{'cursor-pointer text-blue-600 hover:text-blue-700':settings.isLink }\" (click)=\"onLink()\">\n {{ control.value | textByFunction: control.settings.pipe}}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialLabelComponent } from './special-label.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputMaskModule } from \"@ngneat/input-mask\";\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\n\n@NgModule({\n declarations: [SpecialLabelComponent],\n imports: [\n InputMaskModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n TextByFunctionPipeModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialLabelComponent],\n})\nexport class SpecialLabelModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport {\r\n SpecialFormControl,\r\n} from '../../core/forms/special-forms';\r\n\r\n@Pipe({ name: 'controlsList' })\r\nexport class FormControlsListPipe implements PipeTransform {\r\n transform(controls: {\r\n [key: string]: AbstractControl;\r\n }): SpecialFormControl<any>[] {\r\n if (!controls) return [];\r\n return Object.values(controls)\r\n .filter((control: SpecialFormControl<any>) => !control.hidden)\r\n .map((control) => control as SpecialFormControl<any>);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Directive, ViewContainerRef } from '@angular/core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { EControlTypes } from '@lib/core/aux-data/control-types.enum';\nimport {\n SpecialFormGroup,\n SpecialFormControl,\n} from '../../core/forms/special-forms';\nimport { SpecialAutocompleteComponent } from '../special-autocomplete/special-autocomplete.component';\nimport { SpecialCheckboxComponent } from '../special-checkbox/special-checkbox.component';\nimport { SpecialDatepickerComponent } from '../special-datepicker/special-datepicker.component';\nimport { SpecialDropdownComponent } from '../special-dropdown/special-dropdown.component';\nimport { SpecialInputComponent } from '../special-input/special-input.component';\nimport { SpecialLabelComponent } from '../special-label/special-label.component';\nimport { SpecialMultipleAutocompleteComponent } from '../special-multiple-autocomplete/special-multiple-autocomplete.component';\nimport { SpecialTextAreaComponent } from '../special-text-area/special-text-area.component';\nimport { SpecialUploadComponent } from '../special-upload/special-upload.component';\n\n@Component({\n selector: 'sp-form',\n templateUrl: './special-form.component.html',\n styleUrls: ['./special-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialFormComponent implements OnInit {\n @Input('control') form: SpecialFormGroup;\n set control(form: SpecialFormGroup) {\n this.form = form;\n }\n ngOnInit(): void {}\n}\n\n@Component({\n selector: 'sp-array',\n templateUrl: './special-form-array.component.html',\n styleUrls: ['./special-form-array.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialArrayComponent implements OnInit {\n @Input('control') formArray: any;\n\n set control(formArray: any) {\n this.formArray = formArray;\n }\n\n get withFormHeader() {\n return this.formArray.settings.withFormHeader;\n }\n\n get settings() {\n return this.formArray.settings;\n }\n\n constructor() {}\n\n ngOnInit() {}\n\n removeItem(index) {\n this.formArray.removeAt(index);\n }\n addItem() {\n this.formArray.addItem();\n }\n}\n\n@Directive({\n selector: `[controlRender]`,\n})\nexport class FormControlsRenderDirective {\n private readonly componentsBuffer = {\n [EControlTypes.autocomplete]: SpecialAutocompleteComponent,\n [EControlTypes.checkbox]: SpecialCheckboxComponent,\n [EControlTypes.date]: SpecialDatepickerComponent,\n [EControlTypes.dropdown]: SpecialDropdownComponent,\n [EControlTypes.array]: SpecialArrayComponent,\n [EControlTypes.input]: SpecialInputComponent,\n [EControlTypes.multiple]: SpecialMultipleAutocompleteComponent,\n [EControlTypes.textArea]: SpecialTextAreaComponent,\n [EControlTypes.label]: SpecialLabelComponent,\n [EControlTypes.upload]: SpecialUploadComponent,\n [EControlTypes.form]: SpecialFormComponent,\n };\n @Input('control') set controlSetter(control: SpecialFormControl<any>) {\n this.viewContainer.clear();\n const component = this.componentsBuffer[control.type];\n if (component) {\n const componentRef = this.viewContainer.createComponent(component);\n (componentRef.instance as any).control = control;\n }\n }\n\n constructor(private viewContainer: ViewContainerRef) {}\n}\n","<div class=\"w-full box-border p-2\">\n <div\n *ngIf=\"form\"\n [class]=\"\n form.label\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\n : 'container'\n \"\n >\n <h1 *ngIf=\"!!form.label\" class=\"font-bold py-3\">{{ form.label }}</h1>\n <div class=\"w-full flex flex-wrap\">\n <ng-template\n *ngFor=\"let control of form.controls | controlsList\"\n controlRender\n [control]=\"control\"\n ></ng-template>\n </div>\n </div>\n</div>\n","<div class=\"w-full box-border p-2\">\r\n <div\r\n *ngIf=\"formArray\"\r\n class=\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\"\r\n >\r\n <h1 *ngIf=\"!!formArray.label\" class=\"font-bold py-3\">\r\n {{ formArray.label }}\r\n </h1>\r\n <div class=\"divide-y divide-solid\">\r\n <div\r\n *ngIf=\"formArray.form\"\r\n [ngClass]=\"{ 'md:grid-cols-15': settings.withActionButtons }\"\r\n class=\"grid gap-4 grid-cols-12\"\r\n >\r\n <ng-container *ngIf=\"!withFormHeader; else FORMHEADERREF\">\r\n <h2\r\n [class]=\"item.styleClasses\"\r\n *ngFor=\"let item of formArray.form.controls | controlsList\"\r\n >\r\n {{ item.label }}\r\n </h2>\r\n <div\r\n *ngIf=\"settings.withActionButtons\"\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n ></div>\r\n </ng-container>\r\n <ng-template #FORMHEADERREF>\r\n <ng-template\r\n *ngFor=\"let item of formArray.form.controls | controlsList\"\r\n controlRender\r\n [control]=\"item\"\r\n ></ng-template>\r\n <div\r\n *ngIf=\"settings.withActionButtons\"\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n >\r\n <button\r\n mat-flat-button\r\n color=\"primary\"\r\n [disabled]=\"formArray.form.invalid\"\r\n (click)=\"addItem()\"\r\n >\r\n Add\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div\r\n class=\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\"\r\n *ngFor=\"let formGroup of formArray.controls; let i = index\"\r\n >\r\n <ng-template\r\n *ngFor=\"let item of formGroup.controls | controlsList\"\r\n controlRender\r\n [control]=\"item\"\r\n ></ng-template>\r\n <div\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n >\r\n <button mat-flat-button color=\"warn\" (click)=\"removeItem(i)\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <table class=\"form-array-container__table\">\r\n <thead *ngIf=\"formArray.form\">\r\n <tr\r\n *ngIf=\"headerForm; else HEADERFORMREF\"\r\n class=\"form-array-container__table-header\"\r\n >\r\n <th\r\n class=\"header-cell\"\r\n *ngFor=\"let control of formArray.form | controlsList\"\r\n >\r\n {{ control.label | translate }}\r\n </th>\r\n <th *ngIf=\"!formArray.readOnly\"></th>\r\n </tr>\r\n <ng-template #HEADERFORMREF>\r\n <tr class=\"table-form-header\">\r\n <th\r\n class=\"header-cell\"\r\n [ngSwitch]=\"control.type\"\r\n *ngFor=\"let control of formArray.form | controlsList\"\r\n >\r\n <sp-form-control-selector\r\n [control]=\"control\"\r\n ></sp-form-control-selector>\r\n </th>\r\n <th class=\"header-cell\" *ngIf=\"!formArray.readOnly\">\r\n <ng-container *ngTemplateOutlet=\"ADDBUTTON\"></ng-container>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n </thead> -->\r\n\r\n<!-- [ngStyle]=\"{'max-height':'calc(100vh - '+maxHeight+'px)' }\"> -->\r\n<!-- <tbody>\r\n <tr *ngFor=\"let formGroup of formArray.controls; let i = index\">\r\n <td [ngSwitch]=\"control.type\" *ngFor=\"let control of formGroup.controls | controlsList\">\r\n <sp-form-control-selector\r\n [control]=\"control\"\r\n ></sp-form-control-selector>\r\n </td>\r\n <td *ngIf=\"!formArray.readOnly\">\r\n <bmb-button\r\n [icon]=\"'delete_outline'\"\r\n [type]=\"'Raised'\"\r\n [size]=\"'XLarge'\"\r\n [bdrColor]=\"'error-500'\"\r\n [tColor]=\"'error-500'\"\r\n (onClick)=\"deleteItem(i)\"\r\n >\r\n </bmb-button>\r\n </td>\r\n </tr>\r\n </tbody> -->\r\n<!-- </table> -->\r\n\r\n<!-- <ng-template #TABLET>\r\n <div class=\"mt-1\">\r\n <ng-container *ngIf=\"headerFormEnable\">\r\n <div class=\"card-form-container\">\r\n <automatic-forms [form]=\"formArray.form\" [enableButtons]=\"false\">\r\n </automatic-forms>\r\n <ng-container *ngTemplateOutlet=\"ADDBUTTON\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-content select=\"[header]\"></ng-content>\r\n </div>\r\n <div class=\"accordion-container\">\r\n <mat-accordion>\r\n <mat-expansion-panel\r\n class=\"mat-elevation-z1\"\r\n *ngFor=\"let item of formArray.controls; let i = index\"\r\n >\r\n <mat-expansion-panel-header\r\n class=\"expanded-header\"\r\n collapsedHeight=\"3rem\"\r\n expandedHeight=\"3rem\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"cardHeaderTemplate; context: { $implicit: item }\"\r\n >\r\n </ng-container>\r\n <mat-icon\r\n *ngIf=\"!formArray.readOnly\"\r\n class=\"mobile-delete\"\r\n (click)=\"deleteItem(i)\"\r\n color=\"warn\"\r\n >\r\n delete_outline\r\n </mat-icon>\r\n </mat-expansion-panel-header>\r\n <ng-container\r\n *ngTemplateOutlet=\"cardBodyTemplate; context: { $implicit: item }\"\r\n >\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"text-error\" *ngIf=\"formArray.dirty && formArray.invalid\">\r\n {{ formArray.errors | errorMessage | translate }}\r\n</div>\r\n\r\n<ng-template #ADDBUTTON>\r\n <div class=\"add-item-btn\">\r\n <bmb-button\r\n [icon]=\"'add'\"\r\n [type]=\"'Raised'\"\r\n [bdrColor]=\"'aux-success'\"\r\n [size]=\"'XLarge'\"\r\n [tColor]=\"'aux-success'\"\r\n [disabled]=\"!formArray.form.valid || !formArray.form.dirty\"\r\n (onClick)=\"addItemAction()\"\r\n >\r\n </bmb-button>\r\n </div>\r\n</ng-template> -->\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormControlsListPipe } from './controls-list.pipe';\r\n\r\n@NgModule({\r\n declarations: [FormControlsListPipe],\r\n imports: [CommonModule],\r\n exports: [FormControlsListPipe],\r\n})\r\nexport class FormControlsListPipeModule {}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FormControlsRenderDirective,\n SpecialFormComponent,\n SpecialArrayComponent,\n} from './special-form.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormControlsListPipeModule } from '../../pipes/controls-list-pipe/controls-list.pipe.module';\nimport {\n SpecialDropdownModule,\n SpecialInputModule,\n SpecialAutocompleteModule,\n SpecialDatepickerModule,\n SpecialMultipleAutocompleteModule,\n SpecialCheckboxModule,\n SpecialTextAreaModule,\n SpecialUploadModule,\n SpecialLabelModule,\n} from '../../components';\n\n@NgModule({\n declarations: [\n SpecialArrayComponent,\n FormControlsRenderDirective,\n SpecialFormComponent,\n ],\n imports: [\n CommonModule,\n FormControlsListPipeModule,\n MatButtonModule,\n SpecialDropdownModule,\n SpecialInputModule,\n SpecialAutocompleteModule,\n SpecialDatepickerModule,\n SpecialLabelModule,\n SpecialMultipleAutocompleteModule,\n SpecialCheckboxModule,\n SpecialTextAreaModule,\n SpecialUploadModule,\n ],\n exports: [\n SpecialArrayComponent,\n FormControlsRenderDirective,\n SpecialFormComponent,\n ],\n})\nexport class SpecialFormModule {}\n","export enum EControlTypes {\r\n pkey = 'PRIMARY-KEY',\r\n input = 'INPUT',\r\n textArea = 'TEXT-AREA',\r\n dropdown = 'DROPDOWN',\r\n date = 'DATE',\r\n time = 'TIME',\r\n checkbox = 'CHECKBOX',\r\n upload = 'UPLOAD',\r\n autocomplete = 'AUTOCOMPLETE',\r\n multiple = 'MULTIPLE-AUTOCOMPLETE',\r\n array = 'ARRAY',\r\n form = 'FORM',\r\n label = 'LABEL',\r\n default = 'DEFAULT',\r\n}\r\n","import {\r\n AbstractControl,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n} from '@angular/forms';\r\nimport { EControlTypes } from '../aux-data/control-types.enum';\r\nimport { IFieldBasicData } from '../interfaces/field-basics.interfaces';\r\nimport {\r\n IArraySettings,\r\n IFormSettings,\r\n TSpecialFields,\r\n TSpecialForm,\r\n TSpecialArray,\r\n} from '../interfaces/form.interfaces';\r\nexport class SpecialFormControl<T>\r\n extends FormControl\r\n implements IFieldBasicData\r\n{\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public length: number;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: T;\r\n public type: EControlTypes;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor({\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialFields) {\r\n super(defaultValue, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings as T;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n setReadOnly(status: boolean = true) {\r\n this.readOnly = status;\r\n }\r\n\r\n setDisabled(status: boolean = true) {\r\n status ? this.disable() : this.enable();\r\n }\r\n\r\n setHidden(status = true) {\r\n this.hidden = status;\r\n }\r\n}\r\nexport class SpecialFormGroup extends FormGroup implements IFieldBasicData {\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public length: number;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IFormSettings;\r\n public type: EControlTypes.form;\r\n public defaultValue: any;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n disabled,\r\n }: TSpecialForm,\r\n controls: {\r\n [key: string]: SpecialFormControl<any>;\r\n },\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n unpristineRequired() {\r\n Object.values(this.controls).forEach((control) => {\r\n if (control instanceof SpecialFormControl) {\r\n control.markAsDirty();\r\n } else if (control instanceof SpecialFormGroup) {\r\n control.unpristineRequired();\r\n } else if (control instanceof SpecialFormArray) {\r\n control.unpristineRequired();\r\n }\r\n });\r\n }\r\n\r\n specialReset(value = {}) {\r\n const aux: any = {};\r\n Object.entries(this.controls).map(([key, control]) => {\r\n if (control instanceof SpecialFormControl) {\r\n aux[key] = control.defaultValue;\r\n } else if (control instanceof SpecialFormArray) {\r\n control.clear();\r\n }\r\n });\r\n\r\n this.reset({ ...aux, ...value });\r\n }\r\n setReadOnly(status: boolean = true) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setReadOnly(status);\r\n }\r\n });\r\n }\r\n setReadOnlyByFields(fieldsObject: { [key: string]: boolean }) {\r\n Object.entries(fieldsObject).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.readOnly = value;\r\n }\r\n });\r\n }\r\n\r\n setHiddenByFields(fields: { [key: string]: boolean }) {\r\n Object.entries(fields).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.hidden = value;\r\n }\r\n });\r\n }\r\n setDisabled(status: boolean) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n setDisabledByFields(fieldsObject: any) {\r\n Object.entries(fieldsObject).map((entries) => {\r\n if (this.controls[entries[0]] instanceof SpecialFormControl) {\r\n entries[1]\r\n ? this.controls[entries[0]].enable()\r\n : this.controls[entries[0]].disable();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * donde value es el objeto semilla y detailForm es un arreglo de form key para dar un marco al formarray\r\n */\r\n\r\n setFormValue(value: any) {\r\n this.specialReset(value);\r\n Object.entries(this.controls)\r\n .filter(([_key, control]) => control instanceof SpecialFormArray)\r\n .map(([key, control]) => {\r\n (control as SpecialFormArray).fillFormArray(value[key]);\r\n });\r\n }\r\n\r\n /**\r\n * Método que retorna\r\n */\r\n\r\n getIdPkey(): SpecialFormControl<any> | undefined {\r\n return Object.values(this.controls).find(\r\n (control) =>\r\n control instanceof SpecialFormControl && control.type === 'PRIMARY-KEY'\r\n ) as SpecialFormControl<any> | undefined;\r\n }\r\n}\r\n\r\nexport class SpecialFormArray extends FormArray implements IFieldBasicData {\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IArraySettings;\r\n public type: EControlTypes;\r\n public defaultValue: any;\r\n public form: SpecialFormGroup;\r\n private formCreation: (value?: any) => SpecialFormGroup;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialArray,\r\n formCreation: () => SpecialFormGroup,\r\n controls: AbstractControl[]\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n this.formCreation = formCreation;\r\n this.form = this.formCreation();\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n fillFormArray(data: any[]) {\r\n this.form.reset();\r\n this.clear();\r\n data.forEach((item) => {\r\n const form = this.formCreation(item);\r\n this.push(form);\r\n });\r\n }\r\n\r\n addItem() {\r\n const form = this.formCreation(this.form.value);\r\n\r\n this.form.specialReset();\r\n this.push(form);\r\n this.markAsDirty();\r\n }\r\n\r\n specialPush(index?: number) {\r\n const form = this.formCreation(this.form.value);\r\n if (!index) this.push(form);\r\n else this.controls[index].reset(this.form.value);\r\n }\r\n\r\n specialInsert(index = 0) {\r\n const form = this.formCreation(this.form.value);\r\n this.insert(index, form);\r\n }\r\n\r\n specialEdit(index: number, newValue: Object) {\r\n this.controls[index].reset({ ...this.controls[index].value, ...newValue });\r\n this.markAsDirty();\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray de lectura o de sololectura\r\n * @param status\r\n */\r\n\r\n setReadOnly(status: boolean) {\r\n this.readOnly = status;\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setReadOnly(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray habilitados o deshabilitados\r\n * @param status\r\n */\r\n\r\n setDisabled(status: boolean) {\r\n status ? this.disable() : this.enable();\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Permite editar un control especifico.\r\n * @param index\r\n */\r\n\r\n editControl(index: number) {\r\n this.form.reset(this.controls[index].value);\r\n }\r\n\r\n unpristineRequired() {\r\n this.markAsDirty();\r\n this.controls.forEach((item) => {\r\n (<SpecialFormGroup>item).unpristineRequired();\r\n });\r\n }\r\n\r\n recursiveFillForm(form: FormGroup, data: any): FormGroup {\r\n Object.entries(form.controls).map(([key, control]) => {\r\n if (control instanceof FormControl) {\r\n control.setValue(data[key]);\r\n } else if (control instanceof FormArray) {\r\n data[key].forEach(() => {});\r\n } else if (control instanceof FormGroup) {\r\n control.reset(data[key]);\r\n }\r\n });\r\n return form;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\nimport { IAutocompleteSettings } from '../../../components/special-autocomplete/special-autocomplete.interface';\nimport { EControlTypes } from '../../aux-data/control-types.enum';\nimport {\n SpecialFormArray,\n SpecialFormControl,\n SpecialFormGroup,\n} from '../../forms/special-forms';\nimport { IFieldData } from '../../interfaces/field-basics.interfaces';\nimport {\n IFormStructure,\n TRawFields,\n TSpecialArray,\n TSpecialFields,\n TSpecialForm,\n TSpecialInput,\n} from '../../interfaces/form.interfaces';\n\ninterface IControlParams {\n name: string;\n control: SpecialFormArray | SpecialFormGroup | SpecialFormControl<any>;\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class SpecialFormBuilderService {\n private readonly defectField: IFieldData = {\n asyncValidators: null,\n validators: null,\n defaultValue: null,\n elementId: '',\n hidden: false,\n icon: '',\n label: '',\n disabled: false,\n length: 0,\n placeholder: '',\n readOnly: false,\n required: false,\n styleClasses: '',\n errorMessages: {},\n tooltip: '',\n };\n\n private readonly inputDefectField: TSpecialInput = {\n ...this.defectField,\n settings: {},\n type: EControlTypes.input,\n name: '',\n };\n\n private readonly formDefectField: TSpecialForm = {\n ...this.defectField,\n settings: {\n formFields: {},\n },\n type: EControlTypes.form,\n name: '',\n };\n\n private readonly arrayDefectField: TSpecialArray = {\n ...this.defectField,\n settings: {\n formFields: {},\n },\n type: EControlTypes.array,\n name: '',\n };\n\n constructor() {}\n\n public control(field: Partial<TSpecialFields>): SpecialFormControl<any> {\n const formField: TSpecialFields = {\n ...this.inputDefectField,\n ...field,\n } as TSpecialFields;\n const { control } = this.setFormControl(formField);\n return control;\n }\n\n public group(\n fields: IFormStructure,\n parentField: Partial<TSpecialForm> = {}\n ) {\n return this.formGenerator(this.fieldDataToArray(fields), parentField);\n }\n\n public array() {}\n\n public fieldDataToArray(fields: IFormStructure): TSpecialFields[] {\n return Object.entries(fields).map(([name, field]) =>\n this.setDefectFieldOptions(name, field)\n );\n }\n\n private setDefectFieldOptions(\n name: string,\n field: Partial<TRawFields>\n ): TSpecialFields {\n return {\n ...this.inputDefectField,\n ...field,\n name,\n } as TSpecialFields;\n }\n\n private formGenerator(\n fields: TSpecialFields[],\n parentField: Partial<TSpecialForm> = {}\n ): SpecialFormGroup {\n const formField: TSpecialForm = {\n ...this.formDefectField,\n ...parentField,\n };\n const structure = fields\n .map((field) => this.getControlAndNameByType(field))\n .reduce(\n (prev, { name, control }: IControlParams) => ({\n ...prev,\n [name]: control,\n }),\n {}\n );\n return new SpecialFormGroup(formField, structure);\n }\n\n private getControlAndNameByType(field: TSpecialFields) {\n switch (field.type) {\n case EControlTypes.array:\n return this.setFormArray(field);\n case EControlTypes.form:\n return this.setFormGroup(field);\n default:\n return this.setFormControl(field);\n }\n }\n\n private setFormGroup(field: TSpecialForm): {\n name: string;\n control: SpecialFormGroup;\n } {\n const control = this.formGenerator(\n this.fieldDataToArray(field.settings.formFields),\n field\n );\n return { control, name: field.name };\n }\n\n private setFormArray(field: TSpecialArray): {\n name: string;\n control: SpecialFormArray;\n } {\n const auxForm = (value = {}) => {\n const auxForm = this.formGenerator(\n this.fieldDataToArray(field.settings.formFields),\n {}\n );\n auxForm.reset(value);\n return auxForm;\n };\n\n if (field.required) {\n field.validators = this.setValidatorsArray(field.validators, [\n this.arrayLengthRequired,\n ]);\n }\n\n return {\n name: field.name,\n control: new SpecialFormArray(field, auxForm, []),\n };\n }\n\n private setFormControl(field: TSpecialFields): {\n name: string;\n control: SpecialFormControl<any>;\n } {\n const validators: ValidatorFn[] = [];\n\n if (field.required) validators.push(this.setRequiredValidator(field));\n if (field.length) validators.push(Validators.maxLength(field.length));\n\n field.validators = this.setValidatorsArray(field.validators, validators);\n\n return {\n name: field.name,\n control: new SpecialFormControl(field),\n };\n }\n\n private setRequiredValidator(field: TSpecialFields): ValidatorFn {\n if (field.type !== EControlTypes.autocomplete) {\n return Validators.required;\n }\n\n return (control: SpecialFormControl<IAutocompleteSettings>) =>\n !!control.value && control.value instanceof Object\n ? null\n : { required: true };\n }\n private setValidatorsArray(\n validators: ValidatorFn | ValidatorFn[] | null,\n newValidators: ValidatorFn[]\n ): ValidatorFn[] {\n if (!validators) {\n return newValidators;\n }\n return validators instanceof Array\n ? [...validators, ...newValidators]\n : [validators, ...newValidators];\n }\n\n private arrayLengthRequired(control: AbstractControl) {\n if (control.value.length) {\n return {};\n }\n return { noItems: 'NO_SELECTED_ITEM' };\n }\n}\n","/*\n * Public API Surface of special-forms\n */\n\nexport * from './lib/components';\nexport * from './lib/core/services/index';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5","i6","i7","i8.ErrorMessagePipe","i1","i9.TextByFunctionPipe","i8","i9.ErrorMessagePipe","i10.TextByFunctionPipe","i6.ErrorMessagePipe","i10.ErrorMessagePipe","i11.TextByFunctionPipe","i7.ErrorMessagePipe","i5.ErrorMessagePipe","i2.TextByFunctionPipe","i2.FormControlsListPipe","EControlTypes"],"mappings":"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"}},"fesm2015":{"code":"import * as i0 from '@angular/core';\nimport { Pipe, Component, ChangeDetectionStrategy, Input, NgModule, EventEmitter, Output, Directive, Injectable } from '@angular/core';\nimport * as i3 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from '@ngneat/input-mask';\nimport { InputMaskModule } from '@ngneat/input-mask';\nimport * as i1$1 from '@angular/material/form-field';\nimport * as i2 from '@angular/material/input';\nimport { MatInputModule } from '@angular/material/input';\nimport * as i6 from '@angular/material/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport * as i7 from '@angular/forms';\nimport { ReactiveFormsModule, FormControl, FormsModule, FormGroup, FormArray, Validators } from '@angular/forms';\nimport * as i7$1 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport * as i3$1 from '@angular/material/select';\nimport { MatSelectModule } from '@angular/material/select';\nimport * as i5 from '@angular/material/core';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport * as i4 from '@angular/material/autocomplete';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { debounceTime } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\nimport * as i3$2 from '@angular/material/datepicker';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport * as i9 from '@angular/material/chips';\nimport { MatChipsModule } from '@angular/material/chips';\nimport * as i2$1 from '@angular/material/checkbox';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport * as i2$2 from '@angular/cdk/text-field';\nimport * as i1$2 from '@angular/platform-browser';\nimport * as i2$3 from 'ngx-dropzone';\nimport { NgxDropzoneModule } from 'ngx-dropzone';\nimport { EControlTypes as EControlTypes$1 } from '@lib/core/aux-data/control-types.enum';\n\nclass ErrorMessagePipe {\r\n transform(errorsObj, errorMessages, control) {\r\n const errors = errorsObj ? Object.keys(errorsObj) : [];\r\n const error = errors[0];\r\n const message = errorMessages[error] || error;\r\n if (control) {\r\n control.setErrors(errorsObj);\r\n }\r\n return message;\r\n }\r\n}\r\nErrorMessagePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\r\nErrorMessagePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipe, name: \"errorMessage\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipe, decorators: [{\r\n type: Pipe,\r\n args: [{\r\n name: \"errorMessage\",\r\n }]\r\n }] });\n\nclass SpecialInputComponent {\r\n constructor() { }\r\n ngOnInit() { }\r\n onEnterClick() {\r\n if (this.settings.onEnter) {\r\n this.settings.onEnter(this.control.value);\r\n }\r\n }\r\n onBlurAction() {\r\n if (this.settings.onBlur) {\r\n this.settings.onBlur(this.control.value);\r\n }\r\n }\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\nSpecialInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialInputComponent, selector: \"sp-input\", inputs: { control: \"control\" }, ngImport: i0, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n (blur)=\\\"onBlurAction()\\\"\\n (keydown.enter)=\\\"onEnterClick()\\\"\\n [inputMask]=\\\"settings?.mask\\\"\\n autocomplete=\\\"off\\\"\\n [type]=\\\"settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <button\\n *ngIf=\\\"settings?.icon\\\"\\n mat-icon-button\\n matSuffix\\n (click)=\\\"iconClick($event)\\\"\\n >\\n <mat-icon>\\n {{ settings.icon }}\\n </mat-icon>\\n </button>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1.InputMaskDirective, selector: \"[inputMask]\", inputs: [\"inputMask\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-input', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n (blur)=\\\"onBlurAction()\\\"\\n (keydown.enter)=\\\"onEnterClick()\\\"\\n [inputMask]=\\\"settings?.mask\\\"\\n autocomplete=\\\"off\\\"\\n [type]=\\\"settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <button\\n *ngIf=\\\"settings?.icon\\\"\\n mat-icon-button\\n matSuffix\\n (click)=\\\"iconClick($event)\\\"\\n >\\n <mat-icon>\\n {{ settings.icon }}\\n </mat-icon>\\n </button>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass ErrorMessagePipeModule {\r\n}\r\nErrorMessagePipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nErrorMessagePipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, declarations: [ErrorMessagePipe], imports: [CommonModule], exports: [ErrorMessagePipe] });\r\nErrorMessagePipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, imports: [CommonModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: ErrorMessagePipeModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [ErrorMessagePipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [ErrorMessagePipe],\r\n }]\r\n }] });\n\nclass TextByFunctionPipe {\r\n transform(value, field) {\r\n if (field instanceof Function) {\r\n return field(value);\r\n }\r\n else if (value instanceof Object) {\r\n return value[field];\r\n }\r\n else {\r\n return value;\r\n }\r\n }\r\n}\r\nTextByFunctionPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\r\nTextByFunctionPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipe, name: \"textByFunction\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipe, decorators: [{\r\n type: Pipe,\r\n args: [{ name: 'textByFunction' }]\r\n }] });\n\nclass TextByFunctionPipeModule {\r\n}\r\nTextByFunctionPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nTextByFunctionPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, declarations: [TextByFunctionPipe], imports: [CommonModule], exports: [TextByFunctionPipe] });\r\nTextByFunctionPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, imports: [CommonModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: TextByFunctionPipeModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [TextByFunctionPipe],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [TextByFunctionPipe],\r\n }]\r\n }] });\n\nclass SpecialInputModule {\r\n}\r\nSpecialInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, declarations: [SpecialInputComponent], imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialInputComponent] });\r\nSpecialInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialInputModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialInputComponent],\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialInputComponent],\r\n }]\r\n }] });\n\nclass SpecialDropdownComponent {\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n optionSelected(value) {\r\n if (this.settings.onSelect)\r\n this.settings.onSelect(value);\r\n }\r\n}\r\nSpecialDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialDropdownComponent, selector: \"sp-dropdown\", inputs: { control: \"control\" }, ngImport: i0, template: \"<mat-form-field\\r\\n *ngIf=\\\"control\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n>\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <mat-select\\r\\n [formControl]=\\\"control\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n (selectionChange)=\\\"optionSelected($event.value)\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n >\\r\\n <mat-option *ngIf=\\\"!control.required\\\" [value]=\\\"null\\\">\\r\\n {{ control.placeholder || control.settings.notSelectedText }}\\r\\n </mat-option>\\r\\n <mat-option\\r\\n *ngFor=\\\"let item of control.settings.source | async\\\"\\r\\n [value]=\\\"item[control.settings.fieldId]\\\"\\r\\n >\\r\\n {{ item | textByFunction: control.settings.fieldName }}\\r\\n </mat-option>\\r\\n </mat-select>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <mat-hint *ngIf=\\\"control.tooltip\\\">{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n</mat-form-field>\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"component\", type: i3$1.MatSelect, selector: \"mat-select\", inputs: [\"disabled\", \"disableRipple\", \"tabIndex\"], exportAs: [\"matSelect\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", exportAs: [\"matOption\"] }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\r\\n *ngIf=\\\"control\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n>\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <mat-select\\r\\n [formControl]=\\\"control\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n (selectionChange)=\\\"optionSelected($event.value)\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n >\\r\\n <mat-option *ngIf=\\\"!control.required\\\" [value]=\\\"null\\\">\\r\\n {{ control.placeholder || control.settings.notSelectedText }}\\r\\n </mat-option>\\r\\n <mat-option\\r\\n *ngFor=\\\"let item of control.settings.source | async\\\"\\r\\n [value]=\\\"item[control.settings.fieldId]\\\"\\r\\n >\\r\\n {{ item | textByFunction: control.settings.fieldName }}\\r\\n </mat-option>\\r\\n </mat-select>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <mat-hint *ngIf=\\\"control.tooltip\\\">{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n</mat-form-field>\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialDropdownModule {\r\n}\r\nSpecialDropdownModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialDropdownModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, declarations: [SpecialDropdownComponent], imports: [CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipeModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule], exports: [SpecialDropdownComponent] });\r\nSpecialDropdownModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, imports: [CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipeModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDropdownModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialDropdownComponent],\r\n imports: [\r\n CommonModule,\r\n MatSelectModule,\r\n ReactiveFormsModule,\r\n ErrorMessagePipeModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule\r\n ],\r\n exports: [SpecialDropdownComponent],\r\n }]\r\n }] });\n\nclass SpecialAutocompleteComponent {\r\n constructor() {\r\n this.subs = new Subscription();\r\n this.configValue = (item) => {\r\n if (!item)\r\n return '';\r\n const fieldName = this.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n }\r\n ngOnInit() {\r\n this.init();\r\n }\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n init() {\r\n this.subs.add(this.control.valueChanges.pipe(debounceTime(500)).subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.settings.getData(value, this.control);\r\n }\r\n }));\r\n }\r\n optionSelected(data) {\r\n this.control.setValue(data.option.value);\r\n if (this.settings.onSelect)\r\n this.settings.onSelect(data.option.value);\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\nSpecialAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialAutocompleteComponent, selector: \"sp-autocomplete\", inputs: { control: \"control\" }, ngImport: i0, template: \"<ng-container *ngIf=\\\"control && !control.hidden\\\">\\r\\n <mat-form-field\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label\\r\\n [ngClass]=\\\"{ 'is-link': control.label }\\\"\\r\\n class=\\\"control-label\\\"\\r\\n *ngIf=\\\"control.label\\\"\\r\\n >\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"control\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n</ng-container>\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i4.MatAutocomplete, selector: \"mat-autocomplete\", inputs: [\"disableRipple\"], exportAs: [\"matAutocomplete\"] }, { kind: \"directive\", type: i4.MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", exportAs: [\"matAutocompleteTrigger\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", exportAs: [\"matOption\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ng-container *ngIf=\\\"control && !control.hidden\\\">\\r\\n <mat-form-field\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label\\r\\n [ngClass]=\\\"{ 'is-link': control.label }\\\"\\r\\n class=\\\"control-label\\\"\\r\\n *ngIf=\\\"control.label\\\"\\r\\n >\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"control\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n</ng-container>\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialAutocompleteModule {\r\n}\r\nSpecialAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, declarations: [SpecialAutocompleteComponent], imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule], exports: [SpecialAutocompleteComponent] });\r\nSpecialAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialAutocompleteModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialAutocompleteComponent],\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n ],\r\n exports: [SpecialAutocompleteComponent],\r\n }]\r\n }] });\n\nclass SpecialDatepickerComponent {\r\n constructor() { }\r\n get startAt() {\r\n var _a;\r\n return ((_a = this.control.settings) === null || _a === void 0 ? void 0 : _a.startAt) || new Date();\r\n }\r\n ngOnInit() { }\r\n}\r\nSpecialDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialDatepickerComponent, selector: \"sp-datepicker\", inputs: { control: \"control\" }, ngImport: i0, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [matDatepicker]=\\\"picker\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-datepicker-toggle matSuffix [for]=\\\"picker\\\"></mat-datepicker-toggle>\\n <mat-datepicker #picker startView=\\\"year\\\" [startAt]=\\\"startAt\\\">\\n </mat-datepicker>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: i3$2.MatDatepicker, selector: \"mat-datepicker\", exportAs: [\"matDatepicker\"] }, { kind: \"directive\", type: i3$2.MatDatepickerInput, selector: \"input[matDatepicker]\", inputs: [\"matDatepicker\", \"min\", \"max\", \"matDatepickerFilter\"], exportAs: [\"matDatepickerInput\"] }, { kind: \"component\", type: i3$2.MatDatepickerToggle, selector: \"mat-datepicker-toggle\", inputs: [\"for\", \"tabIndex\", \"aria-label\", \"disabled\", \"disableRipple\"], exportAs: [\"matDatepickerToggle\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-datepicker', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <input\\n matInput\\n autocomplete=\\\"off\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [matDatepicker]=\\\"picker\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n />\\n <mat-datepicker-toggle matSuffix [for]=\\\"picker\\\"></mat-datepicker-toggle>\\n <mat-datepicker #picker startView=\\\"year\\\" [startAt]=\\\"startAt\\\">\\n </mat-datepicker>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialDatepickerModule {\r\n}\r\nSpecialDatepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialDatepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, declarations: [SpecialDatepickerComponent], imports: [MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n MatNativeDateModule], exports: [SpecialDatepickerComponent] });\r\nSpecialDatepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, imports: [MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n MatNativeDateModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialDatepickerModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialDatepickerComponent],\r\n imports: [\r\n MatInputModule,\r\n MatDatepickerModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n MatNativeDateModule\r\n ],\r\n exports: [SpecialDatepickerComponent],\r\n }]\r\n }] });\n\nclass SpecialMultipleAutocompleteComponent {\r\n constructor() {\r\n this.subs = new Subscription();\r\n this.internalControl = new FormControl();\r\n this.configValue = (item) => {\r\n if (!item)\r\n return '';\r\n const fieldName = this.control.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n }\r\n ngOnInit() {\r\n this.init();\r\n }\r\n get settings() {\r\n return this.control.settings;\r\n }\r\n init() {\r\n this.subs.add(this.internalControl.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.control.settings.getData(value, this.control);\r\n }\r\n }));\r\n }\r\n optionSelected(data) {\r\n const newItem = data.option.value;\r\n this.internalControl.reset();\r\n this.control.setValue([\r\n ...(this.control.value || []).filter((item) => item[this.control.settings.fieldId] !==\r\n newItem[this.control.settings.fieldId]),\r\n newItem,\r\n ]);\r\n if (this.settings.onSelect)\r\n this.settings.onSelect(newItem);\r\n }\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n remove(value) {\r\n let currentValues = Array.from(this.control.value);\r\n const index = currentValues.indexOf(value);\r\n if (index > -1) {\r\n currentValues.splice(index, 1);\r\n const value = currentValues;\r\n this.control.markAsDirty();\r\n this.control.setValue(value);\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\nSpecialMultipleAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialMultipleAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialMultipleAutocompleteComponent, selector: \"sp-multiple-autocomplete\", inputs: { control: \"control\" }, ngImport: i0, template: \"<div\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n *ngIf=\\\"control && !control.hidden\\\"\\r\\n>\\r\\n <mat-form-field\\r\\n class=\\\"w-full\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required && !control.value?.length\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"internalControl\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n\\r\\n <mat-chip-list>\\r\\n <mat-chip\\r\\n class=\\\"chip-style\\\"\\r\\n *ngFor=\\\"let chip of control.value\\\"\\r\\n [removable]=\\\"true\\\"\\r\\n (removed)=\\\"remove(chip)\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"chip | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n {{ chip | textByFunction: settings.fieldName }}\\r\\n <mat-icon matChipRemove>cancel</mat-icon>\\r\\n </div>\\r\\n </mat-chip>\\r\\n </mat-chip-list>\\r\\n</div>\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i4.MatAutocomplete, selector: \"mat-autocomplete\", inputs: [\"disableRipple\"], exportAs: [\"matAutocomplete\"] }, { kind: \"directive\", type: i4.MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", exportAs: [\"matAutocompleteTrigger\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", exportAs: [\"matOption\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"component\", type: i7$1.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"component\", type: i9.MatChipList, selector: \"mat-chip-list\", inputs: [\"role\", \"aria-describedby\", \"errorStateMatcher\", \"multiple\", \"compareWith\", \"value\", \"required\", \"placeholder\", \"disabled\", \"aria-orientation\", \"selectable\", \"tabIndex\"], outputs: [\"change\", \"valueChange\"], exportAs: [\"matChipList\"] }, { kind: \"directive\", type: i9.MatChip, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: [\"color\", \"disableRipple\", \"tabIndex\", \"role\", \"selected\", \"value\", \"selectable\", \"disabled\", \"removable\"], outputs: [\"selectionChange\", \"destroyed\", \"removed\"], exportAs: [\"matChip\"] }, { kind: \"directive\", type: i9.MatChipRemove, selector: \"[matChipRemove]\" }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-multiple-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\r\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\r\\n *ngIf=\\\"control && !control.hidden\\\"\\r\\n>\\r\\n <mat-form-field\\r\\n class=\\\"w-full\\\"\\r\\n [id]=\\\"control.elementId\\\"\\r\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\r\\n >\\r\\n <mat-label *ngIf=\\\"control.label\\\">\\r\\n {{ control.label }}\\r\\n </mat-label>\\r\\n <input\\r\\n type=\\\"text\\\"\\r\\n autocomplete=\\\"off\\\"\\r\\n [required]=\\\"control.required && !control.value?.length\\\"\\r\\n [readonly]=\\\"control.readOnly\\\"\\r\\n [placeholder]=\\\"control.placeholder\\\"\\r\\n matInput\\r\\n [formControl]=\\\"internalControl\\\"\\r\\n [matAutocomplete]=\\\"auto\\\"\\r\\n />\\r\\n <mat-autocomplete\\r\\n class=\\\"autocomplete-options\\\"\\r\\n #auto=\\\"matAutocomplete\\\"\\r\\n [displayWith]=\\\"configValue\\\"\\r\\n (optionSelected)=\\\"optionSelected($event)\\\"\\r\\n >\\r\\n <mat-option\\r\\n *ngFor=\\\"let option of settings?.source | async\\\"\\r\\n [value]=\\\"option\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"option | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n <span>\\r\\n {{ option | textByFunction: settings.fieldName }}\\r\\n </span>\\r\\n </div>\\r\\n </mat-option>\\r\\n </mat-autocomplete>\\r\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }}</mat-icon>\\r\\n <button\\r\\n *ngIf=\\\"settings.icon\\\"\\r\\n mat-icon-button\\r\\n matSuffix\\r\\n (click)=\\\"iconClick($event)\\\"\\r\\n >\\r\\n <mat-icon>\\r\\n {{ settings.icon }}\\r\\n </mat-icon>\\r\\n </button>\\r\\n <mat-hint>{{ control.tooltip }}</mat-hint>\\r\\n <mat-error>\\r\\n {{ control.errors | errorMessage: control.errorMessages }}\\r\\n </mat-error>\\r\\n </mat-form-field>\\r\\n\\r\\n <mat-chip-list>\\r\\n <mat-chip\\r\\n class=\\\"chip-style\\\"\\r\\n *ngFor=\\\"let chip of control.value\\\"\\r\\n [removable]=\\\"true\\\"\\r\\n (removed)=\\\"remove(chip)\\\"\\r\\n >\\r\\n <div class=\\\"flex items-center\\\">\\r\\n <img\\r\\n *ngIf=\\\"settings.fieldImage\\\"\\r\\n class=\\\"w-8 pr-2 object-contain\\\"\\r\\n alt=\\\"\\\"\\r\\n [src]=\\\"chip | textByFunction: settings.fieldImage\\\"\\r\\n />\\r\\n {{ chip | textByFunction: settings.fieldName }}\\r\\n <mat-icon matChipRemove>cancel</mat-icon>\\r\\n </div>\\r\\n </mat-chip>\\r\\n </mat-chip-list>\\r\\n</div>\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialMultipleAutocompleteModule {\r\n}\r\nSpecialMultipleAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialMultipleAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, declarations: [SpecialMultipleAutocompleteComponent], imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n MatChipsModule], exports: [SpecialMultipleAutocompleteComponent] });\r\nSpecialMultipleAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, imports: [MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n MatChipsModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialMultipleAutocompleteModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialMultipleAutocompleteComponent],\r\n imports: [\r\n MatInputModule,\r\n CommonModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n TextByFunctionPipeModule,\r\n MatChipsModule,\r\n ],\r\n exports: [SpecialMultipleAutocompleteComponent],\r\n }]\r\n }] });\n\nclass SpecialCheckboxComponent {\r\n constructor() { }\r\n ngOnInit() { }\r\n}\r\nSpecialCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialCheckboxComponent, selector: \"sp-checkbox\", inputs: { control: \"control\" }, ngImport: i0, template: \"<div\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full flex flex-col {{ control.styleClasses }}\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <mat-checkbox\\n [ngModel]=\\\"control.value\\\"\\n (ngModelChange)=\\\"control.setValue($event); control.markAsDirty()\\\"\\n [indeterminate]=\\\"control.settings.indeterminate\\\"\\n [labelPosition]=\\\"control.settings.labelPosition\\\"\\n [disabled]=\\\"control.disabled\\\"\\n >\\n <mat-icon *ngIf=\\\"control.icon\\\" matSuffix>{{ control.icon }} </mat-icon>\\n {{ control.placeholder }}\\n </mat-checkbox>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: i2$1.MatCheckbox, selector: \"mat-checkbox\", inputs: [\"disableRipple\", \"color\", \"tabIndex\"], exportAs: [\"matCheckbox\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatSuffix, selector: \"[matSuffix]\" }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full flex flex-col {{ control.styleClasses }}\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <mat-checkbox\\n [ngModel]=\\\"control.value\\\"\\n (ngModelChange)=\\\"control.setValue($event); control.markAsDirty()\\\"\\n [indeterminate]=\\\"control.settings.indeterminate\\\"\\n [labelPosition]=\\\"control.settings.labelPosition\\\"\\n [disabled]=\\\"control.disabled\\\"\\n >\\n <mat-icon *ngIf=\\\"control.icon\\\" matSuffix>{{ control.icon }} </mat-icon>\\n {{ control.placeholder }}\\n </mat-checkbox>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialCheckboxModule {\r\n}\r\nSpecialCheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialCheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, declarations: [SpecialCheckboxComponent], imports: [FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialCheckboxComponent] });\r\nSpecialCheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, imports: [FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialCheckboxModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialCheckboxComponent],\r\n imports: [\r\n FormsModule,\r\n MatCheckboxModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialCheckboxComponent],\r\n }]\r\n }] });\n\nclass SpecialTextAreaComponent {\r\n constructor() {\r\n this.onBlur = new EventEmitter();\r\n this.onEnter = new EventEmitter();\r\n }\r\n ngOnInit() { }\r\n}\r\nSpecialTextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialTextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialTextAreaComponent, selector: \"sp-text-area\", inputs: { control: \"control\" }, outputs: { onBlur: \"onBlur\", onEnter: \"onEnter\" }, ngImport: i0, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <textarea\\n cdkTextareaAutosize\\n #autosize=\\\"cdkTextareaAutosize\\\"\\n cdkAutosizeMinRows=\\\"1\\\"\\n cdkAutosizeMaxRows=\\\"5\\\"\\n matInput\\n (blur)=\\\"onBlur.emit(control.value)\\\"\\n (keydown.enter)=\\\"onEnter.emit(control.value)\\\"\\n [type]=\\\"control.settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n ></textarea>\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i2$2.CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: [\"cdkAutosizeMinRows\", \"cdkAutosizeMaxRows\", \"cdkTextareaAutosize\", \"placeholder\"], exportAs: [\"cdkTextareaAutosize\"] }, { kind: \"directive\", type: i1$1.MatError, selector: \"mat-error\", inputs: [\"id\"] }, { kind: \"component\", type: i1$1.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i1$1.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i1$1.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i1$1.MatPrefix, selector: \"[matPrefix]\" }, { kind: \"directive\", type: i2.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: i7.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i7.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i7.RequiredValidator, selector: \":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]\", inputs: [\"required\"] }, { kind: \"directive\", type: i7.FormControlDirective, selector: \"[formControl]\", inputs: [\"formControl\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"], exportAs: [\"ngForm\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-text-area', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-form-field\\n *ngIf=\\\"control\\\"\\n [id]=\\\"control.elementId\\\"\\n class=\\\"w-full {{ control.styleClasses }}\\\"\\n [appearance]=\\\"control.label ? 'outline' : 'standard'\\\"\\n>\\n <mat-label *ngIf=\\\"control.label\\\">{{ control.label }}</mat-label>\\n <textarea\\n cdkTextareaAutosize\\n #autosize=\\\"cdkTextareaAutosize\\\"\\n cdkAutosizeMinRows=\\\"1\\\"\\n cdkAutosizeMaxRows=\\\"5\\\"\\n matInput\\n (blur)=\\\"onBlur.emit(control.value)\\\"\\n (keydown.enter)=\\\"onEnter.emit(control.value)\\\"\\n [type]=\\\"control.settings?.type || 'text'\\\"\\n [readonly]=\\\"control.readOnly\\\"\\n [required]=\\\"control.required\\\"\\n [placeholder]=\\\"control.placeholder\\\"\\n [formControl]=\\\"control\\\"\\n ></textarea>\\n <mat-icon *ngIf=\\\"control.icon\\\" matPrefix>{{ control.icon }} </mat-icon>\\n <mat-hint>\\n {{ control.tooltip }}\\n </mat-hint>\\n <mat-error>\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </mat-error>\\n</mat-form-field>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }], onBlur: [{\r\n type: Output\r\n }], onEnter: [{\r\n type: Output\r\n }] } });\n\nclass SpecialTextAreaModule {\r\n}\r\nSpecialTextAreaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialTextAreaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, declarations: [SpecialTextAreaComponent], imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialTextAreaComponent] });\r\nSpecialTextAreaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialTextAreaModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialTextAreaComponent],\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule,\r\n ],\r\n exports: [SpecialTextAreaComponent],\r\n }]\r\n }] });\n\nclass SpecialUploadComponent {\r\n constructor(sanitizer) {\r\n this.sanitizer = sanitizer;\r\n this.onSelect = new EventEmitter();\r\n this.previewImages = [];\r\n }\r\n set controlSetter(control) {\r\n this.control = control;\r\n this.previewImages = control.value;\r\n }\r\n ngOnInit() { }\r\n onSelectMultiple(event) {\r\n this.previewImages = [\r\n ...this.previewImages,\r\n ...event.addedFiles.map(file => ({\r\n lastModified: file.lastModified,\r\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\r\n }))\r\n ];\r\n this.control.setValue([\r\n ...this.control.value,\r\n ...event.addedFiles.map(this.fixFileName)\r\n ]);\r\n this.onSelect.emit(this.control.value);\r\n this.control.markAsDirty();\r\n }\r\n onSelectOne(event) {\r\n this.previewImages = event.addedFiles.map(file => ({\r\n lastModified: file.lastModified,\r\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\r\n }));\r\n this.control.setValue(event.addedFiles.map(this.fixFileName));\r\n this.onSelect.emit(this.control.value);\r\n this.control.markAsDirty();\r\n }\r\n fixFileName(file) {\r\n return Object.defineProperty(file, 'name', {\r\n writable: true,\r\n value: file.name.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\r\n });\r\n }\r\n clean() {\r\n this.previewImages = [];\r\n }\r\n onRemove(file) {\r\n this.control.setValue(this.control.value.filter(fl => fl.lastModified !== file.lastModified));\r\n this.previewImages = this.previewImages.filter(fl => fl.lastModified !== file.lastModified);\r\n }\r\n}\r\nSpecialUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadComponent, deps: [{ token: i1$2.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialUploadComponent, selector: \"sp-upload\", inputs: { controlSetter: [\"control\", \"controlSetter\"] }, outputs: { onSelect: \"onSelect\" }, ngImport: i0, template: \"<div class=\\\"special_upload mb-2\\\">\\n <ngx-dropzone\\n class=\\\"special_upload__dropzone\\\"\\n [ngClass]=\\\"{\\n 'special_upload--error-dashed':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n [multiple]=\\\"control.settings?.multiple\\\"\\n [accept]=\\\"\\n control.settings?.accept\\n ? control.settings?.accept\\n : 'image/png, .jpeg, .jpg, image/gif'\\n \\\"\\n (change)=\\\"\\n control.settings?.multiple\\n ? onSelectMultiple($event)\\n : onSelectOne($event)\\n \\\"\\n >\\n <ngx-dropzone-label\\n [ngClass]=\\\"{\\n 'special_upload--error':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n >\\n <mat-icon class=\\\"special_upload__icon\\\"*ngIf=\\\"control.icon\\\">{{ control.icon }} </mat-icon>\\n <h2 class=\\\"text-base font-bold\\\">\\n {{ control.label }}\\n </h2>\\n <h3 class=\\\"text-base\\\">\\n {{ control.placeholder }}\\n </h3>\\n </ngx-dropzone-label>\\n <ngx-dropzone-preview\\n *ngFor=\\\"let file of previewImages\\\"\\n [removable]=\\\"true\\\"\\n (removed)=\\\"onRemove(file)\\\"\\n >\\n <ngx-dropzone-label class=\\\"special_upload__card\\\">\\n <img class=\\\"special_upload__card--image\\\" [src]=\\\"file?.url\\\" alt=\\\"\\\" />\\n </ngx-dropzone-label>\\n </ngx-dropzone-preview>\\n </ngx-dropzone>\\n <div\\n class=\\\"special_upload--error mt-2\\\"\\n *ngIf=\\\"!!control.errors && (control.dirty || control.touched)\\\"\\n >\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}:host .special-upload{margin-bottom:2rem}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\\n\"], dependencies: [{ kind: \"component\", type: i2$3.NgxDropzoneComponent, selector: \"ngx-dropzone, [ngx-dropzone]\", inputs: [\"accept\", \"disabled\", \"multiple\", \"maxFileSize\", \"expandable\", \"disableClick\", \"processDirectoryDrop\", \"id\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\"], outputs: [\"change\"] }, { kind: \"directive\", type: i2$3.NgxDropzoneLabelDirective, selector: \"ngx-dropzone-label\" }, { kind: \"component\", type: i2$3.NgxDropzonePreviewComponent, selector: \"ngx-dropzone-preview\", inputs: [\"file\", \"removable\"], outputs: [\"removed\"] }, { kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i6.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"pipe\", type: ErrorMessagePipe, name: \"errorMessage\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-upload', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"special_upload mb-2\\\">\\n <ngx-dropzone\\n class=\\\"special_upload__dropzone\\\"\\n [ngClass]=\\\"{\\n 'special_upload--error-dashed':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n [multiple]=\\\"control.settings?.multiple\\\"\\n [accept]=\\\"\\n control.settings?.accept\\n ? control.settings?.accept\\n : 'image/png, .jpeg, .jpg, image/gif'\\n \\\"\\n (change)=\\\"\\n control.settings?.multiple\\n ? onSelectMultiple($event)\\n : onSelectOne($event)\\n \\\"\\n >\\n <ngx-dropzone-label\\n [ngClass]=\\\"{\\n 'special_upload--error':\\n !!control.errors && (control.dirty || control.touched)\\n }\\\"\\n >\\n <mat-icon class=\\\"special_upload__icon\\\"*ngIf=\\\"control.icon\\\">{{ control.icon }} </mat-icon>\\n <h2 class=\\\"text-base font-bold\\\">\\n {{ control.label }}\\n </h2>\\n <h3 class=\\\"text-base\\\">\\n {{ control.placeholder }}\\n </h3>\\n </ngx-dropzone-label>\\n <ngx-dropzone-preview\\n *ngFor=\\\"let file of previewImages\\\"\\n [removable]=\\\"true\\\"\\n (removed)=\\\"onRemove(file)\\\"\\n >\\n <ngx-dropzone-label class=\\\"special_upload__card\\\">\\n <img class=\\\"special_upload__card--image\\\" [src]=\\\"file?.url\\\" alt=\\\"\\\" />\\n </ngx-dropzone-label>\\n </ngx-dropzone-preview>\\n </ngx-dropzone>\\n <div\\n class=\\\"special_upload--error mt-2\\\"\\n *ngIf=\\\"!!control.errors && (control.dirty || control.touched)\\\"\\n >\\n {{ control.errors | errorMessage: control.errorMessages }}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}:host .special-upload{margin-bottom:2rem}:host .special-upload__icon{height:64px;width:64px;font-size:64px}:host .special-upload__card{width:100%;height:100%;margin:0;box-sizing:border-box;display:flex;align-items:center;flex-direction:column}:host .special-upload__card--image{width:100%;height:100%;object-fit:cover}\\n\"] }]\r\n }], ctorParameters: function () { return [{ type: i1$2.DomSanitizer }]; }, propDecorators: { controlSetter: [{\r\n type: Input,\r\n args: ['control']\r\n }], onSelect: [{\r\n type: Output\r\n }] } });\n\nclass SpecialUploadModule {\r\n}\r\nSpecialUploadModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialUploadModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, declarations: [SpecialUploadComponent], imports: [FormsModule,\r\n NgxDropzoneModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule], exports: [SpecialUploadComponent] });\r\nSpecialUploadModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, imports: [FormsModule,\r\n NgxDropzoneModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialUploadModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialUploadComponent],\r\n imports: [\r\n FormsModule,\r\n NgxDropzoneModule,\r\n CommonModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialUploadComponent],\r\n }]\r\n }] });\n\nclass SpecialLabelComponent {\r\n constructor() { }\r\n ngOnInit() { }\r\n get settings() {\r\n return this.control.settings || { isLink: false };\r\n }\r\n onLink() {\r\n if (this.settings.isLink && this.settings.onClickLink) {\r\n this.settings.onClickLink(this.control.value);\r\n }\r\n }\r\n}\r\nSpecialLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialLabelComponent, selector: \"sp-label\", inputs: { control: \"control\" }, ngImport: i0, template: \"<div class=\\\"px-2 {{control.styleClasses}} {{ control.value | textByFunction: settings.stylesPipe}}\\\">\\n <div *ngIf=\\\"!!control.label\\\" class=\\\"font-bold\\\">{{control.label}}</div>\\n <div [ngClass]=\\\"{'cursor-pointer text-blue-600 hover:text-blue-700':settings.isLink }\\\" (click)=\\\"onLink()\\\">\\n {{ control.value | textByFunction: control.settings.pipe}}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"pipe\", type: TextByFunctionPipe, name: \"textByFunction\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-label', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"px-2 {{control.styleClasses}} {{ control.value | textByFunction: settings.stylesPipe}}\\\">\\n <div *ngIf=\\\"!!control.label\\\" class=\\\"font-bold\\\">{{control.label}}</div>\\n <div [ngClass]=\\\"{'cursor-pointer text-blue-600 hover:text-blue-700':settings.isLink }\\\" (click)=\\\"onLink()\\\">\\n {{ control.value | textByFunction: control.settings.pipe}}\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { control: [{\r\n type: Input\r\n }] } });\n\nclass SpecialLabelModule {\r\n}\r\nSpecialLabelModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialLabelModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, declarations: [SpecialLabelComponent], imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule,\r\n ErrorMessagePipeModule], exports: [SpecialLabelComponent] });\r\nSpecialLabelModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, imports: [InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule,\r\n ErrorMessagePipeModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialLabelModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [SpecialLabelComponent],\r\n imports: [\r\n InputMaskModule,\r\n CommonModule,\r\n MatInputModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n TextByFunctionPipeModule,\r\n ErrorMessagePipeModule\r\n ],\r\n exports: [SpecialLabelComponent],\r\n }]\r\n }] });\n\nclass FormControlsListPipe {\r\n transform(controls) {\r\n if (!controls)\r\n return [];\r\n return Object.values(controls)\r\n .filter((control) => !control.hidden)\r\n .map((control) => control);\r\n }\r\n}\r\nFormControlsListPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\r\nFormControlsListPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipe, name: \"controlsList\" });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipe, decorators: [{\r\n type: Pipe,\r\n args: [{ name: 'controlsList' }]\r\n }] });\n\nclass SpecialFormComponent {\r\n set control(form) {\r\n this.form = form;\r\n }\r\n ngOnInit() { }\r\n}\r\nSpecialFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialFormComponent, selector: \"sp-form\", inputs: { form: [\"control\", \"form\"] }, ngImport: i0, template: \"<div class=\\\"w-full box-border p-2\\\">\\n <div\\n *ngIf=\\\"form\\\"\\n [class]=\\\"\\n form.label\\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\\n : 'container'\\n \\\"\\n >\\n <h1 *ngIf=\\\"!!form.label\\\" class=\\\"font-bold py-3\\\">{{ form.label }}</h1>\\n <div class=\\\"w-full flex flex-wrap\\\">\\n <ng-template\\n *ngFor=\\\"let control of form.controls | controlsList\\\"\\n controlRender\\n [control]=\\\"control\\\"\\n ></ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i3.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return FormControlsRenderDirective; }), selector: \"[controlRender]\", inputs: [\"control\"] }, { kind: \"pipe\", type: i0.forwardRef(function () { return FormControlsListPipe; }), name: \"controlsList\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-form', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"w-full box-border p-2\\\">\\n <div\\n *ngIf=\\\"form\\\"\\n [class]=\\\"\\n form.label\\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\\n : 'container'\\n \\\"\\n >\\n <h1 *ngIf=\\\"!!form.label\\\" class=\\\"font-bold py-3\\\">{{ form.label }}</h1>\\n <div class=\\\"w-full flex flex-wrap\\\">\\n <ng-template\\n *ngFor=\\\"let control of form.controls | controlsList\\\"\\n controlRender\\n [control]=\\\"control\\\"\\n ></ng-template>\\n </div>\\n </div>\\n</div>\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], propDecorators: { form: [{\r\n type: Input,\r\n args: ['control']\r\n }] } });\r\nclass SpecialArrayComponent {\r\n constructor() { }\r\n set control(formArray) {\r\n this.formArray = formArray;\r\n }\r\n get withFormHeader() {\r\n return this.formArray.settings.withFormHeader;\r\n }\r\n get settings() {\r\n return this.formArray.settings;\r\n }\r\n ngOnInit() { }\r\n removeItem(index) {\r\n this.formArray.removeAt(index);\r\n }\r\n addItem() {\r\n this.formArray.addItem();\r\n }\r\n}\r\nSpecialArrayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialArrayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\r\nSpecialArrayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.1.3\", type: SpecialArrayComponent, selector: \"sp-array\", inputs: { formArray: [\"control\", \"formArray\"] }, ngImport: i0, template: \"<div class=\\\"w-full box-border p-2\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray\\\"\\r\\n class=\\\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\\\"\\r\\n >\\r\\n <h1 *ngIf=\\\"!!formArray.label\\\" class=\\\"font-bold py-3\\\">\\r\\n {{ formArray.label }}\\r\\n </h1>\\r\\n <div class=\\\"divide-y divide-solid\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray.form\\\"\\r\\n [ngClass]=\\\"{ 'md:grid-cols-15': settings.withActionButtons }\\\"\\r\\n class=\\\"grid gap-4 grid-cols-12\\\"\\r\\n >\\r\\n <ng-container *ngIf=\\\"!withFormHeader; else FORMHEADERREF\\\">\\r\\n <h2\\r\\n [class]=\\\"item.styleClasses\\\"\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n >\\r\\n {{ item.label }}\\r\\n </h2>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n ></div>\\r\\n </ng-container>\\r\\n <ng-template #FORMHEADERREF>\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button\\r\\n mat-flat-button\\r\\n color=\\\"primary\\\"\\r\\n [disabled]=\\\"formArray.form.invalid\\\"\\r\\n (click)=\\\"addItem()\\\"\\r\\n >\\r\\n Add\\r\\n </button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </div>\\r\\n <div\\r\\n class=\\\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\\\"\\r\\n *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formGroup.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button mat-flat-button color=\\\"warn\\\" (click)=\\\"removeItem(i)\\\">\\r\\n Remove\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<!-- <table class=\\\"form-array-container__table\\\">\\r\\n <thead *ngIf=\\\"formArray.form\\\">\\r\\n <tr\\r\\n *ngIf=\\\"headerForm; else HEADERFORMREF\\\"\\r\\n class=\\\"form-array-container__table-header\\\"\\r\\n >\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n {{ control.label | translate }}\\r\\n </th>\\r\\n <th *ngIf=\\\"!formArray.readOnly\\\"></th>\\r\\n </tr>\\r\\n <ng-template #HEADERFORMREF>\\r\\n <tr class=\\\"table-form-header\\\">\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n [ngSwitch]=\\\"control.type\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </th>\\r\\n <th class=\\\"header-cell\\\" *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </th>\\r\\n </tr>\\r\\n </ng-template>\\r\\n </thead> -->\\r\\n\\r\\n<!-- [ngStyle]=\\\"{'max-height':'calc(100vh - '+maxHeight+'px)' }\\\"> -->\\r\\n<!-- <tbody>\\r\\n <tr *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\">\\r\\n <td [ngSwitch]=\\\"control.type\\\" *ngFor=\\\"let control of formGroup.controls | controlsList\\\">\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </td>\\r\\n <td *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'delete_outline'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [bdrColor]=\\\"'error-500'\\\"\\r\\n [tColor]=\\\"'error-500'\\\"\\r\\n (onClick)=\\\"deleteItem(i)\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </td>\\r\\n </tr>\\r\\n </tbody> -->\\r\\n<!-- </table> -->\\r\\n\\r\\n<!-- <ng-template #TABLET>\\r\\n <div class=\\\"mt-1\\\">\\r\\n <ng-container *ngIf=\\\"headerFormEnable\\\">\\r\\n <div class=\\\"card-form-container\\\">\\r\\n <automatic-forms [form]=\\\"formArray.form\\\" [enableButtons]=\\\"false\\\">\\r\\n </automatic-forms>\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </div>\\r\\n </ng-container>\\r\\n <ng-content select=\\\"[header]\\\"></ng-content>\\r\\n </div>\\r\\n <div class=\\\"accordion-container\\\">\\r\\n <mat-accordion>\\r\\n <mat-expansion-panel\\r\\n class=\\\"mat-elevation-z1\\\"\\r\\n *ngFor=\\\"let item of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <mat-expansion-panel-header\\r\\n class=\\\"expanded-header\\\"\\r\\n collapsedHeight=\\\"3rem\\\"\\r\\n expandedHeight=\\\"3rem\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardHeaderTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n <mat-icon\\r\\n *ngIf=\\\"!formArray.readOnly\\\"\\r\\n class=\\\"mobile-delete\\\"\\r\\n (click)=\\\"deleteItem(i)\\\"\\r\\n color=\\\"warn\\\"\\r\\n >\\r\\n delete_outline\\r\\n </mat-icon>\\r\\n </mat-expansion-panel-header>\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardBodyTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n </mat-expansion-panel>\\r\\n </mat-accordion>\\r\\n </div>\\r\\n</ng-template>\\r\\n\\r\\n<div class=\\\"text-error\\\" *ngIf=\\\"formArray.dirty && formArray.invalid\\\">\\r\\n {{ formArray.errors | errorMessage | translate }}\\r\\n</div>\\r\\n\\r\\n<ng-template #ADDBUTTON>\\r\\n <div class=\\\"add-item-btn\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'add'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [bdrColor]=\\\"'aux-success'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [tColor]=\\\"'aux-success'\\\"\\r\\n [disabled]=\\\"!formArray.form.valid || !formArray.form.dirty\\\"\\r\\n (onClick)=\\\"addItemAction()\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </div>\\r\\n</ng-template> -->\\r\\n\", styles: [\":host{display:contents}\\n\"], dependencies: [{ kind: \"directive\", type: i0.forwardRef(function () { return i3.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return i3.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i0.forwardRef(function () { return i7$1.MatButton; }), selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"directive\", type: i0.forwardRef(function () { return FormControlsRenderDirective; }), selector: \"[controlRender]\", inputs: [\"control\"] }, { kind: \"pipe\", type: i0.forwardRef(function () { return FormControlsListPipe; }), name: \"controlsList\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialArrayComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'sp-array', changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"w-full box-border p-2\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray\\\"\\r\\n class=\\\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\\\"\\r\\n >\\r\\n <h1 *ngIf=\\\"!!formArray.label\\\" class=\\\"font-bold py-3\\\">\\r\\n {{ formArray.label }}\\r\\n </h1>\\r\\n <div class=\\\"divide-y divide-solid\\\">\\r\\n <div\\r\\n *ngIf=\\\"formArray.form\\\"\\r\\n [ngClass]=\\\"{ 'md:grid-cols-15': settings.withActionButtons }\\\"\\r\\n class=\\\"grid gap-4 grid-cols-12\\\"\\r\\n >\\r\\n <ng-container *ngIf=\\\"!withFormHeader; else FORMHEADERREF\\\">\\r\\n <h2\\r\\n [class]=\\\"item.styleClasses\\\"\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n >\\r\\n {{ item.label }}\\r\\n </h2>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n ></div>\\r\\n </ng-container>\\r\\n <ng-template #FORMHEADERREF>\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formArray.form.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n *ngIf=\\\"settings.withActionButtons\\\"\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button\\r\\n mat-flat-button\\r\\n color=\\\"primary\\\"\\r\\n [disabled]=\\\"formArray.form.invalid\\\"\\r\\n (click)=\\\"addItem()\\\"\\r\\n >\\r\\n Add\\r\\n </button>\\r\\n </div>\\r\\n </ng-template>\\r\\n </div>\\r\\n <div\\r\\n class=\\\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\\\"\\r\\n *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <ng-template\\r\\n *ngFor=\\\"let item of formGroup.controls | controlsList\\\"\\r\\n controlRender\\r\\n [control]=\\\"item\\\"\\r\\n ></ng-template>\\r\\n <div\\r\\n class=\\\"\\r\\n col-start-7 col-end-13\\r\\n md:col-start-13 md:col-end-16\\r\\n pb-5\\r\\n my-auto\\r\\n ml-auto\\r\\n md:m-auto\\r\\n \\\"\\r\\n >\\r\\n <button mat-flat-button color=\\\"warn\\\" (click)=\\\"removeItem(i)\\\">\\r\\n Remove\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</div>\\r\\n\\r\\n<!-- <table class=\\\"form-array-container__table\\\">\\r\\n <thead *ngIf=\\\"formArray.form\\\">\\r\\n <tr\\r\\n *ngIf=\\\"headerForm; else HEADERFORMREF\\\"\\r\\n class=\\\"form-array-container__table-header\\\"\\r\\n >\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n {{ control.label | translate }}\\r\\n </th>\\r\\n <th *ngIf=\\\"!formArray.readOnly\\\"></th>\\r\\n </tr>\\r\\n <ng-template #HEADERFORMREF>\\r\\n <tr class=\\\"table-form-header\\\">\\r\\n <th\\r\\n class=\\\"header-cell\\\"\\r\\n [ngSwitch]=\\\"control.type\\\"\\r\\n *ngFor=\\\"let control of formArray.form | controlsList\\\"\\r\\n >\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </th>\\r\\n <th class=\\\"header-cell\\\" *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </th>\\r\\n </tr>\\r\\n </ng-template>\\r\\n </thead> -->\\r\\n\\r\\n<!-- [ngStyle]=\\\"{'max-height':'calc(100vh - '+maxHeight+'px)' }\\\"> -->\\r\\n<!-- <tbody>\\r\\n <tr *ngFor=\\\"let formGroup of formArray.controls; let i = index\\\">\\r\\n <td [ngSwitch]=\\\"control.type\\\" *ngFor=\\\"let control of formGroup.controls | controlsList\\\">\\r\\n <sp-form-control-selector\\r\\n [control]=\\\"control\\\"\\r\\n ></sp-form-control-selector>\\r\\n </td>\\r\\n <td *ngIf=\\\"!formArray.readOnly\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'delete_outline'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [bdrColor]=\\\"'error-500'\\\"\\r\\n [tColor]=\\\"'error-500'\\\"\\r\\n (onClick)=\\\"deleteItem(i)\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </td>\\r\\n </tr>\\r\\n </tbody> -->\\r\\n<!-- </table> -->\\r\\n\\r\\n<!-- <ng-template #TABLET>\\r\\n <div class=\\\"mt-1\\\">\\r\\n <ng-container *ngIf=\\\"headerFormEnable\\\">\\r\\n <div class=\\\"card-form-container\\\">\\r\\n <automatic-forms [form]=\\\"formArray.form\\\" [enableButtons]=\\\"false\\\">\\r\\n </automatic-forms>\\r\\n <ng-container *ngTemplateOutlet=\\\"ADDBUTTON\\\"></ng-container>\\r\\n </div>\\r\\n </ng-container>\\r\\n <ng-content select=\\\"[header]\\\"></ng-content>\\r\\n </div>\\r\\n <div class=\\\"accordion-container\\\">\\r\\n <mat-accordion>\\r\\n <mat-expansion-panel\\r\\n class=\\\"mat-elevation-z1\\\"\\r\\n *ngFor=\\\"let item of formArray.controls; let i = index\\\"\\r\\n >\\r\\n <mat-expansion-panel-header\\r\\n class=\\\"expanded-header\\\"\\r\\n collapsedHeight=\\\"3rem\\\"\\r\\n expandedHeight=\\\"3rem\\\"\\r\\n >\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardHeaderTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n <mat-icon\\r\\n *ngIf=\\\"!formArray.readOnly\\\"\\r\\n class=\\\"mobile-delete\\\"\\r\\n (click)=\\\"deleteItem(i)\\\"\\r\\n color=\\\"warn\\\"\\r\\n >\\r\\n delete_outline\\r\\n </mat-icon>\\r\\n </mat-expansion-panel-header>\\r\\n <ng-container\\r\\n *ngTemplateOutlet=\\\"cardBodyTemplate; context: { $implicit: item }\\\"\\r\\n >\\r\\n </ng-container>\\r\\n </mat-expansion-panel>\\r\\n </mat-accordion>\\r\\n </div>\\r\\n</ng-template>\\r\\n\\r\\n<div class=\\\"text-error\\\" *ngIf=\\\"formArray.dirty && formArray.invalid\\\">\\r\\n {{ formArray.errors | errorMessage | translate }}\\r\\n</div>\\r\\n\\r\\n<ng-template #ADDBUTTON>\\r\\n <div class=\\\"add-item-btn\\\">\\r\\n <bmb-button\\r\\n [icon]=\\\"'add'\\\"\\r\\n [type]=\\\"'Raised'\\\"\\r\\n [bdrColor]=\\\"'aux-success'\\\"\\r\\n [size]=\\\"'XLarge'\\\"\\r\\n [tColor]=\\\"'aux-success'\\\"\\r\\n [disabled]=\\\"!formArray.form.valid || !formArray.form.dirty\\\"\\r\\n (onClick)=\\\"addItemAction()\\\"\\r\\n >\\r\\n </bmb-button>\\r\\n </div>\\r\\n</ng-template> -->\\r\\n\", styles: [\":host{display:contents}\\n\"] }]\r\n }], ctorParameters: function () { return []; }, propDecorators: { formArray: [{\r\n type: Input,\r\n args: ['control']\r\n }] } });\r\nclass FormControlsRenderDirective {\r\n constructor(viewContainer) {\r\n this.viewContainer = viewContainer;\r\n this.componentsBuffer = {\r\n [EControlTypes$1.autocomplete]: SpecialAutocompleteComponent,\r\n [EControlTypes$1.checkbox]: SpecialCheckboxComponent,\r\n [EControlTypes$1.date]: SpecialDatepickerComponent,\r\n [EControlTypes$1.dropdown]: SpecialDropdownComponent,\r\n [EControlTypes$1.array]: SpecialArrayComponent,\r\n [EControlTypes$1.input]: SpecialInputComponent,\r\n [EControlTypes$1.multiple]: SpecialMultipleAutocompleteComponent,\r\n [EControlTypes$1.textArea]: SpecialTextAreaComponent,\r\n [EControlTypes$1.label]: SpecialLabelComponent,\r\n [EControlTypes$1.upload]: SpecialUploadComponent,\r\n [EControlTypes$1.form]: SpecialFormComponent,\r\n };\r\n }\r\n set controlSetter(control) {\r\n this.viewContainer.clear();\r\n const component = this.componentsBuffer[control.type];\r\n if (component) {\r\n const componentRef = this.viewContainer.createComponent(component);\r\n componentRef.instance.control = control;\r\n }\r\n }\r\n}\r\nFormControlsRenderDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsRenderDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\r\nFormControlsRenderDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.1.3\", type: FormControlsRenderDirective, selector: \"[controlRender]\", inputs: { controlSetter: [\"control\", \"controlSetter\"] }, ngImport: i0 });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsRenderDirective, decorators: [{\r\n type: Directive,\r\n args: [{\r\n selector: `[controlRender]`,\r\n }]\r\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { controlSetter: [{\r\n type: Input,\r\n args: ['control']\r\n }] } });\n\nclass FormControlsListPipeModule {\r\n}\r\nFormControlsListPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nFormControlsListPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, declarations: [FormControlsListPipe], imports: [CommonModule], exports: [FormControlsListPipe] });\r\nFormControlsListPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, imports: [CommonModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: FormControlsListPipeModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [FormControlsListPipe],\r\n imports: [CommonModule],\r\n exports: [FormControlsListPipe],\r\n }]\r\n }] });\n\nclass SpecialFormModule {\r\n}\r\nSpecialFormModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nSpecialFormModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, declarations: [SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent], imports: [CommonModule,\r\n FormControlsListPipeModule,\r\n MatButtonModule,\r\n SpecialDropdownModule,\r\n SpecialInputModule,\r\n SpecialAutocompleteModule,\r\n SpecialDatepickerModule,\r\n SpecialLabelModule,\r\n SpecialMultipleAutocompleteModule,\r\n SpecialCheckboxModule,\r\n SpecialTextAreaModule,\r\n SpecialUploadModule], exports: [SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent] });\r\nSpecialFormModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, imports: [CommonModule,\r\n FormControlsListPipeModule,\r\n MatButtonModule,\r\n SpecialDropdownModule,\r\n SpecialInputModule,\r\n SpecialAutocompleteModule,\r\n SpecialDatepickerModule,\r\n SpecialLabelModule,\r\n SpecialMultipleAutocompleteModule,\r\n SpecialCheckboxModule,\r\n SpecialTextAreaModule,\r\n SpecialUploadModule] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n declarations: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormControlsListPipeModule,\r\n MatButtonModule,\r\n SpecialDropdownModule,\r\n SpecialInputModule,\r\n SpecialAutocompleteModule,\r\n SpecialDatepickerModule,\r\n SpecialLabelModule,\r\n SpecialMultipleAutocompleteModule,\r\n SpecialCheckboxModule,\r\n SpecialTextAreaModule,\r\n SpecialUploadModule,\r\n ],\r\n exports: [\r\n SpecialArrayComponent,\r\n FormControlsRenderDirective,\r\n SpecialFormComponent,\r\n ],\r\n }]\r\n }] });\n\nvar EControlTypes;\r\n(function (EControlTypes) {\r\n EControlTypes[\"pkey\"] = \"PRIMARY-KEY\";\r\n EControlTypes[\"input\"] = \"INPUT\";\r\n EControlTypes[\"textArea\"] = \"TEXT-AREA\";\r\n EControlTypes[\"dropdown\"] = \"DROPDOWN\";\r\n EControlTypes[\"date\"] = \"DATE\";\r\n EControlTypes[\"time\"] = \"TIME\";\r\n EControlTypes[\"checkbox\"] = \"CHECKBOX\";\r\n EControlTypes[\"upload\"] = \"UPLOAD\";\r\n EControlTypes[\"autocomplete\"] = \"AUTOCOMPLETE\";\r\n EControlTypes[\"multiple\"] = \"MULTIPLE-AUTOCOMPLETE\";\r\n EControlTypes[\"array\"] = \"ARRAY\";\r\n EControlTypes[\"form\"] = \"FORM\";\r\n EControlTypes[\"label\"] = \"LABEL\";\r\n EControlTypes[\"default\"] = \"DEFAULT\";\r\n})(EControlTypes || (EControlTypes = {}));\n\nclass SpecialFormControl extends FormControl {\r\n constructor({ name, settings, type, validators, asyncValidators, elementId, styleClasses, defaultValue, hidden, icon, label, length, placeholder, readOnly, required, tooltip, errorMessages, disabled, }) {\r\n super(defaultValue, validators, asyncValidators);\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n setReadOnly(status = true) {\r\n this.readOnly = status;\r\n }\r\n setDisabled(status = true) {\r\n status ? this.disable() : this.enable();\r\n }\r\n setHidden(status = true) {\r\n this.hidden = status;\r\n }\r\n}\r\nclass SpecialFormGroup extends FormGroup {\r\n constructor({ name, settings, type, validators, asyncValidators, elementId, styleClasses, defaultValue, hidden, icon, label, length, placeholder, readOnly, required, tooltip, disabled, }, controls) {\r\n super(controls, validators, asyncValidators);\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n unpristineRequired() {\r\n Object.values(this.controls).forEach((control) => {\r\n if (control instanceof SpecialFormControl) {\r\n control.markAsDirty();\r\n }\r\n else if (control instanceof SpecialFormGroup) {\r\n control.unpristineRequired();\r\n }\r\n else if (control instanceof SpecialFormArray) {\r\n control.unpristineRequired();\r\n }\r\n });\r\n }\r\n specialReset(value = {}) {\r\n const aux = {};\r\n Object.entries(this.controls).map(([key, control]) => {\r\n if (control instanceof SpecialFormControl) {\r\n aux[key] = control.defaultValue;\r\n }\r\n else if (control instanceof SpecialFormArray) {\r\n control.clear();\r\n }\r\n });\r\n this.reset(Object.assign(Object.assign({}, aux), value));\r\n }\r\n setReadOnly(status = true) {\r\n Object.values(this.controls).map((value) => {\r\n if (value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup) {\r\n value.setReadOnly(status);\r\n }\r\n });\r\n }\r\n setReadOnlyByFields(fieldsObject) {\r\n Object.entries(fieldsObject).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.readOnly = value;\r\n }\r\n });\r\n }\r\n setHiddenByFields(fields) {\r\n Object.entries(fields).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.hidden = value;\r\n }\r\n });\r\n }\r\n setDisabled(status) {\r\n Object.values(this.controls).map((value) => {\r\n if (value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup) {\r\n value.setDisabled(status);\r\n }\r\n });\r\n }\r\n setDisabledByFields(fieldsObject) {\r\n Object.entries(fieldsObject).map((entries) => {\r\n if (this.controls[entries[0]] instanceof SpecialFormControl) {\r\n entries[1]\r\n ? this.controls[entries[0]].enable()\r\n : this.controls[entries[0]].disable();\r\n }\r\n });\r\n }\r\n /**\r\n * donde value es el objeto semilla y detailForm es un arreglo de form key para dar un marco al formarray\r\n */\r\n setFormValue(value) {\r\n this.specialReset(value);\r\n Object.entries(this.controls)\r\n .filter(([_key, control]) => control instanceof SpecialFormArray)\r\n .map(([key, control]) => {\r\n control.fillFormArray(value[key]);\r\n });\r\n }\r\n /**\r\n * Método que retorna\r\n */\r\n getIdPkey() {\r\n return Object.values(this.controls).find((control) => control instanceof SpecialFormControl && control.type === 'PRIMARY-KEY');\r\n }\r\n}\r\nclass SpecialFormArray extends FormArray {\r\n constructor({ name, settings, type, validators, asyncValidators, elementId, styleClasses, defaultValue, hidden, icon, label, placeholder, readOnly, required, tooltip, errorMessages, disabled, }, formCreation, controls) {\r\n super(controls, validators, asyncValidators);\r\n this.formCreation = formCreation;\r\n this.form = this.formCreation();\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n fillFormArray(data) {\r\n this.form.reset();\r\n this.clear();\r\n data.forEach((item) => {\r\n const form = this.formCreation(item);\r\n this.push(form);\r\n });\r\n }\r\n addItem() {\r\n const form = this.formCreation(this.form.value);\r\n this.form.specialReset();\r\n this.push(form);\r\n this.markAsDirty();\r\n }\r\n specialPush(index) {\r\n const form = this.formCreation(this.form.value);\r\n if (!index)\r\n this.push(form);\r\n else\r\n this.controls[index].reset(this.form.value);\r\n }\r\n specialInsert(index = 0) {\r\n const form = this.formCreation(this.form.value);\r\n this.insert(index, form);\r\n }\r\n specialEdit(index, newValue) {\r\n this.controls[index].reset(Object.assign(Object.assign({}, this.controls[index].value), newValue));\r\n this.markAsDirty();\r\n }\r\n /**\r\n * Vuelve todos los controles del formArray de lectura o de sololectura\r\n * @param status\r\n */\r\n setReadOnly(status) {\r\n this.readOnly = status;\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setReadOnly(status);\r\n }\r\n });\r\n }\r\n /**\r\n * Vuelve todos los controles del formArray habilitados o deshabilitados\r\n * @param status\r\n */\r\n setDisabled(status) {\r\n status ? this.disable() : this.enable();\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setDisabled(status);\r\n }\r\n });\r\n }\r\n /**\r\n * Permite editar un control especifico.\r\n * @param index\r\n */\r\n editControl(index) {\r\n this.form.reset(this.controls[index].value);\r\n }\r\n unpristineRequired() {\r\n this.markAsDirty();\r\n this.controls.forEach((item) => {\r\n item.unpristineRequired();\r\n });\r\n }\r\n recursiveFillForm(form, data) {\r\n Object.entries(form.controls).map(([key, control]) => {\r\n if (control instanceof FormControl) {\r\n control.setValue(data[key]);\r\n }\r\n else if (control instanceof FormArray) {\r\n data[key].forEach(() => { });\r\n }\r\n else if (control instanceof FormGroup) {\r\n control.reset(data[key]);\r\n }\r\n });\r\n return form;\r\n }\r\n}\n\nclass SpecialFormBuilderService {\r\n constructor() {\r\n this.defectField = {\r\n asyncValidators: null,\r\n validators: null,\r\n defaultValue: null,\r\n elementId: '',\r\n hidden: false,\r\n icon: '',\r\n label: '',\r\n disabled: false,\r\n length: 0,\r\n placeholder: '',\r\n readOnly: false,\r\n required: false,\r\n styleClasses: '',\r\n errorMessages: {},\r\n tooltip: '',\r\n };\r\n this.inputDefectField = Object.assign(Object.assign({}, this.defectField), { settings: {}, type: EControlTypes.input, name: '' });\r\n this.formDefectField = Object.assign(Object.assign({}, this.defectField), { settings: {\r\n formFields: {},\r\n }, type: EControlTypes.form, name: '' });\r\n this.arrayDefectField = Object.assign(Object.assign({}, this.defectField), { settings: {\r\n formFields: {},\r\n }, type: EControlTypes.array, name: '' });\r\n }\r\n control(field) {\r\n const formField = Object.assign(Object.assign({}, this.inputDefectField), field);\r\n const { control } = this.setFormControl(formField);\r\n return control;\r\n }\r\n group(fields, parentField = {}) {\r\n return this.formGenerator(this.fieldDataToArray(fields), parentField);\r\n }\r\n array() { }\r\n fieldDataToArray(fields) {\r\n return Object.entries(fields).map(([name, field]) => this.setDefectFieldOptions(name, field));\r\n }\r\n setDefectFieldOptions(name, field) {\r\n return Object.assign(Object.assign(Object.assign({}, this.inputDefectField), field), { name });\r\n }\r\n formGenerator(fields, parentField = {}) {\r\n const formField = Object.assign(Object.assign({}, this.formDefectField), parentField);\r\n const structure = fields\r\n .map((field) => this.getControlAndNameByType(field))\r\n .reduce((prev, { name, control }) => (Object.assign(Object.assign({}, prev), { [name]: control })), {});\r\n return new SpecialFormGroup(formField, structure);\r\n }\r\n getControlAndNameByType(field) {\r\n switch (field.type) {\r\n case EControlTypes.array:\r\n return this.setFormArray(field);\r\n case EControlTypes.form:\r\n return this.setFormGroup(field);\r\n default:\r\n return this.setFormControl(field);\r\n }\r\n }\r\n setFormGroup(field) {\r\n const control = this.formGenerator(this.fieldDataToArray(field.settings.formFields), field);\r\n return { control, name: field.name };\r\n }\r\n setFormArray(field) {\r\n const auxForm = (value = {}) => {\r\n const auxForm = this.formGenerator(this.fieldDataToArray(field.settings.formFields), {});\r\n auxForm.reset(value);\r\n return auxForm;\r\n };\r\n if (field.required) {\r\n field.validators = this.setValidatorsArray(field.validators, [\r\n this.arrayLengthRequired,\r\n ]);\r\n }\r\n return {\r\n name: field.name,\r\n control: new SpecialFormArray(field, auxForm, []),\r\n };\r\n }\r\n setFormControl(field) {\r\n const validators = [];\r\n if (field.required)\r\n validators.push(this.setRequiredValidator(field));\r\n if (field.length)\r\n validators.push(Validators.maxLength(field.length));\r\n field.validators = this.setValidatorsArray(field.validators, validators);\r\n return {\r\n name: field.name,\r\n control: new SpecialFormControl(field),\r\n };\r\n }\r\n setRequiredValidator(field) {\r\n if (field.type !== EControlTypes.autocomplete) {\r\n return Validators.required;\r\n }\r\n return (control) => !!control.value && control.value instanceof Object\r\n ? null\r\n : { required: true };\r\n }\r\n setValidatorsArray(validators, newValidators) {\r\n if (!validators) {\r\n return newValidators;\r\n }\r\n return validators instanceof Array\r\n ? [...validators, ...newValidators]\r\n : [validators, ...newValidators];\r\n }\r\n arrayLengthRequired(control) {\r\n if (control.value.length) {\r\n return {};\r\n }\r\n return { noItems: 'NO_SELECTED_ITEM' };\r\n }\r\n}\r\nSpecialFormBuilderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\r\nSpecialFormBuilderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormBuilderService, providedIn: 'root' });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.1.3\", ngImport: i0, type: SpecialFormBuilderService, decorators: [{\r\n type: Injectable,\r\n args: [{\r\n providedIn: 'root',\r\n }]\r\n }], ctorParameters: function () { return []; } });\n\n/*\r\n * Public API Surface of special-forms\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { FormControlsRenderDirective, SpecialArrayComponent, SpecialAutocompleteComponent, SpecialAutocompleteModule, SpecialCheckboxComponent, SpecialCheckboxModule, SpecialDatepickerComponent, SpecialDatepickerModule, SpecialDropdownComponent, SpecialDropdownModule, SpecialFormBuilderService, SpecialFormComponent, SpecialFormModule, SpecialInputComponent, SpecialInputModule, SpecialLabelComponent, SpecialLabelModule, SpecialMultipleAutocompleteComponent, SpecialMultipleAutocompleteModule, SpecialTextAreaComponent, SpecialTextAreaModule, SpecialUploadComponent, SpecialUploadModule };\n//# sourceMappingURL=special-forms.mjs.map\n","map":{"version":3,"file":"special-forms.mjs","sources":["../../../projects/special-forms/src/lib/pipes/error-message-pipe/error.pipe.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.component.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.component.html","../../../projects/special-forms/src/lib/pipes/error-message-pipe/error.pipe.module.ts","../../../projects/special-forms/src/lib/pipes/text-by-function/text-by-function.pipe.ts","../../../projects/special-forms/src/lib/pipes/text-by-function/text-by-function.pipe.module.ts","../../../projects/special-forms/src/lib/components/special-input/special-input.module.ts","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.ts","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.component.html","../../../projects/special-forms/src/lib/components/special-dropdown/special-dropdown.module.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-autocomplete/special-autocomplete.module.ts","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.ts","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.component.html","../../../projects/special-forms/src/lib/components/special-datepicker/special-datepicker.module.ts","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.ts","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.component.html","../../../projects/special-forms/src/lib/components/special-multiple-autocomplete/special-multiple-autocomplete.module.ts","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.ts","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.component.html","../../../projects/special-forms/src/lib/components/special-checkbox/special-checkbox.module.ts","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.ts","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.component.html","../../../projects/special-forms/src/lib/components/special-text-area/special-text-area.module.ts","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.ts","../../../projects/special-forms/src/lib/components/special-upload/special-upload.component.html","../../../projects/special-forms/src/lib/components/special-upload/special-upload.module.ts","../../../projects/special-forms/src/lib/components/special-label/special-label.component.ts","../../../projects/special-forms/src/lib/components/special-label/special-label.component.html","../../../projects/special-forms/src/lib/components/special-label/special-label.module.ts","../../../projects/special-forms/src/lib/pipes/controls-list-pipe/controls-list.pipe.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.component.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.component.html","../../../projects/special-forms/src/lib/components/special-form/special-form-array.component.html","../../../projects/special-forms/src/lib/pipes/controls-list-pipe/controls-list.pipe.module.ts","../../../projects/special-forms/src/lib/components/special-form/special-form.module.ts","../../../projects/special-forms/src/lib/core/aux-data/control-types.enum.ts","../../../projects/special-forms/src/lib/core/forms/special-forms.ts","../../../projects/special-forms/src/lib/core/services/special-form-builder/special-form-builder.service.ts","../../../projects/special-forms/src/public-api.ts","../../../projects/special-forms/src/special-forms.ts"],"sourcesContent":["import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\n\r\n@Pipe({\r\n name: \"errorMessage\",\r\n})\r\nexport class ErrorMessagePipe implements PipeTransform {\r\n transform(\r\n errorsObj: { [key: string]: any },\r\n errorMessages: { [key: string]: any },\r\n control?: FormControl\r\n ): any {\r\n const errors = errorsObj ? Object.keys(errorsObj) : [];\r\n const error = errors[0];\r\n const message = errorMessages[error] || error;\r\n if (control) {\r\n control.setErrors(errorsObj);\r\n }\r\n return message;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { IInputSettings } from './special-input.interface';\n@Component({\n selector: 'sp-input',\n templateUrl: './special-input.component.html',\n styleUrls: ['./special-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialInputComponent implements OnInit {\n @Input() control: SpecialFormControl<IInputSettings>;\n\n constructor() {}\n\n ngOnInit(): void {}\n\n onEnterClick() {\n if (this.settings.onEnter) {\n this.settings.onEnter(this.control.value);\n }\n }\n\n onBlurAction() {\n if (this.settings.onBlur) {\n this.settings.onBlur(this.control.value);\n }\n }\n\n get settings(): IInputSettings {\n return this.control.settings;\n }\n\n iconClick(event) {\n if (this.settings.iconAction) {\n this.settings.iconAction(this.control.value);\n event.stopPropagation();\n }\n }\n}\n","<mat-form-field\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'standard'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n (blur)=\"onBlurAction()\"\n (keydown.enter)=\"onEnterClick()\"\n [inputMask]=\"settings?.mask\"\n autocomplete=\"off\"\n [type]=\"settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <button\n *ngIf=\"settings?.icon\"\n mat-icon-button\n matSuffix\n (click)=\"iconClick($event)\"\n >\n <mat-icon>\n {{ settings.icon }}\n </mat-icon>\n </button>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { ErrorMessagePipe } from \"./error.pipe\";\r\n\r\n@NgModule({\r\n declarations: [ErrorMessagePipe],\r\n imports: [\r\n CommonModule,\r\n\r\n ],\r\n exports: [ErrorMessagePipe],\r\n})\r\nexport class ErrorMessagePipeModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'textByFunction' })\r\nexport class TextByFunctionPipe implements PipeTransform {\r\n transform(value: any, field: string | ((value: any) => string)): any {\r\n if (field instanceof Function) {\r\n return field(value);\r\n } else if (value instanceof Object) {\r\n return value[field];\r\n } else {\r\n return value;\r\n }\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { TextByFunctionPipe } from \"./text-by-function.pipe\";\r\n\r\n@NgModule({\r\n declarations: [TextByFunctionPipe],\r\n imports: [\r\n CommonModule,\r\n\r\n ],\r\n exports: [TextByFunctionPipe],\r\n})\r\nexport class TextByFunctionPipeModule {}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialInputComponent } from './special-input.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputMaskModule } from \"@ngneat/input-mask\";\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\n\n@NgModule({\n declarations: [SpecialInputComponent],\n imports: [\n InputMaskModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialInputComponent],\n})\nexport class SpecialInputModule {}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n HostBinding,\r\n} from '@angular/core';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IDropdownSettings } from './special-dropdown.interface';\r\nimport { OverlayContainer } from '@angular/cdk/overlay';\r\n@Component({\r\n selector: 'sp-dropdown',\r\n templateUrl: './special-dropdown.component.html',\r\n styleUrls: ['./special-dropdown.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialDropdownComponent {\r\n @Input() control: SpecialFormControl<IDropdownSettings>;\r\n\r\n get settings(): IDropdownSettings {\r\n return this.control.settings;\r\n }\r\n\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n optionSelected(value) {\r\n if (this.settings.onSelect) this.settings.onSelect(value);\r\n }\r\n\r\n}\r\n","<mat-form-field\r\n *ngIf=\"control\"\r\n [id]=\"control.elementId\"\r\n class=\"w-full {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'standard'\"\r\n>\r\n <mat-label *ngIf=\"control.label\">\r\n {{ control.label }}\r\n </mat-label>\r\n <mat-select\r\n [formControl]=\"control\"\r\n [required]=\"control.required\"\r\n (selectionChange)=\"optionSelected($event.value)\"\r\n [placeholder]=\"control.placeholder\"\r\n >\r\n <mat-option *ngIf=\"!control.required\" [value]=\"null\">\r\n {{ control.placeholder || control.settings.notSelectedText }}\r\n </mat-option>\r\n <mat-option\r\n *ngFor=\"let item of control.settings.source | async\"\r\n [value]=\"item[control.settings.fieldId]\"\r\n >\r\n {{ item | textByFunction: control.settings.fieldName }}\r\n </mat-option>\r\n </mat-select>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <mat-hint *ngIf=\"control.tooltip\">{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n</mat-form-field>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialDropdownComponent } from './special-dropdown.component';\nimport { MatSelectModule } from '@angular/material/select';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n@NgModule({\n declarations: [SpecialDropdownComponent],\n imports: [\n CommonModule,\n MatSelectModule,\n ReactiveFormsModule,\n ErrorMessagePipeModule,\n MatIconModule,\n MatButtonModule,\n TextByFunctionPipeModule\n ],\n exports: [SpecialDropdownComponent],\n})\nexport class SpecialDropdownModule {}\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IAutocompleteSettings } from './special-autocomplete.interface';\r\n@Component({\r\n selector: 'sp-autocomplete',\r\n templateUrl: './special-autocomplete.component.html',\r\n styleUrls: ['./special-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialAutocompleteComponent {\r\n @Input() control: SpecialFormControl<IAutocompleteSettings>;\r\n\r\n subs = new Subscription();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IAutocompleteSettings {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.control.valueChanges.pipe(debounceTime(500)).subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n this.control.setValue(data.option.value);\r\n if (this.settings.onSelect) this.settings.onSelect(data.option.value);\r\n }\r\n\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<ng-container *ngIf=\"control && !control.hidden\">\r\n <mat-form-field\r\n class=\"w-full {{ control.styleClasses }}\"\r\n [appearance]=\"control.label ? 'outline' : 'standard'\"\r\n >\r\n <mat-label\r\n [ngClass]=\"{ 'is-link': control.label }\"\r\n class=\"control-label\"\r\n *ngIf=\"control.label\"\r\n >\r\n {{ control.label }}\r\n </mat-label>\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"control\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n class=\"autocomplete-options\"\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of settings?.source | async\"\r\n [value]=\"option\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n</ng-container>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\nimport { SpecialAutocompleteComponent } from './special-autocomplete.component';\nimport { MatInputModule } from '@angular/material/input';\n\n@NgModule({\n declarations: [SpecialAutocompleteComponent],\n imports: [\n MatInputModule,\n CommonModule,\n MatAutocompleteModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n TextByFunctionPipeModule,\n ],\n exports: [SpecialAutocompleteComponent],\n})\nexport class SpecialAutocompleteModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { IDatePickerSettings } from './special-datepicker.interface';\n\n@Component({\n selector: 'sp-datepicker',\n templateUrl: './special-datepicker.component.html',\n styleUrls: ['./special-datepicker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialDatepickerComponent implements OnInit {\n @Input() control: SpecialFormControl<IDatePickerSettings>;\n\n constructor() {}\n\n get startAt() {\n return this.control.settings?.startAt || new Date();\n }\n\n ngOnInit(): void {}\n}\n","<mat-form-field\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'standard'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <input\n matInput\n autocomplete=\"off\"\n [readonly]=\"control.readOnly\"\n [matDatepicker]=\"picker\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n />\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker startView=\"year\" [startAt]=\"startAt\">\n </mat-datepicker>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialDatepickerComponent } from './special-datepicker.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\n\n@NgModule({\n declarations: [SpecialDatepickerComponent],\n imports: [\n MatInputModule,\n MatDatepickerModule,\n CommonModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n MatNativeDateModule\n ],\n exports: [SpecialDatepickerComponent],\n})\nexport class SpecialDatepickerModule {}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { Subscription } from 'rxjs';\r\nimport { SpecialFormControl } from '../../core/forms/special-forms';\r\nimport { IMultipleAutocompleteSettings } from './special-multiple-autocomplete.interface';\r\nimport { FormControl } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'sp-multiple-autocomplete',\r\n templateUrl: './special-multiple-autocomplete.component.html',\r\n styleUrls: ['./special-multiple-autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SpecialMultipleAutocompleteComponent {\r\n @Input() control: SpecialFormControl<IMultipleAutocompleteSettings>;\r\n\r\n subs = new Subscription();\r\n internalControl = new FormControl();\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n get settings(): IMultipleAutocompleteSettings {\r\n return this.control.settings;\r\n }\r\n\r\n init() {\r\n this.subs.add(\r\n this.internalControl.valueChanges\r\n .pipe(debounceTime(500))\r\n .subscribe((value) => {\r\n if (typeof value === 'string') {\r\n this.control.settings.getData(value, this.control);\r\n }\r\n })\r\n );\r\n }\r\n\r\n optionSelected(data: MatAutocompleteSelectedEvent) {\r\n const newItem = data.option.value;\r\n this.internalControl.reset();\r\n this.control.setValue([\r\n ...(this.control.value || []).filter(\r\n (item) =>\r\n item[this.control.settings.fieldId] !==\r\n newItem[this.control.settings.fieldId]\r\n ),\r\n newItem,\r\n ]);\r\n\r\n if (this.settings.onSelect) this.settings.onSelect(newItem);\r\n }\r\n\r\n iconClick(event) {\r\n if (this.settings.iconAction) {\r\n this.settings.iconAction(this.control.value);\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n remove(value: any[]): void {\r\n let currentValues = Array.from(this.control.value);\r\n const index = currentValues.indexOf(value);\r\n\r\n if (index > -1) {\r\n currentValues.splice(index, 1);\r\n const value = currentValues;\r\n this.control.markAsDirty();\r\n this.control.setValue(value);\r\n }\r\n }\r\n\r\n configValue = (item: any) => {\r\n if (!item) return '';\r\n const fieldName = this.control.settings.fieldName;\r\n return fieldName instanceof Function ? fieldName(item) : item[fieldName];\r\n };\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"w-full {{ control.styleClasses }}\"\r\n *ngIf=\"control && !control.hidden\"\r\n>\r\n <mat-form-field\r\n class=\"w-full\"\r\n [id]=\"control.elementId\"\r\n [appearance]=\"control.label ? 'outline' : 'standard'\"\r\n >\r\n <mat-label *ngIf=\"control.label\">\r\n {{ control.label }}\r\n </mat-label>\r\n <input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n [required]=\"control.required && !control.value?.length\"\r\n [readonly]=\"control.readOnly\"\r\n [placeholder]=\"control.placeholder\"\r\n matInput\r\n [formControl]=\"internalControl\"\r\n [matAutocomplete]=\"auto\"\r\n />\r\n <mat-autocomplete\r\n class=\"autocomplete-options\"\r\n #auto=\"matAutocomplete\"\r\n [displayWith]=\"configValue\"\r\n (optionSelected)=\"optionSelected($event)\"\r\n >\r\n <mat-option\r\n *ngFor=\"let option of settings?.source | async\"\r\n [value]=\"option\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2 object-contain\"\r\n alt=\"\"\r\n [src]=\"option | textByFunction: settings.fieldImage\"\r\n />\r\n <span>\r\n {{ option | textByFunction: settings.fieldName }}\r\n </span>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }}</mat-icon>\r\n <button\r\n *ngIf=\"settings.icon\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"iconClick($event)\"\r\n >\r\n <mat-icon>\r\n {{ settings.icon }}\r\n </mat-icon>\r\n </button>\r\n <mat-hint>{{ control.tooltip }}</mat-hint>\r\n <mat-error>\r\n {{ control.errors | errorMessage: control.errorMessages }}\r\n </mat-error>\r\n </mat-form-field>\r\n\r\n <mat-chip-list>\r\n <mat-chip\r\n class=\"chip-style\"\r\n *ngFor=\"let chip of control.value\"\r\n [removable]=\"true\"\r\n (removed)=\"remove(chip)\"\r\n >\r\n <div class=\"flex items-center\">\r\n <img\r\n *ngIf=\"settings.fieldImage\"\r\n class=\"w-8 pr-2 object-contain\"\r\n alt=\"\"\r\n [src]=\"chip | textByFunction: settings.fieldImage\"\r\n />\r\n {{ chip | textByFunction: settings.fieldName }}\r\n <mat-icon matChipRemove>cancel</mat-icon>\r\n </div>\r\n </mat-chip>\r\n </mat-chip-list>\r\n</div>\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { SpecialMultipleAutocompleteComponent } from './special-multiple-autocomplete.component';\n\n@NgModule({\n declarations: [SpecialMultipleAutocompleteComponent],\n imports: [\n MatInputModule,\n CommonModule,\n MatAutocompleteModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n TextByFunctionPipeModule,\n MatChipsModule,\n\n ],\n exports: [SpecialMultipleAutocompleteComponent],\n})\nexport class SpecialMultipleAutocompleteModule {}\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { ICheckboxSettings } from './special-checkbox.interface';\n@Component({\n selector: 'sp-checkbox',\n templateUrl: './special-checkbox.component.html',\n styleUrls: ['./special-checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialCheckboxComponent implements OnInit {\n @Input() control: SpecialFormControl<ICheckboxSettings>;\n constructor() {}\n ngOnInit(): void {}\n}\n","<div\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full flex flex-col {{ control.styleClasses }}\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <mat-checkbox\n [ngModel]=\"control.value\"\n (ngModelChange)=\"control.setValue($event); control.markAsDirty()\"\n [indeterminate]=\"control.settings.indeterminate\"\n [labelPosition]=\"control.settings.labelPosition\"\n [disabled]=\"control.disabled\"\n >\n <mat-icon *ngIf=\"control.icon\" matSuffix>{{ control.icon }} </mat-icon>\n {{ control.placeholder }}\n </mat-checkbox>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialCheckboxComponent } from './special-checkbox.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\n\n@NgModule({\n declarations: [SpecialCheckboxComponent],\n imports: [\n FormsModule,\n MatCheckboxModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialCheckboxComponent],\n})\nexport class SpecialCheckboxModule {}\n","import { ChangeDetectionStrategy } from '@angular/core';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { ITextAreaField } from './special-text-area.interface';\n@Component({\n selector: 'sp-text-area',\n templateUrl: './special-text-area.component.html',\n styleUrls: ['./special-text-area.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialTextAreaComponent implements OnInit {\n @Input() control: SpecialFormControl<ITextAreaField>;\n\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n @Output() onEnter: EventEmitter<any> = new EventEmitter();\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<mat-form-field\n *ngIf=\"control\"\n [id]=\"control.elementId\"\n class=\"w-full {{ control.styleClasses }}\"\n [appearance]=\"control.label ? 'outline' : 'standard'\"\n>\n <mat-label *ngIf=\"control.label\">{{ control.label }}</mat-label>\n <textarea\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n cdkAutosizeMaxRows=\"5\"\n matInput\n (blur)=\"onBlur.emit(control.value)\"\n (keydown.enter)=\"onEnter.emit(control.value)\"\n [type]=\"control.settings?.type || 'text'\"\n [readonly]=\"control.readOnly\"\n [required]=\"control.required\"\n [placeholder]=\"control.placeholder\"\n [formControl]=\"control\"\n ></textarea>\n <mat-icon *ngIf=\"control.icon\" matPrefix>{{ control.icon }} </mat-icon>\n <mat-hint>\n {{ control.tooltip }}\n </mat-hint>\n <mat-error>\n {{ control.errors | errorMessage: control.errorMessages }}\n </mat-error>\n</mat-form-field>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialTextAreaComponent } from './special-text-area.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputMaskModule } from '@ngneat/input-mask';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\n\n@NgModule({\n declarations: [SpecialTextAreaComponent],\n imports: [\n InputMaskModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule,\n ],\n exports: [SpecialTextAreaComponent],\n})\nexport class SpecialTextAreaModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { IUploadSettings } from './special-upload.interface';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ChangeDetectionStrategy } from '@angular/core';\n\n@Component({\n selector: 'sp-upload',\n templateUrl: './special-upload.component.html',\n styleUrls: ['./special-upload.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialUploadComponent implements OnInit {\n control: SpecialFormControl<IUploadSettings>;\n\n @Input('control') set controlSetter(control) {\n this.control = control;\n this.previewImages = control.value;\n }\n\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n\n previewImages = [];\n\n constructor( private sanitizer: DomSanitizer) {}\n\n ngOnInit(): void {}\n\n onSelectMultiple(event) {\n this.previewImages = [\n ...this.previewImages,\n ...event.addedFiles.map(file =>\n ({\n lastModified: file.lastModified,\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\n }\n ))\n ];\n\n this.control.setValue(\n [\n ...this.control.value,\n ...event.addedFiles.map(this.fixFileName)\n ]\n );\n this.onSelect.emit(this.control.value)\n this.control.markAsDirty();\n }\n\n onSelectOne(event) {\n this.previewImages = event.addedFiles.map(file =>\n ({\n lastModified: file.lastModified,\n url: this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(file))\n }))\n\n this.control.setValue(\n event.addedFiles.map(this.fixFileName)\n );\n this.onSelect.emit(this.control.value)\n this.control.markAsDirty();\n }\n\n fixFileName(file: File) {\n return Object.defineProperty(file, 'name', {\n writable: true,\n value: file.name.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\")\n });\n }\n\n clean() {\n this.previewImages = [];\n }\n onRemove(file) {\n this.control.setValue(this.control.value.filter(fl => fl.lastModified !== file.lastModified));\n this.previewImages = this.previewImages.filter(fl => fl.lastModified !== file.lastModified)\n }\n\n}\n","<div class=\"special_upload mb-2\">\n <ngx-dropzone\n class=\"special_upload__dropzone\"\n [ngClass]=\"{\n 'special_upload--error-dashed':\n !!control.errors && (control.dirty || control.touched)\n }\"\n [multiple]=\"control.settings?.multiple\"\n [accept]=\"\n control.settings?.accept\n ? control.settings?.accept\n : 'image/png, .jpeg, .jpg, image/gif'\n \"\n (change)=\"\n control.settings?.multiple\n ? onSelectMultiple($event)\n : onSelectOne($event)\n \"\n >\n <ngx-dropzone-label\n [ngClass]=\"{\n 'special_upload--error':\n !!control.errors && (control.dirty || control.touched)\n }\"\n >\n <mat-icon class=\"special_upload__icon\"*ngIf=\"control.icon\">{{ control.icon }} </mat-icon>\n <h2 class=\"text-base font-bold\">\n {{ control.label }}\n </h2>\n <h3 class=\"text-base\">\n {{ control.placeholder }}\n </h3>\n </ngx-dropzone-label>\n <ngx-dropzone-preview\n *ngFor=\"let file of previewImages\"\n [removable]=\"true\"\n (removed)=\"onRemove(file)\"\n >\n <ngx-dropzone-label class=\"special_upload__card\">\n <img class=\"special_upload__card--image\" [src]=\"file?.url\" alt=\"\" />\n </ngx-dropzone-label>\n </ngx-dropzone-preview>\n </ngx-dropzone>\n <div\n class=\"special_upload--error mt-2\"\n *ngIf=\"!!control.errors && (control.dirty || control.touched)\"\n >\n {{ control.errors | errorMessage: control.errorMessages }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialUploadComponent } from './special-upload.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule } from '../../pipes';\nimport { NgxDropzoneModule } from 'ngx-dropzone';\n\n@NgModule({\n declarations: [SpecialUploadComponent],\n imports: [\n FormsModule,\n NgxDropzoneModule,\n CommonModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialUploadComponent],\n})\nexport class SpecialUploadModule {}\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { SpecialFormControl } from '../../core/forms/special-forms';\nimport { ILabelSettings } from './special-label.interface';\n\n@Component({\n selector: 'sp-label',\n templateUrl: './special-label.component.html',\n styleUrls: ['./special-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialLabelComponent implements OnInit {\n @Input() control: SpecialFormControl<ILabelSettings>;\n\n constructor() {}\n\n ngOnInit(): void {}\n\n get settings(): ILabelSettings {\n return this.control.settings || { isLink: false };\n }\n\n onLink() {\n if (this.settings.isLink && this.settings.onClickLink) {\n this.settings.onClickLink(this.control.value);\n }\n }\n}\n","<div class=\"px-2 {{control.styleClasses}} {{ control.value | textByFunction: settings.stylesPipe}}\">\n <div *ngIf=\"!!control.label\" class=\"font-bold\">{{control.label}}</div>\n <div [ngClass]=\"{'cursor-pointer text-blue-600 hover:text-blue-700':settings.isLink }\" (click)=\"onLink()\">\n {{ control.value | textByFunction: control.settings.pipe}}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SpecialLabelComponent } from './special-label.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { InputMaskModule } from \"@ngneat/input-mask\";\nimport { MatIconModule } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ErrorMessagePipeModule, TextByFunctionPipeModule } from '../../pipes';\n\n@NgModule({\n declarations: [SpecialLabelComponent],\n imports: [\n InputMaskModule,\n CommonModule,\n MatInputModule,\n MatIconModule,\n ReactiveFormsModule,\n MatButtonModule,\n TextByFunctionPipeModule,\n ErrorMessagePipeModule\n ],\n exports: [SpecialLabelComponent],\n})\nexport class SpecialLabelModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AbstractControl } from '@angular/forms';\r\nimport {\r\n SpecialFormControl,\r\n} from '../../core/forms/special-forms';\r\n\r\n@Pipe({ name: 'controlsList' })\r\nexport class FormControlsListPipe implements PipeTransform {\r\n transform(controls: {\r\n [key: string]: AbstractControl;\r\n }): SpecialFormControl<any>[] {\r\n if (!controls) return [];\r\n return Object.values(controls)\r\n .filter((control: SpecialFormControl<any>) => !control.hidden)\r\n .map((control) => control as SpecialFormControl<any>);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Directive, ViewContainerRef } from '@angular/core';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { EControlTypes } from '@lib/core/aux-data/control-types.enum';\nimport {\n SpecialFormGroup,\n SpecialFormControl,\n} from '../../core/forms/special-forms';\nimport { SpecialAutocompleteComponent } from '../special-autocomplete/special-autocomplete.component';\nimport { SpecialCheckboxComponent } from '../special-checkbox/special-checkbox.component';\nimport { SpecialDatepickerComponent } from '../special-datepicker/special-datepicker.component';\nimport { SpecialDropdownComponent } from '../special-dropdown/special-dropdown.component';\nimport { SpecialInputComponent } from '../special-input/special-input.component';\nimport { SpecialLabelComponent } from '../special-label/special-label.component';\nimport { SpecialMultipleAutocompleteComponent } from '../special-multiple-autocomplete/special-multiple-autocomplete.component';\nimport { SpecialTextAreaComponent } from '../special-text-area/special-text-area.component';\nimport { SpecialUploadComponent } from '../special-upload/special-upload.component';\n\n@Component({\n selector: 'sp-form',\n templateUrl: './special-form.component.html',\n styleUrls: ['./special-form.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialFormComponent implements OnInit {\n @Input('control') form: SpecialFormGroup;\n set control(form: SpecialFormGroup) {\n this.form = form;\n }\n ngOnInit(): void {}\n}\n\n@Component({\n selector: 'sp-array',\n templateUrl: './special-form-array.component.html',\n styleUrls: ['./special-form-array.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpecialArrayComponent implements OnInit {\n @Input('control') formArray: any;\n\n set control(formArray: any) {\n this.formArray = formArray;\n }\n\n get withFormHeader() {\n return this.formArray.settings.withFormHeader;\n }\n\n get settings() {\n return this.formArray.settings;\n }\n\n constructor() {}\n\n ngOnInit() {}\n\n removeItem(index) {\n this.formArray.removeAt(index);\n }\n addItem() {\n this.formArray.addItem();\n }\n}\n\n@Directive({\n selector: `[controlRender]`,\n})\nexport class FormControlsRenderDirective {\n private readonly componentsBuffer = {\n [EControlTypes.autocomplete]: SpecialAutocompleteComponent,\n [EControlTypes.checkbox]: SpecialCheckboxComponent,\n [EControlTypes.date]: SpecialDatepickerComponent,\n [EControlTypes.dropdown]: SpecialDropdownComponent,\n [EControlTypes.array]: SpecialArrayComponent,\n [EControlTypes.input]: SpecialInputComponent,\n [EControlTypes.multiple]: SpecialMultipleAutocompleteComponent,\n [EControlTypes.textArea]: SpecialTextAreaComponent,\n [EControlTypes.label]: SpecialLabelComponent,\n [EControlTypes.upload]: SpecialUploadComponent,\n [EControlTypes.form]: SpecialFormComponent,\n };\n @Input('control') set controlSetter(control: SpecialFormControl<any>) {\n this.viewContainer.clear();\n const component = this.componentsBuffer[control.type];\n if (component) {\n const componentRef = this.viewContainer.createComponent(component);\n (componentRef.instance as any).control = control;\n }\n }\n\n constructor(private viewContainer: ViewContainerRef) {}\n}\n","<div class=\"w-full box-border p-2\">\n <div\n *ngIf=\"form\"\n [class]=\"\n form.label\n ? 'w-full mt-2 p-3 border-slate-200 border border-solid box-border'\n : 'container'\n \"\n >\n <h1 *ngIf=\"!!form.label\" class=\"font-bold py-3\">{{ form.label }}</h1>\n <div class=\"w-full flex flex-wrap\">\n <ng-template\n *ngFor=\"let control of form.controls | controlsList\"\n controlRender\n [control]=\"control\"\n ></ng-template>\n </div>\n </div>\n</div>\n","<div class=\"w-full box-border p-2\">\r\n <div\r\n *ngIf=\"formArray\"\r\n class=\"w-full mt-2 p-3 border-slate-200 border border-solid box-border\"\r\n >\r\n <h1 *ngIf=\"!!formArray.label\" class=\"font-bold py-3\">\r\n {{ formArray.label }}\r\n </h1>\r\n <div class=\"divide-y divide-solid\">\r\n <div\r\n *ngIf=\"formArray.form\"\r\n [ngClass]=\"{ 'md:grid-cols-15': settings.withActionButtons }\"\r\n class=\"grid gap-4 grid-cols-12\"\r\n >\r\n <ng-container *ngIf=\"!withFormHeader; else FORMHEADERREF\">\r\n <h2\r\n [class]=\"item.styleClasses\"\r\n *ngFor=\"let item of formArray.form.controls | controlsList\"\r\n >\r\n {{ item.label }}\r\n </h2>\r\n <div\r\n *ngIf=\"settings.withActionButtons\"\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n ></div>\r\n </ng-container>\r\n <ng-template #FORMHEADERREF>\r\n <ng-template\r\n *ngFor=\"let item of formArray.form.controls | controlsList\"\r\n controlRender\r\n [control]=\"item\"\r\n ></ng-template>\r\n <div\r\n *ngIf=\"settings.withActionButtons\"\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n >\r\n <button\r\n mat-flat-button\r\n color=\"primary\"\r\n [disabled]=\"formArray.form.invalid\"\r\n (click)=\"addItem()\"\r\n >\r\n Add\r\n </button>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div\r\n class=\"w-full pt-5 grid gap-4 grid-cols-12 md:grid-cols-15\"\r\n *ngFor=\"let formGroup of formArray.controls; let i = index\"\r\n >\r\n <ng-template\r\n *ngFor=\"let item of formGroup.controls | controlsList\"\r\n controlRender\r\n [control]=\"item\"\r\n ></ng-template>\r\n <div\r\n class=\"\r\n col-start-7 col-end-13\r\n md:col-start-13 md:col-end-16\r\n pb-5\r\n my-auto\r\n ml-auto\r\n md:m-auto\r\n \"\r\n >\r\n <button mat-flat-button color=\"warn\" (click)=\"removeItem(i)\">\r\n Remove\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <table class=\"form-array-container__table\">\r\n <thead *ngIf=\"formArray.form\">\r\n <tr\r\n *ngIf=\"headerForm; else HEADERFORMREF\"\r\n class=\"form-array-container__table-header\"\r\n >\r\n <th\r\n class=\"header-cell\"\r\n *ngFor=\"let control of formArray.form | controlsList\"\r\n >\r\n {{ control.label | translate }}\r\n </th>\r\n <th *ngIf=\"!formArray.readOnly\"></th>\r\n </tr>\r\n <ng-template #HEADERFORMREF>\r\n <tr class=\"table-form-header\">\r\n <th\r\n class=\"header-cell\"\r\n [ngSwitch]=\"control.type\"\r\n *ngFor=\"let control of formArray.form | controlsList\"\r\n >\r\n <sp-form-control-selector\r\n [control]=\"control\"\r\n ></sp-form-control-selector>\r\n </th>\r\n <th class=\"header-cell\" *ngIf=\"!formArray.readOnly\">\r\n <ng-container *ngTemplateOutlet=\"ADDBUTTON\"></ng-container>\r\n </th>\r\n </tr>\r\n </ng-template>\r\n </thead> -->\r\n\r\n<!-- [ngStyle]=\"{'max-height':'calc(100vh - '+maxHeight+'px)' }\"> -->\r\n<!-- <tbody>\r\n <tr *ngFor=\"let formGroup of formArray.controls; let i = index\">\r\n <td [ngSwitch]=\"control.type\" *ngFor=\"let control of formGroup.controls | controlsList\">\r\n <sp-form-control-selector\r\n [control]=\"control\"\r\n ></sp-form-control-selector>\r\n </td>\r\n <td *ngIf=\"!formArray.readOnly\">\r\n <bmb-button\r\n [icon]=\"'delete_outline'\"\r\n [type]=\"'Raised'\"\r\n [size]=\"'XLarge'\"\r\n [bdrColor]=\"'error-500'\"\r\n [tColor]=\"'error-500'\"\r\n (onClick)=\"deleteItem(i)\"\r\n >\r\n </bmb-button>\r\n </td>\r\n </tr>\r\n </tbody> -->\r\n<!-- </table> -->\r\n\r\n<!-- <ng-template #TABLET>\r\n <div class=\"mt-1\">\r\n <ng-container *ngIf=\"headerFormEnable\">\r\n <div class=\"card-form-container\">\r\n <automatic-forms [form]=\"formArray.form\" [enableButtons]=\"false\">\r\n </automatic-forms>\r\n <ng-container *ngTemplateOutlet=\"ADDBUTTON\"></ng-container>\r\n </div>\r\n </ng-container>\r\n <ng-content select=\"[header]\"></ng-content>\r\n </div>\r\n <div class=\"accordion-container\">\r\n <mat-accordion>\r\n <mat-expansion-panel\r\n class=\"mat-elevation-z1\"\r\n *ngFor=\"let item of formArray.controls; let i = index\"\r\n >\r\n <mat-expansion-panel-header\r\n class=\"expanded-header\"\r\n collapsedHeight=\"3rem\"\r\n expandedHeight=\"3rem\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"cardHeaderTemplate; context: { $implicit: item }\"\r\n >\r\n </ng-container>\r\n <mat-icon\r\n *ngIf=\"!formArray.readOnly\"\r\n class=\"mobile-delete\"\r\n (click)=\"deleteItem(i)\"\r\n color=\"warn\"\r\n >\r\n delete_outline\r\n </mat-icon>\r\n </mat-expansion-panel-header>\r\n <ng-container\r\n *ngTemplateOutlet=\"cardBodyTemplate; context: { $implicit: item }\"\r\n >\r\n </ng-container>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n </div>\r\n</ng-template>\r\n\r\n<div class=\"text-error\" *ngIf=\"formArray.dirty && formArray.invalid\">\r\n {{ formArray.errors | errorMessage | translate }}\r\n</div>\r\n\r\n<ng-template #ADDBUTTON>\r\n <div class=\"add-item-btn\">\r\n <bmb-button\r\n [icon]=\"'add'\"\r\n [type]=\"'Raised'\"\r\n [bdrColor]=\"'aux-success'\"\r\n [size]=\"'XLarge'\"\r\n [tColor]=\"'aux-success'\"\r\n [disabled]=\"!formArray.form.valid || !formArray.form.dirty\"\r\n (onClick)=\"addItemAction()\"\r\n >\r\n </bmb-button>\r\n </div>\r\n</ng-template> -->\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormControlsListPipe } from './controls-list.pipe';\r\n\r\n@NgModule({\r\n declarations: [FormControlsListPipe],\r\n imports: [CommonModule],\r\n exports: [FormControlsListPipe],\r\n})\r\nexport class FormControlsListPipeModule {}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FormControlsRenderDirective,\n SpecialFormComponent,\n SpecialArrayComponent,\n} from './special-form.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormControlsListPipeModule } from '../../pipes/controls-list-pipe/controls-list.pipe.module';\nimport {\n SpecialDropdownModule,\n SpecialInputModule,\n SpecialAutocompleteModule,\n SpecialDatepickerModule,\n SpecialMultipleAutocompleteModule,\n SpecialCheckboxModule,\n SpecialTextAreaModule,\n SpecialUploadModule,\n SpecialLabelModule,\n} from '../../components';\n\n@NgModule({\n declarations: [\n SpecialArrayComponent,\n FormControlsRenderDirective,\n SpecialFormComponent,\n ],\n imports: [\n CommonModule,\n FormControlsListPipeModule,\n MatButtonModule,\n SpecialDropdownModule,\n SpecialInputModule,\n SpecialAutocompleteModule,\n SpecialDatepickerModule,\n SpecialLabelModule,\n SpecialMultipleAutocompleteModule,\n SpecialCheckboxModule,\n SpecialTextAreaModule,\n SpecialUploadModule,\n ],\n exports: [\n SpecialArrayComponent,\n FormControlsRenderDirective,\n SpecialFormComponent,\n ],\n})\nexport class SpecialFormModule {}\n","export enum EControlTypes {\r\n pkey = 'PRIMARY-KEY',\r\n input = 'INPUT',\r\n textArea = 'TEXT-AREA',\r\n dropdown = 'DROPDOWN',\r\n date = 'DATE',\r\n time = 'TIME',\r\n checkbox = 'CHECKBOX',\r\n upload = 'UPLOAD',\r\n autocomplete = 'AUTOCOMPLETE',\r\n multiple = 'MULTIPLE-AUTOCOMPLETE',\r\n array = 'ARRAY',\r\n form = 'FORM',\r\n label = 'LABEL',\r\n default = 'DEFAULT',\r\n}\r\n","import {\r\n AbstractControl,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n} from '@angular/forms';\r\nimport { EControlTypes } from '../aux-data/control-types.enum';\r\nimport { IFieldBasicData } from '../interfaces/field-basics.interfaces';\r\nimport {\r\n IArraySettings,\r\n IFormSettings,\r\n TSpecialFields,\r\n TSpecialForm,\r\n TSpecialArray,\r\n} from '../interfaces/form.interfaces';\r\nexport class SpecialFormControl<T>\r\n extends FormControl\r\n implements IFieldBasicData\r\n{\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public length: number;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: T;\r\n public type: EControlTypes;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor({\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialFields) {\r\n super(defaultValue, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings as T;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n setReadOnly(status: boolean = true) {\r\n this.readOnly = status;\r\n }\r\n\r\n setDisabled(status: boolean = true) {\r\n status ? this.disable() : this.enable();\r\n }\r\n\r\n setHidden(status = true) {\r\n this.hidden = status;\r\n }\r\n}\r\nexport class SpecialFormGroup extends FormGroup implements IFieldBasicData {\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public length: number;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IFormSettings;\r\n public type: EControlTypes.form;\r\n public defaultValue: any;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n length,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n disabled,\r\n }: TSpecialForm,\r\n controls: {\r\n [key: string]: SpecialFormControl<any>;\r\n },\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.length = length;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n unpristineRequired() {\r\n Object.values(this.controls).forEach((control) => {\r\n if (control instanceof SpecialFormControl) {\r\n control.markAsDirty();\r\n } else if (control instanceof SpecialFormGroup) {\r\n control.unpristineRequired();\r\n } else if (control instanceof SpecialFormArray) {\r\n control.unpristineRequired();\r\n }\r\n });\r\n }\r\n\r\n specialReset(value = {}) {\r\n const aux: any = {};\r\n Object.entries(this.controls).map(([key, control]) => {\r\n if (control instanceof SpecialFormControl) {\r\n aux[key] = control.defaultValue;\r\n } else if (control instanceof SpecialFormArray) {\r\n control.clear();\r\n }\r\n });\r\n\r\n this.reset({ ...aux, ...value });\r\n }\r\n setReadOnly(status: boolean = true) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setReadOnly(status);\r\n }\r\n });\r\n }\r\n setReadOnlyByFields(fieldsObject: { [key: string]: boolean }) {\r\n Object.entries(fieldsObject).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.readOnly = value;\r\n }\r\n });\r\n }\r\n\r\n setHiddenByFields(fields: { [key: string]: boolean }) {\r\n Object.entries(fields).map(([key, value]) => {\r\n const control = this.controls[key];\r\n if (control instanceof SpecialFormControl) {\r\n control.hidden = value;\r\n }\r\n });\r\n }\r\n setDisabled(status: boolean) {\r\n Object.values(this.controls).map((value) => {\r\n if (\r\n value instanceof SpecialFormControl ||\r\n value instanceof SpecialFormArray ||\r\n value instanceof SpecialFormGroup\r\n ) {\r\n value.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n setDisabledByFields(fieldsObject: any) {\r\n Object.entries(fieldsObject).map((entries) => {\r\n if (this.controls[entries[0]] instanceof SpecialFormControl) {\r\n entries[1]\r\n ? this.controls[entries[0]].enable()\r\n : this.controls[entries[0]].disable();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * donde value es el objeto semilla y detailForm es un arreglo de form key para dar un marco al formarray\r\n */\r\n\r\n setFormValue(value: any) {\r\n this.specialReset(value);\r\n Object.entries(this.controls)\r\n .filter(([_key, control]) => control instanceof SpecialFormArray)\r\n .map(([key, control]) => {\r\n (control as SpecialFormArray).fillFormArray(value[key]);\r\n });\r\n }\r\n\r\n /**\r\n * Método que retorna\r\n */\r\n\r\n getIdPkey(): SpecialFormControl<any> | undefined {\r\n return Object.values(this.controls).find(\r\n (control) =>\r\n control instanceof SpecialFormControl && control.type === 'PRIMARY-KEY'\r\n ) as SpecialFormControl<any> | undefined;\r\n }\r\n}\r\n\r\nexport class SpecialFormArray extends FormArray implements IFieldBasicData {\r\n public name: string;\r\n public placeholder: string;\r\n public label: string;\r\n public tooltip: string;\r\n public icon: string;\r\n public elementId: string;\r\n public styleClasses: string;\r\n public required: boolean;\r\n public hidden: boolean;\r\n public readOnly: boolean;\r\n public settings: IArraySettings;\r\n public type: EControlTypes;\r\n public defaultValue: any;\r\n public form: SpecialFormGroup;\r\n private formCreation: (value?: any) => SpecialFormGroup;\r\n public errorMessages: { [key: string]: string };\r\n\r\n constructor(\r\n {\r\n name,\r\n settings,\r\n type,\r\n validators,\r\n asyncValidators,\r\n elementId,\r\n styleClasses,\r\n defaultValue,\r\n hidden,\r\n icon,\r\n label,\r\n placeholder,\r\n readOnly,\r\n required,\r\n tooltip,\r\n errorMessages,\r\n disabled,\r\n }: TSpecialArray,\r\n formCreation: () => SpecialFormGroup,\r\n controls: AbstractControl[]\r\n ) {\r\n super(controls, validators, asyncValidators);\r\n this.formCreation = formCreation;\r\n this.form = this.formCreation();\r\n this.name = name;\r\n this.placeholder = placeholder;\r\n this.label = label;\r\n this.tooltip = tooltip;\r\n this.icon = icon;\r\n this.elementId = elementId;\r\n this.settings = settings;\r\n this.type = type;\r\n this.styleClasses = styleClasses;\r\n this.hidden = hidden;\r\n this.readOnly = readOnly;\r\n this.required = required;\r\n this.defaultValue = defaultValue;\r\n this.errorMessages = errorMessages;\r\n disabled ? this.disable() : this.enable();\r\n }\r\n\r\n fillFormArray(data: any[]) {\r\n this.form.reset();\r\n this.clear();\r\n data.forEach((item) => {\r\n const form = this.formCreation(item);\r\n this.push(form);\r\n });\r\n }\r\n\r\n addItem() {\r\n const form = this.formCreation(this.form.value);\r\n\r\n this.form.specialReset();\r\n this.push(form);\r\n this.markAsDirty();\r\n }\r\n\r\n specialPush(index?: number) {\r\n const form = this.formCreation(this.form.value);\r\n if (!index) this.push(form);\r\n else this.controls[index].reset(this.form.value);\r\n }\r\n\r\n specialInsert(index = 0) {\r\n const form = this.formCreation(this.form.value);\r\n this.insert(index, form);\r\n }\r\n\r\n specialEdit(index: number, newValue: Object) {\r\n this.controls[index].reset({ ...this.controls[index].value, ...newValue });\r\n this.markAsDirty();\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray de lectura o de sololectura\r\n * @param status\r\n */\r\n\r\n setReadOnly(status: boolean) {\r\n this.readOnly = status;\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setReadOnly(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Vuelve todos los controles del formArray habilitados o deshabilitados\r\n * @param status\r\n */\r\n\r\n setDisabled(status: boolean) {\r\n status ? this.disable() : this.enable();\r\n this.controls.forEach((control) => {\r\n if (control instanceof SpecialFormGroup) {\r\n control.setDisabled(status);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Permite editar un control especifico.\r\n * @param index\r\n */\r\n\r\n editControl(index: number) {\r\n this.form.reset(this.controls[index].value);\r\n }\r\n\r\n unpristineRequired() {\r\n this.markAsDirty();\r\n this.controls.forEach((item) => {\r\n (<SpecialFormGroup>item).unpristineRequired();\r\n });\r\n }\r\n\r\n recursiveFillForm(form: FormGroup, data: any): FormGroup {\r\n Object.entries(form.controls).map(([key, control]) => {\r\n if (control instanceof FormControl) {\r\n control.setValue(data[key]);\r\n } else if (control instanceof FormArray) {\r\n data[key].forEach(() => {});\r\n } else if (control instanceof FormGroup) {\r\n control.reset(data[key]);\r\n }\r\n });\r\n return form;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\nimport { IAutocompleteSettings } from '../../../components/special-autocomplete/special-autocomplete.interface';\nimport { EControlTypes } from '../../aux-data/control-types.enum';\nimport {\n SpecialFormArray,\n SpecialFormControl,\n SpecialFormGroup,\n} from '../../forms/special-forms';\nimport { IFieldData } from '../../interfaces/field-basics.interfaces';\nimport {\n IFormStructure,\n TRawFields,\n TSpecialArray,\n TSpecialFields,\n TSpecialForm,\n TSpecialInput,\n} from '../../interfaces/form.interfaces';\n\ninterface IControlParams {\n name: string;\n control: SpecialFormArray | SpecialFormGroup | SpecialFormControl<any>;\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class SpecialFormBuilderService {\n private readonly defectField: IFieldData = {\n asyncValidators: null,\n validators: null,\n defaultValue: null,\n elementId: '',\n hidden: false,\n icon: '',\n label: '',\n disabled: false,\n length: 0,\n placeholder: '',\n readOnly: false,\n required: false,\n styleClasses: '',\n errorMessages: {},\n tooltip: '',\n };\n\n private readonly inputDefectField: TSpecialInput = {\n ...this.defectField,\n settings: {},\n type: EControlTypes.input,\n name: '',\n };\n\n private readonly formDefectField: TSpecialForm = {\n ...this.defectField,\n settings: {\n formFields: {},\n },\n type: EControlTypes.form,\n name: '',\n };\n\n private readonly arrayDefectField: TSpecialArray = {\n ...this.defectField,\n settings: {\n formFields: {},\n },\n type: EControlTypes.array,\n name: '',\n };\n\n constructor() {}\n\n public control(field: Partial<TSpecialFields>): SpecialFormControl<any> {\n const formField: TSpecialFields = {\n ...this.inputDefectField,\n ...field,\n } as TSpecialFields;\n const { control } = this.setFormControl(formField);\n return control;\n }\n\n public group(\n fields: IFormStructure,\n parentField: Partial<TSpecialForm> = {}\n ) {\n return this.formGenerator(this.fieldDataToArray(fields), parentField);\n }\n\n public array() {}\n\n public fieldDataToArray(fields: IFormStructure): TSpecialFields[] {\n return Object.entries(fields).map(([name, field]) =>\n this.setDefectFieldOptions(name, field)\n );\n }\n\n private setDefectFieldOptions(\n name: string,\n field: Partial<TRawFields>\n ): TSpecialFields {\n return {\n ...this.inputDefectField,\n ...field,\n name,\n } as TSpecialFields;\n }\n\n private formGenerator(\n fields: TSpecialFields[],\n parentField: Partial<TSpecialForm> = {}\n ): SpecialFormGroup {\n const formField: TSpecialForm = {\n ...this.formDefectField,\n ...parentField,\n };\n const structure = fields\n .map((field) => this.getControlAndNameByType(field))\n .reduce(\n (prev, { name, control }: IControlParams) => ({\n ...prev,\n [name]: control,\n }),\n {}\n );\n return new SpecialFormGroup(formField, structure);\n }\n\n private getControlAndNameByType(field: TSpecialFields) {\n switch (field.type) {\n case EControlTypes.array:\n return this.setFormArray(field);\n case EControlTypes.form:\n return this.setFormGroup(field);\n default:\n return this.setFormControl(field);\n }\n }\n\n private setFormGroup(field: TSpecialForm): {\n name: string;\n control: SpecialFormGroup;\n } {\n const control = this.formGenerator(\n this.fieldDataToArray(field.settings.formFields),\n field\n );\n return { control, name: field.name };\n }\n\n private setFormArray(field: TSpecialArray): {\n name: string;\n control: SpecialFormArray;\n } {\n const auxForm = (value = {}) => {\n const auxForm = this.formGenerator(\n this.fieldDataToArray(field.settings.formFields),\n {}\n );\n auxForm.reset(value);\n return auxForm;\n };\n\n if (field.required) {\n field.validators = this.setValidatorsArray(field.validators, [\n this.arrayLengthRequired,\n ]);\n }\n\n return {\n name: field.name,\n control: new SpecialFormArray(field, auxForm, []),\n };\n }\n\n private setFormControl(field: TSpecialFields): {\n name: string;\n control: SpecialFormControl<any>;\n } {\n const validators: ValidatorFn[] = [];\n\n if (field.required) validators.push(this.setRequiredValidator(field));\n if (field.length) validators.push(Validators.maxLength(field.length));\n\n field.validators = this.setValidatorsArray(field.validators, validators);\n\n return {\n name: field.name,\n control: new SpecialFormControl(field),\n };\n }\n\n private setRequiredValidator(field: TSpecialFields): ValidatorFn {\n if (field.type !== EControlTypes.autocomplete) {\n return Validators.required;\n }\n\n return (control: SpecialFormControl<IAutocompleteSettings>) =>\n !!control.value && control.value instanceof Object\n ? null\n : { required: true };\n }\n private setValidatorsArray(\n validators: ValidatorFn | ValidatorFn[] | null,\n newValidators: ValidatorFn[]\n ): ValidatorFn[] {\n if (!validators) {\n return newValidators;\n }\n return validators instanceof Array\n ? [...validators, ...newValidators]\n : [validators, ...newValidators];\n }\n\n private arrayLengthRequired(control: AbstractControl) {\n if (control.value.length) {\n return {};\n }\n return { noItems: 'NO_SELECTED_ITEM' };\n }\n}\n","/*\n * Public API Surface of special-forms\n */\n\nexport * from './lib/components';\nexport * from './lib/core/services/index';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i5","i6","i7","i8.ErrorMessagePipe","i1","i9.TextByFunctionPipe","i8","i9.ErrorMessagePipe","i10.TextByFunctionPipe","i6.ErrorMessagePipe","i10.ErrorMessagePipe","i11.TextByFunctionPipe","i7.ErrorMessagePipe","i5.ErrorMessagePipe","i2.TextByFunctionPipe","i2.FormControlsListPipe","EControlTypes"],"mappings":"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"}}}