@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.
@@ -1244,6 +1244,7 @@ function SelectedItemsLabel(items) {
1244
1244
 
1245
1245
  var _excluded$5 = ["ariaLabelChosenSingular", "ariaLabelSelectedItem", "getItemProps", "getMenuProps", "inputValue", "isOpen", "highlightedIndex", "listItems", "listStyle", "loading", "loadingText", "noMatchesText", "selectAllCheckboxState", "selectAllItem", "selectedItems", "showSelectAllInList"];
1246
1246
  var DropdownList = function DropdownList(_ref) {
1247
+ var _listItems$;
1247
1248
  var _ref$ariaLabelChosenS = _ref.ariaLabelChosenSingular,
1248
1249
  ariaLabelChosenSingular = _ref$ariaLabelChosenS === void 0 ? 'valgt' : _ref$ariaLabelChosenS,
1249
1250
  _ref$ariaLabelSelecte = _ref.ariaLabelSelectedItem,
@@ -1265,10 +1266,10 @@ var DropdownList = function DropdownList(_ref) {
1265
1266
  selectedItems = _ref.selectedItems,
1266
1267
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
1267
1268
  var isMultiselect = selectAllItem !== undefined;
1268
- var isNoMatches = !loading && (listItems.length === 0 || listItems.length === 1 && listItems[0].value === (selectAllItem == null ? void 0 : selectAllItem.value));
1269
+ 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));
1269
1270
  var isItemSelected = function isItemSelected(item) {
1270
1271
  return selectedItems.some(function (selectedItem) {
1271
- return selectedItem.value === item.value && selectedItem.label === item.label;
1272
+ 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);
1272
1273
  });
1273
1274
  };
1274
1275
  var ariaLabelSelectAll = function ariaLabelSelectAll() {
@@ -1317,7 +1318,7 @@ var DropdownList = function DropdownList(_ref) {
1317
1318
  className: "eds-dropdown__list__item__text"
1318
1319
  }, item.label, React.createElement(a11y.VisuallyHidden, null, isItemSelected(item) ? ariaLabelSelectedItem : '')), item.icons && React.createElement("span", null, item.icons.map(function (Icon) {
1319
1320
  return React.createElement(Icon, {
1320
- key: item.label + item.value + Icon.displayName,
1321
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value) + (Icon == null ? void 0 : Icon.displayName),
1321
1322
  inline: true,
1322
1323
  className: "eds-dropdown__list__item__icon"
1323
1324
  });
@@ -1334,14 +1335,14 @@ var DropdownList = function DropdownList(_ref) {
1334
1335
  var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1335
1336
  if (itemIsSelectAll && listItems.length <= 2) return null;
1336
1337
  return React.createElement("li", _extends({
1337
- key: item.label + item.value,
1338
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1338
1339
  className: classNames('eds-dropdown__list__item', {
1339
1340
  'eds-dropdown__list__item--select-all': itemIsSelectAll,
1340
1341
  'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1341
1342
  'eds-dropdown__list__item--selected': !isMultiselect && isItemSelected(item)
1342
1343
  })
1343
1344
  }, getItemProps({
1344
- key: item.label + item.value,
1345
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1345
1346
  item: item,
1346
1347
  index: index
1347
1348
  })), itemIsSelectAll ? selectAllListItemContent() : listItemContent(item));
@@ -1409,13 +1410,6 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
1409
1410
  loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
1410
1411
  onClear = _ref3.onClear,
1411
1412
  selectedItems = _ref3.selectedItems;
1412
- if (loading) {
1413
- return React.createElement("div", {
1414
- className: 'eds-dropdown__appendix__toggle-button--loading-dots'
1415
- }, React.createElement(loader.LoadingDots, {
1416
- "aria-label": loadingText
1417
- }));
1418
- }
1419
1413
  if (disabled) {
1420
1414
  return null;
1421
1415
  }
@@ -1427,14 +1421,18 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
1427
1421
  labelClearSelectedItems: labelClearSelectedItems
1428
1422
  }), React.createElement("div", {
1429
1423
  className: "eds-dropdown__appendix__divider"
1430
- })), React.createElement(ToggleButton, {
1424
+ })), !loading ? React.createElement(ToggleButton, {
1431
1425
  "aria-hidden": ariaHiddenToggleButton,
1432
1426
  ariaLabelCloseList: ariaLabelCloseList,
1433
1427
  ariaLabelOpenList: ariaLabelOpenList,
1434
1428
  getToggleButtonProps: getToggleButtonProps,
1435
1429
  isOpen: isOpen,
1436
1430
  focusable: focusable
1437
- }));
1431
+ }) : React.createElement("div", {
1432
+ className: 'eds-dropdown__appendix__toggle-button--loading-dots'
1433
+ }, React.createElement(loader.LoadingDots, {
1434
+ "aria-label": loadingText
1435
+ })));
1438
1436
  };
1439
1437
  var ClearableButton = function ClearableButton(_ref4) {
1440
1438
  var onClear = _ref4.onClear,
@@ -1644,7 +1642,7 @@ var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
1644
1642
 
1645
1643
  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"];
1646
1644
  var SearchableDropdown = function SearchableDropdown(_ref) {
1647
- var _selectedItem$label;
1645
+ var _document, _selectedItem$label;
1648
1646
  var ariaLabelChosenSingular = _ref.ariaLabelChosenSingular,
1649
1647
  ariaLabelCloseList = _ref.ariaLabelCloseList,
1650
1648
  ariaLabelOpenList = _ref.ariaLabelOpenList,
@@ -1717,6 +1715,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1717
1715
  inputValue: inputValue
1718
1716
  });
1719
1717
  }, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
1718
+ var inputHasFocus = typeof document !== 'undefined' ? (inputRef == null ? void 0 : inputRef.current) === ((_document = document) == null ? void 0 : _document.activeElement) : false;
1720
1719
  var stateReducer = React.useCallback(function (_, _ref4) {
1721
1720
  var type = _ref4.type,
1722
1721
  changes = _ref4.changes;
@@ -1728,7 +1727,6 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1728
1727
  case Downshift.useCombobox.stateChangeTypes.ItemClick:
1729
1728
  case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
1730
1729
  case Downshift.useCombobox.stateChangeTypes.InputBlur:
1731
- case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1732
1730
  {
1733
1731
  updateListItems({
1734
1732
  inputValue: EMPTY_INPUT
@@ -1737,6 +1735,14 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1737
1735
  inputValue: EMPTY_INPUT
1738
1736
  });
1739
1737
  }
1738
+ case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1739
+ if (!inputHasFocus) setShowSelectedItem(true);
1740
+ updateListItems({
1741
+ inputValue: EMPTY_INPUT
1742
+ });
1743
+ return _extends({}, changes, {
1744
+ inputValue: EMPTY_INPUT
1745
+ });
1740
1746
  // remove leading whitespace, select element with spacebar on empty input, and filter list based on input
1741
1747
  case Downshift.useCombobox.stateChangeTypes.InputChange:
1742
1748
  {
@@ -1807,11 +1813,24 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1807
1813
  updateListItems({
1808
1814
  inputValue: inputValue
1809
1815
  });
1816
+ setShowSelectedItem(false);
1810
1817
  };
1811
1818
  return React.createElement("div", {
1812
1819
  className: classNames('eds-dropdown__wrapper', className),
1813
1820
  style: style
1814
1821
  }, React.createElement(form.BaseFormControl, _extends({
1822
+ className: "eds-dropdown",
1823
+ disabled: disabled,
1824
+ disableLabelAnimation: disableLabelAnimation,
1825
+ feedback: feedback,
1826
+ isFilled: selectedItem !== null || inputValue !== EMPTY_INPUT,
1827
+ label: label,
1828
+ labelId: getLabelProps().id,
1829
+ labelProps: getLabelProps(),
1830
+ prepend: prepend,
1831
+ readOnly: readOnly,
1832
+ variant: variant
1833
+ }, rest, {
1815
1834
  append: React.createElement(FieldAppend$1, {
1816
1835
  ariaLabelCloseList: ariaLabelCloseList,
1817
1836
  ariaLabelOpenList: ariaLabelOpenList,
@@ -1825,19 +1844,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1825
1844
  loadingText: loadingText,
1826
1845
  onClear: handleOnClear,
1827
1846
  selectedItems: [selectedItem]
1828
- }),
1829
- className: "eds-dropdown",
1830
- disabled: disabled,
1831
- disableLabelAnimation: disableLabelAnimation,
1832
- feedback: feedback,
1833
- isFilled: selectedItem !== null || inputValue !== EMPTY_INPUT,
1834
- label: label,
1835
- labelId: getLabelProps().id,
1836
- labelProps: getLabelProps(),
1837
- prepend: prepend,
1838
- readOnly: readOnly,
1839
- variant: variant
1840
- }, rest), React.createElement("span", {
1847
+ })
1848
+ }), React.createElement("span", {
1841
1849
  className: classNames('eds-dropdown--searchable__selected-item', {
1842
1850
  'eds-dropdown--searchable__selected-item--hidden': !showSelectedItem
1843
1851
  }),
@@ -1846,7 +1854,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1846
1854
  var _inputRef$current2;
1847
1855
  return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
1848
1856
  }
1849
- }, selectedItem == null ? void 0 : selectedItem.label), React.createElement("input", _extends({
1857
+ }, showSelectedItem ? selectedItem == null ? void 0 : selectedItem.label : ''), React.createElement("input", _extends({
1850
1858
  className: classNames('eds-dropdown__input eds-form-control', {
1851
1859
  'eds-dropdown__input--hidden': showSelectedItem
1852
1860
  }),
@@ -1863,7 +1871,13 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1863
1871
  setShowSelectedItem(false);
1864
1872
  },
1865
1873
  onKeyDown: function onKeyDown(e) {
1866
- if (selectOnTab && e.key === 'Tab') onChange(listItems[highlightedIndex]);
1874
+ if (selectOnTab && e.key === 'Tab') {
1875
+ var highlitedItem = listItems[highlightedIndex];
1876
+ if (highlitedItem) {
1877
+ // we don't want to clear selection with tab
1878
+ onChange == null ? void 0 : onChange(highlitedItem);
1879
+ }
1880
+ }
1867
1881
  },
1868
1882
  ref: inputRef
1869
1883
  })))), React.createElement(DropdownList, {
@@ -2198,7 +2212,7 @@ var MultiSelect = function MultiSelect(_ref) {
2198
2212
  disabled: disabled,
2199
2213
  getSelectedItemProps: getSelectedItemProps,
2200
2214
  index: index,
2201
- key: selectedItem.value,
2215
+ key: selectedItem == null ? void 0 : selectedItem.value,
2202
2216
  readOnly: readOnly,
2203
2217
  removeSelectedItem: function removeSelectedItem() {
2204
2218
  var _inputRef$current6;
@@ -2224,11 +2238,17 @@ var MultiSelect = function MultiSelect(_ref) {
2224
2238
  disabled: readOnly || disabled
2225
2239
  }, getInputProps(_extends({
2226
2240
  onKeyDown: function onKeyDown(e) {
2227
- if (selectOnTab && e.key === 'Tab') handleListItemClicked({
2228
- clickedItem: listItems[highlightedIndex],
2229
- onChange: onChange,
2230
- setLastRemovedItem: setLastRemovedItem
2231
- });
2241
+ if (selectOnTab && e.key === 'Tab') {
2242
+ var highlitedItem = listItems[highlightedIndex];
2243
+ // we don't want to clear selection with tab
2244
+ if (highlitedItem) {
2245
+ handleListItemClicked({
2246
+ clickedItem: highlitedItem,
2247
+ onChange: onChange,
2248
+ setLastRemovedItem: setLastRemovedItem
2249
+ });
2250
+ }
2251
+ }
2232
2252
  }
2233
2253
  }, getDropdownProps({
2234
2254
  onClick: function onClick(e) {
@@ -2359,7 +2379,13 @@ var Dropdown = function Dropdown(_ref) {
2359
2379
  }, getToggleButtonProps({
2360
2380
  id: undefined,
2361
2381
  onKeyDown: function onKeyDown(e) {
2362
- if (selectOnTab && e.key === 'Tab') onChange == null ? void 0 : onChange(normalizedItems[highlightedIndex]);
2382
+ if (selectOnTab && e.key === 'Tab') {
2383
+ // we don't want to clear selection with tab
2384
+ var highlitedItem = normalizedItems[highlightedIndex];
2385
+ if (highlitedItem) {
2386
+ onChange == null ? void 0 : onChange(highlitedItem);
2387
+ }
2388
+ }
2363
2389
  }
2364
2390
  })), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("span", {
2365
2391
  className: classNames('eds-dropdown__selected-item__placeholder', {