90 lines
3.8 KiB
Markdown
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
|