Rend enfin tapable le champ où l'on écrit ce qu'un numéro annonce
Le champ « À la une » se reliait à chaque frappe sur une propriété qui découpait puis recomposait la ligne : le point-virgule tapé ouvrait une entrée vide aussitôt élaguée, et l'espace qui le suit était rogné. Le seul caractère qu'on ne pouvait pas y taper était son propre séparateur. Un titre s'ajoute maintenant seul, par Entrée, et se modifie ou se retire depuis la liste. Plus rien ne découpe, donc plus rien n'est intapable. ArticlesTexte disparaît, et avec lui le paramètre virguleAussi de ListeSaisie, qui n'existait que pour ce champ. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3146,6 +3146,73 @@ n'affirme rien — comparer avec `RangDesEnvies`, qui avait dû reconduire un or
|
||||
|
||||
**618 tests au vert** (506 au début de la série), aucun avertissement de compilation.
|
||||
|
||||
## Les articles à la une se saisissent un par un — champ à séparateur retiré (2026-08-21)
|
||||
|
||||
Défaut remonté en usage sur le champ « À la une (titres séparés par des points-virgules) » :
|
||||
« impossible de taper des espaces, des `;`, se comporte très bizarrement ».
|
||||
|
||||
### ⚠️ Le séparateur d'un champ relié à chaque frappe est INTAPABLE — et ce n'est pas propre aux unes
|
||||
|
||||
`AjoutNumeroRevue.ArticlesTexte` était une vue « une seule ligne » : son *getter* recomposait
|
||||
(`ListeSaisie.Joindre`) ce que son *setter* venait de découper (`Decouper`). Reliée en
|
||||
`@bind:event="oninput"`, elle **réécrivait la saisie à chaque caractère** :
|
||||
|
||||
| Ce qu'on tape | Ce que la propriété rend | Ce qu'on voit |
|
||||
|---|---|---|
|
||||
| `Ukraine ;` | `;` ouvre une entrée **vide**, élaguée par `RemoveEmptyEntries` | le `;` **disparaît** |
|
||||
| `Ukraine ; ` | `TrimEntries` rogne l'espace de fin | l'espace **disparaît** |
|
||||
| `Ukraine ; L` | `Joindre` repose son propre `« ; »` | le curseur **saute** |
|
||||
|
||||
Autrement dit : **le seul caractère qu'on ne pouvait pas taper dans ce champ était son propre
|
||||
séparateur**. Le lot O2 avait longuement tranché *quel* séparateur employer (le point-virgule,
|
||||
parce qu'un titre contient souvent une virgule) sans voir qu'aucun ne pouvait fonctionner par
|
||||
cette mécanique.
|
||||
|
||||
⚠️ **Deux champs voisins ont exactement la même mécanique et donc le même défaut** :
|
||||
`EnregistrementLivre.ThemesTexte` et `EnregistrementLivre.Auteur`, tous deux reliés sur
|
||||
`oninput` à une propriété qui découpe puis recompose. Non corrigés — le retour d'usage ne
|
||||
portait que sur les unes — mais ce sont les mêmes symptômes, et `Auteur` porte en plus la
|
||||
reprise des rôles.
|
||||
|
||||
### Ce que l'écran fait maintenant
|
||||
|
||||
Un titre, `Entrée`, et il rejoint une liste où chaque ligne porte **Modifier** et **Supprimer**
|
||||
(demandé tel quel par l'utilisateur). `Modifier` **reprend le titre dans le champ**, là où on
|
||||
l'a écrit, et le bouton devient « Enregistrer » avec un « Annuler » à côté.
|
||||
|
||||
- **La liste est la donnée** : plus de propriété texte intermédiaire, plus de découpage, donc
|
||||
plus rien à ne pas pouvoir taper — ni `;`, ni virgule, ni deux-points.
|
||||
- **`Entrée` ne remonte pas à `OnEntree`** (qui enregistre le numéro entier) : sinon on ne
|
||||
pourrait jamais saisir deux titres.
|
||||
- **Le doublon reste refusé au sens de la normalisation**, avec un message plutôt qu'en silence.
|
||||
- ⚠️ **Le composant se remet à zéro quand le parent change de `Saisie`** (numéro enregistré,
|
||||
autre numéro ouvert en modification), en comparant la **référence** : sans cela, le titre resté
|
||||
dans le champ appartiendrait au numéro d'avant.
|
||||
- ⚠️ `min-width: 0` sur le titre de la ligne, encore une fois : sans lui, un titre long pousse
|
||||
« Supprimer » hors d'un écran de 320 px.
|
||||
|
||||
`ArticlesTexte` a disparu, et avec lui le paramètre `virguleAussi` de `ListeSaisie` — il
|
||||
n'existait que pour ce champ. `ListeSaisie` ne sert plus qu'aux **thèmes**, où la virgule reste
|
||||
acceptée en repli.
|
||||
|
||||
### Vérifié en exécution (navigateur, 375 puis 320 px)
|
||||
|
||||
Frappe caractère par caractère de `Ukraine, deux ans après ; le retour du train` : **la valeur
|
||||
reste exactement ce qui a été tapé**, espaces et `;` compris. `Entrée` la range telle quelle,
|
||||
le champ se vide. Un doublon de casse est refusé avec son message ; Modifier reprend le titre,
|
||||
Enregistrer le remplace, Supprimer le retire. Numéro 44 créé puis relu par l'API avec ses deux
|
||||
titres **intacts**, un article ajouté à un numéro existant par l'écran d'édition, et la liste
|
||||
qui se recharge bien d'un numéro à l'autre. Aucun débordement horizontal à 320 px
|
||||
(`scrollWidth` = 320).
|
||||
|
||||
⚠️ **Défaut voisin constaté au passage, NON corrigé** : le bouton « Ajouter ce numéro » vit dans
|
||||
`Revue.razor` alors que le champ « Numéro » vit dans `ChampsNumeroRevue`. Une frappe ne
|
||||
re-rendant que le composant qui l'a traitée, le bouton **reste désactivé** tant que le parent ne
|
||||
se redessine pas — seul `Entrée` (qui appelle `OnEntree`, donc le parent) enregistre le numéro.
|
||||
À traiter.
|
||||
|
||||
617 tests au vert (618 avant : le test du découpage des unes n'a plus d'objet).
|
||||
|
||||
## 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
|
||||
|
||||
Reference in New Issue
Block a user