Skip to content

Commit 858b449

Browse files
[UnderlineNav2]: Add visually hidden heading where aria-label is present (#2470)
* Add visually hidden heading * add changeset and a test * append 'navigation' to the aria-label string
1 parent 53edba8 commit 858b449

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

.changeset/twelve-spoons-walk.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@primer/react': patch
3+
---
4+
5+
UnderlineNav2: Render a visually hidden heading for screen readers when aria-label is present

src/UnderlineNav2/UnderlineNav.test.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,10 @@ describe('UnderlineNav', () => {
112112
expect(loadingCounter?.className).toContain('LoadingCounter')
113113
expect(loadingCounter?.textContent).toBe('')
114114
})
115+
it('renders a visually hidden h2 heading for screen readers when aria-label is present', () => {
116+
const {container} = render(<ResponsiveUnderlineNav />)
117+
const heading = container.getElementsByTagName('h2')[0]
118+
expect(heading.className).toContain('VisuallyHidden')
119+
expect(heading.textContent).toBe('Repository navigation')
120+
})
115121
})

src/UnderlineNav2/UnderlineNav.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {useResizeObserver, ResizeObserverEntry} from '../hooks/useResizeObserver
66
import CounterLabel from '../CounterLabel'
77
import {useTheme} from '../ThemeProvider'
88
import {ChildWidthArray, ResponsiveProps} from './types'
9+
import VisuallyHidden from '../_VisuallyHidden'
910
import {moreBtnStyles, getDividerStyle, getNavStyles, ulStyles, menuStyles, menuItemStyles, GAP} from './styles'
1011
import styled from 'styled-components'
1112
import {LoadingCounter} from './LoadingCounter'
@@ -307,6 +308,7 @@ export const UnderlineNav = forwardRef(
307308
iconsVisible
308309
}}
309310
>
311+
{ariaLabel && <VisuallyHidden as="h2">{`${ariaLabel} navigation`}</VisuallyHidden>}
310312
<Box
311313
as={as}
312314
sx={merge<BetterSystemStyleObject>(getNavStyles(theme, {align}), sxProp)}

0 commit comments

Comments
 (0)