@entur/dropdown 6.0.2 → 6.0.3-RC.1

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.
@@ -1331,9 +1331,11 @@ var DropdownList = function DropdownList(_ref) {
1331
1331
  return (
1332
1332
  // use popover from @entur/tooltip when that package upgrades to floating-ui
1333
1333
  React.createElement("ul", _extends({}, getMenuProps({
1334
- 'aria-multiselectable': isMultiselect,
1335
- ref: mergeRefs(getMenuProps().ref, listRef)
1334
+ 'aria-multiselectable': isMultiselect
1335
+ }, {
1336
+ suppressRefError: true
1336
1337
  }), {
1338
+ ref: mergeRefs(listRef, getMenuProps().ref),
1337
1339
  className: "eds-dropdown__list",
1338
1340
  style: _extends({
1339
1341
  display: isOpen ? 'inline-block' : 'none'
@@ -1342,14 +1344,13 @@ var DropdownList = function DropdownList(_ref) {
1342
1344
  var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1343
1345
  if (itemIsSelectAll && listItems.length <= 2) return null;
1344
1346
  return React.createElement("li", _extends({
1345
- key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1346
1347
  className: classNames('eds-dropdown__list__item', {
1347
1348
  'eds-dropdown__list__item--select-all': itemIsSelectAll,
1348
1349
  'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1349
1350
  'eds-dropdown__list__item--selected': !isMultiselect && isItemSelected(item)
1350
- })
1351
+ }),
1352
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value)
1351
1353
  }, getItemProps({
1352
- key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1353
1354
  // @ts-expect-error Since getItemProps expects the same item type
1354
1355
  // here as items, it throws error when selectAllItem is a string.
1355
1356
  // This does, however, not cause any functional issues.
@@ -1399,7 +1400,8 @@ var SelectedItemTag = function SelectedItemTag(_ref) {
1399
1400
  key: selectedItem.value,
1400
1401
  "aria-live": "polite"
1401
1402
  }), React.createElement("span", {
1402
- "aria-hidden": "true"
1403
+ "aria-hidden": "true",
1404
+ className: "eds-dropdown__selected-item-tag__text"
1403
1405
  }, selectedItem.label));
1404
1406
  };
1405
1407
  var FieldAppend$1 = function FieldAppend(_ref3) {
@@ -1513,6 +1515,9 @@ input) {
1513
1515
  var itemToString = function itemToString(item) {
1514
1516
  return item ? item.label : '';
1515
1517
  };
1518
+ var itemToKey = function itemToKey(item) {
1519
+ return (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value);
1520
+ };
1516
1521
  var isFunctionWithQueryArgument = function isFunctionWithQueryArgument(object) {
1517
1522
  return typeof object === 'function' && object.length > 0;
1518
1523
  };
@@ -1552,17 +1557,14 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1552
1557
  };
1553
1558
  var handleListItemClicked = function handleListItemClicked(_ref2) {
1554
1559
  var clickedItem = _ref2.clickedItem,
1555
- onChange = _ref2.onChange,
1556
- setLastRemovedItem = _ref2.setLastRemovedItem;
1560
+ onChange = _ref2.onChange;
1557
1561
  if (clickedItemIsSelectAll(clickedItem)) {
1558
1562
  if (allListItemsAreSelected) {
1559
- setLastRemovedItem(selectAll);
1560
1563
  return unselectAllListItems(onChange);
1561
1564
  }
1562
1565
  return selectAllUnselectedItemsInListItems(onChange);
1563
1566
  }
1564
1567
  if (clickedItemIsInSelectedItems(clickedItem)) {
1565
- setLastRemovedItem(clickedItem);
1566
1568
  return removeClickedItemFromSelectedItems(clickedItem, onChange);
1567
1569
  }
1568
1570
  addClickedItemToSelectedItems(clickedItem, onChange);
@@ -1603,40 +1605,23 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1603
1605
  unselectAllListItems: unselectAllListItems
1604
1606
  };
1605
1607
  };
1608
+ /* end multiselect utils */
1609
+ /* start a11y utils */
1610
+ // called when the state changes:
1611
+ // selectedItem, highlightedIndex, inputValue or isOpen.
1606
1612
  function getA11yStatusMessage(options) {
1607
1613
  var isOpen = options.isOpen,
1608
- resultCount = options.resultCount,
1609
- previousResultCount = options.previousResultCount,
1610
1614
  _options$selectAllIte = options.selectAllItemIncluded,
1611
1615
  selectAllItemIncluded = _options$selectAllIte === void 0 ? false : _options$selectAllIte,
1612
- _options$ariaLabelNoR = options.ariaLabelNoResults,
1613
- ariaLabelNoResults = _options$ariaLabelNoR === void 0 ? 'Ingen resultater' : _options$ariaLabelNoR;
1616
+ resultCount = options.resultCount;
1614
1617
  if (!isOpen) {
1615
1618
  return '';
1616
1619
  }
1617
1620
  var resultCountWithoutSelectAll = selectAllItemIncluded ? resultCount - 1 : resultCount;
1618
1621
  if (resultCountWithoutSelectAll === 0) {
1619
- return ariaLabelNoResults;
1622
+ return 'Ingen resultater';
1620
1623
  }
1621
- if (resultCount !== previousResultCount) {
1622
- return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med enter.";
1623
- }
1624
- return '';
1625
- }
1626
- function getA11ySelectionMessage(options) {
1627
- var selectedItem = options.selectedItem,
1628
- itemToStringLocal = options.itemToString,
1629
- selectAllItem = options.selectAllItem;
1630
- if ((selectedItem == null ? void 0 : selectedItem.value) === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen valgt.';
1631
- return selectedItem ? itemToStringLocal(selectedItem) + " er valgt." : '';
1632
- }
1633
- function getA11yRemovalMessage(options) {
1634
- var itemToString = options.itemToString,
1635
- selectAllItem = options.selectAllItem,
1636
- removedItem = options.removedItem;
1637
- if (removedItem === undefined) return '';
1638
- if (removedItem.value === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen fjernet fra valgte.';
1639
- return itemToString(removedItem) + " fjernet fra valgte.";
1624
+ return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med Enter.";
1640
1625
  }
1641
1626
  /* end a11y utils */
1642
1627
 
@@ -1801,11 +1786,10 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1801
1786
  }
1802
1787
  },
1803
1788
  // Accessibility
1804
- getA11yStatusMessage: getA11yStatusMessage,
1805
- // The following A11y-helper does not work due to a bug (https://github.com/downshift-js/downshift/issues/1227)
1806
- // but is left here for when it is fixed
1807
- getA11ySelectionMessage: function getA11ySelectionMessage$1(options) {
1808
- return getA11ySelectionMessage(options);
1789
+ getA11yStatusMessage: function getA11yStatusMessage$1(options) {
1790
+ return getA11yStatusMessage(_extends({}, options, {
1791
+ resultCount: listItems.length
1792
+ }));
1809
1793
  }
1810
1794
  }, rest)),
1811
1795
  isOpen = _useCombobox.isOpen,
@@ -1905,6 +1889,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1905
1889
  }))), React.createElement(DropdownList, {
1906
1890
  ariaLabelChosenSingular: ariaLabelChosenSingular,
1907
1891
  ariaLabelSelectedItem: ariaLabelSelectedItem,
1892
+ getItemProps: getItemProps,
1893
+ getMenuProps: getMenuProps,
1894
+ highlightedIndex: highlightedIndex,
1908
1895
  isOpen: isOpen,
1909
1896
  listItems: listItems,
1910
1897
  listStyle: _extends({}, floatingStyles, listStyle),
@@ -1912,9 +1899,6 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1912
1899
  loading: loading,
1913
1900
  loadingText: loadingText,
1914
1901
  noMatchesText: noMatchesText,
1915
- getItemProps: getItemProps,
1916
- getMenuProps: getMenuProps,
1917
- highlightedIndex: highlightedIndex,
1918
1902
  selectedItems: selectedItem !== null ? [selectedItem] : []
1919
1903
  }));
1920
1904
  };
@@ -1978,14 +1962,12 @@ var MultiSelect = function MultiSelect(_ref) {
1978
1962
  var _React$useState = React.useState(0),
1979
1963
  lastHighlightedIndex = _React$useState[0],
1980
1964
  setLastHighlightedIndex = _React$useState[1];
1981
- var _React$useState2 = React.useState(undefined),
1982
- lastRemovedItem = _React$useState2[0],
1983
- setLastRemovedItem = _React$useState2[1];
1984
1965
  var inputRef = useRef(null);
1985
1966
  useEffect(function () {
1986
1967
  //@ts-expect-error this is done to aid developers debug wrong prop usage
1987
1968
  if (rest.selectedItem !== undefined) console.warn("Incorrect 'selectedItem' prop found, did you mean to use 'selectedItems?");
1988
- }, []);
1969
+ //@ts-expect-error selectedItem should not actually exist in rest
1970
+ }, [rest.selectedItem]);
1989
1971
  var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
1990
1972
  normalizedItems = _useResolvedItems.items,
1991
1973
  loading = _useResolvedItems.loading,
@@ -2036,7 +2018,9 @@ var MultiSelect = function MultiSelect(_ref) {
2036
2018
  selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState;
2037
2019
  var _useMultipleSelection = useMultipleSelection({
2038
2020
  selectedItems: selectedItems,
2021
+ // @ts-expect-error prop missing from library types
2039
2022
  itemToString: itemToString,
2023
+ itemToKey: itemToKey,
2040
2024
  onStateChange: function onStateChange(_ref4) {
2041
2025
  var newSelectedItems = _ref4.selectedItems,
2042
2026
  type = _ref4.type;
@@ -2050,13 +2034,6 @@ var MultiSelect = function MultiSelect(_ref) {
2050
2034
  break;
2051
2035
  }
2052
2036
  }
2053
- },
2054
- // Accessibility
2055
- getA11yRemovalMessage: function getA11yRemovalMessage$1(options) {
2056
- return getA11yRemovalMessage(_extends({}, options, {
2057
- selectAllItem: selectAll,
2058
- removedItem: lastRemovedItem
2059
- }));
2060
2037
  }
2061
2038
  }),
2062
2039
  getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
@@ -2104,8 +2081,7 @@ var MultiSelect = function MultiSelect(_ref) {
2104
2081
  if (isOpen && changes.highlightedIndex !== undefined) {
2105
2082
  handleListItemClicked({
2106
2083
  clickedItem: listItems[changes.highlightedIndex],
2107
- onChange: onChange,
2108
- setLastRemovedItem: setLastRemovedItem
2084
+ onChange: onChange
2109
2085
  });
2110
2086
  }
2111
2087
  }
@@ -2155,8 +2131,7 @@ var MultiSelect = function MultiSelect(_ref) {
2155
2131
  {
2156
2132
  handleListItemClicked({
2157
2133
  clickedItem: clickedItem,
2158
- onChange: onChange,
2159
- setLastRemovedItem: setLastRemovedItem
2134
+ onChange: onChange
2160
2135
  });
2161
2136
  }
2162
2137
  }
@@ -2164,14 +2139,8 @@ var MultiSelect = function MultiSelect(_ref) {
2164
2139
  // Accessibility
2165
2140
  getA11yStatusMessage: function getA11yStatusMessage$1(options) {
2166
2141
  return getA11yStatusMessage(_extends({}, options, {
2167
- selectAllItemIncluded: !hideSelectAll
2168
- }));
2169
- },
2170
- // The following A11y-helper does not work due to a bug (https://github.com/downshift-js/downshift/issues/1227)
2171
- // but is left here for when it is fixed
2172
- getA11ySelectionMessage: function getA11ySelectionMessage$1(options) {
2173
- return getA11ySelectionMessage(_extends({}, options, {
2174
- selectAllItem: selectAll
2142
+ selectAllItemIncluded: !hideSelectAll,
2143
+ resultCount: listItems.length
2175
2144
  }));
2176
2145
  }
2177
2146
  }, rest)),
@@ -2262,8 +2231,7 @@ var MultiSelect = function MultiSelect(_ref) {
2262
2231
  var _inputRef$current6;
2263
2232
  handleListItemClicked({
2264
2233
  clickedItem: selectedItem,
2265
- onChange: onChange,
2266
- setLastRemovedItem: setLastRemovedItem
2234
+ onChange: onChange
2267
2235
  });
2268
2236
  inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
2269
2237
  },
@@ -2288,16 +2256,15 @@ var MultiSelect = function MultiSelect(_ref) {
2288
2256
  if (highlitedItem) {
2289
2257
  handleListItemClicked({
2290
2258
  clickedItem: highlitedItem,
2291
- onChange: onChange,
2292
- setLastRemovedItem: setLastRemovedItem
2259
+ onChange: onChange
2293
2260
  });
2294
2261
  }
2295
2262
  }
2296
2263
  }
2297
2264
  }, getDropdownProps({
2298
2265
  preventKeyAction: isOpen,
2299
- ref: inputRef,
2300
- value: inputValue != null ? inputValue : EMPTY_INPUT
2266
+ value: inputValue != null ? inputValue : EMPTY_INPUT,
2267
+ ref: inputRef
2301
2268
  })))))), React.createElement(DropdownList, {
2302
2269
  ariaLabelChosenSingular: ariaLabelChosenSingular,
2303
2270
  ariaLabelSelectedItem: ariaLabelSelectedItem,
@@ -2381,6 +2348,7 @@ var Dropdown = function Dropdown(_ref) {
2381
2348
  itemToString: itemToString
2382
2349
  }),
2383
2350
  isOpen = _useSelect.isOpen,
2351
+ openMenu = _useSelect.openMenu,
2384
2352
  getItemProps = _useSelect.getItemProps,
2385
2353
  getLabelProps = _useSelect.getLabelProps,
2386
2354
  getMenuProps = _useSelect.getMenuProps,
@@ -2427,6 +2395,9 @@ var Dropdown = function Dropdown(_ref) {
2427
2395
  labelId: getLabelProps().id,
2428
2396
  labelProps: getLabelProps(),
2429
2397
  labelTooltip: labelTooltip,
2398
+ onClick: function onClick(e) {
2399
+ if (e.target === e.currentTarget) openMenu();
2400
+ },
2430
2401
  prepend: prepend,
2431
2402
  readOnly: readOnly,
2432
2403
  ref: refs.setReference,