Three root causes fixed: 1. Scroll enforcement interval (every 50ms for 2s) was the main blocker: The setInterval forced gridRef.scrollTop on every frame, making iOS think the page was always scrolling programmatically. User touches during those 2 seconds were overridden. The header appeared 'stuck' because the view was frozen. Replaced with a single setTimeout scroll (300ms on first load, 50ms on subsequent). Added history.scrollRestoration='manual' so Safari doesn't fight us with scroll position restoration. 2. touch-action: pan-y was only on .time-grid-wrapper — NOT inherited by CSS. Slot child elements had touch-action: auto (default), so iOS still waited for JS before committing scroll on day column touches. Added touch-action: pan-y directly to .time-slots-container (the actual touched element area). Time column labels have no JS handlers so iOS scrolled them freely — this explains why time column worked but day columns didn't. 3. align-items: start on .weekly-days-grid was wrong (added in last commit). Removed — CSS grid default stretch is correct. v1.77.4 |
||
|---|---|---|
| .. | ||
| app | ||
| components | ||
| lib | ||
| types | ||
| middleware.ts | ||