My-Weekly-ToDo-List/package.json
mARTin 4c1ef5019e fix: iOS scroll blocked by enforcement interval + missing touch-action on slots
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
2026-03-29 16:14:53 +02:00

75 lines
2.3 KiB
JSON

{
"name": "my-weekly-todo-list",
"version": "1.77.4",
"description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view",
"main": "index.js",
"scripts": {
"dev": "echo \"\\n ✦ My Weekly ToDo List v$(node -p \"require('./package.json').version\") — dev mode\\n\" && next dev -H 0.0.0.0 -p 3000",
"build": "next build",
"start": "echo \"\\n ✦ My Weekly ToDo List v$(node -p \"require('./package.json').version\") — production\\n\" && next start",
"lint": "next lint",
"type-check": "tsc --noEmit",
"test": "jest"
},
"keywords": [
"nextjs",
"todo",
"calendar",
"weekly-view",
"task-management"
],
"author": "My Weekly To Do List Team",
"license": "MIT",
"dependencies": {
"@auth/prisma-adapter": "^2.11.1",
"@fortawesome/fontawesome-svg-core": "^7.2.0",
"@fortawesome/free-brands-svg-icons": "^7.2.0",
"@fortawesome/free-solid-svg-icons": "^7.2.0",
"@fortawesome/react-fontawesome": "^3.2.0",
"@mdi/js": "^7.4.47",
"@mdi/react": "^1.6.1",
"@next-auth/prisma-adapter": "^1.0.7",
"@notionhq/client": "^5.14.0",
"@prisma/client": "5.22.0",
"@tiptap/extension-link": "^3.20.0",
"@tiptap/extension-placeholder": "^3.20.0",
"@tiptap/extension-underline": "^3.20.0",
"@tiptap/react": "^3.20.0",
"@tiptap/starter-kit": "^3.20.0",
"@types/bcryptjs": "^2.4.6",
"@types/nodemailer": "^7.0.11",
"bcryptjs": "^3.0.3",
"date-fns": "^2.30.0",
"googleapis": "^170.1.0",
"ical.js": "^2.2.1",
"lucide-react": "^0.563.0",
"next": "14.2.35",
"next-auth": "^4.24.13",
"nodemailer": "^7.0.13",
"postcss-cli": "^11.0.1",
"prisma": "5.22.0",
"react": "^18.2.0",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "^18.2.0",
"tsdav": "^2.1.8",
"web-push": "^3.6.7",
"zustand": "^4.4.0"
},
"devDependencies": {
"@playwright/test": "^1.58.0",
"@types/jest": "^30.0.0",
"@types/node": "^20.0.0",
"@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0",
"autoprefixer": "^10.4.19",
"eslint": "^8.0.0",
"eslint-config-next": "^14.0.0",
"jest": "^29.0.0",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.1",
"ts-jest": "^29.0.0",
"typescript": "^5.0.0"
}
}