From 3008f45dfaaa6218dc8459225945c4a75ce74df2 Mon Sep 17 00:00:00 2001 From: Michel ten Voorde Date: Fri, 31 Oct 2025 16:02:15 +0100 Subject: [PATCH] Use autocompletion for partner search --- .../player-registrations.component.html | 17 ++---------- .../player-registrations.component.ts | 27 +++++++------------ 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/src/app/components/player-registrations/player-registrations.component.html b/src/app/components/player-registrations/player-registrations.component.html index f9f717c..09cf309 100644 --- a/src/app/components/player-registrations/player-registrations.component.html +++ b/src/app/components/player-registrations/player-registrations.component.html @@ -23,8 +23,8 @@ [matAutocomplete]="auto" [disabled]="!tournamentRegistration.editable || !eventRegistration.registered" [(ngModel)]="eventRegistration.partner" - (ngModelChange)="onPartnerSearch($event, eventRegistration)"> - + (input)="onPartnerSearch($any($event.target).value, eventRegistration)" + [name]="'partner-' + eventRegistration.id"> @@ -36,19 +36,6 @@ } - }
diff --git a/src/app/components/player-registrations/player-registrations.component.ts b/src/app/components/player-registrations/player-registrations.component.ts index 8da67e8..7356c4d 100644 --- a/src/app/components/player-registrations/player-registrations.component.ts +++ b/src/app/components/player-registrations/player-registrations.component.ts @@ -9,7 +9,6 @@ import {RegistrationService} from "../../service/registration.service"; import {MatCheckbox, MatCheckboxChange} from "@angular/material/checkbox"; import {EventRegistration, TournamentRegistration} from "../../model/tournamentRegistration"; import {MatOption} from "@angular/material/core"; -import {MatSelect} from "@angular/material/select"; import {MatIcon} from "@angular/material/icon"; import {MatAnchor, MatButton} from "@angular/material/button"; import {MatSnackBar} from "@angular/material/snack-bar"; @@ -17,7 +16,6 @@ import {FullNamePipe} from "../../pipes/fullname-pipe"; import {HeaderService} from "../../service/header.service"; import {MatAutocomplete, MatAutocompleteTrigger} from "@angular/material/autocomplete"; import {MatInput} from "@angular/material/input"; -import {NgForOf} from "@angular/common"; @Component({ selector: 'app-player-registrations', @@ -58,6 +56,8 @@ export class PlayerRegistrationsComponent implements OnInit { waitingForBackend: boolean = false; + private partnerSearchTerms: Map = new Map(); + constructor( private _snackBar: MatSnackBar, private playerService: PlayerService, @@ -82,11 +82,11 @@ export class PlayerRegistrationsComponent implements OnInit { }); } - private partnerSearchTerms: Map = new Map(); - -// Add methods - onPartnerSearch(searchTerm: string, eventRegistration: EventRegistration) { - this.partnerSearchTerms.set(eventRegistration.id, searchTerm?.toLowerCase() || ''); + onPartnerSearch(searchTerm: any, eventRegistration: EventRegistration) { + // Only treat as search if it's a string (typed input) + if (typeof searchTerm === 'string') { + this.partnerSearchTerms.set(eventRegistration.id, searchTerm?.toLowerCase() || ''); + } } getFilteredPlayers(eventRegistration: EventRegistration): Player[] { @@ -111,19 +111,10 @@ export class PlayerRegistrationsComponent implements OnInit { onPartnerSelected(event: any, eventRegistration: EventRegistration) { eventRegistration.partner = event.option.value; + // Clear the search term when a partner is selected + this.partnerSearchTerms.delete(eventRegistration.id); } - onPartnerInputFocus(eventRegistration: EventRegistration) { - // If there's already a partner selected, use their name as initial filter - if (eventRegistration.partner && this.allPlayers) { - const partner = this.allPlayers.find(p => p.id === eventRegistration.partner); - if (partner) { - const partnerName = this.fullNamePipe.transform(partner); - eventRegistration.partner = partnerName; - this.partnerSearchTerms.set(eventRegistration.id, partnerName.toLowerCase()); - } - } - } saveRegistration(tournamentRegistration: TournamentRegistration, event: MouseEvent) { this.waitingForBackend = true;