Skip to content

Commit 67f4214

Browse files
committed
final code changes
1 parent e9373ab commit 67f4214

File tree

8 files changed

+51
-26
lines changed

8 files changed

+51
-26
lines changed

.yarnrc.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@ compressionLevel: mixed
22

33
enableGlobalCache: false
44

5-
httpProxy: "http://proxy.jpmchase.net:9443"
6-
7-
httpsProxy: "http://proxy.jpmchase.net:9443"
8-
95
nodeLinker: node-modules
106

117
yarnPath: .yarn/releases/yarn-4.10.3.cjs

packages/core/src/aria-announcer/AriaAnnouncerProvider.tsx

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
AriaAnnouncerContext,
1313
} from "./AriaAnnouncerContext";
1414

15-
export const ANNOUNCEMENT_TIME_IN_DOM = 3000; // time between DOM updates
15+
export const ANNOUNCEMENT_TIME_IN_DOM = 300; // time between DOM updates
1616

1717
export interface AriaAnnouncerProviderProps
1818
extends ComponentPropsWithRef<"div"> {}
@@ -51,21 +51,21 @@ export const AriaAnnouncerProvider = forwardRef<
5151
return previous.concat({ id, message });
5252
});
5353

54-
setTimeout(() => {
55-
setPoliteAnnouncements((previous) =>
56-
previous.filter((announcement) => announcement.id !== id),
57-
);
58-
}, ANNOUNCEMENT_TIME_IN_DOM);
54+
setTimeout(() => {
55+
setPoliteAnnouncements((previous) =>
56+
previous.filter((announcement) => announcement.id !== id),
57+
);
58+
}, ANNOUNCEMENT_TIME_IN_DOM);
5959
} else {
6060
setAssertiveAnnouncements((previous) => {
6161
return previous.concat({ id, message });
6262
});
6363

64-
setTimeout(() => {
65-
setAssertiveAnnouncements((previous) =>
66-
previous.filter((announcement) => announcement.id !== id),
67-
);
68-
}, ANNOUNCEMENT_TIME_IN_DOM);
64+
setTimeout(() => {
65+
setAssertiveAnnouncements((previous) =>
66+
previous.filter((announcement) => announcement.id !== id),
67+
);
68+
}, ANNOUNCEMENT_TIME_IN_DOM);
6969
}
7070
},
7171
[],
@@ -77,17 +77,15 @@ export const AriaAnnouncerProvider = forwardRef<
7777
legacyDelayOrOptions: number | AnnounceFnOptions | undefined = {},
7878
) => {
7979
const delay =
80-
typeof legacyDelayOrOptions === "number" ? legacyDelayOrOptions : 15000;
80+
typeof legacyDelayOrOptions === "number" ? legacyDelayOrOptions : null;
8181

8282
const assertiveness =
8383
typeof legacyDelayOrOptions === "object"
8484
? legacyDelayOrOptions.ariaLive
8585
: undefined;
8686

8787
if (delay) {
88-
console.log('make announcement before delay', announcement, assertiveness, delay);
8988
setTimeout(() => {
90-
console.log('make announcement after delay', announcement, assertiveness);
9189
makeAnnouncement(announcement, assertiveness);
9290
}, delay);
9391
} else {
@@ -127,12 +125,12 @@ export const AriaAnnouncerProvider = forwardRef<
127125
>
128126
<AnnouncementRegion aria-live="polite">
129127
{politeAnnouncements.map((announcement) => (
130-
<div key={announcement.id}>{announcement.message}</div>
128+
<div key={`polite-${announcement.id}`}>{announcement.message}</div>
131129
))}
132130
</AnnouncementRegion>
133131
<AnnouncementRegion aria-live="assertive">
134132
{assertiveAnnouncements.map((announcement) => (
135-
<div key={announcement.id}>{announcement.message}</div>
133+
<div key={`assertive-${announcement.id}`}>{announcement.message}</div>
136134
))}
137135
</AnnouncementRegion>
138136
</div>

packages/lab/src/calendar/useCalendar.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,6 @@ export function useCalendar<TDate extends DateFrameworkType>(
884884
exceededRangeLimit !== 0)
885885
) {
886886
if (exceededRangeLimit !== 0) {
887-
console.log("set error", exceededRangeLimit, focusedDate);
888887
announce(
889888
exceededRangeLimit < 0
890889
? "minFocusableDateExceeded"

packages/lab/src/calendar/useCalendarDay.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ export function useCalendarDay<TDate extends DateFrameworkType>(
120120
const outOfRange = !dateAdapter.isSame(date, month, "month");
121121
const unselectable =
122122
Boolean(unselectableReason) ||
123-
isOutsideAllowedMonths(date) ||
124-
isOutsideAllowedDates(date);
123+
!!isOutsideAllowedMonths(date) ||
124+
!!isOutsideAllowedDates(date);
125125
const highlighted = Boolean(highlightedReason);
126126
const hidden = hideOutOfRangeDates ? outOfRange : false;
127127

packages/lab/src/calendar/useCalendarSelection.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ export function useCalendarSelectionDay<TDate extends DateFrameworkType>({
531531
}) {
532532
const { dateAdapter } = useLocalization<TDate>();
533533
const {
534-
state: { selectionVariant },
534+
state: { selectionVariant, minDate, maxDate },
535535
helpers: {
536536
setSelectedDate,
537537
isSameDay,
@@ -595,6 +595,12 @@ export function useCalendarSelectionDay<TDate extends DateFrameworkType>({
595595
ariaLabel = `Start new range: ${formattedDate}`;
596596
} else if (hoveredEnd) {
597597
ariaLabel = `Complete new range: ${formattedDate}`;
598+
} else {
599+
if (dateAdapter.isSame(minDate, date, "day")) {
600+
ariaLabel = `${formattedDate}, minimum date`;
601+
} else if (dateAdapter.isSame(maxDate, date, "day")) {
602+
ariaLabel = `${formattedDate}, maximum date`;
603+
}
598604
}
599605

600606
return {

packages/lab/src/calendar/useDateSelectionAnnouncer.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useRef, useEffect } from "react";
12
import type {DateFrameworkType, SaltDateAdapter} from "@salt-ds/date-adapters";
23
import { useAriaAnnouncer } from "@salt-ds/core";
34
import {
@@ -11,12 +12,17 @@ export type CreateAnnouncement<TDate extends DateFrameworkType> = (
1112
dateAdapter: SaltDateAdapter<TDate>,
1213
) => string | undefined;
1314

15+
const DEBOUNCE_MSECS = 2000;
16+
1417
export function useDateSelectionAnnouncer<TDate extends DateFrameworkType>(
1518
createAnnouncement: CreateAnnouncement<TDate> | null | undefined,
1619
dateAdapter: SaltDateAdapter<TDate>,
1720
) {
1821
const { announce: saltAnnouncer } = useAriaAnnouncer();
1922

23+
const latestAnnouncementRef = useRef<string | null>(null);
24+
const timerRef = useRef<NodeJS.Timeout | null>(null);
25+
2026
/**
2127
* Call this function with the announcement type and the state needed for that announcement.
2228
* Example:
@@ -31,12 +37,30 @@ export function useDateSelectionAnnouncer<TDate extends DateFrameworkType>(
3137
return;
3238
}
3339
const announcement = createAnnouncement(announcementType, state ?? {}, dateAdapter);
34-
console.log('....', announcement);
3540

3641
if (announcement) {
37-
saltAnnouncer(announcement, { delay: 3000});
42+
latestAnnouncementRef.current = announcement;
43+
44+
if (timerRef.current) {
45+
clearTimeout(timerRef.current);
46+
}
47+
48+
timerRef.current = setTimeout(() => {
49+
if (latestAnnouncementRef.current) {
50+
saltAnnouncer(latestAnnouncementRef.current);
51+
latestAnnouncementRef.current = null;
52+
}
53+
}, DEBOUNCE_MSECS);
54+
}
55+
};
56+
57+
useEffect(() => {
58+
return () => {
59+
if (timerRef.current) {
60+
clearTimeout(timerRef.current);
3861
}
3962
};
63+
}, []);
4064

4165
return { announce };
4266
}

packages/lab/src/date-picker/DatePickerRangeInput.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,7 @@ export const DatePickerRangeInput = forwardRef(function DatePickerRangeInput<
291291
sentiment="neutral"
292292
onClick={handleCalendarButton}
293293
disabled={disabled}
294+
aria-haspopup="dialog"
294295
aria-label="Open Calendar"
295296
aria-expanded={open}
296297
>

packages/lab/src/date-picker/DatePickerSingleInput.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ export const DatePickerSingleInput = forwardRef<
206206
sentiment="neutral"
207207
onClick={handleCalendarButton}
208208
disabled={disabled}
209+
aria-haspopup="dialog"
209210
aria-label="Open Calendar"
210211
aria-expanded={open}
211212
>

0 commit comments

Comments
 (0)