Skip to content

Commit 7c7ad8f

Browse files
Merge pull request #5813 from qburst/issue-5794/sr-only
♿ Add scoped .react-datepicker__sr-only utility class for accessibility
2 parents 0aecff1 + a995a34 commit 7c7ad8f

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

src/calendar.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ export default class Calendar extends Component<CalendarProps, CalendarState> {
478478
if (this.props.showWeekNumbers) {
479479
dayNames.push(
480480
<div key="W" className="react-datepicker__day-name" role="columnheader">
481-
<span className="sr-only">Week number</span>
481+
<span className="react-datepicker__sr-only">Week number</span>
482482
<span aria-hidden="true">{this.props.weekLabel || "#"}</span>
483483
</div>,
484484
);
@@ -498,7 +498,7 @@ export default class Calendar extends Component<CalendarProps, CalendarState> {
498498
role="columnheader"
499499
className={clsx("react-datepicker__day-name", weekDayClassName)}
500500
>
501-
<span className="sr-only">
501+
<span className="react-datepicker__sr-only">
502502
{formatDate(day, "EEEE", this.props.locale)}
503503
</span>
504504
<span aria-hidden="true">{weekDayName}</span>

src/stylesheets/datepicker.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
@use "mixins" as *;
44

55
/* sr-only utility class for accessibility */
6-
.sr-only {
6+
.react-datepicker__sr-only {
77
position: absolute;
88
width: 1px;
99
height: 1px;

src/test/calendar_test.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2244,7 +2244,7 @@ describe("Calendar", () => {
22442244

22452245
const header = container.querySelector(".react-datepicker__header");
22462246
const dayNameElements = header?.querySelectorAll(
2247-
".react-datepicker__day-name > span.sr-only",
2247+
".react-datepicker__day-name > span.react-datepicker__sr-only",
22482248
);
22492249

22502250
dayNameElements?.forEach((element, index) => {

src/test/datepicker_test.test.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3812,7 +3812,7 @@ describe("DatePicker", () => {
38123812
});
38133813

38143814
describe("Calendar Header Accessibility", () => {
3815-
it("renders day names with sr-only full weekday and visible short name", () => {
3815+
it("renders day names with react-datepicker__sr-only full weekday and visible short name", () => {
38163816
const { container } = render(<DatePicker />);
38173817
const input = safeQuerySelector(container, "input");
38183818
fireEvent.focus(input);
@@ -3824,7 +3824,7 @@ describe("DatePicker", () => {
38243824

38253825
headers.forEach((header) => {
38263826
// Should have a visually hidden span with the full weekday name
3827-
const srOnly = header.querySelector(".sr-only");
3827+
const srOnly = header.querySelector(".react-datepicker__sr-only");
38283828
expect(srOnly).toBeTruthy();
38293829
expect(srOnly?.textContent?.length).toBeGreaterThan(2);
38303830

@@ -3835,7 +3835,7 @@ describe("DatePicker", () => {
38353835
});
38363836
});
38373837

3838-
it("renders week number column header with sr-only label and visible #", () => {
3838+
it("renders week number column header with react-datepicker__sr-only label and visible #", () => {
38393839
const { container } = render(<DatePicker showWeekNumbers />);
38403840
const input = safeQuerySelector(container, "input");
38413841
fireEvent.focus(input);
@@ -3846,7 +3846,9 @@ describe("DatePicker", () => {
38463846
expect(headers.length).toBe(8);
38473847

38483848
const weekNumberHeader = headers[0] as Element;
3849-
const srOnly = weekNumberHeader.querySelector(".sr-only");
3849+
const srOnly = weekNumberHeader.querySelector(
3850+
".react-datepicker__sr-only",
3851+
);
38503852
expect(srOnly).toBeTruthy();
38513853
expect(srOnly?.textContent?.trim()?.toLowerCase()).toEqual("week number");
38523854

0 commit comments

Comments
 (0)