@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
90 lines • 15.7 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { map } from 'rxjs/operators';
import { PersonaGiuridicaDTO } from '../../../models/persona-giuridica-dto';
import { ComponentOutputStatus } from '../../../normalizzazione/component-output-status';
import { MessageService } from '../../../services/message.service';
import { ValidationService } from '../../../services/validation.service';
export class PgComponent {
constructor(msg) {
this.msg = msg;
this.showRagioneSociale = true;
this.showPartitaIVA = true;
this.done = new EventEmitter();
}
ngOnInit() {
this.form = new FormGroup({});
if (this.resetForm) {
this.subscription = this.resetForm.subscribe(val => val ? this.pulisciForm() : "");
}
const codiceFiscale = new FormControl({ value: '', disabled: false },
//TOLTO controllo per dare la possiibilità di inserimento anche della ditta individuale
// [
// // Validators.required,
// ValidationService.pattern(
// ValidationService.partitaIva,
// "partitaIVAInvalida"
// ),
// ]
[ValidationService.pattern(ValidationService._codiceFiscalePiva, "cfInvalidoFormalmente")
]);
this.form.addControl("codiceFiscale", codiceFiscale);
if (this.showRagioneSociale) {
const ragioneSociale = new FormControl({ value: '', disabled: false });
this.form.addControl("ragioneSociale", ragioneSociale);
}
if (this.showPartitaIVA) {
const partitaIVA = new FormControl({ value: '', disabled: false }, [
// Validators.required,
ValidationService.pattern(
// ValidationService.partitaIvaMaxLen2,
// "partitaIVAMaxLen2"
ValidationService.partitaIva, "partitaIVAInvalida"),
]);
this.form.addControl("partitaIVA", partitaIVA);
}
const changes$ = this.form.valueChanges.pipe(map((_) => {
var _a, _b;
const newSocieta = new PersonaGiuridicaDTO();
newSocieta.codiceFiscale = this.form.controls["codiceFiscale"].value;
newSocieta.ragioneSociale = (_a = this.form.controls["ragioneSociale"]) === null || _a === void 0 ? void 0 : _a.value;
newSocieta.partitaIVA = (_b = this.form.controls["partitaIVA"]) === null || _b === void 0 ? void 0 : _b.value;
return ComponentOutputStatus.of(this.form.valid, newSocieta);
}));
this.form.setValidators(form => {
return (!form.get('codiceFiscale').value && (this.showPartitaIVA && !form.get('partitaIVA').value)) ?
{ requiredPG: true }
: null;
});
this.subscription = changes$.subscribe((_) => this.done.emit(_));
}
ngOnDestroy() {
if (this.subscription) {
this.subscription.unsubscribe();
}
}
pulisciForm() {
const keys = Object.keys(this.form.value);
keys.forEach(key => {
const control = this.form.get(key);
control.setValue("");
});
}
}
PgComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-pg',
template: "<div [formGroup]=\"form\">\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-md-4\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<!-- <input matInput placeholder=\"{{'required' | traduzione}} {{'codice-fiscale' | traduzione}}\" -->\r\n\t\t\t\t<input matInput placeholder=\"{{'codice-fiscale' | traduzione}}\"\r\n\t\t\t\t\tformControlName=\"codiceFiscale\" maxlength=\"16\" >\r\n\t\t\t\t<mat-error *ngIf=\"form.controls['codiceFiscale'].invalid\">\r\n\t\t\t\t\t{{msg.produceMessage('codiceFiscaleInvalido', form.controls[ 'codiceFiscale']) | traduzione }}\r\n\t\t\t\t</mat-error>\r\n\t\t\t\t<mat-hint *infoTip=\"'codice-fiscale'\"></mat-hint>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<div class=\"col-md-4\" *ngIf=\"showRagioneSociale\">\r\n <mat-form-field>\r\n\t\t\t\t<!-- <input matInput placeholder=\"{{'required' | traduzione}}{{'ragione-sociale' | traduzione}}\" -->\r\n\t\t\t\t<input matInput placeholder=\"{{'ragione-sociale' | traduzione}}\"\r\n\t\t\t\t\tformControlName=\"ragioneSociale\">\r\n\t\t\t\t<mat-error *ngIf=\"form.controls['ragioneSociale'].invalid\">\r\n\t\t\t\t\t{{msg.produceMessage('obbligatorio', form.controls['ragioneSociale']) | traduzione }}\r\n\t\t\t\t</mat-error>\r\n\t\t\t\t<mat-hint *infoTip=\"'ragione-sociale'\"></mat-hint>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\t\t<div class=\"col-md-4\" *ngIf=\"showPartitaIVA\">\r\n\t\t\t<mat-form-field>\r\n\t\t\t\t<!-- <input matInput placeholder=\"{{'required' | traduzione}}{{'partita-iva' | traduzione}}\" -->\r\n\t\t\t\t<input matInput placeholder=\"{{'partita-iva' | traduzione}}\"\r\n\t\t\t\t\tformControlName=\"partitaIVA\">\r\n\t\t\t\t<mat-error *ngIf=\"form.controls['partitaIVA'].invalid\">\r\n\t\t\t\t\t{{msg.produceMessage('partitaIVAInvalida', form.controls['partitaIVA']) | traduzione }}\r\n\t\t\t\t\t<!-- {{msg.produceMessage('partitaIVAMaxLen2', form.controls['partitaIVA']) | traduzione }} -->\r\n\t\t\t\t</mat-error>\r\n\t\t\t\t<mat-hint *infoTip=\"'partita-iva'\"></mat-hint>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n <div class=\"col-md-12\">\r\n <mat-error *ngIf=\"form.getError('requiredPG')\">\r\n {{msg.produceMessage('requiredPG', form) | traduzione }}\r\n </mat-error>\r\n </div>\r\n\t</div>\r\n</div>\r\n",
styles: [""]
},] }
];
PgComponent.ctorParameters = () => [
{ type: MessageService }
];
PgComponent.propDecorators = {
resetForm: [{ type: Input }],
showRagioneSociale: [{ type: Input }],
showPartitaIVA: [{ type: Input }],
done: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItc29mdHdhcmVmYWN0b3J5L2NvbW1vbi1jb21wb25lbnQtbGliL3Byb2plY3RzL3BvcnRhbC1jb21tb24tY29tcG9uZW50LWxpYi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVwb3NpdGkvY29tbW9uLWNvbXBvbmVudC9yaWNlcmNhLXBnL3BnL3BnLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQWtCLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBT3ZFLE1BQU0sT0FBTyxXQUFXO0lBbUJ2QixZQUFtQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQVh0Qyx1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFHbkMsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFHL0IsU0FBSSxHQUE2RCxJQUFJLFlBQVksRUFBOEMsQ0FBQztJQU1oSSxDQUFDO0lBRUQsUUFBUTtRQUVQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcs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LElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2hDO0lBQ0YsQ0FBQztJQUVELFdBQVc7UUFDVixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNsQixNQUFNLE9BQU8sR0FBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7OztZQWxIRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLCt1RUFBa0M7O2FBRWxDOzs7WUFQTyxjQUFjOzs7d0JBWXBCLEtBQUs7aUNBR0wsS0FBSzs2QkFHTCxLQUFLO21CQUdMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtQZXJzb25hR2l1cmlkaWNhRFRPfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvcGVyc29uYS1naXVyaWRpY2EtZHRvJztcclxuaW1wb3J0IHtDb21wb25lbnRPdXRwdXRTdGF0dXN9IGZyb20gJy4uLy4uLy4uL25vcm1hbGl6emF6aW9uZS9jb21wb25lbnQtb3V0cHV0LXN0YXR1cyc7XHJcbmltcG9ydCB7TWVzc2FnZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7VmFsaWRhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1wZycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3BnLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9wZy5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBnQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuXHRmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0cmVzZXRGb3JtOiBTdWJqZWN0PGJvb2xlYW4+O1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdHNob3dSYWdpb25lU29jaWFsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0c2hvd1BhcnRpdGFJVkE6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRkb25lOiBFdmVudEVtaXR0ZXI8Q29tcG9uZW50T3V0cHV0U3RhdHVzPFBlcnNvbmFHaXVyaWRpY2FEVE8+PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcG9uZW50T3V0cHV0U3RhdHVzPFBlcnNvbmFHaXVyaWRpY2FEVE8+PigpO1xyXG5cclxuXHRzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcblxyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyBtc2c6IE1lc3NhZ2VTZXJ2aWNlKSB7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcblx0XHR0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcblx0XHRpZiAodGhpcy5yZXNldEZvcm0pIHtcclxuXHRcdFx0dGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnJlc2V0Rm9ybS5zdWJzY3JpYmUodmFsID0+XHJcblx0XHRcdFx0dmFsID8gdGhpcy5wdWxpc2NpRm9ybSgpIDogXCJcIik7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgY29kaWNlRmlzY2FsZSA9IG5ldyBGb3JtQ29udHJvbChcclxuXHRcdFx0e3ZhbHVlOiAnJywgZGlzYWJsZWQ6IGZhbHNlfSxcclxuXHRcdFx0Ly9UT0xUTyBjb250cm9sbG8gcGVyIGRhcmUgbGEgcG9zc2lpYmlsaXTDoCBkaSBpbnNlcmltZW50byBhbmNoZSBkZWxsYSBkaXR0YSBpbmRpdmlkdWFsZVxyXG5cdFx0XHQvLyBbXHJcblx0XHRcdC8vIFx0Ly8gVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuXHRcdFx0Ly8gXHRWYWxpZGF0aW9uU2VydmljZS5wYXR0ZXJuKFxyXG5cdFx0XHQvLyBcdFx0VmFsaWRhdGlvblNlcnZpY2UucGFydGl0YUl2YSxcclxuXHRcdFx0Ly8gXHRcdFwicGFydGl0YUlWQUludmFsaWRhXCJcclxuXHRcdFx0Ly8gXHQpLFxyXG5cdFx0XHQvLyBdXHJcblx0XHRcdFtWYWxpZGF0aW9uU2VydmljZS5wYXR0ZXJuKFxyXG5cdFx0XHRcdFx0VmFsaWRhdGlvblNlcnZpY2UuX2NvZGljZUZpc2NhbGVQaXZhLFxyXG5cdFx0XHRcdFx0XCJjZkludmFsaWRvRm9ybWFsbWVudGVcIlxyXG5cdFx0XHRcdClcclxuXHRcdFx0XVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuZm9ybS5hZGRDb250cm9sKFwiY29kaWNlRmlzY2FsZVwiLCBjb2RpY2VGaXNjYWxlKTtcclxuXHJcblx0XHRpZiAodGhpcy5zaG93UmFnaW9uZVNvY2lhbGUpIHtcclxuXHRcdFx0Y29uc3QgcmFnaW9uZVNvY2lhbGUgPSBuZXcgRm9ybUNvbnRyb2woXHJcblx0XHRcdFx0e3ZhbHVlOiAnJywgZGlzYWJsZWQ6IGZhbHNlfSxcclxuXHRcdFx0XHQvLyBbXHJcblx0XHRcdFx0Ly8gXHRWYWxpZGF0b3JzLnJlcXVpcmVkXHJcblx0XHRcdFx0Ly8gXVxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0dGhpcy5mb3JtLmFkZENvbnRyb2woXCJyYWdpb25lU29jaWFsZVwiLCByYWdpb25lU29jaWFsZSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuc2hvd1BhcnRpdGFJVkEpIHtcclxuXHRcdFx0Y29uc3QgcGFydGl0YUlWQSA9IG5ldyBGb3JtQ29udHJvbChcclxuXHRcdFx0XHR7dmFsdWU6ICcnLCBkaXNhYmxlZDogZmFsc2V9LFxyXG5cdFx0XHRcdFtcclxuXHRcdFx0XHRcdC8vIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcblx0XHRcdFx0XHRWYWxpZGF0aW9uU2VydmljZS5wYXR0ZXJuKFxyXG5cdFx0XHRcdFx0XHQvLyBWYWxpZGF0aW9uU2VydmljZS5wYXJ0aXRhSXZhTWF4TGVuMixcclxuXHRcdFx0XHRcdFx0Ly8gXCJwYXJ0aXRhSVZBTWF4TGVuMlwiXHJcblx0XHRcdFx0XHRcdFZhbGlkYXRpb25TZXJ2aWNlLnBhcnRpdGFJdmEsXHJcblx0XHRcdFx0XHRcdFwicGFydGl0YUlWQUludmFsaWRhXCJcclxuXHRcdFx0XHRcdCksXHJcblx0XHRcdFx0XVxyXG5cdFx0XHQpO1xyXG5cdFx0XHR0aGlzLmZvcm0uYWRkQ29udHJvbChcInBhcnRpdGFJVkFcIiwgcGFydGl0YUlWQSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgY2hhbmdlcyQgPSB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcblx0XHRcdG1hcCgoXykgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IG5ld1NvY2lldGEgPSBuZXcgUGVyc29uYUdpdXJpZGljYURUTygpO1xyXG5cdFx0XHRcdG5ld1NvY2lldGEuY29kaWNlRmlzY2FsZSA9IHRoaXMuZm9ybS5jb250cm9sc1tcImNvZGljZUZpc2NhbGVcIl0udmFsdWU7XHJcblx0XHRcdFx0bmV3U29jaWV0YS5yYWdpb25lU29jaWFsZSA9IHRoaXMuZm9ybS5jb250cm9sc1tcInJhZ2lvbmVTb2NpYWxlXCJdPy52YWx1ZTtcclxuXHRcdFx0XHRuZXdTb2NpZXRhLnBhcnRpdGFJVkEgPSB0aGlzLmZvcm0uY29udHJvbHNbXCJwYXJ0aXRhSVZBXCJdPy52YWx1ZTtcclxuXHRcdFx0XHRyZXR1cm4gQ29tcG9uZW50T3V0cHV0U3RhdHVzLm9mKHRoaXMuZm9ybS52YWxpZCwgbmV3U29jaWV0YSk7XHJcblx0XHRcdH0pXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMuZm9ybS5zZXRWYWxpZGF0b3JzKGZvcm0gPT4ge1xyXG5cdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdCFmb3JtLmdldCgnY29kaWNlRmlzY2FsZScpLnZhbHVlICYmICh0aGlzLnNob3dQYXJ0aXRhSVZBICYmICFmb3JtLmdldCgncGFydGl0YUlWQScpLnZhbHVlKVxyXG5cdFx0XHQpID9cclxuXHRcdFx0XHR7cmVxdWlyZWRQRzogdHJ1ZX1cclxuXHRcdFx0XHQ6IG51bGw7XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbiA9IGNoYW5nZXMkLnN1YnNjcmliZSgoXykgPT4gdGhpcy5kb25lLmVtaXQoXykpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuXHRcdFx0dGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHB1bGlzY2lGb3JtKCkge1xyXG5cdFx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS52YWx1ZSk7XHJcblx0XHRrZXlzLmZvckVhY2goa2V5ID0+IHtcclxuXHRcdFx0Y29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xyXG5cdFx0XHRjb250cm9sLnNldFZhbHVlKFwiXCIpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxufVxyXG4iXX0=