Add transport sync button and allow dropping stays onto band-covered days

- Auto-created transports carry auto_ref {from,to} stay ids; new
  POST /api/trips/:id/transports/regenerate reconciles them against the
  current stay order (re-date/re-title kept bridges preserving mode and
  price, delete orphans, create missing) without touching manual
  transports or flight-covered gaps
- Sync transports button in the calendar header with result toast
- The week band strip is now a drop target resolving the day from the
  pointer position, so stays can be dropped onto spots covered by other
  stays; overlapping stays stack in band lanes
This commit is contained in:
2026-07-20 10:22:49 +07:00
parent 71a158aa51
commit 36c4e4f306
14 changed files with 425 additions and 38 deletions
+2
View File
@@ -143,6 +143,7 @@ textarea.input { resize: vertical; }
.page { max-width: 1180px; margin: 0 auto; padding: 1.4rem; display: flex; flex-direction: column; gap: 1.2rem; }
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.section-head { margin-bottom: 0.8rem; }
.cal-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.form-slot:empty { display: none; }
/* ---------- Auth ---------- */
@@ -272,6 +273,7 @@ textarea.input { resize: vertical; }
.cal-band-draggable:active { cursor: grabbing; }
.cal-band.dragging { opacity: 0.4; }
.cal-day-drop { border-color: var(--brand); box-shadow: 0 0 0 2px var(--brand); background: var(--brand-soft); }
.cal-week-bands.cal-bands-drop { outline: 2px dashed var(--brand); outline-offset: 2px; border-radius: 6px; }
/* ---------- Detail grid (map + summary) ---------- */
.detail-grid { display: grid; grid-template-columns: 1.7fr 1fr; gap: 1.2rem; align-items: start; }