From 04b31ec2e50c4beaaf931761f6b914223d75e65c Mon Sep 17 00:00:00 2001 From: Maurice Date: Sun, 6 Sep 2026 13:05:35 +0200 Subject: [PATCH] fix(mobile): give the trip map a way back to every day MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The phone map filters down to one day and had no way back out. The chip rail can only swap one day for another, the second tap on the active chip is the day sheet, and the seed guard deliberately does not re-seed — so a day picked on the map stayed picked until you left the trip and came back (#2257). Desktop has had the deselect since the day header got it. Its own round control beside the rail, map view only: the plan timeline is single-day, so there is nothing to widen there, and the day sheet keeps the one route into it that also exists on the map. It toggles — the first press parks the day it came from and frames the whole trip, the second puts that day back with its route, or falls back to the focus day if a remote delete retired it in between. Leaving the map restores it too, since an empty timeline would be the worse answer. --- client/src/mobile/screens/trip/MTripShell.tsx | 76 ++++++++++++++++--- .../unit/mobile/trip/MTripShell.test.tsx | 71 ++++++++++++++++- shared/src/i18n/ar/mobileTrip.ts | 1 + shared/src/i18n/br/mobileTrip.ts | 1 + shared/src/i18n/ca/mobileTrip.ts | 1 + shared/src/i18n/cs/mobileTrip.ts | 1 + shared/src/i18n/de/mobileTrip.ts | 1 + shared/src/i18n/en/mobileTrip.ts | 1 + shared/src/i18n/es/mobileTrip.ts | 1 + shared/src/i18n/fr/mobileTrip.ts | 1 + shared/src/i18n/gr/mobileTrip.ts | 1 + shared/src/i18n/hu/mobileTrip.ts | 1 + shared/src/i18n/id/mobileTrip.ts | 1 + shared/src/i18n/it/mobileTrip.ts | 1 + shared/src/i18n/ja/mobileTrip.ts | 1 + shared/src/i18n/ko/mobileTrip.ts | 1 + shared/src/i18n/nl/mobileTrip.ts | 1 + shared/src/i18n/pl/mobileTrip.ts | 1 + shared/src/i18n/ru/mobileTrip.ts | 1 + shared/src/i18n/sv/mobileTrip.ts | 1 + shared/src/i18n/tr/mobileTrip.ts | 1 + shared/src/i18n/uk/mobileTrip.ts | 1 + shared/src/i18n/vi/mobileTrip.ts | 1 + shared/src/i18n/zh-TW/mobileTrip.ts | 1 + shared/src/i18n/zh/mobileTrip.ts | 1 + 25 files changed, 158 insertions(+), 12 deletions(-) diff --git a/client/src/mobile/screens/trip/MTripShell.tsx b/client/src/mobile/screens/trip/MTripShell.tsx index d940921ce..d5af1b9f5 100644 --- a/client/src/mobile/screens/trip/MTripShell.tsx +++ b/client/src/mobile/screens/trip/MTripShell.tsx @@ -1,7 +1,7 @@ import { useEffect, useRef, useState, type ComponentType, type ReactNode } from 'react' import { findFocusDayId } from '../../../components/Planner/today' import { - ChevronDown, ChevronLeft, Download, FileDown, List, Map as MapIcon, MoreHorizontal, PackageCheck, + CalendarDays, ChevronDown, ChevronLeft, Download, FileDown, List, Map as MapIcon, MoreHorizontal, PackageCheck, Plane, Plus, Rows3, Ticket, TrainFront, Trash2, Upload, Wallet, } from 'lucide-react' import type { LucideIcon } from 'lucide-react' @@ -262,6 +262,38 @@ export default function MTripShell({ planner.setExpandedDayIds(dayId == null ? null : new Set([dayId])) } + // The map's day selection: frame the day, draw its route, drop the other days' + // pins. Shared by the chip tap and the all-days toggle so the two cannot drift. + const selectDayOnMap = (dayId: number) => { + planner.handleSelectDay(dayId, false) + planner.autoShowRoute() + focusMapOnDay(dayId) + } + + // The day an "all days" deselect came from, so the toggle can put it back. + // A remote day:deleted can retire it while it is parked here, hence the + // membership check before it is trusted. + const lastDayRef = useRef(null) + const dayToRestore = (): number | null => + (lastDayRef.current != null && days.some(d => d.id === lastDayRef.current) + ? lastDayRef.current + : findFocusDayId(days) ?? days[0]?.id) ?? null + + // Whole trip ⇄ one day on the map (#2257). Its own control rather than a + // second tap on the active chip: that tap already opens the day sheet, the + // only route to it that also exists in map view. Never skipFit — changing + // what the map is filtered to is exactly when it should reframe. + const toggleAllDays = () => { + if (planner.selectedDayId != null) { + lastDayRef.current = planner.selectedDayId + focusMapOnDay(null) + planner.handleSelectDay(null, false) + return + } + const back = dayToRestore() + if (back != null) selectDayOnMap(back) + } + const toggleView = () => { const next = view === 'plan' ? 'map' : 'plan' setView(next) @@ -276,6 +308,13 @@ export default function MTripShell({ // Leaving the map: nothing is filtered while the timeline is up, so the next // visit starts from the whole trip unless a day is picked again. focusMapOnDay(null) + // The timeline is single-day and renders empty without one, so an "all days" + // deselect on the map must not follow the user back into the plan. Same day + // the toggle would restore, so the two ways back agree. + if (planner.selectedDayId == null) { + const back = dayToRestore() + if (back != null) planner.handleSelectDay(back, true) + } } } @@ -307,15 +346,10 @@ export default function MTripShell({ const onDayChipTap = (dayId: number) => { if (dayId === planner.selectedDayId) openSheet('day', { dayId }) - else { - planner.handleSelectDay(dayId, view !== 'map') - // In map mode a day tap fits to that day's places, draws its route and drops - // the other days' pins, so the day it framed is the day it shows. - if (view === 'map') { - planner.autoShowRoute() - focusMapOnDay(dayId) - } - } + // In map mode a day tap fits to that day's places, draws its route and drops + // the other days' pins, so the day it framed is the day it shows. + else if (view === 'map') selectDayOnMap(dayId) + else planner.handleSelectDay(dayId, true) } const packedCount = packingItems.filter(i => i.checked).length @@ -347,7 +381,7 @@ export default function MTripShell({ {/* ── Day chips (z-25 — covered by non-plan tab overlays, stays mounted) ── */} {days.length > 0 && ( -
+
{days.map((day, idx) => { const active = day.id === planner.selectedDayId @@ -376,6 +410,26 @@ export default function MTripShell({ ) })}
+ {/* Drop the day filter and show the whole trip (#2257). Map only: the + plan timeline is single-day, so there is nothing to widen there. + Stays mounted while a day is active rather than appearing on + selection, which would shove the rail sideways under the thumb. */} + {view === 'map' && ( + + )}
)} diff --git a/client/tests/unit/mobile/trip/MTripShell.test.tsx b/client/tests/unit/mobile/trip/MTripShell.test.tsx index 54f38a04b..ff3437c12 100644 --- a/client/tests/unit/mobile/trip/MTripShell.test.tsx +++ b/client/tests/unit/mobile/trip/MTripShell.test.tsx @@ -4,7 +4,7 @@ import { buildPlanner, buildShell } from '../../../helpers/mobileTrip' import type { MTripShellApi, TripPlanner } from '../../../../src/mobile/screens/trip/MTripShell' import type { Day, PackingItem, TodoItem } from '../../../../src/types' -// FE-MOB-SHELL-001 to FE-MOB-SHELL-046 +// FE-MOB-SHELL-001 to FE-MOB-SHELL-051 const mocks = vi.hoisted(() => ({ planner: {} as TripPlanner })) @@ -504,6 +504,75 @@ describe('MTripShell', () => { expect(scrollIntoView).toHaveBeenCalledWith({ behavior: 'auto', inline: 'center', block: 'nearest' }) }) }) + + // #2257 — the map filters down to one day, and until now nothing took that + // filter back off: the chip rail can only swap one day for another, and the + // second tap on the active chip is the day sheet. Its own control, map only. + describe('the all-days toggle (#2257)', () => { + const allDays = () => screen.getByRole('button', { name: 'mobileTrip.allDays' }) + const enterMap = () => fireEvent.click(screen.getByRole('button', { name: 'mobileTrip.mapView' })) + + it('FE-MOB-SHELL-047: stays off the plan view, where nothing is filtered anyway', () => { + renderShell() + expect(screen.queryByRole('button', { name: 'mobileTrip.allDays' })).not.toBeInTheDocument() + enterMap() + expect(allDays()).toBeInTheDocument() + }) + + it('FE-MOB-SHELL-048: drops the day and its pin filter so the whole trip comes back', () => { + const { planner } = renderShell() + enterMap() + vi.mocked(planner.setExpandedDayIds).mockClear() + + fireEvent.click(allDays()) + + expect(planner.handleSelectDay).toHaveBeenLastCalledWith(null, false) + expect(planner.setExpandedDayIds).toHaveBeenCalledWith(null) + // The day sheet belongs to the chip, not to this button. + expect(shellApi.sheet).toBeNull() + }) + + it('FE-MOB-SHELL-049: a second press goes back to the day it came from', () => { + const { planner, rerenderShell } = renderShell() + enterMap() + fireEvent.click(allDays()) + + // The planner is a fixture, so the commit is replayed by hand. + ;(planner as { selectedDayId: number | null }).selectedDayId = null + rerenderShell() + vi.mocked(planner.setExpandedDayIds).mockClear() + vi.mocked(planner.autoShowRoute).mockClear() + + fireEvent.click(allDays()) + + expect(planner.handleSelectDay).toHaveBeenLastCalledWith(11, false) + expect(planner.setExpandedDayIds).toHaveBeenCalledWith(new Set([11])) + expect(planner.autoShowRoute).toHaveBeenCalled() + }) + + it('FE-MOB-SHELL-050: leaving the map puts a day back, the timeline has no all-days state', () => { + const { planner, rerenderShell } = renderShell() + enterMap() + fireEvent.click(allDays()) + ;(planner as { selectedDayId: number | null }).selectedDayId = null + rerenderShell() + + fireEvent.click(screen.getByRole('button', { name: 'mobileTrip.listView' })) + + expect(planner.handleSelectDay).toHaveBeenLastCalledWith(11, true) + }) + + it('FE-MOB-SHELL-051: the active chip still opens the day sheet on the map', () => { + const { planner } = renderShell() + enterMap() + vi.mocked(planner.handleSelectDay).mockClear() + + fireEvent.click(screen.getByRole('button', { name: 'Sat 2' })) + + expect(shellApi.sheet).toEqual({ id: 'day', payload: { dayId: 11 } }) + expect(planner.handleSelectDay).not.toHaveBeenCalled() + }) + }) }) describe('buildShell fixture', () => { diff --git a/shared/src/i18n/ar/mobileTrip.ts b/shared/src/i18n/ar/mobileTrip.ts index 9a02d9023..f4d75a64c 100644 --- a/shared/src/i18n/ar/mobileTrip.ts +++ b/shared/src/i18n/ar/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'المكان', 'mobileTrip.addToDayQuestion': 'إضافة إلى يوم؟', 'mobileTrip.addTransportShort': 'النقل', + 'mobileTrip.allDays': 'كل الأيام', 'mobileTrip.assignedDays': 'الأيام المخصصة', 'mobileTrip.assignmentNotes': 'ملاحظات خاصة باليوم', 'mobileTrip.bookingsEmpty': 'لا توجد حجوزات بعد', diff --git a/shared/src/i18n/br/mobileTrip.ts b/shared/src/i18n/br/mobileTrip.ts index fc4e3a5ee..fdd948d38 100644 --- a/shared/src/i18n/br/mobileTrip.ts +++ b/shared/src/i18n/br/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Lugar', 'mobileTrip.addToDayQuestion': 'Adicionar a um dia?', 'mobileTrip.addTransportShort': 'Transporte', + 'mobileTrip.allDays': 'Todos os dias', 'mobileTrip.assignedDays': 'Dias atribuídos', 'mobileTrip.assignmentNotes': 'Notas específicas do dia', 'mobileTrip.bookingsEmpty': 'Nenhuma reserva ainda', diff --git a/shared/src/i18n/ca/mobileTrip.ts b/shared/src/i18n/ca/mobileTrip.ts index 835a22371..e2d94b94b 100644 --- a/shared/src/i18n/ca/mobileTrip.ts +++ b/shared/src/i18n/ca/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Lloc', 'mobileTrip.addToDayQuestion': 'Afegeix a un dia?', 'mobileTrip.addTransportShort': 'Transport', + 'mobileTrip.allDays': 'Tots els dies', 'mobileTrip.assignedDays': 'Dies assignats', 'mobileTrip.assignmentNotes': 'Notes específiques del dia', 'mobileTrip.bookingsEmpty': 'Encara no hi ha reserves', diff --git a/shared/src/i18n/cs/mobileTrip.ts b/shared/src/i18n/cs/mobileTrip.ts index 5d8647d92..5ca305d1b 100644 --- a/shared/src/i18n/cs/mobileTrip.ts +++ b/shared/src/i18n/cs/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Místo', 'mobileTrip.addToDayQuestion': 'Přidat do dne?', 'mobileTrip.addTransportShort': 'Doprava', + 'mobileTrip.allDays': 'Všechny dny', 'mobileTrip.assignedDays': 'Přiřazené dny', 'mobileTrip.assignmentNotes': 'Poznámky ke dni', 'mobileTrip.bookingsEmpty': 'Zatím žádné rezervace', diff --git a/shared/src/i18n/de/mobileTrip.ts b/shared/src/i18n/de/mobileTrip.ts index 461148250..2eaf8a02f 100644 --- a/shared/src/i18n/de/mobileTrip.ts +++ b/shared/src/i18n/de/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Ort', 'mobileTrip.addToDayQuestion': 'Zu einem Tag hinzufügen?', 'mobileTrip.addTransportShort': 'Transport', + 'mobileTrip.allDays': 'Alle Tage', 'mobileTrip.assignedDays': 'Zugewiesene Tage', 'mobileTrip.assignmentNotes': 'Tagesspezifische Notizen', 'mobileTrip.bookingsEmpty': 'Noch keine Buchungen', diff --git a/shared/src/i18n/en/mobileTrip.ts b/shared/src/i18n/en/mobileTrip.ts index b7f4eaf75..b393619f5 100644 --- a/shared/src/i18n/en/mobileTrip.ts +++ b/shared/src/i18n/en/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Place', 'mobileTrip.addToDayQuestion': 'Add to a day?', 'mobileTrip.addTransportShort': 'Transport', + 'mobileTrip.allDays': 'All Days', 'mobileTrip.assignedDays': 'Assigned Days', 'mobileTrip.assignmentNotes': 'Day-specific notes', 'mobileTrip.bookingsEmpty': 'No bookings yet', diff --git a/shared/src/i18n/es/mobileTrip.ts b/shared/src/i18n/es/mobileTrip.ts index db1e219fb..376586bd0 100644 --- a/shared/src/i18n/es/mobileTrip.ts +++ b/shared/src/i18n/es/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Lugar', 'mobileTrip.addToDayQuestion': '¿Añadir a un día?', 'mobileTrip.addTransportShort': 'Transporte', + 'mobileTrip.allDays': 'Todos los días', 'mobileTrip.assignedDays': 'Días asignados', 'mobileTrip.assignmentNotes': 'Notas específicas del día', 'mobileTrip.bookingsEmpty': 'Aún no hay reservas', diff --git a/shared/src/i18n/fr/mobileTrip.ts b/shared/src/i18n/fr/mobileTrip.ts index a6bd063d4..369bfb819 100644 --- a/shared/src/i18n/fr/mobileTrip.ts +++ b/shared/src/i18n/fr/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Lieu', 'mobileTrip.addToDayQuestion': 'Ajouter à un jour ?', 'mobileTrip.addTransportShort': 'Transport', + 'mobileTrip.allDays': 'Tous les jours', 'mobileTrip.assignedDays': 'Jours assignés', 'mobileTrip.assignmentNotes': 'Notes propres au jour', 'mobileTrip.bookingsEmpty': 'Aucune réservation', diff --git a/shared/src/i18n/gr/mobileTrip.ts b/shared/src/i18n/gr/mobileTrip.ts index f67c0dc55..c9a531006 100644 --- a/shared/src/i18n/gr/mobileTrip.ts +++ b/shared/src/i18n/gr/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Μέρος', 'mobileTrip.addToDayQuestion': 'Προσθήκη σε ημέρα;', 'mobileTrip.addTransportShort': 'Μεταφορά', + 'mobileTrip.allDays': 'Όλες οι Ημέρες', 'mobileTrip.assignedDays': 'Ανατεθειμένες ημέρες', 'mobileTrip.assignmentNotes': 'Σημειώσεις ημέρας', 'mobileTrip.bookingsEmpty': 'Δεν υπάρχουν κρατήσεις ακόμη', diff --git a/shared/src/i18n/hu/mobileTrip.ts b/shared/src/i18n/hu/mobileTrip.ts index 69d5e0a92..97ad3e7b4 100644 --- a/shared/src/i18n/hu/mobileTrip.ts +++ b/shared/src/i18n/hu/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Hely', 'mobileTrip.addToDayQuestion': 'Hozzáadás egy naphoz?', 'mobileTrip.addTransportShort': 'Közlekedés', + 'mobileTrip.allDays': 'Minden nap', 'mobileTrip.assignedDays': 'Hozzárendelt napok', 'mobileTrip.assignmentNotes': 'Napra szóló jegyzetek', 'mobileTrip.bookingsEmpty': 'Még nincsenek foglalások', diff --git a/shared/src/i18n/id/mobileTrip.ts b/shared/src/i18n/id/mobileTrip.ts index 40547f0ad..8b8501528 100644 --- a/shared/src/i18n/id/mobileTrip.ts +++ b/shared/src/i18n/id/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Tempat', 'mobileTrip.addToDayQuestion': 'Tambahkan ke hari?', 'mobileTrip.addTransportShort': 'Transportasi', + 'mobileTrip.allDays': 'Semua Hari', 'mobileTrip.assignedDays': 'Hari yang ditetapkan', 'mobileTrip.assignmentNotes': 'Catatan khusus hari', 'mobileTrip.bookingsEmpty': 'Belum ada reservasi', diff --git a/shared/src/i18n/it/mobileTrip.ts b/shared/src/i18n/it/mobileTrip.ts index f5ee0618e..797070110 100644 --- a/shared/src/i18n/it/mobileTrip.ts +++ b/shared/src/i18n/it/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Luogo', 'mobileTrip.addToDayQuestion': 'Aggiungere a un giorno?', 'mobileTrip.addTransportShort': 'Trasporto', + 'mobileTrip.allDays': 'Tutti i giorni', 'mobileTrip.assignedDays': 'Giorni assegnati', 'mobileTrip.assignmentNotes': 'Note specifiche del giorno', 'mobileTrip.bookingsEmpty': 'Ancora nessuna prenotazione', diff --git a/shared/src/i18n/ja/mobileTrip.ts b/shared/src/i18n/ja/mobileTrip.ts index bd0694790..dc6932a53 100644 --- a/shared/src/i18n/ja/mobileTrip.ts +++ b/shared/src/i18n/ja/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': '場所', 'mobileTrip.addToDayQuestion': '日に追加しますか?', 'mobileTrip.addTransportShort': '移動', + 'mobileTrip.allDays': 'すべての日', 'mobileTrip.assignedDays': '割り当てられた日', 'mobileTrip.assignmentNotes': '日別メモ', 'mobileTrip.bookingsEmpty': '予約はまだありません', diff --git a/shared/src/i18n/ko/mobileTrip.ts b/shared/src/i18n/ko/mobileTrip.ts index bf43b3fc0..b863b18ad 100644 --- a/shared/src/i18n/ko/mobileTrip.ts +++ b/shared/src/i18n/ko/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': '장소', 'mobileTrip.addToDayQuestion': '하루에 추가할까요?', 'mobileTrip.addTransportShort': '교통', + 'mobileTrip.allDays': '모든 날', 'mobileTrip.assignedDays': '배정된 날짜', 'mobileTrip.assignmentNotes': '날짜별 메모', 'mobileTrip.bookingsEmpty': '아직 예약이 없습니다', diff --git a/shared/src/i18n/nl/mobileTrip.ts b/shared/src/i18n/nl/mobileTrip.ts index f59add59c..56a225b66 100644 --- a/shared/src/i18n/nl/mobileTrip.ts +++ b/shared/src/i18n/nl/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Plaats', 'mobileTrip.addToDayQuestion': 'Toevoegen aan een dag?', 'mobileTrip.addTransportShort': 'Transport', + 'mobileTrip.allDays': 'Alle dagen', 'mobileTrip.assignedDays': 'Toegewezen dagen', 'mobileTrip.assignmentNotes': 'Dagspecifieke notities', 'mobileTrip.bookingsEmpty': 'Nog geen boekingen', diff --git a/shared/src/i18n/pl/mobileTrip.ts b/shared/src/i18n/pl/mobileTrip.ts index 2fcba6f89..bbe860f9e 100644 --- a/shared/src/i18n/pl/mobileTrip.ts +++ b/shared/src/i18n/pl/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Miejsce', 'mobileTrip.addToDayQuestion': 'Dodać do dnia?', 'mobileTrip.addTransportShort': 'Transport', + 'mobileTrip.allDays': 'Wszystkie dni', 'mobileTrip.assignedDays': 'Przypisane dni', 'mobileTrip.assignmentNotes': 'Notatki dla dnia', 'mobileTrip.bookingsEmpty': 'Brak rezerwacji', diff --git a/shared/src/i18n/ru/mobileTrip.ts b/shared/src/i18n/ru/mobileTrip.ts index 9475c0e44..03981b805 100644 --- a/shared/src/i18n/ru/mobileTrip.ts +++ b/shared/src/i18n/ru/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Место', 'mobileTrip.addToDayQuestion': 'Добавить в день?', 'mobileTrip.addTransportShort': 'Транспорт', + 'mobileTrip.allDays': 'Все дни', 'mobileTrip.assignedDays': 'Назначенные дни', 'mobileTrip.assignmentNotes': 'Заметки на день', 'mobileTrip.bookingsEmpty': 'Пока нет бронирований', diff --git a/shared/src/i18n/sv/mobileTrip.ts b/shared/src/i18n/sv/mobileTrip.ts index aedf628f3..0914b8545 100644 --- a/shared/src/i18n/sv/mobileTrip.ts +++ b/shared/src/i18n/sv/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Plats', 'mobileTrip.addToDayQuestion': 'Lägg till på en dag?', 'mobileTrip.addTransportShort': 'Transport', + 'mobileTrip.allDays': 'Alla dagar', 'mobileTrip.assignedDays': 'Tilldelade dagar', 'mobileTrip.assignmentNotes': 'Dagsspecifika anteckningar', 'mobileTrip.bookingsEmpty': 'Inga bokningar än', diff --git a/shared/src/i18n/tr/mobileTrip.ts b/shared/src/i18n/tr/mobileTrip.ts index d92488caa..22e3d99a4 100644 --- a/shared/src/i18n/tr/mobileTrip.ts +++ b/shared/src/i18n/tr/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Yer', 'mobileTrip.addToDayQuestion': 'Bir güne eklensin mi?', 'mobileTrip.addTransportShort': 'Ulaşım', + 'mobileTrip.allDays': 'Tüm Günler', 'mobileTrip.assignedDays': 'Atanan Günler', 'mobileTrip.assignmentNotes': 'Güne özel notlar', 'mobileTrip.bookingsEmpty': 'Henüz rezervasyon yok', diff --git a/shared/src/i18n/uk/mobileTrip.ts b/shared/src/i18n/uk/mobileTrip.ts index bc5c0c087..de3a3491f 100644 --- a/shared/src/i18n/uk/mobileTrip.ts +++ b/shared/src/i18n/uk/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Місце', 'mobileTrip.addToDayQuestion': 'Додати до дня?', 'mobileTrip.addTransportShort': 'Транспорт', + 'mobileTrip.allDays': 'Усі дні', 'mobileTrip.assignedDays': 'Призначені дні', 'mobileTrip.assignmentNotes': 'Нотатки на день', 'mobileTrip.bookingsEmpty': 'Поки немає бронювань', diff --git a/shared/src/i18n/vi/mobileTrip.ts b/shared/src/i18n/vi/mobileTrip.ts index 073f63745..12588df6b 100644 --- a/shared/src/i18n/vi/mobileTrip.ts +++ b/shared/src/i18n/vi/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': 'Địa điểm', 'mobileTrip.addToDayQuestion': 'Thêm vào một ngày?', 'mobileTrip.addTransportShort': 'Di chuyển', + 'mobileTrip.allDays': 'Tất cả các ngày', 'mobileTrip.assignedDays': 'Ngày được gán', 'mobileTrip.assignmentNotes': 'Ghi chú theo ngày', 'mobileTrip.bookingsEmpty': 'Chưa có đặt chỗ nào', diff --git a/shared/src/i18n/zh-TW/mobileTrip.ts b/shared/src/i18n/zh-TW/mobileTrip.ts index 795353e35..5b02fdef6 100644 --- a/shared/src/i18n/zh-TW/mobileTrip.ts +++ b/shared/src/i18n/zh-TW/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': '地點', 'mobileTrip.addToDayQuestion': '新增到某一天?', 'mobileTrip.addTransportShort': '交通', + 'mobileTrip.allDays': '所有天', 'mobileTrip.assignedDays': '已分配的天數', 'mobileTrip.assignmentNotes': '按天備註', 'mobileTrip.bookingsEmpty': '暫無預訂', diff --git a/shared/src/i18n/zh/mobileTrip.ts b/shared/src/i18n/zh/mobileTrip.ts index 3a5ed53c5..b22513a79 100644 --- a/shared/src/i18n/zh/mobileTrip.ts +++ b/shared/src/i18n/zh/mobileTrip.ts @@ -6,6 +6,7 @@ const mobileTrip: TranslationStrings = { 'mobileTrip.addPlaceShort': '地点', 'mobileTrip.addToDayQuestion': '添加到某一天?', 'mobileTrip.addTransportShort': '交通', + 'mobileTrip.allDays': '所有天', 'mobileTrip.assignedDays': '已分配的天数', 'mobileTrip.assignmentNotes': '按天备注', 'mobileTrip.bookingsEmpty': '暂无预订',