@entur/dropdown 6.0.3-beta.2 → 6.0.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.
@@ -1,19 +1,19 @@
1
1
  import React from 'react';
2
- import { UseComboboxGetMenuPropsOptions, GetPropsCommonOptions, UseComboboxGetItemPropsOptions } from 'downshift';
2
+ import { UseComboboxPropGetters, UseSelectPropGetters } from 'downshift';
3
3
  import { NormalizedDropdownItemType } from '../types';
4
4
  import './DropdownList.scss';
5
5
  type DropdownListProps<ValueType> = {
6
6
  ariaLabelChosenSingular?: string;
7
7
  ariaLabelSelectedItem?: string;
8
- getItemProps: (options: UseComboboxGetItemPropsOptions<NormalizedDropdownItemType<ValueType>>) => any;
9
- getMenuProps: (options?: UseComboboxGetMenuPropsOptions | undefined, otherOptions?: GetPropsCommonOptions | undefined) => any;
8
+ getMenuProps: UseComboboxPropGetters<ValueType>['getMenuProps'] | UseSelectPropGetters<ValueType>['getMenuProps'];
9
+ getItemProps: UseComboboxPropGetters<ValueType>['getItemProps'] | UseSelectPropGetters<ValueType>['getItemProps'];
10
10
  highlightedIndex: number;
11
11
  isOpen: boolean;
12
12
  listItems: NormalizedDropdownItemType<ValueType | string>[];
13
13
  listStyle: {
14
14
  [key: string]: any;
15
15
  } | undefined;
16
- listRef?: React.Ref<HTMLUListElement>;
16
+ setListRef: (node: HTMLElement | null) => void;
17
17
  loading?: boolean;
18
18
  loadingText?: string;
19
19
  noMatchesText?: string;
@@ -22,5 +22,5 @@ type DropdownListProps<ValueType> = {
22
22
  selectedItems: NormalizedDropdownItemType<ValueType>[];
23
23
  [key: string]: any;
24
24
  };
25
- export declare const DropdownList: <ValueType extends unknown>({ ariaLabelChosenSingular, ariaLabelSelectedItem, getItemProps, getMenuProps, inputValue, isOpen, highlightedIndex, listItems, listStyle, listRef, loading, loadingText, noMatchesText, selectAllCheckboxState, selectAllItem, selectedItems, showSelectAllInList, ...rest }: DropdownListProps<ValueType>) => React.JSX.Element;
25
+ export declare const DropdownList: <ValueType extends unknown>({ ariaLabelChosenSingular, ariaLabelSelectedItem, getItemProps, getMenuProps, inputValue, isOpen, highlightedIndex, listItems, listStyle, setListRef, loading, loadingText, noMatchesText, selectAllCheckboxState, selectAllItem, selectedItems, showSelectAllInList, ...rest }: DropdownListProps<ValueType>) => React.JSX.Element;
26
26
  export {};
@@ -1239,7 +1239,7 @@ function SelectedItemsLabel(items) {
1239
1239
  }).toString() : items.length + " elementer valgt";
1240
1240
  }
1241
1241
 
1242
- var _excluded$5 = ["ariaLabelChosenSingular", "ariaLabelSelectedItem", "getItemProps", "getMenuProps", "inputValue", "isOpen", "highlightedIndex", "listItems", "listStyle", "listRef", "loading", "loadingText", "noMatchesText", "selectAllCheckboxState", "selectAllItem", "selectedItems", "showSelectAllInList"];
1242
+ var _excluded$5 = ["ariaLabelChosenSingular", "ariaLabelSelectedItem", "getItemProps", "getMenuProps", "inputValue", "isOpen", "highlightedIndex", "listItems", "listStyle", "setListRef", "loading", "loadingText", "noMatchesText", "selectAllCheckboxState", "selectAllItem", "selectedItems", "showSelectAllInList"];
1243
1243
  var DropdownList = function DropdownList(_ref) {
1244
1244
  var _listItems$;
1245
1245
  var _ref$ariaLabelChosenS = _ref.ariaLabelChosenSingular,
@@ -1252,7 +1252,7 @@ var DropdownList = function DropdownList(_ref) {
1252
1252
  highlightedIndex = _ref.highlightedIndex,
1253
1253
  listItems = _ref.listItems,
1254
1254
  listStyle = _ref.listStyle,
1255
- listRef = _ref.listRef,
1255
+ setListRef = _ref.setListRef,
1256
1256
  _ref$loading = _ref.loading,
1257
1257
  loading = _ref$loading === void 0 ? false : _ref$loading,
1258
1258
  _ref$loadingText = _ref.loadingText,
@@ -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: setListRef,
1341
1343
  className: "eds-dropdown__list",
1342
1344
  style: _extends({
1343
1345
  display: isOpen ? 'inline-block' : 'none'
@@ -1346,14 +1348,13 @@ var DropdownList = function DropdownList(_ref) {
1346
1348
  var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1347
1349
  if (itemIsSelectAll && listItems.length <= 2) return null;
1348
1350
  return React.createElement("li", _extends({
1349
- key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1350
1351
  className: classNames('eds-dropdown__list__item', {
1351
1352
  'eds-dropdown__list__item--select-all': itemIsSelectAll,
1352
1353
  'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1353
1354
  'eds-dropdown__list__item--selected': !isMultiselect && isItemSelected(item)
1354
- })
1355
+ }),
1356
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value)
1355
1357
  }, getItemProps({
1356
- key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1357
1358
  // @ts-expect-error Since getItemProps expects the same item type
1358
1359
  // here as items, it throws error when selectAllItem is a string.
1359
1360
  // This does, however, not cause any functional issues.
@@ -1403,7 +1404,8 @@ var SelectedItemTag = function SelectedItemTag(_ref) {
1403
1404
  key: selectedItem.value,
1404
1405
  "aria-live": "polite"
1405
1406
  }), React.createElement("span", {
1406
- "aria-hidden": "true"
1407
+ "aria-hidden": "true",
1408
+ className: "eds-dropdown__selected-item-tag__text"
1407
1409
  }, selectedItem.label));
1408
1410
  };
1409
1411
  var FieldAppend$1 = function FieldAppend(_ref3) {
@@ -1559,17 +1561,14 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1559
1561
  };
1560
1562
  var handleListItemClicked = function handleListItemClicked(_ref2) {
1561
1563
  var clickedItem = _ref2.clickedItem,
1562
- onChange = _ref2.onChange,
1563
- setLastRemovedItem = _ref2.setLastClickedItem;
1564
+ onChange = _ref2.onChange;
1564
1565
  if (clickedItemIsSelectAll(clickedItem)) {
1565
1566
  if (allListItemsAreSelected) {
1566
- setLastRemovedItem(selectAll);
1567
1567
  return unselectAllListItems(onChange);
1568
1568
  }
1569
1569
  return selectAllUnselectedItemsInListItems(onChange);
1570
1570
  }
1571
1571
  if (clickedItemIsInSelectedItems(clickedItem)) {
1572
- setLastRemovedItem(clickedItem);
1573
1572
  return removeClickedItemFromSelectedItems(clickedItem, onChange);
1574
1573
  }
1575
1574
  addClickedItemToSelectedItems(clickedItem, onChange);
@@ -1900,7 +1899,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1900
1899
  isOpen: isOpen,
1901
1900
  listItems: listItems,
1902
1901
  listStyle: _extends({}, floatingStyles, listStyle),
1903
- listRef: refs.setFloating,
1902
+ setListRef: refs.setFloating,
1904
1903
  loading: loading,
1905
1904
  loadingText: loadingText,
1906
1905
  noMatchesText: noMatchesText,
@@ -1967,13 +1966,12 @@ var MultiSelect = function MultiSelect(_ref) {
1967
1966
  var _React$useState = React.useState(0),
1968
1967
  lastHighlightedIndex = _React$useState[0],
1969
1968
  setLastHighlightedIndex = _React$useState[1];
1970
- var _React$useState2 = React.useState(undefined),
1971
- setLastClickedItem = _React$useState2[1];
1972
1969
  var inputRef = React.useRef(null);
1973
1970
  React.useEffect(function () {
1974
1971
  //@ts-expect-error this is done to aid developers debug wrong prop usage
1975
1972
  if (rest.selectedItem !== undefined) console.warn("Incorrect 'selectedItem' prop found, did you mean to use 'selectedItems?");
1976
- }, []);
1973
+ //@ts-expect-error selectedItem should not actually exist in rest
1974
+ }, [rest.selectedItem]);
1977
1975
  var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
1978
1976
  normalizedItems = _useResolvedItems.items,
1979
1977
  loading = _useResolvedItems.loading,
@@ -2087,8 +2085,7 @@ var MultiSelect = function MultiSelect(_ref) {
2087
2085
  if (isOpen && changes.highlightedIndex !== undefined) {
2088
2086
  handleListItemClicked({
2089
2087
  clickedItem: listItems[changes.highlightedIndex],
2090
- onChange: onChange,
2091
- setLastClickedItem: setLastClickedItem
2088
+ onChange: onChange
2092
2089
  });
2093
2090
  }
2094
2091
  }
@@ -2138,8 +2135,7 @@ var MultiSelect = function MultiSelect(_ref) {
2138
2135
  {
2139
2136
  handleListItemClicked({
2140
2137
  clickedItem: clickedItem,
2141
- onChange: onChange,
2142
- setLastClickedItem: setLastClickedItem
2138
+ onChange: onChange
2143
2139
  });
2144
2140
  }
2145
2141
  }
@@ -2239,8 +2235,7 @@ var MultiSelect = function MultiSelect(_ref) {
2239
2235
  var _inputRef$current6;
2240
2236
  handleListItemClicked({
2241
2237
  clickedItem: selectedItem,
2242
- onChange: onChange,
2243
- setLastClickedItem: setLastClickedItem
2238
+ onChange: onChange
2244
2239
  });
2245
2240
  inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
2246
2241
  },
@@ -2265,16 +2260,15 @@ var MultiSelect = function MultiSelect(_ref) {
2265
2260
  if (highlitedItem) {
2266
2261
  handleListItemClicked({
2267
2262
  clickedItem: highlitedItem,
2268
- onChange: onChange,
2269
- setLastClickedItem: setLastClickedItem
2263
+ onChange: onChange
2270
2264
  });
2271
2265
  }
2272
2266
  }
2273
2267
  }
2274
2268
  }, getDropdownProps({
2275
2269
  preventKeyAction: isOpen,
2276
- ref: inputRef,
2277
- value: inputValue != null ? inputValue : EMPTY_INPUT
2270
+ value: inputValue != null ? inputValue : EMPTY_INPUT,
2271
+ ref: inputRef
2278
2272
  })))))), React.createElement(DropdownList, {
2279
2273
  ariaLabelChosenSingular: ariaLabelChosenSingular,
2280
2274
  ariaLabelSelectedItem: ariaLabelSelectedItem,
@@ -2285,7 +2279,7 @@ var MultiSelect = function MultiSelect(_ref) {
2285
2279
  isOpen: isOpen,
2286
2280
  listItems: listItems,
2287
2281
  listStyle: _extends({}, floatingStyles, listStyle),
2288
- listRef: refs.setFloating,
2282
+ setListRef: refs.setFloating,
2289
2283
  loading: loading,
2290
2284
  loadingText: loadingText,
2291
2285
  noMatchesText: noMatchesText,
@@ -2440,7 +2434,7 @@ var Dropdown = function Dropdown(_ref) {
2440
2434
  isOpen: isOpen,
2441
2435
  listItems: normalizedItems,
2442
2436
  listStyle: _extends({}, floatingStyles, listStyle),
2443
- listRef: refs.setFloating,
2437
+ setListRef: refs.setFloating,
2444
2438
  loading: loading,
2445
2439
  loadingText: loadingText,
2446
2440
  selectedItems: selectedItem !== null ? [selectedItem] : []