4.1 KiB
4.1 KiB
#155 — Ergonomie tableur : menu contextuel, sélection type Excel
Item de roadmap : #155 — Ergonomie tableur (menu contextuel + sélection) Origine : retours utilisateur après #154 (refonte UI/UX tableur) Statut : ✅ livré — 2026-09-29 Effort estimé : 2-4 jours (réalisé en 1 lot)
1. Demande
- Menu contextuel au clic droit (et appui long sur mobile/tactile) dans la grille, sur une cellule, un numéro de ligne ou un en-tête de colonne.
- Comportement du curseur / de la sélection comme Excel : le curseur en forme de croix
au-dessus des cellules, sélection d'une plage (glisser,
Maj+clic,Maj+flèches), clic sur un en-tête de ligne/colonne pour sélectionner toute la ligne/colonne. - (BUG-094, traité séparément) une feuille vide/nouvelle doit rester éditable et permettre d'ajouter lignes/colonnes.
2. Conception
Menu contextuel
- Positionné au pointeur (souris) ou au point de contact (tactile), borné au viewport.
- Thème de l'application (classes
.xlsx-context-menu, réutilise.btn-action). - Contenu selon la cible et le mode :
- Insérer : ligne au-dessus / en dessous, colonne à gauche / à droite (sur la plage
sélectionnée, via
PUT …/xlsx/structure,count= taille de la plage). - Supprimer : ligne(s) / colonne(s) — confirmation modale (destructif).
- Trier : A→Z / Z→A sur la colonne de gauche de la sélection.
- Effacer le contenu : vide les cellules sélectionnées (modification locale, non sauvegardée tant que l'utilisateur n'enregistre pas).
- Insérer : ligne au-dessus / en dessous, colonne à gauche / à droite (sur la plage
sélectionnée, via
- Masqué pour les formats en lecture seule (
.xls/.ods) ; sans les actions de structure pour un.csv. - Appui long (tactile) : minuteur ~500 ms annulé au déplacement / relâchement.
Sélection type Excel
- Clic : cellule active + sélection simple ; la barre de formule (zone Nom) affiche la plage
(
A1ouA1:B3). - Glisser : sélection rectangulaire (
mousedown→mouseoversur une autre cellule →mouseup) ; le texte de la cellule n'est plus sélectionné pendant le glisser. Maj+clicetMaj+flèches: étendent la sélection depuis l'ancre.- En-têtes : clic sur un numéro de ligne / lettre de colonne sélectionne la ligne/colonne entière. Le tri n'est plus déclenché par simple clic sur l'en-tête (il passe au menu contextuel), conformément au comportement Excel.
- Curseur :
cursor: cell(croix) sur les cellules,pointersur les en-têtes.
3. Fichiers
| Couche | Fichier | Rôle |
|---|---|---|
| Menu | frontend/js/xlsx/context-menu.js (nouveau) |
Menu contextuel générique thémé (build + position + dismiss) |
| Sélection + câblage | frontend/js/viewer.js |
État de sélection, drag, Maj, en-têtes, ouverture du menu, actions |
| Styles | frontend/style.css |
.xlsx-selected, .xlsx-context-menu, curseurs |
| i18n | frontend/locales/{fr,en}.json |
Libellés du menu |
| Tests | tests/frontend/xlsx-viewer.test.mjs |
Sélection, menu contextuel, tri via menu |
4. Critères d'acceptation
- Clic droit sur une cellule ouvre un menu thémé aux coordonnées du pointeur ;
Échapou clic ailleurs le ferme. - Insérer/supprimer ligne/colonne via le menu envoie la bonne action
PUT …/xlsx/structure(aveccountpour une plage) puis re-rend. - Glisser de A1 vers B2 surligne A1:B2 et la zone Nom affiche
A1:B2. Maj+clicétend la sélection ; cliquer un en-tête sélectionne la ligne/colonne entière.- Aucune régression des tests #154 (édition, save, undo/redo, dashboard).
5. Historique
| Date | Événement |
|---|---|
| 2026-09-29 | Ouverture #155 (menu contextuel + sélection type Excel) suite aux retours utilisateur |
| 2026-09-29 | Livré : menu contextuel thémé (frontend/js/xlsx/context-menu.js) ouvert au clic droit et à l'appui long, actions résultat de PUT …/xlsx/structure (insérer/supprimer ligne & colonne avec count), tri et effacement ; sélection type Excel (glisser, Maj+clic, Maj+flèches, en-têtes ligne/colonne, curseur croix, zone Nom affichant la plage) |