Skip to content

Commit 4b4c4c9

Browse files
committed
fix(Notification Drawer): Added screen reader text for notification drawer item read state
1 parent 3828124 commit 4b4c4c9

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

packages/react-core/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,10 +1093,7 @@ exports[`Nav Nav List with flyout 1`] = `
10931093
</button>
10941094
<div
10951095
class=""
1096-
data-popper-escaped="true"
1097-
data-popper-placement="right-start"
1098-
data-popper-reference-hidden="true"
1099-
style="position: absolute; left: 0px; top: 0px; z-index: 9999; opacity: 0; transition: opacity 0ms cubic-bezier(.54, 1.5, .38, 1.11); min-width: 0px; transform: translate(0px, 0px);"
1096+
style="position: absolute; left: 0px; top: 0px; z-index: 9999; opacity: 0; transition: opacity 0ms cubic-bezier(.54, 1.5, .38, 1.11); min-width: 0px;"
11001097
>
11011098
<div>
11021099
Flyout test

packages/react-core/src/components/NotificationDrawer/NotificationDrawerListItem.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ export interface NotificationDrawerListItemProps extends React.HTMLProps<HTMLLIE
1313
isRead?: boolean;
1414
/** Callback for when a list item is clicked */
1515
onClick?: (event: any) => void;
16+
/** Read state screen reader text */
17+
readStateScreenReaderText?: string;
1618
/** Tab index for the list item */
1719
tabIndex?: number;
1820
/** Variant indicates the severity level */
@@ -26,6 +28,7 @@ export const NotificationDrawerListItem: React.FunctionComponent<NotificationDra
2628
isRead = false,
2729
// eslint-disable-next-line @typescript-eslint/no-unused-vars
2830
onClick = (event: React.MouseEvent) => undefined as any,
31+
readStateScreenReaderText,
2932
tabIndex = 0,
3033
variant = 'custom',
3134
...props
@@ -40,6 +43,14 @@ export const NotificationDrawerListItem: React.FunctionComponent<NotificationDra
4043
}
4144
}
4245
};
46+
47+
let readStateSRText;
48+
if (readStateScreenReaderText) {
49+
readStateSRText = readStateScreenReaderText;
50+
} else {
51+
readStateSRText = isRead ? 'read' : 'unread';
52+
}
53+
4354
return (
4455
<li
4556
{...props}
@@ -54,6 +65,7 @@ export const NotificationDrawerListItem: React.FunctionComponent<NotificationDra
5465
onClick={(e) => onClick(e)}
5566
onKeyDown={onKeyDown}
5667
>
68+
<span className="pf-v5-screen-reader">{readStateSRText}</span>
5769
{children}
5870
</li>
5971
);

packages/react-core/src/components/NotificationDrawer/__tests__/NotificationDrawerListItem.test.tsx

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,21 @@ describe('NotificationDrawerListItem', () => {
2121
expect(screen.getByRole('listitem')).toHaveClass('pf-m-hoverable');
2222
});
2323

24-
test('drawer list item with isRead applied', () => {
24+
test('drawer list item with isRead applied and screen reader text is set to read', () => {
2525
render(<NotificationDrawerListItem isRead />);
2626
expect(screen.getByRole('listitem')).toHaveClass('pf-m-read');
27+
expect(screen.getByRole('listitem')).toContainHTML('<span class="pf-v5-screen-reader">read</span>');
28+
29+
});
30+
31+
test('drawer list item has screen reader text set to unread by default', () => {
32+
render(<NotificationDrawerListItem />);
33+
expect(screen.getByRole('listitem')).toContainHTML('<span class="pf-v5-screen-reader">unread</span>');
34+
});
35+
36+
test('drawer list item screen reader textcan be customized', () => {
37+
render(<NotificationDrawerListItem readStateScreenReaderText="was read"/>);
38+
expect(screen.getByRole('listitem')).toContainHTML('<span class="pf-v5-screen-reader">was read</span>');
2739
});
2840
});
41+

packages/react-core/src/components/NotificationDrawer/__tests__/__snapshots__/NotificationDrawerListItem.test.tsx.snap

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ exports[`NotificationDrawerListItem renders with PatternFly Core styles 1`] = `
55
<li
66
class="pf-v5-c-notification-drawer__list-item pf-m-hoverable pf-m-custom"
77
tabindex="0"
8-
/>
8+
>
9+
<span
10+
class="pf-v5-screen-reader"
11+
>
12+
unread
13+
</span>
14+
</li>
915
</DocumentFragment>
1016
`;

0 commit comments

Comments
 (0)