---
suivi: 1384
date: 2026-09-01
sujet: programme_select_evenements_mesures
chantier: juridique
type: bugfix
statut: poussé
hash: 05310e71
fichiers:
  - resources/js/Components/Programmes/ProgrammeSearchSelect.vue
  - tests/Unit/DemandeJuridiqueProgrammeSelect1384SourceTest.php
  - database/data/journal_mises_a_jour_post_2026_06_12.php
  - public/build/
---

## PROMPT ENVOYÉ

SUIVI #1384 — quatrième passe champ Programme ; mesure prod : recherche OK, clic résultat → aucun PATCH.

## FICHES LUES

- **#1381** : `@option-select` obligatoire (PrimeVue 4.5.5 AutoComplete + dropdown).
- **#1383 LEÇON** : `ignoreNextClear` seul insuffisant — s'exécute après `onItemSelect`, trop tard si `option-select` ne se déclenche jamais.

## SYNTHÈSE

### Composant
- **PrimeVue 4.5.5** — `AutoComplete` (`primevue/autocomplete`), pas Select/Dropdown.
- Émissions documentées : `change`, `focus`, `blur`, `item-select`, `option-select`, `clear`, `complete`, `show`, `hide`, etc.

### Tableau comparatif événements (mesure + source AutoComplete.vue)

| Événement | Clic liste chevron (OK) | Clic après recherche (KO avant fix) | Écouté #1384 |
|-----------|-------------------------|-------------------------------------|--------------|
| `complete` | oui (`q=''`) | oui (`q=herm…`) | oui |
| `option-select` / `item-select` | **oui** → PATCH | **non** (blur avant clic) | oui |
| `change` (input natif, forceSelection) | rare | **oui** → `clear` + model null | oui (backup commit) |
| `clear` | non | **oui** (texte partiel ≠ libellé) | oui (filtré) |
| `blur` | parfois | **oui avant clic** | oui (message si échec) |
| PATCH réseau | oui | **non** (confirmé Robin, filtre `champ`) | — |

### Cause prouvée
Race blur / `change` / `forceSelection` : mousedown sur suggestion (portal `body`) blur l'input **avant** le `@click` sur `<li>`. `onChange` compare « herm » au libellé complet → `$emit('clear')` + `updateModel(null)`. Le clic n'aboutit pas à `option-select` → `@selected` parent jamais appelé → **aucun PATCH** (mesure réseau).

Chevron sans saisie partielle : pas de `change` invalidant → `option-select` → PATCH.

### Correctif
- `pt.option.onMousedown` + `preventDefault()` — empêche le blur prématuré (#1384).
- `commitSelection` centralisé ; `@change` en secours ; `onClear` différé + garde `selectingFromOverlay`.
- Message rouge `selectionErreur` si recherche partielle sans sélection (#1381/#1383 silence).

## DÉPLOIEMENT-TEST

Demande 6 : 4 chemins + AROME doublon ; dépôt facture liste + recherche.

## LEÇON

AutoComplete PV4 + forceSelection + recherche : toujours `mousedown.preventDefault` sur les options (portal). Ne jamais supposer que `ignoreNextClear` post-`option-select` suffit si l'événement ne part pas.
