diff --git a/client/src/i18n/translations/ar.ts b/client/src/i18n/translations/ar.ts index 896f3434..77fb21df 100644 --- a/client/src/i18n/translations/ar.ts +++ b/client/src/i18n/translations/ar.ts @@ -34,6 +34,8 @@ const ar: Record = { 'common.none': 'لا شيء', 'common.date': 'التاريخ', 'common.rename': 'إعادة تسمية', + 'common.discardChanges': 'تجاهل التغييرات', + 'common.discard': 'تجاهل', 'common.name': 'الاسم', 'common.email': 'البريد الإلكتروني', 'common.password': 'كلمة المرور', diff --git a/client/src/i18n/translations/br.ts b/client/src/i18n/translations/br.ts index 40ebc591..0ee132d5 100644 --- a/client/src/i18n/translations/br.ts +++ b/client/src/i18n/translations/br.ts @@ -30,6 +30,8 @@ const br: Record = { 'common.none': 'Nenhum', 'common.date': 'Data', 'common.rename': 'Renomear', + 'common.discardChanges': 'Descartar alterações', + 'common.discard': 'Descartar', 'common.name': 'Nome', 'common.email': 'E-mail', 'common.password': 'Senha', diff --git a/client/src/i18n/translations/cs.ts b/client/src/i18n/translations/cs.ts index a4881622..55f7160d 100644 --- a/client/src/i18n/translations/cs.ts +++ b/client/src/i18n/translations/cs.ts @@ -30,6 +30,8 @@ const cs: Record = { 'common.none': 'Žádné', 'common.date': 'Datum', 'common.rename': 'Přejmenovat', + 'common.discardChanges': 'Zahodit změny', + 'common.discard': 'Zahodit', 'common.name': 'Jméno', 'common.email': 'E-mail', 'common.password': 'Heslo', diff --git a/client/src/i18n/translations/de.ts b/client/src/i18n/translations/de.ts index adb4f980..0834fc62 100644 --- a/client/src/i18n/translations/de.ts +++ b/client/src/i18n/translations/de.ts @@ -30,6 +30,8 @@ const de: Record = { 'common.none': 'Keine', 'common.date': 'Datum', 'common.rename': 'Umbenennen', + 'common.discardChanges': 'Änderungen verwerfen', + 'common.discard': 'Verwerfen', 'common.name': 'Name', 'common.email': 'E-Mail', 'common.password': 'Passwort', diff --git a/client/src/i18n/translations/en.ts b/client/src/i18n/translations/en.ts index 21236211..70559aca 100644 --- a/client/src/i18n/translations/en.ts +++ b/client/src/i18n/translations/en.ts @@ -30,6 +30,8 @@ const en: Record = { 'common.none': 'None', 'common.date': 'Date', 'common.rename': 'Rename', + 'common.discardChanges': 'Discard Changes', + 'common.discard': 'Discard', 'common.name': 'Name', 'common.email': 'Email', 'common.password': 'Password', diff --git a/client/src/i18n/translations/es.ts b/client/src/i18n/translations/es.ts index 9bf98f25..d587df5a 100644 --- a/client/src/i18n/translations/es.ts +++ b/client/src/i18n/translations/es.ts @@ -30,6 +30,8 @@ const es: Record = { 'common.none': 'Ninguno', 'common.date': 'Fecha', 'common.rename': 'Renombrar', + 'common.discardChanges': 'Descartar cambios', + 'common.discard': 'Descartar', 'common.name': 'Nombre', 'common.email': 'Correo', 'common.password': 'Contraseña', diff --git a/client/src/i18n/translations/fr.ts b/client/src/i18n/translations/fr.ts index 8f2ceff0..2d225b87 100644 --- a/client/src/i18n/translations/fr.ts +++ b/client/src/i18n/translations/fr.ts @@ -30,6 +30,8 @@ const fr: Record = { 'common.none': 'Aucun', 'common.date': 'Date', 'common.rename': 'Renommer', + 'common.discardChanges': 'Ignorer les modifications', + 'common.discard': 'Ignorer', 'common.name': 'Nom', 'common.email': 'E-mail', 'common.password': 'Mot de passe', diff --git a/client/src/i18n/translations/hu.ts b/client/src/i18n/translations/hu.ts index f815e7d3..9f243a25 100644 --- a/client/src/i18n/translations/hu.ts +++ b/client/src/i18n/translations/hu.ts @@ -30,6 +30,8 @@ const hu: Record = { 'common.none': 'Nincs', 'common.date': 'Dátum', 'common.rename': 'Átnevezés', + 'common.discardChanges': 'Változtatások elvetése', + 'common.discard': 'Elveti', 'common.name': 'Név', 'common.email': 'E-mail', 'common.password': 'Jelszó', diff --git a/client/src/i18n/translations/id.ts b/client/src/i18n/translations/id.ts index 58c9d3a7..84f8e8f0 100644 --- a/client/src/i18n/translations/id.ts +++ b/client/src/i18n/translations/id.ts @@ -30,6 +30,8 @@ const id: Record = { 'common.none': 'Tidak ada', 'common.date': 'Tanggal', 'common.rename': 'Ganti nama', + 'common.discardChanges': 'Buang perubahan', + 'common.discard': 'Buang', 'common.name': 'Nama', 'common.email': 'Email', 'common.password': 'Kata sandi', diff --git a/client/src/i18n/translations/it.ts b/client/src/i18n/translations/it.ts index 1538a096..40e8ff2f 100644 --- a/client/src/i18n/translations/it.ts +++ b/client/src/i18n/translations/it.ts @@ -30,6 +30,8 @@ const it: Record = { 'common.none': 'Nessuno', 'common.date': 'Data', 'common.rename': 'Rinomina', + 'common.discardChanges': 'Scarta modifiche', + 'common.discard': 'Scarta', 'common.name': 'Nome', 'common.email': 'Email', 'common.password': 'Password', diff --git a/client/src/i18n/translations/nl.ts b/client/src/i18n/translations/nl.ts index 54fead7f..ab8c9781 100644 --- a/client/src/i18n/translations/nl.ts +++ b/client/src/i18n/translations/nl.ts @@ -30,6 +30,8 @@ const nl: Record = { 'common.none': 'Geen', 'common.date': 'Datum', 'common.rename': 'Hernoemen', + 'common.discardChanges': 'Wijzigingen verwerpen', + 'common.discard': 'Verwerpen', 'common.name': 'Naam', 'common.email': 'E-mail', 'common.password': 'Wachtwoord', diff --git a/client/src/i18n/translations/pl.ts b/client/src/i18n/translations/pl.ts index a6876784..d05a0a13 100644 --- a/client/src/i18n/translations/pl.ts +++ b/client/src/i18n/translations/pl.ts @@ -26,6 +26,8 @@ const pl: Record = { 'common.none': 'Brak', 'common.date': 'Data', 'common.rename': 'Zmień nazwę', + 'common.discardChanges': 'Odrzuć zmiany', + 'common.discard': 'Odrzuć', 'common.name': 'Nazwa', 'common.email': 'E-mail', 'common.password': 'Hasło', diff --git a/client/src/i18n/translations/ru.ts b/client/src/i18n/translations/ru.ts index 09527621..3995a461 100644 --- a/client/src/i18n/translations/ru.ts +++ b/client/src/i18n/translations/ru.ts @@ -30,6 +30,8 @@ const ru: Record = { 'common.none': 'Нет', 'common.date': 'Дата', 'common.rename': 'Переименовать', + 'common.discardChanges': 'Отменить изменения', + 'common.discard': 'Отменить', 'common.name': 'Имя', 'common.email': 'Эл. почта', 'common.password': 'Пароль', diff --git a/client/src/i18n/translations/zh.ts b/client/src/i18n/translations/zh.ts index 85e87090..096eea8d 100644 --- a/client/src/i18n/translations/zh.ts +++ b/client/src/i18n/translations/zh.ts @@ -30,6 +30,8 @@ const zh: Record = { 'common.none': '无', 'common.date': '日期', 'common.rename': '重命名', + 'common.discardChanges': '放弃更改', + 'common.discard': '放弃', 'common.name': '名称', 'common.email': '邮箱', 'common.password': '密码', diff --git a/client/src/i18n/translations/zhTw.ts b/client/src/i18n/translations/zhTw.ts index a22a91a9..c7b75b8a 100644 --- a/client/src/i18n/translations/zhTw.ts +++ b/client/src/i18n/translations/zhTw.ts @@ -30,6 +30,8 @@ const zhTw: Record = { 'common.none': '無', 'common.date': '日期', 'common.rename': '重新命名', + 'common.discardChanges': '捨棄變更', + 'common.discard': '捨棄', 'common.name': '名稱', 'common.email': '郵箱', 'common.password': '密碼', diff --git a/client/src/pages/JourneyDetailPage.tsx b/client/src/pages/JourneyDetailPage.tsx index 16afe83e..efc1e309 100644 --- a/client/src/pages/JourneyDetailPage.tsx +++ b/client/src/pages/JourneyDetailPage.tsx @@ -3002,6 +3002,10 @@ function JourneySettingsDialog({ journey, onClose, onSaved, onOpenInvite, onRefr const [saving, setSaving] = useState(false) const [showAddTrip, setShowAddTrip] = useState(false) const [unlinkTarget, setUnlinkTarget] = useState<{ trip_id: number; title: string } | null>(null) + const [showDiscardConfirm, setShowDiscardConfirm] = useState(false) + + const isDirty = title !== journey.title || subtitle !== (journey.subtitle || '') + const handleClose = () => { if (isDirty) setShowDiscardConfirm(true); else onClose() } const coverRef = useRef(null) const toast = useToast() const navigate = useNavigate() @@ -3060,12 +3064,12 @@ function JourneySettingsDialog({ journey, onClose, onSaved, onOpenInvite, onRefr } return ( -
{ if (e.target === e.currentTarget) e.preventDefault() }}> +
{ if (e.target === e.currentTarget) e.preventDefault() }}>
e.stopPropagation()}>

{t('journey.settings.title')}

-
@@ -3212,7 +3216,7 @@ function JourneySettingsDialog({ journey, onClose, onSaved, onOpenInvite, onRefr {journey.status === 'archived' ? : } {journey.status === 'archived' ? t('journey.settings.reopenJourney') : t('journey.settings.endJourney')} - + @@ -3259,6 +3263,16 @@ function JourneySettingsDialog({ journey, onClose, onSaved, onOpenInvite, onRefr confirmLabel={t('common.delete')} danger /> + + setShowDiscardConfirm(false)} + onConfirm={() => { setShowDiscardConfirm(false); onClose() }} + title={t('common.discardChanges')} + message={t('journey.editor.discardChangesConfirm')} + confirmLabel={t('common.discard')} + danger + />
) }