# PROGRESS – 1 Installing right click and move-node

Ce fichier sert à suivre l’avancement du plan décrit dans `PLAN.md`.

## Statut global

- [x] Phase A – Cartographier le flux MoveNode existant
- [x] Phase B – Helper unique `moveNode` + stratégies d’insertion
- [x] Phase C – Service UiSelection (front-only)
- [x] Phase D – Menu contextuel clic droit
- [x] Phase E – Action « Déplacer… » (tête de container / avant item)
- [ ] Phase F – Durcissements & réutilisation

---

## Détail par phase

### Phase A – Cartographier le flux MoveNode existant

- [x] A.1 – Relire `dnd.js` (calcul `toIndex`, appels `sendCommandRef`)
- [x] A.2 – Vérifier le contrat MoveNode et la gestion d’erreurs actuelle

### Phase B – Helper unique `moveNode` + stratégies d’insertion

- [x] B.1 – Créer `moveNode` (enrobe `sendCommandRef` + toasts)
- [x] B.2 – Implémenter `computeInsertion` (`prepend` / `before-anchor`)
- [x] B.3 – Raccorder DnD sur ce helper (comportement inchangé)

### Phase C – Service UiSelection (front-only)

- [x] C.1 – API `requestSelection` / `cancelSelection`
- [x] C.2 – Overlay + état global de sélection
- [x] C.3 – Capture des clics `[data-node]` avec retour `{ boardId, nodeId, shape }`

### Phase D – Menu contextuel clic droit

- [x] D.1 – Module `context-menu.js` (open/close, positionnement)
- [x] D.2 – Gestionnaire global `contextmenu` + fermeture hors menu
- [x] D.3 – Action `context-move-node` branchée sur `moveNodeViaSelection`

### Phase E – Action « Déplacer… » (tête de container / avant item)

- [x] E.1 – Implémenter `moveNodeViaSelection(nodeId)`
- [x] E.2 – Décider `toParentId/toIndex` selon sélection (container → tête, item → avant)
- [x] E.3 – Appeler `moveNode` et gérer les rejets (409/422)

### Phase F – Durcissements & réutilisation

- [ ] F.1 – Prévoir filtrage Teams (`requiresEdit`) dans UiSelection (quand dispo)
- [ ] F.2 – Documenter la réutilisation pour Relations/Interactions/Library
- [ ] F.3 – Garder le menu contextuel déclaratif (facilement extensible)
- [ ] F.4 – Affiner le mode sélection : highlight unique (OK), validation par clic droit (OK), geler le contextmenu natif pendant la sélection (à valider)
