2e5e35dcea
Add @dnd-kit drag-and-drop reorder to the /admin/routes stop list.
- Install @dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities
- Sortable stop cards with a grab handle; pointer + touch (press-and-hold)
+ keyboard sensors so mobile groomers and a11y users can reorder
- On drop, PATCH /api/routes/:routeId/reorder { stopOrder } (full order)
- Optimistic UI update with rollback + error message on failure
- Server recomputes legs/buffers/conflicts; response adopted authoritatively
- Tight-schedule conflict warnings retained (server-flagged, gap < travel+buffer)
- "Re-optimize" hint+button after a manual reorder (re-runs POST /optimize)
- Tests: drag handles, conflict flag, no pre-reorder hint, reorder mock
- Updated UAT_PLAYBOOK.md §5.29 — drag-to-reorder & re-optimize cases
Co-Authored-By: Paperclip <noreply@paperclip.ing>
54 lines
1.5 KiB
JSON
54 lines
1.5 KiB
JSON
{
|
|
"name": "@groombook/web",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"preview": "vite preview",
|
|
"lint": "eslint src --ext .ts,.tsx",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:e2e": "playwright test -c e2e/playwright.config.ts"
|
|
},
|
|
"dependencies": {
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@groombook/types": "workspace:*",
|
|
"@stripe/react-stripe-js": "^6.1.0",
|
|
"@stripe/stripe-js": "^9.1.0",
|
|
"@tailwindcss/vite": "^4.2.2",
|
|
"better-auth": "^1.5.6",
|
|
"leaflet": "^1.9.4",
|
|
"lucide-react": "^0.577.0",
|
|
"react": "^19.0.0",
|
|
"react-dom": "^19.0.0",
|
|
"react-leaflet": "^5.0.0",
|
|
"react-router-dom": "^7.1.2",
|
|
"recharts": "^3.8.0",
|
|
"tailwindcss": "^4.2.2"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.50.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/leaflet": "^1.9.12",
|
|
"@types/node": "^25.6.0",
|
|
"@types/react": "^19.0.6",
|
|
"@types/react-dom": "^19.0.3",
|
|
"@vitejs/plugin-react": "^4.3.4",
|
|
"@vitest/coverage-v8": "^3.2.4",
|
|
"eslint": "^9.18.0",
|
|
"jsdom": "^26.1.0",
|
|
"typescript": "^5.7.3",
|
|
"typescript-eslint": "^8.20.0",
|
|
"vite": "^6.0.7",
|
|
"vite-plugin-pwa": "^0.21.1",
|
|
"vitest": "^3.0.4"
|
|
},
|
|
"license": "AGPL-3.0-only"
|
|
}
|