UpsellDialog : y faire passer la fenêtre d’incitation de ProfileSwitcher, et fermer sur Échap #451
Labels
No labels
autopilot:pending-human
source:analyste
source:defenseur
source:human
source:medic
status:approved
status:blocked
status:in-progress
status:needs-clarification
status:needs-fix
status:ready
status:review
status:triage
type:bug
type:feature
type:infra
type:refactor
type:schema
type:security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: maximus/Simpl-Resultat#451
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
#369 ajoute
src/components/shared/UpsellDialog.tsx: l'écran verrouillé (UpsellGate) dans une fenêtre, pour une action gatée dans une page Free (le bouton Répartition de la page Transactions). Son balisage reprend celui de la fenêtre d'incitation deProfileSwitcher.tsx(l. 142 à 162 surmain065f580), qui n'a pas été migrée dessus pour garder #369 dans son périmètre.Les deux ont déjà divergé :
UpsellDialogporterole="dialog",aria-modal="true", un nom accessible (upsell.title) et unaria-labelsur son bouton de fermeture ; la fenêtre deProfileSwitchern'a rien de cela. Aucune des deux ne se ferme sur Échap, alors queTransactionDetailModal,FeedbackConsentDialogetCategoriesMigrationRestoreModalle font (relevé du contrôle du plan de #369).Travail à faire
ProfileSwitcher: remplacer sa fenêtre d'incitation par<UpsellDialog feature="multi-profile" onClose={() => setShowUpsell(false)} />, en gardant la fermeture après « J'ai déjà une clé » (#346).UpsellDialog: fermer sur Échap, sur le modèle deTransactionDetailModal(keydownsurdocument, retiré au démontage). Le tester avec le harnaissrc/test/hookHarness.ts(useEffectetcommit()), l'écouteur étant simulé sans DOM.Critères d'acceptation
ProfileSwitcheretTransactionTable.onNavigate.Liens
UpsellGate,onNavigate)Ajout de la revue de la PR #452 (commentaire 24129), à traiter avec Échap : la fenêtre ne prend pas le focus. Au clavier, Entrée sur le bouton Répartition l'ouvre, mais le focus reste sur le bouton, derrière le voile, et Tab parcourt les lignes restantes du tableau avant d'atteindre la fenêtre, rendue après lui. Même défaut dans la fenêtre de
ProfileSwitcher.PinDialogetImportConfirmModalposent unautoFocus.Critère à ajouter : à l'ouverture, le focus est dans la fenêtre (bouton de fermeture ou premier CTA) ; à la fermeture, il revient au bouton qui l'a ouverte.