@entur/dropdown 5.0.8 → 5.0.9

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.
@@ -19,6 +19,12 @@ export type DropdownProps = {
19
19
  */
20
20
  clearable?: boolean;
21
21
  /** Lar brukeren velge ved å "tab-e" seg ut av komponenten */
22
+ selectOnTab?: boolean;
23
+ /**
24
+ * @deprecated
25
+ * Bruk selectOnTab i stedet
26
+ *
27
+ * Lar brukeren velge ved å "tab-e" seg ut av komponenten */
22
28
  selectOnBlur?: boolean;
23
29
  /** Deaktiver dropdown-en */
24
30
  disabled?: boolean;
@@ -59,4 +65,4 @@ export type DropdownProps = {
59
65
  */
60
66
  ariaLabelOpenList?: string;
61
67
  };
62
- export declare const Dropdown: ({ ariaLabelCloseList, ariaLabelOpenList, className, clearable, disabled, disableLabelAnimation, feedback, items: initialItems, label, labelClearSelectedItem, listStyle, loadingText, onChange, placeholder, prepend, readOnly, selectedItem, selectOnBlur, style, variant, ...rest }: DropdownProps) => React.JSX.Element;
68
+ export declare const Dropdown: ({ ariaLabelCloseList, ariaLabelOpenList, className, clearable, disabled, disableLabelAnimation, feedback, items: initialItems, label, labelClearSelectedItem, listStyle, loadingText, onChange, placeholder, prepend, readOnly, selectedItem, selectOnBlur, selectOnTab, style, variant, ...rest }: DropdownProps) => React.JSX.Element;
@@ -59,6 +59,12 @@ export type MultiSelectProps = {
59
59
  */
60
60
  clearInputOnSelect?: boolean;
61
61
  /** Lar brukeren velge ved å "tab-e" seg ut av komponenten */
62
+ selectOnTab?: boolean;
63
+ /**
64
+ * @deprecated
65
+ * Bruk selectOnTab i stedet
66
+ *
67
+ * Lar brukeren velge ved å "tab-e" seg ut av komponenten */
62
68
  selectOnBlur?: boolean;
63
69
  style?: React.CSSProperties;
64
70
  /** Styling som sendes ned til MultiSelect-lista */
@@ -108,4 +114,4 @@ export type MultiSelectProps = {
108
114
  */
109
115
  ariaLabelSelectedItem?: string;
110
116
  };
111
- export declare const MultiSelect: ({ className, clearable, clearInputOnSelect, debounceTimeout, disabled, feedback, hideSelectAll, itemFilter, items: initialItems, label, labelAllItemsSelected, labelClearAllItems, labelSelectAll, listStyle, loadingText, maxChips, noMatchesText, onChange, placeholder, readOnly, selectedItems, selectOnBlur, style, variant, ariaLabelChosenSingular, ariaLabelChosenPlural, ariaLabelCloseList, ariaLabelJumpToInput, ariaLabelOpenList, ariaLabelRemoveSelected, ariaLabelSelectedItem, ...rest }: MultiSelectProps) => React.JSX.Element;
117
+ export declare const MultiSelect: ({ className, clearable, clearInputOnSelect, debounceTimeout, disabled, feedback, hideSelectAll, items: initialItems, itemFilter, label, labelAllItemsSelected, labelClearAllItems, labelSelectAll, listStyle, loadingText, maxChips, noMatchesText, onChange, placeholder, readOnly, selectedItems, selectOnBlur, selectOnTab, style, variant, ariaLabelChosenSingular, ariaLabelChosenPlural, ariaLabelCloseList, ariaLabelJumpToInput, ariaLabelOpenList, ariaLabelRemoveSelected, ariaLabelSelectedItem, ...rest }: MultiSelectProps) => React.JSX.Element;
@@ -33,6 +33,12 @@ export type SearchableDropdownProps = {
33
33
  /** Deaktiver dropdown-en */
34
34
  disabled?: boolean;
35
35
  /** Lar brukeren velge ved å "tab-e" seg ut av komponenten */
36
+ selectOnTab?: boolean;
37
+ /**
38
+ * @deprecated
39
+ * Bruk selectOnTab i stedet
40
+ *
41
+ * Lar brukeren velge ved å "tab-e" seg ut av komponenten */
36
42
  selectOnBlur?: boolean;
37
43
  /** Gjør dropdown-en til å kun kunne leses
38
44
  * @default false
@@ -67,4 +73,4 @@ export type SearchableDropdownProps = {
67
73
  */
68
74
  ariaLabelOpenList?: string;
69
75
  };
70
- export declare const SearchableDropdown: ({ ariaLabelCloseList, ariaLabelOpenList, className, clearable, debounceTimeout, disabled, disableLabelAnimation, feedback, itemFilter, items: initialItems, label, labelClearSelectedItem, listStyle, loadingText, onChange, placeholder, prepend, readOnly, selectedItem: value, selectOnBlur, style, variant, ...rest }: SearchableDropdownProps) => React.JSX.Element;
76
+ export declare const SearchableDropdown: ({ ariaLabelCloseList, ariaLabelOpenList, className, clearable, debounceTimeout, disabled, disableLabelAnimation, feedback, items: initialItems, itemFilter, label, labelClearSelectedItem, listStyle, loadingText, onChange, placeholder, prepend, readOnly, selectedItem: value, selectOnBlur, selectOnTab, style, variant, ...rest }: SearchableDropdownProps) => React.JSX.Element;
@@ -839,7 +839,7 @@ debounceTimeout) {
839
839
  return isItemsFunction ? itemsOrItemsResolver : function () {
840
840
  return Promise.resolve(itemsOrItemsResolver);
841
841
  };
842
- }, [isItemsFunction]);
842
+ }, [itemsOrItemsResolver, isItemsFunction]);
843
843
  var _React$useReducer = React.useReducer(reducer, {
844
844
  items: isItemsFunction ? [] : itemsOrItemsResolver,
845
845
  loading: false
@@ -1317,7 +1317,7 @@ var DropdownList = function DropdownList(_ref) {
1317
1317
  className: "eds-dropdown__list__item__text"
1318
1318
  }, item.label, React.createElement(a11y.VisuallyHidden, null, isItemSelected(item) ? ariaLabelSelectedItem : '')), item.icons && React.createElement("span", null, item.icons.map(function (Icon) {
1319
1319
  return React.createElement(Icon, {
1320
- key: Icon.displayName,
1320
+ key: item.label + item.value + Icon.displayName,
1321
1321
  inline: true,
1322
1322
  className: "eds-dropdown__list__item__icon"
1323
1323
  });
@@ -1411,7 +1411,7 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
1411
1411
  selectedItems = _ref3.selectedItems;
1412
1412
  if (loading) {
1413
1413
  return React.createElement("div", {
1414
- className: 'eds-dropdown-appendix__toggle-button--loading-dots'
1414
+ className: 'eds-dropdown__appendix__toggle-button--loading-dots'
1415
1415
  }, React.createElement(loader.LoadingDots, {
1416
1416
  "aria-label": loadingText
1417
1417
  }));
@@ -1420,13 +1420,13 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
1420
1420
  return null;
1421
1421
  }
1422
1422
  return React.createElement("div", {
1423
- className: "eds-dropdown-appendix"
1423
+ className: "eds-dropdown__appendix"
1424
1424
  }, clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React.createElement(React.Fragment, null, React.createElement(ClearableButton, {
1425
1425
  onClear: onClear,
1426
1426
  focusable: true,
1427
1427
  labelClearSelectedItems: labelClearSelectedItems
1428
1428
  }), React.createElement("div", {
1429
- className: "eds-dropdown-appendix__divider"
1429
+ className: "eds-dropdown__appendix__divider"
1430
1430
  })), React.createElement(ToggleButton, {
1431
1431
  "aria-hidden": ariaHiddenToggleButton,
1432
1432
  ariaLabelCloseList: ariaLabelCloseList,
@@ -1446,9 +1446,9 @@ var ClearableButton = function ClearableButton(_ref4) {
1446
1446
  "aria-hidden": "true",
1447
1447
  placement: "top",
1448
1448
  content: labelClearSelectedItems,
1449
- className: "eds-dropdown-appendix__clear-button__tooltip"
1449
+ className: "eds-dropdown__appendix__clear-button__tooltip"
1450
1450
  }, React.createElement(button.IconButton, {
1451
- className: "eds-dropdown-appendix__clear-button",
1451
+ className: "eds-dropdown__appendix__clear-button",
1452
1452
  type: "button",
1453
1453
  tabIndex: focusable ? 0 : 1,
1454
1454
  onClick: onClear,
@@ -1469,8 +1469,8 @@ var ToggleButton = function ToggleButton(_ref5) {
1469
1469
  _ref5$focusable = _ref5.focusable,
1470
1470
  focusable = _ref5$focusable === void 0 ? false : _ref5$focusable;
1471
1471
  return React.createElement(button.IconButton, _extends({}, getToggleButtonProps({
1472
- className: classNames('eds-dropdown-appendix__toggle-button', {
1473
- 'eds-dropdown-appendix__toggle-button--open': isOpen
1472
+ className: classNames('eds-dropdown__appendix__toggle-button', {
1473
+ 'eds-dropdown__appendix__toggle-button--open': isOpen
1474
1474
  }),
1475
1475
  'aria-labelledby': undefined
1476
1476
  }), {
@@ -1493,9 +1493,19 @@ function lowerCaseFilterTest(item, input) {
1493
1493
  var inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');
1494
1494
  return inputRegex.test(item.label);
1495
1495
  }
1496
+ function noFilter(
1497
+ //@ts-expect-error only here to comply with dropdown filter API
1498
+ item,
1499
+ //@ts-expect-error only here to comply with dropdown filter API
1500
+ input) {
1501
+ return true;
1502
+ }
1496
1503
  var itemToString = function itemToString(item) {
1497
1504
  return item ? item.label : '';
1498
1505
  };
1506
+ var isFunctionWithQueryArgument = function isFunctionWithQueryArgument(object) {
1507
+ return typeof object === 'function' && object.length > 0;
1508
+ };
1499
1509
  var useMultiselectUtils = function useMultiselectUtils(_ref) {
1500
1510
  var listItems = _ref.listItems,
1501
1511
  selectedItems = _ref.selectedItems,
@@ -1632,7 +1642,7 @@ var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
1632
1642
  };
1633
1643
  /* end a11y utils */
1634
1644
 
1635
- var _excluded$3 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "itemFilter", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
1645
+ var _excluded$3 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "items", "itemFilter", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "selectOnTab", "style", "variant"];
1636
1646
  var SearchableDropdown = function SearchableDropdown(_ref) {
1637
1647
  var _selectedItem$label;
1638
1648
  var ariaLabelCloseList = _ref.ariaLabelCloseList,
@@ -1646,9 +1656,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1646
1656
  _ref$disableLabelAnim = _ref.disableLabelAnimation,
1647
1657
  disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
1648
1658
  feedback = _ref.feedback,
1649
- _ref$itemFilter = _ref.itemFilter,
1650
- itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
1651
1659
  initialItems = _ref.items,
1660
+ _ref$itemFilter = _ref.itemFilter,
1661
+ itemFilter = _ref$itemFilter === void 0 ? isFunctionWithQueryArgument(initialItems) ? noFilter : lowerCaseFilterTest : _ref$itemFilter,
1652
1662
  label = _ref.label,
1653
1663
  _ref$labelClearSelect = _ref.labelClearSelectedItem,
1654
1664
  labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
@@ -1662,6 +1672,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1662
1672
  value = _ref.selectedItem,
1663
1673
  _ref$selectOnBlur = _ref.selectOnBlur,
1664
1674
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
1675
+ _ref$selectOnTab = _ref.selectOnTab,
1676
+ selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
1665
1677
  style = _ref.style,
1666
1678
  _ref$variant = _ref.variant,
1667
1679
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
@@ -1688,7 +1700,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1688
1700
  };
1689
1701
  var updateListItems = function updateListItems(_ref3) {
1690
1702
  var inputValue = _ref3.inputValue;
1691
- if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : EMPTY_INPUT); // fetch items only if user provides a function as items
1703
+ var shouldRefetchItems = isFunctionWithQueryArgument(initialItems);
1704
+ if (shouldRefetchItems) fetchItems(inputValue != null ? inputValue : EMPTY_INPUT);
1692
1705
  filterListItems({
1693
1706
  inputValue: inputValue != null ? inputValue : EMPTY_INPUT
1694
1707
  });
@@ -1711,7 +1724,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1711
1724
  case Downshift.useCombobox.stateChangeTypes.InputBlur:
1712
1725
  case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1713
1726
  {
1714
- filterListItems({
1727
+ updateListItems({
1715
1728
  inputValue: EMPTY_INPUT
1716
1729
  });
1717
1730
  return _extends({}, changes, {
@@ -1818,16 +1831,14 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1818
1831
  prepend: prepend,
1819
1832
  readOnly: readOnly,
1820
1833
  variant: variant
1821
- }, rest), !hideSelectedItem && selectedItem && !inputValue && React.createElement("span", {
1822
- className: "eds-dropdown__selected-item__wrapper",
1823
- "aria-hidden": "true"
1824
- }, React.createElement("span", {
1825
- className: "eds-dropdown__selected-item",
1834
+ }, rest), !hideSelectedItem && selectedItem !== null && inputValue === '' && React.createElement("span", {
1835
+ className: "eds-dropdown--searchable__selected-item",
1836
+ "aria-hidden": "true",
1826
1837
  onClick: function onClick() {
1827
1838
  var _inputRef$current2;
1828
1839
  return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
1829
1840
  }
1830
- }, selectedItem.label)), React.createElement("input", _extends({
1841
+ }, selectedItem.label), React.createElement("input", _extends({
1831
1842
  className: "eds-dropdown__input eds-form-control",
1832
1843
  disabled: readOnly || disabled,
1833
1844
  placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder
@@ -1841,6 +1852,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1841
1852
  onFocus: function onFocus() {
1842
1853
  setHideSelectedItem(true);
1843
1854
  },
1855
+ onKeyDown: function onKeyDown(e) {
1856
+ if (selectOnTab && e.key === 'Tab') onChange == null ? void 0 : onChange(listItems[highlightedIndex]);
1857
+ },
1844
1858
  ref: inputRef
1845
1859
  })))), React.createElement(DropdownList, {
1846
1860
  isOpen: isOpen,
@@ -1855,7 +1869,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1855
1869
  }));
1856
1870
  };
1857
1871
 
1858
- var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "itemFilter", "items", "label", "labelAllItemsSelected", "labelClearAllItems", "labelSelectAll", "listStyle", "loadingText", "maxChips", "noMatchesText", "onChange", "placeholder", "readOnly", "selectedItems", "selectOnBlur", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected", "ariaLabelSelectedItem"];
1872
+ var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "items", "itemFilter", "label", "labelAllItemsSelected", "labelClearAllItems", "labelSelectAll", "listStyle", "loadingText", "maxChips", "noMatchesText", "onChange", "placeholder", "readOnly", "selectedItems", "selectOnBlur", "selectOnTab", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected", "ariaLabelSelectedItem"];
1859
1873
  var MultiSelect = function MultiSelect(_ref) {
1860
1874
  var className = _ref.className,
1861
1875
  _ref$clearable = _ref.clearable,
@@ -1868,9 +1882,9 @@ var MultiSelect = function MultiSelect(_ref) {
1868
1882
  feedback = _ref.feedback,
1869
1883
  _ref$hideSelectAll = _ref.hideSelectAll,
1870
1884
  hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
1871
- _ref$itemFilter = _ref.itemFilter,
1872
- itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
1873
1885
  initialItems = _ref.items,
1886
+ _ref$itemFilter = _ref.itemFilter,
1887
+ itemFilter = _ref$itemFilter === void 0 ? isFunctionWithQueryArgument(initialItems) ? noFilter : lowerCaseFilterTest : _ref$itemFilter,
1874
1888
  label = _ref.label,
1875
1889
  _ref$labelAllItemsSel = _ref.labelAllItemsSelected,
1876
1890
  labelAllItemsSelected = _ref$labelAllItemsSel === void 0 ? 'Alle valgt' : _ref$labelAllItemsSel,
@@ -1889,9 +1903,12 @@ var MultiSelect = function MultiSelect(_ref) {
1889
1903
  placeholder = _ref.placeholder,
1890
1904
  _ref$readOnly = _ref.readOnly,
1891
1905
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
1892
- selectedItems = _ref.selectedItems,
1906
+ _ref$selectedItems = _ref.selectedItems,
1907
+ selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
1893
1908
  _ref$selectOnBlur = _ref.selectOnBlur,
1894
1909
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
1910
+ _ref$selectOnTab = _ref.selectOnTab,
1911
+ selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
1895
1912
  style = _ref.style,
1896
1913
  _ref$variant = _ref.variant,
1897
1914
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
@@ -1915,6 +1932,10 @@ var MultiSelect = function MultiSelect(_ref) {
1915
1932
  lastRemovedItem = _React$useState2[0],
1916
1933
  setLastRemovedItem = _React$useState2[1];
1917
1934
  var inputRef = React.useRef(null);
1935
+ React.useEffect(function () {
1936
+ //@ts-expect-error this is done to aid developers debug wrong prop usage
1937
+ if (rest.selectedItem !== undefined) console.warn("Incorrect 'selectedItem' prop found, did you mean to use 'selectedItems?");
1938
+ }, []);
1918
1939
  var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
1919
1940
  normalizedItems = _useResolvedItems.items,
1920
1941
  loading = _useResolvedItems.loading,
@@ -1944,9 +1965,7 @@ var MultiSelect = function MultiSelect(_ref) {
1944
1965
  };
1945
1966
  var updateListItems = function updateListItems(_ref3) {
1946
1967
  var inputValue = _ref3.inputValue;
1947
- var shouldRefetchItems =
1948
- // fetch items only if user provides a function with inputValue argument as items
1949
- typeof initialItems === 'function' && initialItems.length > 0; // Function.length == number of arguments
1968
+ var shouldRefetchItems = isFunctionWithQueryArgument(initialItems);
1950
1969
  if (shouldRefetchItems) fetchItems(inputValue != null ? inputValue : EMPTY_INPUT);
1951
1970
  filterListItems({
1952
1971
  inputValue: inputValue != null ? inputValue : EMPTY_INPUT
@@ -2050,6 +2069,9 @@ var MultiSelect = function MultiSelect(_ref) {
2050
2069
  // reset input value when leaving input field
2051
2070
  case Downshift.useCombobox.stateChangeTypes.InputBlur:
2052
2071
  {
2072
+ updateListItems({
2073
+ inputValue: EMPTY_INPUT
2074
+ });
2053
2075
  return _extends({}, changes, {
2054
2076
  inputValue: EMPTY_INPUT
2055
2077
  });
@@ -2142,16 +2164,16 @@ var MultiSelect = function MultiSelect(_ref) {
2142
2164
  label: label,
2143
2165
  labelId: getLabelProps().id,
2144
2166
  labelProps: getLabelProps(),
2145
- readOnly: readOnly,
2146
- variant: variant
2147
- }, rest), React.createElement("div", {
2148
- className: classNames('eds-dropdown__selected-items-and-input', {
2149
- 'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
2150
- }),
2151
2167
  onClick: function onClick(e) {
2152
2168
  var _inputRef$current4;
2153
2169
  if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
2154
- }
2170
+ },
2171
+ readOnly: readOnly,
2172
+ variant: variant
2173
+ }, rest), React.createElement("div", {
2174
+ className: classNames('eds-dropdown--multiselect__selected-items-and-input', {
2175
+ 'eds-dropdown--multiselect__selected-items-and-input--filled': hasSelectedItems
2176
+ })
2155
2177
  }, selectedItems.length < maxChips ? React.createElement(React.Fragment, null, selectedItems.length > 1 ? React.createElement(a11y.VisuallyHidden, {
2156
2178
  onClick: function onClick() {
2157
2179
  var _inputRef$current5;
@@ -2188,14 +2210,22 @@ var MultiSelect = function MultiSelect(_ref) {
2188
2210
  placeholder: placeholder,
2189
2211
  className: "eds-dropdown__input eds-form-control",
2190
2212
  disabled: readOnly || disabled
2191
- }, getInputProps(getDropdownProps({
2213
+ }, getInputProps(_extends({
2214
+ onKeyDown: function onKeyDown(e) {
2215
+ if (selectOnTab && e.key === 'Tab') handleListItemClicked({
2216
+ clickedItem: listItems[highlightedIndex],
2217
+ onChange: onChange,
2218
+ setLastRemovedItem: setLastRemovedItem
2219
+ });
2220
+ }
2221
+ }, getDropdownProps({
2192
2222
  onClick: function onClick(e) {
2193
2223
  if (!isOpen && isVoiceOverClick(e)) openMenu();
2194
2224
  },
2195
2225
  preventKeyAction: isOpen,
2196
2226
  ref: inputRef,
2197
2227
  value: inputValue != null ? inputValue : EMPTY_INPUT
2198
- })))))), React.createElement(DropdownList, {
2228
+ }))))))), React.createElement(DropdownList, {
2199
2229
  ariaLabelChosenSingular: ariaLabelChosenSingular,
2200
2230
  ariaLabelSelectedItem: ariaLabelSelectedItem,
2201
2231
  getItemProps: getItemProps,
@@ -2213,7 +2243,7 @@ var MultiSelect = function MultiSelect(_ref) {
2213
2243
  }));
2214
2244
  };
2215
2245
 
2216
- var _excluded$1 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
2246
+ var _excluded$1 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "selectOnTab", "style", "variant"];
2217
2247
  var Dropdown = function Dropdown(_ref) {
2218
2248
  var _ref3, _selectedItem$label;
2219
2249
  var ariaLabelCloseList = _ref.ariaLabelCloseList,
@@ -2239,6 +2269,8 @@ var Dropdown = function Dropdown(_ref) {
2239
2269
  selectedItem = _ref.selectedItem,
2240
2270
  _ref$selectOnBlur = _ref.selectOnBlur,
2241
2271
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
2272
+ _ref$selectOnTab = _ref.selectOnTab,
2273
+ selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
2242
2274
  style = _ref.style,
2243
2275
  _ref$variant = _ref.variant,
2244
2276
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
@@ -2308,12 +2340,15 @@ var Dropdown = function Dropdown(_ref) {
2308
2340
  readOnly: readOnly,
2309
2341
  variant: variant
2310
2342
  }, rest), React.createElement("div", _extends({
2311
- className: "eds-dropdown__selected-item-button"
2343
+ className: "eds-dropdown__selected-item"
2312
2344
  }, getToggleButtonProps({
2313
- id: undefined
2345
+ id: undefined,
2346
+ onKeyDown: function onKeyDown(e) {
2347
+ if (selectOnTab && e.key === 'Tab') onChange == null ? void 0 : onChange(normalizedItems[highlightedIndex]);
2348
+ }
2314
2349
  })), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("span", {
2315
- className: classNames('eds-dropdown__selected-item-button__placeholder', {
2316
- 'eds-dropdown__selected-item-button__placeholder--readonly': readOnly
2350
+ className: classNames('eds-dropdown__selected-item__placeholder', {
2351
+ 'eds-dropdown__selected-item__placeholder--readonly': readOnly
2317
2352
  })
2318
2353
  }, placeholder)) != null ? _ref3 : '')), React.createElement(DropdownList, {
2319
2354
  getItemProps: getItemProps,