Skip to content

Commit 03134ef

Browse files
committed
fix calender weekday with custom styles
1 parent a1618ce commit 03134ef

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

src/calendar.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -482,8 +482,8 @@ export default class Calendar extends Component<CalendarProps, CalendarState> {
482482
key="W"
483483
className={`react-datepicker__day-name ${disabled ? "react-datepicker__day-name--disabled" : ""}`}
484484
role="columnheader"
485+
aria-label="Week number"
485486
>
486-
<span className="react-datepicker__sr-only">Week number</span>
487487
<span aria-hidden="true">{this.props.weekLabel || "#"}</span>
488488
</div>,
489489
);
@@ -501,15 +501,13 @@ export default class Calendar extends Component<CalendarProps, CalendarState> {
501501
<div
502502
key={offset}
503503
role="columnheader"
504+
aria-label={formatDate(day, "EEEE", this.props.locale)}
504505
className={clsx(
505506
"react-datepicker__day-name",
506507
weekDayClassName,
507508
disabled ? "react-datepicker__day-name--disabled" : "",
508509
)}
509510
>
510-
<span className="react-datepicker__sr-only">
511-
{formatDate(day, "EEEE", this.props.locale)}
512-
</span>
513511
<span aria-hidden="true">{weekDayName}</span>
514512
</div>
515513
);

src/test/calendar_test.test.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2244,11 +2244,13 @@ describe("Calendar", () => {
22442244

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

22502250
dayNameElements?.forEach((element, index) => {
2251-
expect(element.textContent).toBe(expectedAriaLabels[index]);
2251+
expect(element.getAttribute("aria-label")).toBe(
2252+
expectedAriaLabels[index],
2253+
);
22522254
});
22532255
});
22542256

src/test/datepicker_test.test.tsx

Lines changed: 12 additions & 13 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 react-datepicker__sr-only full weekday and visible short name", () => {
3815+
it("renders day names with aria-label full weekday and visible short name", () => {
38163816
const { container } = render(<DatePicker />);
38173817
const input = safeQuerySelector(container, "input");
38183818
fireEvent.focus(input);
@@ -3823,19 +3823,18 @@ describe("DatePicker", () => {
38233823
expect(headers.length).toBe(7);
38243824

38253825
headers.forEach((header) => {
3826-
// Should have a visually hidden span with the full weekday name
3827-
const srOnly = header.querySelector(".react-datepicker__sr-only");
3828-
expect(srOnly).toBeTruthy();
3829-
expect(srOnly?.textContent?.length).toBeGreaterThan(2);
3826+
// Should have an aria-label with the full weekday name
3827+
const ariaLabel = header?.getAttribute('aria-label');
3828+
expect(ariaLabel?.length).toBeGreaterThan(2);
38303829

38313830
// Should have a visible short name
3832-
const visible = header.querySelector('span[aria-hidden="true"]');
3831+
const visible = header.querySelector('.react-datepicker__day-name > span[aria-hidden="true"]');
38333832
expect(visible).toBeTruthy();
38343833
expect(visible?.textContent?.length).toBeLessThanOrEqual(3);
38353834
});
38363835
});
38373836

3838-
it("renders week number column header with react-datepicker__sr-only label and visible #", () => {
3837+
it("renders week number column header with aria-label and visible #", () => {
38393838
const { container } = render(<DatePicker showWeekNumbers />);
38403839
const input = safeQuerySelector(container, "input");
38413840
fireEvent.focus(input);
@@ -3846,15 +3845,15 @@ describe("DatePicker", () => {
38463845
expect(headers.length).toBe(8);
38473846

38483847
const weekNumberHeader = headers[0] as Element;
3849-
const srOnly = weekNumberHeader.querySelector(
3850-
".react-datepicker__sr-only",
3851-
);
3852-
expect(srOnly).toBeTruthy();
3853-
expect(srOnly?.textContent?.trim()?.toLowerCase()).toEqual("week number");
3848+
expect(weekNumberHeader).toBeTruthy();
3849+
3850+
// Should have aria-label = "Week number"
3851+
const ariaLabel = weekNumberHeader?.getAttribute('aria-label');
3852+
expect(ariaLabel?.trim()?.toLowerCase()).toEqual("week number");
38543853

38553854
// Should have a visible short name
38563855
const visible = weekNumberHeader.querySelector(
3857-
'span[aria-hidden="true"]',
3856+
'.react-datepicker__day-name > span[aria-hidden="true"]',
38583857
);
38593858
expect(visible).toBeTruthy();
38603859
expect(visible?.textContent?.trim()?.toLowerCase()).toEqual("#");

0 commit comments

Comments
 (0)