# ContactForm Client Dropdown Fix
## Problem
The client dropdown in ContactForm was showing "Aucun client trouvé" even when the API returned results. The component was trying to iterate over `client` in the template but reference it as `contact` which didn't exist.
## Issues Found
### 1. Variable Name Mismatch (Line 51, 57)
```vue
```
**Why it failed**: The loop variable was `client` but the template tried to access `contact`, which was undefined, causing nothing to render.
### 2. Missing Method
The component was calling `selectClient()` but only had `selectContact()` method defined.
### 3. Event Emission Mismatch
The component was emitting `searchClient` in the code but the parent might be listening for `searchContact`.
## Changes Made
### 1. Fixed Template Variable References
- Changed `@mousedown="selectContact(contact)"` → `@mousedown="selectClient(client)"`
- Changed `{{ contact.name }}` → `{{ client.name }}`
- Added client email display in dropdown
### 2. Added `selectClient()` Method
```javascript
const selectClient = (client) => {
selectedContact.value = client;
// Split name into first/last if needed
if (client.name) {
const nameParts = client.name.split(' ');
if (nameParts.length > 1) {
form.value.first_name = nameParts[0];
form.value.last_name = nameParts.slice(1).join(' ');
} else {
form.value.first_name = client.name;
}
}
form.value.email = client.email || "";
form.value.phone = client.phone || "";
form.value.mobile = client.mobile || "";
searchQuery.value = "";
showDropdown.value = false;
emit("clientSelected", client.id);
};
```
### 3. Updated Emits Declaration
Added `searchClient` and `clientSelected` to the emits array:
```javascript
const emit = defineEmits([
"createContact",
"searchClient", // For searching clients
"clientSelected", // When a client is selected
"contactSelected" // When a contact is selected
]);
```
## How It Works Now
1. User types in search input → emits `searchClient` event
2. Parent component makes API call to `/api/clients/searchBy?name=...`
3. Results are passed back via `searchResults` prop
4. Dropdown shows clients with name and email
5. User clicks a client → `selectClient()` is called
6. Form is pre-filled with client data (name split into first/last, email, phone)
7. Parent receives `clientSelected` event with client ID
## Testing
To verify the fix works:
1. Start typing a client name in the search field
2. The dropdown should now display the matching clients
3. Click on a client
4. The form should pre-fill with the client's information
5. The contact can then be created and linked to that client
## File Modified
- `src/components/molecules/form/ContactForm.vue`