diff --git a/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.html b/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.html index 075248dffb4512c6a6d99dfe59de82da27e8e22e..f34154d8951a973cc5f6db32526209ebceaf3e40 100644 --- a/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.html +++ b/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.html @@ -1,34 +1,38 @@ -<mat-form-field *ngIf="this.control.status !== 'DISABLED'" appearance='outline' class="smallInput"> - <button mat-button matSuffix [matMenuTriggerFor]="menuDep" (click)="$event.stopPropagation();" - [title]="'lang.targetDepartment' | translate"> - {{addressBANCurrentDepartment}} <i class="fa fa-chevron-down"></i> - </button> - <mat-menu #menuDep="matMenu"> - <button mat-menu-item *ngFor="let dep of departmentList" - (click)="addressBANCurrentDepartment = dep">{{dep}}</button> - </mat-menu> - <mat-icon color="primary" class="fa fa-search" matPrefix style="font-size: 15px;"> - </mat-icon> - <input type="text" #autoCompleteInput [placeholder]="'lang.searchAddressBan' | translate" matInput - [formControl]="addressBANControl" [matAutocomplete]="auto" (click)="$event.stopPropagation()" - (focus)="resetAutocompleteAddressBan()" maxlength="128"> - <mat-autocomplete #auto="matAutocomplete" (optionSelected)="selectAddressBan($event)"> - <ng-container *ngIf="addressBANResult.length > 0 && !addressBANLoading"> - <mat-option *ngFor="let addressBANResult of addressBANFilteredResult | async" [value]="addressBANResult" - [title]="addressBANResult.address"> - {{addressBANResult.address}} - </mat-option> - </ng-container> - <mat-option class="autoCompleteInfoResult smallInputInfo" - *ngIf="addressBANResult.length === 0 && !addressBANLoading" disabled [innerHTML]="addressBANInfo"> - </mat-option> - <mat-option *ngIf="addressBANLoading" disabled> - <mat-spinner diameter="20"></mat-spinner> - </mat-option> - </mat-autocomplete> -</mat-form-field> +<app-contact-autocomplete *ngIf="this.control.status !== 'DISABLED'" + [exclusion]="'?noUsers=true&noEntities=true&noContactsGroups=true'" + [inputMode]="true" + style="width:100%;" (afterSelected)="getContact($event)"></app-contact-autocomplete> <a *ngIf="!manualAddress && emptyAddress()" (click)="manualAddress=!manualAddress" style="cursor: pointer;">{{'lang.switchManualAddress' | translate}}</a> <mat-card color="primary" *ngIf="manualAddress"> + <mat-form-field *ngIf="this.control.status !== 'DISABLED'" appearance='outline' class="smallInput"> + <button mat-button matSuffix [matMenuTriggerFor]="menuDep" (click)="$event.stopPropagation();" + [title]="'lang.targetDepartment' | translate"> + {{addressBANCurrentDepartment}} <i class="fa fa-chevron-down"></i> + </button> + <mat-menu #menuDep="matMenu"> + <button mat-menu-item *ngFor="let dep of departmentList" + (click)="addressBANCurrentDepartment = dep">{{dep}}</button> + </mat-menu> + <mat-icon color="primary" class="fa fa-search" matPrefix style="font-size: 15px;"> + </mat-icon> + <input type="text" #autoCompleteInput [placeholder]="'lang.searchAddressBan' | translate" matInput + [formControl]="addressBANControl" [matAutocomplete]="auto" (click)="$event.stopPropagation()" + (focus)="resetAutocompleteAddressBan()" maxlength="128"> + <mat-autocomplete #auto="matAutocomplete" (optionSelected)="selectAddressBan($event)"> + <ng-container *ngIf="addressBANResult.length > 0 && !addressBANLoading"> + <mat-option *ngFor="let addressBANResult of addressBANFilteredResult | async" [value]="addressBANResult" + [title]="addressBANResult.address"> + {{addressBANResult.address}} + </mat-option> + </ng-container> + <mat-option class="autoCompleteInfoResult smallInputInfo" + *ngIf="addressBANResult.length === 0 && !addressBANLoading" disabled [innerHTML]="addressBANInfo"> + </mat-option> + <mat-option *ngIf="addressBANLoading" disabled> + <mat-spinner diameter="20"></mat-spinner> + </mat-option> + </mat-autocomplete> + </mat-form-field> <button mat-icon-button class="address-icon" (click)="manualAddress=!manualAddress" [title]="'lang.showAddress' | translate"> <mat-icon class="fa fa-eye"></mat-icon> diff --git a/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.ts b/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.ts index 9b9eb342261031de1395f6f934d53e5e1a0aa1c6..171c210d34aa49bfde691c01d758e250983d3a05 100644 --- a/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.ts +++ b/src/frontend/app/administration/registered-mail/indexing/recipient-input.component.ts @@ -202,4 +202,28 @@ export class RegisteredMailRecipientInputComponent implements OnInit { goTo() { window.open(`https://www.google.com/maps/search/${this.control.value.addressNumber}+${this.control.value.addressStreet},+${this.control.value.addressPostcode}+${this.control.value.addressTown},+${this.control.value.addressCountry}`, '_blank'); } + + getContact(contact: any) { + this.http.get('../rest/contacts/' + contact.id).pipe( + tap((data: any) => { + this.control.value.firstname = data.firstname; + this.control.value.lastname = data.lastname; + this.control.value.addressStreet = data.addressStreet; + this.control.value.addressPostcode = data.addressPostcode; + this.control.value.addressTown = data.addressTown; + this.control.value.addressCountry = data.addressCountry; + this.control.value.addressNumber = data.addressNumber; + this.control.value.company = data.company; + this.control.value.civility = data.civility.label.toUpperCase(); + this.control.value.addressAdditional1 = data.addressAdditional1; + this.control.value.addressAdditional2 = data.addressAdditional2; + this.countryControl.setValue(data.addressCountry); + this.control.markAsTouched(); + }), + catchError((err: any) => { + this.notify.error(err.error.errors); + return of(false); + }) + ).subscribe(); + } } diff --git a/src/frontend/app/contact/autocomplete/contact-autocomplete.component.html b/src/frontend/app/contact/autocomplete/contact-autocomplete.component.html index bb88ed5b5316170a84ca9335a584262b49854503..8ee5a9944848b1ddc693353772aa3dc94582b7bc 100644 --- a/src/frontend/app/contact/autocomplete/contact-autocomplete.component.html +++ b/src/frontend/app/contact/autocomplete/contact-autocomplete.component.html @@ -108,10 +108,10 @@ </div> </mat-autocomplete> </mat-form-field> - <div style="text-align: right;" *ngIf="controlAutocomplete.value.length >= 2 && !controlAutocomplete.disabled"> + <div style="text-align: right;" *ngIf="controlAutocomplete.value.length >= 2 && !controlAutocomplete.disabled && !inputMode"> <button mat-button color="warn" (click)="resetAll()" style="font-size: 10px;">{{'lang.deleteAll' | translate}}</button> </div> - <div class="itemList"> + <div class="itemList" *ngIf="!inputMode"> <mat-chip-list *ngIf="controlAutocomplete.value.length > 0" class="mat-chip-list-stacked itemChip" color="default"> <ng-container *ngIf="!loadingValues"> diff --git a/src/frontend/app/contact/autocomplete/contact-autocomplete.component.ts b/src/frontend/app/contact/autocomplete/contact-autocomplete.component.ts index b5a9528d30e38a0288498986ce8317a67ded8cee..ba91ba100ef8fad2cd91c447825d4907ead41ab5 100755 --- a/src/frontend/app/contact/autocomplete/contact-autocomplete.component.ts +++ b/src/frontend/app/contact/autocomplete/contact-autocomplete.component.ts @@ -51,14 +51,16 @@ export class ContactAutocompleteComponent implements OnInit { /** * FormControl used when autocomplete is used in form and must be catched in a form control. */ - @Input('control') controlAutocomplete: FormControl; + @Input('control') controlAutocomplete: FormControl = new FormControl(); @Input() id: string = 'contact-autocomplete'; @Input() exclusion: string = ''; @Input() singleMode: boolean = false; + @Input() inputMode: boolean = false; @Output() retrieveDocumentEvent = new EventEmitter<string>(); + @Output() afterSelected = new EventEmitter<any>(); @ViewChild('autoCompleteInput', { static: true }) autoCompleteInput: ElementRef; @@ -160,6 +162,7 @@ export class ContactAutocompleteComponent implements OnInit { selectOpt(ev: any) { this.setFormValue(ev.option.value); + this.afterSelected.emit(ev.option.value); this.myControl.setValue(''); }