From 2bf53301d24d910ccaa9423bd30bb72c27752100 Mon Sep 17 00:00:00 2001 From: Cyril Date: Tue, 29 Jul 2025 12:00:01 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F(frontend)=20inject=20languag?= =?UTF-8?q?e=20attribute=20to=20pdf=20export?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit added language="fr-FR" to in ModalExport.tsx via cloneElement() to improve accessibility and ensure correct screen reader pronunciation Signed-off-by: Cyril --- CHANGELOG.md | 10 +++++++--- .../docs/doc-export/components/ModalExport.tsx | 10 ++++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92b65a9d..72471c30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ and this project adheres to ## [Unreleased] +### Changed + +- ⚡️(frontend) improve accessibility: + - #1248 + - #1235 + ## [3.5.0] - 2025-07-31 ### Added @@ -25,9 +31,7 @@ and this project adheres to - ♻️(frontend) redirect to doc after duplicate #1175 - 🔧(project) change env.d system by using local files #1200 - ⚡️(frontend) improve tree stability #1207 -- ⚡️(frontend) improve accessibility - - #1232 - - #1248 +- ⚡️(frontend) improve accessibility #1232 - 🛂(frontend) block drag n drop when not desktop #1239 ### Fixed diff --git a/src/frontend/apps/impress/src/features/docs/doc-export/components/ModalExport.tsx b/src/frontend/apps/impress/src/features/docs/doc-export/components/ModalExport.tsx index b047960e..3d9beed1 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-export/components/ModalExport.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-export/components/ModalExport.tsx @@ -10,7 +10,8 @@ import { useToastProvider, } from '@openfun/cunningham-react'; import { DocumentProps, pdf } from '@react-pdf/renderer'; -import { useMemo, useState } from 'react'; +import i18next from 'i18next'; +import { cloneElement, isValidElement, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { css } from 'styled-components'; @@ -92,10 +93,15 @@ export const ModalExport = ({ onClose, doc }: ModalExportProps) => { const exporter = new PDFExporter(editor.schema, pdfDocsSchemaMappings, { resolveFileUrl: async (url) => exportCorsResolveFileUrl(doc.id, url), }); - const pdfDocument = (await exporter.toReactPDFDocument( + const rawPdfDocument = (await exporter.toReactPDFDocument( exportDocument, )) as React.ReactElement; + // Inject language for screen reader support + const pdfDocument = isValidElement(rawPdfDocument) + ? cloneElement(rawPdfDocument, { language: i18next.language }) + : rawPdfDocument; + blobExport = await pdf(pdfDocument).toBlob(); } else { const exporter = new DOCXExporter(editor.schema, docxDocsSchemaMappings, {