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:
selectedItemsbevat zowel files als directoriescurrentRowIndexis niet typegebondenselectionAnchorIndexis niet typegebondenShift + ArrowUp/ArrowDownwerkt opvisibleItemsen kan daardoor in principe zowel files als directories meenemen- checkbox-toggle gebruikt al
{ path, name, kind }en werkt daarmee voor beide itemtypes Cmd/Ctrl + kliktoggle-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 + klikop Mac /Ctrl + klikop 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
selectedItemsmag 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 + klikShift + Arrowrange
- 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