diff --git a/client/src/pages/TripPlannerPage.tsx b/client/src/pages/TripPlannerPage.tsx index d78af0cd6..0d872d815 100644 --- a/client/src/pages/TripPlannerPage.tsx +++ b/client/src/pages/TripPlannerPage.tsx @@ -10,6 +10,7 @@ import { TripRouteOverviewPill, TripRouteOverviewPanel } from '../components/Map import { DawarichTrailPill } from '../components/Map/DawarichTrailPill' import { getCached, fetchPhoto } from '../services/photoService' import DayPlanSidebar from '../components/Planner/DayPlanSidebar' +import { DayPlanSidebarTransportDetailModal } from '../components/Planner/DayPlanSidebarTransportDetailModal' import RoadtripModeSwitch from '../components/Roadtrip/RoadtripModeSwitch' import TripLoadingSplash from '../components/shared/TripLoadingSplash' import PlacesSidebar from '../components/Planner/PlacesSidebar' @@ -254,7 +255,7 @@ function TripPlannerPageDesktop(): React.ReactElement | null { // Page = wiring container: the entire planner state machine (store, tabs, // selection, CRUD handlers with undo, map filters, splash) lives in the hook. const { - tripId, navigate, toast, t, language, placesPhotosEnabled, + tripId, navigate, toast, t, language, locale, settings, placesPhotosEnabled, trip, days, places, assignments, packingItems, todoItems, categories, reservations, budgetItems, files, selectedDayId, isLoading, tripActions, can, canUploadFiles, pushUndo, undo, canUndo, lastActionLabel, handleUndo, @@ -618,6 +619,18 @@ function TripPlannerPageDesktop(): React.ReactElement | null { collapsedDayIds={collapsedRoadtripDays} onToggleDay={toggleRoadtripDay} /> + {/* The booking a terminal, a ride pill or a map endpoint opens. Under + Days the day panel owns this dialog; here the day panel is not + mounted, so the rail has to bring it along (#2428). */} + handleTabChange('dateien')} + onEdit={can('day_edit', trip) ? (reservation) => { setMapTransportDetail(null); setEditingTransport(reservation); setTransportModalDayId(reservation.day_id ?? null); setShowTransportModal(true) } : undefined} + t={t} + locale={locale} + timeFormat={settings.time_format || '24h'} + /> ) : ( s, tripId) // trip-page plugins mount as tabs inside this trip planner (tripId-scoped). @@ -2613,7 +2613,7 @@ export function useTripPlanner() { }, [isLoading, trip]) return { - tripId, navigate, toast, t, language, settings, placesPhotosEnabled, + tripId, navigate, toast, t, language, locale, settings, placesPhotosEnabled, trip, days, places, assignments, storedAssignments, packingItems, todoItems, categories, reservations, budgetItems, files, selectedDayId, isLoading, tripActions, can, canUploadFiles, pushUndo, undo, canUndo, lastActionLabel, handleUndo, diff --git a/shared/src/i18n/ar/roadtrip.ts b/shared/src/i18n/ar/roadtrip.ts index 1fc96267d..9e9e4b7e0 100644 --- a/shared/src/i18n/ar/roadtrip.ts +++ b/shared/src/i18n/ar/roadtrip.ts @@ -267,6 +267,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'المغادرة {time}', 'roadtrip.ride.arrival': 'الوصول {time}', 'roadtrip.ride.open': 'فتح الحجز', - 'roadtrip.ride.beThere': 'الحضور قبل {time}', }; export default roadtrip; diff --git a/shared/src/i18n/br/roadtrip.ts b/shared/src/i18n/br/roadtrip.ts index d532cc9db..8d4965f10 100644 --- a/shared/src/i18n/br/roadtrip.ts +++ b/shared/src/i18n/br/roadtrip.ts @@ -272,6 +272,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Loc\'hañ {time}', 'roadtrip.ride.arrival': 'Erruout {time}', 'roadtrip.ride.open': 'Digeriñ ar mirout', - 'roadtrip.ride.beThere': 'Bezañ eno a-raok {time}', }; export default roadtrip; diff --git a/shared/src/i18n/ca/roadtrip.ts b/shared/src/i18n/ca/roadtrip.ts index bec503b54..0f036060c 100644 --- a/shared/src/i18n/ca/roadtrip.ts +++ b/shared/src/i18n/ca/roadtrip.ts @@ -275,6 +275,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Sortida {time}', 'roadtrip.ride.arrival': 'Arribada {time}', 'roadtrip.ride.open': 'Obre la reserva', - 'roadtrip.ride.beThere': 'Sigues-hi abans de les {time}', }; export default roadtrip; diff --git a/shared/src/i18n/cs/roadtrip.ts b/shared/src/i18n/cs/roadtrip.ts index e6c78ed25..9adb7c6d3 100644 --- a/shared/src/i18n/cs/roadtrip.ts +++ b/shared/src/i18n/cs/roadtrip.ts @@ -270,6 +270,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Odjezd {time}', 'roadtrip.ride.arrival': 'Příjezd {time}', 'roadtrip.ride.open': 'Otevřít rezervaci', - 'roadtrip.ride.beThere': 'Být na místě do {time}', }; export default roadtrip; diff --git a/shared/src/i18n/de/roadtrip.ts b/shared/src/i18n/de/roadtrip.ts index 29ef5da53..ffb5121c0 100644 --- a/shared/src/i18n/de/roadtrip.ts +++ b/shared/src/i18n/de/roadtrip.ts @@ -269,6 +269,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Abfahrt {time}', 'roadtrip.ride.arrival': 'Ankunft {time}', 'roadtrip.ride.open': 'Buchung öffnen', - 'roadtrip.ride.beThere': 'Bis {time} da sein', }; export default roadtrip; diff --git a/shared/src/i18n/en/roadtrip.ts b/shared/src/i18n/en/roadtrip.ts index cdab22737..9324c113e 100644 --- a/shared/src/i18n/en/roadtrip.ts +++ b/shared/src/i18n/en/roadtrip.ts @@ -267,6 +267,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Departure {time}', 'roadtrip.ride.arrival': 'Arrival {time}', 'roadtrip.ride.open': 'Open booking', - 'roadtrip.ride.beThere': 'Be there by {time}', }; export default roadtrip; diff --git a/shared/src/i18n/es/roadtrip.ts b/shared/src/i18n/es/roadtrip.ts index 6c789adf5..416ae0b99 100644 --- a/shared/src/i18n/es/roadtrip.ts +++ b/shared/src/i18n/es/roadtrip.ts @@ -274,6 +274,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Salida {time}', 'roadtrip.ride.arrival': 'Llegada {time}', 'roadtrip.ride.open': 'Abrir reserva', - 'roadtrip.ride.beThere': 'Estar allí antes de las {time}', }; export default roadtrip; diff --git a/shared/src/i18n/fr/roadtrip.ts b/shared/src/i18n/fr/roadtrip.ts index 2c666273c..bd9bebe87 100644 --- a/shared/src/i18n/fr/roadtrip.ts +++ b/shared/src/i18n/fr/roadtrip.ts @@ -274,6 +274,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Départ {time}', 'roadtrip.ride.arrival': 'Arrivée {time}', 'roadtrip.ride.open': 'Ouvrir la réservation', - 'roadtrip.ride.beThere': 'Être sur place avant {time}', }; export default roadtrip; diff --git a/shared/src/i18n/gr/roadtrip.ts b/shared/src/i18n/gr/roadtrip.ts index 6d995cbc0..3484e24f7 100644 --- a/shared/src/i18n/gr/roadtrip.ts +++ b/shared/src/i18n/gr/roadtrip.ts @@ -276,6 +276,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Αναχώρηση {time}', 'roadtrip.ride.arrival': 'Άφιξη {time}', 'roadtrip.ride.open': 'Άνοιγμα κράτησης', - 'roadtrip.ride.beThere': 'Να είστε εκεί μέχρι τις {time}', }; export default roadtrip; diff --git a/shared/src/i18n/hu/roadtrip.ts b/shared/src/i18n/hu/roadtrip.ts index 68156c0eb..0721be071 100644 --- a/shared/src/i18n/hu/roadtrip.ts +++ b/shared/src/i18n/hu/roadtrip.ts @@ -271,6 +271,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Indulás {time}', 'roadtrip.ride.arrival': 'Érkezés {time}', 'roadtrip.ride.open': 'Foglalás megnyitása', - 'roadtrip.ride.beThere': 'Legyél ott {time}-ig', }; export default roadtrip; diff --git a/shared/src/i18n/id/roadtrip.ts b/shared/src/i18n/id/roadtrip.ts index 90b91a6d6..4f349aa14 100644 --- a/shared/src/i18n/id/roadtrip.ts +++ b/shared/src/i18n/id/roadtrip.ts @@ -274,6 +274,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Berangkat {time}', 'roadtrip.ride.arrival': 'Tiba {time}', 'roadtrip.ride.open': 'Buka pemesanan', - 'roadtrip.ride.beThere': 'Sudah di sana sebelum {time}', }; export default roadtrip; diff --git a/shared/src/i18n/it/roadtrip.ts b/shared/src/i18n/it/roadtrip.ts index 7caf65b57..5f04741d7 100644 --- a/shared/src/i18n/it/roadtrip.ts +++ b/shared/src/i18n/it/roadtrip.ts @@ -274,6 +274,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Partenza {time}', 'roadtrip.ride.arrival': 'Arrivo {time}', 'roadtrip.ride.open': 'Apri prenotazione', - 'roadtrip.ride.beThere': 'Essere lì entro le {time}', }; export default roadtrip; diff --git a/shared/src/i18n/ja/roadtrip.ts b/shared/src/i18n/ja/roadtrip.ts index 9524af31b..5b90f2653 100644 --- a/shared/src/i18n/ja/roadtrip.ts +++ b/shared/src/i18n/ja/roadtrip.ts @@ -269,6 +269,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': '出発 {time}', 'roadtrip.ride.arrival': '到着 {time}', 'roadtrip.ride.open': '予約を開く', - 'roadtrip.ride.beThere': '{time} までに到着', }; export default roadtrip; diff --git a/shared/src/i18n/ko/roadtrip.ts b/shared/src/i18n/ko/roadtrip.ts index 99b1b93e8..37a814da3 100644 --- a/shared/src/i18n/ko/roadtrip.ts +++ b/shared/src/i18n/ko/roadtrip.ts @@ -267,6 +267,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': '출발 {time}', 'roadtrip.ride.arrival': '도착 {time}', 'roadtrip.ride.open': '예약 열기', - 'roadtrip.ride.beThere': '{time}까지 도착', }; export default roadtrip; diff --git a/shared/src/i18n/nl/roadtrip.ts b/shared/src/i18n/nl/roadtrip.ts index 45061a9ba..63d1796ae 100644 --- a/shared/src/i18n/nl/roadtrip.ts +++ b/shared/src/i18n/nl/roadtrip.ts @@ -273,6 +273,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Vertrek {time}', 'roadtrip.ride.arrival': 'Aankomst {time}', 'roadtrip.ride.open': 'Boeking openen', - 'roadtrip.ride.beThere': 'Uiterlijk om {time} aanwezig zijn', }; export default roadtrip; diff --git a/shared/src/i18n/pl/roadtrip.ts b/shared/src/i18n/pl/roadtrip.ts index 736045c07..90372e097 100644 --- a/shared/src/i18n/pl/roadtrip.ts +++ b/shared/src/i18n/pl/roadtrip.ts @@ -271,6 +271,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Odjazd {time}', 'roadtrip.ride.arrival': 'Przyjazd {time}', 'roadtrip.ride.open': 'Otwórz rezerwację', - 'roadtrip.ride.beThere': 'Być na miejscu do {time}', }; export default roadtrip; diff --git a/shared/src/i18n/ru/roadtrip.ts b/shared/src/i18n/ru/roadtrip.ts index 2de6b01c3..8f6d004a5 100644 --- a/shared/src/i18n/ru/roadtrip.ts +++ b/shared/src/i18n/ru/roadtrip.ts @@ -273,6 +273,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Отправление {time}', 'roadtrip.ride.arrival': 'Прибытие {time}', 'roadtrip.ride.open': 'Открыть бронирование', - 'roadtrip.ride.beThere': 'Быть на месте к {time}', }; export default roadtrip; diff --git a/shared/src/i18n/sv/roadtrip.ts b/shared/src/i18n/sv/roadtrip.ts index e1ba7aa78..0a37057d6 100644 --- a/shared/src/i18n/sv/roadtrip.ts +++ b/shared/src/i18n/sv/roadtrip.ts @@ -270,6 +270,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Avgång {time}', 'roadtrip.ride.arrival': 'Ankomst {time}', 'roadtrip.ride.open': 'Öppna bokning', - 'roadtrip.ride.beThere': 'Var på plats senast {time}', }; export default roadtrip; diff --git a/shared/src/i18n/tr/roadtrip.ts b/shared/src/i18n/tr/roadtrip.ts index 345f9dd6a..3704a90d0 100644 --- a/shared/src/i18n/tr/roadtrip.ts +++ b/shared/src/i18n/tr/roadtrip.ts @@ -273,6 +273,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Kalkış {time}', 'roadtrip.ride.arrival': 'Varış {time}', 'roadtrip.ride.open': 'Rezervasyonu aç', - 'roadtrip.ride.beThere': '{time} itibarıyla orada olun', }; export default roadtrip; diff --git a/shared/src/i18n/uk/roadtrip.ts b/shared/src/i18n/uk/roadtrip.ts index 5058a5425..bd43532be 100644 --- a/shared/src/i18n/uk/roadtrip.ts +++ b/shared/src/i18n/uk/roadtrip.ts @@ -272,6 +272,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Відправлення {time}', 'roadtrip.ride.arrival': 'Прибуття {time}', 'roadtrip.ride.open': 'Відкрити бронювання', - 'roadtrip.ride.beThere': 'Бути на місці до {time}', }; export default roadtrip; diff --git a/shared/src/i18n/vi/roadtrip.ts b/shared/src/i18n/vi/roadtrip.ts index 28c3b0ca9..f45c6332f 100644 --- a/shared/src/i18n/vi/roadtrip.ts +++ b/shared/src/i18n/vi/roadtrip.ts @@ -271,6 +271,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': 'Khởi hành {time}', 'roadtrip.ride.arrival': 'Đến nơi {time}', 'roadtrip.ride.open': 'Mở đặt chỗ', - 'roadtrip.ride.beThere': 'Có mặt trước {time}', }; export default roadtrip; diff --git a/shared/src/i18n/zh-TW/roadtrip.ts b/shared/src/i18n/zh-TW/roadtrip.ts index 33862a4ef..2450a4a1c 100644 --- a/shared/src/i18n/zh-TW/roadtrip.ts +++ b/shared/src/i18n/zh-TW/roadtrip.ts @@ -258,6 +258,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': '出發 {time}', 'roadtrip.ride.arrival': '抵達 {time}', 'roadtrip.ride.open': '開啟預訂', - 'roadtrip.ride.beThere': '請於 {time} 前抵達', }; export default roadtrip; diff --git a/shared/src/i18n/zh/roadtrip.ts b/shared/src/i18n/zh/roadtrip.ts index b1cb993d2..cc615d520 100644 --- a/shared/src/i18n/zh/roadtrip.ts +++ b/shared/src/i18n/zh/roadtrip.ts @@ -259,6 +259,5 @@ const roadtrip: TranslationStrings = { 'roadtrip.ride.departure': '出发 {time}', 'roadtrip.ride.arrival': '到达 {time}', 'roadtrip.ride.open': '打开预订', - 'roadtrip.ride.beThere': '请于 {time} 前到达', }; export default roadtrip;