5.4 KiB
UI_FUNCTION_BAR_V2_DESIGN.md
1. Doel en scope
Deze stap beschrijft de evolutie van de huidige onderbalk onder de twee panelen naar een compactere, duidelijkere functiebalk in Midnight Commander-stijl.
Doel:
- de balk onder de panelen wordt visueel en functioneel herkenbaar als vaste actiebalk
- acties blijven direct gekoppeld aan het actieve paneel
- de balk wordt voorbereid op latere functietoets-labeling zonder nu al functietoetsen te implementeren
In scope:
- compactere horizontale functiebalk onder de twee panelen
- vaste knopvolgorde
- duidelijkere relatie tussen actie, actief paneel en selectie
- ontwerpvoorbereiding voor latere F3-F8 koppeling
Out of scope:
- geen implementatie van
View - geen implementatie van
Edit - geen functietoetsen
- geen backendwijzigingen
- geen nieuwe dependencies
2. Positie en layout
De functiebalk staat vast onder de twee panelen, op de plek van de huidige onderste actiebalk.
Layoutdoelen:
- horizontaal gecentreerd in de beschikbare breedte
- compact in hoogte
- kleine, gelijkmatige spacing tussen knoppen
- visueel duidelijk gescheiden van de paneelzone, maar zonder grote verticale band
- uitbreidbaar naar extra labels of functietoetsbadges zonder redesign
Voorstel:
- één compacte horizontale rij
- de rij krijgt een eigen container binnen de footerzone
- links en rechts geen brede utilityblokken
- status/fouttekst blijft buiten of onder de functiebalk, zodat de knoppenrij zelf compact blijft
3. Vaste volgorde van de knoppen
De functiebalk gebruikt exact deze volgorde:
ViewEditCopyMoveRenameMKdirDelete
Reden:
- sluit aan op klassieke file-manager verwachtingen
- groepeert navigatie-/inhoudsacties eerst, daarna muterende file-acties
- houdt de destructieve actie
Deleteaan het einde
4. Relatie met toekomstig functietoetsgebruik
De functiebalk moet later zonder structurele herbouw koppelbaar zijn aan:
F3 = ViewF4 = EditF5 = CopyF6 = MoveF7 = MKdirF8 = Delete
Ontwerpimplicatie:
- elke knop moet later een compacte functietoetsbadge of prefix kunnen tonen
Renameblijft voorlopig zonder vaste F-toets in deze mapping- deze stap implementeert nog geen keyboardbindingen of badgegedrag
5. Relatie met actief paneel en selectie
Alle acties in de functiebalk werken altijd vanuit het actieve paneel.
Geen selectie
View: disabledEdit: disabledCopy: disabledMove: disabledRename: disabledMKdir: enabledDelete: disabled
Exact 1 selectie
View: later afhankelijk van file-type; in deze stap nog niet functioneelEdit: later afhankelijk van file-type; in deze stap nog niet functioneelCopy: enabled als huidige backendactie geldig isMove: enabled als huidige backendactie geldig isRename: enabledMKdir: enabledDelete: enabled
Meerdere selecties
View: disabledEdit: disabledCopy: enabled als alle geselecteerde items compatibel zijn met bestaande backendscopeMove: enabled als alle geselecteerde items compatibel zijn met bestaande backendscopeRename: disabledMKdir: enabledDelete: enabled
File- of directoryselectie
CopyenMoveblijven gebonden aan de huidige backendbeperking- zolang backend
file-onlyis voor copy/move:- selectie met directories blokkeert
Copy - selectie met directories blokkeert
Move
- selectie met directories blokkeert
Deleteblijft werken volgens bestaande backendregelsRenamevolgt bestaande rename-semantiek
Belangrijk:
- de functiebalk toont niet alleen acties, maar reflecteert ook duidelijk welke acties in de huidige context geldig zijn via enabled/disabled toestand
6. Scopebeperking
Nog niet in deze stap:
- geen
View-implementatie - geen
Edit-implementatie - geen functietoetsen
- geen backendwijzigingen
- geen extra UI-frameworks
Deze ontwerpstap gaat dus alleen over de functiebalk zelf, niet over nieuwe actiecapaciteit.
7. Impactanalyse
Waarschijnlijk te wijzigen bestanden:
webui/html/index.htmlwebui/html/style.csswebui/html/app.jswebui/backend/tests/golden/test_ui_smoke_golden.py
Regressierisico
Belangrijkste risico's:
- huidige actieknoppen verliezen hun correcte enabled/disabled logica
- de relatie tussen actief paneel en actiebalk wordt visueel minder duidelijk
- keyboard- en klikflows kunnen breken als knop-ids of handlers onzorgvuldig worden vervangen
- extra compactheid kan ten koste gaan van leesbaarheid op smallere schermen
Mitigatie:
- bestaande action handlers hergebruiken waar mogelijk
- ids voor bestaande werkende acties stabiel houden of gecontroleerd migreren
- disabled-logica centraal laten in plaats van per knop ad hoc
- smoke tests uitbreiden met de nieuwe functiebalkstructuur
8. Teststrategie
Smoke/regressietests
Aan te passen:
test_ui_smoke_golden.py
Nieuwe of aangepaste checks:
- functiebalkcontainer aanwezig onder de panelen
- knopvolgorde in HTML komt overeen met het ontwerp
- bestaande actieknoppen voor werkende backendacties blijven aanwezig
- assets blijven correct gemount
Handmatige validatie
Te valideren bij implementatie:
- functiebalk blijft compact op desktop
- functiebalk blijft bruikbaar op smallere breedte
- actief paneel blijft bepalend voor de actiecontext
- disabled/enable toestand klopt bij:
- geen selectie
- 1 selectie
- meerdere selecties
- gemixte file/directory-selectie
- bestaande keyboard- en klikselectieflow blijft intact