@entur/dropdown 6.0.3-beta.1 → 6.0.3-beta.3

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.
@@ -1335,9 +1335,11 @@ var DropdownList = function DropdownList(_ref) {
1335
1335
  return (
1336
1336
  // use popover from @entur/tooltip when that package upgrades to floating-ui
1337
1337
  React.createElement("ul", _extends({}, getMenuProps({
1338
- 'aria-multiselectable': isMultiselect,
1339
- ref: listRef
1338
+ 'aria-multiselectable': isMultiselect
1339
+ }, {
1340
+ suppressRefError: true
1340
1341
  }), {
1342
+ ref: listRef,
1341
1343
  className: "eds-dropdown__list",
1342
1344
  style: _extends({
1343
1345
  display: isOpen ? 'inline-block' : 'none'
@@ -1517,6 +1519,9 @@ input) {
1517
1519
  var itemToString = function itemToString(item) {
1518
1520
  return item ? item.label : '';
1519
1521
  };
1522
+ var itemToKey = function itemToKey(item) {
1523
+ return (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value);
1524
+ };
1520
1525
  var isFunctionWithQueryArgument = function isFunctionWithQueryArgument(object) {
1521
1526
  return typeof object === 'function' && object.length > 0;
1522
1527
  };
@@ -1557,7 +1562,7 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1557
1562
  var handleListItemClicked = function handleListItemClicked(_ref2) {
1558
1563
  var clickedItem = _ref2.clickedItem,
1559
1564
  onChange = _ref2.onChange,
1560
- setLastRemovedItem = _ref2.setLastRemovedItem;
1565
+ setLastRemovedItem = _ref2.setLastClickedItem;
1561
1566
  if (clickedItemIsSelectAll(clickedItem)) {
1562
1567
  if (allListItemsAreSelected) {
1563
1568
  setLastRemovedItem(selectAll);
@@ -1607,40 +1612,23 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1607
1612
  unselectAllListItems: unselectAllListItems
1608
1613
  };
1609
1614
  };
1615
+ /* end multiselect utils */
1616
+ /* start a11y utils */
1617
+ // called when the state changes:
1618
+ // selectedItem, highlightedIndex, inputValue or isOpen.
1610
1619
  function getA11yStatusMessage(options) {
1611
1620
  var isOpen = options.isOpen,
1612
- resultCount = options.resultCount,
1613
- previousResultCount = options.previousResultCount,
1614
1621
  _options$selectAllIte = options.selectAllItemIncluded,
1615
1622
  selectAllItemIncluded = _options$selectAllIte === void 0 ? false : _options$selectAllIte,
1616
- _options$ariaLabelNoR = options.ariaLabelNoResults,
1617
- ariaLabelNoResults = _options$ariaLabelNoR === void 0 ? 'Ingen resultater' : _options$ariaLabelNoR;
1623
+ resultCount = options.resultCount;
1618
1624
  if (!isOpen) {
1619
1625
  return '';
1620
1626
  }
1621
1627
  var resultCountWithoutSelectAll = selectAllItemIncluded ? resultCount - 1 : resultCount;
1622
1628
  if (resultCountWithoutSelectAll === 0) {
1623
- return ariaLabelNoResults;
1624
- }
1625
- if (resultCount !== previousResultCount) {
1626
- return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med enter.";
1629
+ return 'Ingen resultater';
1627
1630
  }
1628
- return '';
1629
- }
1630
- function getA11ySelectionMessage(options) {
1631
- var selectedItem = options.selectedItem,
1632
- itemToStringLocal = options.itemToString,
1633
- selectAllItem = options.selectAllItem;
1634
- if ((selectedItem == null ? void 0 : selectedItem.value) === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen valgt.';
1635
- return selectedItem ? itemToStringLocal(selectedItem) + " er valgt." : '';
1636
- }
1637
- function getA11yRemovalMessage(options) {
1638
- var itemToString = options.itemToString,
1639
- selectAllItem = options.selectAllItem,
1640
- removedItem = options.removedItem;
1641
- if (removedItem === undefined) return '';
1642
- if (removedItem.value === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen fjernet fra valgte.';
1643
- return itemToString(removedItem) + " fjernet fra valgte.";
1631
+ return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med Enter.";
1644
1632
  }
1645
1633
  /* end a11y utils */
1646
1634
 
@@ -1805,11 +1793,10 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1805
1793
  }
1806
1794
  },
1807
1795
  // Accessibility
1808
- getA11yStatusMessage: getA11yStatusMessage,
1809
- // The following A11y-helper does not work due to a bug (https://github.com/downshift-js/downshift/issues/1227)
1810
- // but is left here for when it is fixed
1811
- getA11ySelectionMessage: function getA11ySelectionMessage$1(options) {
1812
- return getA11ySelectionMessage(options);
1796
+ getA11yStatusMessage: function getA11yStatusMessage$1(options) {
1797
+ return getA11yStatusMessage(_extends({}, options, {
1798
+ resultCount: listItems.length
1799
+ }));
1813
1800
  }
1814
1801
  }, rest)),
1815
1802
  isOpen = _useCombobox.isOpen,
@@ -1904,11 +1891,17 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1904
1891
  },
1905
1892
  onKeyDown: function onKeyDown(e) {
1906
1893
  if (selectOnTab && isOpen && e.key === 'Tab') onChange == null ? void 0 : onChange(listItems[highlightedIndex]);
1907
- },
1894
+ }
1895
+ }, {
1896
+ suppressRefError: true
1897
+ }), {
1908
1898
  ref: inputRef
1909
- }))), React.createElement(DropdownList, {
1899
+ })), React.createElement(DropdownList, {
1910
1900
  ariaLabelChosenSingular: ariaLabelChosenSingular,
1911
1901
  ariaLabelSelectedItem: ariaLabelSelectedItem,
1902
+ getItemProps: getItemProps,
1903
+ getMenuProps: getMenuProps,
1904
+ highlightedIndex: highlightedIndex,
1912
1905
  isOpen: isOpen,
1913
1906
  listItems: listItems,
1914
1907
  listStyle: _extends({}, floatingStyles, listStyle),
@@ -1916,9 +1909,6 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1916
1909
  loading: loading,
1917
1910
  loadingText: loadingText,
1918
1911
  noMatchesText: noMatchesText,
1919
- getItemProps: getItemProps,
1920
- getMenuProps: getMenuProps,
1921
- highlightedIndex: highlightedIndex,
1922
1912
  selectedItems: selectedItem !== null ? [selectedItem] : []
1923
1913
  }));
1924
1914
  };
@@ -1983,8 +1973,7 @@ var MultiSelect = function MultiSelect(_ref) {
1983
1973
  lastHighlightedIndex = _React$useState[0],
1984
1974
  setLastHighlightedIndex = _React$useState[1];
1985
1975
  var _React$useState2 = React.useState(undefined),
1986
- lastRemovedItem = _React$useState2[0],
1987
- setLastRemovedItem = _React$useState2[1];
1976
+ setLastClickedItem = _React$useState2[1];
1988
1977
  var inputRef = React.useRef(null);
1989
1978
  React.useEffect(function () {
1990
1979
  //@ts-expect-error this is done to aid developers debug wrong prop usage
@@ -2040,7 +2029,9 @@ var MultiSelect = function MultiSelect(_ref) {
2040
2029
  selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState;
2041
2030
  var _useMultipleSelection = Downshift.useMultipleSelection({
2042
2031
  selectedItems: selectedItems,
2032
+ // @ts-expect-error prop missing from library types
2043
2033
  itemToString: itemToString,
2034
+ itemToKey: itemToKey,
2044
2035
  onStateChange: function onStateChange(_ref4) {
2045
2036
  var newSelectedItems = _ref4.selectedItems,
2046
2037
  type = _ref4.type;
@@ -2054,13 +2045,6 @@ var MultiSelect = function MultiSelect(_ref) {
2054
2045
  break;
2055
2046
  }
2056
2047
  }
2057
- },
2058
- // Accessibility
2059
- getA11yRemovalMessage: function getA11yRemovalMessage$1(options) {
2060
- return getA11yRemovalMessage(_extends({}, options, {
2061
- selectAllItem: selectAll,
2062
- removedItem: lastRemovedItem
2063
- }));
2064
2048
  }
2065
2049
  }),
2066
2050
  getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
@@ -2109,7 +2093,7 @@ var MultiSelect = function MultiSelect(_ref) {
2109
2093
  handleListItemClicked({
2110
2094
  clickedItem: listItems[changes.highlightedIndex],
2111
2095
  onChange: onChange,
2112
- setLastRemovedItem: setLastRemovedItem
2096
+ setLastClickedItem: setLastClickedItem
2113
2097
  });
2114
2098
  }
2115
2099
  }
@@ -2160,7 +2144,7 @@ var MultiSelect = function MultiSelect(_ref) {
2160
2144
  handleListItemClicked({
2161
2145
  clickedItem: clickedItem,
2162
2146
  onChange: onChange,
2163
- setLastRemovedItem: setLastRemovedItem
2147
+ setLastClickedItem: setLastClickedItem
2164
2148
  });
2165
2149
  }
2166
2150
  }
@@ -2168,14 +2152,8 @@ var MultiSelect = function MultiSelect(_ref) {
2168
2152
  // Accessibility
2169
2153
  getA11yStatusMessage: function getA11yStatusMessage$1(options) {
2170
2154
  return getA11yStatusMessage(_extends({}, options, {
2171
- selectAllItemIncluded: !hideSelectAll
2172
- }));
2173
- },
2174
- // The following A11y-helper does not work due to a bug (https://github.com/downshift-js/downshift/issues/1227)
2175
- // but is left here for when it is fixed
2176
- getA11ySelectionMessage: function getA11ySelectionMessage$1(options) {
2177
- return getA11ySelectionMessage(_extends({}, options, {
2178
- selectAllItem: selectAll
2155
+ selectAllItemIncluded: !hideSelectAll,
2156
+ resultCount: listItems.length
2179
2157
  }));
2180
2158
  }
2181
2159
  }, rest)),
@@ -2267,7 +2245,7 @@ var MultiSelect = function MultiSelect(_ref) {
2267
2245
  handleListItemClicked({
2268
2246
  clickedItem: selectedItem,
2269
2247
  onChange: onChange,
2270
- setLastRemovedItem: setLastRemovedItem
2248
+ setLastClickedItem: setLastClickedItem
2271
2249
  });
2272
2250
  inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
2273
2251
  },
@@ -2293,16 +2271,19 @@ var MultiSelect = function MultiSelect(_ref) {
2293
2271
  handleListItemClicked({
2294
2272
  clickedItem: highlitedItem,
2295
2273
  onChange: onChange,
2296
- setLastRemovedItem: setLastRemovedItem
2274
+ setLastClickedItem: setLastClickedItem
2297
2275
  });
2298
2276
  }
2299
2277
  }
2300
2278
  }
2301
2279
  }, getDropdownProps({
2302
2280
  preventKeyAction: isOpen,
2303
- ref: inputRef,
2304
2281
  value: inputValue != null ? inputValue : EMPTY_INPUT
2305
- })))))), React.createElement(DropdownList, {
2282
+ })), {
2283
+ suppressRefError: true
2284
+ }), {
2285
+ ref: inputRef
2286
+ }))), React.createElement(DropdownList, {
2306
2287
  ariaLabelChosenSingular: ariaLabelChosenSingular,
2307
2288
  ariaLabelSelectedItem: ariaLabelSelectedItem,
2308
2289
  getItemProps: getItemProps,
@@ -2385,6 +2366,7 @@ var Dropdown = function Dropdown(_ref) {
2385
2366
  itemToString: itemToString
2386
2367
  }),
2387
2368
  isOpen = _useSelect.isOpen,
2369
+ openMenu = _useSelect.openMenu,
2388
2370
  getItemProps = _useSelect.getItemProps,
2389
2371
  getLabelProps = _useSelect.getLabelProps,
2390
2372
  getMenuProps = _useSelect.getMenuProps,
@@ -2431,6 +2413,9 @@ var Dropdown = function Dropdown(_ref) {
2431
2413
  labelId: getLabelProps().id,
2432
2414
  labelProps: getLabelProps(),
2433
2415
  labelTooltip: labelTooltip,
2416
+ onClick: function onClick(e) {
2417
+ if (e.target === e.currentTarget) openMenu();
2418
+ },
2434
2419
  prepend: prepend,
2435
2420
  readOnly: readOnly,
2436
2421
  ref: refs.setReference,
@@ -2448,9 +2433,12 @@ var Dropdown = function Dropdown(_ref) {
2448
2433
  onChange == null ? void 0 : onChange(highlitedItem);
2449
2434
  }
2450
2435
  }
2451
- },
2436
+ }
2437
+ }, {
2438
+ suppressRefError: true
2439
+ }), {
2452
2440
  ref: toggleButtonRef
2453
- })), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("div", {
2441
+ }), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("div", {
2454
2442
  className: classNames('eds-dropdown__selected-item__placeholder', {
2455
2443
  'eds-dropdown__selected-item__placeholder--readonly': readOnly
2456
2444
  })