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

3.8 KiB

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