@esfaenza/forms-and-validations 11.2.147 → 11.2.149

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/bundles/esfaenza-forms-and-validations.umd.js +48 -26
  2. package/bundles/esfaenza-forms-and-validations.umd.js.map +1 -1
  3. package/esfaenza-forms-and-validations.metadata.json +1 -1
  4. package/esm2015/lib/forms/base-form-control.js +17 -1
  5. package/esm2015/lib/forms/form-select/form-select.component.js +2 -2
  6. package/esm2015/lib/validations/base-validation.js +15 -5
  7. package/esm2015/lib/validations/validation-autocomplete/validation-autocomplete.component.js +6 -5
  8. package/esm2015/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.js +6 -5
  9. package/esm2015/lib/validations/validation-currency/validation-currency.component.js +2 -2
  10. package/esm2015/lib/validations/validation-date/validation-date.component.js +3 -4
  11. package/esm2015/lib/validations/validation-datetime/validation-datetime.component.js +3 -4
  12. package/esm2015/lib/validations/validation-input/validation-input.component.js +3 -4
  13. package/esm2015/lib/validations/validation-select/validation-select.component.js +5 -6
  14. package/esm2015/lib/validations/validation-text-area/validation-text-area.component.js +2 -2
  15. package/fesm2015/esfaenza-forms-and-validations.js +49 -27
  16. package/fesm2015/esfaenza-forms-and-validations.js.map +1 -1
  17. package/lib/forms/base-form-control.d.ts +1 -0
  18. package/lib/validations/base-validation.d.ts +12 -1
  19. package/lib/validations/validation-autocomplete/validation-autocomplete.component.d.ts +2 -2
  20. package/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.d.ts +2 -2
  21. package/lib/validations/validation-date/validation-date.component.d.ts +0 -1
  22. package/lib/validations/validation-datetime/validation-datetime.component.d.ts +0 -1
  23. package/lib/validations/validation-input/validation-input.component.d.ts +0 -1
  24. package/lib/validations/validation-select/validation-select.component.d.ts +0 -1
  25. package/package.json +1 -1
@@ -476,7 +476,9 @@
476
476
  * Nota bene: I tooltip rallentano tantissimo la pagina perché il tizio che ha fatto ngx bootstrap non è capace
477
477
  */
478
478
  var BaseValidation = /** @class */ (function () {
479
- function BaseValidation() {
479
+ /** @ignore Constructor */
480
+ function BaseValidation(cdr) {
481
+ this.cdr = cdr;
480
482
  /**
481
483
  * Variabile per tenere in memoria il fatto che il componente è forzato a invalido o no
482
484
  */
@@ -628,6 +630,7 @@
628
630
  _this.baseInput.control.setErrors({ forcedtoinvalid: true });
629
631
  _this.baseInput.control.markAsTouched();
630
632
  _this.baseInput.control.markAsDirty();
633
+ _this.cdr.detectChanges();
631
634
  });
632
635
  else
633
636
  setTimeout(function () {
@@ -666,8 +669,12 @@
666
669
  */
667
670
  BaseValidation.prototype.showTooltipWithMessage = function (messageOverride) {
668
671
  if (messageOverride === void 0) { messageOverride = null; }
669
- this.validationFailed = messageOverride || this.validationFailed || (this.InferErrorMessages ? this.inferMessage() : "");
670
- if (this.validationFailed)
672
+ // Aggiorno il messaggio di validazione solo se il valore è diverso dall'ultimo valore ricevuto
673
+ if (this.valueOnLastValidation != this.baseInput.value) {
674
+ this.validationFailedBind = messageOverride || this.validationFailed || (this.InferErrorMessages ? this.inferMessage() : "");
675
+ this.valueOnLastValidation = this.baseInput.value;
676
+ }
677
+ if (this.validationFailedBind)
671
678
  this.tooltip.show();
672
679
  };
673
680
  /**
@@ -747,6 +754,9 @@
747
754
  BaseValidation.decorators = [
748
755
  { type: core.Directive }
749
756
  ];
757
+ BaseValidation.ctorParameters = function () { return [
758
+ { type: core.ChangeDetectorRef }
759
+ ]; };
750
760
  BaseValidation.propDecorators = {
751
761
  tooltip: [{ type: core.ViewChild, args: [tooltip.TooltipDirective, { static: false },] }],
752
762
  tooltip_static: [{ type: core.ViewChild, args: [tooltip.TooltipDirective, { static: true },] }],
@@ -809,20 +819,19 @@
809
819
  * @ignore
810
820
  */
811
821
  function ValidationSelectComponent(_validators, _asyncValidators, injector, cdr, lc) {
812
- var _this = _super.call(this) || this;
822
+ var _this = _super.call(this, cdr) || this;
813
823
  _this._validators = _validators;
814
824
  _this._asyncValidators = _asyncValidators;
815
825
  _this.injector = injector;
816
- _this.cdr = cdr;
817
826
  _this.lc = lc;
818
827
  /**
819
828
  * valore del campo vuoto della select
820
829
  */
821
- _this.emptyFieldValue = "-2";
830
+ _this.emptyFieldValue = "-2000";
822
831
  /**
823
832
  * Valore del placeholder
824
833
  */
825
- _this.placeHolderValue = "-1";
834
+ _this.placeHolderValue = "-1000";
826
835
  /**
827
836
  * Per i componenti non obbligatori indica se fornire un "valore vuoto"
828
837
  */
@@ -937,7 +946,7 @@
937
946
  ValidationSelectComponent.decorators = [
938
947
  { type: core.Component, args: [{
939
948
  selector: "val-select",
940
- template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <select matNativeControl\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n name=\"val-select\"\r\n class=\"form-control\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n id=\"{{id}}\"\r\n [customRequired]=\"required ? 'true' : 'false'\"\r\n [CustomNullValues]=\"[placeHolderValue,emptyFieldValue]\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [class.checking-combo]=\"!noValidate\"\r\n [class.app-option-placeholder]=\"baseInput.value === placeHolderValue\"\r\n [class.no-bg-img]=\"!showValidationSymbol\"\r\n [disabled]=\"readonly\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip(); onBlur.emit(true);\"\r\n (ngModelChange)=\"onModelChange($event); onFinalize()\">\r\n\r\n <option *ngIf=\"placeholder\" [value]=\"placeHolderValue\" disabled selected hidden>{{placeholder}}</option>\r\n <option *ngIf=\"required == false && emptyValue\" [value]=\"emptyFieldValue\"></option>\r\n <ng-content></ng-content>\r\n </select>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
949
+ template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <select matNativeControl\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n name=\"val-select\"\r\n class=\"form-control\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n id=\"{{id}}\"\r\n [customRequired]=\"required ? 'true' : 'false'\"\r\n [CustomNullValues]=\"[placeHolderValue,emptyFieldValue]\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [class.checking-combo]=\"!noValidate\"\r\n [class.app-option-placeholder]=\"baseInput.value === placeHolderValue\"\r\n [class.no-bg-img]=\"!showValidationSymbol\"\r\n [disabled]=\"readonly\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip(); onBlur.emit(true);\"\r\n (ngModelChange)=\"onModelChange($event); onFinalize()\">\r\n\r\n <option *ngIf=\"placeholder\" [value]=\"placeHolderValue\" disabled selected hidden>{{placeholder}}</option>\r\n <option *ngIf=\"required == false && emptyValue\" [value]=\"emptyFieldValue\"></option>\r\n <ng-content></ng-content>\r\n </select>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
941
950
  encapsulation: core.ViewEncapsulation.None,
942
951
  changeDetection: core.ChangeDetectionStrategy.OnPush,
943
952
  providers: [
@@ -976,8 +985,7 @@
976
985
  * @ignore
977
986
  */
978
987
  function ValidationDateComponent(cdr, _validators, _asyncValidators, injector, lc, dateExts) {
979
- var _this = _super.call(this) || this;
980
- _this.cdr = cdr;
988
+ var _this = _super.call(this, cdr) || this;
981
989
  _this._validators = _validators;
982
990
  _this._asyncValidators = _asyncValidators;
983
991
  _this.injector = injector;
@@ -1111,7 +1119,7 @@
1111
1119
  ValidationDateComponent.decorators = [
1112
1120
  { type: core.Component, args: [{
1113
1121
  selector: "val-date",
1114
- template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input matInput\r\n [matDatepicker]=\"datepicker\"\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? (FloatingLabel ? undefined : placeholder) : _format\"\r\n [disabled]=\"readonly || disabled\"\r\n [isDisabled]=\"readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datepicker></mat-datepicker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
1122
+ template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input matInput\r\n [matDatepicker]=\"datepicker\"\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? (FloatingLabel ? undefined : placeholder) : _format\"\r\n [disabled]=\"readonly || disabled\"\r\n [isDisabled]=\"readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datepicker></mat-datepicker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
1115
1123
  encapsulation: core.ViewEncapsulation.None,
1116
1124
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1117
1125
  providers: [
@@ -1146,8 +1154,7 @@
1146
1154
  * @ignore
1147
1155
  */
1148
1156
  function ValidationInputComponent(cdr, _validators, _asyncValidators, injector, lc) {
1149
- var _this = _super.call(this) || this;
1150
- _this.cdr = cdr;
1157
+ var _this = _super.call(this, cdr) || this;
1151
1158
  _this._validators = _validators;
1152
1159
  _this._asyncValidators = _asyncValidators;
1153
1160
  _this.injector = injector;
@@ -1298,7 +1305,7 @@
1298
1305
  ValidationInputComponent.decorators = [
1299
1306
  { type: core.Component, args: [{
1300
1307
  selector: "val-input",
1301
- template: "<mat-form-field floatLabel=\"never\" appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label [class.app-margin-left-25]=\"HasPrefix\" *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-container *ngTemplateOutlet=\"prefix_internal\"></ng-container>\r\n </ng-container>\r\n\r\n <!-- Bisogna fixare un po' l'uso di readonly, disabled, frozen cazzi e mazzi -->\r\n <input matInput\r\n #baseInput='ngModel'\r\n #htmlInput\r\n type=\"{{type}}\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\"\r\n name=\"val-input\"\r\n class=\"form-control {{class}}\"\r\n id=\"{{id}}\"\r\n [class.app-margin-left-25]=\"HasPrefix\"\r\n [class.mat-input-with-suffix]=\"HasSuffix || Password || showWarning\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate && !showWarning\"\r\n [tooltip]=\"tolTemplate\"\r\n [readonly]=\"Frozen\"\r\n [disabled]=\"readonly || disabled\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n >\r\n <ng-container *ngIf=\"HasSuffix || Password || showWarning\">\r\n <ng-container *ngIf=\"!Password && !showWarning\">\r\n <ng-container *ngTemplateOutlet=\"suffix_internal\"></ng-container>\r\n </ng-container>\r\n\r\n <span class=\"form-input-suffix\" *ngIf=\"Password || showWarning\">\r\n <ng-container *ngIf=\"Password\" matSuffix>\r\n <a *ngIf=\"passShown\" class=\"fa fa-eye-slash app-fs-16 app-pointer\" (click)=\"type = 'password'; passShown = !passShown; $event.preventDefault()\"></a>\r\n <a *ngIf=\"!passShown\" class=\"fa fa-eye app-fs-16 app-pointer\" (click)=\"type = 'text'; passShown = !passShown; $event.preventDefault()\"></a>\r\n </ng-container>\r\n <ng-container *ngIf=\"showWarning\" matSuffix>\r\n <span title=\"{{warningTitle}}\" class=\"{{warningClass}} text-warning app-fs-16\"></span>\r\n </ng-container>\r\n </span>\r\n </ng-container>\r\n</mat-form-field>\r\n\r\n<!-- Questo compoennte nascosto serve solamente per assicurarsi che angular carichi gli stili dei mat-button che altrimenti non caricherebbe... dunno why -->\r\n<div hidden><mat-datepicker-toggle></mat-datepicker-toggle></div>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
1308
+ template: "<mat-form-field floatLabel=\"never\" appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label [class.app-margin-left-25]=\"HasPrefix\" *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-container *ngTemplateOutlet=\"prefix_internal\"></ng-container>\r\n </ng-container>\r\n\r\n <!-- Bisogna fixare un po' l'uso di readonly, disabled, frozen cazzi e mazzi -->\r\n <input matInput\r\n #baseInput='ngModel'\r\n #htmlInput\r\n type=\"{{type}}\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\"\r\n name=\"val-input\"\r\n class=\"form-control {{class}}\"\r\n id=\"{{id}}\"\r\n [class.app-margin-left-25]=\"HasPrefix\"\r\n [class.mat-input-with-suffix]=\"HasSuffix || Password || showWarning\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate && !showWarning\"\r\n [tooltip]=\"tolTemplate\"\r\n [readonly]=\"Frozen\"\r\n [disabled]=\"readonly || disabled\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n >\r\n <ng-container *ngIf=\"HasSuffix || Password || showWarning\">\r\n <ng-container *ngIf=\"!Password && !showWarning\">\r\n <ng-container *ngTemplateOutlet=\"suffix_internal\"></ng-container>\r\n </ng-container>\r\n\r\n <span class=\"form-input-suffix\" *ngIf=\"Password || showWarning\">\r\n <ng-container *ngIf=\"Password\" matSuffix>\r\n <a *ngIf=\"passShown\" class=\"fa fa-eye-slash app-fs-16 app-pointer\" (click)=\"type = 'password'; passShown = !passShown; $event.preventDefault()\"></a>\r\n <a *ngIf=\"!passShown\" class=\"fa fa-eye app-fs-16 app-pointer\" (click)=\"type = 'text'; passShown = !passShown; $event.preventDefault()\"></a>\r\n </ng-container>\r\n <ng-container *ngIf=\"showWarning\" matSuffix>\r\n <span title=\"{{warningTitle}}\" class=\"{{warningClass}} text-warning app-fs-16\"></span>\r\n </ng-container>\r\n </span>\r\n </ng-container>\r\n</mat-form-field>\r\n\r\n<!-- Questo compoennte nascosto serve solamente per assicurarsi che angular carichi gli stili dei mat-button che altrimenti non caricherebbe... dunno why -->\r\n<div hidden><mat-datepicker-toggle></mat-datepicker-toggle></div>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
1302
1309
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1303
1310
  providers: [
1304
1311
  { provide: localizations.LocalizationService, useClass: BaseValidationLoc },
@@ -1362,7 +1369,7 @@
1362
1369
  ValidationCurrencyComponent.decorators = [
1363
1370
  { type: core.Component, args: [{
1364
1371
  selector: "val-currency",
1365
- template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input #baseInput='ngModel'\r\n #htmlInput\r\n currencyMask\r\n matInput\r\n [readonly]=\"readonly\"\r\n [options]='CurrencyOptions'\r\n [(ngModel)]=\"value\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n class=\"form-control {{class}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n type=\"{{type}}\"\r\n [tooltip]=\"tolTemplate\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\" />\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div>\r\n <span class=\"close-button pull-right\" (click)=\"closeTooltip()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </span>\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
1372
+ template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <input #baseInput='ngModel'\r\n #htmlInput\r\n currencyMask\r\n matInput\r\n [readonly]=\"readonly\"\r\n [options]='CurrencyOptions'\r\n [(ngModel)]=\"value\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n class=\"form-control {{class}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n type=\"{{type}}\"\r\n [tooltip]=\"tolTemplate\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n autocomplete=\"{{autocomplete}}\" />\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div>\r\n <span class=\"close-button pull-right\" (click)=\"closeTooltip()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </span>\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
1366
1373
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1367
1374
  providers: [
1368
1375
  { provide: localizations.LocalizationService, useClass: BaseValidationLoc },
@@ -1423,7 +1430,7 @@
1423
1430
  ValidationTextAreaComponent.decorators = [
1424
1431
  { type: core.Component, args: [{
1425
1432
  selector: "val-textarea",
1426
- template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-full-height mat-no-border-top mat-height-auto\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <textarea matInput\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n [(ngModel)]=\"value\"\r\n name=\"val-textarea\"\r\n triggers=\"\"\r\n class=\"app-no-resize form-control {{class}}\"\r\n id=\"{{id}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n rows=\"{{rows}}\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n placement=\"top\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n (ngModelChange)=\"onModelChange($event)\">\r\n </textarea>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
1433
+ template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-full-height mat-no-border-top mat-height-auto\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n <textarea matInput\r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n [(ngModel)]=\"value\"\r\n name=\"val-textarea\"\r\n triggers=\"\"\r\n class=\"app-no-resize form-control {{class}}\"\r\n id=\"{{id}}\"\r\n [class.checking-field]=\"!noValidate\"\r\n rows=\"{{rows}}\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n placement=\"top\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\"\r\n (ngModelChange)=\"onModelChange($event)\">\r\n </textarea>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
1427
1434
  providers: [
1428
1435
  { provide: localizations.LocalizationService, useClass: BaseValidationLoc },
1429
1436
  {
@@ -1457,8 +1464,7 @@
1457
1464
  * @ignore
1458
1465
  */
1459
1466
  function ValidationDateTimeComponent(cdr, _validators, _asyncValidators, injector, lc, dateExts) {
1460
- var _this = _super.call(this) || this;
1461
- _this.cdr = cdr;
1467
+ var _this = _super.call(this, cdr) || this;
1462
1468
  _this._validators = _validators;
1463
1469
  _this._asyncValidators = _asyncValidators;
1464
1470
  _this.injector = injector;
@@ -1620,7 +1626,7 @@
1620
1626
  ValidationDateTimeComponent.decorators = [
1621
1627
  { type: core.Component, args: [{
1622
1628
  selector: "val-datetime",
1623
- template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n\r\n <input matInput \r\n [ngxMatDatetimePicker]=\"datepicker\" \r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? '' : _format\"\r\n [disabled]=\"readonly || disabled\"\r\n [isDisabled]=\"readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n\r\n <ngx-mat-datetime-picker #datepicker \r\n [showSpinners]=\"showSpinners\" \r\n [showSeconds]=\"showSeconds\" \r\n [stepHour]=\"stepHour\" \r\n [stepMinute]=\"stepMinute\" \r\n [stepSecond]=\"stepSecond\" \r\n [touchUi]=\"false\" \r\n [color]=\"'primary'\">\r\n </ngx-mat-datetime-picker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
1629
+ template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"placeholder && FloatingLabel\">{{placeholder}}</mat-label>\r\n\r\n <input matInput \r\n [ngxMatDatetimePicker]=\"datepicker\" \r\n #baseInput=\"ngModel\"\r\n #htmlInput\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n name=\"val-date\"\r\n id=\"{{id}}\"\r\n (click)=\"onFocus($event)\"\r\n class=\"form-control {{class}}\"\r\n autocomplete=\"{{autocomplete}}\"\r\n [placeholder]=\"FloatingLabel ? undefined : placeholder\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [placeholder]=\"placeholder ? '' : _format\"\r\n [disabled]=\"readonly || disabled\"\r\n [isDisabled]=\"readonly || disabled\"\r\n (dateChange)=\"outputValue($event); onFinalize();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip();\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"datepicker\"></mat-datepicker-toggle>\r\n\r\n <ngx-mat-datetime-picker #datepicker \r\n [showSpinners]=\"showSpinners\" \r\n [showSeconds]=\"showSeconds\" \r\n [stepHour]=\"stepHour\" \r\n [stepMinute]=\"stepMinute\" \r\n [stepSecond]=\"stepSecond\" \r\n [touchUi]=\"false\" \r\n [color]=\"'primary'\">\r\n </ngx-mat-datetime-picker>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
1624
1630
  encapsulation: core.ViewEncapsulation.None,
1625
1631
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1626
1632
  providers: [
@@ -1652,8 +1658,8 @@
1652
1658
  var ValidationAutocompleteComponent = /** @class */ (function (_super) {
1653
1659
  __extends(ValidationAutocompleteComponent, _super);
1654
1660
  /** @ignore */
1655
- function ValidationAutocompleteComponent(_validators, _asyncValidators, injector, lc) {
1656
- var _this = _super.call(this) || this;
1661
+ function ValidationAutocompleteComponent(cdr, _validators, _asyncValidators, injector, lc) {
1662
+ var _this = _super.call(this, cdr) || this;
1657
1663
  _this._validators = _validators;
1658
1664
  _this._asyncValidators = _asyncValidators;
1659
1665
  _this.injector = injector;
@@ -1747,7 +1753,7 @@
1747
1753
  ValidationAutocompleteComponent.decorators = [
1748
1754
  { type: core.Component, args: [{
1749
1755
  selector: "val-autocomplete",
1750
- template: "<!-- Val-Model: {{value}} -->\r\n<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input matInput\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n placeholder=\"{{placeholder}}\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n class=\"form-control {{class}}\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\">\r\n\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of FilteredSource\" [value]=\"option.id\">\r\n {{option.description}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
1756
+ template: "<!-- Val-Model: {{value}} -->\r\n<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top mat-height-fixed\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input matInput\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n placeholder=\"{{placeholder}}\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n class=\"form-control {{class}}\"\r\n [(ngModel)]=\"value\"\r\n [class.checking-field]=\"!noValidate\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (keyup)=\"($event.keyCode == 13 || $event.keyCode == 27) && onFinalize();\"\r\n (blur)=\"closeTooltip(); onFinalize();\">\r\n\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of FilteredSource\" [value]=\"option.id\">\r\n {{option.description}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
1751
1757
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1752
1758
  providers: [
1753
1759
  { provide: localizations.LocalizationService, useClass: BaseValidationLoc },
@@ -1762,6 +1768,7 @@
1762
1768
  },] }
1763
1769
  ];
1764
1770
  ValidationAutocompleteComponent.ctorParameters = function () { return [
1771
+ { type: core.ChangeDetectorRef },
1765
1772
  { type: Array, decorators: [{ type: core.Optional }, { type: core.Inject, args: [forms.NG_VALIDATORS,] }] },
1766
1773
  { type: Array, decorators: [{ type: core.Optional }, { type: core.Inject, args: [forms.NG_ASYNC_VALIDATORS,] }] },
1767
1774
  { type: core.Injector },
@@ -1780,8 +1787,8 @@
1780
1787
  var ValidationAutocompleteMultiComponent = /** @class */ (function (_super) {
1781
1788
  __extends(ValidationAutocompleteMultiComponent, _super);
1782
1789
  /** @ignore */
1783
- function ValidationAutocompleteMultiComponent(_validators, _asyncValidators, injector, lc) {
1784
- var _this = _super.call(this) || this;
1790
+ function ValidationAutocompleteMultiComponent(cdr, _validators, _asyncValidators, injector, lc) {
1791
+ var _this = _super.call(this, cdr) || this;
1785
1792
  _this._validators = _validators;
1786
1793
  _this._asyncValidators = _asyncValidators;
1787
1794
  _this.injector = injector;
@@ -1934,7 +1941,7 @@
1934
1941
  ValidationAutocompleteMultiComponent.decorators = [
1935
1942
  { type: core.Component, args: [{
1936
1943
  selector: "val-autocomplete-multi",
1937
- template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <ng-container *ngIf=\"selectData.length < ChipThreshold\" >\r\n <mat-chip *ngFor=\"let select of selectData\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(select)\">\r\n {{ select.description }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n\r\n <mat-chip *ngIf=\"selectData.length >= ChipThreshold\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(null)\">\r\n {{ selectData.length }} {{ 'Elements selected' | localize: lc }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n\r\n <input matInput\r\n [matChipInputFor]=\"chipList\"\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n [placeholder]=\"placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip();\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let data of FilteredSource\">\r\n <div (click)=\"toggleSelection(data); !HideChoicesOnSelection && $event.stopPropagation()\">\r\n <mat-checkbox [checked]=\"data.selected\" (change)=\"toggleSelection(data);\" (click)=\"!HideChoicesOnSelection && $event.stopPropagation()\">\r\n {{ data.description }}\r\n </mat-checkbox>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailed}}</span>\r\n </div>\r\n</ng-template>",
1944
+ template: "<mat-form-field appearance=\"{{FieldAppearence}}\" class=\"mat-full-width mat-no-border-top\" [style.width.px]=\"widthPx\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <mat-chip-list #chipList>\r\n <ng-container *ngIf=\"selectData.length < ChipThreshold\" >\r\n <mat-chip *ngFor=\"let select of selectData\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(select)\">\r\n {{ select.description }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n </ng-container>\r\n\r\n <mat-chip *ngIf=\"selectData.length >= ChipThreshold\" class=\"cardinal-colors\" (click)=\"!(readonly || disabled) && removeChip(null)\">\r\n {{ selectData.length }} {{ 'Elements selected' | localize: lc }}\r\n <mat-icon class=\"mat-chip-remove\">cancel</mat-icon>\r\n </mat-chip>\r\n\r\n <input matInput\r\n [matChipInputFor]=\"chipList\"\r\n #htmlInput\r\n #baseInput='ngModel'\r\n type=\"text\"\r\n triggers=\"\"\r\n placement=\"top\"\r\n [placeholder]=\"placeholder\"\r\n [matAutocomplete]=\"auto\"\r\n name=\"val-input\"\r\n id=\"{{id}}\"\r\n [(ngModel)]=\"value\"\r\n [tooltip]=\"tolTemplate\"\r\n [disabled]=\"readonly || disabled\"\r\n (ngModelChange)=\"onModelChange($event)\"\r\n (click)=\"onFocus($event)\"\r\n (focus)=\"checkTooltip();\"\r\n (blur)=\"closeTooltip();\">\r\n </mat-chip-list>\r\n\r\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let data of FilteredSource\">\r\n <div (click)=\"toggleSelection(data); !HideChoicesOnSelection && $event.stopPropagation()\">\r\n <mat-checkbox [checked]=\"data.selected\" (change)=\"toggleSelection(data);\" (click)=\"!HideChoicesOnSelection && $event.stopPropagation()\">\r\n {{ data.description }}\r\n </mat-checkbox>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n</mat-form-field>\r\n\r\n<ng-template #tolTemplate>\r\n <div (click)=\"closeTooltip()\">\r\n <span>{{validationFailedBind}}</span>\r\n </div>\r\n</ng-template>",
1938
1945
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1939
1946
  providers: [
1940
1947
  { provide: localizations.LocalizationService, useClass: BaseValidationLoc },
@@ -1949,6 +1956,7 @@
1949
1956
  },] }
1950
1957
  ];
1951
1958
  ValidationAutocompleteMultiComponent.ctorParameters = function () { return [
1959
+ { type: core.ChangeDetectorRef },
1952
1960
  { type: Array, decorators: [{ type: core.Optional }, { type: core.Inject, args: [forms.NG_VALIDATORS,] }] },
1953
1961
  { type: Array, decorators: [{ type: core.Optional }, { type: core.Inject, args: [forms.NG_ASYNC_VALIDATORS,] }] },
1954
1962
  { type: core.Injector },
@@ -2074,6 +2082,7 @@
2074
2082
  this.BindCheckingGroups = [];
2075
2083
  /** Cache delle proprietà scritte tipo --> {prop} */
2076
2084
  this.BindProperties = [];
2085
+ this.destroyed$ = new rxjs.Subject();
2077
2086
  if (ngControl == null) {
2078
2087
  if (!this.handleNullNgControl())
2079
2088
  console.error("ngControl nullo per qualche motivo! Il 90% delle funzionalità di questo input saranno disabilitate");
@@ -2271,6 +2280,17 @@
2271
2280
  return origFunc_1.apply(formOutsideRef);
2272
2281
  };
2273
2282
  }
2283
+ if (this.SetValidationSubject) {
2284
+ this.SetValidationSubject.pipe(operators.takeUntil(this.destroyed$)).subscribe(function (v) {
2285
+ if (v.fieldName + "_internal" == _this.GeneratedName) {
2286
+ var control = _this.Form.getControl(_this.validationControl);
2287
+ control.setErrors({ forcedtoinvalid: true });
2288
+ control.markAsTouched();
2289
+ _this.ngControl.control.setErrors({ forcedtoinvalid: true });
2290
+ _this.ngControl.control.markAsTouched();
2291
+ }
2292
+ });
2293
+ }
2274
2294
  };
2275
2295
  /**
2276
2296
  * Se sono in modalità detatched devo rimuovere manualmente questo controllo quando entro nella dispose, altrimenti se poi ne andassi a riaggiungere
@@ -2279,6 +2299,8 @@
2279
2299
  BaseFormControl.prototype.ngOnDestroy = function () {
2280
2300
  if (this.Form && this.validationControl && !!this.Form.getControl(this.validationControl))
2281
2301
  this.Form.removeControl(this.validationControl);
2302
+ this.destroyed$.next();
2303
+ this.destroyed$.complete();
2282
2304
  };
2283
2305
  /** Elabora i validatori iniettati e capisce se il valore è obbligatorio o meno */
2284
2306
  BaseFormControl.prototype.checkRequiredValidator = function () {
@@ -3419,7 +3441,7 @@
3419
3441
  *
3420
3442
  * Si consiglia di mantenere il default
3421
3443
  */
3422
- _this.EmptyFieldValue = '-2';
3444
+ _this.EmptyFieldValue = '-2000';
3423
3445
  /** Se **true** rimuove il simbolino di validazione (croce rossa o tick verde) */
3424
3446
  _this.ShowValidationSymbol = true;
3425
3447
  /** Template per la visualizzazione delle opzioni */