@awsui/components-react
Version:
AWS UI is a collection of [React](https://reactjs.org/) components that help create intuitive, responsive, and accessible user experiences for web applications. It is developed by Amazon Web Services (AWS). This work is available under the terms of the [A
22 lines (21 loc) • 1.32 kB
JavaScript
import { useRef, useMemo } from 'react';
import defaultOptionDescription from '../../internal/components/option/option-announcer';
export var useAnnouncement = function (_a) {
var announceSelected = _a.announceSelected, highlightedOption = _a.highlightedOption, parentMap = _a.parentMap, selectedAriaLabel = _a.selectedAriaLabel, renderHighlightedAriaLive = _a.renderHighlightedAriaLive;
var prevAnnouncedGroup = useRef(undefined);
var prevAnnouncement = useRef('');
return useMemo(function () {
var message = '';
if (highlightedOption) {
var group = parentMap.get(highlightedOption);
var groupToAnnounce = group === prevAnnouncedGroup.current ? undefined : group;
prevAnnouncedGroup.current = group;
message = (renderHighlightedAriaLive || defaultOptionDescription)(highlightedOption.option, groupToAnnounce === null || groupToAnnounce === void 0 ? void 0 : groupToAnnounce.option);
if (announceSelected && !renderHighlightedAriaLive) {
message = (selectedAriaLabel ? selectedAriaLabel + ' ' : '') + message;
}
}
prevAnnouncement.current = message;
return message;
}, [announceSelected, highlightedOption, parentMap, selectedAriaLabel, renderHighlightedAriaLive]);
};