mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 13:21:46 +00:00
fallback day-number badge when a day has no date
If a trip has no dates set but a day has a custom title, the dropdown showed only the title with no context. Fall back to 'Day N' as the badge so users can still tell which day it is.
This commit is contained in:
@@ -651,12 +651,15 @@ export default function FileManager({ files = [], onUpload, onDelete, onUpdate,
|
|||||||
<div key={day.id}>
|
<div key={day.id}>
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: 6, fontSize: 11, fontWeight: 600, color: 'var(--text-muted)', padding: '8px 10px 2px' }}>
|
<div style={{ display: 'flex', alignItems: 'center', gap: 6, fontSize: 11, fontWeight: 600, color: 'var(--text-muted)', padding: '8px 10px 2px' }}>
|
||||||
<span>{day.title || t('dayplan.dayN', { n: day.day_number })}</span>
|
<span>{day.title || t('dayplan.dayN', { n: day.day_number })}</span>
|
||||||
{day.date && (
|
{(() => {
|
||||||
<span style={{
|
const badge = day.date || (day.title ? t('dayplan.dayN', { n: day.day_number }) : null)
|
||||||
fontSize: 10, fontWeight: 600, color: 'var(--text-faint)',
|
return badge ? (
|
||||||
background: 'var(--bg-tertiary)', padding: '1px 6px', borderRadius: 999,
|
<span style={{
|
||||||
}}>{day.date}</span>
|
fontSize: 10, fontWeight: 600, color: 'var(--text-faint)',
|
||||||
)}
|
background: 'var(--bg-tertiary)', padding: '1px 6px', borderRadius: 999,
|
||||||
|
}}>{badge}</span>
|
||||||
|
) : null
|
||||||
|
})()}
|
||||||
</div>
|
</div>
|
||||||
{dayPlaces.map(placeBtn)}
|
{dayPlaces.map(placeBtn)}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -463,7 +463,9 @@ export default function DayDetailPanel({ day, days, places, categories = [], tri
|
|||||||
options={days.map((d, i) => ({
|
options={days.map((d, i) => ({
|
||||||
value: d.id,
|
value: d.id,
|
||||||
label: d.title || t('planner.dayN', { n: i + 1 }),
|
label: d.title || t('planner.dayN', { n: i + 1 }),
|
||||||
badge: d.date ? new Date(d.date + 'T00:00:00Z').toLocaleDateString(locale, { day: 'numeric', month: 'short', timeZone: 'UTC' }) : undefined,
|
badge: d.date
|
||||||
|
? new Date(d.date + 'T00:00:00Z').toLocaleDateString(locale, { day: 'numeric', month: 'short', timeZone: 'UTC' })
|
||||||
|
: (d.title ? t('planner.dayN', { n: i + 1 }) : undefined),
|
||||||
}))}
|
}))}
|
||||||
size="sm"
|
size="sm"
|
||||||
/>
|
/>
|
||||||
@@ -476,7 +478,9 @@ export default function DayDetailPanel({ day, days, places, categories = [], tri
|
|||||||
options={days.map((d, i) => ({
|
options={days.map((d, i) => ({
|
||||||
value: d.id,
|
value: d.id,
|
||||||
label: d.title || t('planner.dayN', { n: i + 1 }),
|
label: d.title || t('planner.dayN', { n: i + 1 }),
|
||||||
badge: d.date ? new Date(d.date + 'T00:00:00Z').toLocaleDateString(locale, { day: 'numeric', month: 'short', timeZone: 'UTC' }) : undefined,
|
badge: d.date
|
||||||
|
? new Date(d.date + 'T00:00:00Z').toLocaleDateString(locale, { day: 'numeric', month: 'short', timeZone: 'UTC' })
|
||||||
|
: (d.title ? t('planner.dayN', { n: i + 1 }) : undefined),
|
||||||
}))}
|
}))}
|
||||||
size="sm"
|
size="sm"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -439,11 +439,15 @@ export function ReservationModal({ isOpen, onClose, onSave, reservation, days, p
|
|||||||
value={form.hotel_start_day}
|
value={form.hotel_start_day}
|
||||||
onChange={value => set('hotel_start_day', value)}
|
onChange={value => set('hotel_start_day', value)}
|
||||||
placeholder={t('reservations.meta.selectDay')}
|
placeholder={t('reservations.meta.selectDay')}
|
||||||
options={days.map(d => ({
|
options={days.map(d => {
|
||||||
value: d.id,
|
const dateBadge = d.date ? (formatDate(d.date, locale) ?? undefined) : undefined
|
||||||
label: d.title || t('dayplan.dayN', { n: d.day_number }),
|
const dayBadge = d.title ? t('dayplan.dayN', { n: d.day_number }) : undefined
|
||||||
badge: d.date ? (formatDate(d.date, locale) ?? undefined) : undefined,
|
return {
|
||||||
}))}
|
value: d.id,
|
||||||
|
label: d.title || t('dayplan.dayN', { n: d.day_number }),
|
||||||
|
badge: dateBadge ?? dayBadge,
|
||||||
|
}
|
||||||
|
})}
|
||||||
size="sm"
|
size="sm"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -453,11 +457,15 @@ export function ReservationModal({ isOpen, onClose, onSave, reservation, days, p
|
|||||||
value={form.hotel_end_day}
|
value={form.hotel_end_day}
|
||||||
onChange={value => set('hotel_end_day', value)}
|
onChange={value => set('hotel_end_day', value)}
|
||||||
placeholder={t('reservations.meta.selectDay')}
|
placeholder={t('reservations.meta.selectDay')}
|
||||||
options={days.map(d => ({
|
options={days.map(d => {
|
||||||
value: d.id,
|
const dateBadge = d.date ? (formatDate(d.date, locale) ?? undefined) : undefined
|
||||||
label: d.title || t('dayplan.dayN', { n: d.day_number }),
|
const dayBadge = d.title ? t('dayplan.dayN', { n: d.day_number }) : undefined
|
||||||
badge: d.date ? (formatDate(d.date, locale) ?? undefined) : undefined,
|
return {
|
||||||
}))}
|
value: d.id,
|
||||||
|
label: d.title || t('dayplan.dayN', { n: d.day_number }),
|
||||||
|
badge: dateBadge ?? dayBadge,
|
||||||
|
}
|
||||||
|
})}
|
||||||
size="sm"
|
size="sm"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -220,11 +220,15 @@ export function TransportModal({ isOpen, onClose, onSave, reservation, days, sel
|
|||||||
|
|
||||||
const dayOptions = [
|
const dayOptions = [
|
||||||
{ value: '', label: '—' },
|
{ value: '', label: '—' },
|
||||||
...days.map(d => ({
|
...days.map(d => {
|
||||||
value: d.id,
|
const dateBadge = d.date ? (formatDate(d.date, locale) ?? undefined) : undefined
|
||||||
label: d.title || t('dayplan.dayN', { n: d.day_number }),
|
const dayBadge = d.title ? t('dayplan.dayN', { n: d.day_number }) : undefined
|
||||||
badge: d.date ? (formatDate(d.date, locale) ?? undefined) : undefined,
|
return {
|
||||||
})),
|
value: d.id,
|
||||||
|
label: d.title || t('dayplan.dayN', { n: d.day_number }),
|
||||||
|
badge: dateBadge ?? dayBadge,
|
||||||
|
}
|
||||||
|
}),
|
||||||
]
|
]
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user