@esfaenza/forms-and-validations 19.2.57 → 19.2.59
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.
|
@@ -446,11 +446,11 @@ class InputSkeletonComponent {
|
|
|
446
446
|
/** @ignore Costruttore */
|
|
447
447
|
constructor() { }
|
|
448
448
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
449
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: InputSkeletonComponent, isStandalone: true, selector: "input-skeleton", inputs: { For: "For", Control: "Control" }, ngImport: i0, template: "<ng-container *ngIf=\"!For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\">\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">\r\n <ng-container *ngIf=\"For.DisplayLayout == 'form'\">{{ For.EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"For.DisplayLayout == 'inline'\" class=\"app-inline\">{{ For.EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\" class=\"{{For.FormGroupClass + (For.Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (For.DisplayLayout == 'inline' && For.DisplayMode ? (' app-inline-block ' + (!For.Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : For.LabelColWidth) + (For.DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{For.Label}}{{For.required !==undefined && !For.DisplayMode ? '*' : ''}}{{For.Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"For.DisplayMode && For.DisplayLayout == 'inline' && For.InlineSeparator != ''\">{{For.InlineSeparator}}</span>\r\n <div class=\"col-md-{{For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-inline-block' : For.InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">{{ For.EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
449
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: InputSkeletonComponent, isStandalone: true, selector: "input-skeleton", inputs: { For: "For", Control: "Control" }, ngImport: i0, template: "<ng-container *ngIf=\"!For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\">\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">\r\n <ng-container *ngIf=\"For.DisplayLayout == 'form'\">{{ For.EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"For.DisplayLayout == 'inline'\" class=\"app-inline\">{{ For.EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\" class=\"{{For.FormGroupClass + (For.Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (For.DisplayLayout == 'inline' && For.DisplayMode ? (' app-inline-block ' + (!For.Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : For.LabelColWidth) + (For.DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{For.Label}}{{For.required !== undefined && For.required !== false && !For.DisplayMode ? '*' : ''}}{{For.Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"For.DisplayMode && For.DisplayLayout == 'inline' && For.InlineSeparator != ''\">{{For.InlineSeparator}}</span>\r\n <div class=\"col-md-{{For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-inline-block' : For.InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">{{ For.EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
450
450
|
}
|
|
451
451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputSkeletonComponent, decorators: [{
|
|
452
452
|
type: Component,
|
|
453
|
-
args: [{ selector: "input-skeleton", encapsulation: ViewEncapsulation.None, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<ng-container *ngIf=\"!For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\">\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">\r\n <ng-container *ngIf=\"For.DisplayLayout == 'form'\">{{ For.EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"For.DisplayLayout == 'inline'\" class=\"app-inline\">{{ For.EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\" class=\"{{For.FormGroupClass + (For.Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (For.DisplayLayout == 'inline' && For.DisplayMode ? (' app-inline-block ' + (!For.Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : For.LabelColWidth) + (For.DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{For.Label}}{{For.required !==undefined && !For.DisplayMode ? '*' : ''}}{{For.Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"For.DisplayMode && For.DisplayLayout == 'inline' && For.InlineSeparator != ''\">{{For.InlineSeparator}}</span>\r\n <div class=\"col-md-{{For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-inline-block' : For.InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">{{ For.EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>" }]
|
|
453
|
+
args: [{ selector: "input-skeleton", encapsulation: ViewEncapsulation.None, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<ng-container *ngIf=\"!For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\">\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">\r\n <ng-container *ngIf=\"For.DisplayLayout == 'form'\">{{ For.EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"For.DisplayLayout == 'inline'\" class=\"app-inline\">{{ For.EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\" class=\"{{For.FormGroupClass + (For.Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (For.DisplayLayout == 'inline' && For.DisplayMode ? (' app-inline-block ' + (!For.Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : For.LabelColWidth) + (For.DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{For.Label}}{{For.required !== undefined && For.required !== false && !For.DisplayMode ? '*' : ''}}{{For.Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"For.DisplayMode && For.DisplayLayout == 'inline' && For.InlineSeparator != ''\">{{For.InlineSeparator}}</span>\r\n <div class=\"col-md-{{For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-inline-block' : For.InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">{{ For.EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>" }]
|
|
454
454
|
}], ctorParameters: () => [], propDecorators: { For: [{
|
|
455
455
|
type: Input
|
|
456
456
|
}], Control: [{
|
|
@@ -819,8 +819,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
|
|
|
819
819
|
*/
|
|
820
820
|
class EsFormTemplateComponent {
|
|
821
821
|
constructor() {
|
|
822
|
-
/** Indica se l'input è obbligatorio o no */
|
|
823
|
-
this.required = false;
|
|
824
822
|
/** Mostra un testo a sinistra dell'input, **FormLayout** permettendo */
|
|
825
823
|
this.Label = "";
|
|
826
824
|
/** Eventuali classi extra da applicare alla Label, di default c'è solo un leggero margin top */
|
|
@@ -851,13 +849,14 @@ class EsFormTemplateComponent {
|
|
|
851
849
|
this.InputColWidth = parseInt(ratio[1]);
|
|
852
850
|
}
|
|
853
851
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsFormTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
854
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
852
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.15", type: EsFormTemplateComponent, isStandalone: true, selector: "form-template", inputs: { required: ["required", "required", booleanAttribute], Label: "Label", LabelClass: "LabelClass", FormLayout: "FormLayout", LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", Last: "Last", FormGroupClass: "FormGroupClass", DisplayMode: "DisplayMode", DisplayModeTemplate: "DisplayModeTemplate", DisplayLayout: "DisplayLayout", DisplayCondition: "DisplayCondition", InlineSeparator: "InlineSeparator", LabelInputRatio: "LabelInputRatio" }, ngImport: i0, template: "<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<!-- Singola proiezione -->\r\n<ng-template #controlTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: InputSkeletonComponent, selector: "input-skeleton", inputs: ["For", "Control"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
855
853
|
}
|
|
856
854
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsFormTemplateComponent, decorators: [{
|
|
857
855
|
type: Component,
|
|
858
856
|
args: [{ selector: "form-template", imports: [CommonModule, InputSkeletonComponent], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<!-- Singola proiezione -->\r\n<ng-template #controlTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>" }]
|
|
859
857
|
}], propDecorators: { required: [{
|
|
860
|
-
type: Input
|
|
858
|
+
type: Input,
|
|
859
|
+
args: [{ transform: booleanAttribute }]
|
|
861
860
|
}], Label: [{
|
|
862
861
|
type: Input
|
|
863
862
|
}], LabelClass: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-forms-and-validations.mjs","sources":["../../../projects/forms-and-validations/src/lib/models/AppFile.ts","../../../projects/forms-and-validations/src/lib/models/ChangeEvent.ts","../../../projects/forms-and-validations/src/lib/models/EsFormsModuleConfig.ts","../../../projects/forms-and-validations/src/lib/tokens.ts","../../../projects/forms-and-validations/src/lib/services/helper.ts","../../../projects/forms-and-validations/src/lib/forms/base/base-form-control.ts","../../../projects/forms-and-validations/src/lib/forms/base/skeleton/input-skeleton.component.ts","../../../projects/forms-and-validations/src/lib/forms/base/skeleton/input-skeleton.component.html","../../../projects/forms-and-validations/src/lib/forms/input/form-input.component.ts","../../../projects/forms-and-validations/src/lib/forms/input/form-input.component.html","../../../projects/forms-and-validations/src/lib/forms/select/form-select.component.ts","../../../projects/forms-and-validations/src/lib/forms/select/form-select.component.html","../../../projects/forms-and-validations/src/lib/forms/date/form-date.component.ts","../../../projects/forms-and-validations/src/lib/forms/date/form-date.component.html","../../../projects/forms-and-validations/src/lib/forms/datetime/form-datetime.component.ts","../../../projects/forms-and-validations/src/lib/forms/time/form-time.component.ts","../../../projects/forms-and-validations/src/lib/forms/checkbox/form-checkbox.component.ts","../../../projects/forms-and-validations/src/lib/forms/checkbox/form-checkbox.component.html","../../../projects/forms-and-validations/src/lib/forms/textarea/form-textarea.component.ts","../../../projects/forms-and-validations/src/lib/forms/textarea/form-textarea.component.html","../../../projects/forms-and-validations/src/lib/forms/error/form-error.component.ts","../../../projects/forms-and-validations/src/lib/forms/error/form-error.component.html","../../../projects/forms-and-validations/src/lib/forms/template/form-template.component.ts","../../../projects/forms-and-validations/src/lib/forms/template/form-template.component.html","../../../projects/forms-and-validations/src/lib/forms/info/form-info.component.ts","../../../projects/forms-and-validations/src/lib/forms/info/form-info.component.html","../../../projects/forms-and-validations/src/lib/forms/file/form-file.component.ts","../../../projects/forms-and-validations/src/lib/forms/file/form-file.component.html","../../../projects/forms-and-validations/src/lib/forms/multiselect/form-multiselect.component.ts","../../../projects/forms-and-validations/src/lib/forms/multiselect/form-multiselect.component.html","../../../projects/forms-and-validations/src/lib/forms/autocomplete/form-autocomplete.component.ts","../../../projects/forms-and-validations/src/lib/forms/autocomplete/form-autocomplete.component.html","../../../projects/forms-and-validations/src/lib/models/BaseFormConfiguration.ts","../../../projects/forms-and-validations/src/lib/forms/currency/form-currency.component.ts","../../../projects/forms-and-validations/src/lib/forms/currency/form-currency.component.html","../../../projects/forms-and-validations/src/lib/forms/adaptive/form-adaptive.component.ts","../../../projects/forms-and-validations/src/lib/forms/adaptive/form-adaptive.component.html","../../../projects/forms-and-validations/src/lib/forms.module.ts","../../../projects/forms-and-validations/src/public-api.ts","../../../projects/forms-and-validations/src/esfaenza-forms-and-validations.ts"],"sourcesContent":["\r\n/** Classe che identifica un file */\r\nexport class AppFile {\r\n\r\n /** @ignore */\r\n constructor(){\r\n this.filename = \"\";\r\n this.fileb64 = \"\";\r\n this.nativefiles = [];\r\n }\r\n\r\n /** Nome del file, Viene letto in Input e valorizzato in Output */\r\n public filename: string; //I-O\r\n /** B64 del file, Viene letto in Input ma non valorizzato in Output (non puà leggere dal filesystem) */\r\n public fileb64: string; //I\r\n /** Lista di file nativi collegati a questo input. Viene solo valorizzato in Output. Non è letto come Input */\r\n public nativefiles: File[]; //O\r\n}","\r\nexport class ChangeEvent {\r\n constructor(public internal: boolean, public value: any) { }\r\n}","/**\r\n * Classe di configurazione del modulo\r\n */\r\nexport class EsFormsModuleConfig {\r\n\r\n\r\n /** Abilita o meno la modalità di debug */\r\n debugMode?: boolean;\r\n\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token che indica la lingua da utilizzare, sono supportate \"it-IT\" ed \"en-US\" */\r\nexport const FRM_DEBUG_MODE: InjectionToken<boolean> = new InjectionToken<boolean>('FAV_DEBUG_MODE');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { NgControl, NgForm, NgModel } from \"@angular/forms\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class FormsHelper {\r\n\r\n public retrieveModelControlAndForm(inj: Injector, fieldName: string, explicitForm?: NgForm): { control: NgControl, model: NgModel, form: { natural: boolean, entity: NgForm } } {\r\n let ngModel = inj.get(NgModel, null);\r\n\r\n if (!ngModel)\r\n throw `[@esfaenza/forms] null NgModel for field '${fieldName}'`;\r\n\r\n let ngControl = inj.get(NgControl, null);\r\n if (!ngControl)\r\n throw `[@esfaenza/forms] null NgControl for field '${fieldName}'`;\r\n\r\n var naturalParent: NgForm = (<any>ngControl)._parent;\r\n var hasForm = !!explicitForm || !!naturalParent;\r\n\r\n return {\r\n control: ngControl,\r\n model: ngModel,\r\n form: { natural: hasForm ? !explicitForm : null, entity: hasForm ? (explicitForm ?? naturalParent) : null }\r\n };\r\n }\r\n}","// Angular\r\nimport { booleanAttribute, ChangeDetectorRef, computed, ContentChild, Directive, ElementRef, EventEmitter, Injector, Input, Output, signal, Signal, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { ControlValueAccessor, NgControl, NgForm, NgModel } from \"@angular/forms\";\r\n\r\n// Prime NG\r\nimport { Popover } from \"primeng/popover\";\r\nimport { deepEquals } from '@primeuix/utils';\r\n\r\n// Rxjs\r\nimport { distinctUntilChanged, takeUntil } from \"rxjs/operators\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\n// Esfaenza\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Lib\r\nimport { ChangeEvent } from \"../../models/ChangeEvent\";\r\nimport { BaseFormConfiguration } from \"../../models/BaseFormConfiguration\";\r\n\r\nimport { FRM_DEBUG_MODE } from \"../../tokens\";\r\nimport { FormsHelper } from \"../../services/helper\";\r\n\r\n/** \r\n * Componente base da cui tutti i componenti Form implementano \r\n * N.B: \r\n * innerInput è il componente interno\r\n * ngControl è il componente esterno (form-roba)\r\n */\r\n@Directive()\r\nexport abstract class BaseFormControl implements ControlValueAccessor {\r\n\r\n protected onChange = (_: any) => { };\r\n public onTouched = () => { };\r\n public registerOnChange(fn: any): void { this.onChange = fn; }\r\n public registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n public value: any;\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del suffisso */\r\n @ContentChild(\"suffix\", { static: false }) suffix;\r\n /** Delegato per l'esecuzione di un'operazione al click del suffisso */\r\n @Output() onSuffixAction: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del prefisso */\r\n @ContentChild(\"prefix\", { static: false }) prefix;\r\n /** Delegato per l'esecuzione di un'operazione al click del prefisso */\r\n @Output() onPrefixAction: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @ViewChild('innerInput') public innerInput: NgModel;\r\n @ViewChild('innerElement') public innerElement?: ElementRef;\r\n @ViewChild('tooltip') private tooltip?: Popover;\r\n\r\n @Output() inputChange: EventEmitter<ChangeEvent> = new EventEmitter<ChangeEvent>();\r\n @Output() inputFocus: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() inputFinalized: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Input() DisplayCondition: boolean = true;\r\n @Input() DisplayMode: boolean = false;\r\n @Input() DisplayLayout: 'form' | 'inline' | 'hidden' = 'form';\r\n @Input() FormLayout: boolean = true;\r\n @Input() DisplayModeTemplate: TemplateRef<any>;\r\n public EvaluatedModel: string;\r\n public InlineSeparator: string = \", \";\r\n\r\n @Input() FailedValidationMessage: string = null;\r\n @Input() Label: string;\r\n @Input() Last: boolean;\r\n @Input() FormGroupClass: string = \"\";\r\n @Input() Placeholder: string;\r\n @Input() set LabelInputRatio(input: string) {\r\n if (!input) return;\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n get LabelInputRatio(){\r\n return `${this.LabelColWidth} ${this.InputColWidth}`\r\n }\r\n public LabelColWidth: number = 4;\r\n public InputColWidth: number = 8;\r\n\r\n\r\n @Input() Form: NgForm;\r\n @Input() name: string;\r\n @Input({ transform: booleanAttribute }) readonly: boolean | undefined;\r\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\r\n @Input() pattern: string | undefined;\r\n @Input() Validation: boolean = true;\r\n @Input() SetValidationSubject: Subject<{ fieldName: string, error: string }>;\r\n public TooltipText: string = \"\";\r\n public InternalName: string = \"\";\r\n\r\n /*\r\n *** Valori assunti in base al binding:\r\n <input ... required /input> -> required === ''\r\n <input ... /input> -> required === undefined\r\n <input ... [required]=\"true\" /input> -> required === true\r\n */\r\n @Input({ transform: booleanAttribute }) required: boolean | '' | undefined;\r\n\r\n /**\r\n * Espressione simil-Angular per cambiare il testo dei componenti che scelgono il proprio modello da una **Source**\r\n * \r\n * Il funzionamento è identico al binder di angular, solo con una graffa invece che 2.\r\n * È inoltre possibile aggiungere pezzi di descrizione in maniera condizionale con la sintassi **:prop?(Prop vale {prop})**\r\n */\r\n @Input() Display: string = '{description}';\r\n @Input() IdField: string = \"id\";\r\n private BindCheckingGroups: { global: string, prop: string, whenexists: string }[] = []\r\n private BindProperties: { global: string, prop: string }[] = [];\r\n\r\n private _source = signal<any[] | undefined>(null);\r\n @Input() get Source(): any[] | undefined { return this._source(); }\r\n set Source(val: any[] | undefined) { if (!deepEquals(val, this._source())) this._source.set(val); }\r\n protected BoundSourceCache: { [id: string]: { description: string, source: any} } = {};\r\n\r\n public BoundSource: Signal<{ id: string, description: string }[]> = computed(() => {\r\n let source = this._source();\r\n\r\n // Cache locale per evitare di rifare dei regex.match ogni santa volta\r\n if ((source?.length || 0) == 0)\r\n return [];\r\n\r\n if (this.BindCheckingGroups.length == 0)\r\n this.evaluateBindCheckingGroups();\r\n\r\n if (this.BindProperties.length == 0)\r\n this.evaluateBindProperties();\r\n\r\n this.BoundSourceCache = {};\r\n let ret = source.map(s => this.transformSourceItem(s));\r\n\r\n // Post trybind se c'è un modello associato ricalcolo l'**EvaluatedModel**\r\n if (this.value !== null || this.value !== undefined)\r\n this.EvaluatedModel = ret.find(t => t.id == this.value)?.description;\r\n\r\n return ret;\r\n });\r\n\r\n protected helper: FormsHelper;\r\n protected utiExts: UtilityService;\r\n protected lc: LocalizationService;\r\n protected msgs: MessageService;\r\n protected ngControl: NgControl;\r\n protected ngModel: NgModel;\r\n protected FRM_DEBUG_MODE: boolean;\r\n protected cdr: ChangeDetectorRef;\r\n\r\n /**\r\n * Indica se l'input del componente dev'essere risparato fuori con le trasformazioni da *outValue*\r\n * \r\n * Il controllo potrebbe essere automatico ma rischia di diventare pesante per componenti particolari/pesanti\r\n */\r\n protected shouldReemitAdjustedInput: boolean = false;\r\n\r\n @Input() statusChangesObservable: Observable<any> = null;\r\n protected performFormLogic: boolean = true;\r\n\r\n protected destroyed$: Subject<void> = new Subject<void>();\r\n \r\n @Input() Configuration: BaseFormConfiguration;\r\n\r\n constructor(protected inj: Injector) {\r\n this.cdr = this.inj.get(ChangeDetectorRef);\r\n this.lc = this.inj.get(LocalizationService);\r\n this.msgs = this.inj.get(MessageService);\r\n this.utiExts = this.inj.get(UtilityService);\r\n this.helper = this.inj.get(FormsHelper);\r\n this.FRM_DEBUG_MODE = this.inj.get(FRM_DEBUG_MODE, null);\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.hideTooltip();\r\n\r\n if (this.Form && this.ngModel && !!this.Form.getControl(this.ngModel) && this.performFormLogic)\r\n this.Form.removeControl(this.ngModel);\r\n\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n\r\n public ngOnInit() {\r\n if (!this.Configuration) return;\r\n\r\n let properties = Object.keys(this.Configuration);\r\n\r\n // Riempio tutte le proprietà non assegnate con il loro equivalente da configurazione se presente\r\n for (let i = 0; i < properties.length; i++) {\r\n let p = properties[i];\r\n // LabelInputRatio è sempre overridabile\r\n if ((this[p] === null || this[p] === undefined || p == \"LabelInputRatio\") && (this.Configuration[p] !== null && this.Configuration[p] !== undefined)) {\r\n this[p] = this.Configuration[p];\r\n }\r\n }\r\n }\r\n\r\n public ngAfterViewInit() {\r\n let helpRes = this.helper.retrieveModelControlAndForm(this.inj, this.name, this.Form);\r\n this.ngModel = helpRes.model\r\n this.ngControl = helpRes.control;\r\n this.InternalName = `${this.name}_internal`;\r\n this.Validation = this.Validation || !this.DisplayMode;\r\n\r\n // Se la logica dei form è effettuata da un compoente interno invece che dal componente attuale, come minimo devo assicurarmi di valorizzare il Form\r\n if (!this.performFormLogic) {\r\n this.Form = helpRes.form.entity;\r\n this.statusChangesObservable = this.ngControl.statusChanges;\r\n return;\r\n }\r\n\r\n if (helpRes.form.natural === false)\r\n this.Form.addControl(this.ngModel);\r\n\r\n if (!this.Validation) {\r\n // Forzatura a non validare questo componente passando dagli internals di Angular perché passando dai controlli interni non va :D\r\n (<any>this.innerInput)._rawValidators = (<any>this.ngControl)._rawValidators = [];\r\n (<any>this.innerInput)._composedValidatorFn = (<any>this.ngControl)._composedValidatorFn = null;\r\n }\r\n\r\n if(helpRes.form.entity !== null)\r\n helpRes.form.entity.ngSubmit.subscribe(_ => {\r\n this.innerInput.control.markAsDirty({ emitEvent: false });\r\n this.ngControl.control.markAsDirty({ emitEvent: false });\r\n\r\n if (this.ngControl.invalid) this.showTooltip();\r\n });\r\n\r\n (this.statusChangesObservable ?? this.ngControl.statusChanges).pipe(distinctUntilChanged(), takeUntil(this.destroyed$)).subscribe((status) => {\r\n // Tutti i cambi ad \"Invalido\" li ignoro se il controllo non è stato manco sfiorato. Vuol dire che è una fase di bootstrap con un valore invalido, che sia vuoto o errato da DB\r\n if(!this.ngControl.touched) return;\r\n this.log(`Control Status Changed - ${this.name} -> ${status}`);\r\n (status == \"INVALID\" ? this.showTooltip : this.hideTooltip).bind(this)()\r\n });\r\n\r\n if (this.SetValidationSubject) {\r\n this.SetValidationSubject.pipe(distinctUntilChanged(), takeUntil(this.destroyed$)).subscribe(v => {\r\n if (v.fieldName !== this.name) return;\r\n\r\n // Nessun errore, ripulisco\r\n if(!v.error)\r\n {\r\n this.innerInput.control.setErrors(null, { emitEvent: false });\r\n this.ngControl.control.setErrors(null, { emitEvent: false });\r\n return;\r\n }\r\n\r\n this.log(`Control Forced Invalid - ${this.name} error: ${v.error}`);\r\n\r\n this.innerInput.control.setErrors({ forcedtoinvalid: true }, { emitEvent: false });\r\n this.innerInput.control.markAsDirty({ emitEvent: false });\r\n\r\n this.ngControl.control.setErrors({ forcedtoinvalid: true }, { emitEvent: false });\r\n this.ngControl.control.markAsDirty({ emitEvent: false });\r\n\r\n requestAnimationFrame(() => { if (this.ngControl.invalid) this.showTooltip(v.error); });\r\n });\r\n }\r\n }\r\n\r\n private showTooltip(error?: string) {\r\n if(!this.tooltip)\r\n return;\r\n \r\n this.TooltipText = this.getTooltipText(error);\r\n this.tooltip.show(null, this.innerElement.nativeElement);\r\n }\r\n\r\n protected getTooltipText(error?: string){\r\n return error ?? this.FailedValidationMessage ?? (this.required !== undefined && this.isEmptyValue(this.value) ? \"È obbligatorio fornire un valore\" : \"Formato input errato\");\r\n }\r\n\r\n private hideTooltip() {\r\n if(!this.tooltip) return;\r\n\r\n this.tooltip.hide();\r\n }\r\n\r\n public log(message: string) {\r\n if (this.FRM_DEBUG_MODE)\r\n console.log(\"@forms-and-validations: \" + message)\r\n }\r\n\r\n public async writeValue(obj: any): Promise<void> {\r\n // Coercizione di tutti i valori \"vuoti\" all'unico \"null\"\r\n if (obj === null || obj === undefined) obj = null;\r\n\r\n this.value = await this.getValueIn(obj);\r\n\r\n if(!this.performFormLogic) return;\r\n\r\n this.EvaluatedModel = await this.getEvaluatedModel(this.value);\r\n\r\n if (this.shouldReemitAdjustedInput && !!this.value) {\r\n // Riallineamento esatto del valore. Può entrare qualsiasi valore, ma il modello del form e il binding potrebbe essere fatto sempre su un tipo diverso\r\n // Es: nei form date, entra un dayjs, viene letto come Date (getValueIn) e viene sparato fuori come \"dd/MM/yyyy\" (getValueOut)\r\n // this.value è valorizzato qui sopra\r\n this.onChange(await this.getValueOut(this.value));\r\n }\r\n }\r\n\r\n public async changed(value: any) {\r\n this.value = value;\r\n\r\n this.onChange(await this.getValueOut(this.value));\r\n\r\n if(!this.performFormLogic) return;\r\n\r\n this.EvaluatedModel = await this.getEvaluatedModel(value);\r\n\r\n this.inputChange.emit(new ChangeEvent(false, this.value));\r\n this.log(`Control Value Changed - ${this.name}, value: ${this.value}`);\r\n }\r\n\r\n // Leggero debounce sul finalize in quanto ci sono alcuni componenti che per attaccare tutti gli eventi \"finalizzanti\" potrebbero duplicare le chiamate.\r\n // vedi form-date i cui eventi finalizzanti sono sia l'onBlur che l'onSelect, ma in alcune situazioni vengono richiamati entrambi\r\n private finalizedDebounceInterval = null;\r\n public finalized(debounceTime = 50) {\r\n if (this.finalizedDebounceInterval)\r\n clearInterval(this.finalizedDebounceInterval);\r\n\r\n this.finalizedDebounceInterval = setInterval(() => {\r\n this.inputFinalized.emit(this.ngControl?.name?.toString());\r\n this.log(\"Control Value Finalized - \" + this.name + \" with value: \" + this.value);\r\n clearInterval(this.finalizedDebounceInterval);\r\n }, debounceTime);\r\n }\r\n\r\n public focused(event: any) {\r\n this.inputFocus.emit(event);\r\n this.log(\"Control Focused - \" + this.name);\r\n }\r\n\r\n /** Valuta il contenuto della variabile BindCheckingGroups */\r\n private evaluateBindCheckingGroups() {\r\n // Blocco per tirare fuori le condizioni scritte tipo --> :prop?(Roba con {prop})\r\n var iffedMatches = this.Display.match(/:([a-z]+)\\?\\(([^\\(\\)]+)\\)/g);\r\n if (!iffedMatches) return;\r\n\r\n this.BindCheckingGroups = iffedMatches.map(m => {\r\n let groups = m.match(/:([a-z]+)\\?\\(([^\\(\\)]+)\\)/i);\r\n return { global: m, prop: groups[1], whenexists: groups[2] };\r\n });\r\n }\r\n\r\n /** Valuta il contenuto della variabile BindProperties */\r\n private evaluateBindProperties() {\r\n // Blocco per tirare fuori le proprietà scritte tipo --> {prop}\r\n var matches = this.Display.match(/{[a-z]+}/gi);\r\n if (!matches) return;\r\n\r\n this.BindProperties = matches.map(m => { return { global: m, prop: m.substring(1, m.length - 1) } });\r\n }\r\n\r\n /**\r\n * Trasforma un oggetto della Source alla sua versione \"nuova\" basandosi sulle informazioni su gruppi e proprietà\r\n * \r\n * @param {any} item Oggetto da trasformare\r\n * \r\n * @returns {{id: string, description: string}} Oggetto finale trasformato\r\n */\r\n private transformSourceItem(s: any): {id: string, description: string} {\r\n // Parto sempre dalla variabile di Display, poi sostituisco pezzo per pezzo\r\n let desc = this.Display;\r\n\r\n // Taglio o mantengo le condizioni in base alla proprietà su cui fare check\r\n // Dopodiché scrivo tutte le proprietà\r\n for (let i = 0; i < this.BindCheckingGroups.length; i++) {\r\n let t = this.BindCheckingGroups[i];\r\n desc = desc.replace(t.global, (s[t.prop] !== null && s[t.prop] !== undefined && s[t.prop] !== \"\") ? t.whenexists : \"\");\r\n }\r\n\r\n for (let i = 0; i < this.BindProperties.length; i++) {\r\n let t = this.BindProperties[i];\r\n desc = desc.replace(t.global, s[t.prop]);\r\n }\r\n\r\n let ret = { id: \"\" + s[this.IdField], description: desc };\r\n this.BoundSourceCache[ret.id] = { description: ret.description, source: s};\r\n return ret;\r\n }\r\n\r\n // Overridabili per gestire In - Out diversi\r\n protected async getEvaluatedModel(valueAfterInTransform: any): Promise<string> { return valueAfterInTransform?.toString() || \"\"; }\r\n protected async getValueOut(value: any): Promise<any> { return value; }\r\n protected async getValueIn(value: any): Promise<any> { return value; }\r\n protected isEmptyValue(value: any): boolean { return !value; };\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { BaseFormControl } from \"../base-form-control\";\r\n\r\n\r\n/** Semplice componente di Input testuale, con eventuale prefisso/suffisso */\r\n@Component({\r\n selector: \"input-skeleton\",\r\n templateUrl: \"input-skeleton.component.html\",\r\n styleUrls: [\"./input-skeleton.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class InputSkeletonComponent {\r\n\r\n @Input() For: BaseFormControl;\r\n @Input() Control: TemplateRef<any>;\r\n\r\n /** @ignore Costruttore */\r\n constructor() { }\r\n}","<ng-container *ngIf=\"!For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\">\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">\r\n <ng-container *ngIf=\"For.DisplayLayout == 'form'\">{{ For.EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"For.DisplayLayout == 'inline'\" class=\"app-inline\">{{ For.EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\" class=\"{{For.FormGroupClass + (For.Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (For.DisplayLayout == 'inline' && For.DisplayMode ? (' app-inline-block ' + (!For.Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : For.LabelColWidth) + (For.DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{For.Label}}{{For.required !==undefined && !For.DisplayMode ? '*' : ''}}{{For.Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"For.DisplayMode && For.DisplayLayout == 'inline' && For.InlineSeparator != ''\">{{For.InlineSeparator}}</span>\r\n <div class=\"col-md-{{For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-inline-block' : For.InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">{{ For.EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, numberAttribute, Output, signal, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-input\",\r\n templateUrl: \"form-input.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [InputTextModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormInputComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormInputComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input({ transform: numberAttribute }) minlength: number | undefined;\r\n @Input({ transform: numberAttribute }) maxlength: number | undefined;\r\n @Input() pattern: string | undefined;\r\n\r\n @Input() Password: boolean = false;\r\n\r\n public passShown = signal(false);\r\n public Type = signal(\"text\");\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n if (this.Password)\r\n this.Type.set(\"password\");\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n\r\n <p-inputgroup>\r\n <p-inputgroup-addon *ngIf=\"!!prefix\">\r\n <span (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n\r\n <p-floatlabel variant=\"on\">\r\n <input \r\n pInputText \r\n pSize=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n autocomplete=\"off\"\r\n style=\"width: 100%;\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [attr.type]=\"Type\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readOnly]=\"readonly\"\r\n [minlength]=\"minlength\" \r\n [maxlength]=\"maxlength\" \r\n [pattern]=\"pattern\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (blur)=\"onTouched(); finalized()\"\r\n />\r\n \r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n\r\n <p-inputgroup-addon *ngIf=\"Password\">\r\n <a *ngIf=\"passShown()\" class=\"far fa-eye-slash app-fs-16 app-pointer\" (click)=\"Type.set('password'); passShown.set(false); $event.preventDefault()\"></a>\r\n <a *ngIf=\"!passShown()\" class=\"far fa-eye app-fs-16 app-pointer\" (click)=\"Type.set('text'); passShown.set(true); $event.preventDefault()\"></a>\r\n </p-inputgroup-addon>\r\n\r\n <p-inputgroup-addon *ngIf=\"!!suffix\">\r\n <span (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n </p-inputgroup>\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, TemplateRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { Select, SelectModule } from 'primeng/select';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\";\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-select\",\r\n templateUrl: \"form-select.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [SelectModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormSelectComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormSelectComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() OptionsTemplate: TemplateRef<any>;\r\n\r\n public RequiredPlaceholder: string = \"\";\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<Select>(<any>this.innerElement)).el;\r\n\r\n if (!this.Placeholder && this.required) {\r\n this.RequiredPlaceholder = \"Seleziona un valore...\";\r\n this.Placeholder = \"\";\r\n }\r\n }\r\n\r\n protected override async getEvaluatedModel(value: any): Promise<string> {\r\n return this.BoundSource?.().find(t => t.id == value)?.description ?? \"\";\r\n }\r\n\r\n protected override async getValueIn(value: any): Promise<any> {\r\n return value !== null && value !== undefined && value !== \"\" ? value.toString() : null;\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n\r\n<ng-template #controlTemplate>\r\n\r\n <p-inputgroup>\r\n <p-inputgroup-addon *ngIf=\"!!prefix\">\r\n <span (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n\r\n <p-floatlabel variant=\"on\">\r\n\r\n <p-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [filter]=\"true\" \r\n filterBy=\"description\"\r\n [showClear]=\"true\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [options]=\"BoundSource()\"\r\n [placeholder]=\"RequiredPlaceholder\"\r\n optionLabel=\"description\"\r\n optionValue=\"id\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (onChange)=\"onTouched(); finalized()\">\r\n\r\n <ng-template *ngIf=\"OptionsTemplate\" let-selectedOption #selectedItem>\r\n <ng-container *ngTemplateOutlet=\"OptionsTemplate; context : { $implicit: BoundSourceCache[selectedOption.id].source}\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"OptionsTemplate\" let-itm #item>\r\n <ng-container *ngTemplateOutlet=\"OptionsTemplate; context : { $implicit: BoundSourceCache[itm.id].source}\"></ng-container>\r\n </ng-template>\r\n </p-select>\r\n \r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n\r\n <p-inputgroup-addon *ngIf=\"!!suffix\">\r\n <span (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n </p-inputgroup>\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, signal, ViewEncapsulation, WritableSignal } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { DatePickerModule, DatePicker } from 'primeng/datepicker';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Esfaenza\r\nimport { DateService } from \"@esfaenza/extensions\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\ndeclare var dayjs: any;\r\n\r\n@Component({\r\n selector: \"form-date\",\r\n templateUrl: \"form-date.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [DatePickerModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormDateComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormDateComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n /**\r\n * Indica il formato da utilizzare sia in Input che in Output\r\n * \r\n * 1. Se date vengono utilizzate le Date di Javascript\r\n * \r\n * 2. Se timestring vengono utilizzate stringhe del tipo '00:00:00'\r\n * \r\n * 3. Se dayjs viene utilizzato, appunto, dayjs\r\n */\r\n @Input() InOutFormat: 'date' | 'timestring' | 'dayjs' = 'timestring';\r\n\r\n /** Nel caso dei componenti data il Placeholder è il formato, mentre la label floattante, se esistente, dev'essere specificata */\r\n @Input() FloatingLabel: boolean = false;\r\n\r\n protected datesExts: DateService;\r\n\r\n protected mode: 'date' | 'datetime' | 'time' | 'month' | 'year' | 'daterange';\r\n\r\n public view: WritableSignal<'month' | 'year' | 'date'> = signal('date');\r\n public dateFormat: WritableSignal<string | undefined> = signal(undefined);\r\n public showTime: WritableSignal<boolean | undefined> = signal(undefined);\r\n public hourFormat: WritableSignal<number | undefined> = signal(undefined);\r\n public timeOnly: WritableSignal<boolean | undefined> = signal(undefined);\r\n public showButtonBar: WritableSignal<boolean | undefined> = signal(undefined);\r\n public selectionMode: WritableSignal<'single' | 'multiple' | 'range' | undefined> = signal(undefined);\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n this.setInputMode();\r\n this.adjustInputModeVisuals();\r\n\r\n this.datesExts = this.inj.get(DateService);\r\n this.shouldReemitAdjustedInput = true;\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<DatePicker>(<any>this.innerElement)).el;\r\n }\r\n\r\n protected setInputMode() {\r\n this.mode = \"date\";\r\n }\r\n\r\n protected override async getEvaluatedModel(value: any): Promise<string> {\r\n let pieces = [];\r\n let formatted = this.datesExts.getFormatted(value, ![\"datetime\", \"time\"].includes(this.mode), false);\r\n\r\n switch (this.mode) {\r\n case \"date\":\r\n return formatted || \"\";\r\n case \"daterange\":\r\n\r\n break;\r\n case \"datetime\":\r\n return formatted || \"\";\r\n case \"time\":\r\n return formatted?.split(' ')?.[1] || \"\";\r\n case \"month\":\r\n pieces = formatted?.split('/');\r\n return formatted ? `${pieces[1]}/${pieces[2]}` : \"\";\r\n case \"year\":\r\n pieces = formatted?.split('/');\r\n return formatted ? `${pieces[2]}` : \"\";\r\n }\r\n }\r\n\r\n protected override async getValueOut(value: any) {\r\n let convertion = this.datesExts.getDateConvertion(value, false, this.InOutFormat, ![\"datetime\", \"time\"].includes(this.mode))\r\n\r\n switch (this.mode) {\r\n case \"date\":\r\n return convertion;\r\n case \"daterange\":\r\n\r\n break;\r\n case \"datetime\":\r\n return convertion;\r\n case \"time\":\r\n return convertion;\r\n case \"month\":\r\n\r\n break;\r\n case \"year\":\r\n\r\n break;\r\n }\r\n }\r\n\r\n protected override async getValueIn(obj: any) {\r\n if (!obj) return null;\r\n\r\n switch (this.mode) {\r\n case \"date\":\r\n return this.datesExts.getDateConvertion(obj, false, 'date');\r\n case \"daterange\":\r\n\r\n break;\r\n case \"datetime\":\r\n return this.datesExts.getDateConvertion(obj, false, 'date');\r\n case \"time\":\r\n if (this.InOutFormat == \"timestring\") {\r\n const [hours, minutes, seconds] = obj.split(\":\");\r\n obj = dayjs().hour(parseInt(hours ?? 0)).minute(parseInt(minutes ?? 0)).second(parseInt(seconds ?? 0));\r\n }\r\n\r\n return this.datesExts.getDateConvertion(obj, false, 'date');\r\n case \"month\":\r\n\r\n break;\r\n case \"year\":\r\n\r\n break;\r\n }\r\n }\r\n\r\n private adjustInputModeVisuals() {\r\n switch (this.mode) {\r\n case \"date\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"DD/MM/YYYY\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(\"dd/mm/yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"daterange\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"DD/MM/YYYY\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(\"dd/mm/yy\");\r\n this.selectionMode.set(\"range\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"datetime\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"DD/MM/YYYY HH:mm:ss\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(\"dd/mm/yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(true);\r\n this.hourFormat.set(24);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"time\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"HH:mm\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(undefined);\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(24);\r\n this.timeOnly.set(true);\r\n this.showButtonBar.set(false);\r\n break;\r\n case \"month\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"MM/YYYY\";\r\n this.view.set(\"month\");\r\n this.dateFormat.set(\"mm/yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"year\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"YYYY\";\r\n this.view.set(\"year\");\r\n this.dateFormat.set(\"yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n }\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <p-datepicker\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [placeholder]=\"FloatingLabel ? '' : Placeholder\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [view]=\"view()\" \r\n [dateFormat]=\"dateFormat()\"\r\n [showTime]=\"showTime()\"\r\n [hourFormat]=\"hourFormat()\"\r\n [timeOnly]=\"timeOnly()\"\r\n [selectionMode]=\"selectionMode()\"\r\n [showIcon]=\"true\"\r\n [showButtonBar]=\"showButtonBar()\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonlyInput]=\"readonly\"\r\n [baseZIndex]=\"99999999\"\r\n inputId=\"buttondisplay\"\r\n optionLabel=\"description\"\r\n optionValue=\"id\"\r\n filterBy=\"description\"\r\n appendTo=\"body\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event);\" \r\n (click)=\"focused($event);\"\r\n (onBlur)=\"onTouched(); finalized()\"\r\n (onSelect)=\"onTouched(); finalized()\"\r\n />\r\n\r\n <label>{{FloatingLabel ? Placeholder : null}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { EsFormDateComponent } from \"../date/form-date.component\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-datetime\",\r\n templateUrl: \"../date/form-date.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [DatePickerModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormDateTimeComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormDateTimeComponent extends EsFormDateComponent {\r\n\r\n override setInputMode(): void {\r\n this.mode = \"datetime\";\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { EsFormDateComponent } from \"../date/form-date.component\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-time\",\r\n templateUrl: \"../date/form-date.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [DatePickerModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormTimeComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormTimeComponent extends EsFormDateComponent {\r\n\r\n override setInputMode(): void {\r\n this.mode = \"time\";\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ToggleSwitchModule } from 'primeng/toggleswitch';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-checkbox\",\r\n templateUrl: \"form-checkbox.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CheckboxModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent, ToggleSwitchModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormCheckboxComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormCheckboxComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() SliderMode: boolean = undefined;\r\n\r\n ngOnInit(){\r\n super.ngOnInit();\r\n\r\n if(this.SliderMode == undefined)\r\n this.SliderMode = false;\r\n }\r\n\r\n protected override async getValueIn(value: any) {\r\n return value ? (value === true || value.toLowerCase() == \"true\") : false;\r\n }\r\n\r\n protected override async getEvaluatedModel(value: any): Promise<string> {\r\n return this.lc.loc(value ? 'Sì' : 'No');\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n \r\n <p-checkbox *ngIf=\"SliderMode === false\"\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"value\"\r\n [binary]=\"true\"\r\n (ngModelChange)=\"changed($event); finalized()\" \r\n (click)=\"focused($event);\"\r\n />\r\n\r\n <p-toggleswitch *ngIf=\"SliderMode === true\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event); finalized()\" \r\n (click)=\"focused($event);\"\r\n />\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, numberAttribute, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-textarea\",\r\n templateUrl: \"form-textarea.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [TextareaModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormTextareaComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormTextareaComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input({ transform: numberAttribute }) rows: number | undefined = 2;\r\n @Input({ transform: numberAttribute }) minlength: number | undefined;\r\n @Input({ transform: numberAttribute }) maxlength: number | undefined;\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <textarea\r\n pTextarea \r\n pSize=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n autocomplete=\"off\"\r\n style=\"width: 100%;\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readOnly]=\"readonly\"\r\n [rows]=\"rows\"\r\n [minlength]=\"minlength\" \r\n [maxlength]=\"maxlength\" \r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (blur)=\"onTouched(); finalized()\"\r\n ></textarea>\r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n/**\r\n * Componente placeholder per la creazione dei form che rappresenta un blocchetto di erorre, \r\n * al posto del quale possono poi comparire dei componenti form senza incasinare la grafica\r\n */\r\n@Component({\r\n selector: \"form-error\",\r\n templateUrl: \"form-error.component.html\",\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class EsFormErrorComponent {\r\n\r\n /** col-md-X per la label (Che in questoc aso è vuota) */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input (che in questo caso contiene il messaggio d'errore proiettato nell'HTML) */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */\r\n @Input() Last: boolean = false;\r\n\r\n /** Classe extra per il form-group in cui viene wrappato l'input */\r\n @Input() FormGroupClass: string = \"\";\r\n\r\n /** Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n}","<div class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"app-hidden-view col-md-{{LabelColWidth}} m-t-5\"></label>\r\n <span class=\"help-block text-danger col-md-{{InputColWidth}}\">\r\n <ng-content></ng-content>\r\n </span>\r\n <div class=\"clearfix\"></div>\r\n</div>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef } from \"@angular/core\";\r\n\r\n// Lib\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n/**\r\n * Componente da utilizzare quando l'implementazione dell'input non è disponibile nella libreria, \r\n * fornisce la struttura standard di un form-component ma l'input vero e proprio viene proiettato dall'esterno\r\n */\r\n@Component({\r\n selector: \"form-template\",\r\n templateUrl: \"form-template.component.html\",\r\n imports: [CommonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class EsFormTemplateComponent {\r\n\r\n /** Indica se l'input è obbligatorio o no */\r\n @Input() required: boolean = false;\r\n\r\n /** Mostra un testo a sinistra dell'input, **FormLayout** permettendo */\r\n @Input() Label: string = \"\";\r\n\r\n /** Eventuali classi extra da applicare alla Label, di default c'è solo un leggero margin top */\r\n @Input() LabelClass: string = \"m-t-5\";\r\n\r\n /** Utilizza o meno il Layout di un form (Label con input di fianco), se false mostra solo l'input */\r\n @Input() FormLayout: boolean = true;\r\n\r\n /** col-md-X per la label */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */\r\n @Input() Last: boolean = false;\r\n\r\n /** Classe extra per il form-group in cui viene wrappato l'input */\r\n @Input() FormGroupClass: string = \"\";\r\n\r\n /** Indica che la parte input del controllo dev'essere una label readonly e la parte label di titolo dev'essere in bold. Per utilizzare un solo componente sia per la modifica che per il dettaglio */\r\n @Input() DisplayMode: boolean = false;\r\n\r\n /** Template per visualizzare la modalità **DisplayMode** come vuole il programmatore frocio di turno */\r\n @Input() DisplayModeTemplate: TemplateRef<any>;\r\n\r\n /** Layout del Form quando è in modalità Display. Di default mantiene la formattazione a form */\r\n @Input() DisplayLayout: 'form' | 'inline' | 'hidden' = 'form';\r\n\r\n /** Indica la condizione per cui un elemento in Modalità Display può essere visibile in base a ulteriori controlli */\r\n @Input() DisplayCondition: boolean = true;\r\n\r\n /** Separatore da mettere in automatico fra un elemento Form e l'altro quando sono in **DisplayMode** con **DisplayLayout** inline */\r\n @Input() InlineSeparator: string = ' ';\r\n\r\n /** Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<!-- Singola proiezione -->\r\n<ng-template #controlTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n/**\r\n * Componente placeholder per la creazione dei form che rappresenta un blocchetto di informazioni, \r\n * al posto del quale possono poi comparire dei componenti form senza incasinare la grafica\r\n */\r\n@Component({\r\n selector: \"form-info\",\r\n templateUrl: \"form-info.component.html\",\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class EsFormInfoComponent {\r\n /** col-md-X per la label (Che in questoc aso è vuota) */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input (che in questo caso contiene il messaggio d'errore proiettato nell'HTML) */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */\r\n @Input() Last: boolean = false;\r\n\r\n /** Classe extra per il form-group in cui viene wrappato l'input */\r\n @Input() FormGroupClass: string = \"\";\r\n\r\n /** Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n}","<div class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"app-hidden-view col-md-{{LabelColWidth}} m-t-5\"></label>\r\n <span class=\"help-block col-md-{{InputColWidth}}\">\r\n <ng-content></ng-content>\r\n </span>\r\n <div class=\"clearfix\"></div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Injector, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Esfaenza\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\n\r\n// Prime NG\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n// Models\r\nimport { AppFile } from \"../../models/AppFile\";\r\n\r\n@Component({\r\n selector: \"form-file\",\r\n templateUrl: \"form-file.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\", \"./form-file.component.css\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [TextareaModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent, LocalizationModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormFileComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => EsFormFileComponent), multi: true }\r\n ],\r\n standalone: true\r\n})\r\nexport class EsFormFileComponent extends BaseFormControl implements ControlValueAccessor, Validator {\r\n\r\n /** Permette di caricare file multipli */\r\n @Input() Multiple: boolean = false;\r\n\r\n /** Permette di scaricare l'eventuale file selezionato */\r\n @Input() AllowDownload: boolean = true;\r\n\r\n /** Controllo sulla dimensione di ogni singolo file in Byte. 0 -> nessun limite */\r\n @Input() MaxSize: number = 0;\r\n\r\n /** Sportivo */\r\n @Input() FancyMode: boolean = undefined;\r\n\r\n /** Legge sempre il contenuto del file e ne estrapola il base64 */\r\n @Input() ReadFile: boolean = false;\r\n \r\n /** @ignore Costruttore */\r\n constructor(inj: Injector) {\r\n super(inj);\r\n //Per questo componente non posso permettermi che il modello sia nullo\r\n this.value = new AppFile();\r\n\r\n this.shouldReemitAdjustedInput = true;\r\n }\r\n\r\n ngOnInit(){\r\n super.ngOnInit();\r\n \r\n if(this.FancyMode === undefined)\r\n this.FancyMode = false;\r\n }\r\n\r\n validate(_: AbstractControl): ValidationErrors {\r\n if (this.required && this.isEmptyValue(this.value))\r\n return { required: true }\r\n else return null;\r\n }\r\n\r\n protected override isEmptyValue(value: AppFile): boolean {\r\n return !value.filename || !value;\r\n }\r\n\r\n protected override async getValueIn(value: any) {\r\n return value == null ? new AppFile() : value;\r\n }\r\n\r\n protected override async getValueOut(value: any) {\r\n return value == null ? new AppFile() : value;\r\n }\r\n\r\n protected override async getEvaluatedModel(valueAfterInTransform: AppFile): Promise<string> {\r\n return valueAfterInTransform.filename;\r\n }\r\n\r\n /**\r\n * Helper per gestire la modifica del file attualmente bindato\r\n * \r\n * @param {boolean} clear Indica se bisogna svuotare l'input o meno \r\n */\r\n async fileChange(clear: boolean = false) {\r\n let files: File[] = [];\r\n let model = (<AppFile>this.value);\r\n let ne: HTMLInputElement = this.innerElement.nativeElement;\r\n\r\n if (clear) {\r\n model.filename = ne.value = model.fileb64 = \"\";\r\n model.nativefiles = [];\r\n }\r\n else {\r\n for (let i = 0; i < ne.files.length; i++) {\r\n let file = ne.files.item(i);\r\n if (this.MaxSize > 0 && file.size > this.MaxSize) {\r\n this.msgs.simpleError(`Il file ${file.name} eccede la dimensione massima ${this.MaxSize} B`)\r\n this.fileChange(true);\r\n return;\r\n }\r\n files.push(file);\r\n }\r\n\r\n model.fileb64 = null;\r\n\r\n // Modalità Upload Singolo File\r\n if (ne.files.length == 1) {\r\n let fileUploaded = ne.files[0];\r\n model.filename = fileUploaded.name;\r\n if (this.ReadFile)\r\n model.fileb64 = await this.loadFileB64(fileUploaded);\r\n }\r\n // Modalità Upload Multiple File\r\n else if (ne.files.length > 1)\r\n model.filename = ne.files.length + \" \" + this.lc.loc(\"File Selezionati\");\r\n\r\n model.nativefiles = files;\r\n }\r\n\r\n this.changed(model);\r\n }\r\n\r\n private loadFileB64(fileUploaded): Promise<string> {\r\n return new Promise<string>((res, _) => {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(fileUploaded);\r\n reader.onload = () => {\r\n let fileSource = reader.result.toString();\r\n let fileSourceSegments = fileSource.split(',');\r\n\r\n res(fileSourceSegments[fileSourceSegments.length - 1]);\r\n };\r\n });\r\n }\r\n\r\n /** Permette di scaricare l'eventuale file selezionato */\r\n onDownloadFile() {\r\n let model = (<AppFile>this.value);\r\n this.utiExts.saveFile(model.fileb64, model.filename);\r\n }\r\n\r\n // FancyMode - Drag Over\r\n onFileDragOver(event: DragEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n // FancyMode - File Dropped\r\n onFileDropped(event: DragEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.innerElement.nativeElement.files = event.dataTransfer?.files;\r\n this.fileChange();\r\n }\r\n}","<input-skeleton *ngIf=\"FancyMode === false\" [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <div class=\"input-group file-upload\" style=\"padding: 0 !important;\">\r\n <input type=\"file\" (change)=\"fileChange()\" id=\"{{InternalName}}\" #innerElement class=\"file-upload-btn app-pointer\" style=\"height: 46px;\" [multiple]=\"Multiple ? true : null\" />\r\n <input type=\"text\" \r\n [class.frm-padding-left-22]=\"AllowDownload && value.filename && value.fileb64\" \r\n class=\"form-control checking-field\" \r\n style=\"border-top-left-radius: 5px; border-bottom-left-radius: 5px; height: 46px;\"\r\n [style.padding-left.px]=\"AllowDownload && value.filename && value.fileb64 ? 40 : 12\"\r\n placeholder=\"{{Placeholder || ('Seleziona un File' | localize : lc)}}...\" \r\n [(ngModel)]=\"value.filename\" name=\"dsfile_{{InternalName}}\" \r\n #innerInput=\"ngModel\" />\r\n \r\n <a class=\"fa fa-download app-pointer app-input-icon\" style=\"padding-left: 10px; padding-top: 5px; color: #666; z-index: 9999;\" *ngIf=\"AllowDownload && value.filename && value.fileb64\" (click)=\"onDownloadFile()\"></a>\r\n <i class=\"fa fa-times delete-file\" style=\"margin-right: 15px; margin-top: 7px; color: #666;\" (click)=\"fileChange(true)\" *ngIf=\"value.filename\"></i>\r\n \r\n <span class=\"input-group-btn\">\r\n <button class=\"btn btn-primary btn-file-upload\" style=\"height: 46px;\r\n border-top-right-radius: 5px;\r\n border-bottom-right-radius: 5px;\r\n background: var(--p-surface-50) !important;\r\n border: 1px solid var(--p-surface-300) !important;\r\n color: #777;\" type=\"button\"><i class=\"fa fa-upload\"></i></button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Fancy Mode-->\r\n<div *ngIf=\"FancyMode === true\" (drop)=\"onFileDropped($event)\" (dragover)=\"onFileDragOver($event)\">\r\n <!--Drop-->\r\n <label for=\"{{InternalName}}\" class=\"drop-container\">\r\n <span class=\"drop-title\">{{Label}}</span>\r\n <div class=\"file-name-container\">{{value.filename || 'Nessun file selezionato'}}</div>\r\n <!--Hidden Forms-->\r\n <input hidden type=\"file\" (change)=\"fileChange()\" id=\"{{InternalName}}\" #innerElement class=\"file-upload-btn app-pointer\" [multiple]=\"Multiple ? true : null\" />\r\n <input hidden type=\"text\" [class.frm-padding-left-22]=\"AllowDownload && value.filename && value.fileb64\" class=\"form-control checking-field\" \r\n placeholder=\"{{Placeholder || ('Seleziona un File' | localize : lc)}}...\" [(ngModel)]=\"value.filename\" name=\"dsfile_{{InternalName}}\" #innerInput=\"ngModel\" />\r\n <!--Clean-->\r\n <i class=\"fa fa-times file-delete-btn\" (click)=\"fileChange(true); $event.stopPropagation(); false;\" *ngIf=\"value.filename\"></i>\r\n <!--Download-->\r\n <div *ngIf=\"AllowDownload && value.filename && value.fileb64\" class=\"app-pointer file-download-btn\" (click)=\"onDownloadFile(); $event.stopPropagation(); false;\">\r\n <span class=\"file-download-btn-text\">Download <i class=\"fa fa-download\"></i></span>\r\n </div>\r\n </label>\r\n</div>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { MultiSelect, MultiSelectModule } from 'primeng/multiselect';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-multiselect\",\r\n templateUrl: \"form-multiselect.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [MultiSelectModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormMultiselectComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormMultiselectComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() display: \"comma\" | \"chip\" = undefined;\r\n @Input() InOutFormat: 'KeyValues' | 'CommaSeparatedList' | 'JsonList' | 'List' = 'List';\r\n\r\n /** Nel caso dei componenti data il Placeholder è il formato, mentre la label floattante, se esistente, dev'essere specificata */\r\n @Input() FloatingLabel: boolean = true;\r\n\r\n @Input() MaxShownElements: number = 20;\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n if (this.display === undefined)\r\n this.setDisplayMode();\r\n }\r\n\r\n protected setDisplayMode() {\r\n this.display = \"comma\";\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<MultiSelect>(<any>this.innerElement)).el;\r\n\r\n if (!this.Placeholder && this.required)\r\n this.Placeholder = \"Seleziona uno o più valori...\";\r\n }\r\n\r\n protected override async getValueIn(value: any): Promise<any> {\r\n if(!value) return [];\r\n\r\n var ids = null;\r\n switch (this.InOutFormat) {\r\n case \"CommaSeparatedList\":\r\n if (typeof value === 'string' || value instanceof String)\r\n ids = (value as string).split(',')\r\n break;\r\n case \"JsonList\":\r\n if (typeof value === 'string' || value instanceof String)\r\n ids = JSON.parse(value as string);\r\n break;\r\n case \"List\":\r\n ids = value.map(t => t.toString());\r\n break;\r\n case \"KeyValues\":\r\n ids = value.map(t => t.id.toString());\r\n break;\r\n }\r\n\r\n return ids;\r\n }\r\n\r\n protected override async getValueOut(value: string[]): Promise<any> {\r\n if(!value) return [];\r\n\r\n switch (this.InOutFormat) {\r\n case \"CommaSeparatedList\":\r\n return value.join(',');\r\n case \"JsonList\":\r\n return JSON.stringify(value)\r\n case \"KeyValues\":\r\n return value.map(t => { return { id: t, description: this.BoundSourceCache[t].description } });\r\n case \"List\":\r\n return value.map(t => t); // Per staccare i riferimenti\r\n }\r\n }\r\n\r\n protected override async getEvaluatedModel(value: { id: string, description: string }[]): Promise<string> {\r\n if (!value) return \"\";\r\n\r\n return this.EvaluatedModel = value.map(t => t.description).join(', ');\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <p-multiselect \r\n style=\"width: 100%\"\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [filter]=\"true\" \r\n filterBy=\"description\"\r\n [showClear]=\"true\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [maxSelectedLabels]=\"MaxShownElements\"\r\n [display]=\"display\"\r\n [options]=\"BoundSource()\"\r\n [placeholder]=\"FloatingLabel ? '' : Placeholder\"\r\n optionLabel=\"description\"\r\n optionValue=\"id\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (onBlur)=\"onTouched(); finalized()\"\r\n />\r\n\r\n <label>{{FloatingLabel ? Placeholder : null}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, input, Input, signal, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { AutoCompleteModule, AutoComplete, AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\";\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\nimport { forkJoin, Observable, firstValueFrom } from \"rxjs\";\r\n\r\n/*\r\n * N.B: C'è un bug per cui passando un array insieme a optionValue genera chips vuote: https://github.com/primefaces/primeng/pull/18044\r\n * Quindi internamente il valore è sempre un oggetto o una lista di oggetti. \r\n * In ingresso faccio ricerche per id per valorizzare le suggestions iniziali, \r\n * mentre in uscita seleziono gli id per tenere il comportamento coerente alla versione precedente della libreria\r\n */\r\n@Component({\r\n selector: \"form-autocomplete\",\r\n templateUrl: \"form-autocomplete.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [AutoCompleteModule, AutoComplete, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormAutocompleteComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormAutocompleteComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n private _baseSource: any[] = null;\r\n private _availableSource: boolean;\r\n\r\n /** Numero minimo di caratteri per far partire la ricerca */\r\n public MinChars = input(3);\r\n\r\n /** Contesto per la funzione di ricerca */\r\n @Input() SearchFunctionContext: any;\r\n\r\n @Input() SearchFunction: (search: string, byid: boolean, context?: any) => Observable<{ id: string, description: string }[]> = null;\r\n\r\n /** Indica se usare la modalità multiselezione o no */\r\n @Input({ transform: booleanAttribute }) multiple: boolean | undefined;\r\n\r\n @Input({ transform: booleanAttribute }) forceSelection: boolean | undefined;\r\n\r\n public style = signal({ \"width\": \"100%\" })\r\n public typeahead = signal(true);\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n // Se c'è una Source riempio un DB temporaneo coi valori. Le ricerche si baseranno su di lui\r\n this._baseSource = !!this.Source ? [...this.Source] : [];\r\n this.Source = [];\r\n\r\n // Il typeahead dev'essere fatto quando o c'è una source (filtro in memoria) o c'è una SearchFunction (filtro Code behind)\r\n // Lo metto anche se è un input singolo per generare gli eventi di change quando si scrive dato che input singolo, senza source, e senza forceselection\r\n // tira fuori un autocomplete in cui è impossibile scriverci qualcosa dentro\r\n this._availableSource = (this._baseSource?.length || 0) > 0 || !!this.SearchFunction;\r\n this.typeahead.set(this._availableSource);\r\n\r\n // La source potrebbe arrivare dopo....\r\n \r\n // if (!this._availableSource && !this.forceSelection && !this.multiple)\r\n // throw `Per il controllo ${this.name} non esiste una sorgente dati, la selezione di un valore non è obbligatoria, e non è un selettore multiplo stile chips. Fatti un esame di coscienza e cerca di capire che non è un autocomplete.`\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<AutoComplete>(<any>this.innerElement)).el;\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent) {\r\n\r\n if (this.SearchFunction) {\r\n this.SearchFunction(event.query, false, this.SearchFunctionContext).subscribe(t => {\r\n // la source è ottimizzata. Se fra una chiamata e l'altra non cambiano i valori non effettua refresh, ma questo vuol dire che se aggiungendo un carattere\r\n // i risultati sono gli stessi della chiamata precedente si inchioda, perché fa partire una chiamata che secondo la lib è inconcludente.\r\n // In realtà è concludente, solo che la lib non se ne accorge. In questo modo mi assicuro che si svegli\r\n this.Source = [];\r\n requestAnimationFrame(() => { this.Source = t; });\r\n });\r\n return;\r\n }\r\n\r\n this.Source = [];\r\n\r\n if ((this._baseSource?.length || 0) === 0)\r\n return;\r\n\r\n requestAnimationFrame(() => {\r\n let query = event.query.toLocaleLowerCase();\r\n this.Source = this._baseSource.filter(t => t.description.toLocaleLowerCase().includes(query));\r\n });\r\n }\r\n\r\n async changed(event){\r\n\r\n // Se c'è il typeahead, l'evento di change aggiunge correttamente l'oggetto dalla source in formato { id, description }\r\n if (this.typeahead() && this._availableSource) {\r\n super.changed(event);\r\n return;\r\n }\r\n\r\n // Senza typeahead invece emette delle stringhe con il valore scritto. \r\n // L'ultimo valore aggiunto (in caso di inserimento multiplo), o il valore attuale (in caso di inseirmento singolo)\r\n // devono essere trasformati da una string al formato { id: event, description: event } \r\n if (this.multiple) {\r\n let arr = (<Array<any>>event);\r\n let lastElement = arr.slice(-1)[0];\r\n if (typeof lastElement === \"string\")\r\n arr[arr.length - 1] = { id: lastElement, description: lastElement }\r\n }\r\n else if (typeof event === \"string\") {\r\n event = { id: event, description: event }\r\n }\r\n\r\n super.changed(event);\r\n }\r\n\r\n protected override async getValueOut(value: string | { id: string, description: string } | string[] | { id: string, description: string }[]) {\r\n if (typeof value === \"string\")\r\n return value;\r\n\r\n return Array.isArray(value) ? value.map((t: string | { id: string, description: string }) => typeof t === \"string\" ? t : t.id) : typeof value === \"string\" ? value : value.id;\r\n }\r\n\r\n protected override async getValueIn(value: string | string[]) {\r\n let vals = Array.isArray(value) ? value : [value];\r\n\r\n if (!value || (vals?.length || 0) == 0)\r\n return null;\r\n\r\n if (this.SearchFunction) {\r\n // Su nuovo valore ricarcio la source come unione di tutte le ricerche di tutti gli item presi per id\r\n let res = await firstValueFrom(forkJoin(vals.map(v => this.SearchFunction(v, true, this.SearchFunctionContext))));\r\n\r\n // Chiamo il flat 2 volte per tenere i riferimenti separati. Non ne voglio sapere niente.\r\n this.Source = res.flat();\r\n return this.multiple ? res.flat() : res.flat()[0];\r\n }\r\n\r\n if ((this._baseSource?.length || 0) === 0)\r\n return this.multiple ? vals.map(t => { return { id: t, description: t } }) : { id: vals[0], description: vals[0] };\r\n\r\n let items = this._baseSource.filter(t => vals.map(v => v.toString()).includes(t.id));\r\n return this.multiple ? items : items[0];\r\n }\r\n\r\n protected override async getEvaluatedModel(value: string | string[]): Promise<string> {\r\n return Array.isArray(value) ? value.map(id => this.BoundSourceCache[id]?.description ?? id).join(',') : this.BoundSourceCache[value]?.description ?? value;\r\n }\r\n}","<!-- Riga di debug -->\r\n<!-- <div><strong>Valore interno:</strong> {{value | json}}</div> -->\r\n\r\n<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <p-autocomplete \r\n size=\"small\" \r\n autocomplete=\"off\"\r\n #innerInput=\"ngModel\" \r\n #innerElement \r\n [style]=\"style()\"\r\n [attr.name]=\"InternalName\" \r\n [attr.id]=\"InternalName\" \r\n [multiple]=\"multiple\"\r\n [fluid]=\"multiple\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [suggestions]=\"BoundSource()\"\r\n [forceSelection]=\"forceSelection\"\r\n [typeahead]=\"typeahead()\"\r\n [virtualScroll]=\"true\"\r\n [virtualScrollItemSize]=\"44\"\r\n optionLabel=\"description\"\r\n (completeMethod)=\"search($event)\"\r\n [minLength]=\"MinChars()\"\r\n [ngModel]=\"value\" \r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (blur)=\"onTouched(); finalized()\">\r\n </p-autocomplete>\r\n\r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","import { TemplateRef } from \"@angular/core\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\nexport class BaseFormConfiguration {\r\n DisplayCondition: boolean = true;\r\n DisplayMode: boolean = false;\r\n DisplayLayout: 'form' | 'inline' | 'hidden' = 'form';\r\n FormLayout: boolean = true;\r\n DisplayModeTemplate: TemplateRef<any> = null;\r\n Label: string = null;\r\n Last: boolean = false;\r\n FormGroupClass: string = null;\r\n Placeholder: string = null;\r\n LabelInputRatio: string = null;\r\n name: string = null;\r\n readonly: boolean | undefined = undefined;\r\n disabled: boolean | undefined = undefined;\r\n Validation: boolean = true;\r\n SetValidationSubject: Subject<{ fieldName: string, error: string }> = null;\r\n required: boolean | '' | undefined = undefined;\r\n Display: string = '{description}';\r\n IdField: string = \"id\";\r\n Source: any[] = null;\r\n statusChangesObservable: Observable<any> = null;\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { InputNumberModule, InputNumber } from 'primeng/inputnumber';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-currency\",\r\n templateUrl: \"form-currency.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [InputNumberModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormCurrencyComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormCurrencyComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() mode: 'currency' | 'decimal' = 'decimal';\r\n \r\n @Input() Precision: number = 2;\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<InputNumber>(<any>this.innerElement)).el;\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n\r\n <p-inputnumber \r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n autocomplete=\"off\"\r\n style=\"width: 100%;\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [pattern]=\"pattern\"\r\n [minFractionDigits]=\"Precision\"\r\n [maxFractionDigits]=\"Precision\"\r\n [mode]=\"mode\"\r\n [currency]=\"mode === 'currency' ? 'EUR' : undefined\"\r\n locale=\"it-IT\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (onBlur)=\"onTouched(); finalized()\"\r\n />\r\n\r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, ContentChild, forwardRef, Injector, Input, signal, ViewEncapsulation, WritableSignal } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\";\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\r\n\r\n// RxJs\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { EsFormDateComponent } from \"../date/form-date.component\";\r\nimport { EsFormInputComponent } from \"../input/form-input.component\";\r\nimport { BaseFormConfiguration } from \"../../models/BaseFormConfiguration\";\r\nimport { EsFormCheckboxComponent } from \"../checkbox/form-checkbox.component\";\r\nimport { EsFormSelectComponent } from \"../select/form-select.component\";\r\nimport { EsFormAutocompleteComponent } from \"../autocomplete/form-autocomplete.component\";\r\nimport { EsFormDateTimeComponent } from \"../datetime/form-datetime.component\";\r\nimport { EsFormTimeComponent } from \"../time/form-time.component\";\r\nimport { EsFormFileComponent } from \"../file/form-file.component\";\r\nimport { EsFormCurrencyComponent } from \"../currency/form-currency.component\";\r\n\r\n/*\r\nQuirk di questo componente:\r\n\r\n1: Se viene utilizzato lo stesso name per il <form-adaptive esterno e il <form-roba interno, angular mergia tutto in un unico ngControl, ma gli eventi sono sul riferimento originale (form-adaptive, non form-roba).\r\nPer poter collegare l'observable di cambio di stato per i tooltip (che devono essere collegati al form-roba), recupero al volo l'observable e lo riassegno internamente a **statusChangesObservable**. \r\nÈ un Input assolutamente da non utilizzare lato programmatore.\r\n\r\n^ PORCATA. abbastanza hackerosa, però estremamente funzionale\r\n\r\n2: con **performFormLogic** a false, mi assicuro di tenere l'implementazione standard del ControlValueAccessor mentre faccio gestire tutto il resto al componente interno.\r\nEsFormAdaptiveComponent deve SOLO fare da passacarte (TRANNE PER LE CASISTICHE FLOAT... VEDI SOTTO)\r\n\r\n*/\r\n@Component({\r\n selector: \"form-adaptive\",\r\n templateUrl: \"form-adaptive.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule,\r\n\r\n EsFormInputComponent,\r\n EsFormDateComponent,\r\n EsFormCheckboxComponent,\r\n EsFormSelectComponent,\r\n EsFormAutocompleteComponent,\r\n EsFormDateTimeComponent,\r\n EsFormTimeComponent,\r\n EsFormFileComponent,\r\n EsFormCurrencyComponent\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormAdaptiveComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => EsFormAdaptiveComponent), multi: true }\r\n ],\r\n standalone: true\r\n})\r\nexport class EsFormAdaptiveComponent extends BaseFormControl implements ControlValueAccessor, Validator {\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del suffisso */\r\n @ContentChild(\"suffix\", { static: false }) suffixAdaptive;\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del prefisso */\r\n @ContentChild(\"prefix\", { static: false }) prefixAdaptive;\r\n\r\n /** Tipologia che decide che componente mostrare */\r\n @Input() Type: 'string' | 'float' | 'date' | 'number' | 'int' | 'boolean' | 'enum' | 'autocomplete' | 'datetime' | 'time' | 'file' | 'currency';\r\n /** Messaggio per quando si binda un form-adaptive senza tipo */\r\n @Input() TypeMissingMessage: string;\r\n\r\n // Specifico autocomplete\r\n @Input() SearchFunction: (search: string, byid: boolean, context?: any) => Observable<{ id: string, description: string }[]> = null;\r\n\r\n // Specifico currency\r\n @Input() Precision: number = 2;\r\n\r\n @Input() TypePattern: string = \"\";\r\n \r\n public IntPattern = signal('^[0-9]\\\\d*$');\r\n public FloatPattern = signal('^([0-9]*[,])?[0-9]+$');\r\n public config: WritableSignal<BaseFormConfiguration> = signal(null);\r\n\r\n constructor(inj: Injector) { \r\n super(inj);\r\n this.performFormLogic = false;\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.handleFloatPatternSeparately();\r\n // TYPE PATTERN funziona solo con number e float\r\n }\r\n\r\n protected override async getValueIn(value: any): Promise<any> {\r\n if ((this.Type === \"float\" || this.Type === \"number\"))\r\n return value?.toString()?.replace?.(\".\", \",\");\r\n else\r\n return value;\r\n }\r\n\r\n protected override async getValueOut(value: any): Promise<any> {\r\n if ((this.Type === \"float\" || this.Type === \"number\")) {\r\n this.floatValuePreAdjustmente = value;\r\n return value?.replace?.(\".\", \"\")?.replace?.(\",\", \".\");\r\n }\r\n else\r\n return value;\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n let defaultConfig = new BaseFormConfiguration();\r\n let properties = Object.keys(defaultConfig);\r\n // Riempio la configurazione con tutte le proprietà definite in questa istanza. \r\n // Tutto per passarla al livello sotto\r\n for (let i = 0; i < properties.length; i++) {\r\n let p = properties[i];\r\n defaultConfig[p] = this[p];\r\n }\r\n this.config.set(defaultConfig);\r\n }\r\n\r\n /*\r\n ****************************************************************************************************************************\r\n ****************************************************************************************************************************\r\n ************************************* GESTIONE CUSTOM PER I NUMERI FLOATING POINT ****************************************\r\n ****************************************************************************************************************************\r\n ****************************************************************************************************************************\r\n */\r\n\r\n /*\r\n Per i numeri float, il valore che mostro è diverso dal valore sotto perché ci sono degli aggiustamenti di numeri, virgola e non.\r\n Il componente interno lavora con `value` che rappresenta il valore reale, number, mentre il componente esterno wrappa questo valore reale\r\n in una rappresentazione in stringa italiana per gli input. \r\n Dato che il valore da validare è quello esterno (scritto in italiano) lascio il componente interno senza pattern ed implemento il Validatore qui\r\n\r\n N.B: QUESTA IMPLEMENTAZIONE NON MI PIACE. BISOGNA CERCARE UNA VIA PIU BELLA QUANDO SI HA UN PO' DI TEMPO\r\n */\r\n\r\n /** Variabile interna che salva il valore degli input float prima dell'aggiustamento */\r\n private floatValuePreAdjustmente: string;\r\n\r\n registerOnValidatorChange?(_: () => void) { }\r\n \r\n handleFloatPatternSeparately() {\r\n if ((this.Type === \"float\" || this.Type === \"number\")) {\r\n this.pattern = this.TypePattern || this.FloatPattern();\r\n this.SetValidationSubject = this.SetValidationSubject || new Subject<{ fieldName: string, error: string }>();\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n var ret = [\"number\", \"float\"].includes(this.Type) ? this.customPatternValidator(this.pattern)(control) : null;\r\n this.SetValidationSubject?.next?.({ fieldName: this.name, error: ret?.pattern ? \"Formato input errato\" : \"\" });\r\n return ret;\r\n }\r\n\r\n /** Validatore originale angular, copiaincollato. Cambiata solo la riga dove c'è `this.floatValuePreAdjustmente` */\r\n customPatternValidator(pattern: string | RegExp): ValidatorFn {\r\n if (!pattern) return (_: AbstractControl) => null;\r\n let regex: RegExp;\r\n let regexStr: string;\r\n\r\n if (typeof pattern === 'string') {\r\n regexStr = '';\r\n if (pattern.charAt(0) !== '^') regexStr += '^';\r\n regexStr += pattern;\r\n if (pattern.charAt(pattern.length - 1) !== '$') regexStr += '$';\r\n regex = new RegExp(regexStr);\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!control.value) return null;\r\n\r\n // Caricamento avvenuto adesso da modello\r\n if(control.value && !this.floatValuePreAdjustmente)\r\n this.floatValuePreAdjustmente = control.value.toString().replace(\".\", \",\");\r\n\r\n return regex.test(this.floatValuePreAdjustmente) ? null : { 'pattern': { 'requiredPattern': regexStr, 'actualValue': this.floatValuePreAdjustmente } };\r\n };\r\n }\r\n}","<!-- Riga di debug -->\r\n<!-- <div><strong>Valore interno:</strong> {{value | json}}</div> -->\r\n\r\n@if(!Type){\r\n <div class=\"app-margin-top-5\"><em>{{TypeMissingMessage}}</em></div>\r\n}\r\n\r\n@if(config()){\r\n @switch(Type){\r\n @case (\"currency\") {\r\n <form-currency [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [Precision]=\"Precision\"></form-currency>\r\n }\r\n @case (\"date\") {\r\n <form-date [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-date>\r\n }\r\n @case (\"boolean\") {\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-checkbox>\r\n }\r\n @case (\"enum\") {\r\n <form-select [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [Source]=\"BoundSource()\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-select>\r\n }\r\n @case (\"autocomplete\") {\r\n <form-autocomplete [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [SearchFunction]=\"SearchFunction\"></form-autocomplete>\r\n }\r\n @case (\"datetime\") {\r\n <form-datetime [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-datetime>\r\n }\r\n @case (\"time\") {\r\n <form-time [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-time>\r\n }\r\n @case (\"file\") {\r\n <form-file [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-file>\r\n }\r\n @case (\"string\") {\r\n <form-input [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [pattern]=\"pattern ?? ''\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-input>\r\n }\r\n @case (\"int\") {\r\n <form-input [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [pattern]=\"pattern ?? IntPattern()\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-input>\r\n }\r\n @default {\r\n <!-- float e number -->\r\n <form-input [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-input>\r\n }\r\n }\r\n}","// Angular\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n// Es\r\nimport { BaseLocalization, LocalizationModule } from \"@esfaenza/localizations\";\r\n\r\n// Modelli\r\nimport { FRM_DEBUG_MODE } from './tokens';\r\nimport { EsFormsModuleConfig } from './models/EsFormsModuleConfig';\r\n\r\n// Componenti\r\nimport { EsFormInputComponent } from './forms/input/form-input.component';\r\nimport { EsFormSelectComponent } from './forms/select/form-select.component';\r\nimport { EsFormDateComponent } from './forms/date/form-date.component';\r\nimport { EsFormDateTimeComponent } from './forms/datetime/form-datetime.component';\r\nimport { EsFormTimeComponent } from './forms/time/form-time.component';\r\nimport { EsFormCheckboxComponent } from './forms/checkbox/form-checkbox.component';\r\nimport { EsFormTextareaComponent } from './forms/textarea/form-textarea.component';\r\nimport { EsFormErrorComponent } from './forms/error/form-error.component';\r\nimport { EsFormTemplateComponent } from './forms/template/form-template.component';\r\nimport { EsFormInfoComponent } from './forms/info/form-info.component';\r\nimport { EsFormFileComponent } from './forms/file/form-file.component';\r\nimport { EsFormMultiselectComponent } from './forms/multiselect/form-multiselect.component';\r\nimport { EsFormAutocompleteComponent } from './forms/autocomplete/form-autocomplete.component';\r\nimport { EsFormAdaptiveComponent } from './forms/adaptive/form-adaptive.component';\r\nimport { EsFormCurrencyComponent } from './forms/currency/form-currency.component';\r\n\r\n/** Componenti Standalone reesportati come se fossero moduli */\r\nconst STANDALONE_COMPONENTS = [\r\n EsFormInputComponent,\r\n EsFormSelectComponent,\r\n EsFormDateComponent,\r\n EsFormDateTimeComponent,\r\n EsFormTimeComponent,\r\n EsFormCheckboxComponent,\r\n EsFormTextareaComponent,\r\n EsFormInfoComponent,\r\n EsFormErrorComponent,\r\n EsFormTemplateComponent,\r\n EsFormFileComponent,\r\n EsFormMultiselectComponent,\r\n EsFormAutocompleteComponent,\r\n EsFormAdaptiveComponent,\r\n EsFormCurrencyComponent\r\n];\r\n\r\n/** Moduli utilizzati solo dalla libreria */\r\nconst MODULES = [\r\n CommonModule,\r\n FormsModule,\r\n LocalizationModule\r\n];\r\n\r\n@NgModule({\r\n imports: [...MODULES, ...STANDALONE_COMPONENTS],\r\n exports: [...STANDALONE_COMPONENTS]\r\n})\r\nexport class FormsAndValidationsModule {\r\n\r\n static forRoot(config?: EsFormsModuleConfig): ModuleWithProviders<FormsAndValidationsModule> {\r\n return {\r\n ngModule: FormsAndValidationsModule,\r\n providers: [\r\n { provide: FRM_DEBUG_MODE, useValue: config?.debugMode != null ? config?.debugMode : false }\r\n ]\r\n };\r\n }\r\n}","//models\r\nexport * from './lib/models/AppFile';\r\nexport * from './lib/models/ChangeEvent';\r\nexport * from './lib/models/EsFormsModuleConfig';\r\nexport * from './lib/tokens';\r\n\r\n //module\r\nexport * from './lib/forms.module';\r\n\r\n//forms\r\nexport * from './lib/forms/datetime/form-datetime.component';\r\nexport * from './lib/forms/adaptive/form-adaptive.component';\r\nexport * from './lib/forms/template/form-template.component';\r\nexport * from './lib/forms/error/form-error.component';\r\nexport * from './lib/forms/info/form-info.component';\r\nexport * from './lib/forms/checkbox/form-checkbox.component';\r\nexport * from './lib/forms/date/form-date.component';\r\nexport * from './lib/forms/input/form-input.component';\r\nexport * from './lib/forms/select/form-select.component';\r\nexport * from './lib/forms/textarea/form-textarea.component';\r\nexport * from './lib/forms/autocomplete/form-autocomplete.component';\r\nexport * from './lib/forms/file/form-file.component';\r\nexport * from './lib/forms/time/form-time.component';\r\nexport * from './lib/forms/multiselect/form-multiselect.component';\r\nexport * from './lib/forms/base/base-form-control';\r\nexport * from './lib/forms/currency/form-currency.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i5","i3","i2","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-forms-and-validations.mjs","sources":["../../../projects/forms-and-validations/src/lib/models/AppFile.ts","../../../projects/forms-and-validations/src/lib/models/ChangeEvent.ts","../../../projects/forms-and-validations/src/lib/models/EsFormsModuleConfig.ts","../../../projects/forms-and-validations/src/lib/tokens.ts","../../../projects/forms-and-validations/src/lib/services/helper.ts","../../../projects/forms-and-validations/src/lib/forms/base/base-form-control.ts","../../../projects/forms-and-validations/src/lib/forms/base/skeleton/input-skeleton.component.ts","../../../projects/forms-and-validations/src/lib/forms/base/skeleton/input-skeleton.component.html","../../../projects/forms-and-validations/src/lib/forms/input/form-input.component.ts","../../../projects/forms-and-validations/src/lib/forms/input/form-input.component.html","../../../projects/forms-and-validations/src/lib/forms/select/form-select.component.ts","../../../projects/forms-and-validations/src/lib/forms/select/form-select.component.html","../../../projects/forms-and-validations/src/lib/forms/date/form-date.component.ts","../../../projects/forms-and-validations/src/lib/forms/date/form-date.component.html","../../../projects/forms-and-validations/src/lib/forms/datetime/form-datetime.component.ts","../../../projects/forms-and-validations/src/lib/forms/time/form-time.component.ts","../../../projects/forms-and-validations/src/lib/forms/checkbox/form-checkbox.component.ts","../../../projects/forms-and-validations/src/lib/forms/checkbox/form-checkbox.component.html","../../../projects/forms-and-validations/src/lib/forms/textarea/form-textarea.component.ts","../../../projects/forms-and-validations/src/lib/forms/textarea/form-textarea.component.html","../../../projects/forms-and-validations/src/lib/forms/error/form-error.component.ts","../../../projects/forms-and-validations/src/lib/forms/error/form-error.component.html","../../../projects/forms-and-validations/src/lib/forms/template/form-template.component.ts","../../../projects/forms-and-validations/src/lib/forms/template/form-template.component.html","../../../projects/forms-and-validations/src/lib/forms/info/form-info.component.ts","../../../projects/forms-and-validations/src/lib/forms/info/form-info.component.html","../../../projects/forms-and-validations/src/lib/forms/file/form-file.component.ts","../../../projects/forms-and-validations/src/lib/forms/file/form-file.component.html","../../../projects/forms-and-validations/src/lib/forms/multiselect/form-multiselect.component.ts","../../../projects/forms-and-validations/src/lib/forms/multiselect/form-multiselect.component.html","../../../projects/forms-and-validations/src/lib/forms/autocomplete/form-autocomplete.component.ts","../../../projects/forms-and-validations/src/lib/forms/autocomplete/form-autocomplete.component.html","../../../projects/forms-and-validations/src/lib/models/BaseFormConfiguration.ts","../../../projects/forms-and-validations/src/lib/forms/currency/form-currency.component.ts","../../../projects/forms-and-validations/src/lib/forms/currency/form-currency.component.html","../../../projects/forms-and-validations/src/lib/forms/adaptive/form-adaptive.component.ts","../../../projects/forms-and-validations/src/lib/forms/adaptive/form-adaptive.component.html","../../../projects/forms-and-validations/src/lib/forms.module.ts","../../../projects/forms-and-validations/src/public-api.ts","../../../projects/forms-and-validations/src/esfaenza-forms-and-validations.ts"],"sourcesContent":["\r\n/** Classe che identifica un file */\r\nexport class AppFile {\r\n\r\n /** @ignore */\r\n constructor(){\r\n this.filename = \"\";\r\n this.fileb64 = \"\";\r\n this.nativefiles = [];\r\n }\r\n\r\n /** Nome del file, Viene letto in Input e valorizzato in Output */\r\n public filename: string; //I-O\r\n /** B64 del file, Viene letto in Input ma non valorizzato in Output (non puà leggere dal filesystem) */\r\n public fileb64: string; //I\r\n /** Lista di file nativi collegati a questo input. Viene solo valorizzato in Output. Non è letto come Input */\r\n public nativefiles: File[]; //O\r\n}","\r\nexport class ChangeEvent {\r\n constructor(public internal: boolean, public value: any) { }\r\n}","/**\r\n * Classe di configurazione del modulo\r\n */\r\nexport class EsFormsModuleConfig {\r\n\r\n\r\n /** Abilita o meno la modalità di debug */\r\n debugMode?: boolean;\r\n\r\n}","import { InjectionToken } from '@angular/core';\r\n\r\n/** Token che indica la lingua da utilizzare, sono supportate \"it-IT\" ed \"en-US\" */\r\nexport const FRM_DEBUG_MODE: InjectionToken<boolean> = new InjectionToken<boolean>('FAV_DEBUG_MODE');","import { Injectable, Injector } from \"@angular/core\";\r\nimport { NgControl, NgForm, NgModel } from \"@angular/forms\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class FormsHelper {\r\n\r\n public retrieveModelControlAndForm(inj: Injector, fieldName: string, explicitForm?: NgForm): { control: NgControl, model: NgModel, form: { natural: boolean, entity: NgForm } } {\r\n let ngModel = inj.get(NgModel, null);\r\n\r\n if (!ngModel)\r\n throw `[@esfaenza/forms] null NgModel for field '${fieldName}'`;\r\n\r\n let ngControl = inj.get(NgControl, null);\r\n if (!ngControl)\r\n throw `[@esfaenza/forms] null NgControl for field '${fieldName}'`;\r\n\r\n var naturalParent: NgForm = (<any>ngControl)._parent;\r\n var hasForm = !!explicitForm || !!naturalParent;\r\n\r\n return {\r\n control: ngControl,\r\n model: ngModel,\r\n form: { natural: hasForm ? !explicitForm : null, entity: hasForm ? (explicitForm ?? naturalParent) : null }\r\n };\r\n }\r\n}","// Angular\r\nimport { booleanAttribute, ChangeDetectorRef, computed, ContentChild, Directive, ElementRef, EventEmitter, Injector, Input, Output, signal, Signal, TemplateRef, ViewChild } from \"@angular/core\";\r\nimport { ControlValueAccessor, NgControl, NgForm, NgModel } from \"@angular/forms\";\r\n\r\n// Prime NG\r\nimport { Popover } from \"primeng/popover\";\r\nimport { deepEquals } from '@primeuix/utils';\r\n\r\n// Rxjs\r\nimport { distinctUntilChanged, takeUntil } from \"rxjs/operators\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\n// Esfaenza\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\n\r\n// Lib\r\nimport { ChangeEvent } from \"../../models/ChangeEvent\";\r\nimport { BaseFormConfiguration } from \"../../models/BaseFormConfiguration\";\r\n\r\nimport { FRM_DEBUG_MODE } from \"../../tokens\";\r\nimport { FormsHelper } from \"../../services/helper\";\r\n\r\n/** \r\n * Componente base da cui tutti i componenti Form implementano \r\n * N.B: \r\n * innerInput è il componente interno\r\n * ngControl è il componente esterno (form-roba)\r\n */\r\n@Directive()\r\nexport abstract class BaseFormControl implements ControlValueAccessor {\r\n\r\n protected onChange = (_: any) => { };\r\n public onTouched = () => { };\r\n public registerOnChange(fn: any): void { this.onChange = fn; }\r\n public registerOnTouched(fn: any): void { this.onTouched = fn; }\r\n\r\n public value: any;\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del suffisso */\r\n @ContentChild(\"suffix\", { static: false }) suffix;\r\n /** Delegato per l'esecuzione di un'operazione al click del suffisso */\r\n @Output() onSuffixAction: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del prefisso */\r\n @ContentChild(\"prefix\", { static: false }) prefix;\r\n /** Delegato per l'esecuzione di un'operazione al click del prefisso */\r\n @Output() onPrefixAction: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @ViewChild('innerInput') public innerInput: NgModel;\r\n @ViewChild('innerElement') public innerElement?: ElementRef;\r\n @ViewChild('tooltip') private tooltip?: Popover;\r\n\r\n @Output() inputChange: EventEmitter<ChangeEvent> = new EventEmitter<ChangeEvent>();\r\n @Output() inputFocus: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() inputFinalized: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Input() DisplayCondition: boolean = true;\r\n @Input() DisplayMode: boolean = false;\r\n @Input() DisplayLayout: 'form' | 'inline' | 'hidden' = 'form';\r\n @Input() FormLayout: boolean = true;\r\n @Input() DisplayModeTemplate: TemplateRef<any>;\r\n public EvaluatedModel: string;\r\n public InlineSeparator: string = \", \";\r\n\r\n @Input() FailedValidationMessage: string = null;\r\n @Input() Label: string;\r\n @Input() Last: boolean;\r\n @Input() FormGroupClass: string = \"\";\r\n @Input() Placeholder: string;\r\n @Input() set LabelInputRatio(input: string) {\r\n if (!input) return;\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n get LabelInputRatio(){\r\n return `${this.LabelColWidth} ${this.InputColWidth}`\r\n }\r\n public LabelColWidth: number = 4;\r\n public InputColWidth: number = 8;\r\n\r\n\r\n @Input() Form: NgForm;\r\n @Input() name: string;\r\n @Input({ transform: booleanAttribute }) readonly: boolean | undefined;\r\n @Input({ transform: booleanAttribute }) disabled: boolean | undefined;\r\n @Input() pattern: string | undefined;\r\n @Input() Validation: boolean = true;\r\n @Input() SetValidationSubject: Subject<{ fieldName: string, error: string }>;\r\n public TooltipText: string = \"\";\r\n public InternalName: string = \"\";\r\n\r\n /*\r\n *** Valori assunti in base al binding:\r\n <input ... required /input> -> required === ''\r\n <input ... /input> -> required === undefined\r\n <input ... [required]=\"true\" /input> -> required === true\r\n */\r\n @Input({ transform: booleanAttribute }) required: boolean | '' | undefined;\r\n\r\n /**\r\n * Espressione simil-Angular per cambiare il testo dei componenti che scelgono il proprio modello da una **Source**\r\n * \r\n * Il funzionamento è identico al binder di angular, solo con una graffa invece che 2.\r\n * È inoltre possibile aggiungere pezzi di descrizione in maniera condizionale con la sintassi **:prop?(Prop vale {prop})**\r\n */\r\n @Input() Display: string = '{description}';\r\n @Input() IdField: string = \"id\";\r\n private BindCheckingGroups: { global: string, prop: string, whenexists: string }[] = []\r\n private BindProperties: { global: string, prop: string }[] = [];\r\n\r\n private _source = signal<any[] | undefined>(null);\r\n @Input() get Source(): any[] | undefined { return this._source(); }\r\n set Source(val: any[] | undefined) { if (!deepEquals(val, this._source())) this._source.set(val); }\r\n protected BoundSourceCache: { [id: string]: { description: string, source: any} } = {};\r\n\r\n public BoundSource: Signal<{ id: string, description: string }[]> = computed(() => {\r\n let source = this._source();\r\n\r\n // Cache locale per evitare di rifare dei regex.match ogni santa volta\r\n if ((source?.length || 0) == 0)\r\n return [];\r\n\r\n if (this.BindCheckingGroups.length == 0)\r\n this.evaluateBindCheckingGroups();\r\n\r\n if (this.BindProperties.length == 0)\r\n this.evaluateBindProperties();\r\n\r\n this.BoundSourceCache = {};\r\n let ret = source.map(s => this.transformSourceItem(s));\r\n\r\n // Post trybind se c'è un modello associato ricalcolo l'**EvaluatedModel**\r\n if (this.value !== null || this.value !== undefined)\r\n this.EvaluatedModel = ret.find(t => t.id == this.value)?.description;\r\n\r\n return ret;\r\n });\r\n\r\n protected helper: FormsHelper;\r\n protected utiExts: UtilityService;\r\n protected lc: LocalizationService;\r\n protected msgs: MessageService;\r\n protected ngControl: NgControl;\r\n protected ngModel: NgModel;\r\n protected FRM_DEBUG_MODE: boolean;\r\n protected cdr: ChangeDetectorRef;\r\n\r\n /**\r\n * Indica se l'input del componente dev'essere risparato fuori con le trasformazioni da *outValue*\r\n * \r\n * Il controllo potrebbe essere automatico ma rischia di diventare pesante per componenti particolari/pesanti\r\n */\r\n protected shouldReemitAdjustedInput: boolean = false;\r\n\r\n @Input() statusChangesObservable: Observable<any> = null;\r\n protected performFormLogic: boolean = true;\r\n\r\n protected destroyed$: Subject<void> = new Subject<void>();\r\n \r\n @Input() Configuration: BaseFormConfiguration;\r\n\r\n constructor(protected inj: Injector) {\r\n this.cdr = this.inj.get(ChangeDetectorRef);\r\n this.lc = this.inj.get(LocalizationService);\r\n this.msgs = this.inj.get(MessageService);\r\n this.utiExts = this.inj.get(UtilityService);\r\n this.helper = this.inj.get(FormsHelper);\r\n this.FRM_DEBUG_MODE = this.inj.get(FRM_DEBUG_MODE, null);\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.hideTooltip();\r\n\r\n if (this.Form && this.ngModel && !!this.Form.getControl(this.ngModel) && this.performFormLogic)\r\n this.Form.removeControl(this.ngModel);\r\n\r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n }\r\n\r\n public ngOnInit() {\r\n if (!this.Configuration) return;\r\n\r\n let properties = Object.keys(this.Configuration);\r\n\r\n // Riempio tutte le proprietà non assegnate con il loro equivalente da configurazione se presente\r\n for (let i = 0; i < properties.length; i++) {\r\n let p = properties[i];\r\n // LabelInputRatio è sempre overridabile\r\n if ((this[p] === null || this[p] === undefined || p == \"LabelInputRatio\") && (this.Configuration[p] !== null && this.Configuration[p] !== undefined)) {\r\n this[p] = this.Configuration[p];\r\n }\r\n }\r\n }\r\n\r\n public ngAfterViewInit() {\r\n let helpRes = this.helper.retrieveModelControlAndForm(this.inj, this.name, this.Form);\r\n this.ngModel = helpRes.model\r\n this.ngControl = helpRes.control;\r\n this.InternalName = `${this.name}_internal`;\r\n this.Validation = this.Validation || !this.DisplayMode;\r\n\r\n // Se la logica dei form è effettuata da un compoente interno invece che dal componente attuale, come minimo devo assicurarmi di valorizzare il Form\r\n if (!this.performFormLogic) {\r\n this.Form = helpRes.form.entity;\r\n this.statusChangesObservable = this.ngControl.statusChanges;\r\n return;\r\n }\r\n\r\n if (helpRes.form.natural === false)\r\n this.Form.addControl(this.ngModel);\r\n\r\n if (!this.Validation) {\r\n // Forzatura a non validare questo componente passando dagli internals di Angular perché passando dai controlli interni non va :D\r\n (<any>this.innerInput)._rawValidators = (<any>this.ngControl)._rawValidators = [];\r\n (<any>this.innerInput)._composedValidatorFn = (<any>this.ngControl)._composedValidatorFn = null;\r\n }\r\n\r\n if(helpRes.form.entity !== null)\r\n helpRes.form.entity.ngSubmit.subscribe(_ => {\r\n this.innerInput.control.markAsDirty({ emitEvent: false });\r\n this.ngControl.control.markAsDirty({ emitEvent: false });\r\n\r\n if (this.ngControl.invalid) this.showTooltip();\r\n });\r\n\r\n (this.statusChangesObservable ?? this.ngControl.statusChanges).pipe(distinctUntilChanged(), takeUntil(this.destroyed$)).subscribe((status) => {\r\n // Tutti i cambi ad \"Invalido\" li ignoro se il controllo non è stato manco sfiorato. Vuol dire che è una fase di bootstrap con un valore invalido, che sia vuoto o errato da DB\r\n if(!this.ngControl.touched) return;\r\n this.log(`Control Status Changed - ${this.name} -> ${status}`);\r\n (status == \"INVALID\" ? this.showTooltip : this.hideTooltip).bind(this)()\r\n });\r\n\r\n if (this.SetValidationSubject) {\r\n this.SetValidationSubject.pipe(distinctUntilChanged(), takeUntil(this.destroyed$)).subscribe(v => {\r\n if (v.fieldName !== this.name) return;\r\n\r\n // Nessun errore, ripulisco\r\n if(!v.error)\r\n {\r\n this.innerInput.control.setErrors(null, { emitEvent: false });\r\n this.ngControl.control.setErrors(null, { emitEvent: false });\r\n return;\r\n }\r\n\r\n this.log(`Control Forced Invalid - ${this.name} error: ${v.error}`);\r\n\r\n this.innerInput.control.setErrors({ forcedtoinvalid: true }, { emitEvent: false });\r\n this.innerInput.control.markAsDirty({ emitEvent: false });\r\n\r\n this.ngControl.control.setErrors({ forcedtoinvalid: true }, { emitEvent: false });\r\n this.ngControl.control.markAsDirty({ emitEvent: false });\r\n\r\n requestAnimationFrame(() => { if (this.ngControl.invalid) this.showTooltip(v.error); });\r\n });\r\n }\r\n }\r\n\r\n private showTooltip(error?: string) {\r\n if(!this.tooltip)\r\n return;\r\n \r\n this.TooltipText = this.getTooltipText(error);\r\n this.tooltip.show(null, this.innerElement.nativeElement);\r\n }\r\n\r\n protected getTooltipText(error?: string){\r\n return error ?? this.FailedValidationMessage ?? (this.required !== undefined && this.isEmptyValue(this.value) ? \"È obbligatorio fornire un valore\" : \"Formato input errato\");\r\n }\r\n\r\n private hideTooltip() {\r\n if(!this.tooltip) return;\r\n\r\n this.tooltip.hide();\r\n }\r\n\r\n public log(message: string) {\r\n if (this.FRM_DEBUG_MODE)\r\n console.log(\"@forms-and-validations: \" + message)\r\n }\r\n\r\n public async writeValue(obj: any): Promise<void> {\r\n // Coercizione di tutti i valori \"vuoti\" all'unico \"null\"\r\n if (obj === null || obj === undefined) obj = null;\r\n\r\n this.value = await this.getValueIn(obj);\r\n\r\n if(!this.performFormLogic) return;\r\n\r\n this.EvaluatedModel = await this.getEvaluatedModel(this.value);\r\n\r\n if (this.shouldReemitAdjustedInput && !!this.value) {\r\n // Riallineamento esatto del valore. Può entrare qualsiasi valore, ma il modello del form e il binding potrebbe essere fatto sempre su un tipo diverso\r\n // Es: nei form date, entra un dayjs, viene letto come Date (getValueIn) e viene sparato fuori come \"dd/MM/yyyy\" (getValueOut)\r\n // this.value è valorizzato qui sopra\r\n this.onChange(await this.getValueOut(this.value));\r\n }\r\n }\r\n\r\n public async changed(value: any) {\r\n this.value = value;\r\n\r\n this.onChange(await this.getValueOut(this.value));\r\n\r\n if(!this.performFormLogic) return;\r\n\r\n this.EvaluatedModel = await this.getEvaluatedModel(value);\r\n\r\n this.inputChange.emit(new ChangeEvent(false, this.value));\r\n this.log(`Control Value Changed - ${this.name}, value: ${this.value}`);\r\n }\r\n\r\n // Leggero debounce sul finalize in quanto ci sono alcuni componenti che per attaccare tutti gli eventi \"finalizzanti\" potrebbero duplicare le chiamate.\r\n // vedi form-date i cui eventi finalizzanti sono sia l'onBlur che l'onSelect, ma in alcune situazioni vengono richiamati entrambi\r\n private finalizedDebounceInterval = null;\r\n public finalized(debounceTime = 50) {\r\n if (this.finalizedDebounceInterval)\r\n clearInterval(this.finalizedDebounceInterval);\r\n\r\n this.finalizedDebounceInterval = setInterval(() => {\r\n this.inputFinalized.emit(this.ngControl?.name?.toString());\r\n this.log(\"Control Value Finalized - \" + this.name + \" with value: \" + this.value);\r\n clearInterval(this.finalizedDebounceInterval);\r\n }, debounceTime);\r\n }\r\n\r\n public focused(event: any) {\r\n this.inputFocus.emit(event);\r\n this.log(\"Control Focused - \" + this.name);\r\n }\r\n\r\n /** Valuta il contenuto della variabile BindCheckingGroups */\r\n private evaluateBindCheckingGroups() {\r\n // Blocco per tirare fuori le condizioni scritte tipo --> :prop?(Roba con {prop})\r\n var iffedMatches = this.Display.match(/:([a-z]+)\\?\\(([^\\(\\)]+)\\)/g);\r\n if (!iffedMatches) return;\r\n\r\n this.BindCheckingGroups = iffedMatches.map(m => {\r\n let groups = m.match(/:([a-z]+)\\?\\(([^\\(\\)]+)\\)/i);\r\n return { global: m, prop: groups[1], whenexists: groups[2] };\r\n });\r\n }\r\n\r\n /** Valuta il contenuto della variabile BindProperties */\r\n private evaluateBindProperties() {\r\n // Blocco per tirare fuori le proprietà scritte tipo --> {prop}\r\n var matches = this.Display.match(/{[a-z]+}/gi);\r\n if (!matches) return;\r\n\r\n this.BindProperties = matches.map(m => { return { global: m, prop: m.substring(1, m.length - 1) } });\r\n }\r\n\r\n /**\r\n * Trasforma un oggetto della Source alla sua versione \"nuova\" basandosi sulle informazioni su gruppi e proprietà\r\n * \r\n * @param {any} item Oggetto da trasformare\r\n * \r\n * @returns {{id: string, description: string}} Oggetto finale trasformato\r\n */\r\n private transformSourceItem(s: any): {id: string, description: string} {\r\n // Parto sempre dalla variabile di Display, poi sostituisco pezzo per pezzo\r\n let desc = this.Display;\r\n\r\n // Taglio o mantengo le condizioni in base alla proprietà su cui fare check\r\n // Dopodiché scrivo tutte le proprietà\r\n for (let i = 0; i < this.BindCheckingGroups.length; i++) {\r\n let t = this.BindCheckingGroups[i];\r\n desc = desc.replace(t.global, (s[t.prop] !== null && s[t.prop] !== undefined && s[t.prop] !== \"\") ? t.whenexists : \"\");\r\n }\r\n\r\n for (let i = 0; i < this.BindProperties.length; i++) {\r\n let t = this.BindProperties[i];\r\n desc = desc.replace(t.global, s[t.prop]);\r\n }\r\n\r\n let ret = { id: \"\" + s[this.IdField], description: desc };\r\n this.BoundSourceCache[ret.id] = { description: ret.description, source: s};\r\n return ret;\r\n }\r\n\r\n // Overridabili per gestire In - Out diversi\r\n protected async getEvaluatedModel(valueAfterInTransform: any): Promise<string> { return valueAfterInTransform?.toString() || \"\"; }\r\n protected async getValueOut(value: any): Promise<any> { return value; }\r\n protected async getValueIn(value: any): Promise<any> { return value; }\r\n protected isEmptyValue(value: any): boolean { return !value; };\r\n}","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { BaseFormControl } from \"../base-form-control\";\r\n\r\n\r\n/** Semplice componente di Input testuale, con eventuale prefisso/suffisso */\r\n@Component({\r\n selector: \"input-skeleton\",\r\n templateUrl: \"input-skeleton.component.html\",\r\n styleUrls: [\"./input-skeleton.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class InputSkeletonComponent {\r\n\r\n @Input() For: BaseFormControl;\r\n @Input() Control: TemplateRef<any>;\r\n\r\n /** @ignore Costruttore */\r\n constructor() { }\r\n}","<ng-container *ngIf=\"!For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\">\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">\r\n <ng-container *ngIf=\"For.DisplayLayout == 'form'\">{{ For.EvaluatedModel }}</ng-container>\r\n <div *ngIf=\"For.DisplayLayout == 'inline'\" class=\"app-inline\">{{ For.EvaluatedModel }}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n</ng-container>\r\n\r\n<div *ngIf=\"For.FormLayout && (!For.DisplayMode || (For.DisplayLayout != 'hidden' && For.DisplayCondition))\" class=\"{{For.FormGroupClass + (For.Last ? ' app-margin-bottom-0 app-margin-right-0 ' : '') + (For.DisplayLayout == 'inline' && For.DisplayMode ? (' app-inline-block ' + (!For.Last ? 'app-margin-right-10' : '')) : ' form-group row')}}\">\r\n <label class=\"col-md-{{(For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-bold app-margin-bottom-0' : For.LabelColWidth) + (For.DisplayMode ? ' app-bold' : ' m-t-5') }}\">{{For.Label}}{{For.required !== undefined && For.required !== false && !For.DisplayMode ? '*' : ''}}{{For.Label ? \":\" : \"\"}}</label>\r\n <span *ngIf=\"For.DisplayMode && For.DisplayLayout == 'inline' && For.InlineSeparator != ''\">{{For.InlineSeparator}}</span>\r\n <div class=\"col-md-{{For.DisplayMode && For.DisplayLayout == 'inline' ? 'none app-inline-block' : For.InputColWidth}}\">\r\n\r\n <ng-container *ngIf=\"For.DisplayMode && !For.DisplayModeTemplate\">{{ For.EvaluatedModel }}</ng-container>\r\n <ng-container *ngIf=\"For.DisplayMode && For.DisplayModeTemplate\"><ng-container *ngTemplateOutlet=\"For.DisplayModeTemplate, context: { $implicit: For.EvaluatedModel }\"></ng-container></ng-container>\r\n <div [hidden]=\"For.DisplayMode\"><ng-container *ngTemplateOutlet=\"Control\"></ng-container></div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, numberAttribute, Output, signal, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-input\",\r\n templateUrl: \"form-input.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [InputTextModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormInputComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormInputComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input({ transform: numberAttribute }) minlength: number | undefined;\r\n @Input({ transform: numberAttribute }) maxlength: number | undefined;\r\n @Input() pattern: string | undefined;\r\n\r\n @Input() Password: boolean = false;\r\n\r\n public passShown = signal(false);\r\n public Type = signal(\"text\");\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n if (this.Password)\r\n this.Type.set(\"password\");\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n\r\n <p-inputgroup>\r\n <p-inputgroup-addon *ngIf=\"!!prefix\">\r\n <span (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n\r\n <p-floatlabel variant=\"on\">\r\n <input \r\n pInputText \r\n pSize=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n autocomplete=\"off\"\r\n style=\"width: 100%;\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [attr.type]=\"Type\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readOnly]=\"readonly\"\r\n [minlength]=\"minlength\" \r\n [maxlength]=\"maxlength\" \r\n [pattern]=\"pattern\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (blur)=\"onTouched(); finalized()\"\r\n />\r\n \r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n\r\n <p-inputgroup-addon *ngIf=\"Password\">\r\n <a *ngIf=\"passShown()\" class=\"far fa-eye-slash app-fs-16 app-pointer\" (click)=\"Type.set('password'); passShown.set(false); $event.preventDefault()\"></a>\r\n <a *ngIf=\"!passShown()\" class=\"far fa-eye app-fs-16 app-pointer\" (click)=\"Type.set('text'); passShown.set(true); $event.preventDefault()\"></a>\r\n </p-inputgroup-addon>\r\n\r\n <p-inputgroup-addon *ngIf=\"!!suffix\">\r\n <span (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n </p-inputgroup>\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, TemplateRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { Select, SelectModule } from 'primeng/select';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\";\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-select\",\r\n templateUrl: \"form-select.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [SelectModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormSelectComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormSelectComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() OptionsTemplate: TemplateRef<any>;\r\n\r\n public RequiredPlaceholder: string = \"\";\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<Select>(<any>this.innerElement)).el;\r\n\r\n if (!this.Placeholder && this.required) {\r\n this.RequiredPlaceholder = \"Seleziona un valore...\";\r\n this.Placeholder = \"\";\r\n }\r\n }\r\n\r\n protected override async getEvaluatedModel(value: any): Promise<string> {\r\n return this.BoundSource?.().find(t => t.id == value)?.description ?? \"\";\r\n }\r\n\r\n protected override async getValueIn(value: any): Promise<any> {\r\n return value !== null && value !== undefined && value !== \"\" ? value.toString() : null;\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n\r\n<ng-template #controlTemplate>\r\n\r\n <p-inputgroup>\r\n <p-inputgroup-addon *ngIf=\"!!prefix\">\r\n <span (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n\r\n <p-floatlabel variant=\"on\">\r\n\r\n <p-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [filter]=\"true\" \r\n filterBy=\"description\"\r\n [showClear]=\"true\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [options]=\"BoundSource()\"\r\n [placeholder]=\"RequiredPlaceholder\"\r\n optionLabel=\"description\"\r\n optionValue=\"id\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (onChange)=\"onTouched(); finalized()\">\r\n\r\n <ng-template *ngIf=\"OptionsTemplate\" let-selectedOption #selectedItem>\r\n <ng-container *ngTemplateOutlet=\"OptionsTemplate; context : { $implicit: BoundSourceCache[selectedOption.id].source}\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template *ngIf=\"OptionsTemplate\" let-itm #item>\r\n <ng-container *ngTemplateOutlet=\"OptionsTemplate; context : { $implicit: BoundSourceCache[itm.id].source}\"></ng-container>\r\n </ng-template>\r\n </p-select>\r\n \r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n\r\n <p-inputgroup-addon *ngIf=\"!!suffix\">\r\n <span (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </span>\r\n </p-inputgroup-addon>\r\n </p-inputgroup>\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, signal, ViewEncapsulation, WritableSignal } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { DatePickerModule, DatePicker } from 'primeng/datepicker';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Esfaenza\r\nimport { DateService } from \"@esfaenza/extensions\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\ndeclare var dayjs: any;\r\n\r\n@Component({\r\n selector: \"form-date\",\r\n templateUrl: \"form-date.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [DatePickerModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormDateComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormDateComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n /**\r\n * Indica il formato da utilizzare sia in Input che in Output\r\n * \r\n * 1. Se date vengono utilizzate le Date di Javascript\r\n * \r\n * 2. Se timestring vengono utilizzate stringhe del tipo '00:00:00'\r\n * \r\n * 3. Se dayjs viene utilizzato, appunto, dayjs\r\n */\r\n @Input() InOutFormat: 'date' | 'timestring' | 'dayjs' = 'timestring';\r\n\r\n /** Nel caso dei componenti data il Placeholder è il formato, mentre la label floattante, se esistente, dev'essere specificata */\r\n @Input() FloatingLabel: boolean = false;\r\n\r\n protected datesExts: DateService;\r\n\r\n protected mode: 'date' | 'datetime' | 'time' | 'month' | 'year' | 'daterange';\r\n\r\n public view: WritableSignal<'month' | 'year' | 'date'> = signal('date');\r\n public dateFormat: WritableSignal<string | undefined> = signal(undefined);\r\n public showTime: WritableSignal<boolean | undefined> = signal(undefined);\r\n public hourFormat: WritableSignal<number | undefined> = signal(undefined);\r\n public timeOnly: WritableSignal<boolean | undefined> = signal(undefined);\r\n public showButtonBar: WritableSignal<boolean | undefined> = signal(undefined);\r\n public selectionMode: WritableSignal<'single' | 'multiple' | 'range' | undefined> = signal(undefined);\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n this.setInputMode();\r\n this.adjustInputModeVisuals();\r\n\r\n this.datesExts = this.inj.get(DateService);\r\n this.shouldReemitAdjustedInput = true;\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<DatePicker>(<any>this.innerElement)).el;\r\n }\r\n\r\n protected setInputMode() {\r\n this.mode = \"date\";\r\n }\r\n\r\n protected override async getEvaluatedModel(value: any): Promise<string> {\r\n let pieces = [];\r\n let formatted = this.datesExts.getFormatted(value, ![\"datetime\", \"time\"].includes(this.mode), false);\r\n\r\n switch (this.mode) {\r\n case \"date\":\r\n return formatted || \"\";\r\n case \"daterange\":\r\n\r\n break;\r\n case \"datetime\":\r\n return formatted || \"\";\r\n case \"time\":\r\n return formatted?.split(' ')?.[1] || \"\";\r\n case \"month\":\r\n pieces = formatted?.split('/');\r\n return formatted ? `${pieces[1]}/${pieces[2]}` : \"\";\r\n case \"year\":\r\n pieces = formatted?.split('/');\r\n return formatted ? `${pieces[2]}` : \"\";\r\n }\r\n }\r\n\r\n protected override async getValueOut(value: any) {\r\n let convertion = this.datesExts.getDateConvertion(value, false, this.InOutFormat, ![\"datetime\", \"time\"].includes(this.mode))\r\n\r\n switch (this.mode) {\r\n case \"date\":\r\n return convertion;\r\n case \"daterange\":\r\n\r\n break;\r\n case \"datetime\":\r\n return convertion;\r\n case \"time\":\r\n return convertion;\r\n case \"month\":\r\n\r\n break;\r\n case \"year\":\r\n\r\n break;\r\n }\r\n }\r\n\r\n protected override async getValueIn(obj: any) {\r\n if (!obj) return null;\r\n\r\n switch (this.mode) {\r\n case \"date\":\r\n return this.datesExts.getDateConvertion(obj, false, 'date');\r\n case \"daterange\":\r\n\r\n break;\r\n case \"datetime\":\r\n return this.datesExts.getDateConvertion(obj, false, 'date');\r\n case \"time\":\r\n if (this.InOutFormat == \"timestring\") {\r\n const [hours, minutes, seconds] = obj.split(\":\");\r\n obj = dayjs().hour(parseInt(hours ?? 0)).minute(parseInt(minutes ?? 0)).second(parseInt(seconds ?? 0));\r\n }\r\n\r\n return this.datesExts.getDateConvertion(obj, false, 'date');\r\n case \"month\":\r\n\r\n break;\r\n case \"year\":\r\n\r\n break;\r\n }\r\n }\r\n\r\n private adjustInputModeVisuals() {\r\n switch (this.mode) {\r\n case \"date\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"DD/MM/YYYY\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(\"dd/mm/yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"daterange\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"DD/MM/YYYY\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(\"dd/mm/yy\");\r\n this.selectionMode.set(\"range\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"datetime\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"DD/MM/YYYY HH:mm:ss\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(\"dd/mm/yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(true);\r\n this.hourFormat.set(24);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"time\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"HH:mm\";\r\n this.view.set(\"date\");\r\n this.dateFormat.set(undefined);\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(24);\r\n this.timeOnly.set(true);\r\n this.showButtonBar.set(false);\r\n break;\r\n case \"month\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"MM/YYYY\";\r\n this.view.set(\"month\");\r\n this.dateFormat.set(\"mm/yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n case \"year\":\r\n this.FloatingLabel = !!this.Placeholder;\r\n this.Placeholder = this.Placeholder ?? \"YYYY\";\r\n this.view.set(\"year\");\r\n this.dateFormat.set(\"yy\");\r\n this.selectionMode.set(\"single\");\r\n this.showTime.set(undefined);\r\n this.hourFormat.set(undefined);\r\n this.timeOnly.set(undefined);\r\n this.showButtonBar.set(true);\r\n break;\r\n }\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <p-datepicker\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [placeholder]=\"FloatingLabel ? '' : Placeholder\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [view]=\"view()\" \r\n [dateFormat]=\"dateFormat()\"\r\n [showTime]=\"showTime()\"\r\n [hourFormat]=\"hourFormat()\"\r\n [timeOnly]=\"timeOnly()\"\r\n [selectionMode]=\"selectionMode()\"\r\n [showIcon]=\"true\"\r\n [showButtonBar]=\"showButtonBar()\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonlyInput]=\"readonly\"\r\n [baseZIndex]=\"99999999\"\r\n inputId=\"buttondisplay\"\r\n optionLabel=\"description\"\r\n optionValue=\"id\"\r\n filterBy=\"description\"\r\n appendTo=\"body\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event);\" \r\n (click)=\"focused($event);\"\r\n (onBlur)=\"onTouched(); finalized()\"\r\n (onSelect)=\"onTouched(); finalized()\"\r\n />\r\n\r\n <label>{{FloatingLabel ? Placeholder : null}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { EsFormDateComponent } from \"../date/form-date.component\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-datetime\",\r\n templateUrl: \"../date/form-date.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [DatePickerModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormDateTimeComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormDateTimeComponent extends EsFormDateComponent {\r\n\r\n override setInputMode(): void {\r\n this.mode = \"datetime\";\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { DatePickerModule } from 'primeng/datepicker';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { EsFormDateComponent } from \"../date/form-date.component\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-time\",\r\n templateUrl: \"../date/form-date.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [DatePickerModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormTimeComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormTimeComponent extends EsFormDateComponent {\r\n\r\n override setInputMode(): void {\r\n this.mode = \"time\";\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ToggleSwitchModule } from 'primeng/toggleswitch';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-checkbox\",\r\n templateUrl: \"form-checkbox.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [CheckboxModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent, ToggleSwitchModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormCheckboxComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormCheckboxComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() SliderMode: boolean = undefined;\r\n\r\n ngOnInit(){\r\n super.ngOnInit();\r\n\r\n if(this.SliderMode == undefined)\r\n this.SliderMode = false;\r\n }\r\n\r\n protected override async getValueIn(value: any) {\r\n return value ? (value === true || value.toLowerCase() == \"true\") : false;\r\n }\r\n\r\n protected override async getEvaluatedModel(value: any): Promise<string> {\r\n return this.lc.loc(value ? 'Sì' : 'No');\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n \r\n <p-checkbox *ngIf=\"SliderMode === false\"\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"value\"\r\n [binary]=\"true\"\r\n (ngModelChange)=\"changed($event); finalized()\" \r\n (click)=\"focused($event);\"\r\n />\r\n\r\n <p-toggleswitch *ngIf=\"SliderMode === true\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event); finalized()\" \r\n (click)=\"focused($event);\"\r\n />\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, numberAttribute, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-textarea\",\r\n templateUrl: \"form-textarea.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [TextareaModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormTextareaComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormTextareaComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input({ transform: numberAttribute }) rows: number | undefined = 2;\r\n @Input({ transform: numberAttribute }) minlength: number | undefined;\r\n @Input({ transform: numberAttribute }) maxlength: number | undefined;\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <textarea\r\n pTextarea \r\n pSize=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n autocomplete=\"off\"\r\n style=\"width: 100%;\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readOnly]=\"readonly\"\r\n [rows]=\"rows\"\r\n [minlength]=\"minlength\" \r\n [maxlength]=\"maxlength\" \r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (blur)=\"onTouched(); finalized()\"\r\n ></textarea>\r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n/**\r\n * Componente placeholder per la creazione dei form che rappresenta un blocchetto di erorre, \r\n * al posto del quale possono poi comparire dei componenti form senza incasinare la grafica\r\n */\r\n@Component({\r\n selector: \"form-error\",\r\n templateUrl: \"form-error.component.html\",\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class EsFormErrorComponent {\r\n\r\n /** col-md-X per la label (Che in questoc aso è vuota) */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input (che in questo caso contiene il messaggio d'errore proiettato nell'HTML) */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */\r\n @Input() Last: boolean = false;\r\n\r\n /** Classe extra per il form-group in cui viene wrappato l'input */\r\n @Input() FormGroupClass: string = \"\";\r\n\r\n /** Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n}","<div class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"app-hidden-view col-md-{{LabelColWidth}} m-t-5\"></label>\r\n <span class=\"help-block text-danger col-md-{{InputColWidth}}\">\r\n <ng-content></ng-content>\r\n </span>\r\n <div class=\"clearfix\"></div>\r\n</div>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { booleanAttribute, ChangeDetectionStrategy, Component, Input, TemplateRef } from \"@angular/core\";\r\n\r\n// Lib\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n/**\r\n * Componente da utilizzare quando l'implementazione dell'input non è disponibile nella libreria, \r\n * fornisce la struttura standard di un form-component ma l'input vero e proprio viene proiettato dall'esterno\r\n */\r\n@Component({\r\n selector: \"form-template\",\r\n templateUrl: \"form-template.component.html\",\r\n imports: [CommonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class EsFormTemplateComponent {\r\n\r\n /** Indica se l'input è obbligatorio o no */\r\n @Input({ transform: booleanAttribute }) required: boolean | '' | undefined;\r\n\r\n /** Mostra un testo a sinistra dell'input, **FormLayout** permettendo */\r\n @Input() Label: string = \"\";\r\n\r\n /** Eventuali classi extra da applicare alla Label, di default c'è solo un leggero margin top */\r\n @Input() LabelClass: string = \"m-t-5\";\r\n\r\n /** Utilizza o meno il Layout di un form (Label con input di fianco), se false mostra solo l'input */\r\n @Input() FormLayout: boolean = true;\r\n\r\n /** col-md-X per la label */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */\r\n @Input() Last: boolean = false;\r\n\r\n /** Classe extra per il form-group in cui viene wrappato l'input */\r\n @Input() FormGroupClass: string = \"\";\r\n\r\n /** Indica che la parte input del controllo dev'essere una label readonly e la parte label di titolo dev'essere in bold. Per utilizzare un solo componente sia per la modifica che per il dettaglio */\r\n @Input() DisplayMode: boolean = false;\r\n\r\n /** Template per visualizzare la modalità **DisplayMode** come vuole il programmatore frocio di turno */\r\n @Input() DisplayModeTemplate: TemplateRef<any>;\r\n\r\n /** Layout del Form quando è in modalità Display. Di default mantiene la formattazione a form */\r\n @Input() DisplayLayout: 'form' | 'inline' | 'hidden' = 'form';\r\n\r\n /** Indica la condizione per cui un elemento in Modalità Display può essere visibile in base a ulteriori controlli */\r\n @Input() DisplayCondition: boolean = true;\r\n\r\n /** Separatore da mettere in automatico fra un elemento Form e l'altro quando sono in **DisplayMode** con **DisplayLayout** inline */\r\n @Input() InlineSeparator: string = ' ';\r\n\r\n /** Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<!-- Singola proiezione -->\r\n<ng-template #controlTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, Input } from \"@angular/core\";\r\n\r\n/**\r\n * Componente placeholder per la creazione dei form che rappresenta un blocchetto di informazioni, \r\n * al posto del quale possono poi comparire dei componenti form senza incasinare la grafica\r\n */\r\n@Component({\r\n selector: \"form-info\",\r\n templateUrl: \"form-info.component.html\",\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true\r\n})\r\nexport class EsFormInfoComponent {\r\n /** col-md-X per la label (Che in questoc aso è vuota) */\r\n @Input() LabelColWidth: number = 4;\r\n\r\n /** col-md-X per l'input (che in questo caso contiene il messaggio d'errore proiettato nell'HTML) */\r\n @Input() InputColWidth: number = 8;\r\n\r\n /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */\r\n @Input() Last: boolean = false;\r\n\r\n /** Classe extra per il form-group in cui viene wrappato l'input */\r\n @Input() FormGroupClass: string = \"\";\r\n\r\n /** Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi \"X Y\" */\r\n @Input() set LabelInputRatio(input: string) {\r\n var ratio = input.split(/\\s/);\r\n this.LabelColWidth = parseInt(ratio[0]);\r\n this.InputColWidth = parseInt(ratio[1]);\r\n }\r\n}","<div class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"app-hidden-view col-md-{{LabelColWidth}} m-t-5\"></label>\r\n <span class=\"help-block col-md-{{InputColWidth}}\">\r\n <ng-content></ng-content>\r\n </span>\r\n <div class=\"clearfix\"></div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Injector, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Esfaenza\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\n\r\n// Prime NG\r\nimport { TextareaModule } from 'primeng/textarea';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n// Models\r\nimport { AppFile } from \"../../models/AppFile\";\r\n\r\n@Component({\r\n selector: \"form-file\",\r\n templateUrl: \"form-file.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\", \"./form-file.component.css\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [TextareaModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent, LocalizationModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormFileComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => EsFormFileComponent), multi: true }\r\n ],\r\n standalone: true\r\n})\r\nexport class EsFormFileComponent extends BaseFormControl implements ControlValueAccessor, Validator {\r\n\r\n /** Permette di caricare file multipli */\r\n @Input() Multiple: boolean = false;\r\n\r\n /** Permette di scaricare l'eventuale file selezionato */\r\n @Input() AllowDownload: boolean = true;\r\n\r\n /** Controllo sulla dimensione di ogni singolo file in Byte. 0 -> nessun limite */\r\n @Input() MaxSize: number = 0;\r\n\r\n /** Sportivo */\r\n @Input() FancyMode: boolean = undefined;\r\n\r\n /** Legge sempre il contenuto del file e ne estrapola il base64 */\r\n @Input() ReadFile: boolean = false;\r\n \r\n /** @ignore Costruttore */\r\n constructor(inj: Injector) {\r\n super(inj);\r\n //Per questo componente non posso permettermi che il modello sia nullo\r\n this.value = new AppFile();\r\n\r\n this.shouldReemitAdjustedInput = true;\r\n }\r\n\r\n ngOnInit(){\r\n super.ngOnInit();\r\n \r\n if(this.FancyMode === undefined)\r\n this.FancyMode = false;\r\n }\r\n\r\n validate(_: AbstractControl): ValidationErrors {\r\n if (this.required && this.isEmptyValue(this.value))\r\n return { required: true }\r\n else return null;\r\n }\r\n\r\n protected override isEmptyValue(value: AppFile): boolean {\r\n return !value.filename || !value;\r\n }\r\n\r\n protected override async getValueIn(value: any) {\r\n return value == null ? new AppFile() : value;\r\n }\r\n\r\n protected override async getValueOut(value: any) {\r\n return value == null ? new AppFile() : value;\r\n }\r\n\r\n protected override async getEvaluatedModel(valueAfterInTransform: AppFile): Promise<string> {\r\n return valueAfterInTransform.filename;\r\n }\r\n\r\n /**\r\n * Helper per gestire la modifica del file attualmente bindato\r\n * \r\n * @param {boolean} clear Indica se bisogna svuotare l'input o meno \r\n */\r\n async fileChange(clear: boolean = false) {\r\n let files: File[] = [];\r\n let model = (<AppFile>this.value);\r\n let ne: HTMLInputElement = this.innerElement.nativeElement;\r\n\r\n if (clear) {\r\n model.filename = ne.value = model.fileb64 = \"\";\r\n model.nativefiles = [];\r\n }\r\n else {\r\n for (let i = 0; i < ne.files.length; i++) {\r\n let file = ne.files.item(i);\r\n if (this.MaxSize > 0 && file.size > this.MaxSize) {\r\n this.msgs.simpleError(`Il file ${file.name} eccede la dimensione massima ${this.MaxSize} B`)\r\n this.fileChange(true);\r\n return;\r\n }\r\n files.push(file);\r\n }\r\n\r\n model.fileb64 = null;\r\n\r\n // Modalità Upload Singolo File\r\n if (ne.files.length == 1) {\r\n let fileUploaded = ne.files[0];\r\n model.filename = fileUploaded.name;\r\n if (this.ReadFile)\r\n model.fileb64 = await this.loadFileB64(fileUploaded);\r\n }\r\n // Modalità Upload Multiple File\r\n else if (ne.files.length > 1)\r\n model.filename = ne.files.length + \" \" + this.lc.loc(\"File Selezionati\");\r\n\r\n model.nativefiles = files;\r\n }\r\n\r\n this.changed(model);\r\n }\r\n\r\n private loadFileB64(fileUploaded): Promise<string> {\r\n return new Promise<string>((res, _) => {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(fileUploaded);\r\n reader.onload = () => {\r\n let fileSource = reader.result.toString();\r\n let fileSourceSegments = fileSource.split(',');\r\n\r\n res(fileSourceSegments[fileSourceSegments.length - 1]);\r\n };\r\n });\r\n }\r\n\r\n /** Permette di scaricare l'eventuale file selezionato */\r\n onDownloadFile() {\r\n let model = (<AppFile>this.value);\r\n this.utiExts.saveFile(model.fileb64, model.filename);\r\n }\r\n\r\n // FancyMode - Drag Over\r\n onFileDragOver(event: DragEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n // FancyMode - File Dropped\r\n onFileDropped(event: DragEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.innerElement.nativeElement.files = event.dataTransfer?.files;\r\n this.fileChange();\r\n }\r\n}","<input-skeleton *ngIf=\"FancyMode === false\" [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <div class=\"input-group file-upload\" style=\"padding: 0 !important;\">\r\n <input type=\"file\" (change)=\"fileChange()\" id=\"{{InternalName}}\" #innerElement class=\"file-upload-btn app-pointer\" style=\"height: 46px;\" [multiple]=\"Multiple ? true : null\" />\r\n <input type=\"text\" \r\n [class.frm-padding-left-22]=\"AllowDownload && value.filename && value.fileb64\" \r\n class=\"form-control checking-field\" \r\n style=\"border-top-left-radius: 5px; border-bottom-left-radius: 5px; height: 46px;\"\r\n [style.padding-left.px]=\"AllowDownload && value.filename && value.fileb64 ? 40 : 12\"\r\n placeholder=\"{{Placeholder || ('Seleziona un File' | localize : lc)}}...\" \r\n [(ngModel)]=\"value.filename\" name=\"dsfile_{{InternalName}}\" \r\n #innerInput=\"ngModel\" />\r\n \r\n <a class=\"fa fa-download app-pointer app-input-icon\" style=\"padding-left: 10px; padding-top: 5px; color: #666; z-index: 9999;\" *ngIf=\"AllowDownload && value.filename && value.fileb64\" (click)=\"onDownloadFile()\"></a>\r\n <i class=\"fa fa-times delete-file\" style=\"margin-right: 15px; margin-top: 7px; color: #666;\" (click)=\"fileChange(true)\" *ngIf=\"value.filename\"></i>\r\n \r\n <span class=\"input-group-btn\">\r\n <button class=\"btn btn-primary btn-file-upload\" style=\"height: 46px;\r\n border-top-right-radius: 5px;\r\n border-bottom-right-radius: 5px;\r\n background: var(--p-surface-50) !important;\r\n border: 1px solid var(--p-surface-300) !important;\r\n color: #777;\" type=\"button\"><i class=\"fa fa-upload\"></i></button>\r\n </span>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Fancy Mode-->\r\n<div *ngIf=\"FancyMode === true\" (drop)=\"onFileDropped($event)\" (dragover)=\"onFileDragOver($event)\">\r\n <!--Drop-->\r\n <label for=\"{{InternalName}}\" class=\"drop-container\">\r\n <span class=\"drop-title\">{{Label}}</span>\r\n <div class=\"file-name-container\">{{value.filename || 'Nessun file selezionato'}}</div>\r\n <!--Hidden Forms-->\r\n <input hidden type=\"file\" (change)=\"fileChange()\" id=\"{{InternalName}}\" #innerElement class=\"file-upload-btn app-pointer\" [multiple]=\"Multiple ? true : null\" />\r\n <input hidden type=\"text\" [class.frm-padding-left-22]=\"AllowDownload && value.filename && value.fileb64\" class=\"form-control checking-field\" \r\n placeholder=\"{{Placeholder || ('Seleziona un File' | localize : lc)}}...\" [(ngModel)]=\"value.filename\" name=\"dsfile_{{InternalName}}\" #innerInput=\"ngModel\" />\r\n <!--Clean-->\r\n <i class=\"fa fa-times file-delete-btn\" (click)=\"fileChange(true); $event.stopPropagation(); false;\" *ngIf=\"value.filename\"></i>\r\n <!--Download-->\r\n <div *ngIf=\"AllowDownload && value.filename && value.fileb64\" class=\"app-pointer file-download-btn\" (click)=\"onDownloadFile(); $event.stopPropagation(); false;\">\r\n <span class=\"file-download-btn-text\">Download <i class=\"fa fa-download\"></i></span>\r\n </div>\r\n </label>\r\n</div>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { MultiSelect, MultiSelectModule } from 'primeng/multiselect';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-multiselect\",\r\n templateUrl: \"form-multiselect.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [MultiSelectModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormMultiselectComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormMultiselectComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() display: \"comma\" | \"chip\" = undefined;\r\n @Input() InOutFormat: 'KeyValues' | 'CommaSeparatedList' | 'JsonList' | 'List' = 'List';\r\n\r\n /** Nel caso dei componenti data il Placeholder è il formato, mentre la label floattante, se esistente, dev'essere specificata */\r\n @Input() FloatingLabel: boolean = true;\r\n\r\n @Input() MaxShownElements: number = 20;\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n if (this.display === undefined)\r\n this.setDisplayMode();\r\n }\r\n\r\n protected setDisplayMode() {\r\n this.display = \"comma\";\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<MultiSelect>(<any>this.innerElement)).el;\r\n\r\n if (!this.Placeholder && this.required)\r\n this.Placeholder = \"Seleziona uno o più valori...\";\r\n }\r\n\r\n protected override async getValueIn(value: any): Promise<any> {\r\n if(!value) return [];\r\n\r\n var ids = null;\r\n switch (this.InOutFormat) {\r\n case \"CommaSeparatedList\":\r\n if (typeof value === 'string' || value instanceof String)\r\n ids = (value as string).split(',')\r\n break;\r\n case \"JsonList\":\r\n if (typeof value === 'string' || value instanceof String)\r\n ids = JSON.parse(value as string);\r\n break;\r\n case \"List\":\r\n ids = value.map(t => t.toString());\r\n break;\r\n case \"KeyValues\":\r\n ids = value.map(t => t.id.toString());\r\n break;\r\n }\r\n\r\n return ids;\r\n }\r\n\r\n protected override async getValueOut(value: string[]): Promise<any> {\r\n if(!value) return [];\r\n\r\n switch (this.InOutFormat) {\r\n case \"CommaSeparatedList\":\r\n return value.join(',');\r\n case \"JsonList\":\r\n return JSON.stringify(value)\r\n case \"KeyValues\":\r\n return value.map(t => { return { id: t, description: this.BoundSourceCache[t].description } });\r\n case \"List\":\r\n return value.map(t => t); // Per staccare i riferimenti\r\n }\r\n }\r\n\r\n protected override async getEvaluatedModel(value: { id: string, description: string }[]): Promise<string> {\r\n if (!value) return \"\";\r\n\r\n return this.EvaluatedModel = value.map(t => t.description).join(', ');\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <p-multiselect \r\n style=\"width: 100%\"\r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [filter]=\"true\" \r\n filterBy=\"description\"\r\n [showClear]=\"true\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [maxSelectedLabels]=\"MaxShownElements\"\r\n [display]=\"display\"\r\n [options]=\"BoundSource()\"\r\n [placeholder]=\"FloatingLabel ? '' : Placeholder\"\r\n optionLabel=\"description\"\r\n optionValue=\"id\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (onBlur)=\"onTouched(); finalized()\"\r\n />\r\n\r\n <label>{{FloatingLabel ? Placeholder : null}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { booleanAttribute, ChangeDetectionStrategy, Component, forwardRef, input, Input, signal, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { AutoCompleteModule, AutoComplete, AutoCompleteCompleteEvent } from 'primeng/autocomplete';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\";\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\nimport { forkJoin, Observable, firstValueFrom } from \"rxjs\";\r\n\r\n/*\r\n * N.B: C'è un bug per cui passando un array insieme a optionValue genera chips vuote: https://github.com/primefaces/primeng/pull/18044\r\n * Quindi internamente il valore è sempre un oggetto o una lista di oggetti. \r\n * In ingresso faccio ricerche per id per valorizzare le suggestions iniziali, \r\n * mentre in uscita seleziono gli id per tenere il comportamento coerente alla versione precedente della libreria\r\n */\r\n@Component({\r\n selector: \"form-autocomplete\",\r\n templateUrl: \"form-autocomplete.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [AutoCompleteModule, AutoComplete, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormAutocompleteComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormAutocompleteComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n private _baseSource: any[] = null;\r\n private _availableSource: boolean;\r\n\r\n /** Numero minimo di caratteri per far partire la ricerca */\r\n public MinChars = input(3);\r\n\r\n /** Contesto per la funzione di ricerca */\r\n @Input() SearchFunctionContext: any;\r\n\r\n @Input() SearchFunction: (search: string, byid: boolean, context?: any) => Observable<{ id: string, description: string }[]> = null;\r\n\r\n /** Indica se usare la modalità multiselezione o no */\r\n @Input({ transform: booleanAttribute }) multiple: boolean | undefined;\r\n\r\n @Input({ transform: booleanAttribute }) forceSelection: boolean | undefined;\r\n\r\n public style = signal({ \"width\": \"100%\" })\r\n public typeahead = signal(true);\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n // Se c'è una Source riempio un DB temporaneo coi valori. Le ricerche si baseranno su di lui\r\n this._baseSource = !!this.Source ? [...this.Source] : [];\r\n this.Source = [];\r\n\r\n // Il typeahead dev'essere fatto quando o c'è una source (filtro in memoria) o c'è una SearchFunction (filtro Code behind)\r\n // Lo metto anche se è un input singolo per generare gli eventi di change quando si scrive dato che input singolo, senza source, e senza forceselection\r\n // tira fuori un autocomplete in cui è impossibile scriverci qualcosa dentro\r\n this._availableSource = (this._baseSource?.length || 0) > 0 || !!this.SearchFunction;\r\n this.typeahead.set(this._availableSource);\r\n\r\n // La source potrebbe arrivare dopo....\r\n \r\n // if (!this._availableSource && !this.forceSelection && !this.multiple)\r\n // throw `Per il controllo ${this.name} non esiste una sorgente dati, la selezione di un valore non è obbligatoria, e non è un selettore multiplo stile chips. Fatti un esame di coscienza e cerca di capire che non è un autocomplete.`\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<AutoComplete>(<any>this.innerElement)).el;\r\n }\r\n\r\n search(event: AutoCompleteCompleteEvent) {\r\n\r\n if (this.SearchFunction) {\r\n this.SearchFunction(event.query, false, this.SearchFunctionContext).subscribe(t => {\r\n // la source è ottimizzata. Se fra una chiamata e l'altra non cambiano i valori non effettua refresh, ma questo vuol dire che se aggiungendo un carattere\r\n // i risultati sono gli stessi della chiamata precedente si inchioda, perché fa partire una chiamata che secondo la lib è inconcludente.\r\n // In realtà è concludente, solo che la lib non se ne accorge. In questo modo mi assicuro che si svegli\r\n this.Source = [];\r\n requestAnimationFrame(() => { this.Source = t; });\r\n });\r\n return;\r\n }\r\n\r\n this.Source = [];\r\n\r\n if ((this._baseSource?.length || 0) === 0)\r\n return;\r\n\r\n requestAnimationFrame(() => {\r\n let query = event.query.toLocaleLowerCase();\r\n this.Source = this._baseSource.filter(t => t.description.toLocaleLowerCase().includes(query));\r\n });\r\n }\r\n\r\n async changed(event){\r\n\r\n // Se c'è il typeahead, l'evento di change aggiunge correttamente l'oggetto dalla source in formato { id, description }\r\n if (this.typeahead() && this._availableSource) {\r\n super.changed(event);\r\n return;\r\n }\r\n\r\n // Senza typeahead invece emette delle stringhe con il valore scritto. \r\n // L'ultimo valore aggiunto (in caso di inserimento multiplo), o il valore attuale (in caso di inseirmento singolo)\r\n // devono essere trasformati da una string al formato { id: event, description: event } \r\n if (this.multiple) {\r\n let arr = (<Array<any>>event);\r\n let lastElement = arr.slice(-1)[0];\r\n if (typeof lastElement === \"string\")\r\n arr[arr.length - 1] = { id: lastElement, description: lastElement }\r\n }\r\n else if (typeof event === \"string\") {\r\n event = { id: event, description: event }\r\n }\r\n\r\n super.changed(event);\r\n }\r\n\r\n protected override async getValueOut(value: string | { id: string, description: string } | string[] | { id: string, description: string }[]) {\r\n if (typeof value === \"string\")\r\n return value;\r\n\r\n return Array.isArray(value) ? value.map((t: string | { id: string, description: string }) => typeof t === \"string\" ? t : t.id) : typeof value === \"string\" ? value : value.id;\r\n }\r\n\r\n protected override async getValueIn(value: string | string[]) {\r\n let vals = Array.isArray(value) ? value : [value];\r\n\r\n if (!value || (vals?.length || 0) == 0)\r\n return null;\r\n\r\n if (this.SearchFunction) {\r\n // Su nuovo valore ricarcio la source come unione di tutte le ricerche di tutti gli item presi per id\r\n let res = await firstValueFrom(forkJoin(vals.map(v => this.SearchFunction(v, true, this.SearchFunctionContext))));\r\n\r\n // Chiamo il flat 2 volte per tenere i riferimenti separati. Non ne voglio sapere niente.\r\n this.Source = res.flat();\r\n return this.multiple ? res.flat() : res.flat()[0];\r\n }\r\n\r\n if ((this._baseSource?.length || 0) === 0)\r\n return this.multiple ? vals.map(t => { return { id: t, description: t } }) : { id: vals[0], description: vals[0] };\r\n\r\n let items = this._baseSource.filter(t => vals.map(v => v.toString()).includes(t.id));\r\n return this.multiple ? items : items[0];\r\n }\r\n\r\n protected override async getEvaluatedModel(value: string | string[]): Promise<string> {\r\n return Array.isArray(value) ? value.map(id => this.BoundSourceCache[id]?.description ?? id).join(',') : this.BoundSourceCache[value]?.description ?? value;\r\n }\r\n}","<!-- Riga di debug -->\r\n<!-- <div><strong>Valore interno:</strong> {{value | json}}</div> -->\r\n\r\n<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n <p-autocomplete \r\n size=\"small\" \r\n autocomplete=\"off\"\r\n #innerInput=\"ngModel\" \r\n #innerElement \r\n [style]=\"style()\"\r\n [attr.name]=\"InternalName\" \r\n [attr.id]=\"InternalName\" \r\n [multiple]=\"multiple\"\r\n [fluid]=\"multiple\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [suggestions]=\"BoundSource()\"\r\n [forceSelection]=\"forceSelection\"\r\n [typeahead]=\"typeahead()\"\r\n [virtualScroll]=\"true\"\r\n [virtualScrollItemSize]=\"44\"\r\n optionLabel=\"description\"\r\n (completeMethod)=\"search($event)\"\r\n [minLength]=\"MinChars()\"\r\n [ngModel]=\"value\" \r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (blur)=\"onTouched(); finalized()\">\r\n </p-autocomplete>\r\n\r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","import { TemplateRef } from \"@angular/core\";\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\nexport class BaseFormConfiguration {\r\n DisplayCondition: boolean = true;\r\n DisplayMode: boolean = false;\r\n DisplayLayout: 'form' | 'inline' | 'hidden' = 'form';\r\n FormLayout: boolean = true;\r\n DisplayModeTemplate: TemplateRef<any> = null;\r\n Label: string = null;\r\n Last: boolean = false;\r\n FormGroupClass: string = null;\r\n Placeholder: string = null;\r\n LabelInputRatio: string = null;\r\n name: string = null;\r\n readonly: boolean | undefined = undefined;\r\n disabled: boolean | undefined = undefined;\r\n Validation: boolean = true;\r\n SetValidationSubject: Subject<{ fieldName: string, error: string }> = null;\r\n required: boolean | '' | undefined = undefined;\r\n Display: string = '{description}';\r\n IdField: string = \"id\";\r\n Source: any[] = null;\r\n statusChangesObservable: Observable<any> = null;\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, forwardRef, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { InputNumberModule, InputNumber } from 'primeng/inputnumber';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\"\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\"\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\"\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { InputSkeletonComponent } from \"../base/skeleton/input-skeleton.component\";\r\n\r\n@Component({\r\n selector: \"form-currency\",\r\n templateUrl: \"form-currency.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [InputNumberModule, FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule, InputSkeletonComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormCurrencyComponent), multi: true }],\r\n standalone: true\r\n})\r\nexport class EsFormCurrencyComponent extends BaseFormControl implements ControlValueAccessor {\r\n\r\n @Input() mode: 'currency' | 'decimal' = 'decimal';\r\n \r\n @Input() Precision: number = 2;\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n // Eh... checcedevofa\r\n this.innerElement = (<InputNumber>(<any>this.innerElement)).el;\r\n }\r\n}","<input-skeleton [Control]=\"controlTemplate\" [For]=\"this\"></input-skeleton>\r\n\r\n<ng-template #controlTemplate>\r\n <p-floatlabel variant=\"on\">\r\n\r\n <p-inputnumber \r\n size=\"small\"\r\n #innerInput=\"ngModel\"\r\n #innerElement\r\n autocomplete=\"off\"\r\n style=\"width: 100%;\"\r\n [attr.name]=\"InternalName\"\r\n [attr.id]=\"InternalName\"\r\n [disabled]=\"disabled\" \r\n [required]=\"required\"\r\n [readonly]=\"readonly\"\r\n [pattern]=\"pattern\"\r\n [minFractionDigits]=\"Precision\"\r\n [maxFractionDigits]=\"Precision\"\r\n [mode]=\"mode\"\r\n [currency]=\"mode === 'currency' ? 'EUR' : undefined\"\r\n locale=\"it-IT\"\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"changed($event)\" \r\n (click)=\"focused($event);\"\r\n (onBlur)=\"onTouched(); finalized()\"\r\n />\r\n\r\n <label>{{Placeholder}}</label>\r\n </p-floatlabel>\r\n\r\n</ng-template>\r\n\r\n<p-popover styleClass='validation-tooltip' #tooltip>{{TooltipText}}</p-popover>","// Angular\r\nimport { ChangeDetectionStrategy, Component, ContentChild, forwardRef, Injector, Input, signal, ViewEncapsulation, WritableSignal } from \"@angular/core\";\r\nimport { AbstractControl, ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn } from \"@angular/forms\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n// Prime NG\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { PopoverModule } from \"primeng/popover\";\r\nimport { InputGroupModule } from \"primeng/inputgroup\";\r\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\r\n\r\n// RxJs\r\nimport { Observable, Subject } from \"rxjs\";\r\n\r\n// Lib\r\nimport { BaseFormControl } from \"../base/base-form-control\";\r\nimport { EsFormDateComponent } from \"../date/form-date.component\";\r\nimport { EsFormInputComponent } from \"../input/form-input.component\";\r\nimport { BaseFormConfiguration } from \"../../models/BaseFormConfiguration\";\r\nimport { EsFormCheckboxComponent } from \"../checkbox/form-checkbox.component\";\r\nimport { EsFormSelectComponent } from \"../select/form-select.component\";\r\nimport { EsFormAutocompleteComponent } from \"../autocomplete/form-autocomplete.component\";\r\nimport { EsFormDateTimeComponent } from \"../datetime/form-datetime.component\";\r\nimport { EsFormTimeComponent } from \"../time/form-time.component\";\r\nimport { EsFormFileComponent } from \"../file/form-file.component\";\r\nimport { EsFormCurrencyComponent } from \"../currency/form-currency.component\";\r\n\r\n/*\r\nQuirk di questo componente:\r\n\r\n1: Se viene utilizzato lo stesso name per il <form-adaptive esterno e il <form-roba interno, angular mergia tutto in un unico ngControl, ma gli eventi sono sul riferimento originale (form-adaptive, non form-roba).\r\nPer poter collegare l'observable di cambio di stato per i tooltip (che devono essere collegati al form-roba), recupero al volo l'observable e lo riassegno internamente a **statusChangesObservable**. \r\nÈ un Input assolutamente da non utilizzare lato programmatore.\r\n\r\n^ PORCATA. abbastanza hackerosa, però estremamente funzionale\r\n\r\n2: con **performFormLogic** a false, mi assicuro di tenere l'implementazione standard del ControlValueAccessor mentre faccio gestire tutto il resto al componente interno.\r\nEsFormAdaptiveComponent deve SOLO fare da passacarte (TRANNE PER LE CASISTICHE FLOAT... VEDI SOTTO)\r\n\r\n*/\r\n@Component({\r\n selector: \"form-adaptive\",\r\n templateUrl: \"form-adaptive.component.html\",\r\n styleUrls: [\"../base/base-form-control.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [\r\n FormsModule, CommonModule, FloatLabelModule, PopoverModule, InputGroupModule, InputGroupAddonModule,\r\n\r\n EsFormInputComponent,\r\n EsFormDateComponent,\r\n EsFormCheckboxComponent,\r\n EsFormSelectComponent,\r\n EsFormAutocompleteComponent,\r\n EsFormDateTimeComponent,\r\n EsFormTimeComponent,\r\n EsFormFileComponent,\r\n EsFormCurrencyComponent\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => EsFormAdaptiveComponent), multi: true },\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => EsFormAdaptiveComponent), multi: true }\r\n ],\r\n standalone: true\r\n})\r\nexport class EsFormAdaptiveComponent extends BaseFormControl implements ControlValueAccessor, Validator {\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del suffisso */\r\n @ContentChild(\"suffix\", { static: false }) suffixAdaptive;\r\n\r\n /** Elemento che contiene la proiezione dell'HTML del prefisso */\r\n @ContentChild(\"prefix\", { static: false }) prefixAdaptive;\r\n\r\n /** Tipologia che decide che componente mostrare */\r\n @Input() Type: 'string' | 'float' | 'date' | 'number' | 'int' | 'boolean' | 'enum' | 'autocomplete' | 'datetime' | 'time' | 'file' | 'currency';\r\n /** Messaggio per quando si binda un form-adaptive senza tipo */\r\n @Input() TypeMissingMessage: string;\r\n\r\n // Specifico autocomplete\r\n @Input() SearchFunction: (search: string, byid: boolean, context?: any) => Observable<{ id: string, description: string }[]> = null;\r\n\r\n // Specifico currency\r\n @Input() Precision: number = 2;\r\n\r\n @Input() TypePattern: string = \"\";\r\n \r\n public IntPattern = signal('^[0-9]\\\\d*$');\r\n public FloatPattern = signal('^([0-9]*[,])?[0-9]+$');\r\n public config: WritableSignal<BaseFormConfiguration> = signal(null);\r\n\r\n constructor(inj: Injector) { \r\n super(inj);\r\n this.performFormLogic = false;\r\n }\r\n\r\n public ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.handleFloatPatternSeparately();\r\n // TYPE PATTERN funziona solo con number e float\r\n }\r\n\r\n protected override async getValueIn(value: any): Promise<any> {\r\n if ((this.Type === \"float\" || this.Type === \"number\"))\r\n return value?.toString()?.replace?.(\".\", \",\");\r\n else\r\n return value;\r\n }\r\n\r\n protected override async getValueOut(value: any): Promise<any> {\r\n if ((this.Type === \"float\" || this.Type === \"number\")) {\r\n this.floatValuePreAdjustmente = value;\r\n return value?.replace?.(\".\", \"\")?.replace?.(\",\", \".\");\r\n }\r\n else\r\n return value;\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n super.ngAfterViewInit();\r\n\r\n let defaultConfig = new BaseFormConfiguration();\r\n let properties = Object.keys(defaultConfig);\r\n // Riempio la configurazione con tutte le proprietà definite in questa istanza. \r\n // Tutto per passarla al livello sotto\r\n for (let i = 0; i < properties.length; i++) {\r\n let p = properties[i];\r\n defaultConfig[p] = this[p];\r\n }\r\n this.config.set(defaultConfig);\r\n }\r\n\r\n /*\r\n ****************************************************************************************************************************\r\n ****************************************************************************************************************************\r\n ************************************* GESTIONE CUSTOM PER I NUMERI FLOATING POINT ****************************************\r\n ****************************************************************************************************************************\r\n ****************************************************************************************************************************\r\n */\r\n\r\n /*\r\n Per i numeri float, il valore che mostro è diverso dal valore sotto perché ci sono degli aggiustamenti di numeri, virgola e non.\r\n Il componente interno lavora con `value` che rappresenta il valore reale, number, mentre il componente esterno wrappa questo valore reale\r\n in una rappresentazione in stringa italiana per gli input. \r\n Dato che il valore da validare è quello esterno (scritto in italiano) lascio il componente interno senza pattern ed implemento il Validatore qui\r\n\r\n N.B: QUESTA IMPLEMENTAZIONE NON MI PIACE. BISOGNA CERCARE UNA VIA PIU BELLA QUANDO SI HA UN PO' DI TEMPO\r\n */\r\n\r\n /** Variabile interna che salva il valore degli input float prima dell'aggiustamento */\r\n private floatValuePreAdjustmente: string;\r\n\r\n registerOnValidatorChange?(_: () => void) { }\r\n \r\n handleFloatPatternSeparately() {\r\n if ((this.Type === \"float\" || this.Type === \"number\")) {\r\n this.pattern = this.TypePattern || this.FloatPattern();\r\n this.SetValidationSubject = this.SetValidationSubject || new Subject<{ fieldName: string, error: string }>();\r\n }\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n var ret = [\"number\", \"float\"].includes(this.Type) ? this.customPatternValidator(this.pattern)(control) : null;\r\n this.SetValidationSubject?.next?.({ fieldName: this.name, error: ret?.pattern ? \"Formato input errato\" : \"\" });\r\n return ret;\r\n }\r\n\r\n /** Validatore originale angular, copiaincollato. Cambiata solo la riga dove c'è `this.floatValuePreAdjustmente` */\r\n customPatternValidator(pattern: string | RegExp): ValidatorFn {\r\n if (!pattern) return (_: AbstractControl) => null;\r\n let regex: RegExp;\r\n let regexStr: string;\r\n\r\n if (typeof pattern === 'string') {\r\n regexStr = '';\r\n if (pattern.charAt(0) !== '^') regexStr += '^';\r\n regexStr += pattern;\r\n if (pattern.charAt(pattern.length - 1) !== '$') regexStr += '$';\r\n regex = new RegExp(regexStr);\r\n }\r\n\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (!control.value) return null;\r\n\r\n // Caricamento avvenuto adesso da modello\r\n if(control.value && !this.floatValuePreAdjustmente)\r\n this.floatValuePreAdjustmente = control.value.toString().replace(\".\", \",\");\r\n\r\n return regex.test(this.floatValuePreAdjustmente) ? null : { 'pattern': { 'requiredPattern': regexStr, 'actualValue': this.floatValuePreAdjustmente } };\r\n };\r\n }\r\n}","<!-- Riga di debug -->\r\n<!-- <div><strong>Valore interno:</strong> {{value | json}}</div> -->\r\n\r\n@if(!Type){\r\n <div class=\"app-margin-top-5\"><em>{{TypeMissingMessage}}</em></div>\r\n}\r\n\r\n@if(config()){\r\n @switch(Type){\r\n @case (\"currency\") {\r\n <form-currency [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [Precision]=\"Precision\"></form-currency>\r\n }\r\n @case (\"date\") {\r\n <form-date [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-date>\r\n }\r\n @case (\"boolean\") {\r\n <form-checkbox [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-checkbox>\r\n }\r\n @case (\"enum\") {\r\n <form-select [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [Source]=\"BoundSource()\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-select>\r\n }\r\n @case (\"autocomplete\") {\r\n <form-autocomplete [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [SearchFunction]=\"SearchFunction\"></form-autocomplete>\r\n }\r\n @case (\"datetime\") {\r\n <form-datetime [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-datetime>\r\n }\r\n @case (\"time\") {\r\n <form-time [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-time>\r\n }\r\n @case (\"file\") {\r\n <form-file [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\"></form-file>\r\n }\r\n @case (\"string\") {\r\n <form-input [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [pattern]=\"pattern ?? ''\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-input>\r\n }\r\n @case (\"int\") {\r\n <form-input [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\" [pattern]=\"pattern ?? IntPattern()\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-input>\r\n }\r\n @default {\r\n <!-- float e number -->\r\n <form-input [Form]=\"Form\" [FormLayout]=\"FormLayout\" [ngModel]=\"value\" (ngModelChange)=\"changed($event)\" (inputChange)=\"inputChange.emit($event)\" (inputFinalized)=\"inputFinalized.emit($event)\" (inputFocus)=\"inputFocus.emit($event)\" [name]=\"name\" [disabled]=\"disabled\" [Configuration]=\"config()\">\r\n @if(suffixAdaptive){\r\n <ng-template #suffix><ng-container *ngTemplateOutlet=\"suffixAdaptive\"></ng-container></ng-template>\r\n }\r\n @if(prefixAdaptive){\r\n <ng-template #prefix><ng-container *ngTemplateOutlet=\"prefixAdaptive\"></ng-container></ng-template>\r\n }\r\n </form-input>\r\n }\r\n }\r\n}","// Angular\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n// Es\r\nimport { BaseLocalization, LocalizationModule } from \"@esfaenza/localizations\";\r\n\r\n// Modelli\r\nimport { FRM_DEBUG_MODE } from './tokens';\r\nimport { EsFormsModuleConfig } from './models/EsFormsModuleConfig';\r\n\r\n// Componenti\r\nimport { EsFormInputComponent } from './forms/input/form-input.component';\r\nimport { EsFormSelectComponent } from './forms/select/form-select.component';\r\nimport { EsFormDateComponent } from './forms/date/form-date.component';\r\nimport { EsFormDateTimeComponent } from './forms/datetime/form-datetime.component';\r\nimport { EsFormTimeComponent } from './forms/time/form-time.component';\r\nimport { EsFormCheckboxComponent } from './forms/checkbox/form-checkbox.component';\r\nimport { EsFormTextareaComponent } from './forms/textarea/form-textarea.component';\r\nimport { EsFormErrorComponent } from './forms/error/form-error.component';\r\nimport { EsFormTemplateComponent } from './forms/template/form-template.component';\r\nimport { EsFormInfoComponent } from './forms/info/form-info.component';\r\nimport { EsFormFileComponent } from './forms/file/form-file.component';\r\nimport { EsFormMultiselectComponent } from './forms/multiselect/form-multiselect.component';\r\nimport { EsFormAutocompleteComponent } from './forms/autocomplete/form-autocomplete.component';\r\nimport { EsFormAdaptiveComponent } from './forms/adaptive/form-adaptive.component';\r\nimport { EsFormCurrencyComponent } from './forms/currency/form-currency.component';\r\n\r\n/** Componenti Standalone reesportati come se fossero moduli */\r\nconst STANDALONE_COMPONENTS = [\r\n EsFormInputComponent,\r\n EsFormSelectComponent,\r\n EsFormDateComponent,\r\n EsFormDateTimeComponent,\r\n EsFormTimeComponent,\r\n EsFormCheckboxComponent,\r\n EsFormTextareaComponent,\r\n EsFormInfoComponent,\r\n EsFormErrorComponent,\r\n EsFormTemplateComponent,\r\n EsFormFileComponent,\r\n EsFormMultiselectComponent,\r\n EsFormAutocompleteComponent,\r\n EsFormAdaptiveComponent,\r\n EsFormCurrencyComponent\r\n];\r\n\r\n/** Moduli utilizzati solo dalla libreria */\r\nconst MODULES = [\r\n CommonModule,\r\n FormsModule,\r\n LocalizationModule\r\n];\r\n\r\n@NgModule({\r\n imports: [...MODULES, ...STANDALONE_COMPONENTS],\r\n exports: [...STANDALONE_COMPONENTS]\r\n})\r\nexport class FormsAndValidationsModule {\r\n\r\n static forRoot(config?: EsFormsModuleConfig): ModuleWithProviders<FormsAndValidationsModule> {\r\n return {\r\n ngModule: FormsAndValidationsModule,\r\n providers: [\r\n { provide: FRM_DEBUG_MODE, useValue: config?.debugMode != null ? config?.debugMode : false }\r\n ]\r\n };\r\n }\r\n}","//models\r\nexport * from './lib/models/AppFile';\r\nexport * from './lib/models/ChangeEvent';\r\nexport * from './lib/models/EsFormsModuleConfig';\r\nexport * from './lib/tokens';\r\n\r\n //module\r\nexport * from './lib/forms.module';\r\n\r\n//forms\r\nexport * from './lib/forms/datetime/form-datetime.component';\r\nexport * from './lib/forms/adaptive/form-adaptive.component';\r\nexport * from './lib/forms/template/form-template.component';\r\nexport * from './lib/forms/error/form-error.component';\r\nexport * from './lib/forms/info/form-info.component';\r\nexport * from './lib/forms/checkbox/form-checkbox.component';\r\nexport * from './lib/forms/date/form-date.component';\r\nexport * from './lib/forms/input/form-input.component';\r\nexport * from './lib/forms/select/form-select.component';\r\nexport * from './lib/forms/textarea/form-textarea.component';\r\nexport * from './lib/forms/autocomplete/form-autocomplete.component';\r\nexport * from './lib/forms/file/form-file.component';\r\nexport * from './lib/forms/time/form-time.component';\r\nexport * from './lib/forms/multiselect/form-multiselect.component';\r\nexport * from './lib/forms/base/base-form-control';\r\nexport * from './lib/forms/currency/form-currency.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i5","i3","i2","i4"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare class EsFormTemplateComponent {
|
|
8
8
|
/** Indica se l'input è obbligatorio o no */
|
|
9
|
-
required: boolean;
|
|
9
|
+
required: boolean | '' | undefined;
|
|
10
10
|
/** Mostra un testo a sinistra dell'input, **FormLayout** permettendo */
|
|
11
11
|
Label: string;
|
|
12
12
|
/** Eventuali classi extra da applicare alla Label, di default c'è solo un leggero margin top */
|
|
@@ -35,4 +35,5 @@ export declare class EsFormTemplateComponent {
|
|
|
35
35
|
set LabelInputRatio(input: string);
|
|
36
36
|
static ɵfac: i0.ɵɵFactoryDeclaration<EsFormTemplateComponent, never>;
|
|
37
37
|
static ɵcmp: i0.ɵɵComponentDeclaration<EsFormTemplateComponent, "form-template", never, { "required": { "alias": "required"; "required": false; }; "Label": { "alias": "Label"; "required": false; }; "LabelClass": { "alias": "LabelClass"; "required": false; }; "FormLayout": { "alias": "FormLayout"; "required": false; }; "LabelColWidth": { "alias": "LabelColWidth"; "required": false; }; "InputColWidth": { "alias": "InputColWidth"; "required": false; }; "Last": { "alias": "Last"; "required": false; }; "FormGroupClass": { "alias": "FormGroupClass"; "required": false; }; "DisplayMode": { "alias": "DisplayMode"; "required": false; }; "DisplayModeTemplate": { "alias": "DisplayModeTemplate"; "required": false; }; "DisplayLayout": { "alias": "DisplayLayout"; "required": false; }; "DisplayCondition": { "alias": "DisplayCondition"; "required": false; }; "InlineSeparator": { "alias": "InlineSeparator"; "required": false; }; "LabelInputRatio": { "alias": "LabelInputRatio"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
38
|
+
static ngAcceptInputType_required: unknown;
|
|
38
39
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esfaenza/forms-and-validations",
|
|
3
|
-
"version": "19.2.
|
|
3
|
+
"version": "19.2.59",
|
|
4
4
|
"private": false,
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"tslib": "^2.0.0"
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"@angular/common": "^19.2.15",
|
|
10
10
|
"@angular/core": "^19.2.15",
|
|
11
11
|
"@angular/forms": "^19.2.15",
|
|
12
|
-
"@esfaenza/extensions": "^19.2.
|
|
13
|
-
"@esfaenza/localizations": "^19.2.
|
|
12
|
+
"@esfaenza/extensions": "^19.2.30",
|
|
13
|
+
"@esfaenza/localizations": "^19.2.22",
|
|
14
14
|
"@primeng/themes": "19.1.4",
|
|
15
15
|
"primeng": "19.1.4",
|
|
16
16
|
"primelocale": "2.2.2",
|
|
17
17
|
"ngx-toastr": "19.0.0",
|
|
18
|
-
"dayjs": "1.11.
|
|
18
|
+
"dayjs": "1.11.19",
|
|
19
19
|
"sweetalert2": "11.26.3"
|
|
20
20
|
},
|
|
21
21
|
"module": "fesm2022/esfaenza-forms-and-validations.mjs",
|