diff --git a/frontend/src/__tests__/app/message-plans/choose-email-template/preview-template/__snapshots__/page.test.tsx.snap b/frontend/src/__tests__/app/message-plans/choose-email-template/preview-template/__snapshots__/page.test.tsx.snap index 0500bddc5..28374218f 100644 --- a/frontend/src/__tests__/app/message-plans/choose-email-template/preview-template/__snapshots__/page.test.tsx.snap +++ b/frontend/src/__tests__/app/message-plans/choose-email-template/preview-template/__snapshots__/page.test.tsx.snap @@ -32,7 +32,6 @@ exports[`PreviewEmailTemplateFromMessagePlan page renders Email template preview Template
{copy.guidance}
- + {copy.guidanceLink.text} diff --git a/frontend/src/components/molecules/LetterRender/LetterRenderIframe.tsx b/frontend/src/components/molecules/LetterRender/LetterRenderIframe.tsx index 960e44ebb..3a114745e 100644 --- a/frontend/src/components/molecules/LetterRender/LetterRenderIframe.tsx +++ b/frontend/src/components/molecules/LetterRender/LetterRenderIframe.tsx @@ -3,9 +3,13 @@ import type { PersonalisedRenderKey } from '@utils/types'; type LetterRenderIframeProps = { tab: PersonalisedRenderKey; pdfUrl: string | null; -}; +} & React.ComponentProps<'iframe'>; -export function LetterRenderIframe({ tab, pdfUrl }: LetterRenderIframeProps) { +export function LetterRenderIframe({ + tab, + pdfUrl, + ...rest +}: LetterRenderIframeProps) { if (!pdfUrl) returnNo preview available
; const tabDescription = tab === 'shortFormRender' ? 'short' : 'long'; @@ -14,6 +18,7 @@ export function LetterRenderIframe({ tab, pdfUrl }: LetterRenderIframeProps) { src={pdfUrl} title={`Letter preview - ${tabDescription} examples`} aria-label={`PDF preview of letter template with ${tabDescription} example personalisation data`} + {...rest} /> ); } diff --git a/frontend/src/components/molecules/LetterRender/LetterRenderTab.tsx b/frontend/src/components/molecules/LetterRender/LetterRenderTab.tsx index d34ac8e4d..548e904be 100644 --- a/frontend/src/components/molecules/LetterRender/LetterRenderTab.tsx +++ b/frontend/src/components/molecules/LetterRender/LetterRenderTab.tsx @@ -4,7 +4,6 @@ import type { AuthoringLetterTemplate, FormState, } from 'nhs-notify-web-template-management-utils'; -import { getBasePath } from '@utils/get-base-path'; import { NHSNotifyFormProvider, useNHSNotifyForm, @@ -18,6 +17,7 @@ import styles from './LetterRenderTab.module.scss'; import { PollLetterRender } from '@molecules/PollLetterRender/PollLetterRender'; import { PERSONALISATION_FORMDATA_PREFIX } from '@utils/constants'; import content from '@content/content'; +import { buildLetterRenderUrl } from '@utils/letter-render-url'; const { loadingText } = content.components.letterRender; @@ -26,11 +26,6 @@ type LetterRenderTabProps = { tab: PersonalisedRenderKey; }; -function buildPdfUrl(template: AuthoringLetterTemplate, fileName: string) { - const basePath = getBasePath(); - return `${basePath}/files/${template.clientId}/renders/${template.id}/${fileName}`; -} - function derivePdfUrl( template: AuthoringLetterTemplate, personalisedRender: RenderDetails | undefined @@ -43,7 +38,7 @@ function derivePdfUrl( : initialRender; return render?.status === 'RENDERED' - ? buildPdfUrl(template, render.fileName) + ? buildLetterRenderUrl(template, render.fileName) : null; } diff --git a/frontend/src/components/molecules/LetterRender/server-action.ts b/frontend/src/components/molecules/LetterRender/server-action.ts index a6c6fb975..7045591de 100644 --- a/frontend/src/components/molecules/LetterRender/server-action.ts +++ b/frontend/src/components/molecules/LetterRender/server-action.ts @@ -9,11 +9,11 @@ import { SHORT_EXAMPLE_RECIPIENTS, } from '@content/example-recipients'; import { formDataToFormStateFields } from '@utils/form-data-to-form-state'; -import { $LockNumber } from 'nhs-notify-backend-client/schemas'; import { generateLetterProof } from '@utils/form-actions'; import type { LetterProofRequest } from 'nhs-notify-web-template-management-types'; import { PERSONALISATION_FORMDATA_PREFIX } from '@utils/constants'; import { format as formatDate } from 'date-fns'; +import { $LockNumber } from 'nhs-notify-backend-client/schemas'; const { pdsSection } = copy.components.letterRender; diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsAuthoringLetter.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsAuthoringLetter.tsx index 792b39af2..2d194c12a 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsAuthoringLetter.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsAuthoringLetter.tsx @@ -21,35 +21,47 @@ import { toKebabCase } from '@utils/kebab-case'; import styles from './PreviewTemplateDetails.module.scss'; import { interpolate } from '@utils/interpolate'; +type PreviewTemplateDetailsAuthoringLetterProps = { + template: AuthoringLetterTemplate; + letterVariant?: LetterVariant; + hideStatus?: boolean; + hideEditActions?: boolean; + hideLearnMore?: boolean; +}; + const { rowHeadings, visuallyHidden, externalLinks, actions, links } = content.components.previewTemplateDetails; -function pagesAndSheetsCount(template: AuthoringLetterTemplate) { +function pagesAndSheetsCount( + template: AuthoringLetterTemplate, + bothSides = true +) { const pages = template.files.initialRender.status === 'RENDERED' ? template.files.initialRender.pageCount : 0; - const sheets = Math.ceil(pages / 2); + const pagesPerSheet = bothSides ? 2 : 1; + + const sheets = Math.ceil(pages / pagesPerSheet); return { pages, sheets }; } -export default function PreviewTemplateDetailsAuthoringLetter({ +export function PreviewTemplateDetailsAuthoringLetterTable({ template, letterVariant, hideStatus, hideEditActions, -}: { - template: AuthoringLetterTemplate; - letterVariant?: LetterVariant; - hideStatus?: boolean; - hideEditActions?: boolean; -}) { + hideLearnMore, +}: PreviewTemplateDetailsAuthoringLetterProps) { const features = useFeatureFlags(); const campaignIds = useCampaignIds(); - const { pages, sheets } = pagesAndSheetsCount(template); + const { pages, sheets } = pagesAndSheetsCount( + template, + letterVariant?.bothSides + ); const hasSingleCampaign = campaignIds.length === 1; @@ -74,8 +86,6 @@ export default function PreviewTemplateDetailsAuthoringLetter({ return ( <> -
@@ -212,6 +223,7 @@ export default function PreviewTemplateDetailsAuthoringLetter({
label={actions.learnMore}
visuallyHiddenText={visuallyHidden.status}
testId='status-action'
+ hidden={hideLearnMore}
external
/>
@@ -221,3 +233,14 @@ export default function PreviewTemplateDetailsAuthoringLetter({
>
);
}
+
+export default function PreviewTemplateDetailsAuthoringLetter(
+ props: PreviewTemplateDetailsAuthoringLetterProps
+) {
+ return (
+ <>
+