@ringcentral/juno 1.12.2 → 1.12.4-beta.5835-b8c3da57

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 (89) hide show
  1. package/components/Buttons/Button/Button.d.ts +3 -3
  2. package/components/Buttons/Button/styles/StyledButton.js +4 -2
  3. package/components/Buttons/IconButton/IconButton.d.ts +1 -1
  4. package/components/Buttons/ToggleButton/ToggleButton.d.ts +1 -1
  5. package/components/Card/Card/Card.d.ts +2 -2
  6. package/components/Chip/Chip.d.ts +10 -3
  7. package/components/Chip/Chip.js +5 -3
  8. package/components/Chip/styles/ChipStyle.js +5 -4
  9. package/components/Chip/utils/ChipUtils.d.ts +1 -1
  10. package/components/Chip/utils/ChipUtils.js +1 -1
  11. package/components/Dialer/DialTextField/DialTextField.d.ts +1 -1
  12. package/components/Downshift/Downshift.d.ts +20 -9
  13. package/components/Downshift/Downshift.js +15 -5
  14. package/components/Downshift/SuggestionList/SuggestionList.d.ts +2 -2
  15. package/components/Downshift/SuggestionList/SuggestionList.js +12 -6
  16. package/components/Downshift/SuggestionList/utils/index.d.ts +1 -0
  17. package/components/Downshift/SuggestionList/utils/index.js +1 -0
  18. package/components/Downshift/SuggestionList/utils/useSuggestionList.d.ts +298 -0
  19. package/components/Downshift/SuggestionList/utils/useSuggestionList.js +239 -0
  20. package/components/Downshift/styles/DownshiftStyle.d.ts +1 -1
  21. package/components/Downshift/styles/StyledTextField.d.ts +1 -1
  22. package/components/Downshift/utils/DownshiftUtils.d.ts +12 -0
  23. package/components/Downshift/utils/DownshiftUtils.js +19 -1
  24. package/components/Downshift/utils/SelectItem.d.ts +19 -0
  25. package/components/Downshift/utils/useDownshift.d.ts +5 -2
  26. package/components/Downshift/utils/useDownshift.interface.d.ts +5 -0
  27. package/components/Downshift/utils/useDownshift.js +31 -13
  28. package/components/Downshift/utils/useDownshiftGroup.d.ts +7 -7
  29. package/components/Downshift/utils/useDownshiftGroup.js +45 -19
  30. package/components/Forms/Checkbox/Checkbox.d.ts +1 -1
  31. package/components/Forms/Picker/DatePicker/styles/StyledDatePickerHeader.d.ts +1 -1
  32. package/components/Forms/Picker/TimePicker/NumberPicker.js +1 -3
  33. package/components/Forms/Picker/TimePicker/utils/TimePickerHelper.js +1 -1
  34. package/components/Forms/Picker/styles/StyledPickerTextField.d.ts +1 -1
  35. package/components/Forms/Radio/Radio.d.ts +1 -1
  36. package/components/Forms/Select/PlainSelect/PlainSelect.d.ts +1 -1
  37. package/components/Forms/Select/PlainSelect/PlainSelect.js +5 -4
  38. package/components/Forms/Select/PlainSelect/styles/StyledSelect.js +4 -3
  39. package/components/Forms/Select/Select.d.ts +2 -2
  40. package/components/Forms/Select/Select.js +2 -2
  41. package/components/Forms/Select/styles/StyledSelect.js +22 -18
  42. package/components/Forms/TextField/TextField.d.ts +4 -2
  43. package/components/Forms/TextField/TextField.js +2 -2
  44. package/components/Forms/TextField/styles/ClearIconButton.d.ts +2 -2
  45. package/components/Forms/TextField/styles/OutlineTextFieldStyle.js +4 -2
  46. package/components/Forms/TextField/styles/TextFieldStyle.js +8 -4
  47. package/components/Forms/Textarea/Textarea.d.ts +1 -1
  48. package/components/List/ListItem/ListItem.d.ts +1 -1
  49. package/components/Menu/MenuItem/MenuItem.d.ts +13 -5
  50. package/components/Menu/SubMenu/SubMenu.js +1 -1
  51. package/components/PortalHost/PortalManager/PortalManager.d.ts +2 -2
  52. package/components/PortalHost/PortalManager/PortalManager.js +9 -3
  53. package/components/PortalHost/PortalManager/types.d.ts +2 -1
  54. package/components/TablePagination/styles/TablePaginationStyle.d.ts +13 -5
  55. package/components/Tooltip/withTooltip/withTooltip.d.ts +6 -4
  56. package/components/Typography/Typography.d.ts +1 -1
  57. package/components/Virtuoso/utils/useHighlightScroll.d.ts +1 -1
  58. package/es6/components/Buttons/Button/styles/StyledButton.js +4 -2
  59. package/es6/components/Chip/Chip.js +6 -4
  60. package/es6/components/Chip/styles/ChipStyle.js +6 -5
  61. package/es6/components/Chip/utils/ChipUtils.js +1 -1
  62. package/es6/components/Downshift/Downshift.js +16 -7
  63. package/es6/components/Downshift/SuggestionList/SuggestionList.js +13 -7
  64. package/es6/components/Downshift/SuggestionList/utils/index.js +1 -0
  65. package/es6/components/Downshift/SuggestionList/utils/useSuggestionList.js +237 -0
  66. package/es6/components/Downshift/utils/DownshiftUtils.js +19 -1
  67. package/es6/components/Downshift/utils/useDownshift.js +31 -13
  68. package/es6/components/Downshift/utils/useDownshiftGroup.js +46 -20
  69. package/es6/components/Forms/Picker/TimePicker/NumberPicker.js +1 -3
  70. package/es6/components/Forms/Picker/TimePicker/utils/TimePickerHelper.js +1 -1
  71. package/es6/components/Forms/Select/PlainSelect/PlainSelect.js +5 -4
  72. package/es6/components/Forms/Select/PlainSelect/styles/StyledSelect.js +4 -3
  73. package/es6/components/Forms/Select/Select.js +2 -2
  74. package/es6/components/Forms/Select/styles/StyledSelect.js +24 -20
  75. package/es6/components/Forms/TextField/TextField.js +2 -2
  76. package/es6/components/Forms/TextField/styles/OutlineTextFieldStyle.js +5 -3
  77. package/es6/components/Forms/TextField/styles/TextFieldStyle.js +9 -5
  78. package/es6/components/Menu/SubMenu/SubMenu.js +1 -1
  79. package/es6/components/PortalHost/PortalManager/PortalManager.js +9 -3
  80. package/es6/foundation/config.js +8 -5
  81. package/es6/foundation/contexts/PortalWindowContext.js +3 -1
  82. package/es6/foundation/hooks/useAnnouncer/useAnnouncer.js +7 -0
  83. package/es6/foundation/hooks/useKeyboardMoveFocus/useKeyboardMoveFocus.js +2 -1
  84. package/foundation/config.js +8 -5
  85. package/foundation/contexts/PortalWindowContext.js +3 -1
  86. package/foundation/hooks/useAnnouncer/useAnnouncer.d.ts +7 -0
  87. package/foundation/hooks/useAnnouncer/useAnnouncer.js +7 -0
  88. package/foundation/hooks/useKeyboardMoveFocus/useKeyboardMoveFocus.js +2 -1
  89. package/package.json +3 -3
@@ -1,3 +1,3 @@
1
1
  import { RcClasses } from '../../../foundation';
2
- var RcChipClasses = RcClasses(['avatar', 'disabled', 'deleteIcon'], 'RcChip');
2
+ var RcChipClasses = RcClasses(['avatar', 'disabled', 'deleteIcon', 'focused'], 'RcChip');
3
3
  export { RcChipClasses };
@@ -1,6 +1,6 @@
1
1
  import { __assign, __makeTemplateObject, __read, __rest } from "tslib";
2
2
  import React, { forwardRef, memo, useImperativeHandle, useMemo, useRef, useState, } from 'react';
3
- import { combineClasses, combineProps, omit, styled, useEventCallback, useForkRef, useThemeProps, withDeprecatedCheck, } from '../../foundation';
3
+ import { combineClasses, combineProps, getParsePaletteColor, omit, styled, useEventCallback, useForkRef, useTheme, useThemeProps, withDeprecatedCheck, } from '../../foundation';
4
4
  import ArrowDown from '../../icon/ArrowDown';
5
5
  import ArrowUp from '../../icon/ArrowUp';
6
6
  import { RcChip } from '../Chip';
@@ -11,7 +11,8 @@ import { RcSuggestionList } from './SuggestionList';
11
11
  import { DEFAULT_GET_OPTION_LABEL, DEFAULT_KEY_TO_CHIPS, DEFAULT_LIMIT_CHIPS, RcDownshiftDefaultFilterOptions, RcDownshiftInputClasses, useDownshift, useDownshiftError, } from './utils';
12
12
  var _RcDownshift = memo(forwardRef(function (inProps, ref) {
13
13
  var props = useThemeProps({ props: inProps, name: 'RcDownshift' });
14
- var _a = props.itemToString, itemToString = _a === void 0 ? DEFAULT_GET_OPTION_LABEL : _a, _b = props.keyToChips, keyToChips = _b === void 0 ? DEFAULT_KEY_TO_CHIPS : _b, _c = props.limitOfFreeChips, limitOfFreeChips = _c === void 0 ? DEFAULT_LIMIT_CHIPS : _c, minRowHeight = props.minRowHeight, suggestionItems = props.suggestionItems, messageRef = props.messageRef, MenuItem = props.MenuItem, inputLabel = props.inputLabel, nameError = props.nameError, maxLength = props.maxLength, InputItem = props.InputItem, emailError = props.emailError, autoSwitchEmail = props.autoSwitchEmail, enableFreeChips = props.enableFreeChips, inputPlaceholder = props.inputPlaceholder, errorSelectedItems = props.errorSelectedItems, enableAutoTransform = props.enableAutoTransform, allowPlainHelperText = props.allowPlainHelperText, TextFieldProps = props.TextFieldProps, selectedItemsProp = props.selectedItems, automationId = props.automationId, screenReader = props.screenReader, onSelectChange = props.onSelectChange, variant = props.variant, groupExpanded = props.groupExpanded, _d = props.groupVariant, groupVariant = _d === void 0 ? 'normal' : _d, getExpandIconProps = props.getExpandIconProps, groupBy = props.groupBy, _e = props.value, valueProp = _e === void 0 ? selectedItemsProp : _e, _f = props.autoHighlight, autoHighlight = _f === void 0 ? true : _f, _g = props.fullWidth, fullWidth = _g === void 0 ? true : _g, _h = props.clearBtn, clearBtn = _h === void 0 ? false : _h, _j = props.toggleButton, toggleButton = _j === void 0 ? false : _j, _k = props.multiple, multiple = _k === void 0 ? false : _k, clearButtonProps = props.clearButtonProps, onClear = props.onClear, ToggleButtonProps = props.ToggleButtonProps, inputValueProp = props.inputValue, onKeyDownProp = props.onKeyDown, helperTextProp = props.helperText, options = props.options, openOnFocus = props.openOnFocus, _l = props.getOptionLabel, getOptionLabel = _l === void 0 ? itemToString : _l, renderInput = props.renderInput, _m = props.label, label = _m === void 0 ? inputLabel : _m, _o = props.inputRef, inputRefProp = _o === void 0 ? messageRef : _o, _p = props.error, error = _p === void 0 ? nameError : _p, _q = props.placeholder, placeholder = _q === void 0 ? inputPlaceholder : _q, _r = props.freeSolo, freeSolo = _r === void 0 ? enableFreeChips : _r, _s = props.keyToTags, keyToTags = _s === void 0 ? keyToChips : _s, _t = props.maxFreeSolo, maxFreeSolo = _t === void 0 ? limitOfFreeChips : _t, SuggestionListProps = props.SuggestionListProps, _u = props.autoSelect, autoSelect = _u === void 0 ? enableAutoTransform : _u, PopperProps = props.PopperProps, initialIsOpen = props.initialIsOpen, disabled = props.disabled, requiredProp = props.required, _v = props.defaultIsOpen, defaultIsOpen = _v === void 0 ? openOnFocus : _v, _w = props.disableCloseOnSelect, disableCloseOnSelect = _w === void 0 ? defaultIsOpen : _w, _x = props.onChange, onChangeProp = _x === void 0 ? onSelectChange : _x, onInputChangeProp = props.onInputChange, onMaxFreeSolo = props.onMaxFreeSolo, FormHelperTextPropsProp = props.FormHelperTextProps, action = props.action, filterOptions = props.filterOptions, renderOption = props.renderOption, renderTags = props.renderTags, getOptionDisabled = props.getOptionDisabled, renderGroup = props.renderGroup, onGroupExpanded = props.onGroupExpanded, renderNoOptions = props.renderNoOptions, InputPropsProp = props.InputProps, debug = props.debug, disabledItemsHighlightable = props.disabledItemsHighlightable, openProp = props.open, onOpen = props.onOpen, onClose = props.onClose, rest = __rest(props, ["itemToString", "keyToChips", "limitOfFreeChips", "minRowHeight", "suggestionItems", "messageRef", "MenuItem", "inputLabel", "nameError", "maxLength", "InputItem", "emailError", "autoSwitchEmail", "enableFreeChips", "inputPlaceholder", "errorSelectedItems", "enableAutoTransform", "allowPlainHelperText", "TextFieldProps", "selectedItems", "automationId", "screenReader", "onSelectChange", "variant", "groupExpanded", "groupVariant", "getExpandIconProps", "groupBy", "value", "autoHighlight", "fullWidth", "clearBtn", "toggleButton", "multiple", "clearButtonProps", "onClear", "ToggleButtonProps", "inputValue", "onKeyDown", "helperText", "options", "openOnFocus", "getOptionLabel", "renderInput", "label", "inputRef", "error", "placeholder", "freeSolo", "keyToTags", "maxFreeSolo", "SuggestionListProps", "autoSelect", "PopperProps", "initialIsOpen", "disabled", "required", "defaultIsOpen", "disableCloseOnSelect", "onChange", "onInputChange", "onMaxFreeSolo", "FormHelperTextProps", "action", "filterOptions", "renderOption", "renderTags", "getOptionDisabled", "renderGroup", "onGroupExpanded", "renderNoOptions", "InputProps", "debug", "disabledItemsHighlightable", "open", "onOpen", "onClose"]);
14
+ var theme = useTheme();
15
+ var _a = props.itemToString, itemToString = _a === void 0 ? DEFAULT_GET_OPTION_LABEL : _a, _b = props.keyToChips, keyToChips = _b === void 0 ? DEFAULT_KEY_TO_CHIPS : _b, _c = props.limitOfFreeChips, limitOfFreeChips = _c === void 0 ? DEFAULT_LIMIT_CHIPS : _c, minRowHeight = props.minRowHeight, suggestionItems = props.suggestionItems, messageRef = props.messageRef, MenuItem = props.MenuItem, inputLabel = props.inputLabel, nameError = props.nameError, maxLength = props.maxLength, InputItem = props.InputItem, emailError = props.emailError, autoSwitchEmail = props.autoSwitchEmail, enableFreeChips = props.enableFreeChips, inputPlaceholder = props.inputPlaceholder, errorSelectedItems = props.errorSelectedItems, enableAutoTransform = props.enableAutoTransform, allowPlainHelperText = props.allowPlainHelperText, TextFieldProps = props.TextFieldProps, selectedItemsProp = props.selectedItems, automationId = props.automationId, screenReader = props.screenReader, onSelectChange = props.onSelectChange, variant = props.variant, groupExpanded = props.groupExpanded, groupDefaultExpanded = props.groupDefaultExpanded, _d = props.groupVariant, groupVariant = _d === void 0 ? 'normal' : _d, getExpandIconProps = props.getExpandIconProps, groupBy = props.groupBy, _e = props.value, valueProp = _e === void 0 ? selectedItemsProp : _e, _f = props.autoHighlight, autoHighlight = _f === void 0 ? true : _f, _g = props.fullWidth, fullWidth = _g === void 0 ? true : _g, _h = props.clearBtn, clearBtn = _h === void 0 ? false : _h, _j = props.toggleButton, toggleButton = _j === void 0 ? false : _j, _k = props.multiple, multiple = _k === void 0 ? false : _k, clearButtonProps = props.clearButtonProps, onClear = props.onClear, ToggleButtonProps = props.ToggleButtonProps, inputValueProp = props.inputValue, onKeyDownProp = props.onKeyDown, helperTextProp = props.helperText, options = props.options, openOnFocus = props.openOnFocus, _l = props.getOptionLabel, getOptionLabel = _l === void 0 ? itemToString : _l, renderInput = props.renderInput, _m = props.label, label = _m === void 0 ? inputLabel : _m, _o = props.inputRef, inputRefProp = _o === void 0 ? messageRef : _o, _p = props.error, error = _p === void 0 ? nameError : _p, _q = props.placeholder, placeholder = _q === void 0 ? inputPlaceholder : _q, _r = props.freeSolo, freeSolo = _r === void 0 ? enableFreeChips : _r, _s = props.keyToTags, keyToTags = _s === void 0 ? keyToChips : _s, _t = props.maxFreeSolo, maxFreeSolo = _t === void 0 ? limitOfFreeChips : _t, SuggestionListProps = props.SuggestionListProps, _u = props.autoSelect, autoSelect = _u === void 0 ? enableAutoTransform : _u, PopperProps = props.PopperProps, initialIsOpen = props.initialIsOpen, disabled = props.disabled, requiredProp = props.required, _v = props.defaultIsOpen, defaultIsOpen = _v === void 0 ? openOnFocus : _v, _w = props.disableCloseOnSelect, disableCloseOnSelect = _w === void 0 ? defaultIsOpen : _w, _x = props.onChange, onChangeProp = _x === void 0 ? onSelectChange : _x, onInputChangeProp = props.onInputChange, onMaxFreeSolo = props.onMaxFreeSolo, FormHelperTextPropsProp = props.FormHelperTextProps, action = props.action, filterOptions = props.filterOptions, renderOption = props.renderOption, renderTags = props.renderTags, getOptionDisabled = props.getOptionDisabled, renderGroup = props.renderGroup, onGroupExpanded = props.onGroupExpanded, renderNoOptions = props.renderNoOptions, InputPropsProp = props.InputProps, debug = props.debug, disabledItemsHighlightable = props.disabledItemsHighlightable, openProp = props.open, onOpen = props.onOpen, onClose = props.onClose, focused = props.focused, color = props.color, rest = __rest(props, ["itemToString", "keyToChips", "limitOfFreeChips", "minRowHeight", "suggestionItems", "messageRef", "MenuItem", "inputLabel", "nameError", "maxLength", "InputItem", "emailError", "autoSwitchEmail", "enableFreeChips", "inputPlaceholder", "errorSelectedItems", "enableAutoTransform", "allowPlainHelperText", "TextFieldProps", "selectedItems", "automationId", "screenReader", "onSelectChange", "variant", "groupExpanded", "groupDefaultExpanded", "groupVariant", "getExpandIconProps", "groupBy", "value", "autoHighlight", "fullWidth", "clearBtn", "toggleButton", "multiple", "clearButtonProps", "onClear", "ToggleButtonProps", "inputValue", "onKeyDown", "helperText", "options", "openOnFocus", "getOptionLabel", "renderInput", "label", "inputRef", "error", "placeholder", "freeSolo", "keyToTags", "maxFreeSolo", "SuggestionListProps", "autoSelect", "PopperProps", "initialIsOpen", "disabled", "required", "defaultIsOpen", "disableCloseOnSelect", "onChange", "onInputChange", "onMaxFreeSolo", "FormHelperTextProps", "action", "filterOptions", "renderOption", "renderTags", "getOptionDisabled", "renderGroup", "onGroupExpanded", "renderNoOptions", "InputProps", "debug", "disabledItemsHighlightable", "open", "onOpen", "onClose", "focused", "color"]);
15
16
  var _y = __read(useState('bottom'), 2), position = _y[0], setPosition = _y[1];
16
17
  var innerInputRef = useRef(null);
17
18
  var textFieldRef = useRef(null);
@@ -23,6 +24,7 @@ var _RcDownshift = memo(forwardRef(function (inProps, ref) {
23
24
  useDownshiftError({ isNew: isNew, MenuItem: MenuItem, InputItem: InputItem });
24
25
  var required = requiredProp || (TextFieldProps === null || TextFieldProps === void 0 ? void 0 : TextFieldProps.required);
25
26
  var _z = useDownshift({
27
+ focused: focused,
26
28
  open: openProp,
27
29
  variant: variant,
28
30
  onOpen: onOpen,
@@ -34,6 +36,7 @@ var _RcDownshift = memo(forwardRef(function (inProps, ref) {
34
36
  inputValue: inputValueProp,
35
37
  getOptionDisabled: getOptionDisabled,
36
38
  groupExpanded: groupVariant === 'normal' ? true : groupExpanded,
39
+ groupDefaultExpanded: groupDefaultExpanded,
37
40
  getExpandIconProps: getExpandIconProps,
38
41
  options: suggestionItems || options,
39
42
  freeSolo: freeSolo,
@@ -59,7 +62,7 @@ var _RcDownshift = memo(forwardRef(function (inProps, ref) {
59
62
  onKeyDown: onKeyDownProp,
60
63
  disabledItemsHighlightable: disabledItemsHighlightable,
61
64
  onGroupExpanded: onGroupExpanded,
62
- }), focusInput = _z.focusInput, optionItems = _z.optionItems, optionsGroupList = _z.optionsGroupList, selectedItems = _z.selectedItems, highlightedIndex = _z.highlightedIndex, getToggleButtonProps = _z.getToggleButtonProps, getTagProps = _z.getTagProps, getTagListBoxProps = _z.getTagListBoxProps, getMenuProps = _z.getMenuProps, getPopperProps = _z.getPopperProps, getInputProps = _z.getInputProps, getInputAriaProps = _z.getInputAriaProps, getLabelProps = _z.getLabelProps, getItemProps = _z.getItemProps, isOpen = _z.isOpen, inputValue = _z.inputValue, isTagsFocus = _z.isTagsFocus, activeIndex = _z.activeIndex, setActiveIndex = _z.setActiveIndex, setHighlightedIndex = _z.setHighlightedIndex, onInputChange = _z.onInputChange, keepHighlightedIndex = _z.keepHighlightedIndex, changeHighlightedIndexReason = _z.changeHighlightedIndexReason, closeMenu = _z.closeMenu, openMenu = _z.openMenu, reset = _z.reset, getClearButtonProps = _z.getClearButtonProps, noOptionItem = _z.noOptionItem, getNoOptionsProps = _z.getNoOptionsProps, isKeepHighlightedIndex = _z.isKeepHighlightedIndex;
65
+ }), focusInput = _z.focusInput, optionItems = _z.optionItems, optionsGroupList = _z.optionsGroupList, selectedItems = _z.selectedItems, highlightedIndex = _z.highlightedIndex, getToggleButtonProps = _z.getToggleButtonProps, getTagProps = _z.getTagProps, getTagListBoxProps = _z.getTagListBoxProps, getMenuProps = _z.getMenuProps, getPopperProps = _z.getPopperProps, getInputProps = _z.getInputProps, getInputAriaProps = _z.getInputAriaProps, getLabelProps = _z.getLabelProps, getItemProps = _z.getItemProps, isOpen = _z.isOpen, inputValue = _z.inputValue, isTagsFocus = _z.isTagsFocus, activeIndex = _z.activeIndex, setActiveIndex = _z.setActiveIndex, setHighlightedIndex = _z.setHighlightedIndex, onInputChange = _z.onInputChange, keepHighlightedIndex = _z.keepHighlightedIndex, changeHighlightedIndexReason = _z.changeHighlightedIndexReason, closeMenu = _z.closeMenu, openMenu = _z.openMenu, reset = _z.reset, getClearButtonProps = _z.getClearButtonProps, noOptionItem = _z.noOptionItem, getNoOptionsProps = _z.getNoOptionsProps, isKeepHighlightedIndex = _z.isKeepHighlightedIndex, isFocused = _z.isFocused;
63
66
  var open = Boolean((isOpen || noOptionItem) && textFieldRef.current);
64
67
  var _0 = getInputProps(), onBlur = _0.onBlur, InputProps = __rest(_0, ["onBlur"]);
65
68
  var helperText = isNew
@@ -85,6 +88,7 @@ var _RcDownshift = memo(forwardRef(function (inProps, ref) {
85
88
  }
86
89
  }
87
90
  var toTextFieldRef = useForkRef(textFieldRef, ref);
91
+ var colorHex = useMemo(function () { return (color ? getParsePaletteColor(color)({ theme: theme }) : undefined); }, [color, theme]);
88
92
  var startAdornment = (function () {
89
93
  if (variant === 'autocomplete') {
90
94
  return undefined;
@@ -99,7 +103,7 @@ var _RcDownshift = memo(forwardRef(function (inProps, ref) {
99
103
  if (selectedItem.error) {
100
104
  oneOfTagError = true;
101
105
  }
102
- return tagProps;
106
+ return __assign(__assign({}, tagProps), { color: colorHex });
103
107
  };
104
108
  return renderTags
105
109
  ? renderTags(selectedItems, getCustomizedTagProps)
@@ -120,9 +124,14 @@ var _RcDownshift = memo(forwardRef(function (inProps, ref) {
120
124
  } })));
121
125
  });
122
126
  })();
127
+ var isDownshiftFocused = focused !== null && focused !== void 0 ? focused : (isTagsFocus || isFocused ? true : undefined);
123
128
  var endAdornment = (toggleButton || clearBtn) && (React.createElement(EndAdornment, null,
124
129
  clearBtn && (React.createElement(ClearIconButton, __assign({}, getClearButtonProps(clearButtonProps)))),
125
- toggleButton && (React.createElement(ArrowDownButton, __assign({ variant: "plain", "aria-hidden": true, color: error ? 'danger.f02' : 'neutral.f04', size: "large", symbol: isOpen ? ArrowUp : ArrowDown }, getToggleButtonProps(ToggleButtonProps))))));
130
+ toggleButton && (React.createElement(ArrowDownButton, __assign({ variant: "plain", "aria-hidden": true, color: isDownshiftFocused
131
+ ? color || 'interactive.f01'
132
+ : error
133
+ ? 'danger.f02'
134
+ : 'neutral.f04', size: "large", symbol: isOpen ? ArrowUp : ArrowDown }, getToggleButtonProps(ToggleButtonProps))))));
126
135
  var _1 = (function () {
127
136
  var _a = InputPropsProp || {}, classes = _a.classes, restInputPropsProp = __rest(_a, ["classes"]);
128
137
  var toClasses = combineClasses(classes, RcDownshiftInputClasses);
@@ -154,7 +163,7 @@ var _RcDownshift = memo(forwardRef(function (inProps, ref) {
154
163
  (_a = popperRef.current) === null || _a === void 0 ? void 0 : _a.update();
155
164
  });
156
165
  return (React.createElement(React.Fragment, null,
157
- React.createElement(StyledTextField, __assign({ renderInput: renderInput, hasTags: hasTags, ref: toTextFieldRef, inputRef: inputRef, "data-test-automation-id": automationId, fullWidth: fullWidth, placeholder: !hasTags ? placeholder : undefined, label: label, focused: isTagsFocus ? true : undefined, disabled: disabled, required: required,
166
+ React.createElement(StyledTextField, __assign({ renderInput: renderInput, hasTags: hasTags, ref: toTextFieldRef, inputRef: inputRef, "data-test-automation-id": automationId, fullWidth: fullWidth, placeholder: !hasTags ? placeholder : undefined, label: label, focused: isDownshiftFocused, disabled: disabled, required: required, color: color,
158
167
  // * if below one of tag is error, that main downshift default will be error
159
168
  error: error !== null && error !== void 0 ? error : oneOfTagError, FormHelperTextProps: FormHelperTextProps, InputProps: TextFieldInputProps, helperText: helperText }, combineProps({
160
169
  InputLabelProps: getLabelProps(),
@@ -286,5 +295,5 @@ var RcDownshift = styled(withDeprecatedCheck(_RcDownshift, [
286
295
  RcDownshift.defaultProps = {};
287
296
  RcDownshift.displayName = 'RcDownshift';
288
297
  var ExportType = RcDownshift;
289
- export { ExportType as RcDownshift, RcDownshiftDefaultFilterOptions };
298
+ export { ExportType as RcDownshift, RcDownshiftDefaultFilterOptions, RcDownshiftInput, };
290
299
  var templateObject_1;
@@ -6,7 +6,7 @@ import ArrowDown2 from '../../../icon/ArrowDown2';
6
6
  import { RcBox } from '../../Box';
7
7
  import { RcIconButton } from '../../Buttons/IconButton';
8
8
  import { RcMenuItem } from '../../Menu/MenuItem';
9
- import { StyledMenuListPadding } from '../../VirtualizedMenu/styles';
9
+ import { menuListBoundaryPadding, StyledMenuListPadding, } from '../../VirtualizedMenu/styles';
10
10
  import { useDynamicHeight, useHighlightScroll, Virtuoso, } from '../../Virtuoso';
11
11
  import { SuggestionListStyle } from './styles';
12
12
  import { RcSuggestionListClasses } from './utils';
@@ -45,8 +45,13 @@ var SuggestionList = forwardRef(function (inProps, ref) {
45
45
  return __generator(this, function (_c) {
46
46
  switch (_c.label) {
47
47
  case 0:
48
+ if (location.index === 0 && padding !== undefined) {
49
+ location = __assign(__assign({}, location), { offset: -(typeof padding === 'number'
50
+ ? padding
51
+ : menuListBoundaryPadding) });
52
+ }
48
53
  (_a = vlRef.current) === null || _a === void 0 ? void 0 : _a.scrollToIndex(location);
49
- toIndex = typeof location === 'number' ? location : location.index;
54
+ toIndex = location.index;
50
55
  return [4 /*yield*/, sleep(0)];
51
56
  case 1:
52
57
  _c.sent();
@@ -139,12 +144,13 @@ var SuggestionList = forwardRef(function (inProps, ref) {
139
144
  expandIconProps && (React.createElement(RcIconButton, __assign({}, expandIconProps, { symbol: ArrowDown2 })))));
140
145
  };
141
146
  var PaddingComponent = useMemo(function () {
142
- return padding !== undefined
147
+ var paddingValue = padding !== undefined && itemCount > 0
143
148
  ? typeof padding === 'number'
144
- ? function () { return React.createElement(StyledMenuListPadding, { height: padding }); }
145
- : StyledMenuListPadding
146
- : undefined;
147
- }, [padding]);
149
+ ? padding
150
+ : menuListBoundaryPadding
151
+ : 0;
152
+ return function () { return React.createElement(StyledMenuListPadding, { height: paddingValue }); };
153
+ }, [itemCount, padding]);
148
154
  var components = useMemo(function () {
149
155
  return __assign({ List: List, Header: PaddingComponent, Footer: PaddingComponent }, componentsProp);
150
156
  }, [componentsProp, PaddingComponent]);
@@ -1 +1,2 @@
1
1
  export * from './SuggestionListUtils';
2
+ export * from './useSuggestionList';
@@ -0,0 +1,237 @@
1
+ import { __read, __rest } from "tslib";
2
+ import { useMemo, useRef } from 'react';
3
+ import uniqueId from 'lodash/uniqueId';
4
+ import { useControlled } from '@material-ui/core/utils';
5
+ import { combineProps, useForceUpdate, useKeyboardMoveFocus, useResultRef, } from '../../../../foundation';
6
+ import { DEFAULT_GET_OPTION_LABEL, isItemCanSelected, } from '../../utils';
7
+ import { useDownshiftGroup } from '../../utils/useDownshiftGroup';
8
+ var DEFAULT_HIGHLIGHTED_INDEX = -1;
9
+ var componentName = 'useSuggestionList';
10
+ /**
11
+ * provide suggestion list with search function and expandable group with virtualized list
12
+ */
13
+ export var useSuggestionList = function (_a) {
14
+ var inputValueProp = _a.inputValue, _b = _a.getOptionLabel, getOptionLabel = _b === void 0 ? DEFAULT_GET_OPTION_LABEL : _b, filterOptions = _a.filterOptions, disabledItemsHighlightable = _a.disabledItemsHighlightable, options = _a.options, onInputChangeProp = _a.onInputChange, inputRef = _a.inputRef, onKeyDownProp = _a.onKeyDown, onSelect = _a.onSelect, onClear = _a.onClear, getOptionDisabled = _a.getOptionDisabled, groupBy = _a.groupBy, onGroupExpanded = _a.onGroupExpanded, groupVariant = _a.groupVariant, groupExpanded = _a.groupExpanded, groupDefaultExpanded = _a.groupDefaultExpanded, getExpandIconProps = _a.getExpandIconProps;
15
+ var _c = __read(useControlled({
16
+ controlled: inputValueProp,
17
+ default: '',
18
+ name: componentName,
19
+ }), 2), inputValue = _c[0], setInputValue = _c[1];
20
+ var updateInputValue = function (newValue) {
21
+ onInputChangeProp === null || onInputChangeProp === void 0 ? void 0 : onInputChangeProp(newValue);
22
+ setInputValue(newValue);
23
+ };
24
+ var focusInput = function () { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); };
25
+ var suggestionListId = useResultRef(function () {
26
+ return uniqueId("suggestion-list-");
27
+ }).current;
28
+ // * use -2 for us know that is init state, for recalculate defaultHighlightedIndex
29
+ var highlightedIndexRef = useRef(DEFAULT_HIGHLIGHTED_INDEX);
30
+ var changeHighlightedIndexReason = useRef();
31
+ var forceUpdate = useForceUpdate();
32
+ var filteredResult = useMemo(function () {
33
+ var getFilteredItems = function (items) {
34
+ if (filterOptions) {
35
+ return filterOptions(items, {
36
+ inputValue: inputValue,
37
+ getOptionLabel: getOptionLabel,
38
+ selectedItems: [],
39
+ });
40
+ }
41
+ return items;
42
+ };
43
+ // * only when isOpen calculate the filtered result
44
+ var results = getFilteredItems(options);
45
+ return results;
46
+ }, [filterOptions, getOptionLabel, inputValue, options]);
47
+ var _d = useDownshiftGroup({
48
+ groupBy: groupBy,
49
+ options: options,
50
+ filteredResult: filteredResult,
51
+ getExpandIconProps: getExpandIconProps,
52
+ groupExpanded: groupExpanded,
53
+ groupDefaultExpanded: groupDefaultExpanded,
54
+ onGroupExpanded: onGroupExpanded,
55
+ groupVariant: groupVariant,
56
+ getOptionDisabled: getOptionDisabled,
57
+ id: suggestionListId,
58
+ }), groupedResult = _d.groupedResult, handleGroupExpandedChange = _d.handleGroupExpandedChange, optionsGroupList = _d.optionsGroupList;
59
+ var optionItems = groupBy ? groupedResult : filteredResult;
60
+ var setHighlightedIndex = function (index, _a) {
61
+ var _b = _a.reRender, reRender = _b === void 0 ? false : _b, reason = _a.reason;
62
+ changeHighlightedIndexReason.current = reason;
63
+ if (highlightedIndexRef.current !== index) {
64
+ highlightedIndexRef.current = index;
65
+ if (reRender)
66
+ forceUpdate();
67
+ }
68
+ };
69
+ var handleInputChange = function (newValue) {
70
+ if (inputValue !== newValue) {
71
+ setHighlightedIndex(DEFAULT_HIGHLIGHTED_INDEX, { reason: 'auto' });
72
+ updateInputValue(newValue);
73
+ }
74
+ return false;
75
+ };
76
+ var getIsItemCanSelected = function (item) {
77
+ return ((!!item && item.freeSolo) ||
78
+ (isItemCanSelected(item) && !(getOptionDisabled === null || getOptionDisabled === void 0 ? void 0 : getOptionDisabled(item))));
79
+ };
80
+ var selectItemFn = function (e, selectedItem) {
81
+ if (getIsItemCanSelected(selectedItem)) {
82
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(e, selectedItem);
83
+ return true;
84
+ }
85
+ return false;
86
+ };
87
+ var resetState = function () {
88
+ if (inputRef.current && inputRef.current.value.length > 0) {
89
+ updateInputValue('');
90
+ }
91
+ };
92
+ var reset = function (isFocus) {
93
+ resetState();
94
+ onInputChangeProp === null || onInputChangeProp === void 0 ? void 0 : onInputChangeProp('');
95
+ if (isFocus)
96
+ focusInput();
97
+ };
98
+ var onKeyFocusedIndexHandle = useKeyboardMoveFocus({
99
+ options: optionItems,
100
+ focusedIndexRef: highlightedIndexRef,
101
+ infinite: true,
102
+ onFocusedIndexChange: function (event, toIndex) {
103
+ setHighlightedIndex(toIndex, { reason: 'keyboard', reRender: true });
104
+ event === null || event === void 0 ? void 0 : event.preventDefault();
105
+ },
106
+ getOptionDisabled: disabledItemsHighlightable
107
+ ? undefined
108
+ : function (child) {
109
+ return !getIsItemCanSelected(child);
110
+ },
111
+ }).onKeyFocusedIndexHandle;
112
+ var getItemProps = function (_a) {
113
+ var item = _a.item, index = _a.index, itemRest = __rest(_a, ["item", "index"]);
114
+ return combineProps({
115
+ id: suggestionListId + "-option-" + index,
116
+ role: 'option',
117
+ onClick: function (e) {
118
+ selectItemFn(e, item);
119
+ },
120
+ onMouseDown: function (e) {
121
+ e.preventDefault();
122
+ e.stopPropagation();
123
+ },
124
+ onMouseOver: function () {
125
+ if (highlightedIndexRef.current !== index) {
126
+ setHighlightedIndex(index, { reason: 'mouse', reRender: true });
127
+ }
128
+ },
129
+ }, itemRest);
130
+ };
131
+ var getInputProps = function (props) {
132
+ return combineProps({
133
+ id: suggestionListId + "-input",
134
+ autoComplete: 'off',
135
+ onChange: function (e) {
136
+ var changeValue = e.target.value;
137
+ handleInputChange(changeValue);
138
+ },
139
+ onKeyDown: function (e) {
140
+ var _a;
141
+ onKeyDownProp === null || onKeyDownProp === void 0 ? void 0 : onKeyDownProp(e, highlightedIndexRef.current);
142
+ var highlightedIndex = highlightedIndexRef.current;
143
+ switch (e.key) {
144
+ case 'F10':
145
+ if (e.shiftKey) {
146
+ var currOption = optionItems[highlightedIndex];
147
+ var currentGroup = currOption.group;
148
+ if (currentGroup && currentGroup.options.length > 1) {
149
+ handleGroupExpandedChange(currentGroup.group);
150
+ }
151
+ }
152
+ break;
153
+ case 'Enter':
154
+ if (e.which === 229)
155
+ return;
156
+ if (highlightedIndex !== DEFAULT_HIGHLIGHTED_INDEX) {
157
+ var currOption = optionItems[highlightedIndex];
158
+ var isGroupTitle = currOption === ((_a = currOption.group) === null || _a === void 0 ? void 0 : _a.options[0]);
159
+ if (isGroupTitle) {
160
+ var onClick = currOption.group.getExpandIconProps().onClick;
161
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
162
+ }
163
+ else {
164
+ selectItemFn(e, currOption);
165
+ }
166
+ e.stopPropagation();
167
+ }
168
+ // always preventDefault for not inset all enter into textarea
169
+ e.preventDefault();
170
+ break;
171
+ default:
172
+ onKeyFocusedIndexHandle(e);
173
+ break;
174
+ }
175
+ },
176
+ }, props);
177
+ };
178
+ var getInputAriaProps = function (props) {
179
+ return combineProps({
180
+ // * provide for when container click focus on input
181
+ onContainerClick: focusInput,
182
+ role: 'combobox',
183
+ 'aria-autocomplete': 'list',
184
+ // TODO
185
+ 'aria-expanded': true,
186
+ 'aria-haspopup': true,
187
+ 'aria-owns': suggestionListId + "-menu",
188
+ 'aria-activedescendant': highlightedIndexRef.current > -1
189
+ ? suggestionListId + "-option-" + highlightedIndexRef.current
190
+ : undefined,
191
+ }, props);
192
+ };
193
+ var getLabelProps = function (props) {
194
+ return combineProps({
195
+ htmlFor: suggestionListId + "-input",
196
+ id: suggestionListId + "-label",
197
+ }, props);
198
+ };
199
+ var getMenuProps = function (restMenuProps) {
200
+ return combineProps({
201
+ 'aria-labelledby': suggestionListId + "-label",
202
+ id: suggestionListId + "-menu",
203
+ role: 'listbox',
204
+ }, restMenuProps);
205
+ };
206
+ var getClearButtonProps = function (props) {
207
+ return combineProps({
208
+ id: suggestionListId + "-clear-button",
209
+ onClick: function (e) {
210
+ onClear === null || onClear === void 0 ? void 0 : onClear(e);
211
+ reset(true);
212
+ },
213
+ }, props);
214
+ };
215
+ var resultObj = {
216
+ focusInput: focusInput,
217
+ getClearButtonProps: getClearButtonProps,
218
+ getLabelProps: getLabelProps,
219
+ getMenuProps: getMenuProps,
220
+ getInputProps: getInputProps,
221
+ getInputAriaProps: getInputAriaProps,
222
+ getItemProps: getItemProps,
223
+ highlightedIndex: highlightedIndexRef.current,
224
+ optionItems: optionItems,
225
+ inputValue: inputValue,
226
+ onInputChange: handleInputChange,
227
+ setHighlightedIndex: setHighlightedIndex,
228
+ changeHighlightedIndexReason: changeHighlightedIndexReason.current,
229
+ reset: reset,
230
+ forceUpdate: forceUpdate,
231
+ optionsGroupList: optionsGroupList,
232
+ /** current suggestion list id */
233
+ id: suggestionListId,
234
+ };
235
+ changeHighlightedIndexReason.current = undefined;
236
+ return resultObj;
237
+ };
@@ -9,14 +9,32 @@ export var isItemCanSelected = function (item) {
9
9
  export var DEFAULT_KEY_TO_CHIPS = [';', ',', '\\n'];
10
10
  export var DEFAULT_LIMIT_CHIPS = 20;
11
11
  export var DEFAULT_GET_OPTION_LABEL = function (item) {
12
- return item.label || '';
12
+ return (item === null || item === void 0 ? void 0 : item.label) || '';
13
13
  };
14
14
  export var RcDownshiftDefaultRenderNoOptions = function (getNoOptionsProps) {
15
15
  return (React.createElement(RcMenuItem, __assign({ component: "div" }, getNoOptionsProps()), "No Options"));
16
16
  };
17
+ /**
18
+ * default downshift filter options method, use with `variant="tags"`
19
+ *
20
+ * - filter options by input value and selected items
21
+ */
17
22
  export var RcDownshiftDefaultFilterOptions = function (options, _a) {
18
23
  var inputValue = _a.inputValue, getOptionLabel = _a.getOptionLabel, selectedItems = _a.selectedItems;
19
24
  return options.filter(function (item) {
20
25
  return selectedItems.indexOf(item) < 0 && (getOptionLabel === null || getOptionLabel === void 0 ? void 0 : getOptionLabel(item).toLowerCase().startsWith((inputValue === null || inputValue === void 0 ? void 0 : inputValue.toLowerCase()) || ''));
21
26
  });
22
27
  };
28
+ /**
29
+ * default downshift filter options method, use with `variant="autocomplete"`
30
+ *
31
+ * - when open menu and not change value, that will return whole options
32
+ * - only filter options by input value when have input value changed
33
+ */
34
+ export var RcAutocompleteDefaultFilterOptions = function (options, _a) {
35
+ var inputValue = _a.inputValue, getOptionLabel = _a.getOptionLabel, inputChanged = _a.inputChanged;
36
+ if (!inputChanged) {
37
+ return options;
38
+ }
39
+ return options.filter(function (item) { return getOptionLabel === null || getOptionLabel === void 0 ? void 0 : getOptionLabel(item).toLowerCase().startsWith((inputValue === null || inputValue === void 0 ? void 0 : inputValue.toLowerCase()) || ''); });
40
+ };
@@ -15,32 +15,38 @@ function stringArrToRegExp(keyToTags) {
15
15
  }
16
16
  var componentName = 'RcDownshift';
17
17
  export var useDownshift = function (_a) {
18
- var multipleProp = _a.multiple, variant = _a.variant, labelProp = _a.label, inputValueProp = _a.inputValue, _b = _a.getOptionLabel, getOptionLabel = _b === void 0 ? DEFAULT_GET_OPTION_LABEL : _b, _c = _a.keyToTags, keyToTags = _c === void 0 ? DEFAULT_KEY_TO_CHIPS : _c, filterOptions = _a.filterOptions, disabledItemsHighlightable = _a.disabledItemsHighlightable, options = _a.options, freeSolo = _a.freeSolo, onInputChangeProp = _a.onInputChange, maxFreeSolo = _a.maxFreeSolo, onMaxFreeSolo = _a.onMaxFreeSolo, openOnFocus = _a.openOnFocus, disableCloseOnSelect = _a.disableCloseOnSelect, initialIsOpen = _a.initialIsOpen, autoSelect = _a.autoSelect, inputContainerRef = _a.inputContainerRef, inputRef = _a.inputRef, wrapperRef = _a.wrapperRef, onKeyDownProp = _a.onKeyDown, onSelectChange = _a.onChange, _d = _a.value, selectedItemsProp = _d === void 0 ? [] : _d, disabled = _a.disabled, renderNoOptions = _a.renderNoOptions, onClear = _a.onClear, autoHighlight = _a.autoHighlight, getOptionDisabled = _a.getOptionDisabled, addNoOptionItem = _a.addNoOptionItem, groupBy = _a.groupBy, onGroupExpanded = _a.onGroupExpanded, groupVariant = _a.groupVariant, groupExpanded = _a.groupExpanded, getExpandIconProps = _a.getExpandIconProps, required = _a.required, openProp = _a.open, onOpen = _a.onOpen, onClose = _a.onClose;
18
+ var multipleProp = _a.multiple, variant = _a.variant, labelProp = _a.label, inputValueProp = _a.inputValue, _b = _a.getOptionLabel, getOptionLabel = _b === void 0 ? DEFAULT_GET_OPTION_LABEL : _b, _c = _a.keyToTags, keyToTags = _c === void 0 ? DEFAULT_KEY_TO_CHIPS : _c, filterOptions = _a.filterOptions, disabledItemsHighlightable = _a.disabledItemsHighlightable, options = _a.options, freeSolo = _a.freeSolo, onInputChangeProp = _a.onInputChange, maxFreeSolo = _a.maxFreeSolo, onMaxFreeSolo = _a.onMaxFreeSolo, openOnFocus = _a.openOnFocus, disableCloseOnSelect = _a.disableCloseOnSelect, initialIsOpen = _a.initialIsOpen, autoSelect = _a.autoSelect, inputContainerRef = _a.inputContainerRef, inputRef = _a.inputRef, wrapperRef = _a.wrapperRef, onKeyDownProp = _a.onKeyDown, onSelectChange = _a.onChange, _d = _a.value, selectedItemsProp = _d === void 0 ? [] : _d, disabled = _a.disabled, renderNoOptions = _a.renderNoOptions, onClear = _a.onClear, autoHighlight = _a.autoHighlight, getOptionDisabled = _a.getOptionDisabled, addNoOptionItem = _a.addNoOptionItem, groupBy = _a.groupBy, onGroupExpanded = _a.onGroupExpanded, groupVariant = _a.groupVariant, groupExpanded = _a.groupExpanded, groupDefaultExpanded = _a.groupDefaultExpanded, getExpandIconProps = _a.getExpandIconProps, required = _a.required, openProp = _a.open, onOpen = _a.onOpen, onClose = _a.onClose, focusedProp = _a.focused;
19
19
  var isAutocomplete = variant === 'autocomplete';
20
20
  // * when that is autocomplete, that will never be multiple
21
21
  var multiple = isAutocomplete ? false : multipleProp;
22
22
  var isSelectedFromAutocompleteRef = useRef(false);
23
+ var isInputValueChangedRef = useRef(false);
23
24
  var _e = __read(useControlled({
25
+ controlled: focusedProp,
26
+ default: false,
27
+ name: componentName,
28
+ }), 2), isFocused = _e[0], setIsFocused = _e[1];
29
+ var _f = __read(useControlled({
24
30
  controlled: openProp,
25
31
  default: initialIsOpen || false,
26
32
  name: componentName,
27
- }), 2), isOpen = _e[0], setIsOpen = _e[1];
28
- var _f = __read(useState(false), 2), isTagsFocus = _f[0], setIsTagsFocus = _f[1];
29
- var _g = __read(useState(0), 2), activeIndex = _g[0], setActiveIndex = _g[1];
30
- var _h = __read(useControlled({
33
+ }), 2), isOpen = _f[0], setIsOpen = _f[1];
34
+ var _g = __read(useState(false), 2), isTagsFocus = _g[0], setIsTagsFocus = _g[1];
35
+ var _h = __read(useState(0), 2), activeIndex = _h[0], setActiveIndex = _h[1];
36
+ var _j = __read(useControlled({
31
37
  controlled: inputValueProp,
32
38
  default: '',
33
39
  name: componentName,
34
- }), 2), inputValue = _h[0], setInputValue = _h[1];
40
+ }), 2), inputValue = _j[0], setInputValue = _j[1];
35
41
  var updateInputValue = function (newValue) {
36
42
  onInputChangeProp === null || onInputChangeProp === void 0 ? void 0 : onInputChangeProp(newValue);
37
43
  setInputValue(newValue);
38
44
  };
39
- var _j = __read(useControlled({
45
+ var _k = __read(useControlled({
40
46
  controlled: selectedItemsProp,
41
47
  default: [],
42
48
  name: componentName,
43
- }), 2), selectedItems = _j[0], setSelectedItems = _j[1];
49
+ }), 2), selectedItems = _k[0], setSelectedItems = _k[1];
44
50
  var focusInput = function () { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); };
45
51
  var downshiftId = useResultRef(function () { return uniqueId("downshift-"); }).current;
46
52
  // * use -2 for us know that is init state, for recalculate defaultHighlightedIndex
@@ -55,7 +61,7 @@ export var useDownshift = function (_a) {
55
61
  ? true
56
62
  : undefined;
57
63
  var forceUpdate = useForceUpdate();
58
- var _k = useSleep(), sleep = _k.sleep, getSleeping = _k.getSleeping;
64
+ var _l = useSleep(), sleep = _l.sleep, getSleeping = _l.getSleeping;
59
65
  var filteredResult = useMemo(function () {
60
66
  var getInputValueAsItem = function () {
61
67
  var label = inputValue.trim() || '';
@@ -74,6 +80,7 @@ export var useDownshift = function (_a) {
74
80
  if (filterOptions) {
75
81
  return filterOptions(items, {
76
82
  inputValue: inputValue,
83
+ inputChanged: isInputValueChangedRef.current,
77
84
  getOptionLabel: getOptionLabel,
78
85
  selectedItems: selectedItems,
79
86
  });
@@ -117,16 +124,19 @@ export var useDownshift = function (_a) {
117
124
  renderNoOptions,
118
125
  selectedItems,
119
126
  ]);
120
- var _l = useDownshiftGroup({
127
+ var _m = useDownshiftGroup({
121
128
  groupBy: groupBy,
122
129
  options: options,
123
130
  filteredResult: filteredResult,
124
131
  getExpandIconProps: getExpandIconProps,
125
132
  groupExpanded: groupExpanded,
133
+ groupDefaultExpanded: groupDefaultExpanded,
126
134
  onGroupExpanded: onGroupExpanded,
135
+ // TODO: single release for that breaking change
136
+ // getOptionDisabled,
127
137
  groupVariant: groupVariant,
128
138
  id: downshiftId,
129
- }), groupedResult = _l.groupedResult, handleGroupExpandedChange = _l.handleGroupExpandedChange, optionsGroupList = _l.optionsGroupList;
139
+ }), groupedResult = _m.groupedResult, handleGroupExpandedChange = _m.handleGroupExpandedChange, optionsGroupList = _m.optionsGroupList;
130
140
  var optionItems = groupBy ? groupedResult : filteredResult;
131
141
  var freeSoloCount = useMemo(function () { return selectedItems.filter(function (x) { return x.freeSolo; }).length; }, [selectedItems]);
132
142
  var handleSelectedItems = function (_selectedItems) {
@@ -168,6 +178,7 @@ export var useDownshift = function (_a) {
168
178
  });
169
179
  var closeMenu = function (e, reason) {
170
180
  keepHighlightedIndexRef.current = false;
181
+ isInputValueChangedRef.current = false;
171
182
  // * set to default highlighted
172
183
  setHighlightedIndex(DEFAULT_HIGHLIGHTED_INDEX, { reason: 'auto' });
173
184
  if (isOpen) {
@@ -318,6 +329,7 @@ export var useDownshift = function (_a) {
318
329
  updateInputValue('');
319
330
  }
320
331
  isSelectedFromAutocompleteRef.current = false;
332
+ isInputValueChangedRef.current = false;
321
333
  setActiveIndex(-1);
322
334
  if (!disableCloseOnSelect) {
323
335
  closeMenu(e, 'select-option');
@@ -342,7 +354,7 @@ export var useDownshift = function (_a) {
342
354
  event === null || event === void 0 ? void 0 : event.preventDefault();
343
355
  },
344
356
  }).onKeyFocusedIndexHandle;
345
- var _m = useKeyboardMoveFocus({
357
+ var _o = useKeyboardMoveFocus({
346
358
  options: optionItems,
347
359
  focusedIndexRef: highlightedIndexRef,
348
360
  infinite: true,
@@ -355,7 +367,7 @@ export var useDownshift = function (_a) {
355
367
  : function (child) {
356
368
  return !getIsItemCanSelected(child);
357
369
  },
358
- }), onKeyFocusedIndexHandle = _m.onKeyFocusedIndexHandle, getNextFocusableOption = _m.getNextFocusableOption;
370
+ }), onKeyFocusedIndexHandle = _o.onKeyFocusedIndexHandle, getNextFocusableOption = _o.getNextFocusableOption;
359
371
  var keepHighlightedIndex = function () {
360
372
  keepHighlightedIndexRef.current = true;
361
373
  };
@@ -530,9 +542,11 @@ export var useDownshift = function (_a) {
530
542
  handleSelectedItems([]);
531
543
  }
532
544
  fromPasteString.current = '';
545
+ isInputValueChangedRef.current = true;
533
546
  },
534
547
  onFocus: function (e) {
535
548
  var _a;
549
+ setIsFocused(true);
536
550
  if (openOnFocus)
537
551
  openMenu(e);
538
552
  // * when autocomplete mode, always select all text when focus
@@ -546,6 +560,7 @@ export var useDownshift = function (_a) {
546
560
  }
547
561
  },
548
562
  onBlur: function (e) {
563
+ setIsFocused(false);
549
564
  if (autoSelect && !stopAutoSelectRef.current) {
550
565
  if (!freeSolo)
551
566
  selectItemFn(optionItems[highlightedIndexRef.current], e);
@@ -796,6 +811,9 @@ export var useDownshift = function (_a) {
796
811
  reset: reset,
797
812
  forceUpdate: forceUpdate,
798
813
  optionsGroupList: optionsGroupList,
814
+ isFocused: isFocused,
815
+ id: downshiftId,
816
+ inputChanged: isInputValueChangedRef.current,
799
817
  };
800
818
  changeHighlightedIndexReason.current = undefined;
801
819
  return resultObj;