@entur/dropdown 5.0.17 → 5.0.19

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.
@@ -1240,6 +1240,7 @@ function SelectedItemsLabel(items) {
1240
1240
 
1241
1241
  var _excluded$5 = ["ariaLabelChosenSingular", "ariaLabelSelectedItem", "getItemProps", "getMenuProps", "inputValue", "isOpen", "highlightedIndex", "listItems", "listStyle", "loading", "loadingText", "noMatchesText", "selectAllCheckboxState", "selectAllItem", "selectedItems", "showSelectAllInList"];
1242
1242
  var DropdownList = function DropdownList(_ref) {
1243
+ var _listItems$;
1243
1244
  var _ref$ariaLabelChosenS = _ref.ariaLabelChosenSingular,
1244
1245
  ariaLabelChosenSingular = _ref$ariaLabelChosenS === void 0 ? 'valgt' : _ref$ariaLabelChosenS,
1245
1246
  _ref$ariaLabelSelecte = _ref.ariaLabelSelectedItem,
@@ -1261,10 +1262,10 @@ var DropdownList = function DropdownList(_ref) {
1261
1262
  selectedItems = _ref.selectedItems,
1262
1263
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
1263
1264
  var isMultiselect = selectAllItem !== undefined;
1264
- var isNoMatches = !loading && (listItems.length === 0 || listItems.length === 1 && listItems[0].value === (selectAllItem == null ? void 0 : selectAllItem.value));
1265
+ var isNoMatches = !loading && (listItems.length === 0 || (listItems == null ? void 0 : listItems.length) === 1 && (listItems == null ? void 0 : (_listItems$ = listItems[0]) == null ? void 0 : _listItems$.value) === (selectAllItem == null ? void 0 : selectAllItem.value));
1265
1266
  var isItemSelected = function isItemSelected(item) {
1266
1267
  return selectedItems.some(function (selectedItem) {
1267
- return selectedItem.value === item.value && selectedItem.label === item.label;
1268
+ return (selectedItem == null ? void 0 : selectedItem.value) === (item == null ? void 0 : item.value) && (selectedItem == null ? void 0 : selectedItem.label) === (item == null ? void 0 : item.label);
1268
1269
  });
1269
1270
  };
1270
1271
  var ariaLabelSelectAll = function ariaLabelSelectAll() {
@@ -1313,7 +1314,7 @@ var DropdownList = function DropdownList(_ref) {
1313
1314
  className: "eds-dropdown__list__item__text"
1314
1315
  }, item.label, React.createElement(VisuallyHidden, null, isItemSelected(item) ? ariaLabelSelectedItem : '')), item.icons && React.createElement("span", null, item.icons.map(function (Icon) {
1315
1316
  return React.createElement(Icon, {
1316
- key: item.label + item.value + Icon.displayName,
1317
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value) + (Icon == null ? void 0 : Icon.displayName),
1317
1318
  inline: true,
1318
1319
  className: "eds-dropdown__list__item__icon"
1319
1320
  });
@@ -1330,14 +1331,14 @@ var DropdownList = function DropdownList(_ref) {
1330
1331
  var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1331
1332
  if (itemIsSelectAll && listItems.length <= 2) return null;
1332
1333
  return React.createElement("li", _extends({
1333
- key: item.label + item.value,
1334
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1334
1335
  className: classNames('eds-dropdown__list__item', {
1335
1336
  'eds-dropdown__list__item--select-all': itemIsSelectAll,
1336
1337
  'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1337
1338
  'eds-dropdown__list__item--selected': !isMultiselect && isItemSelected(item)
1338
1339
  })
1339
1340
  }, getItemProps({
1340
- key: item.label + item.value,
1341
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1341
1342
  item: item,
1342
1343
  index: index
1343
1344
  })), itemIsSelectAll ? selectAllListItemContent() : listItemContent(item));
@@ -1405,13 +1406,6 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
1405
1406
  loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
1406
1407
  onClear = _ref3.onClear,
1407
1408
  selectedItems = _ref3.selectedItems;
1408
- if (loading) {
1409
- return React.createElement("div", {
1410
- className: 'eds-dropdown__appendix__toggle-button--loading-dots'
1411
- }, React.createElement(LoadingDots, {
1412
- "aria-label": loadingText
1413
- }));
1414
- }
1415
1409
  if (disabled) {
1416
1410
  return null;
1417
1411
  }
@@ -1423,14 +1417,18 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
1423
1417
  labelClearSelectedItems: labelClearSelectedItems
1424
1418
  }), React.createElement("div", {
1425
1419
  className: "eds-dropdown__appendix__divider"
1426
- })), React.createElement(ToggleButton, {
1420
+ })), !loading ? React.createElement(ToggleButton, {
1427
1421
  "aria-hidden": ariaHiddenToggleButton,
1428
1422
  ariaLabelCloseList: ariaLabelCloseList,
1429
1423
  ariaLabelOpenList: ariaLabelOpenList,
1430
1424
  getToggleButtonProps: getToggleButtonProps,
1431
1425
  isOpen: isOpen,
1432
1426
  focusable: focusable
1433
- }));
1427
+ }) : React.createElement("div", {
1428
+ className: 'eds-dropdown__appendix__toggle-button--loading-dots'
1429
+ }, React.createElement(LoadingDots, {
1430
+ "aria-label": loadingText
1431
+ })));
1434
1432
  };
1435
1433
  var ClearableButton = function ClearableButton(_ref4) {
1436
1434
  var onClear = _ref4.onClear,
@@ -1640,7 +1638,7 @@ var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
1640
1638
 
1641
1639
  var _excluded$3 = ["ariaLabelChosenSingular", "ariaLabelCloseList", "ariaLabelOpenList", "ariaLabelSelectedItem", "className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "items", "itemFilter", "label", "labelClearSelectedItem", "listStyle", "loadingText", "noMatchesText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "selectOnTab", "style", "variant"];
1642
1640
  var SearchableDropdown = function SearchableDropdown(_ref) {
1643
- var _selectedItem$label;
1641
+ var _document, _selectedItem$label;
1644
1642
  var ariaLabelChosenSingular = _ref.ariaLabelChosenSingular,
1645
1643
  ariaLabelCloseList = _ref.ariaLabelCloseList,
1646
1644
  ariaLabelOpenList = _ref.ariaLabelOpenList,
@@ -1713,6 +1711,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1713
1711
  inputValue: inputValue
1714
1712
  });
1715
1713
  }, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
1714
+ var inputHasFocus = typeof document !== 'undefined' ? (inputRef == null ? void 0 : inputRef.current) === ((_document = document) == null ? void 0 : _document.activeElement) : false;
1716
1715
  var stateReducer = React.useCallback(function (_, _ref4) {
1717
1716
  var type = _ref4.type,
1718
1717
  changes = _ref4.changes;
@@ -1724,7 +1723,6 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1724
1723
  case useCombobox.stateChangeTypes.ItemClick:
1725
1724
  case useCombobox.stateChangeTypes.InputKeyDownEnter:
1726
1725
  case useCombobox.stateChangeTypes.InputBlur:
1727
- case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1728
1726
  {
1729
1727
  updateListItems({
1730
1728
  inputValue: EMPTY_INPUT
@@ -1733,6 +1731,14 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1733
1731
  inputValue: EMPTY_INPUT
1734
1732
  });
1735
1733
  }
1734
+ case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1735
+ if (!inputHasFocus) setShowSelectedItem(true);
1736
+ updateListItems({
1737
+ inputValue: EMPTY_INPUT
1738
+ });
1739
+ return _extends({}, changes, {
1740
+ inputValue: EMPTY_INPUT
1741
+ });
1736
1742
  // remove leading whitespace, select element with spacebar on empty input, and filter list based on input
1737
1743
  case useCombobox.stateChangeTypes.InputChange:
1738
1744
  {
@@ -1803,11 +1809,24 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1803
1809
  updateListItems({
1804
1810
  inputValue: inputValue
1805
1811
  });
1812
+ setShowSelectedItem(false);
1806
1813
  };
1807
1814
  return React.createElement("div", {
1808
1815
  className: classNames('eds-dropdown__wrapper', className),
1809
1816
  style: style
1810
1817
  }, React.createElement(BaseFormControl, _extends({
1818
+ className: "eds-dropdown",
1819
+ disabled: disabled,
1820
+ disableLabelAnimation: disableLabelAnimation,
1821
+ feedback: feedback,
1822
+ isFilled: selectedItem !== null || inputValue !== EMPTY_INPUT,
1823
+ label: label,
1824
+ labelId: getLabelProps().id,
1825
+ labelProps: getLabelProps(),
1826
+ prepend: prepend,
1827
+ readOnly: readOnly,
1828
+ variant: variant
1829
+ }, rest, {
1811
1830
  append: React.createElement(FieldAppend$1, {
1812
1831
  ariaLabelCloseList: ariaLabelCloseList,
1813
1832
  ariaLabelOpenList: ariaLabelOpenList,
@@ -1821,19 +1840,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1821
1840
  loadingText: loadingText,
1822
1841
  onClear: handleOnClear,
1823
1842
  selectedItems: [selectedItem]
1824
- }),
1825
- className: "eds-dropdown",
1826
- disabled: disabled,
1827
- disableLabelAnimation: disableLabelAnimation,
1828
- feedback: feedback,
1829
- isFilled: selectedItem !== null || inputValue !== EMPTY_INPUT,
1830
- label: label,
1831
- labelId: getLabelProps().id,
1832
- labelProps: getLabelProps(),
1833
- prepend: prepend,
1834
- readOnly: readOnly,
1835
- variant: variant
1836
- }, rest), React.createElement("span", {
1843
+ })
1844
+ }), React.createElement("span", {
1837
1845
  className: classNames('eds-dropdown--searchable__selected-item', {
1838
1846
  'eds-dropdown--searchable__selected-item--hidden': !showSelectedItem
1839
1847
  }),
@@ -1842,7 +1850,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1842
1850
  var _inputRef$current2;
1843
1851
  return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
1844
1852
  }
1845
- }, selectedItem == null ? void 0 : selectedItem.label), React.createElement("input", _extends({
1853
+ }, showSelectedItem ? selectedItem == null ? void 0 : selectedItem.label : ''), React.createElement("input", _extends({
1846
1854
  className: classNames('eds-dropdown__input eds-form-control', {
1847
1855
  'eds-dropdown__input--hidden': showSelectedItem
1848
1856
  }),
@@ -1859,7 +1867,13 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1859
1867
  setShowSelectedItem(false);
1860
1868
  },
1861
1869
  onKeyDown: function onKeyDown(e) {
1862
- if (selectOnTab && e.key === 'Tab') onChange(listItems[highlightedIndex]);
1870
+ if (selectOnTab && e.key === 'Tab') {
1871
+ var highlitedItem = listItems[highlightedIndex];
1872
+ if (highlitedItem) {
1873
+ // we don't want to clear selection with tab
1874
+ onChange == null ? void 0 : onChange(highlitedItem);
1875
+ }
1876
+ }
1863
1877
  },
1864
1878
  ref: inputRef
1865
1879
  })))), React.createElement(DropdownList, {
@@ -2194,7 +2208,7 @@ var MultiSelect = function MultiSelect(_ref) {
2194
2208
  disabled: disabled,
2195
2209
  getSelectedItemProps: getSelectedItemProps,
2196
2210
  index: index,
2197
- key: selectedItem.value,
2211
+ key: selectedItem == null ? void 0 : selectedItem.value,
2198
2212
  readOnly: readOnly,
2199
2213
  removeSelectedItem: function removeSelectedItem() {
2200
2214
  var _inputRef$current6;
@@ -2220,11 +2234,17 @@ var MultiSelect = function MultiSelect(_ref) {
2220
2234
  disabled: readOnly || disabled
2221
2235
  }, getInputProps(_extends({
2222
2236
  onKeyDown: function onKeyDown(e) {
2223
- if (selectOnTab && e.key === 'Tab') handleListItemClicked({
2224
- clickedItem: listItems[highlightedIndex],
2225
- onChange: onChange,
2226
- setLastRemovedItem: setLastRemovedItem
2227
- });
2237
+ if (selectOnTab && e.key === 'Tab') {
2238
+ var highlitedItem = listItems[highlightedIndex];
2239
+ // we don't want to clear selection with tab
2240
+ if (highlitedItem) {
2241
+ handleListItemClicked({
2242
+ clickedItem: highlitedItem,
2243
+ onChange: onChange,
2244
+ setLastRemovedItem: setLastRemovedItem
2245
+ });
2246
+ }
2247
+ }
2228
2248
  }
2229
2249
  }, getDropdownProps({
2230
2250
  onClick: function onClick(e) {
@@ -2355,7 +2375,13 @@ var Dropdown = function Dropdown(_ref) {
2355
2375
  }, getToggleButtonProps({
2356
2376
  id: undefined,
2357
2377
  onKeyDown: function onKeyDown(e) {
2358
- if (selectOnTab && e.key === 'Tab') onChange == null ? void 0 : onChange(normalizedItems[highlightedIndex]);
2378
+ if (selectOnTab && e.key === 'Tab') {
2379
+ // we don't want to clear selection with tab
2380
+ var highlitedItem = normalizedItems[highlightedIndex];
2381
+ if (highlitedItem) {
2382
+ onChange == null ? void 0 : onChange(highlitedItem);
2383
+ }
2384
+ }
2359
2385
  }
2360
2386
  })), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("span", {
2361
2387
  className: classNames('eds-dropdown__selected-item__placeholder', {