From 2155c2ff1f491bd29d92d770b66971aa70ef0fd8 Mon Sep 17 00:00:00 2001 From: Cyril Date: Thu, 11 Sep 2025 10:40:43 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8(frontend)=20add=20document=20visible?= =?UTF-8?q?=20in=20list=20and=20openable=20via=20enter=20key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the document now appears in the list and can be opened using the enter key Signed-off-by: Cyril --- .../docs/docs-grid/components/DocsGridItem.tsx | 13 +++++++++++++ .../apps/impress/src/i18n/translations.json | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGridItem.tsx b/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGridItem.tsx index aaf26cd2..8bd04344 100644 --- a/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGridItem.tsx +++ b/src/frontend/apps/impress/src/features/docs/docs-grid/components/DocsGridItem.tsx @@ -1,5 +1,6 @@ import { Tooltip, useModal } from '@openfun/cunningham-react'; import { DateTime } from 'luxon'; +import { useRouter } from 'next/router'; import { useTranslation } from 'react-i18next'; import { css } from 'styled-components'; @@ -21,6 +22,7 @@ type DocsGridItemProps = { export const DocsGridItem = ({ doc, dragMode = false }: DocsGridItemProps) => { const { t } = useTranslation(); + const router = useRouter(); const { isDesktop } = useResponsiveStore(); const { flexLeft, flexRight } = useResponsiveDocGrid(); const { spacingsTokens } = useCunninghamTheme(); @@ -33,6 +35,13 @@ export const DocsGridItem = ({ doc, dragMode = false }: DocsGridItemProps) => { shareModal.open(); }; + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + void router.push(`/docs/${doc.id}`); + } + }; + return ( <> { } `} className="--docs--doc-grid-item" + onKeyDown={handleKeyDown} + aria-label={t('Open document: {{title}}', { + title: doc.title || t('Untitled document'), + })} >