@entur/dropdown 5.0.6 → 5.0.8

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.
@@ -671,15 +671,15 @@ function LowerCaseFilterTest(item, input) {
671
671
  var inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');
672
672
  return inputRegex.test(item.label);
673
673
  }
674
- /**
675
- * @deprecated
676
- * New SearchableDropdown available
677
- *
678
- * migration guide to new dropdown:
679
- * - change import from 'DropdownDeprecated' to 'Dropdown'
680
- * - change from 'value' to 'selectedItem'
681
- * + type of 'selectedItem' is 'NormalizedDropdownType' and does not include 'string'
682
- * - 'onChange' must update value of 'selectedItem'
674
+ /**
675
+ * @deprecated
676
+ * New SearchableDropdown available
677
+ *
678
+ * migration guide to new dropdown:
679
+ * - change import from 'DropdownDeprecated' to 'Dropdown'
680
+ * - change from 'value' to 'selectedItem'
681
+ * + type of 'selectedItem' is 'NormalizedDropdownType' and does not include 'string'
682
+ * - 'onChange' must update value of 'selectedItem'
683
683
  */
684
684
  var SearchableDropdownDeprecated = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
685
685
  var _ref$disabled = _ref.disabled,
@@ -835,7 +835,7 @@ debounceTimeout) {
835
835
  return isItemsFunction ? itemsOrItemsResolver : function () {
836
836
  return Promise.resolve(itemsOrItemsResolver);
837
837
  };
838
- }, [itemsOrItemsResolver, isItemsFunction]);
838
+ }, [isItemsFunction]);
839
839
  var _React$useReducer = React.useReducer(reducer, {
840
840
  items: isItemsFunction ? [] : itemsOrItemsResolver,
841
841
  loading: false
@@ -902,16 +902,16 @@ debounceTimeout) {
902
902
  };
903
903
 
904
904
  var _excluded$7 = ["highlightFirstItemOnOpen", "debounceTimeout", "disabled", "feedback", "items", "label", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "searchable", "selectOnTab", "openOnFocus", "variant", "value", "clearable", "className", "style", "listStyle", "itemFilter", "disableLabelAnimation"];
905
- /**
906
- * @deprecated
907
- * New Dropdown available
908
- *
909
- * migration guide to new dropdown:
910
- * - change import from 'DropdownDeprecated' to 'Dropdown'
911
- * + if 'searchable', switch to 'SearchableDropdown'
912
- * - change from 'value' to 'selectedItem'
913
- * + type of 'selectedItem' is 'NormalizedDropdownType' and does not include 'string'
914
- * - 'onChange' must update value of 'selectedItem'
905
+ /**
906
+ * @deprecated
907
+ * New Dropdown available
908
+ *
909
+ * migration guide to new dropdown:
910
+ * - change import from 'DropdownDeprecated' to 'Dropdown'
911
+ * + if 'searchable', switch to 'SearchableDropdown'
912
+ * - change from 'value' to 'selectedItem'
913
+ * + type of 'selectedItem' is 'NormalizedDropdownType' and does not include 'string'
914
+ * - 'onChange' must update value of 'selectedItem'
915
915
  */
916
916
  var DropdownDeprecated = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
917
917
  var highlightFirstItemOnOpen = _ref.highlightFirstItemOnOpen,
@@ -1013,15 +1013,15 @@ actionAndChanges) {
1013
1013
  return changes;
1014
1014
  }
1015
1015
  }
1016
- /**
1017
- * @deprecated
1018
- * New MultiSelect available
1019
- *
1020
- * migration guide to new dropdown:
1021
- * - change import from 'MultiSelectDeprecated' to 'MultiSelect'
1022
- * - add state containing selected items to 'selectedItems' prop
1023
- * + type of 'selectedItems' is 'NormalizedDropdownType[]' and does not include 'string'
1024
- * - 'onChange' must update value of 'selectedItem'
1016
+ /**
1017
+ * @deprecated
1018
+ * New MultiSelect available
1019
+ *
1020
+ * migration guide to new dropdown:
1021
+ * - change import from 'MultiSelectDeprecated' to 'MultiSelect'
1022
+ * - add state containing selected items to 'selectedItems' prop
1023
+ * + type of 'selectedItems' is 'NormalizedDropdownType[]' and does not include 'string'
1024
+ * - 'onChange' must update value of 'selectedItem'
1025
1025
  */
1026
1026
  var MultiSelectDeprecated = function MultiSelectDeprecated(_ref) {
1027
1027
  var className = _ref.className,
@@ -1500,11 +1500,20 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1500
1500
  var listItemsWithoutSelectAll = listItems.filter(function (item) {
1501
1501
  return item.value !== selectAll.value;
1502
1502
  });
1503
- var allListItemsAreSelected = listItemsWithoutSelectAll.filter(function (item) {
1504
- return !selectedItems.includes(item);
1505
- }).length === 0;
1506
- var someListItemsAreSelected = listItemsWithoutSelectAll.some(function (item) {
1507
- return selectedItems.includes(item);
1503
+ var unselectedItemsInListItems = listItemsWithoutSelectAll.filter(function (listItem) {
1504
+ return !selectedItems.some(function (selectedItem) {
1505
+ return selectedItem.value === listItem.value;
1506
+ });
1507
+ });
1508
+ var allListItemsAreSelected = !listItemsWithoutSelectAll.some(function (listItem) {
1509
+ return !selectedItems.some(function (selectedItem) {
1510
+ return selectedItem.value === listItem.value;
1511
+ });
1512
+ });
1513
+ var someListItemsAreSelected = listItemsWithoutSelectAll.some(function (listItem) {
1514
+ return selectedItems.some(function (selectedItem) {
1515
+ return selectedItem.value === listItem.value;
1516
+ });
1508
1517
  });
1509
1518
  var addClickedItemToSelectedItems = function addClickedItemToSelectedItems(clickedItem, onChange) {
1510
1519
  return onChange([].concat(selectedItems, [clickedItem]));
@@ -1545,14 +1554,15 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1545
1554
  return false;
1546
1555
  };
1547
1556
  var selectAllUnselectedItemsInListItems = function selectAllUnselectedItemsInListItems(onChange) {
1548
- onChange([].concat(selectedItems, listItemsWithoutSelectAll.filter(function (item) {
1549
- return !selectedItems.includes(item);
1550
- })));
1557
+ onChange([].concat(selectedItems, unselectedItemsInListItems));
1551
1558
  };
1552
1559
  var unselectAllListItems = function unselectAllListItems(onChange) {
1553
- onChange(selectedItems.filter(function (item) {
1554
- return !listItemsWithoutSelectAll.includes(item);
1555
- }));
1560
+ var selectedItemsWithoutItemsInListItems = selectedItems.filter(function (selectedItem) {
1561
+ return !listItemsWithoutSelectAll.some(function (listItem) {
1562
+ return listItem.value === selectedItem.value;
1563
+ });
1564
+ });
1565
+ onChange(selectedItemsWithoutItemsInListItems);
1556
1566
  };
1557
1567
  return {
1558
1568
  addClickedItemToSelectedItems: addClickedItemToSelectedItems,
@@ -1604,8 +1614,8 @@ function getA11yRemovalMessage(options) {
1604
1614
  if (removedItem.value === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen fjernet fra valgte.';
1605
1615
  return itemToString(removedItem) + " fjernet fra valgte.";
1606
1616
  }
1607
- /**A VoiceOver click is always preformed in the center of the clicked element.
1608
- This functions expolits that to check if the performed click likely is
1617
+ /**A VoiceOver click is always preformed in the center of the clicked element.
1618
+ This functions expolits that to check if the performed click likely is
1609
1619
  made by VoiceOver. */
1610
1620
  var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
1611
1621
  var targetElementRect = clickEvent.currentTarget.getBoundingClientRect();
@@ -1930,7 +1940,10 @@ var MultiSelect = function MultiSelect(_ref) {
1930
1940
  };
1931
1941
  var updateListItems = function updateListItems(_ref3) {
1932
1942
  var inputValue = _ref3.inputValue;
1933
- if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : EMPTY_INPUT); // fetch items only if user provides a function as items
1943
+ var shouldRefetchItems =
1944
+ // fetch items only if user provides a function with inputValue argument as items
1945
+ typeof initialItems === 'function' && initialItems.length > 0; // Function.length == number of arguments
1946
+ if (shouldRefetchItems) fetchItems(inputValue != null ? inputValue : EMPTY_INPUT);
1934
1947
  filterListItems({
1935
1948
  inputValue: inputValue != null ? inputValue : EMPTY_INPUT
1936
1949
  });