@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.
@@ -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: listRef
1334
+ 'aria-multiselectable': isMultiselect
1335
+ }, {
1336
+ suppressRefError: true
1336
1337
  }), {
1338
+ ref: listRef,
1337
1339
  className: "eds-dropdown__list",
1338
1340
  style: _extends({
1339
1341
  display: isOpen ? 'inline-block' : 'none'
@@ -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
  };
@@ -1553,7 +1558,7 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1553
1558
  var handleListItemClicked = function handleListItemClicked(_ref2) {
1554
1559
  var clickedItem = _ref2.clickedItem,
1555
1560
  onChange = _ref2.onChange,
1556
- setLastRemovedItem = _ref2.setLastRemovedItem;
1561
+ setLastRemovedItem = _ref2.setLastClickedItem;
1557
1562
  if (clickedItemIsSelectAll(clickedItem)) {
1558
1563
  if (allListItemsAreSelected) {
1559
1564
  setLastRemovedItem(selectAll);
@@ -1603,40 +1608,23 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1603
1608
  unselectAllListItems: unselectAllListItems
1604
1609
  };
1605
1610
  };
1611
+ /* end multiselect utils */
1612
+ /* start a11y utils */
1613
+ // called when the state changes:
1614
+ // selectedItem, highlightedIndex, inputValue or isOpen.
1606
1615
  function getA11yStatusMessage(options) {
1607
1616
  var isOpen = options.isOpen,
1608
- resultCount = options.resultCount,
1609
- previousResultCount = options.previousResultCount,
1610
1617
  _options$selectAllIte = options.selectAllItemIncluded,
1611
1618
  selectAllItemIncluded = _options$selectAllIte === void 0 ? false : _options$selectAllIte,
1612
- _options$ariaLabelNoR = options.ariaLabelNoResults,
1613
- ariaLabelNoResults = _options$ariaLabelNoR === void 0 ? 'Ingen resultater' : _options$ariaLabelNoR;
1619
+ resultCount = options.resultCount;
1614
1620
  if (!isOpen) {
1615
1621
  return '';
1616
1622
  }
1617
1623
  var resultCountWithoutSelectAll = selectAllItemIncluded ? resultCount - 1 : resultCount;
1618
1624
  if (resultCountWithoutSelectAll === 0) {
1619
- return ariaLabelNoResults;
1620
- }
1621
- if (resultCount !== previousResultCount) {
1622
- return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med enter.";
1625
+ return 'Ingen resultater';
1623
1626
  }
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.";
1627
+ return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med Enter.";
1640
1628
  }
1641
1629
  /* end a11y utils */
1642
1630
 
@@ -1801,11 +1789,10 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1801
1789
  }
1802
1790
  },
1803
1791
  // 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);
1792
+ getA11yStatusMessage: function getA11yStatusMessage$1(options) {
1793
+ return getA11yStatusMessage(_extends({}, options, {
1794
+ resultCount: listItems.length
1795
+ }));
1809
1796
  }
1810
1797
  }, rest)),
1811
1798
  isOpen = _useCombobox.isOpen,
@@ -1900,11 +1887,17 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1900
1887
  },
1901
1888
  onKeyDown: function onKeyDown(e) {
1902
1889
  if (selectOnTab && isOpen && e.key === 'Tab') onChange == null ? void 0 : onChange(listItems[highlightedIndex]);
1903
- },
1890
+ }
1891
+ }, {
1892
+ suppressRefError: true
1893
+ }), {
1904
1894
  ref: inputRef
1905
- }))), React.createElement(DropdownList, {
1895
+ })), React.createElement(DropdownList, {
1906
1896
  ariaLabelChosenSingular: ariaLabelChosenSingular,
1907
1897
  ariaLabelSelectedItem: ariaLabelSelectedItem,
1898
+ getItemProps: getItemProps,
1899
+ getMenuProps: getMenuProps,
1900
+ highlightedIndex: highlightedIndex,
1908
1901
  isOpen: isOpen,
1909
1902
  listItems: listItems,
1910
1903
  listStyle: _extends({}, floatingStyles, listStyle),
@@ -1912,9 +1905,6 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1912
1905
  loading: loading,
1913
1906
  loadingText: loadingText,
1914
1907
  noMatchesText: noMatchesText,
1915
- getItemProps: getItemProps,
1916
- getMenuProps: getMenuProps,
1917
- highlightedIndex: highlightedIndex,
1918
1908
  selectedItems: selectedItem !== null ? [selectedItem] : []
1919
1909
  }));
1920
1910
  };
@@ -1979,8 +1969,7 @@ var MultiSelect = function MultiSelect(_ref) {
1979
1969
  lastHighlightedIndex = _React$useState[0],
1980
1970
  setLastHighlightedIndex = _React$useState[1];
1981
1971
  var _React$useState2 = React.useState(undefined),
1982
- lastRemovedItem = _React$useState2[0],
1983
- setLastRemovedItem = _React$useState2[1];
1972
+ setLastClickedItem = _React$useState2[1];
1984
1973
  var inputRef = useRef(null);
1985
1974
  useEffect(function () {
1986
1975
  //@ts-expect-error this is done to aid developers debug wrong prop usage
@@ -2036,7 +2025,9 @@ var MultiSelect = function MultiSelect(_ref) {
2036
2025
  selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState;
2037
2026
  var _useMultipleSelection = useMultipleSelection({
2038
2027
  selectedItems: selectedItems,
2028
+ // @ts-expect-error prop missing from library types
2039
2029
  itemToString: itemToString,
2030
+ itemToKey: itemToKey,
2040
2031
  onStateChange: function onStateChange(_ref4) {
2041
2032
  var newSelectedItems = _ref4.selectedItems,
2042
2033
  type = _ref4.type;
@@ -2050,13 +2041,6 @@ var MultiSelect = function MultiSelect(_ref) {
2050
2041
  break;
2051
2042
  }
2052
2043
  }
2053
- },
2054
- // Accessibility
2055
- getA11yRemovalMessage: function getA11yRemovalMessage$1(options) {
2056
- return getA11yRemovalMessage(_extends({}, options, {
2057
- selectAllItem: selectAll,
2058
- removedItem: lastRemovedItem
2059
- }));
2060
2044
  }
2061
2045
  }),
2062
2046
  getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
@@ -2105,7 +2089,7 @@ var MultiSelect = function MultiSelect(_ref) {
2105
2089
  handleListItemClicked({
2106
2090
  clickedItem: listItems[changes.highlightedIndex],
2107
2091
  onChange: onChange,
2108
- setLastRemovedItem: setLastRemovedItem
2092
+ setLastClickedItem: setLastClickedItem
2109
2093
  });
2110
2094
  }
2111
2095
  }
@@ -2156,7 +2140,7 @@ var MultiSelect = function MultiSelect(_ref) {
2156
2140
  handleListItemClicked({
2157
2141
  clickedItem: clickedItem,
2158
2142
  onChange: onChange,
2159
- setLastRemovedItem: setLastRemovedItem
2143
+ setLastClickedItem: setLastClickedItem
2160
2144
  });
2161
2145
  }
2162
2146
  }
@@ -2164,14 +2148,8 @@ var MultiSelect = function MultiSelect(_ref) {
2164
2148
  // Accessibility
2165
2149
  getA11yStatusMessage: function getA11yStatusMessage$1(options) {
2166
2150
  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
2151
+ selectAllItemIncluded: !hideSelectAll,
2152
+ resultCount: listItems.length
2175
2153
  }));
2176
2154
  }
2177
2155
  }, rest)),
@@ -2263,7 +2241,7 @@ var MultiSelect = function MultiSelect(_ref) {
2263
2241
  handleListItemClicked({
2264
2242
  clickedItem: selectedItem,
2265
2243
  onChange: onChange,
2266
- setLastRemovedItem: setLastRemovedItem
2244
+ setLastClickedItem: setLastClickedItem
2267
2245
  });
2268
2246
  inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
2269
2247
  },
@@ -2289,16 +2267,19 @@ var MultiSelect = function MultiSelect(_ref) {
2289
2267
  handleListItemClicked({
2290
2268
  clickedItem: highlitedItem,
2291
2269
  onChange: onChange,
2292
- setLastRemovedItem: setLastRemovedItem
2270
+ setLastClickedItem: setLastClickedItem
2293
2271
  });
2294
2272
  }
2295
2273
  }
2296
2274
  }
2297
2275
  }, getDropdownProps({
2298
2276
  preventKeyAction: isOpen,
2299
- ref: inputRef,
2300
2277
  value: inputValue != null ? inputValue : EMPTY_INPUT
2301
- })))))), React.createElement(DropdownList, {
2278
+ })), {
2279
+ suppressRefError: true
2280
+ }), {
2281
+ ref: inputRef
2282
+ }))), React.createElement(DropdownList, {
2302
2283
  ariaLabelChosenSingular: ariaLabelChosenSingular,
2303
2284
  ariaLabelSelectedItem: ariaLabelSelectedItem,
2304
2285
  getItemProps: getItemProps,
@@ -2381,6 +2362,7 @@ var Dropdown = function Dropdown(_ref) {
2381
2362
  itemToString: itemToString
2382
2363
  }),
2383
2364
  isOpen = _useSelect.isOpen,
2365
+ openMenu = _useSelect.openMenu,
2384
2366
  getItemProps = _useSelect.getItemProps,
2385
2367
  getLabelProps = _useSelect.getLabelProps,
2386
2368
  getMenuProps = _useSelect.getMenuProps,
@@ -2427,6 +2409,9 @@ var Dropdown = function Dropdown(_ref) {
2427
2409
  labelId: getLabelProps().id,
2428
2410
  labelProps: getLabelProps(),
2429
2411
  labelTooltip: labelTooltip,
2412
+ onClick: function onClick(e) {
2413
+ if (e.target === e.currentTarget) openMenu();
2414
+ },
2430
2415
  prepend: prepend,
2431
2416
  readOnly: readOnly,
2432
2417
  ref: refs.setReference,
@@ -2444,9 +2429,12 @@ var Dropdown = function Dropdown(_ref) {
2444
2429
  onChange == null ? void 0 : onChange(highlitedItem);
2445
2430
  }
2446
2431
  }
2447
- },
2432
+ }
2433
+ }, {
2434
+ suppressRefError: true
2435
+ }), {
2448
2436
  ref: toggleButtonRef
2449
- })), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("div", {
2437
+ }), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("div", {
2450
2438
  className: classNames('eds-dropdown__selected-item__placeholder', {
2451
2439
  'eds-dropdown__selected-item__placeholder--readonly': readOnly
2452
2440
  })