diff --git a/components/contacts/__tests__/contact-detail.test.tsx b/components/contacts/__tests__/contact-detail.test.tsx index c933d5a46..a06d4e1c3 100644 --- a/components/contacts/__tests__/contact-detail.test.tsx +++ b/components/contacts/__tests__/contact-detail.test.tsx @@ -45,6 +45,14 @@ describe('ContactDetail', () => { expect(link.closest('a')).toHaveAttribute('href', 'mailto:alice@example.com'); }); + it('shows the copy and compose buttons on keyboard focus and touch, not only on hover', () => { + render(); + const copy = screen.getByRole('button', { name: 'detail.copy_email' }); + const actions = copy.closest('[data-row-actions]') as HTMLElement; + expect(actions.className).toContain('group-focus-within:opacity-100'); + expect(actions.className).toContain('pointer-coarse:opacity-100'); + }); + it('displays phone numbers', () => { render(); expect(screen.getByText('+33612345678')).toBeInTheDocument(); diff --git a/components/contacts/contact-detail.tsx b/components/contacts/contact-detail.tsx index af8e2986c..a2f1ea4e4 100644 --- a/components/contacts/contact-detail.tsx +++ b/components/contacts/contact-detail.tsx @@ -517,8 +517,10 @@ function FieldRow({ icon: Icon, label, children }: { icon: React.ComponentType<{ } function RowActions({ children }: { children: React.ReactNode }) { + // Shown on hover, while the keyboard is in the row and always on touch + // screens, which have no hover (WCAG 2.1.1, 2.4.7). return ( -
+
{children}
);