@cloudscape-design/components 3.0.40 → 3.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/app-layout/navigation-panel.d.ts.map +1 -1
  2. package/app-layout/navigation-panel.js +1 -3
  3. package/app-layout/navigation-panel.js.map +1 -1
  4. package/app-layout/styles.css.js +38 -37
  5. package/app-layout/styles.scoped.css +54 -50
  6. package/app-layout/styles.selectors.js +38 -37
  7. package/autosuggest/autosuggest-option.js +1 -1
  8. package/autosuggest/autosuggest-option.js.map +1 -1
  9. package/autosuggest/input-controller.d.ts +12 -0
  10. package/autosuggest/input-controller.d.ts.map +1 -0
  11. package/autosuggest/{controller.js → input-controller.js} +2 -19
  12. package/autosuggest/input-controller.js.map +1 -0
  13. package/autosuggest/internal.d.ts.map +1 -1
  14. package/autosuggest/internal.js +25 -37
  15. package/autosuggest/internal.js.map +1 -1
  16. package/autosuggest/load-more-controller.d.ts +16 -0
  17. package/autosuggest/load-more-controller.d.ts.map +1 -0
  18. package/autosuggest/load-more-controller.js +27 -0
  19. package/autosuggest/load-more-controller.js.map +1 -0
  20. package/autosuggest/options-controller.d.ts +2 -0
  21. package/autosuggest/options-controller.d.ts.map +1 -1
  22. package/autosuggest/options-controller.js +13 -2
  23. package/autosuggest/options-controller.js.map +1 -1
  24. package/autosuggest/options-list.d.ts +2 -3
  25. package/autosuggest/options-list.d.ts.map +1 -1
  26. package/autosuggest/options-list.js +3 -12
  27. package/autosuggest/options-list.js.map +1 -1
  28. package/header/interfaces.d.ts +1 -2
  29. package/header/interfaces.d.ts.map +1 -1
  30. package/header/interfaces.js.map +1 -1
  31. package/internal/components/selectable-item/index.d.ts +8 -4
  32. package/internal/components/selectable-item/index.d.ts.map +1 -1
  33. package/internal/components/selectable-item/index.js +2 -2
  34. package/internal/components/selectable-item/index.js.map +1 -1
  35. package/internal/environment.js +1 -1
  36. package/package.json +1 -1
  37. package/property-filter/property-filter-autosuggest.d.ts.map +1 -1
  38. package/property-filter/property-filter-autosuggest.js +26 -38
  39. package/property-filter/property-filter-autosuggest.js.map +1 -1
  40. package/select/parts/item.js +1 -1
  41. package/select/parts/item.js.map +1 -1
  42. package/select/parts/multiselect-item.js +1 -1
  43. package/select/parts/multiselect-item.js.map +1 -1
  44. package/autosuggest/controller.d.ts +0 -15
  45. package/autosuggest/controller.d.ts.map +0 -1
  46. package/autosuggest/controller.js.map +0 -1
@@ -2,8 +2,8 @@ import { __assign, __rest } from "tslib";
2
2
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import clsx from 'clsx';
5
- import React, { useCallback, useRef } from 'react';
6
- import { useKeyboardHandler } from './controller';
5
+ import React, { useRef } from 'react';
6
+ import { useInputKeydownHandler } from './input-controller';
7
7
  import { useAutosuggestItems } from './options-controller';
8
8
  import Dropdown from '../internal/components/dropdown';
9
9
  import { useDropdownStatus } from '../internal/components/dropdown-status';
@@ -19,51 +19,42 @@ import { checkOptionValueField } from '../select/utils/check-option-value-field'
19
19
  import checkControlled from '../internal/hooks/check-controlled';
20
20
  import AutosuggestOptionsList from './options-list';
21
21
  import { useAutosuggestDropdown } from './dropdown-controller';
22
- var useLoadMoreItems = function (onLoadItems) {
23
- var lastFilteringText = useRef(null);
24
- return useCallback(function (firstPage, samePage, filteringText) {
25
- if (samePage || !firstPage || filteringText === undefined || lastFilteringText.current !== filteringText) {
26
- if (filteringText !== undefined) {
27
- lastFilteringText.current = filteringText;
28
- }
29
- if (lastFilteringText.current !== null && onLoadItems) {
30
- fireNonCancelableEvent(onLoadItems, { filteringText: lastFilteringText.current, firstPage: firstPage, samePage: samePage });
31
- }
32
- }
33
- }, [onLoadItems]);
34
- };
22
+ import { useAutosuggestLoadMore } from './load-more-controller';
35
23
  var InternalAutosuggest = React.forwardRef(function (props, ref) {
36
24
  var _a;
37
25
  var value = props.value, onChange = props.onChange, onBlur = props.onBlur, onFocus = props.onFocus, onKeyUp = props.onKeyUp, onLoadItems = props.onLoadItems, options = props.options, _b = props.filteringType, filteringType = _b === void 0 ? 'auto' : _b, _c = props.statusType, statusType = _c === void 0 ? 'finished' : _c, placeholder = props.placeholder, name = props.name, disabled = props.disabled, _d = props.disableBrowserAutocorrect, disableBrowserAutocorrect = _d === void 0 ? false : _d, autoFocus = props.autoFocus, readOnly = props.readOnly, ariaLabel = props.ariaLabel, ariaRequired = props.ariaRequired, enteredTextLabel = props.enteredTextLabel, onKeyDown = props.onKeyDown, virtualScroll = props.virtualScroll, expandToViewport = props.expandToViewport, onSelect = props.onSelect, selectedAriaLabel = props.selectedAriaLabel, renderHighlightedAriaLive = props.renderHighlightedAriaLive, __internalRootRef = props.__internalRootRef, rest = __rest(props, ["value", "onChange", "onBlur", "onFocus", "onKeyUp", "onLoadItems", "options", "filteringType", "statusType", "placeholder", "name", "disabled", "disableBrowserAutocorrect", "autoFocus", "readOnly", "ariaLabel", "ariaRequired", "enteredTextLabel", "onKeyDown", "virtualScroll", "expandToViewport", "onSelect", "selectedAriaLabel", "renderHighlightedAriaLive", "__internalRootRef"]);
38
26
  checkControlled('Autosuggest', 'value', value, 'onChange', onChange);
39
27
  checkOptionValueField('Autosuggest', 'options', options);
40
- var selectOption = function (option) {
41
- var value = option.value || '';
42
- fireNonCancelableEvent(onChange, { value: value });
43
- autosuggestDropdownHandlers.closeDropdown();
44
- fireNonCancelableEvent(onSelect, { value: value });
45
- };
46
28
  var _e = useAutosuggestItems({
47
29
  options: options || [],
48
30
  filterValue: value,
49
31
  filterText: value,
50
32
  filteringType: filteringType,
51
33
  hideEnteredTextLabel: false,
52
- onSelectItem: selectOption
34
+ onSelectItem: function (option) {
35
+ var value = option.value || '';
36
+ fireNonCancelableEvent(onChange, { value: value });
37
+ autosuggestDropdownHandlers.closeDropdown();
38
+ fireNonCancelableEvent(onSelect, { value: value });
39
+ }
53
40
  }), autosuggestItemsState = _e[0], autosuggestItemsHandlers = _e[1];
54
41
  var _f = useAutosuggestDropdown({
55
42
  readOnly: readOnly,
56
43
  onClose: function () { return autosuggestItemsHandlers.resetHighlightWithKeyboard(); },
57
44
  onBlur: function () { return fireNonCancelableEvent(onBlur); }
58
45
  }), open = _f[0].open, autosuggestDropdownHandlers = _f[1], autosuggestDropdownRefs = _f[2];
59
- var fireLoadMore = useLoadMoreItems(onLoadItems);
60
- var handleInputChange = function (e) {
46
+ var autosuggestLoadMoreHandlers = useAutosuggestLoadMore({
47
+ options: options,
48
+ statusType: statusType,
49
+ onLoadItems: function (detail) { return fireNonCancelableEvent(onLoadItems, detail); }
50
+ });
51
+ var handleInputChange = function (value) {
61
52
  autosuggestDropdownHandlers.openDropdown();
62
53
  autosuggestItemsHandlers.setShowAll(false);
63
54
  autosuggestItemsHandlers.resetHighlightWithKeyboard();
64
- onChange && onChange(e);
55
+ fireNonCancelableEvent(onChange, { value: value });
65
56
  };
66
- var handleKeyDown = useKeyboardHandler({
57
+ var handleKeyDown = useInputKeydownHandler({
67
58
  open: open,
68
59
  onPressArrowDown: function () {
69
60
  autosuggestItemsHandlers.moveHighlightWithKeyboard(1);
@@ -89,14 +80,11 @@ var InternalAutosuggest = React.forwardRef(function (props, ref) {
89
80
  fireCancelableEvent(onKeyDown, e.detail);
90
81
  }
91
82
  });
92
- var handleLoadMore = useCallback(function () {
93
- options && options.length && statusType === 'pending' && fireLoadMore(false, false);
94
- }, [fireLoadMore, options, statusType]);
95
- var handleRecoveryClick = useCallback(function () {
83
+ var handleRecoveryClick = function () {
96
84
  var _a;
97
- fireLoadMore(false, true);
85
+ autosuggestLoadMoreHandlers.fireLoadMoreOnRecoveryClick();
98
86
  (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
99
- }, [fireLoadMore]);
87
+ };
100
88
  var formFieldContext = useFormFieldContext(rest);
101
89
  var baseProps = getBaseProps(rest);
102
90
  var inputRef = useRef(null);
@@ -122,18 +110,18 @@ var InternalAutosuggest = React.forwardRef(function (props, ref) {
122
110
  'aria-label': ariaLabel,
123
111
  'aria-activedescendant': highlightedOptionId
124
112
  };
125
- var handleInputFocus = function (e) {
113
+ var handleInputFocus = function () {
126
114
  autosuggestItemsHandlers.setShowAll(true);
127
115
  autosuggestDropdownHandlers.openDropdown();
128
- fireLoadMore(true, false, '');
129
- onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
116
+ autosuggestLoadMoreHandlers.fireLoadMoreOnInputFocus();
117
+ fireNonCancelableEvent(onFocus, null);
130
118
  };
131
119
  var isEmpty = !value && !autosuggestItemsState.items.length;
132
120
  var showRecoveryLink = open && statusType === 'error' && props.recoveryText;
133
121
  var dropdownStatus = useDropdownStatus(__assign(__assign({}, props), { isEmpty: isEmpty, onRecoveryClick: handleRecoveryClick }));
134
122
  return (React.createElement("div", __assign({}, baseProps, { className: clsx(styles.root, baseProps.className), ref: __internalRootRef, onBlur: autosuggestDropdownHandlers.handleBlur }),
135
- React.createElement(Dropdown, { trigger: React.createElement(InternalInput, __assign({ type: "search", value: value, onChange: handleInputChange, __onDelayedInput: function (event) { return fireLoadMore(true, false, event.detail.value); }, onFocus: handleInputFocus, onKeyDown: handleKeyDown, onKeyUp: onKeyUp, disabled: disabled, disableBrowserAutocorrect: disableBrowserAutocorrect, readOnly: readOnly, ariaRequired: ariaRequired, ref: inputRef, autoComplete: false, __nativeAttributes: nativeAttributes }, formFieldContext, { controlId: controlId })), onMouseDown: autosuggestDropdownHandlers.handleMouseDown, open: open, dropdownId: dropdownId, footer: dropdownStatus.isSticky ? (React.createElement("div", { ref: autosuggestDropdownRefs.footerRef, className: styles['dropdown-footer'] },
136
- React.createElement(DropdownFooter, { content: dropdownStatus.content, hasItems: autosuggestItemsState.items.length >= 1 }))) : null, expandToViewport: expandToViewport, hasContent: autosuggestItemsState.items.length >= 1 || dropdownStatus.content !== null, trapFocus: !!showRecoveryLink }, open && (React.createElement(AutosuggestOptionsList, { autosuggestItemsState: autosuggestItemsState, autosuggestItemsHandlers: autosuggestItemsHandlers, selectOption: selectOption, highlightedOptionId: highlightedOptionId, highlightText: value, listId: listId, controlId: controlId, enteredTextLabel: enteredTextLabel, handleLoadMore: handleLoadMore, hasDropdownStatus: dropdownStatus.content !== null, virtualScroll: virtualScroll, selectedAriaLabel: selectedAriaLabel, renderHighlightedAriaLive: renderHighlightedAriaLive, listBottom: !dropdownStatus.isSticky ? React.createElement(DropdownFooter, { content: dropdownStatus.content }) : null })))));
123
+ React.createElement(Dropdown, { trigger: React.createElement(InternalInput, __assign({ type: "search", value: value, onChange: function (event) { return handleInputChange(event.detail.value); }, __onDelayedInput: function (event) { return autosuggestLoadMoreHandlers.fireLoadMoreOnInputChange(event.detail.value); }, onFocus: handleInputFocus, onKeyDown: handleKeyDown, onKeyUp: onKeyUp, disabled: disabled, disableBrowserAutocorrect: disableBrowserAutocorrect, readOnly: readOnly, ariaRequired: ariaRequired, ref: inputRef, autoComplete: false, __nativeAttributes: nativeAttributes }, formFieldContext, { controlId: controlId })), onMouseDown: autosuggestDropdownHandlers.handleMouseDown, open: open, dropdownId: dropdownId, footer: dropdownStatus.isSticky ? (React.createElement("div", { ref: autosuggestDropdownRefs.footerRef, className: styles['dropdown-footer'] },
124
+ React.createElement(DropdownFooter, { content: dropdownStatus.content, hasItems: autosuggestItemsState.items.length >= 1 }))) : null, expandToViewport: expandToViewport, hasContent: autosuggestItemsState.items.length >= 1 || dropdownStatus.content !== null, trapFocus: !!showRecoveryLink }, open && (React.createElement(AutosuggestOptionsList, { autosuggestItemsState: autosuggestItemsState, autosuggestItemsHandlers: autosuggestItemsHandlers, highlightedOptionId: highlightedOptionId, highlightText: value, listId: listId, controlId: controlId, enteredTextLabel: enteredTextLabel, handleLoadMore: autosuggestLoadMoreHandlers.fireLoadMoreOnScroll, hasDropdownStatus: dropdownStatus.content !== null, virtualScroll: virtualScroll, selectedAriaLabel: selectedAriaLabel, renderHighlightedAriaLive: renderHighlightedAriaLive, listBottom: !dropdownStatus.isSticky ? React.createElement(DropdownFooter, { content: dropdownStatus.content }) : null })))));
137
125
  });
138
126
  export default InternalAutosuggest;
139
127
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/autosuggest/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { Ref, useCallback, useRef } from 'react';\n\nimport { useKeyboardHandler } from './controller';\nimport { useAutosuggestItems } from './options-controller';\nimport { AutosuggestItem, AutosuggestProps } from './interfaces';\n\nimport Dropdown from '../internal/components/dropdown';\nimport { useDropdownStatus } from '../internal/components/dropdown-status';\nimport DropdownFooter from '../internal/components/dropdown-footer';\n\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport { getBaseProps } from '../internal/base-component';\nimport { generateUniqueId, useUniqueId } from '../internal/hooks/use-unique-id';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { fireCancelableEvent, fireNonCancelableEvent } from '../internal/events';\nimport InternalInput from '../input/internal';\nimport { InputProps } from '../input/interfaces';\nimport styles from './styles.css.js';\nimport { checkOptionValueField } from '../select/utils/check-option-value-field';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport AutosuggestOptionsList from './options-list';\nimport { useAutosuggestDropdown } from './dropdown-controller';\n\nexport interface InternalAutosuggestProps extends AutosuggestProps, InternalBaseComponentProps {}\n\nconst useLoadMoreItems = (onLoadItems: AutosuggestProps['onLoadItems']) => {\n const lastFilteringText = useRef<string | null>(null);\n return useCallback(\n (firstPage: boolean, samePage: boolean, filteringText?: string) => {\n if (samePage || !firstPage || filteringText === undefined || lastFilteringText.current !== filteringText) {\n if (filteringText !== undefined) {\n lastFilteringText.current = filteringText;\n }\n if (lastFilteringText.current !== null && onLoadItems) {\n fireNonCancelableEvent(onLoadItems, { filteringText: lastFilteringText.current, firstPage, samePage });\n }\n }\n },\n [onLoadItems]\n );\n};\n\nconst InternalAutosuggest = React.forwardRef((props: InternalAutosuggestProps, ref: Ref<InputProps.Ref>) => {\n const {\n value,\n onChange,\n onBlur,\n onFocus,\n onKeyUp,\n onLoadItems,\n options,\n filteringType = 'auto',\n statusType = 'finished',\n placeholder,\n name,\n disabled,\n disableBrowserAutocorrect = false,\n autoFocus,\n readOnly,\n ariaLabel,\n ariaRequired,\n enteredTextLabel,\n onKeyDown,\n virtualScroll,\n expandToViewport,\n onSelect,\n selectedAriaLabel,\n renderHighlightedAriaLive,\n __internalRootRef,\n ...rest\n } = props;\n\n checkControlled('Autosuggest', 'value', value, 'onChange', onChange);\n checkOptionValueField('Autosuggest', 'options', options);\n\n const selectOption = (option: AutosuggestItem) => {\n const value = option.value || '';\n fireNonCancelableEvent(onChange, { value });\n autosuggestDropdownHandlers.closeDropdown();\n fireNonCancelableEvent(onSelect, { value });\n };\n\n const [autosuggestItemsState, autosuggestItemsHandlers] = useAutosuggestItems({\n options: options || [],\n filterValue: value,\n filterText: value,\n filteringType,\n hideEnteredTextLabel: false,\n onSelectItem: selectOption,\n });\n const [{ open }, autosuggestDropdownHandlers, autosuggestDropdownRefs] = useAutosuggestDropdown({\n readOnly,\n onClose: () => autosuggestItemsHandlers.resetHighlightWithKeyboard(),\n onBlur: () => fireNonCancelableEvent(onBlur),\n });\n\n const fireLoadMore = useLoadMoreItems(onLoadItems);\n\n const handleInputChange: InputProps['onChange'] = e => {\n autosuggestDropdownHandlers.openDropdown();\n autosuggestItemsHandlers.setShowAll(false);\n autosuggestItemsHandlers.resetHighlightWithKeyboard();\n onChange && onChange(e);\n };\n\n const handleKeyDown = useKeyboardHandler({\n open,\n onPressArrowDown() {\n autosuggestItemsHandlers.moveHighlightWithKeyboard(1);\n autosuggestDropdownHandlers.openDropdown();\n },\n onPressArrowUp() {\n autosuggestItemsHandlers.moveHighlightWithKeyboard(-1);\n autosuggestDropdownHandlers.openDropdown();\n },\n onPressEnter() {\n autosuggestItemsHandlers.selectHighlightedOptionWithKeyboard();\n autosuggestDropdownHandlers.closeDropdown();\n },\n onPressEsc() {\n if (open) {\n autosuggestDropdownHandlers.closeDropdown();\n } else if (value) {\n fireNonCancelableEvent(onChange, { value: '' });\n }\n },\n onKeyDown(e) {\n fireCancelableEvent(onKeyDown, e.detail);\n },\n });\n const handleLoadMore = useCallback(() => {\n options && options.length && statusType === 'pending' && fireLoadMore(false, false);\n }, [fireLoadMore, options, statusType]);\n const handleRecoveryClick = useCallback(() => {\n fireLoadMore(false, true);\n inputRef.current?.focus();\n }, [fireLoadMore]);\n\n const formFieldContext = useFormFieldContext(rest);\n const baseProps = getBaseProps(rest);\n const inputRef = useRef<HTMLInputElement>(null);\n useForwardFocus(ref, inputRef);\n\n const selfControlId = useUniqueId('input');\n const controlId = formFieldContext.controlId ?? selfControlId;\n const dropdownId = useUniqueId('dropdown');\n const listId = useUniqueId('list');\n\n // From an a11y point of view we only count the dropdown as 'expanded' if there are items that a user can dropdown into\n const expanded = open && autosuggestItemsState.items.length > 1;\n const highlightedOptionId = autosuggestItemsState.highlightedOption ? generateUniqueId() : undefined;\n const nativeAttributes = {\n name,\n placeholder,\n autoFocus,\n onClick: autosuggestDropdownHandlers.openDropdown,\n role: 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-expanded': expanded,\n 'aria-controls': listId,\n // 'aria-owns' needed for safari+vo to announce activedescendant content\n 'aria-owns': listId,\n 'aria-label': ariaLabel,\n 'aria-activedescendant': highlightedOptionId,\n };\n\n const handleInputFocus: InputProps['onFocus'] = e => {\n autosuggestItemsHandlers.setShowAll(true);\n autosuggestDropdownHandlers.openDropdown();\n fireLoadMore(true, false, '');\n onFocus?.(e);\n };\n\n const isEmpty = !value && !autosuggestItemsState.items.length;\n const showRecoveryLink = open && statusType === 'error' && props.recoveryText;\n const dropdownStatus = useDropdownStatus({ ...props, isEmpty, onRecoveryClick: handleRecoveryClick });\n\n return (\n <div\n {...baseProps}\n className={clsx(styles.root, baseProps.className)}\n ref={__internalRootRef}\n onBlur={autosuggestDropdownHandlers.handleBlur}\n >\n <Dropdown\n trigger={\n <InternalInput\n type=\"search\"\n value={value}\n onChange={handleInputChange}\n __onDelayedInput={event => fireLoadMore(true, false, event.detail.value)}\n onFocus={handleInputFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={onKeyUp}\n disabled={disabled}\n disableBrowserAutocorrect={disableBrowserAutocorrect}\n readOnly={readOnly}\n ariaRequired={ariaRequired}\n ref={inputRef}\n autoComplete={false}\n __nativeAttributes={nativeAttributes}\n {...formFieldContext}\n controlId={controlId}\n />\n }\n onMouseDown={autosuggestDropdownHandlers.handleMouseDown}\n open={open}\n dropdownId={dropdownId}\n footer={\n dropdownStatus.isSticky ? (\n <div ref={autosuggestDropdownRefs.footerRef} className={styles['dropdown-footer']}>\n <DropdownFooter content={dropdownStatus.content} hasItems={autosuggestItemsState.items.length >= 1} />\n </div>\n ) : null\n }\n expandToViewport={expandToViewport}\n hasContent={autosuggestItemsState.items.length >= 1 || dropdownStatus.content !== null}\n trapFocus={!!showRecoveryLink}\n >\n {open && (\n <AutosuggestOptionsList\n autosuggestItemsState={autosuggestItemsState}\n autosuggestItemsHandlers={autosuggestItemsHandlers}\n selectOption={selectOption}\n highlightedOptionId={highlightedOptionId}\n highlightText={value}\n listId={listId}\n controlId={controlId}\n enteredTextLabel={enteredTextLabel}\n handleLoadMore={handleLoadMore}\n hasDropdownStatus={dropdownStatus.content !== null}\n virtualScroll={virtualScroll}\n selectedAriaLabel={selectedAriaLabel}\n renderHighlightedAriaLive={renderHighlightedAriaLive}\n listBottom={!dropdownStatus.isSticky ? <DropdownFooter content={dropdownStatus.content} /> : null}\n />\n )}\n </Dropdown>\n </div>\n );\n});\n\nexport default InternalAutosuggest;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/autosuggest/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { Ref, useRef } from 'react';\n\nimport { useInputKeydownHandler } from './input-controller';\nimport { useAutosuggestItems } from './options-controller';\nimport { AutosuggestItem, AutosuggestProps } from './interfaces';\n\nimport Dropdown from '../internal/components/dropdown';\nimport { useDropdownStatus } from '../internal/components/dropdown-status';\nimport DropdownFooter from '../internal/components/dropdown-footer';\n\nimport { useFormFieldContext } from '../internal/context/form-field-context';\nimport { getBaseProps } from '../internal/base-component';\nimport { generateUniqueId, useUniqueId } from '../internal/hooks/use-unique-id';\nimport useForwardFocus from '../internal/hooks/forward-focus';\nimport { fireCancelableEvent, fireNonCancelableEvent } from '../internal/events';\nimport InternalInput from '../input/internal';\nimport { InputProps } from '../input/interfaces';\nimport styles from './styles.css.js';\nimport { checkOptionValueField } from '../select/utils/check-option-value-field';\nimport checkControlled from '../internal/hooks/check-controlled';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport AutosuggestOptionsList from './options-list';\nimport { useAutosuggestDropdown } from './dropdown-controller';\nimport { useAutosuggestLoadMore } from './load-more-controller';\nimport { OptionsLoadItemsDetail } from '../internal/components/dropdown/interfaces';\n\nexport interface InternalAutosuggestProps extends AutosuggestProps, InternalBaseComponentProps {}\n\nconst InternalAutosuggest = React.forwardRef((props: InternalAutosuggestProps, ref: Ref<InputProps.Ref>) => {\n const {\n value,\n onChange,\n onBlur,\n onFocus,\n onKeyUp,\n onLoadItems,\n options,\n filteringType = 'auto',\n statusType = 'finished',\n placeholder,\n name,\n disabled,\n disableBrowserAutocorrect = false,\n autoFocus,\n readOnly,\n ariaLabel,\n ariaRequired,\n enteredTextLabel,\n onKeyDown,\n virtualScroll,\n expandToViewport,\n onSelect,\n selectedAriaLabel,\n renderHighlightedAriaLive,\n __internalRootRef,\n ...rest\n } = props;\n\n checkControlled('Autosuggest', 'value', value, 'onChange', onChange);\n checkOptionValueField('Autosuggest', 'options', options);\n\n const [autosuggestItemsState, autosuggestItemsHandlers] = useAutosuggestItems({\n options: options || [],\n filterValue: value,\n filterText: value,\n filteringType,\n hideEnteredTextLabel: false,\n onSelectItem: (option: AutosuggestItem) => {\n const value = option.value || '';\n fireNonCancelableEvent(onChange, { value });\n autosuggestDropdownHandlers.closeDropdown();\n fireNonCancelableEvent(onSelect, { value });\n },\n });\n const [{ open }, autosuggestDropdownHandlers, autosuggestDropdownRefs] = useAutosuggestDropdown({\n readOnly,\n onClose: () => autosuggestItemsHandlers.resetHighlightWithKeyboard(),\n onBlur: () => fireNonCancelableEvent(onBlur),\n });\n const autosuggestLoadMoreHandlers = useAutosuggestLoadMore({\n options,\n statusType,\n onLoadItems: (detail: OptionsLoadItemsDetail) => fireNonCancelableEvent(onLoadItems, detail),\n });\n\n const handleInputChange = (value: string) => {\n autosuggestDropdownHandlers.openDropdown();\n autosuggestItemsHandlers.setShowAll(false);\n autosuggestItemsHandlers.resetHighlightWithKeyboard();\n fireNonCancelableEvent(onChange, { value });\n };\n\n const handleKeyDown = useInputKeydownHandler({\n open,\n onPressArrowDown() {\n autosuggestItemsHandlers.moveHighlightWithKeyboard(1);\n autosuggestDropdownHandlers.openDropdown();\n },\n onPressArrowUp() {\n autosuggestItemsHandlers.moveHighlightWithKeyboard(-1);\n autosuggestDropdownHandlers.openDropdown();\n },\n onPressEnter() {\n autosuggestItemsHandlers.selectHighlightedOptionWithKeyboard();\n autosuggestDropdownHandlers.closeDropdown();\n },\n onPressEsc() {\n if (open) {\n autosuggestDropdownHandlers.closeDropdown();\n } else if (value) {\n fireNonCancelableEvent(onChange, { value: '' });\n }\n },\n onKeyDown(e) {\n fireCancelableEvent(onKeyDown, e.detail);\n },\n });\n\n const handleRecoveryClick = () => {\n autosuggestLoadMoreHandlers.fireLoadMoreOnRecoveryClick();\n inputRef.current?.focus();\n };\n\n const formFieldContext = useFormFieldContext(rest);\n const baseProps = getBaseProps(rest);\n const inputRef = useRef<HTMLInputElement>(null);\n useForwardFocus(ref, inputRef);\n\n const selfControlId = useUniqueId('input');\n const controlId = formFieldContext.controlId ?? selfControlId;\n const dropdownId = useUniqueId('dropdown');\n const listId = useUniqueId('list');\n\n // From an a11y point of view we only count the dropdown as 'expanded' if there are items that a user can dropdown into\n const expanded = open && autosuggestItemsState.items.length > 1;\n const highlightedOptionId = autosuggestItemsState.highlightedOption ? generateUniqueId() : undefined;\n const nativeAttributes = {\n name,\n placeholder,\n autoFocus,\n onClick: autosuggestDropdownHandlers.openDropdown,\n role: 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-expanded': expanded,\n 'aria-controls': listId,\n // 'aria-owns' needed for safari+vo to announce activedescendant content\n 'aria-owns': listId,\n 'aria-label': ariaLabel,\n 'aria-activedescendant': highlightedOptionId,\n };\n\n const handleInputFocus = () => {\n autosuggestItemsHandlers.setShowAll(true);\n autosuggestDropdownHandlers.openDropdown();\n autosuggestLoadMoreHandlers.fireLoadMoreOnInputFocus();\n fireNonCancelableEvent(onFocus, null);\n };\n\n const isEmpty = !value && !autosuggestItemsState.items.length;\n const showRecoveryLink = open && statusType === 'error' && props.recoveryText;\n const dropdownStatus = useDropdownStatus({ ...props, isEmpty, onRecoveryClick: handleRecoveryClick });\n\n return (\n <div\n {...baseProps}\n className={clsx(styles.root, baseProps.className)}\n ref={__internalRootRef}\n onBlur={autosuggestDropdownHandlers.handleBlur}\n >\n <Dropdown\n trigger={\n <InternalInput\n type=\"search\"\n value={value}\n onChange={event => handleInputChange(event.detail.value)}\n __onDelayedInput={event => autosuggestLoadMoreHandlers.fireLoadMoreOnInputChange(event.detail.value)}\n onFocus={handleInputFocus}\n onKeyDown={handleKeyDown}\n onKeyUp={onKeyUp}\n disabled={disabled}\n disableBrowserAutocorrect={disableBrowserAutocorrect}\n readOnly={readOnly}\n ariaRequired={ariaRequired}\n ref={inputRef}\n autoComplete={false}\n __nativeAttributes={nativeAttributes}\n {...formFieldContext}\n controlId={controlId}\n />\n }\n onMouseDown={autosuggestDropdownHandlers.handleMouseDown}\n open={open}\n dropdownId={dropdownId}\n footer={\n dropdownStatus.isSticky ? (\n <div ref={autosuggestDropdownRefs.footerRef} className={styles['dropdown-footer']}>\n <DropdownFooter content={dropdownStatus.content} hasItems={autosuggestItemsState.items.length >= 1} />\n </div>\n ) : null\n }\n expandToViewport={expandToViewport}\n hasContent={autosuggestItemsState.items.length >= 1 || dropdownStatus.content !== null}\n trapFocus={!!showRecoveryLink}\n >\n {open && (\n <AutosuggestOptionsList\n autosuggestItemsState={autosuggestItemsState}\n autosuggestItemsHandlers={autosuggestItemsHandlers}\n highlightedOptionId={highlightedOptionId}\n highlightText={value}\n listId={listId}\n controlId={controlId}\n enteredTextLabel={enteredTextLabel}\n handleLoadMore={autosuggestLoadMoreHandlers.fireLoadMoreOnScroll}\n hasDropdownStatus={dropdownStatus.content !== null}\n virtualScroll={virtualScroll}\n selectedAriaLabel={selectedAriaLabel}\n renderHighlightedAriaLive={renderHighlightedAriaLive}\n listBottom={!dropdownStatus.isSticky ? <DropdownFooter content={dropdownStatus.content} /> : null}\n />\n )}\n </Dropdown>\n </div>\n );\n});\n\nexport default InternalAutosuggest;\n"]}
@@ -0,0 +1,16 @@
1
+ import { AutosuggestProps } from './interfaces';
2
+ import { OptionsLoadItemsDetail } from '../internal/components/dropdown/interfaces';
3
+ import { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';
4
+ export interface UseAutosuggestLoadMoreProps {
5
+ options?: AutosuggestProps.Options;
6
+ statusType: DropdownStatusProps.StatusType;
7
+ onLoadItems: (detail: OptionsLoadItemsDetail) => void;
8
+ }
9
+ export interface AutosuggestLoadMoreHandlers {
10
+ fireLoadMoreOnScroll(): void;
11
+ fireLoadMoreOnRecoveryClick(): void;
12
+ fireLoadMoreOnInputFocus(): void;
13
+ fireLoadMoreOnInputChange(filteringText: string): void;
14
+ }
15
+ export declare const useAutosuggestLoadMore: ({ options, statusType, onLoadItems, }: UseAutosuggestLoadMoreProps) => AutosuggestLoadMoreHandlers;
16
+ //# sourceMappingURL=load-more-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-more-controller.d.ts","sourceRoot":"","sources":["../../../src/autosuggest/load-more-controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAExF,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACnC,UAAU,EAAE,mBAAmB,CAAC,UAAU,CAAC;IAC3C,WAAW,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,2BAA2B;IAC1C,oBAAoB,IAAI,IAAI,CAAC;IAC7B,2BAA2B,IAAI,IAAI,CAAC;IACpC,wBAAwB,IAAI,IAAI,CAAC;IACjC,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED,eAAO,MAAM,sBAAsB,0CAIhC,2BAA2B,KAAG,2BA+BhC,CAAC"}
@@ -0,0 +1,27 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { useRef } from 'react';
4
+ export var useAutosuggestLoadMore = function (_a) {
5
+ var _b = _a.options, options = _b === void 0 ? [] : _b, statusType = _a.statusType, onLoadItems = _a.onLoadItems;
6
+ var lastFilteringText = useRef(null);
7
+ var fireLoadMore = function (_a) {
8
+ var _b;
9
+ var firstPage = _a.firstPage, samePage = _a.samePage, filteringText = _a.filteringText;
10
+ if (filteringText === undefined || lastFilteringText.current !== filteringText) {
11
+ if (filteringText !== undefined) {
12
+ lastFilteringText.current = filteringText;
13
+ }
14
+ onLoadItems({ filteringText: (_b = lastFilteringText.current) !== null && _b !== void 0 ? _b : '', firstPage: firstPage, samePage: samePage });
15
+ }
16
+ };
17
+ var fireLoadMoreOnScroll = function () {
18
+ return options.length > 0 && statusType === 'pending' && fireLoadMore({ firstPage: false, samePage: false });
19
+ };
20
+ var fireLoadMoreOnRecoveryClick = function () { return fireLoadMore({ firstPage: false, samePage: true }); };
21
+ var fireLoadMoreOnInputFocus = function () { return fireLoadMore({ firstPage: true, samePage: false, filteringText: '' }); };
22
+ var fireLoadMoreOnInputChange = function (filteringText) {
23
+ return fireLoadMore({ firstPage: true, samePage: false, filteringText: filteringText });
24
+ };
25
+ return { fireLoadMoreOnScroll: fireLoadMoreOnScroll, fireLoadMoreOnRecoveryClick: fireLoadMoreOnRecoveryClick, fireLoadMoreOnInputFocus: fireLoadMoreOnInputFocus, fireLoadMoreOnInputChange: fireLoadMoreOnInputChange };
26
+ };
27
+ //# sourceMappingURL=load-more-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-more-controller.js","sourceRoot":"","sources":["../../../src/autosuggest/load-more-controller.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAkB/B,MAAM,CAAC,IAAM,sBAAsB,GAAG,UAAC,EAIT;QAH5B,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,UAAU,gBAAA,EACV,WAAW,iBAAA;IAEX,IAAM,iBAAiB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;IAEtD,IAAM,YAAY,GAAG,UAAC,EAQrB;;YAPC,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,aAAa,mBAAA;QAMb,IAAI,aAAa,KAAK,SAAS,IAAI,iBAAiB,CAAC,OAAO,KAAK,aAAa,EAAE;YAC9E,IAAI,aAAa,KAAK,SAAS,EAAE;gBAC/B,iBAAiB,CAAC,OAAO,GAAG,aAAa,CAAC;aAC3C;YACD,WAAW,CAAC,EAAE,aAAa,EAAE,MAAA,iBAAiB,CAAC,OAAO,mCAAI,EAAE,EAAE,SAAS,WAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;SACtF;IACH,CAAC,CAAC;IAEF,IAAM,oBAAoB,GAAG;QAC3B,OAAA,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,KAAK,SAAS,IAAI,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAArG,CAAqG,CAAC;IAExG,IAAM,2BAA2B,GAAG,cAAM,OAAA,YAAY,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAlD,CAAkD,CAAC;IAE7F,IAAM,wBAAwB,GAAG,cAAM,OAAA,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,EAArE,CAAqE,CAAC;IAE7G,IAAM,yBAAyB,GAAG,UAAC,aAAqB;QACtD,OAAA,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,eAAA,EAAE,CAAC;IAAjE,CAAiE,CAAC;IAEpE,OAAO,EAAE,oBAAoB,sBAAA,EAAE,2BAA2B,6BAAA,EAAE,wBAAwB,0BAAA,EAAE,yBAAyB,2BAAA,EAAE,CAAC;AACpH,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useRef } from 'react';\nimport { AutosuggestProps } from './interfaces';\nimport { OptionsLoadItemsDetail } from '../internal/components/dropdown/interfaces';\nimport { DropdownStatusProps } from '../internal/components/dropdown-status/interfaces';\n\nexport interface UseAutosuggestLoadMoreProps {\n options?: AutosuggestProps.Options;\n statusType: DropdownStatusProps.StatusType;\n onLoadItems: (detail: OptionsLoadItemsDetail) => void;\n}\n\nexport interface AutosuggestLoadMoreHandlers {\n fireLoadMoreOnScroll(): void;\n fireLoadMoreOnRecoveryClick(): void;\n fireLoadMoreOnInputFocus(): void;\n fireLoadMoreOnInputChange(filteringText: string): void;\n}\n\nexport const useAutosuggestLoadMore = ({\n options = [],\n statusType,\n onLoadItems,\n}: UseAutosuggestLoadMoreProps): AutosuggestLoadMoreHandlers => {\n const lastFilteringText = useRef<string | null>(null);\n\n const fireLoadMore = ({\n firstPage,\n samePage,\n filteringText,\n }: {\n firstPage: boolean;\n samePage: boolean;\n filteringText?: string;\n }) => {\n if (filteringText === undefined || lastFilteringText.current !== filteringText) {\n if (filteringText !== undefined) {\n lastFilteringText.current = filteringText;\n }\n onLoadItems({ filteringText: lastFilteringText.current ?? '', firstPage, samePage });\n }\n };\n\n const fireLoadMoreOnScroll = () =>\n options.length > 0 && statusType === 'pending' && fireLoadMore({ firstPage: false, samePage: false });\n\n const fireLoadMoreOnRecoveryClick = () => fireLoadMore({ firstPage: false, samePage: true });\n\n const fireLoadMoreOnInputFocus = () => fireLoadMore({ firstPage: true, samePage: false, filteringText: '' });\n\n const fireLoadMoreOnInputChange = (filteringText: string) =>\n fireLoadMore({ firstPage: true, samePage: false, filteringText });\n\n return { fireLoadMoreOnScroll, fireLoadMoreOnRecoveryClick, fireLoadMoreOnInputFocus, fireLoadMoreOnInputChange };\n};\n"]}
@@ -16,6 +16,8 @@ export interface AutosuggestItemsState extends HighlightedOptionState<Autosugges
16
16
  export interface AutosuggestItemsHandlers extends HighlightedOptionHandlers<AutosuggestItem> {
17
17
  setShowAll(value: boolean): void;
18
18
  selectHighlightedOptionWithKeyboard(): boolean;
19
+ highlightVisibleOptionWithMouse(index: number): void;
20
+ selectVisibleOptionWithMouse(index: number): void;
19
21
  }
20
22
  export declare const getParentGroup: (item: AutosuggestItem) => AutosuggestItem | undefined;
21
23
  export declare const useAutosuggestItems: ({ options, filterValue, filterText, filteringType, hideEnteredTextLabel, onSelectItem, }: UseAutosuggestItemsProps) => [AutosuggestItemsState, AutosuggestItemsHandlers];
@@ -1 +1 @@
1
- {"version":3,"file":"options-controller.d.ts","sourceRoot":"","sources":["../../../src/autosuggest/options-controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EAEvB,MAAM,gEAAgE,CAAC;AAExE,aAAK,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAC9C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB,CAAC,eAAe,CAAC;IACpF,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB,CAAC,eAAe,CAAC;IAC1F,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,mCAAmC,IAAI,OAAO,CAAC;CAChD;AAOD,eAAO,MAAM,cAAc,SAAU,eAAe,gCAAwB,CAAC;AAI7E,eAAO,MAAM,mBAAmB,6FAO7B,wBAAwB,KAAG,CAAC,qBAAqB,EAAE,wBAAwB,CA+B7E,CAAC"}
1
+ {"version":3,"file":"options-controller.d.ts","sourceRoot":"","sources":["../../../src/autosuggest/options-controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EAEvB,MAAM,gEAAgE,CAAC;AAExE,aAAK,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAExC,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,gBAAgB,CAAC,aAAa,CAAC;IAC9C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB,CAAC,eAAe,CAAC;IACpF,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB,CAAC,eAAe,CAAC;IAC1F,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACjC,mCAAmC,IAAI,OAAO,CAAC;IAC/C,+BAA+B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACnD;AAOD,eAAO,MAAM,cAAc,SAAU,eAAe,gCAAwB,CAAC;AAI7E,eAAO,MAAM,mBAAmB,6FAO7B,wBAAwB,KAAG,CAAC,qBAAqB,EAAE,wBAAwB,CAkD7E,CAAC"}
@@ -34,9 +34,20 @@ export var useAutosuggestItems = function (_a) {
34
34
  }
35
35
  return false;
36
36
  };
37
+ var highlightVisibleOptionWithMouse = function (index) {
38
+ if (filteredItems[index] && isHighlightable(filteredItems[index])) {
39
+ highlightedOptionHandlers.setHighlightedIndexWithMouse(index);
40
+ }
41
+ };
42
+ var selectVisibleOptionWithMouse = function (index) {
43
+ if (filteredItems[index] && isInteractive(filteredItems[index])) {
44
+ onSelectItem(filteredItems[index]);
45
+ }
46
+ return false;
47
+ };
37
48
  return [
38
- __assign({ items: filteredItems, showAll: showAll }, highlightedOptionState),
39
- __assign({ setShowAll: setShowAll, selectHighlightedOptionWithKeyboard: selectHighlightedOptionWithKeyboard }, highlightedOptionHandlers),
49
+ __assign(__assign({}, highlightedOptionState), { items: filteredItems, showAll: showAll }),
50
+ __assign(__assign({}, highlightedOptionHandlers), { setShowAll: setShowAll, selectHighlightedOptionWithKeyboard: selectHighlightedOptionWithKeyboard, highlightVisibleOptionWithMouse: highlightVisibleOptionWithMouse, selectVisibleOptionWithMouse: selectVisibleOptionWithMouse }),
40
51
  ];
41
52
  };
42
53
  function createItems(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"options-controller.js","sourceRoot":"","sources":["../../../src/autosuggest/options-controller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useMemo, useState } from 'react';\nimport { filterOptions } from './utils/utils';\nimport { generateTestIndexes } from '../internal/components/options-list/utils/test-indexes';\nimport { AutosuggestItem, AutosuggestProps } from './interfaces';\nimport {\n HighlightedOptionHandlers,\n HighlightedOptionState,\n useHighlightedOption,\n} from '../internal/components/options-list/utils/use-highlight-option';\n\ntype Options = AutosuggestProps.Options;\n\nexport interface UseAutosuggestItemsProps {\n options: Options;\n filterValue: string;\n filterText: string;\n filteringType: AutosuggestProps.FilteringType;\n hideEnteredTextLabel?: boolean;\n onSelectItem: (option: AutosuggestItem) => void;\n}\n\nexport interface AutosuggestItemsState extends HighlightedOptionState<AutosuggestItem> {\n items: readonly AutosuggestItem[];\n showAll: boolean;\n}\n\nexport interface AutosuggestItemsHandlers extends HighlightedOptionHandlers<AutosuggestItem> {\n setShowAll(value: boolean): void;\n selectHighlightedOptionWithKeyboard(): boolean;\n}\n\nconst isHighlightable = (option?: AutosuggestItem) => {\n return !!option && option.type !== 'parent';\n};\n\nconst parentMap = new WeakMap<AutosuggestItem, AutosuggestItem>();\nexport const getParentGroup = (item: AutosuggestItem) => parentMap.get(item);\n\nconst isInteractive = (option?: AutosuggestItem) => !!option && !option.disabled && option.type !== 'parent';\n\nexport const useAutosuggestItems = ({\n options,\n filterValue,\n filterText,\n filteringType,\n hideEnteredTextLabel,\n onSelectItem,\n}: UseAutosuggestItemsProps): [AutosuggestItemsState, AutosuggestItemsHandlers] => {\n const [showAll, setShowAll] = useState(false);\n\n const items = useMemo(() => createItems(options), [options]);\n\n const filteredItems = useMemo(() => {\n const filteredItems = filteringType === 'auto' && !showAll ? filterOptions(items, filterText) : [...items];\n if (filterValue && !hideEnteredTextLabel) {\n filteredItems.unshift({ value: filterValue, type: 'use-entered', option: { value: filterValue } });\n }\n generateTestIndexes(filteredItems, getParentGroup);\n return filteredItems;\n }, [items, filterValue, filterText, filteringType, showAll, hideEnteredTextLabel]);\n\n const [highlightedOptionState, highlightedOptionHandlers] = useHighlightedOption({\n options: filteredItems,\n isHighlightable,\n });\n\n const selectHighlightedOptionWithKeyboard = () => {\n if (highlightedOptionState.highlightedOption && isInteractive(highlightedOptionState.highlightedOption)) {\n onSelectItem(highlightedOptionState.highlightedOption);\n return true;\n }\n return false;\n };\n\n return [\n { items: filteredItems, showAll, ...highlightedOptionState },\n { setShowAll, selectHighlightedOptionWithKeyboard, ...highlightedOptionHandlers },\n ];\n};\n\nfunction createItems(options: Options): AutosuggestItem[] {\n const items: AutosuggestItem[] = [];\n for (const option of options) {\n if (isGroup(option)) {\n for (const item of flattenGroup(option)) {\n items.push(item);\n }\n } else {\n items.push({ ...option, option });\n }\n }\n return items;\n}\n\nfunction isGroup(optionOrGroup: AutosuggestProps.Option): optionOrGroup is AutosuggestProps.OptionGroup {\n return 'options' in optionOrGroup;\n}\n\nfunction flattenGroup(group: AutosuggestProps.OptionGroup): AutosuggestItem[] {\n const { options, ...rest } = group;\n\n let hasOnlyDisabledChildren = true;\n\n const items: AutosuggestItem[] = [{ ...rest, type: 'parent', option: group }];\n\n for (const option of options) {\n if (!option.disabled) {\n hasOnlyDisabledChildren = false;\n }\n\n const childOption: AutosuggestItem = {\n ...option,\n type: 'child',\n disabled: option.disabled || rest.disabled,\n option,\n };\n\n items.push(childOption);\n\n // TODO: Refactor parentMap and remove this side effect\n parentMap.set(childOption, { ...group, option: group });\n }\n\n items[0].disabled = items[0].disabled || hasOnlyDisabledChildren;\n\n return items;\n}\n"]}
1
+ {"version":3,"file":"options-controller.js","sourceRoot":"","sources":["../../../src/autosuggest/options-controller.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useMemo, useState } from 'react';\nimport { filterOptions } from './utils/utils';\nimport { generateTestIndexes } from '../internal/components/options-list/utils/test-indexes';\nimport { AutosuggestItem, AutosuggestProps } from './interfaces';\nimport {\n HighlightedOptionHandlers,\n HighlightedOptionState,\n useHighlightedOption,\n} from '../internal/components/options-list/utils/use-highlight-option';\n\ntype Options = AutosuggestProps.Options;\n\nexport interface UseAutosuggestItemsProps {\n options: Options;\n filterValue: string;\n filterText: string;\n filteringType: AutosuggestProps.FilteringType;\n hideEnteredTextLabel?: boolean;\n onSelectItem: (option: AutosuggestItem) => void;\n}\n\nexport interface AutosuggestItemsState extends HighlightedOptionState<AutosuggestItem> {\n items: readonly AutosuggestItem[];\n showAll: boolean;\n}\n\nexport interface AutosuggestItemsHandlers extends HighlightedOptionHandlers<AutosuggestItem> {\n setShowAll(value: boolean): void;\n selectHighlightedOptionWithKeyboard(): boolean;\n highlightVisibleOptionWithMouse(index: number): void;\n selectVisibleOptionWithMouse(index: number): void;\n}\n\nconst isHighlightable = (option?: AutosuggestItem) => {\n return !!option && option.type !== 'parent';\n};\n\nconst parentMap = new WeakMap<AutosuggestItem, AutosuggestItem>();\nexport const getParentGroup = (item: AutosuggestItem) => parentMap.get(item);\n\nconst isInteractive = (option?: AutosuggestItem) => !!option && !option.disabled && option.type !== 'parent';\n\nexport const useAutosuggestItems = ({\n options,\n filterValue,\n filterText,\n filteringType,\n hideEnteredTextLabel,\n onSelectItem,\n}: UseAutosuggestItemsProps): [AutosuggestItemsState, AutosuggestItemsHandlers] => {\n const [showAll, setShowAll] = useState(false);\n\n const items = useMemo(() => createItems(options), [options]);\n\n const filteredItems = useMemo(() => {\n const filteredItems = filteringType === 'auto' && !showAll ? filterOptions(items, filterText) : [...items];\n if (filterValue && !hideEnteredTextLabel) {\n filteredItems.unshift({ value: filterValue, type: 'use-entered', option: { value: filterValue } });\n }\n generateTestIndexes(filteredItems, getParentGroup);\n return filteredItems;\n }, [items, filterValue, filterText, filteringType, showAll, hideEnteredTextLabel]);\n\n const [highlightedOptionState, highlightedOptionHandlers] = useHighlightedOption({\n options: filteredItems,\n isHighlightable,\n });\n\n const selectHighlightedOptionWithKeyboard = () => {\n if (highlightedOptionState.highlightedOption && isInteractive(highlightedOptionState.highlightedOption)) {\n onSelectItem(highlightedOptionState.highlightedOption);\n return true;\n }\n return false;\n };\n\n const highlightVisibleOptionWithMouse = (index: number) => {\n if (filteredItems[index] && isHighlightable(filteredItems[index])) {\n highlightedOptionHandlers.setHighlightedIndexWithMouse(index);\n }\n };\n\n const selectVisibleOptionWithMouse = (index: number) => {\n if (filteredItems[index] && isInteractive(filteredItems[index])) {\n onSelectItem(filteredItems[index]);\n }\n return false;\n };\n\n return [\n { ...highlightedOptionState, items: filteredItems, showAll },\n {\n ...highlightedOptionHandlers,\n setShowAll,\n selectHighlightedOptionWithKeyboard,\n highlightVisibleOptionWithMouse,\n selectVisibleOptionWithMouse,\n },\n ];\n};\n\nfunction createItems(options: Options): AutosuggestItem[] {\n const items: AutosuggestItem[] = [];\n for (const option of options) {\n if (isGroup(option)) {\n for (const item of flattenGroup(option)) {\n items.push(item);\n }\n } else {\n items.push({ ...option, option });\n }\n }\n return items;\n}\n\nfunction isGroup(optionOrGroup: AutosuggestProps.Option): optionOrGroup is AutosuggestProps.OptionGroup {\n return 'options' in optionOrGroup;\n}\n\nfunction flattenGroup(group: AutosuggestProps.OptionGroup): AutosuggestItem[] {\n const { options, ...rest } = group;\n\n let hasOnlyDisabledChildren = true;\n\n const items: AutosuggestItem[] = [{ ...rest, type: 'parent', option: group }];\n\n for (const option of options) {\n if (!option.disabled) {\n hasOnlyDisabledChildren = false;\n }\n\n const childOption: AutosuggestItem = {\n ...option,\n type: 'child',\n disabled: option.disabled || rest.disabled,\n option,\n };\n\n items.push(childOption);\n\n // TODO: Refactor parentMap and remove this side effect\n parentMap.set(childOption, { ...group, option: group });\n }\n\n items[0].disabled = items[0].disabled || hasOnlyDisabledChildren;\n\n return items;\n}\n"]}
@@ -1,10 +1,9 @@
1
1
  import React from 'react';
2
2
  import { AutosuggestItemsHandlers, AutosuggestItemsState } from './options-controller';
3
- import { AutosuggestItem, AutosuggestProps } from './interfaces';
3
+ import { AutosuggestProps } from './interfaces';
4
4
  export interface AutosuggestOptionsListProps extends Pick<AutosuggestProps, 'enteredTextLabel' | 'virtualScroll' | 'selectedAriaLabel' | 'renderHighlightedAriaLive'> {
5
5
  autosuggestItemsState: AutosuggestItemsState;
6
6
  autosuggestItemsHandlers: AutosuggestItemsHandlers;
7
- selectOption: (option: AutosuggestItem) => void;
8
7
  highlightedOptionId?: string;
9
8
  highlightText: string;
10
9
  listId: string;
@@ -13,5 +12,5 @@ export interface AutosuggestOptionsListProps extends Pick<AutosuggestProps, 'ent
13
12
  hasDropdownStatus?: boolean;
14
13
  listBottom?: React.ReactNode;
15
14
  }
16
- export default function AutosuggestOptionsList({ autosuggestItemsState, autosuggestItemsHandlers, selectOption, highlightedOptionId, highlightText, listId, controlId, enteredTextLabel, handleLoadMore, hasDropdownStatus, virtualScroll, selectedAriaLabel, renderHighlightedAriaLive, listBottom, }: AutosuggestOptionsListProps): JSX.Element;
15
+ export default function AutosuggestOptionsList({ autosuggestItemsState, autosuggestItemsHandlers, highlightedOptionId, highlightText, listId, controlId, enteredTextLabel, handleLoadMore, hasDropdownStatus, virtualScroll, selectedAriaLabel, renderHighlightedAriaLive, listBottom, }: AutosuggestOptionsListProps): JSX.Element;
17
16
  //# sourceMappingURL=options-list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"options-list.d.ts","sourceRoot":"","sources":["../../../src/autosuggest/options-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAkB,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOjE,MAAM,WAAW,2BACf,SAAQ,IAAI,CACV,gBAAgB,EAChB,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,GAAG,2BAA2B,CACzF;IACD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AAiBD,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,GACX,EAAE,2BAA2B,eAiC7B"}
1
+ {"version":3,"file":"options-list.d.ts","sourceRoot":"","sources":["../../../src/autosuggest/options-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAkB,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOhD,MAAM,WAAW,2BACf,SAAQ,IAAI,CACV,gBAAgB,EAChB,kBAAkB,GAAG,eAAe,GAAG,mBAAmB,GAAG,2BAA2B,CACzF;IACD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B;AASD,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAC7C,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,UAAU,GACX,EAAE,2BAA2B,eA2B7B"}
@@ -1,17 +1,10 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import React from 'react';
4
- import { useSelectVisibleOption, useHighlightVisibleOption } from './controller';
5
4
  import { getParentGroup } from './options-controller';
6
5
  import VirtualList from './virtual-list';
7
6
  import PlainList from './plain-list';
8
7
  import { useAnnouncement } from '../select/utils/use-announcement';
9
- var isInteractive = function (option) {
10
- return !!option && !option.disabled && option.type !== 'parent';
11
- };
12
- var isHighlightable = function (option) {
13
- return !!option && option.type !== 'parent';
14
- };
15
8
  var createMouseEventHandler = function (handler) { return function (itemIndex) {
16
9
  // prevent mouse events to avoid losing focus from the input
17
10
  if (itemIndex > -1) {
@@ -19,11 +12,9 @@ var createMouseEventHandler = function (handler) { return function (itemIndex) {
19
12
  }
20
13
  }; };
21
14
  export default function AutosuggestOptionsList(_a) {
22
- var autosuggestItemsState = _a.autosuggestItemsState, autosuggestItemsHandlers = _a.autosuggestItemsHandlers, selectOption = _a.selectOption, highlightedOptionId = _a.highlightedOptionId, highlightText = _a.highlightText, listId = _a.listId, controlId = _a.controlId, enteredTextLabel = _a.enteredTextLabel, handleLoadMore = _a.handleLoadMore, hasDropdownStatus = _a.hasDropdownStatus, virtualScroll = _a.virtualScroll, selectedAriaLabel = _a.selectedAriaLabel, renderHighlightedAriaLive = _a.renderHighlightedAriaLive, listBottom = _a.listBottom;
23
- var highlightVisibleOption = useHighlightVisibleOption(autosuggestItemsState.items, autosuggestItemsHandlers.setHighlightedIndexWithMouse, isHighlightable);
24
- var selectVisibleOption = useSelectVisibleOption(autosuggestItemsState.items, selectOption, isInteractive);
25
- var handleMouseUp = createMouseEventHandler(selectVisibleOption);
26
- var handleMouseMove = createMouseEventHandler(highlightVisibleOption);
15
+ var autosuggestItemsState = _a.autosuggestItemsState, autosuggestItemsHandlers = _a.autosuggestItemsHandlers, highlightedOptionId = _a.highlightedOptionId, highlightText = _a.highlightText, listId = _a.listId, controlId = _a.controlId, enteredTextLabel = _a.enteredTextLabel, handleLoadMore = _a.handleLoadMore, hasDropdownStatus = _a.hasDropdownStatus, virtualScroll = _a.virtualScroll, selectedAriaLabel = _a.selectedAriaLabel, renderHighlightedAriaLive = _a.renderHighlightedAriaLive, listBottom = _a.listBottom;
16
+ var handleMouseUp = createMouseEventHandler(autosuggestItemsHandlers.selectVisibleOptionWithMouse);
17
+ var handleMouseMove = createMouseEventHandler(autosuggestItemsHandlers.highlightVisibleOptionWithMouse);
27
18
  var ListComponent = virtualScroll ? VirtualList : PlainList;
28
19
  var announcement = useAnnouncement({
29
20
  announceSelected: true,
@@ -1 +1 @@
1
- {"version":3,"file":"options-list.js","sourceRoot":"","sources":["../../../src/autosuggest/options-list.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAmD,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvG,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAoBnE,IAAM,aAAa,GAAG,UAAC,MAAwB;IAC7C,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClE,CAAC,CAAC;AAEF,IAAM,eAAe,GAAG,UAAC,MAAwB;IAC/C,OAAO,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC9C,CAAC,CAAC;AAEF,IAAM,uBAAuB,GAAG,UAAC,OAAgC,IAAK,OAAA,UAAC,SAAiB;IACtF,4DAA4D;IAC5D,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;QAClB,OAAO,CAAC,SAAS,CAAC,CAAC;KACpB;AACH,CAAC,EALqE,CAKrE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAejB;QAd5B,qBAAqB,2BAAA,EACrB,wBAAwB,8BAAA,EACxB,YAAY,kBAAA,EACZ,mBAAmB,yBAAA,EACnB,aAAa,mBAAA,EACb,MAAM,YAAA,EACN,SAAS,eAAA,EACT,gBAAgB,sBAAA,EAChB,cAAc,oBAAA,EACd,iBAAiB,uBAAA,EACjB,aAAa,mBAAA,EACb,iBAAiB,uBAAA,EACjB,yBAAyB,+BAAA,EACzB,UAAU,gBAAA;IAEV,IAAM,sBAAsB,GAAG,yBAAyB,CACtD,qBAAqB,CAAC,KAAK,EAC3B,wBAAwB,CAAC,4BAA4B,EACrD,eAAe,CAChB,CAAC;IACF,IAAM,mBAAmB,GAAG,sBAAsB,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IAC7G,IAAM,aAAa,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,CAAC;IACnE,IAAM,eAAe,GAAG,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;IAExE,IAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9D,IAAM,YAAY,GAAG,eAAe,CAAC;QACnC,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,qBAAqB,CAAC,iBAAiB;QAC1D,SAAS,EAAE,UAAA,MAAM,YAAI,OAAA,MAAA,cAAc,CAAC,MAAM,CAAC,0CAAE,MAAiC,CAAA,EAAA;QAC9E,iBAAiB,mBAAA;QACjB,yBAAyB,2BAAA;KAC1B,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,aAAa,IACZ,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,EAC5E,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,EAC5G,mBAAmB,EAAE,YAAY,GACjC,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { useSelectVisibleOption, useHighlightVisibleOption } from './controller';\nimport { AutosuggestItemsHandlers, AutosuggestItemsState, getParentGroup } from './options-controller';\nimport { AutosuggestItem, AutosuggestProps } from './interfaces';\nimport VirtualList from './virtual-list';\nimport PlainList from './plain-list';\n\nimport { useAnnouncement } from '../select/utils/use-announcement';\nimport { OptionGroup } from '../internal/components/option/interfaces';\n\nexport interface AutosuggestOptionsListProps\n extends Pick<\n AutosuggestProps,\n 'enteredTextLabel' | 'virtualScroll' | 'selectedAriaLabel' | 'renderHighlightedAriaLive'\n > {\n autosuggestItemsState: AutosuggestItemsState;\n autosuggestItemsHandlers: AutosuggestItemsHandlers;\n selectOption: (option: AutosuggestItem) => void;\n highlightedOptionId?: string;\n highlightText: string;\n listId: string;\n controlId: string;\n handleLoadMore: () => void;\n hasDropdownStatus?: boolean;\n listBottom?: React.ReactNode;\n}\n\nconst isInteractive = (option?: AutosuggestItem) => {\n return !!option && !option.disabled && option.type !== 'parent';\n};\n\nconst isHighlightable = (option?: AutosuggestItem) => {\n return !!option && option.type !== 'parent';\n};\n\nconst createMouseEventHandler = (handler: (index: number) => void) => (itemIndex: number) => {\n // prevent mouse events to avoid losing focus from the input\n if (itemIndex > -1) {\n handler(itemIndex);\n }\n};\n\nexport default function AutosuggestOptionsList({\n autosuggestItemsState,\n autosuggestItemsHandlers,\n selectOption,\n highlightedOptionId,\n highlightText,\n listId,\n controlId,\n enteredTextLabel,\n handleLoadMore,\n hasDropdownStatus,\n virtualScroll,\n selectedAriaLabel,\n renderHighlightedAriaLive,\n listBottom,\n}: AutosuggestOptionsListProps) {\n const highlightVisibleOption = useHighlightVisibleOption(\n autosuggestItemsState.items,\n autosuggestItemsHandlers.setHighlightedIndexWithMouse,\n isHighlightable\n );\n const selectVisibleOption = useSelectVisibleOption(autosuggestItemsState.items, selectOption, isInteractive);\n const handleMouseUp = createMouseEventHandler(selectVisibleOption);\n const handleMouseMove = createMouseEventHandler(highlightVisibleOption);\n\n const ListComponent = virtualScroll ? VirtualList : PlainList;\n\n const announcement = useAnnouncement({\n announceSelected: true,\n highlightedOption: autosuggestItemsState.highlightedOption,\n getParent: option => getParentGroup(option)?.option as undefined | OptionGroup,\n selectedAriaLabel,\n renderHighlightedAriaLive,\n });\n\n return (\n <ListComponent\n listBottom={listBottom}\n handleLoadMore={handleLoadMore}\n autosuggestItemsState={autosuggestItemsState}\n highlightText={highlightText}\n enteredTextLabel={enteredTextLabel}\n highlightedA11yProps={highlightedOptionId ? { id: highlightedOptionId } : {}}\n hasDropdownStatus={hasDropdownStatus}\n menuProps={{ id: listId, ariaLabelledby: controlId, onMouseUp: handleMouseUp, onMouseMove: handleMouseMove }}\n screenReaderContent={announcement}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"options-list.js","sourceRoot":"","sources":["../../../src/autosuggest/options-list.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAmD,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEvG,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAmBnE,IAAM,uBAAuB,GAAG,UAAC,OAAgC,IAAK,OAAA,UAAC,SAAiB;IACtF,4DAA4D;IAC5D,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;QAClB,OAAO,CAAC,SAAS,CAAC,CAAC;KACpB;AACH,CAAC,EALqE,CAKrE,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAcjB;QAb5B,qBAAqB,2BAAA,EACrB,wBAAwB,8BAAA,EACxB,mBAAmB,yBAAA,EACnB,aAAa,mBAAA,EACb,MAAM,YAAA,EACN,SAAS,eAAA,EACT,gBAAgB,sBAAA,EAChB,cAAc,oBAAA,EACd,iBAAiB,uBAAA,EACjB,aAAa,mBAAA,EACb,iBAAiB,uBAAA,EACjB,yBAAyB,+BAAA,EACzB,UAAU,gBAAA;IAEV,IAAM,aAAa,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,4BAA4B,CAAC,CAAC;IACrG,IAAM,eAAe,GAAG,uBAAuB,CAAC,wBAAwB,CAAC,+BAA+B,CAAC,CAAC;IAE1G,IAAM,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9D,IAAM,YAAY,GAAG,eAAe,CAAC;QACnC,gBAAgB,EAAE,IAAI;QACtB,iBAAiB,EAAE,qBAAqB,CAAC,iBAAiB;QAC1D,SAAS,EAAE,UAAA,MAAM,YAAI,OAAA,MAAA,cAAc,CAAC,MAAM,CAAC,0CAAE,MAAiC,CAAA,EAAA;QAC9E,iBAAiB,mBAAA;QACjB,yBAAyB,2BAAA;KAC1B,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,aAAa,IACZ,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,oBAAoB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,EAC5E,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,EAC5G,mBAAmB,EAAE,YAAY,GACjC,CACH,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { AutosuggestItemsHandlers, AutosuggestItemsState, getParentGroup } from './options-controller';\nimport { AutosuggestProps } from './interfaces';\nimport VirtualList from './virtual-list';\nimport PlainList from './plain-list';\n\nimport { useAnnouncement } from '../select/utils/use-announcement';\nimport { OptionGroup } from '../internal/components/option/interfaces';\n\nexport interface AutosuggestOptionsListProps\n extends Pick<\n AutosuggestProps,\n 'enteredTextLabel' | 'virtualScroll' | 'selectedAriaLabel' | 'renderHighlightedAriaLive'\n > {\n autosuggestItemsState: AutosuggestItemsState;\n autosuggestItemsHandlers: AutosuggestItemsHandlers;\n highlightedOptionId?: string;\n highlightText: string;\n listId: string;\n controlId: string;\n handleLoadMore: () => void;\n hasDropdownStatus?: boolean;\n listBottom?: React.ReactNode;\n}\n\nconst createMouseEventHandler = (handler: (index: number) => void) => (itemIndex: number) => {\n // prevent mouse events to avoid losing focus from the input\n if (itemIndex > -1) {\n handler(itemIndex);\n }\n};\n\nexport default function AutosuggestOptionsList({\n autosuggestItemsState,\n autosuggestItemsHandlers,\n highlightedOptionId,\n highlightText,\n listId,\n controlId,\n enteredTextLabel,\n handleLoadMore,\n hasDropdownStatus,\n virtualScroll,\n selectedAriaLabel,\n renderHighlightedAriaLive,\n listBottom,\n}: AutosuggestOptionsListProps) {\n const handleMouseUp = createMouseEventHandler(autosuggestItemsHandlers.selectVisibleOptionWithMouse);\n const handleMouseMove = createMouseEventHandler(autosuggestItemsHandlers.highlightVisibleOptionWithMouse);\n\n const ListComponent = virtualScroll ? VirtualList : PlainList;\n\n const announcement = useAnnouncement({\n announceSelected: true,\n highlightedOption: autosuggestItemsState.highlightedOption,\n getParent: option => getParentGroup(option)?.option as undefined | OptionGroup,\n selectedAriaLabel,\n renderHighlightedAriaLive,\n });\n\n return (\n <ListComponent\n listBottom={listBottom}\n handleLoadMore={handleLoadMore}\n autosuggestItemsState={autosuggestItemsState}\n highlightText={highlightText}\n enteredTextLabel={enteredTextLabel}\n highlightedA11yProps={highlightedOptionId ? { id: highlightedOptionId } : {}}\n hasDropdownStatus={hasDropdownStatus}\n menuProps={{ id: listId, ariaLabelledby: controlId, onMouseUp: handleMouseUp, onMouseMove: handleMouseMove }}\n screenReaderContent={announcement}\n />\n );\n}\n"]}
@@ -39,9 +39,8 @@ export interface HeaderProps extends BaseComponentProps {
39
39
  */
40
40
  info?: React.ReactNode;
41
41
  }
42
- declare namespace HeaderProps {
42
+ export declare namespace HeaderProps {
43
43
  type Variant = 'h1' | 'h2' | 'h3' | 'awsui-h1-sticky';
44
44
  type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5';
45
45
  }
46
- export {};
47
46
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/header/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC;IAC5C;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,kBAAU,WAAW,CAAC;IACpB,KAAY,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,iBAAiB,CAAC;IAC7D,KAAY,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3D"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/header/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC;IAC9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC;IAC5C;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,yBAAiB,WAAW,CAAC;IAC3B,KAAY,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,iBAAiB,CAAC;IAC7D,KAAY,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/header/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport React from 'react';\n\nexport interface HeaderProps extends BaseComponentProps {\n /**\n * The heading text. Plain text is recommended. The component renders the\n * HTML heading tag based on the specified `variant` or `headingTagOverride`.\n * @displayname title\n */\n children?: React.ReactNode;\n /**\n * Specifies the variant of the header:\n * * `h1` - Use this for page level headers.\n * * `h2` - Use this for container level headers.\n * * `h3` - Use this for section level headers.\n * * `awsui-h1-sticky` - Use this for sticky headers in cards and tables.\n * @visualrefresh `awsui-h1-sticky` variant\n */\n variant?: HeaderProps.Variant;\n /**\n * Overrides the default [HTML heading tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements)\n * provided by the variant.\n */\n headingTagOverride?: HeaderProps.HeadingTag;\n /**\n * Supplementary text below the heading.\n */\n description?: React.ReactNode;\n /**\n * Actions for the container.\n */\n actions?: React.ReactNode;\n /**\n * Specifies secondary text that's displayed to the right of the heading title. This is commonly used\n * to display resource counters in table and cards components.\n */\n counter?: string;\n /**\n * Area next to the heading to display an Info link.\n */\n info?: React.ReactNode;\n}\n\nnamespace HeaderProps {\n export type Variant = 'h1' | 'h2' | 'h3' | 'awsui-h1-sticky';\n export type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5';\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/header/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport React from 'react';\n\nexport interface HeaderProps extends BaseComponentProps {\n /**\n * The heading text. Plain text is recommended. The component renders the\n * HTML heading tag based on the specified `variant` or `headingTagOverride`.\n * @displayname title\n */\n children?: React.ReactNode;\n /**\n * Specifies the variant of the header:\n * * `h1` - Use this for page level headers.\n * * `h2` - Use this for container level headers.\n * * `h3` - Use this for section level headers.\n * * `awsui-h1-sticky` - Use this for sticky headers in cards and tables.\n * @visualrefresh `awsui-h1-sticky` variant\n */\n variant?: HeaderProps.Variant;\n /**\n * Overrides the default [HTML heading tag](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements)\n * provided by the variant.\n */\n headingTagOverride?: HeaderProps.HeadingTag;\n /**\n * Supplementary text below the heading.\n */\n description?: React.ReactNode;\n /**\n * Actions for the container.\n */\n actions?: React.ReactNode;\n /**\n * Specifies secondary text that's displayed to the right of the heading title. This is commonly used\n * to display resource counters in table and cards components.\n */\n counter?: string;\n /**\n * Area next to the heading to display an Info link.\n */\n info?: React.ReactNode;\n}\n\nexport namespace HeaderProps {\n export type Variant = 'h1' | 'h2' | 'h3' | 'awsui-h1-sticky';\n export type HeadingTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5';\n}\n"]}
@@ -1,10 +1,8 @@
1
1
  import React from 'react';
2
2
  import { BaseComponentProps } from '../../base-component';
3
3
  import { HighlightType } from '../options-list/utils/use-highlight-option.js';
4
- export interface SelectableItemProps extends BaseComponentProps {
4
+ export declare type SelectableItemProps = BaseComponentProps & {
5
5
  children: React.ReactNode;
6
- ariaSelected?: boolean;
7
- ariaChecked?: boolean;
8
6
  selected?: boolean;
9
7
  highlighted?: boolean;
10
8
  disabled?: boolean;
@@ -19,7 +17,13 @@ export interface SelectableItemProps extends BaseComponentProps {
19
17
  ariaPosinset?: number;
20
18
  ariaSetsize?: number;
21
19
  highlightType?: HighlightType;
22
- }
20
+ } & ({
21
+ ariaSelected?: boolean;
22
+ ariaChecked?: never;
23
+ } | {
24
+ ariaSelected?: never;
25
+ ariaChecked?: boolean | 'mixed';
26
+ });
23
27
  declare const _default: React.ForwardRefExoticComponent<SelectableItemProps & React.RefAttributes<HTMLDivElement>>;
24
28
  export default _default;
25
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/selectable-item/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAgB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAE9E,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;;AAmGD,wBAAgD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/selectable-item/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAGvD,OAAO,EAAE,kBAAkB,EAAgB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAE9E,oBAAY,mBAAmB,GAAG,kBAAkB,GAAG;IACrD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,CAAC;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,YAAY,CAAC,EAAE,KAAK,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,CAAC,CAAC;;AAmGlH,wBAAgD"}
@@ -50,11 +50,11 @@ var SelectableItem = function (_a, ref) {
50
50
  if (isParent && !useInteractiveGroups) {
51
51
  a11yProperties['aria-hidden'] = true;
52
52
  }
53
- if (ariaSelected) {
53
+ if (ariaSelected !== undefined) {
54
54
  a11yProperties['aria-selected'] = ariaSelected;
55
55
  }
56
56
  // Safari+VO needs aria-checked for multi-selection. Otherwise it only announces selected option even though another option is highlighted.
57
- if (ariaChecked) {
57
+ if (ariaChecked !== undefined) {
58
58
  a11yProperties['aria-checked'] = ariaChecked;
59
59
  }
60
60
  if (ariaPosinset && ariaSetsize) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/selectable-item/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useLayoutEffect } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport { HighlightType } from '../options-list/utils/use-highlight-option.js';\n\nexport interface SelectableItemProps extends BaseComponentProps {\n children: React.ReactNode;\n ariaSelected?: boolean;\n ariaChecked?: boolean;\n selected?: boolean;\n highlighted?: boolean;\n disabled?: boolean;\n hasBackground?: boolean;\n isParent?: boolean;\n isChild?: boolean;\n virtualPosition?: number;\n padBottom?: boolean;\n isNextSelected?: boolean;\n useInteractiveGroups?: boolean;\n screenReaderContent?: string;\n ariaPosinset?: number;\n ariaSetsize?: number;\n highlightType?: HighlightType;\n}\n\nconst SelectableItem = (\n {\n children: content,\n ariaSelected,\n ariaChecked,\n selected,\n highlighted,\n disabled,\n hasBackground,\n isParent,\n isChild,\n virtualPosition,\n padBottom,\n isNextSelected,\n useInteractiveGroups,\n screenReaderContent,\n ariaPosinset,\n ariaSetsize,\n highlightType,\n ...restProps\n }: SelectableItemProps,\n ref: React.Ref<HTMLDivElement>\n) => {\n const { className, ...rest } = getBaseProps(restProps);\n const classNames = clsx(className, styles['selectable-item'], {\n [styles.selected]: selected,\n [styles.highlighted]: highlighted,\n [styles['has-background']]: hasBackground,\n [styles.parent]: isParent,\n [styles.child]: isChild,\n [styles['is-keyboard']]: highlightType === 'keyboard',\n [styles.disabled]: disabled,\n [styles.virtual]: virtualPosition !== undefined,\n [styles['pad-bottom']]: padBottom,\n [styles['next-item-selected']]: isNextSelected,\n [styles.interactiveGroups]: useInteractiveGroups,\n });\n\n const contentRef = useRef<HTMLDivElement>(null);\n const screenReaderContentRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n // the state of aria-hidden and announcement is not set back because NVDA+Firefox would announce\n // the item which lost highlight\n // set aria-hidden true when there is announcement content, so that screen reader still announce\n // meaningful content when navigate with screen reader cursor\n // imperatively update to avoid announcement made multiple times when content updates\n if (highlighted && screenReaderContent) {\n if (contentRef.current) {\n contentRef.current.setAttribute('aria-hidden', 'true');\n }\n if (screenReaderContentRef.current) {\n screenReaderContentRef.current.textContent = screenReaderContent;\n }\n }\n }, [highlighted, screenReaderContent, contentRef, screenReaderContentRef]);\n\n const style =\n virtualPosition !== undefined\n ? {\n transform: `translateY(${virtualPosition}px)`,\n }\n : undefined;\n\n const a11yProperties: Record<string, string | number | boolean | undefined> = {\n 'aria-disabled': disabled,\n };\n\n if (isParent && !useInteractiveGroups) {\n a11yProperties['aria-hidden'] = true;\n }\n\n if (ariaSelected) {\n a11yProperties['aria-selected'] = ariaSelected;\n }\n\n // Safari+VO needs aria-checked for multi-selection. Otherwise it only announces selected option even though another option is highlighted.\n if (ariaChecked) {\n a11yProperties['aria-checked'] = ariaChecked;\n }\n\n if (ariaPosinset && ariaSetsize) {\n a11yProperties['aria-posinset'] = ariaPosinset;\n a11yProperties['aria-setsize'] = ariaSetsize;\n }\n\n return (\n <li role=\"option\" className={classNames} style={style} {...a11yProperties} {...rest}>\n <div className={styles['option-content']} ref={contentRef}>\n {content}\n </div>\n <div className={styles['measure-strut']} ref={ref} />\n <div className={styles['screenreader-content']} ref={screenReaderContentRef}></div>\n </li>\n );\n};\n\nexport default React.forwardRef(SelectableItem);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/selectable-item/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useLayoutEffect } from 'react';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { BaseComponentProps, getBaseProps } from '../../base-component';\nimport { HighlightType } from '../options-list/utils/use-highlight-option.js';\n\nexport type SelectableItemProps = BaseComponentProps & {\n children: React.ReactNode;\n selected?: boolean;\n highlighted?: boolean;\n disabled?: boolean;\n hasBackground?: boolean;\n isParent?: boolean;\n isChild?: boolean;\n virtualPosition?: number;\n padBottom?: boolean;\n isNextSelected?: boolean;\n useInteractiveGroups?: boolean;\n screenReaderContent?: string;\n ariaPosinset?: number;\n ariaSetsize?: number;\n highlightType?: HighlightType;\n} & ({ ariaSelected?: boolean; ariaChecked?: never } | { ariaSelected?: never; ariaChecked?: boolean | 'mixed' });\n\nconst SelectableItem = (\n {\n children: content,\n ariaSelected,\n ariaChecked,\n selected,\n highlighted,\n disabled,\n hasBackground,\n isParent,\n isChild,\n virtualPosition,\n padBottom,\n isNextSelected,\n useInteractiveGroups,\n screenReaderContent,\n ariaPosinset,\n ariaSetsize,\n highlightType,\n ...restProps\n }: SelectableItemProps,\n ref: React.Ref<HTMLDivElement>\n) => {\n const { className, ...rest } = getBaseProps(restProps);\n const classNames = clsx(className, styles['selectable-item'], {\n [styles.selected]: selected,\n [styles.highlighted]: highlighted,\n [styles['has-background']]: hasBackground,\n [styles.parent]: isParent,\n [styles.child]: isChild,\n [styles['is-keyboard']]: highlightType === 'keyboard',\n [styles.disabled]: disabled,\n [styles.virtual]: virtualPosition !== undefined,\n [styles['pad-bottom']]: padBottom,\n [styles['next-item-selected']]: isNextSelected,\n [styles.interactiveGroups]: useInteractiveGroups,\n });\n\n const contentRef = useRef<HTMLDivElement>(null);\n const screenReaderContentRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n // the state of aria-hidden and announcement is not set back because NVDA+Firefox would announce\n // the item which lost highlight\n // set aria-hidden true when there is announcement content, so that screen reader still announce\n // meaningful content when navigate with screen reader cursor\n // imperatively update to avoid announcement made multiple times when content updates\n if (highlighted && screenReaderContent) {\n if (contentRef.current) {\n contentRef.current.setAttribute('aria-hidden', 'true');\n }\n if (screenReaderContentRef.current) {\n screenReaderContentRef.current.textContent = screenReaderContent;\n }\n }\n }, [highlighted, screenReaderContent, contentRef, screenReaderContentRef]);\n\n const style =\n virtualPosition !== undefined\n ? {\n transform: `translateY(${virtualPosition}px)`,\n }\n : undefined;\n\n const a11yProperties: Record<string, string | number | boolean | undefined> = {\n 'aria-disabled': disabled,\n };\n\n if (isParent && !useInteractiveGroups) {\n a11yProperties['aria-hidden'] = true;\n }\n\n if (ariaSelected !== undefined) {\n a11yProperties['aria-selected'] = ariaSelected;\n }\n\n // Safari+VO needs aria-checked for multi-selection. Otherwise it only announces selected option even though another option is highlighted.\n if (ariaChecked !== undefined) {\n a11yProperties['aria-checked'] = ariaChecked;\n }\n\n if (ariaPosinset && ariaSetsize) {\n a11yProperties['aria-posinset'] = ariaPosinset;\n a11yProperties['aria-setsize'] = ariaSetsize;\n }\n\n return (\n <li role=\"option\" className={classNames} style={style} {...a11yProperties} {...rest}>\n <div className={styles['option-content']} ref={contentRef}>\n {content}\n </div>\n <div className={styles['measure-strut']} ref={ref} />\n <div className={styles['screenreader-content']} ref={screenReaderContentRef}></div>\n </li>\n );\n};\n\nexport default React.forwardRef(SelectableItem);\n"]}
@@ -1,5 +1,5 @@
1
1
 
2
- export var PACKAGE_VERSION = '3.0.0 (6193b99)';
2
+ export var PACKAGE_VERSION = '3.0.0 (390ae5c)';
3
3
  export var THEME = 'open-source-visual-refresh';
4
4
  export var ALWAYS_VISUAL_REFRESH = true;
5
5
 
package/package.json CHANGED
@@ -111,6 +111,6 @@
111
111
  "./internal/base-component/index.js",
112
112
  "./internal/base-component/styles.css.js"
113
113
  ],
114
- "version": "3.0.40",
114
+ "version": "3.0.43",
115
115
  "license": "Apache-2.0"
116
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"property-filter-autosuggest.d.ts","sourceRoot":"","sources":["../../../src/property-filter/property-filter-autosuggest.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmC,MAAM,OAAO,CAAC;AAIxD,OAAO,EAAmB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAU9E,OAAO,EAA0B,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAMlF,MAAM,WAAW,8BAA+B,SAAQ,gBAAgB,EAAE,0BAA0B;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChE,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAmBD,QAAA,MAAM,yBAAyB,uGA2L9B,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"property-filter-autosuggest.d.ts","sourceRoot":"","sources":["../../../src/property-filter/property-filter-autosuggest.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,EAAmB,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAU9E,OAAO,EAA0B,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAQlF,MAAM,WAAW,8BAA+B,SAAQ,gBAAgB,EAAE,0BAA0B;IAClG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACtC,aAAa,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChE,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,QAAA,MAAM,yBAAyB,uGAwL9B,CAAC;AAEF,eAAe,yBAAyB,CAAC"}