diff --git a/client/src/components/Planner/bookings/BookingCard.tsx b/client/src/components/Planner/bookings/BookingCard.tsx index 81dbe3c6d..fc144fb86 100644 --- a/client/src/components/Planner/bookings/BookingCard.tsx +++ b/client/src/components/Planner/bookings/BookingCard.tsx @@ -15,7 +15,7 @@ import { formatMoney } from '../../../utils/formatters' import { parseMeta, displayTitle, type CostTotal } from './bookingsModel' import type { BookingFacts } from './bookingFacts' import { - AirTrailPill, MailPill, BOX, Block, Field, FileRows, ReviewPill, RoundAction, RouteBox, StatusDot, TravelerChips, TypeChip, WhenFields, + AirTrailPill, BOX, Block, Field, FileRows, ReviewPill, RoundAction, RouteBox, StatusDot, TravelerChips, TypeChip, WhenFields, fs, toneOf, toneTint, } from './bookingParts' import { TransitLegs, transitSummary } from './transitParts' @@ -66,7 +66,6 @@ export default function BookingCard(p: BookingCardProps) { {!!r.needs_review && } - {p.canEdit && } {p.canEdit && } diff --git a/client/src/components/Planner/bookings/BookingDetailDialog.tsx b/client/src/components/Planner/bookings/BookingDetailDialog.tsx index 7c0aaea92..3595dc148 100644 --- a/client/src/components/Planner/bookings/BookingDetailDialog.tsx +++ b/client/src/components/Planner/bookings/BookingDetailDialog.tsx @@ -154,7 +154,7 @@ export default function BookingDetailDialog(p: BookingDetailDialogProps) { )} {!!r.needs_review && void confirmReview() : undefined} />} - + {r.confirmation_number && ( // The copy button rides in the pill's padding (-my-1), so this pill is as tall as its neighbours. diff --git a/client/src/components/Planner/bookings/BookingsList.tsx b/client/src/components/Planner/bookings/BookingsList.tsx index 6a6589ce3..3934bea52 100644 --- a/client/src/components/Planner/bookings/BookingsList.tsx +++ b/client/src/components/Planner/bookings/BookingsList.tsx @@ -7,7 +7,7 @@ import { formatMoney } from '../../../utils/formatters' import { TransitLegChips } from '../transitDisplay' import { displayTitle, parseMeta, type BookingGroup, type CostTotal } from './bookingsModel' import type { BookingFacts } from './bookingFacts' -import { AirTrailPill, CountPill, MailPill, EYEBROW, ReviewPill, RoundAction, StatusDot, TravelerStack, TypeTile, fs } from './bookingParts' +import { AirTrailPill, CountPill, EYEBROW, ReviewPill, RoundAction, StatusDot, TravelerStack, TypeTile, fs } from './bookingParts' export interface BookingsListProps { groups: BookingGroup[] @@ -102,7 +102,6 @@ function Row({ r, p, facts, files, costs, t, locale }: { {displayTitle(r)} {!!r.needs_review && } - {transit ? (
diff --git a/client/src/components/Planner/bookings/bookingParts.test.tsx b/client/src/components/Planner/bookings/bookingParts.test.tsx index 91ad9cef1..01c51bde4 100644 --- a/client/src/components/Planner/bookings/bookingParts.test.tsx +++ b/client/src/components/Planner/bookings/bookingParts.test.tsx @@ -1,11 +1,11 @@ -// FE-PLANNER-BKPARTS-001 to FE-PLANNER-BKPARTS-005 +// FE-PLANNER-BKPARTS-001 to FE-PLANNER-BKPARTS-006 import { fireEvent, render, screen } from '@testing-library/react'; import { describe, expect, it, vi } from 'vitest'; -import { buildTripFile } from '../../../../tests/helpers/factories'; +import { buildReservation, buildTripFile } from '../../../../tests/helpers/factories'; import { downloadFile, openFile } from '../../../utils/fileDownload'; import type { BookingFacts } from './bookingFacts'; -import { FileRows, ReviewPill, WhenFields } from './bookingParts'; +import { FileRows, MailPill, ReviewPill, WhenFields } from './bookingParts'; vi.mock('../../../utils/fileDownload', () => ({ openFile: vi.fn(() => Promise.resolve()), @@ -97,4 +97,11 @@ describe('FileRows', () => { fireEvent.click(screen.getByRole('button')); expect(onConfirm).toHaveBeenCalledOnce(); }); + + it('FE-PLANNER-BKPARTS-006: the mail pill names a booking from a forwarded mail, and nothing else', () => { + const { rerender } = render(); + expect(screen.getByText('From mail')).toBeInTheDocument(); + rerender(); + expect(screen.queryByText('From mail')).toBeNull(); + }); }); diff --git a/client/src/components/Planner/bookings/bookingParts.tsx b/client/src/components/Planner/bookings/bookingParts.tsx index 017d5ee6a..dcc2affb6 100644 --- a/client/src/components/Planner/bookings/bookingParts.tsx +++ b/client/src/components/Planner/bookings/bookingParts.tsx @@ -205,30 +205,27 @@ export function ReviewPill({ pill = false, onConfirm }: { pill?: boolean; onConf } /** - * The AirTrail link of a booking. A multi-leg import is detached from sync by - * design (#1535), which is not the same as a flight removed upstream (#1646). + * Added from a forwarded booking mail (mail-ingest), in the detail dialog's + * head: where a person looks up where a booking came from. The card and the + * list leave it out, their head is the booking itself. */ -/** Added from a forwarded booking mail (mail-ingest): said quietly, so the person knows where it came from. */ -export function MailPill({ r, pill = false }: { r: Reservation; pill?: boolean }) { +export function MailPill({ r }: { r: Reservation }) { const { t } = useTranslation() if (r.external_source !== 'mail') return null return ( - {pill ? ( - - - {t('mailInbox.fromMail')} - - ) : ( - - - {t('mailInbox.fromMail')} - - )} + + + {t('mailInbox.fromMail')} + ) } +/** + * The AirTrail link of a booking. A multi-leg import is detached from sync by + * design (#1535), which is not the same as a flight removed upstream (#1646). + */ export function AirTrailPill({ r, pill = false }: { r: Reservation; pill?: boolean }) { const { t } = useTranslation() if (r.external_source !== 'airtrail') return null