@entur/dropdown 6.0.3-beta.3 → 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,
@@ -1339,7 +1339,7 @@ var DropdownList = function DropdownList(_ref) {
1339
1339
  }, {
1340
1340
  suppressRefError: true
1341
1341
  }), {
1342
- ref: listRef,
1342
+ ref: setListRef,
1343
1343
  className: "eds-dropdown__list",
1344
1344
  style: _extends({
1345
1345
  display: isOpen ? 'inline-block' : 'none'
@@ -1348,14 +1348,13 @@ var DropdownList = function DropdownList(_ref) {
1348
1348
  var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1349
1349
  if (itemIsSelectAll && listItems.length <= 2) return null;
1350
1350
  return React.createElement("li", _extends({
1351
- key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1352
1351
  className: classNames('eds-dropdown__list__item', {
1353
1352
  'eds-dropdown__list__item--select-all': itemIsSelectAll,
1354
1353
  'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1355
1354
  'eds-dropdown__list__item--selected': !isMultiselect && isItemSelected(item)
1356
- })
1355
+ }),
1356
+ key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value)
1357
1357
  }, getItemProps({
1358
- key: (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value),
1359
1358
  // @ts-expect-error Since getItemProps expects the same item type
1360
1359
  // here as items, it throws error when selectAllItem is a string.
1361
1360
  // This does, however, not cause any functional issues.
@@ -1405,7 +1404,8 @@ var SelectedItemTag = function SelectedItemTag(_ref) {
1405
1404
  key: selectedItem.value,
1406
1405
  "aria-live": "polite"
1407
1406
  }), React.createElement("span", {
1408
- "aria-hidden": "true"
1407
+ "aria-hidden": "true",
1408
+ className: "eds-dropdown__selected-item-tag__text"
1409
1409
  }, selectedItem.label));
1410
1410
  };
1411
1411
  var FieldAppend$1 = function FieldAppend(_ref3) {
@@ -1561,17 +1561,14 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1561
1561
  };
1562
1562
  var handleListItemClicked = function handleListItemClicked(_ref2) {
1563
1563
  var clickedItem = _ref2.clickedItem,
1564
- onChange = _ref2.onChange,
1565
- setLastRemovedItem = _ref2.setLastClickedItem;
1564
+ onChange = _ref2.onChange;
1566
1565
  if (clickedItemIsSelectAll(clickedItem)) {
1567
1566
  if (allListItemsAreSelected) {
1568
- setLastRemovedItem(selectAll);
1569
1567
  return unselectAllListItems(onChange);
1570
1568
  }
1571
1569
  return selectAllUnselectedItemsInListItems(onChange);
1572
1570
  }
1573
1571
  if (clickedItemIsInSelectedItems(clickedItem)) {
1574
- setLastRemovedItem(clickedItem);
1575
1572
  return removeClickedItemFromSelectedItems(clickedItem, onChange);
1576
1573
  }
1577
1574
  addClickedItemToSelectedItems(clickedItem, onChange);
@@ -1891,12 +1888,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1891
1888
  },
1892
1889
  onKeyDown: function onKeyDown(e) {
1893
1890
  if (selectOnTab && isOpen && e.key === 'Tab') onChange == null ? void 0 : onChange(listItems[highlightedIndex]);
1894
- }
1895
- }, {
1896
- suppressRefError: true
1897
- }), {
1891
+ },
1898
1892
  ref: inputRef
1899
- })), React.createElement(DropdownList, {
1893
+ }))), React.createElement(DropdownList, {
1900
1894
  ariaLabelChosenSingular: ariaLabelChosenSingular,
1901
1895
  ariaLabelSelectedItem: ariaLabelSelectedItem,
1902
1896
  getItemProps: getItemProps,
@@ -1905,7 +1899,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
1905
1899
  isOpen: isOpen,
1906
1900
  listItems: listItems,
1907
1901
  listStyle: _extends({}, floatingStyles, listStyle),
1908
- listRef: refs.setFloating,
1902
+ setListRef: refs.setFloating,
1909
1903
  loading: loading,
1910
1904
  loadingText: loadingText,
1911
1905
  noMatchesText: noMatchesText,
@@ -1972,13 +1966,12 @@ var MultiSelect = function MultiSelect(_ref) {
1972
1966
  var _React$useState = React.useState(0),
1973
1967
  lastHighlightedIndex = _React$useState[0],
1974
1968
  setLastHighlightedIndex = _React$useState[1];
1975
- var _React$useState2 = React.useState(undefined),
1976
- setLastClickedItem = _React$useState2[1];
1977
1969
  var inputRef = React.useRef(null);
1978
1970
  React.useEffect(function () {
1979
1971
  //@ts-expect-error this is done to aid developers debug wrong prop usage
1980
1972
  if (rest.selectedItem !== undefined) console.warn("Incorrect 'selectedItem' prop found, did you mean to use 'selectedItems?");
1981
- }, []);
1973
+ //@ts-expect-error selectedItem should not actually exist in rest
1974
+ }, [rest.selectedItem]);
1982
1975
  var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
1983
1976
  normalizedItems = _useResolvedItems.items,
1984
1977
  loading = _useResolvedItems.loading,
@@ -2092,8 +2085,7 @@ var MultiSelect = function MultiSelect(_ref) {
2092
2085
  if (isOpen && changes.highlightedIndex !== undefined) {
2093
2086
  handleListItemClicked({
2094
2087
  clickedItem: listItems[changes.highlightedIndex],
2095
- onChange: onChange,
2096
- setLastClickedItem: setLastClickedItem
2088
+ onChange: onChange
2097
2089
  });
2098
2090
  }
2099
2091
  }
@@ -2143,8 +2135,7 @@ var MultiSelect = function MultiSelect(_ref) {
2143
2135
  {
2144
2136
  handleListItemClicked({
2145
2137
  clickedItem: clickedItem,
2146
- onChange: onChange,
2147
- setLastClickedItem: setLastClickedItem
2138
+ onChange: onChange
2148
2139
  });
2149
2140
  }
2150
2141
  }
@@ -2244,8 +2235,7 @@ var MultiSelect = function MultiSelect(_ref) {
2244
2235
  var _inputRef$current6;
2245
2236
  handleListItemClicked({
2246
2237
  clickedItem: selectedItem,
2247
- onChange: onChange,
2248
- setLastClickedItem: setLastClickedItem
2238
+ onChange: onChange
2249
2239
  });
2250
2240
  inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
2251
2241
  },
@@ -2270,20 +2260,16 @@ var MultiSelect = function MultiSelect(_ref) {
2270
2260
  if (highlitedItem) {
2271
2261
  handleListItemClicked({
2272
2262
  clickedItem: highlitedItem,
2273
- onChange: onChange,
2274
- setLastClickedItem: setLastClickedItem
2263
+ onChange: onChange
2275
2264
  });
2276
2265
  }
2277
2266
  }
2278
2267
  }
2279
2268
  }, getDropdownProps({
2280
2269
  preventKeyAction: isOpen,
2281
- value: inputValue != null ? inputValue : EMPTY_INPUT
2282
- })), {
2283
- suppressRefError: true
2284
- }), {
2270
+ value: inputValue != null ? inputValue : EMPTY_INPUT,
2285
2271
  ref: inputRef
2286
- }))), React.createElement(DropdownList, {
2272
+ })))))), React.createElement(DropdownList, {
2287
2273
  ariaLabelChosenSingular: ariaLabelChosenSingular,
2288
2274
  ariaLabelSelectedItem: ariaLabelSelectedItem,
2289
2275
  getItemProps: getItemProps,
@@ -2293,7 +2279,7 @@ var MultiSelect = function MultiSelect(_ref) {
2293
2279
  isOpen: isOpen,
2294
2280
  listItems: listItems,
2295
2281
  listStyle: _extends({}, floatingStyles, listStyle),
2296
- listRef: refs.setFloating,
2282
+ setListRef: refs.setFloating,
2297
2283
  loading: loading,
2298
2284
  loadingText: loadingText,
2299
2285
  noMatchesText: noMatchesText,
@@ -2433,12 +2419,9 @@ var Dropdown = function Dropdown(_ref) {
2433
2419
  onChange == null ? void 0 : onChange(highlitedItem);
2434
2420
  }
2435
2421
  }
2436
- }
2437
- }, {
2438
- suppressRefError: true
2439
- }), {
2422
+ },
2440
2423
  ref: toggleButtonRef
2441
- }), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("div", {
2424
+ })), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("div", {
2442
2425
  className: classNames('eds-dropdown__selected-item__placeholder', {
2443
2426
  'eds-dropdown__selected-item__placeholder--readonly': readOnly
2444
2427
  })
@@ -2451,7 +2434,7 @@ var Dropdown = function Dropdown(_ref) {
2451
2434
  isOpen: isOpen,
2452
2435
  listItems: normalizedItems,
2453
2436
  listStyle: _extends({}, floatingStyles, listStyle),
2454
- listRef: refs.setFloating,
2437
+ setListRef: refs.setFloating,
2455
2438
  loading: loading,
2456
2439
  loadingText: loadingText,
2457
2440
  selectedItems: selectedItem !== null ? [selectedItem] : []