@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
66 lines • 14 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { map } from 'rxjs/operators';
import { ComponentOutputStatus } from '../../normalizzazione/component-output-status';
import { ContattoDTO } from '../../models/contatto-dto';
import { MessageService } from '../../services/message.service';
export class ContattiComponent {
constructor(msg) {
this.msg = msg;
this.done = new EventEmitter();
}
ngOnInit() {
// console.log('[ContattoDTO]', this.contatti);
this.form = new FormGroup({});
if (this.recapiti$) {
this.initContatto();
}
const email = new FormControl({ value: this.contatti.email, disabled: false });
this.form.addControl('email', email);
const pec = new FormControl({ value: this.contatti.pec, disabled: false });
this.form.addControl('pec', pec);
const telefono = new FormControl({ value: this.contatti.telefono, disabled: false });
this.form.addControl('telefono', telefono);
const changes$ = this.form.valueChanges.pipe(map(_ => {
const contattoNew = new ContattoDTO();
contattoNew.email = email.value;
contattoNew.pec = pec.value;
contattoNew.telefono = telefono.value;
return ComponentOutputStatus.of(this.form.valid, contattoNew);
}));
this.form.setValidators(form => {
return (!form.get('pec').value && !form.get('email').value) ?
{ requiredMail: true } : null;
});
this.subscription = changes$.subscribe(newContact => this.done.emit(newContact));
}
initContatto() {
this.listaEmail$ = this.recapiti$.pipe(map(r => r.filter(t => t.tipoRecapito.codice == "EMAIL")));
this.listaPec$ = this.recapiti$.pipe(map(r => r.filter(t => t.tipoRecapito.codice == "PEC")));
this.listaTelefono$ = this.recapiti$.pipe(map(r => r.filter(t => t.tipoRecapito.codice == "PHONE" ||
t.tipoRecapito.codice == "CELL")));
// console.log('[listaTelefono]', this.listaTelefono);
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
ngAfterContentInit() {
this.form.updateValueAndValidity({ emitEvent: true });
}
}
ContattiComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-contatti',
template: "\t<form [formGroup]=\"form\">\r\n\t\t<div class=\"collapse-body mt-2\">\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{'required' | traduzione}}{{'email-recapito' | traduzione}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"email\">\r\n\t\t\t\t\t\t\t<mat-option [value]=\"null\">{{ 'seleziona' | traduzione }}</mat-option>\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let item of listaEmail$ | async\" [value]=\"item.id\">\r\n\t\t\t\t\t\t\t\t{{ item.recapito}}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"form.controls['email'].invalid\">\r\n\t\t\t\t\t\t\t{{msg.produceMessage('email', form.controls['email']) | traduzione}}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t<mat-hint *infoTip=\"'email-recapito'\"></mat-hint>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{'required' | traduzione}}{{'pec-recapito' | traduzione}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"pec\">\r\n\t\t\t\t\t\t\t<mat-option [value]=\"null\"> {{ 'seleziona' | traduzione }} </mat-option>\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let item of listaPec$ | async\" [value]=\"item.id\">\r\n\t\t\t\t\t\t\t\t{{ item.recapito}}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"form.controls['pec'].invalid\">\r\n\t\t\t\t\t\t\t{{msg.produceMessage('email', form.controls['pec']) | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t<mat-hint *infoTip=\"'pec-recapito'\"></mat-hint>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{'telefono-recapito' | traduzione}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"telefono\">\r\n\t\t\t\t\t\t\t<mat-option [value]=\"null\"> {{ 'seleziona' | traduzione }} </mat-option>\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let item of listaTelefono$ | async\" [value]=\"item.id\">\r\n\t\t\t\t\t\t\t\t{{ item.recapito}}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"form.controls['telefono'].invalid\">\r\n\t\t\t\t\t\t\t{{msg.produceMessage('tel', form.controls['telefono']) | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t<mat-hint *infoTip=\"'telefono-recapito'\"></mat-hint>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<br><br>\r\n\t\t<div class=\"col-md-12\">\r\n\t\t\t<mat-error *ngIf=\"form.getError('requiredMail')\">\r\n\t\t\t\t{{msg.produceMessage('requiredMail', form) | traduzione }}\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\t</form>\r\n",
styles: [""]
},] }
];
ContattiComponent.ctorParameters = () => [
{ type: MessageService }
];
ContattiComponent.propDecorators = {
recapiti$: [{ type: Input }],
contatti: [{ type: Input }],
done: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGF0dGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItc29mdHdhcmVmYWN0b3J5L2NvbW1vbi1jb21wb25lbnQtbGliL3Byb2plY3RzL3BvcnRhbC1jb21tb24tY29tcG9uZW50LWxpYi9zcmMvIiwic291cmNlcyI6WyJsaWIvZGVwb3NpdGkvY29tbW9uLWNvbXBvbmVudC9jb250YXR0aS9jb250YXR0aS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBUWhFLE1BQU0sT0FBTyxpQkFBaUI7SUFrQjdCLFlBQ1MsR0FBbUI7UUFBbkIsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFWNUIsU0FBSSxHQUFxRCxJQUFJLFlBQVksRUFBc0MsQ0FBQztJQVVoRixDQUFDO0lBRWpDLFFBQVE7UUFFUCwrQ0FBK0M7UUFFL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3BCO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxL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QXNEO0lBQ3ZELENBQUM7SUFFRCxXQUFXO1FBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDOzs7WUF6RkQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxjQUFjO2dCQUN4Qixnc0ZBQXdDOzthQUV4Qzs7O1lBUFEsY0FBYzs7O3dCQVlyQixLQUFLO3VCQUVMLEtBQUs7bUJBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudE91dHB1dFN0YXR1cyB9IGZyb20gJy4uLy4uL25vcm1hbGl6emF6aW9uZS9jb21wb25lbnQtb3V0cHV0LXN0YXR1cyc7XHJcbmltcG9ydCB7IENvbnRhdHRvRFRPIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbnRhdHRvLWR0byc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjYXBpdG8gfSBmcm9tICcuLi8uLi9tb2RlbHMvcG9ydGFsZS9yZWNhcGl0byc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1jb250YXR0aScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2NvbnRhdHRpLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9jb250YXR0aS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRhdHRpQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xyXG5cclxuXHRmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG5cdEBJbnB1dCgpIHJlY2FwaXRpJDogT2JzZXJ2YWJsZTxBcnJheTxSZWNhcGl0bz4+O1xyXG5cclxuXHRASW5wdXQoKSBjb250YXR0aTogQ29udGF0dG9EVE87XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdGRvbmU6IEV2ZW50RW1pdHRlcjxDb21wb25lbnRPdXRwdXRTdGF0dXM8Q29udGF0dG9EVE8+PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcG9uZW50T3V0cHV0U3RhdHVzPENvbnRhdHRvRFRPPj4oKTtcclxuXHJcblx0c3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG5cdGxpc3RhRW1haWwkOiBPYnNlcnZhYmxlPEFycmF5PFJlY2FwaXRvPj47XHJcblx0bGlzdGFQZWMkOiBPYnNlcnZhYmxlPEFycmF5PFJlY2FwaXRvPj47XHJcblx0bGlzdGFUZWxlZm9ubyQ6IE9ic2VydmFibGU8QXJyYXk8UmVjYXBpdG8+PjtcclxuXHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBtc2c6IE1lc3NhZ2VTZXJ2aWNlKSB7IH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblxyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tDb250YXR0b0RUT10nLCB0aGlzLmNvbnRhdHRpKTtcclxuXHJcblx0XHR0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcblx0XHRpZiAodGhpcy5yZWNhcGl0aSQpIHtcclxuXHRcdFx0dGhpcy5pbml0Q29udGF0dG8oKTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBlbWFpbCA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLmNvbnRhdHRpLmVtYWlsLCBkaXNhYmxlZDogZmFsc2UgfSk7XHJcblx0XHR0aGlzLmZvcm0uYWRkQ29udHJvbCgnZW1haWwnLCBlbWFpbCk7XHJcblxyXG5cdFx0Y29uc3QgcGVjID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuY29udGF0dGkucGVjLCBkaXNhYmxlZDogZmFsc2UgfSk7XHJcblx0XHR0aGlzLmZvcm0uYWRkQ29udHJvbCgncGVjJywgcGVjKTtcclxuXHJcblx0XHRjb25zdCB0ZWxlZm9ubyA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLmNvbnRhdHRpLnRlbGVmb25vLCBkaXNhYmxlZDogZmFsc2UgfSk7XHJcblx0XHR0aGlzLmZvcm0uYWRkQ29udHJvbCgndGVsZWZvbm8nLCB0ZWxlZm9ubyk7XHJcblxyXG5cdFx0Y29uc3QgY2hhbmdlcyQgPSB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcblx0XHRcdG1hcChfID0+IHtcclxuXHRcdFx0XHRjb25zdCBjb250YXR0b05ldyA9IG5ldyBDb250YXR0b0RUTygpO1xyXG5cdFx0XHRcdGNvbnRhdHRvTmV3LmVtYWlsID0gZW1haWwudmFsdWU7XHJcblx0XHRcdFx0Y29udGF0dG9OZXcucGVjID0gcGVjLnZhbHVlO1xyXG5cdFx0XHRcdGNvbnRhdHRvTmV3LnRlbGVmb25vID0gdGVsZWZvbm8udmFsdWU7XHJcblx0XHRcdFx0cmV0dXJuIENvbXBvbmVudE91dHB1dFN0YXR1cy5vZihcclxuXHRcdFx0XHRcdHRoaXMuZm9ybS52YWxpZCwgY29udGF0dG9OZXcpO1xyXG5cdFx0XHR9KSk7XHJcblxyXG5cdFx0dGhpcy5mb3JtLnNldFZhbGlkYXRvcnMoZm9ybSA9PiB7XHJcblx0XHRcdHJldHVybiAoIWZvcm0uZ2V0KCdwZWMnKS52YWx1ZSAmJiAhZm9ybS5nZXQoJ2VtYWlsJykudmFsdWUpID9cclxuXHRcdFx0XHR7IHJlcXVpcmVkTWFpbDogdHJ1ZSB9IDogbnVsbDtcclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uID0gY2hhbmdlcyQuc3Vic2NyaWJlKG5ld0NvbnRhY3QgPT4gdGhpcy5kb25lLmVtaXQobmV3Q29udGFjdCkpO1xyXG5cdH1cclxuXHJcblx0aW5pdENvbnRhdHRvKCkge1xyXG5cclxuXHRcdHRoaXMubGlzdGFFbWFpbCQgPSB0aGlzLnJlY2FwaXRpJC5waXBlKFxyXG5cdFx0XHRtYXAociA9PiByLmZpbHRlcih0ID0+IHQudGlwb1JlY2FwaXRvLmNvZGljZSA9PSBcIkVNQUlMXCIpKVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLmxpc3RhUGVjJCA9IHRoaXMucmVjYXBpdGkkLnBpcGUoXHJcblx0XHRcdG1hcChyID0+IHIuZmlsdGVyKHQgPT4gdC50aXBvUmVjYXBpdG8uY29kaWNlID09IFwiUEVDXCIpKVxyXG5cdFx0KTtcclxuXHJcblx0XHR0aGlzLmxpc3RhVGVsZWZvbm8kID0gdGhpcy5yZWNhcGl0aSQucGlwZShcclxuXHRcdFx0bWFwKHIgPT4gci5maWx0ZXIoXHJcblx0XHRcdFx0dCA9PlxyXG5cdFx0XHRcdFx0dC50aXBvUmVjYXBpdG8uY29kaWNlID09IFwiUEhPTkVcIiB8fFxyXG5cdFx0XHRcdFx0dC50aXBvUmVjYXBpdG8uY29kaWNlID09IFwiQ0VMTFwiKVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tsaXN0YVRlbGVmb25vXScsIHRoaXMubGlzdGFUZWxlZm9ubyk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogdHJ1ZSB9KTtcclxuXHR9XHJcbn1cclxuIl19