@entur/dropdown 5.0.7 → 5.0.9-beta.0
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.
- package/dist/MultiSelect.d.ts +1 -1
- package/dist/SearchableDropdown.d.ts +1 -1
- package/dist/dropdown.cjs.development.js +72 -44
- package/dist/dropdown.cjs.development.js.map +1 -1
- package/dist/dropdown.cjs.production.min.js +1 -1
- package/dist/dropdown.cjs.production.min.js.map +1 -1
- package/dist/dropdown.esm.js +73 -45
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +165 -168
- package/dist/utils.d.ts +2 -0
- package/package.json +4 -4
package/dist/MultiSelect.d.ts
CHANGED
|
@@ -108,4 +108,4 @@ export type MultiSelectProps = {
|
|
|
108
108
|
*/
|
|
109
109
|
ariaLabelSelectedItem?: string;
|
|
110
110
|
};
|
|
111
|
-
export declare const MultiSelect: ({ className, clearable, clearInputOnSelect, debounceTimeout, disabled, feedback, hideSelectAll,
|
|
111
|
+
export declare const MultiSelect: ({ className, clearable, clearInputOnSelect, debounceTimeout, disabled, feedback, hideSelectAll, items: initialItems, itemFilter, label, labelAllItemsSelected, labelClearAllItems, labelSelectAll, listStyle, loadingText, maxChips, noMatchesText, onChange, placeholder, readOnly, selectedItems, selectOnBlur, style, variant, ariaLabelChosenSingular, ariaLabelChosenPlural, ariaLabelCloseList, ariaLabelJumpToInput, ariaLabelOpenList, ariaLabelRemoveSelected, ariaLabelSelectedItem, ...rest }: MultiSelectProps) => React.JSX.Element;
|
|
@@ -67,4 +67,4 @@ export type SearchableDropdownProps = {
|
|
|
67
67
|
*/
|
|
68
68
|
ariaLabelOpenList?: string;
|
|
69
69
|
};
|
|
70
|
-
export declare const SearchableDropdown: ({ ariaLabelCloseList, ariaLabelOpenList, className, clearable, debounceTimeout, disabled, disableLabelAnimation, feedback,
|
|
70
|
+
export declare const SearchableDropdown: ({ ariaLabelCloseList, ariaLabelOpenList, className, clearable, debounceTimeout, disabled, disableLabelAnimation, feedback, items: initialItems, itemFilter, label, labelClearSelectedItem, listStyle, loadingText, onChange, placeholder, prepend, readOnly, selectedItem: value, selectOnBlur, style, variant, ...rest }: SearchableDropdownProps) => React.JSX.Element;
|
|
@@ -1411,7 +1411,7 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
|
|
|
1411
1411
|
selectedItems = _ref3.selectedItems;
|
|
1412
1412
|
if (loading) {
|
|
1413
1413
|
return React.createElement("div", {
|
|
1414
|
-
className: 'eds-
|
|
1414
|
+
className: 'eds-dropdown__appendix__toggle-button--loading-dots'
|
|
1415
1415
|
}, React.createElement(loader.LoadingDots, {
|
|
1416
1416
|
"aria-label": loadingText
|
|
1417
1417
|
}));
|
|
@@ -1420,13 +1420,13 @@ var FieldAppend$1 = function FieldAppend(_ref3) {
|
|
|
1420
1420
|
return null;
|
|
1421
1421
|
}
|
|
1422
1422
|
return React.createElement("div", {
|
|
1423
|
-
className: "eds-
|
|
1423
|
+
className: "eds-dropdown__appendix"
|
|
1424
1424
|
}, clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React.createElement(React.Fragment, null, React.createElement(ClearableButton, {
|
|
1425
1425
|
onClear: onClear,
|
|
1426
1426
|
focusable: true,
|
|
1427
1427
|
labelClearSelectedItems: labelClearSelectedItems
|
|
1428
1428
|
}), React.createElement("div", {
|
|
1429
|
-
className: "eds-
|
|
1429
|
+
className: "eds-dropdown__appendix__divider"
|
|
1430
1430
|
})), React.createElement(ToggleButton, {
|
|
1431
1431
|
"aria-hidden": ariaHiddenToggleButton,
|
|
1432
1432
|
ariaLabelCloseList: ariaLabelCloseList,
|
|
@@ -1446,9 +1446,9 @@ var ClearableButton = function ClearableButton(_ref4) {
|
|
|
1446
1446
|
"aria-hidden": "true",
|
|
1447
1447
|
placement: "top",
|
|
1448
1448
|
content: labelClearSelectedItems,
|
|
1449
|
-
className: "eds-
|
|
1449
|
+
className: "eds-dropdown__appendix__clear-button__tooltip"
|
|
1450
1450
|
}, React.createElement(button.IconButton, {
|
|
1451
|
-
className: "eds-
|
|
1451
|
+
className: "eds-dropdown__appendix__clear-button",
|
|
1452
1452
|
type: "button",
|
|
1453
1453
|
tabIndex: focusable ? 0 : 1,
|
|
1454
1454
|
onClick: onClear,
|
|
@@ -1469,8 +1469,8 @@ var ToggleButton = function ToggleButton(_ref5) {
|
|
|
1469
1469
|
_ref5$focusable = _ref5.focusable,
|
|
1470
1470
|
focusable = _ref5$focusable === void 0 ? false : _ref5$focusable;
|
|
1471
1471
|
return React.createElement(button.IconButton, _extends({}, getToggleButtonProps({
|
|
1472
|
-
className: classNames('eds-
|
|
1473
|
-
'eds-
|
|
1472
|
+
className: classNames('eds-dropdown__appendix__toggle-button', {
|
|
1473
|
+
'eds-dropdown__appendix__toggle-button--open': isOpen
|
|
1474
1474
|
}),
|
|
1475
1475
|
'aria-labelledby': undefined
|
|
1476
1476
|
}), {
|
|
@@ -1493,9 +1493,19 @@ function lowerCaseFilterTest(item, input) {
|
|
|
1493
1493
|
var inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');
|
|
1494
1494
|
return inputRegex.test(item.label);
|
|
1495
1495
|
}
|
|
1496
|
+
function noFilter(
|
|
1497
|
+
//@ts-expect-error only here to comply with dropdown filter API
|
|
1498
|
+
item,
|
|
1499
|
+
//@ts-expect-error only here to comply with dropdown filter API
|
|
1500
|
+
input) {
|
|
1501
|
+
return true;
|
|
1502
|
+
}
|
|
1496
1503
|
var itemToString = function itemToString(item) {
|
|
1497
1504
|
return item ? item.label : '';
|
|
1498
1505
|
};
|
|
1506
|
+
var isFunctionWithQueryArgument = function isFunctionWithQueryArgument(object) {
|
|
1507
|
+
return typeof object === 'function' && object.length > 0;
|
|
1508
|
+
};
|
|
1499
1509
|
var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
1500
1510
|
var listItems = _ref.listItems,
|
|
1501
1511
|
selectedItems = _ref.selectedItems,
|
|
@@ -1504,11 +1514,20 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
|
1504
1514
|
var listItemsWithoutSelectAll = listItems.filter(function (item) {
|
|
1505
1515
|
return item.value !== selectAll.value;
|
|
1506
1516
|
});
|
|
1507
|
-
var
|
|
1508
|
-
return !selectedItems.
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1517
|
+
var unselectedItemsInListItems = listItemsWithoutSelectAll.filter(function (listItem) {
|
|
1518
|
+
return !selectedItems.some(function (selectedItem) {
|
|
1519
|
+
return selectedItem.value === listItem.value;
|
|
1520
|
+
});
|
|
1521
|
+
});
|
|
1522
|
+
var allListItemsAreSelected = !listItemsWithoutSelectAll.some(function (listItem) {
|
|
1523
|
+
return !selectedItems.some(function (selectedItem) {
|
|
1524
|
+
return selectedItem.value === listItem.value;
|
|
1525
|
+
});
|
|
1526
|
+
});
|
|
1527
|
+
var someListItemsAreSelected = listItemsWithoutSelectAll.some(function (listItem) {
|
|
1528
|
+
return selectedItems.some(function (selectedItem) {
|
|
1529
|
+
return selectedItem.value === listItem.value;
|
|
1530
|
+
});
|
|
1512
1531
|
});
|
|
1513
1532
|
var addClickedItemToSelectedItems = function addClickedItemToSelectedItems(clickedItem, onChange) {
|
|
1514
1533
|
return onChange([].concat(selectedItems, [clickedItem]));
|
|
@@ -1549,14 +1568,15 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
|
1549
1568
|
return false;
|
|
1550
1569
|
};
|
|
1551
1570
|
var selectAllUnselectedItemsInListItems = function selectAllUnselectedItemsInListItems(onChange) {
|
|
1552
|
-
onChange([].concat(selectedItems,
|
|
1553
|
-
return !selectedItems.includes(item);
|
|
1554
|
-
})));
|
|
1571
|
+
onChange([].concat(selectedItems, unselectedItemsInListItems));
|
|
1555
1572
|
};
|
|
1556
1573
|
var unselectAllListItems = function unselectAllListItems(onChange) {
|
|
1557
|
-
|
|
1558
|
-
return !listItemsWithoutSelectAll.
|
|
1559
|
-
|
|
1574
|
+
var selectedItemsWithoutItemsInListItems = selectedItems.filter(function (selectedItem) {
|
|
1575
|
+
return !listItemsWithoutSelectAll.some(function (listItem) {
|
|
1576
|
+
return listItem.value === selectedItem.value;
|
|
1577
|
+
});
|
|
1578
|
+
});
|
|
1579
|
+
onChange(selectedItemsWithoutItemsInListItems);
|
|
1560
1580
|
};
|
|
1561
1581
|
return {
|
|
1562
1582
|
addClickedItemToSelectedItems: addClickedItemToSelectedItems,
|
|
@@ -1622,7 +1642,7 @@ var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
|
|
|
1622
1642
|
};
|
|
1623
1643
|
/* end a11y utils */
|
|
1624
1644
|
|
|
1625
|
-
var _excluded$3 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "
|
|
1645
|
+
var _excluded$3 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "items", "itemFilter", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
|
|
1626
1646
|
var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
1627
1647
|
var _selectedItem$label;
|
|
1628
1648
|
var ariaLabelCloseList = _ref.ariaLabelCloseList,
|
|
@@ -1636,9 +1656,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1636
1656
|
_ref$disableLabelAnim = _ref.disableLabelAnimation,
|
|
1637
1657
|
disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
|
|
1638
1658
|
feedback = _ref.feedback,
|
|
1639
|
-
_ref$itemFilter = _ref.itemFilter,
|
|
1640
|
-
itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
|
|
1641
1659
|
initialItems = _ref.items,
|
|
1660
|
+
_ref$itemFilter = _ref.itemFilter,
|
|
1661
|
+
itemFilter = _ref$itemFilter === void 0 ? isFunctionWithQueryArgument(initialItems) ? noFilter : lowerCaseFilterTest : _ref$itemFilter,
|
|
1642
1662
|
label = _ref.label,
|
|
1643
1663
|
_ref$labelClearSelect = _ref.labelClearSelectedItem,
|
|
1644
1664
|
labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
|
|
@@ -1678,7 +1698,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1678
1698
|
};
|
|
1679
1699
|
var updateListItems = function updateListItems(_ref3) {
|
|
1680
1700
|
var inputValue = _ref3.inputValue;
|
|
1681
|
-
|
|
1701
|
+
var shouldRefetchItems = isFunctionWithQueryArgument(initialItems);
|
|
1702
|
+
if (shouldRefetchItems) fetchItems(inputValue != null ? inputValue : EMPTY_INPUT);
|
|
1682
1703
|
filterListItems({
|
|
1683
1704
|
inputValue: inputValue != null ? inputValue : EMPTY_INPUT
|
|
1684
1705
|
});
|
|
@@ -1701,7 +1722,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1701
1722
|
case Downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
1702
1723
|
case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1703
1724
|
{
|
|
1704
|
-
|
|
1725
|
+
updateListItems({
|
|
1705
1726
|
inputValue: EMPTY_INPUT
|
|
1706
1727
|
});
|
|
1707
1728
|
return _extends({}, changes, {
|
|
@@ -1808,16 +1829,14 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1808
1829
|
prepend: prepend,
|
|
1809
1830
|
readOnly: readOnly,
|
|
1810
1831
|
variant: variant
|
|
1811
|
-
}, rest), !hideSelectedItem && selectedItem &&
|
|
1812
|
-
className: "eds-
|
|
1813
|
-
"aria-hidden": "true"
|
|
1814
|
-
}, React.createElement("span", {
|
|
1815
|
-
className: "eds-dropdown__selected-item",
|
|
1832
|
+
}, rest), !hideSelectedItem && selectedItem !== null && inputValue === '' && React.createElement("span", {
|
|
1833
|
+
className: "eds-dropdown--searchable__selected-item",
|
|
1834
|
+
"aria-hidden": "true",
|
|
1816
1835
|
onClick: function onClick() {
|
|
1817
1836
|
var _inputRef$current2;
|
|
1818
1837
|
return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
|
|
1819
1838
|
}
|
|
1820
|
-
}, selectedItem.label)
|
|
1839
|
+
}, selectedItem.label), React.createElement("input", _extends({
|
|
1821
1840
|
className: "eds-dropdown__input eds-form-control",
|
|
1822
1841
|
disabled: readOnly || disabled,
|
|
1823
1842
|
placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder
|
|
@@ -1845,7 +1864,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1845
1864
|
}));
|
|
1846
1865
|
};
|
|
1847
1866
|
|
|
1848
|
-
var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "
|
|
1867
|
+
var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "items", "itemFilter", "label", "labelAllItemsSelected", "labelClearAllItems", "labelSelectAll", "listStyle", "loadingText", "maxChips", "noMatchesText", "onChange", "placeholder", "readOnly", "selectedItems", "selectOnBlur", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected", "ariaLabelSelectedItem"];
|
|
1849
1868
|
var MultiSelect = function MultiSelect(_ref) {
|
|
1850
1869
|
var className = _ref.className,
|
|
1851
1870
|
_ref$clearable = _ref.clearable,
|
|
@@ -1858,9 +1877,9 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1858
1877
|
feedback = _ref.feedback,
|
|
1859
1878
|
_ref$hideSelectAll = _ref.hideSelectAll,
|
|
1860
1879
|
hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
|
|
1861
|
-
_ref$itemFilter = _ref.itemFilter,
|
|
1862
|
-
itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
|
|
1863
1880
|
initialItems = _ref.items,
|
|
1881
|
+
_ref$itemFilter = _ref.itemFilter,
|
|
1882
|
+
itemFilter = _ref$itemFilter === void 0 ? isFunctionWithQueryArgument(initialItems) ? noFilter : lowerCaseFilterTest : _ref$itemFilter,
|
|
1864
1883
|
label = _ref.label,
|
|
1865
1884
|
_ref$labelAllItemsSel = _ref.labelAllItemsSelected,
|
|
1866
1885
|
labelAllItemsSelected = _ref$labelAllItemsSel === void 0 ? 'Alle valgt' : _ref$labelAllItemsSel,
|
|
@@ -1879,7 +1898,8 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1879
1898
|
placeholder = _ref.placeholder,
|
|
1880
1899
|
_ref$readOnly = _ref.readOnly,
|
|
1881
1900
|
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
1882
|
-
selectedItems = _ref.selectedItems,
|
|
1901
|
+
_ref$selectedItems = _ref.selectedItems,
|
|
1902
|
+
selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
|
|
1883
1903
|
_ref$selectOnBlur = _ref.selectOnBlur,
|
|
1884
1904
|
selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
|
|
1885
1905
|
style = _ref.style,
|
|
@@ -1905,6 +1925,10 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1905
1925
|
lastRemovedItem = _React$useState2[0],
|
|
1906
1926
|
setLastRemovedItem = _React$useState2[1];
|
|
1907
1927
|
var inputRef = React.useRef(null);
|
|
1928
|
+
React.useEffect(function () {
|
|
1929
|
+
//@ts-expect-error this is done to aid developers debug wrong prop usage
|
|
1930
|
+
if (rest.selectedItem !== undefined) console.warn("Incorrect 'selectedItem' prop found, did you mean to use 'selectedItems?");
|
|
1931
|
+
}, []);
|
|
1908
1932
|
var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
|
|
1909
1933
|
normalizedItems = _useResolvedItems.items,
|
|
1910
1934
|
loading = _useResolvedItems.loading,
|
|
@@ -1934,7 +1958,8 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1934
1958
|
};
|
|
1935
1959
|
var updateListItems = function updateListItems(_ref3) {
|
|
1936
1960
|
var inputValue = _ref3.inputValue;
|
|
1937
|
-
|
|
1961
|
+
var shouldRefetchItems = isFunctionWithQueryArgument(initialItems);
|
|
1962
|
+
if (shouldRefetchItems) fetchItems(inputValue != null ? inputValue : EMPTY_INPUT);
|
|
1938
1963
|
filterListItems({
|
|
1939
1964
|
inputValue: inputValue != null ? inputValue : EMPTY_INPUT
|
|
1940
1965
|
});
|
|
@@ -2037,6 +2062,9 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2037
2062
|
// reset input value when leaving input field
|
|
2038
2063
|
case Downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
2039
2064
|
{
|
|
2065
|
+
updateListItems({
|
|
2066
|
+
inputValue: EMPTY_INPUT
|
|
2067
|
+
});
|
|
2040
2068
|
return _extends({}, changes, {
|
|
2041
2069
|
inputValue: EMPTY_INPUT
|
|
2042
2070
|
});
|
|
@@ -2129,16 +2157,16 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2129
2157
|
label: label,
|
|
2130
2158
|
labelId: getLabelProps().id,
|
|
2131
2159
|
labelProps: getLabelProps(),
|
|
2132
|
-
readOnly: readOnly,
|
|
2133
|
-
variant: variant
|
|
2134
|
-
}, rest), React.createElement("div", {
|
|
2135
|
-
className: classNames('eds-dropdown__selected-items-and-input', {
|
|
2136
|
-
'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
|
|
2137
|
-
}),
|
|
2138
2160
|
onClick: function onClick(e) {
|
|
2139
2161
|
var _inputRef$current4;
|
|
2140
2162
|
if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
|
|
2141
|
-
}
|
|
2163
|
+
},
|
|
2164
|
+
readOnly: readOnly,
|
|
2165
|
+
variant: variant
|
|
2166
|
+
}, rest), React.createElement("div", {
|
|
2167
|
+
className: classNames('eds-dropdown--multiselect__selected-items-and-input', {
|
|
2168
|
+
'eds-dropdown--multiselect__selected-items-and-input--filled': hasSelectedItems
|
|
2169
|
+
})
|
|
2142
2170
|
}, selectedItems.length < maxChips ? React.createElement(React.Fragment, null, selectedItems.length > 1 ? React.createElement(a11y.VisuallyHidden, {
|
|
2143
2171
|
onClick: function onClick() {
|
|
2144
2172
|
var _inputRef$current5;
|
|
@@ -2295,12 +2323,12 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2295
2323
|
readOnly: readOnly,
|
|
2296
2324
|
variant: variant
|
|
2297
2325
|
}, rest), React.createElement("div", _extends({
|
|
2298
|
-
className: "eds-dropdown__selected-item
|
|
2326
|
+
className: "eds-dropdown__selected-item"
|
|
2299
2327
|
}, getToggleButtonProps({
|
|
2300
2328
|
id: undefined
|
|
2301
2329
|
})), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("span", {
|
|
2302
|
-
className: classNames('eds-dropdown__selected-
|
|
2303
|
-
'eds-dropdown__selected-
|
|
2330
|
+
className: classNames('eds-dropdown__selected-item__placeholder', {
|
|
2331
|
+
'eds-dropdown__selected-item__placeholder--readonly': readOnly
|
|
2304
2332
|
})
|
|
2305
2333
|
}, placeholder)) != null ? _ref3 : '')), React.createElement(DropdownList, {
|
|
2306
2334
|
getItemProps: getItemProps,
|