Commit graph

15 commits

Author SHA1 Message Date
cas
b6c89e548d fix: infinite scroll sneller — rootMargin 1200px + 3 batches per trigger
Was: rootMargin=200px, 1 batch (50 items) per intersection trigger
→ bij snel scrollen moest je wachten of terugscrollen

Nu: rootMargin=1200px, tot 3 batches (150 items) per trigger
→ sentinel wordt 1200px eerder gedetecteerd, batches pre-loaden agressief
→ sentinel blijft ver voor de viewport, nooit meer wachten
2026-07-24 11:17:47 +02:00
cas
cb5bb43453 fix: infinite scroll te traag — rootMargin 200px→1200px, tot 3 batches per trigger 2026-07-24 11:17:44 +02:00
cas
35278053a7 test: e2e tests voor infinite scroll — batch loading + search reset
2 nieuwe Playwright tests:
- Sentinels triggeren meer items na scrollIntoView
- Zoekopdracht reset paginering terug naar ≤ SEARCH_PAGE_SIZE

docker/index.html synced met worker-implementatie
2026-07-24 11:13:36 +02:00
cas
544d71e1ac feat: infinite scroll op zoekresultaten — append-based batch loading (50 per batch)
- renderZoeken toont alleen eerste 50 items, geen DOM overload meer
- IntersectionObserver laadt volgende batches via append (behoudt scrollpositie)
- Event delegation voor openAddToMealForMoment (werkt met dynamisch geladen items)
- Pagination reset bij nieuw zoekopdracht, categorie-filter, en tab-switch
- Sentinel-element onder foodList als IntersectionObserver target
- searchSentinel/sentinel CSS + searchLoading styling
2026-07-24 11:10:28 +02:00
cas
1091eb5bf8 fix: closeDialog toegevoegd in showPortieEditDialog — bottom sheet sluit nu correct
Root cause: showPortieEditDialog (r.3217-3401) gebruikte closeDialog op 3 plekken
(r.3279 X-kruisje, r.3280 buiten-klik, r.3348 save) maar definieerde de functie
nergens. showBulkPortieEdit (r.3462-3465) had wél een closeDialog definitie.

Fix: closeDialog definitie toegevoegd met closing-animatie + delayed overlay removal.
E2e test toegevoegd voor single-ingredient portie wijzigen + opslaan scenario.

Kanban: t_044470e2
2026-07-24 09:27:54 +02:00
cas
1f3759786b fix: saveDagboek → saveToStorage (typo) — move/delete werken nu echt
Root cause: saveDagboek() was undefined → JS crashte in confirm/verplaats callbacks → overlays bleven hangen + opslag ging niet door
2026-07-24 03:15:05 +02:00
cas
a08baabe7c fix: event-delegatie naar init() verplaatst (1x registreren, niet per render) — move/delete werken nu
Root cause: listEl.addEventListener werd elke renderDagboek call opnieuw toegevoegd → 4+ handlers per klik. Fix: delegatie in init() met _delegationSetup flag, slechts 1 registratie.
2026-07-24 03:02:17 +02:00
cas
4925169ac9 fix: event-delegatie voor meal-group acties (move/delete/toggle werken nu) + dialog-knoppen gebruiken bestaande Karby-classes (btn-cancel, btn-save, btn-danger-outline) + e2e test voor confirm modal 2026-07-24 02:42:11 +02:00
cas
423977e397 feat: design-conforme bevestigingsmodal + maaltijd verplaatsen/verwijderen uit dagboek
- showConfirmModal vervangt alle confirm() calls met Karby-design modal
- Opslagen maaltijden verwijderen via bevestigingsmodal
- Dagboek: hele maaltijd-groep verwijderen (niet alleen losse items)
- Dagboek: maaltijd verplaatsen naar ander eetmoment
- Delete-knop styling: rode rand + rode tekst
2026-07-24 02:30:24 +02:00
cas
b0833297b4 QA: Nieuwe e2e tests — portie-steppers (minus/disabled/active), modal open animatie, maaltijd validatie, meal-group uitklappen, datumkiezer
21 e2e tests total, all passing against production site.

Nieuwe tests toegevoegd:
- portion stepper: steppers verschijnen in addMealModal met count=1
- portion stepper: plus op tweede stepper reset eerste, activeert tweede
- portion stepper: minus verlaagt naar 0, wordt dan disabled (geen negatieven)
- portion stepper: active class toggles na plus/minus
- modal close animation: closing class tijdens dismiss
- modal open animation: fadeIn/slideUp CSS animaties op open
- tab switching: switching class tijdens crossfade
- meal save: name input leeg bij openen
- meal save: empty name toont rode rand, modal blijft open
- date navigator: prev/next verandert datum, today reset
- zoektab: food items krijgen staggered --i indices
- button press: buttons hebben transition transform
- meal-group uitklappen: saved meal expand/collapse toggles in dagboek
2026-07-24 02:25:54 +02:00
cas
e09cf22b77 feat: toast positioned dynamically at click Y-coordinate — slides out right from interaction point 2026-07-24 02:22:55 +02:00
cas
1bb0a94bdd fix: toast terug naar slideInRight/slideOutRight — rechtsonder gepositioneerd 2026-07-24 02:18:40 +02:00
cas
0713ec62cd feat: haptic feedback (navigator.vibrate) + toast fix + 7 nieuwe e2e tests
- Haptic feedback: 8ms vibrate op elke button press (Android Vibration API)
- Toast fix: slideUp/Down animatie ipv slideInRight (die de pagina verschoof)
- 7 nieuwe e2e tests: steppers, modal-close animatie, tab-switching, date-nav, stagger-indices, button-transitions
- Tests groen: 15/16 passed, 1 skipped
2026-07-24 02:13:35 +02:00
cas
9c3a07bbce feat: animatiesysteem voor alle interacties (knoppen, modals, tabs, toasts, lijsten)
- 9 @keyframes: fadeIn/Out, slideUp/Down, slideInRight/OutRight, scaleIn, pulse, shimmer
- Button press: scale(0.96) op :active met 0.12s transition
- Modals: slideUp open (0.3s cubic-bezier), slideDown close (0.25s)
- Toast: slideInRight open, slideOutRight dismiss na 2s
- Tabs: crossfade switching met .switching class
- List items: staggered fadeIn via --i CSS variable (50ms per item)
- Stepper: pulse animatie op +/− tap
- Chips/pills: scale feedback op :active
- Diary entries: fadeIn + slideUp op nieuwe entries
2026-07-24 01:57:06 +02:00
cas
c2b9074ef9 feat: initiële commit — Karby PWA koolhydratenteller met NEVO database, maaltijden, dagboek, e2e tests
- NEVO dataset (2328 voedingsmiddelen) met zoekfunctie
- Dagboek met eetmomenten, koolhydratenlimiet en progress bar
- Maaltijden opslaan + nesten in dagboek + eenmalig/permanent bewerken
- Portie-systeem met steppers per NEVO-categorie
- Vorteq amber/goud branding met Karby logo
- Voedingscentrum links per product
- 8 Playwright e2e tests (100% groen)
- PWA met offline support

Kanban board: koolhydraat-app
2026-07-24 01:44:19 +02:00