Files
webmanager-mvp/project_docs/UI_DIRECTORY_SELECTION_PARITY_V1.md
2026-03-12 07:32:44 +01:00

90 lines
3.8 KiB
Markdown

# UI Directory Selection Parity v1
## 1. Haalbaarheid
De huidige advanced selection logica is grotendeels generiek genoeg om ook directories te dragen.
Wat al generiek werkt:
- `selectedItems` bevat zowel files als directories
- `currentRowIndex` is niet typegebonden
- `selectionAnchorIndex` is niet typegebonden
- `Shift + ArrowUp/ArrowDown` werkt op `visibleItems` en kan daardoor in principe zowel files als directories meenemen
- checkbox-toggle gebruikt al `{ path, name, kind }` en werkt daarmee voor beide itemtypes
- `Cmd/Ctrl + klik` toggle-logica is ook type-onafhankelijk opgezet
Wat expliciet aandacht vraagt:
- directorynaam heeft een aparte open-semantiek en moet dus buiten selectieclicks blijven vallen
- rij-click en naam-click moeten scherp gescheiden blijven, anders ontstaat onbedoelde navigatie of onbedoelde selectie
- parent-entry `..` mag niet in gewone selectie terechtkomen
Conclusie: directory selection parity is technisch goed haalbaar binnen het huidige model. Er is geen nieuw state-model nodig.
## 2. Gewenst Gedrag Voor Directories
Voor directories moet exact dit gelden:
- gewone rij-click op een directory, buiten de naam:
- single-select van die directory
- checkbox-click op een directory:
- toggle selectie van die directory
- `Cmd + klik` op Mac / `Ctrl + klik` op niet-Mac op een directoryrij, buiten de naam:
- toggle die directory zonder andere selectie te wissen
- `Shift + ArrowUp/ArrowDown`:
- directories mogen normaal onderdeel zijn van een range
- klik op directorynaam:
- opent de directory
- selecteert niet
Dit sluit aan op het bestaande uitgangspunt dat de directorynaam een navigatie-affordance is en de rest van de rij een selectie-affordance.
## 3. Gemengde Selectie
Gemengde selectie van files en directories in dezelfde selectie of range is logisch en veilig binnen de huidige UI, mits dezelfde regels blijven gelden:
- range-selectie volgt de zichtbare volgorde in de lijst, ongeacht itemtype
- `selectedItems` mag dus een mix bevatten van files en directories
- vervolgacties bepalen daarna zelf of de selectie geldig is voor die actie
Dat past al bij de huidige UI:
- delete accepteert gemengde selectie al functioneel volgens backendmogelijkheden
- move/copy tonen of blokkeren al op basis van inhoud en scope
- rename/view/edit blijven enkel- of typegebonden
Conclusie: gemengde selectie is in de huidige UI logisch en hoeft niet apart verboden te worden.
## 4. Regressierisico
Belangrijkste risico's:
- botsing tussen directorynaam = openen en rij-click = selecteren
- modifier-click op of rond de directorynaam die per ongeluk navigeert in plaats van togglet
- inconsistentie waarbij file-naam single-select doet, maar directorynaam opent
Dit risico is beheersbaar zolang de scheiding expliciet blijft:
- directorynaam is alleen navigatie
- checkbox is alleen toggle
- rij buiten de naam is selectie
Het grootste praktische regressierisico zit niet in range-selectie, maar in click-targets binnen de directoryrij. Als event bubbling of target-selectie daar niet scherp genoeg is, voelt directory-selectie inconsistent.
## 5. Aanbeveling
Aanbevolen conclusie voor v1:
- directory selection parity vraagt waarschijnlijk geen herontwerp
- er is waarschijnlijk hooguit een kleine frontend-correctiestap nodig als bij handmatige verificatie blijkt dat modifier-click of row-click rond directorynamen nog niet overal exact hetzelfde aanvoelt als bij files
Concreet advies:
- eerst handmatig valideren of directoryrijen zich nu al correct gedragen voor:
- gewone rij-click
- checkbox-toggle
- `Cmd/Ctrl + klik`
- `Shift + Arrow` range
- alleen als daar inconsistentie blijkt, een kleine gerichte frontend-fix doen in `app.js`
Kort oordeel:
- het huidige model is sterk genoeg voor directory parity
- waarschijnlijk is geen grote codewijziging nodig
- mogelijk is alleen een kleine frontend-correctiestap nodig rond click-target gedrag