@awsui/components-react
Version:
On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en
35 lines • 2.08 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import React from 'react';
import { useAnnouncement } from '../select/utils/use-announcement';
import PlainList from './plain-list';
import VirtualList from './virtual-list';
const createMouseEventHandler = (handler) => (itemIndex) => {
// prevent mouse events to avoid losing focus from the input
if (itemIndex > -1) {
handler(itemIndex);
}
};
export default function AutosuggestOptionsList({ statusType, autosuggestItemsState, autosuggestItemsHandlers, highlightedOptionId, highlightText, listId, controlId, handleLoadMore, hasDropdownStatus, virtualScroll, selectedAriaLabel, renderHighlightedAriaLive, listBottom, ariaDescribedby, }) {
var _a;
const handleMouseUp = createMouseEventHandler(autosuggestItemsHandlers.selectVisibleOptionWithMouse);
const handleMouseMove = createMouseEventHandler(autosuggestItemsHandlers.highlightVisibleOptionWithMouse);
const ListComponent = virtualScroll ? VirtualList : PlainList;
const announcement = useAnnouncement({
highlightText,
announceSelected: ((_a = autosuggestItemsState.highlightedOption) === null || _a === void 0 ? void 0 : _a.value) === highlightText,
highlightedOption: autosuggestItemsState.highlightedOption,
getParent: option => autosuggestItemsState.getItemGroup(option),
selectedAriaLabel,
renderHighlightedAriaLive,
});
return (React.createElement(ListComponent, { listBottom: listBottom, handleLoadMore: handleLoadMore, autosuggestItemsState: autosuggestItemsState, highlightText: highlightText, highlightedA11yProps: highlightedOptionId ? { id: highlightedOptionId } : {}, hasDropdownStatus: hasDropdownStatus, menuProps: {
id: listId,
ariaLabelledby: controlId,
onMouseUp: handleMouseUp,
onMouseMove: handleMouseMove,
ariaDescribedby,
statusType,
}, screenReaderContent: announcement }));
}
//# sourceMappingURL=options-list.js.map