@entur/dropdown 5.0.9-beta.0 → 5.0.11

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.
@@ -1313,7 +1313,7 @@ var DropdownList = function DropdownList(_ref) {
1313
1313
  className: "eds-dropdown__list__item__text"
1314
1314
  }, item.label, React.createElement(VisuallyHidden, null, isItemSelected(item) ? ariaLabelSelectedItem : '')), item.icons && React.createElement("span", null, item.icons.map(function (Icon) {
1315
1315
  return React.createElement(Icon, {
1316
- key: Icon.displayName,
1316
+ key: item.label + item.value + Icon.displayName,
1317
1317
  inline: true,
1318
1318
  className: "eds-dropdown__list__item__icon"
1319
1319
  });
@@ -1638,7 +1638,7 @@ var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
1638
1638
  };
1639
1639
  /* end a11y utils */
1640
1640
 
1641
- var _excluded$3 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "items", "itemFilter", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
1641
+ 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"];
1642
1642
  var SearchableDropdown = function SearchableDropdown(_ref) {
1643
1643
  var _selectedItem$label;
1644
1644
  var ariaLabelCloseList = _ref.ariaLabelCloseList,
@@ -1660,7 +1660,10 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1660
1660
  labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
1661
1661
  listStyle = _ref.listStyle,
1662
1662
  loadingText = _ref.loadingText,
1663
- onChange = _ref.onChange,
1663
+ _ref$onChange = _ref.onChange,
1664
+ onChange = _ref$onChange === void 0 ? function () {
1665
+ return undefined;
1666
+ } : _ref$onChange,
1664
1667
  placeholder = _ref.placeholder,
1665
1668
  prepend = _ref.prepend,
1666
1669
  _ref$readOnly = _ref.readOnly,
@@ -1668,6 +1671,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1668
1671
  value = _ref.selectedItem,
1669
1672
  _ref$selectOnBlur = _ref.selectOnBlur,
1670
1673
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
1674
+ _ref$selectOnTab = _ref.selectOnTab,
1675
+ selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
1671
1676
  style = _ref.style,
1672
1677
  _ref$variant = _ref.variant,
1673
1678
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
@@ -1736,7 +1741,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1736
1741
  if (isSpacePressedOnEmptyInput) {
1737
1742
  openMenu();
1738
1743
  if (isOpen && changes.highlightedIndex !== undefined) {
1739
- onChange == null ? void 0 : onChange(listItems[changes.highlightedIndex]);
1744
+ onChange(listItems[changes.highlightedIndex]);
1740
1745
  }
1741
1746
  }
1742
1747
  } else {
@@ -1765,7 +1770,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1765
1770
  if (!selectOnBlur) break;
1766
1771
  case useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
1767
1772
  case useCombobox.stateChangeTypes.ItemClick:
1768
- onChange == null ? void 0 : onChange(clickedItem != null ? clickedItem : null);
1773
+ onChange(clickedItem != null ? clickedItem : null);
1769
1774
  }
1770
1775
  },
1771
1776
  // Accessibility
@@ -1789,7 +1794,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1789
1794
  setInputValue = _useCombobox.setInputValue;
1790
1795
  var handleOnClear = function handleOnClear() {
1791
1796
  var _inputRef$current;
1792
- onChange == null ? void 0 : onChange(null);
1797
+ onChange(null);
1793
1798
  setInputValue(EMPTY_INPUT);
1794
1799
  (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
1795
1800
  updateListItems({
@@ -1846,6 +1851,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1846
1851
  onFocus: function onFocus() {
1847
1852
  setHideSelectedItem(true);
1848
1853
  },
1854
+ onKeyDown: function onKeyDown(e) {
1855
+ if (selectOnTab && e.key === 'Tab') onChange(listItems[highlightedIndex]);
1856
+ },
1849
1857
  ref: inputRef
1850
1858
  })))), React.createElement(DropdownList, {
1851
1859
  isOpen: isOpen,
@@ -1860,7 +1868,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1860
1868
  }));
1861
1869
  };
1862
1870
 
1863
- 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", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected", "ariaLabelSelectedItem"];
1871
+ 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"];
1864
1872
  var MultiSelect = function MultiSelect(_ref) {
1865
1873
  var className = _ref.className,
1866
1874
  _ref$clearable = _ref.clearable,
@@ -1898,6 +1906,8 @@ var MultiSelect = function MultiSelect(_ref) {
1898
1906
  selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
1899
1907
  _ref$selectOnBlur = _ref.selectOnBlur,
1900
1908
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
1909
+ _ref$selectOnTab = _ref.selectOnTab,
1910
+ selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
1901
1911
  style = _ref.style,
1902
1912
  _ref$variant = _ref.variant,
1903
1913
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
@@ -2199,14 +2209,22 @@ var MultiSelect = function MultiSelect(_ref) {
2199
2209
  placeholder: placeholder,
2200
2210
  className: "eds-dropdown__input eds-form-control",
2201
2211
  disabled: readOnly || disabled
2202
- }, getInputProps(getDropdownProps({
2212
+ }, getInputProps(_extends({
2213
+ onKeyDown: function onKeyDown(e) {
2214
+ if (selectOnTab && e.key === 'Tab') handleListItemClicked({
2215
+ clickedItem: listItems[highlightedIndex],
2216
+ onChange: onChange,
2217
+ setLastRemovedItem: setLastRemovedItem
2218
+ });
2219
+ }
2220
+ }, getDropdownProps({
2203
2221
  onClick: function onClick(e) {
2204
2222
  if (!isOpen && isVoiceOverClick(e)) openMenu();
2205
2223
  },
2206
2224
  preventKeyAction: isOpen,
2207
2225
  ref: inputRef,
2208
2226
  value: inputValue != null ? inputValue : EMPTY_INPUT
2209
- })))))), React.createElement(DropdownList, {
2227
+ }))))))), React.createElement(DropdownList, {
2210
2228
  ariaLabelChosenSingular: ariaLabelChosenSingular,
2211
2229
  ariaLabelSelectedItem: ariaLabelSelectedItem,
2212
2230
  getItemProps: getItemProps,
@@ -2224,7 +2242,7 @@ var MultiSelect = function MultiSelect(_ref) {
2224
2242
  }));
2225
2243
  };
2226
2244
 
2227
- var _excluded$1 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
2245
+ var _excluded$1 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "selectOnTab", "style", "variant"];
2228
2246
  var Dropdown = function Dropdown(_ref) {
2229
2247
  var _ref3, _selectedItem$label;
2230
2248
  var ariaLabelCloseList = _ref.ariaLabelCloseList,
@@ -2250,6 +2268,8 @@ var Dropdown = function Dropdown(_ref) {
2250
2268
  selectedItem = _ref.selectedItem,
2251
2269
  _ref$selectOnBlur = _ref.selectOnBlur,
2252
2270
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
2271
+ _ref$selectOnTab = _ref.selectOnTab,
2272
+ selectOnTab = _ref$selectOnTab === void 0 ? false : _ref$selectOnTab,
2253
2273
  style = _ref.style,
2254
2274
  _ref$variant = _ref.variant,
2255
2275
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
@@ -2321,7 +2341,10 @@ var Dropdown = function Dropdown(_ref) {
2321
2341
  }, rest), React.createElement("div", _extends({
2322
2342
  className: "eds-dropdown__selected-item"
2323
2343
  }, getToggleButtonProps({
2324
- id: undefined
2344
+ id: undefined,
2345
+ onKeyDown: function onKeyDown(e) {
2346
+ if (selectOnTab && e.key === 'Tab') onChange == null ? void 0 : onChange(normalizedItems[highlightedIndex]);
2347
+ }
2325
2348
  })), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("span", {
2326
2349
  className: classNames('eds-dropdown__selected-item__placeholder', {
2327
2350
  'eds-dropdown__selected-item__placeholder--readonly': readOnly