Fait saisir un par un ce qui se saisissait sur une ligne à séparateurs

Les thèmes et les auteurs souffraient du défaut corrigé hier sur les unes :
un champ relié à chaque frappe sur une propriété qui découpait puis
recomposait la liste, donc un séparateur intapable. Ils passent au même
geste — écrire, Entrée, puis modifier ou retirer chaque ligne — et le
composant est partagé plutôt que recopié une troisième fois.

Le bloc des rôles se fond dans la liste des auteurs : il listait les mêmes
noms une seconde fois. Renommer une ligne conserve son rôle, parce qu'on
corrige un nom au lieu de reconstruire la liste.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mathieu
2026-08-22 00:11:37 +02:00
co-authored by Claude Opus 5
parent e46fa99e3b
commit 75f962ab46
7 changed files with 419 additions and 264 deletions
+33
View File
@@ -3237,6 +3237,39 @@ grisé à champ vide, dégrisé dès la première frappe, regrisé si l'on effac
617 tests au vert (618 avant : le test du découpage des unes n'a plus d'objet).
### Thèmes et auteurs ont suivi — `SaisieListe`, un composant pour les trois (2026-08-22)
Les deux champs signalés comme « même mécanique, même défaut » ont été traités de la même
façon, et la troisième copie a été évitée : `Composants/SaisieListe.razor` porte le champ, la
liste, `Modifier`, `Supprimer`, le refus du doublon et la notification du parent. Les articles
à la une, les thèmes et les auteurs s'en servent.
⚠️ **Le fieldset « Rôles » a disparu, fondu dans la liste des auteurs.** Il y avait désormais
deux endroits qui listaient les mêmes noms. Les segments de rôle vivent sur la ligne de leur
auteur — et **la règle « seulement à partir de deux auteurs » est inchangée**, comme le défaut
`NonPrecise`.
⚠️ **Renommer un auteur conserve son rôle, par construction.** `NomsAuteurs` est une vue
`IList<string>` sur `EnregistrementLivre.Auteurs` dont l'indexeur fait `with { Nom = value }` :
on **corrige une ligne**, on ne la reconstruit pas. C'est ce qui remplace la reprise des rôles
par nom normalisé de `EnregistrementLivre.Decouper` — celle-ci n'existait que parce que le champ
se reconstruisait à chaque frappe. Elle reste en place pour le seul **préremplissage** depuis
une notice, qui donne les auteurs sur une ligne en une affectation.
⚠️ **La référence de la liste prêtée doit rester stable.** `SaisieListe` se remet à zéro quand
elle change d'identité (c'est ainsi qu'un formulaire vidé ou une autre fiche ne laissent pas
traîner une saisie) : construire la vue `NomsAuteurs` à chaque rendu ferait perdre ce qui est en
cours de frappe à chaque caractère. Elle n'est donc refaite que lorsque `Saisie` change.
`ThemesTexte` a disparu comme `ArticlesTexte`. `Auteur` reste, **uniquement pour le
préremplissage** — son commentaire le dit, pour qu'on ne la relie pas de nouveau à un `<input>`.
**Vérifié en exécution** (saisie manuelle puis édition d'une fiche, 320 px) : thèmes et auteurs
rangés un par un, doublon de casse refusé avec son message, rôles posés puis **conservés** en
corrigeant « Christophe » en « Christophé », livre enregistré et relu par l'API avec ses deux
rôles (`Scénario`, `Dessin`) et ses deux thèmes, fiche rouverte en édition avec ses listes
garnies, aucun débordement horizontal.
## La 7ᵉ série vérifiée en navigateur — trois défauts, tous invisibles aux tests (2026-08-21)
La série Q à Y s'était close sur un aveu : « **aucun** écran n'a été regardé s'afficher ». Le