@entur/dropdown 5.0.8 → 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 +51 -36
- 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 +52 -37
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +91 -94
- 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;
|
|
@@ -839,7 +839,7 @@ debounceTimeout) {
|
|
|
839
839
|
return isItemsFunction ? itemsOrItemsResolver : function () {
|
|
840
840
|
return Promise.resolve(itemsOrItemsResolver);
|
|
841
841
|
};
|
|
842
|
-
}, [isItemsFunction]);
|
|
842
|
+
}, [itemsOrItemsResolver, isItemsFunction]);
|
|
843
843
|
var _React$useReducer = React.useReducer(reducer, {
|
|
844
844
|
items: isItemsFunction ? [] : itemsOrItemsResolver,
|
|
845
845
|
loading: false
|
|
@@ -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,
|
|
@@ -1632,7 +1642,7 @@ var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
|
|
|
1632
1642
|
};
|
|
1633
1643
|
/* end a11y utils */
|
|
1634
1644
|
|
|
1635
|
-
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"];
|
|
1636
1646
|
var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
1637
1647
|
var _selectedItem$label;
|
|
1638
1648
|
var ariaLabelCloseList = _ref.ariaLabelCloseList,
|
|
@@ -1646,9 +1656,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1646
1656
|
_ref$disableLabelAnim = _ref.disableLabelAnimation,
|
|
1647
1657
|
disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
|
|
1648
1658
|
feedback = _ref.feedback,
|
|
1649
|
-
_ref$itemFilter = _ref.itemFilter,
|
|
1650
|
-
itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
|
|
1651
1659
|
initialItems = _ref.items,
|
|
1660
|
+
_ref$itemFilter = _ref.itemFilter,
|
|
1661
|
+
itemFilter = _ref$itemFilter === void 0 ? isFunctionWithQueryArgument(initialItems) ? noFilter : lowerCaseFilterTest : _ref$itemFilter,
|
|
1652
1662
|
label = _ref.label,
|
|
1653
1663
|
_ref$labelClearSelect = _ref.labelClearSelectedItem,
|
|
1654
1664
|
labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
|
|
@@ -1688,7 +1698,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1688
1698
|
};
|
|
1689
1699
|
var updateListItems = function updateListItems(_ref3) {
|
|
1690
1700
|
var inputValue = _ref3.inputValue;
|
|
1691
|
-
|
|
1701
|
+
var shouldRefetchItems = isFunctionWithQueryArgument(initialItems);
|
|
1702
|
+
if (shouldRefetchItems) fetchItems(inputValue != null ? inputValue : EMPTY_INPUT);
|
|
1692
1703
|
filterListItems({
|
|
1693
1704
|
inputValue: inputValue != null ? inputValue : EMPTY_INPUT
|
|
1694
1705
|
});
|
|
@@ -1711,7 +1722,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1711
1722
|
case Downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
1712
1723
|
case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1713
1724
|
{
|
|
1714
|
-
|
|
1725
|
+
updateListItems({
|
|
1715
1726
|
inputValue: EMPTY_INPUT
|
|
1716
1727
|
});
|
|
1717
1728
|
return _extends({}, changes, {
|
|
@@ -1818,16 +1829,14 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1818
1829
|
prepend: prepend,
|
|
1819
1830
|
readOnly: readOnly,
|
|
1820
1831
|
variant: variant
|
|
1821
|
-
}, rest), !hideSelectedItem && selectedItem &&
|
|
1822
|
-
className: "eds-
|
|
1823
|
-
"aria-hidden": "true"
|
|
1824
|
-
}, React.createElement("span", {
|
|
1825
|
-
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",
|
|
1826
1835
|
onClick: function onClick() {
|
|
1827
1836
|
var _inputRef$current2;
|
|
1828
1837
|
return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
|
|
1829
1838
|
}
|
|
1830
|
-
}, selectedItem.label)
|
|
1839
|
+
}, selectedItem.label), React.createElement("input", _extends({
|
|
1831
1840
|
className: "eds-dropdown__input eds-form-control",
|
|
1832
1841
|
disabled: readOnly || disabled,
|
|
1833
1842
|
placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder
|
|
@@ -1855,7 +1864,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1855
1864
|
}));
|
|
1856
1865
|
};
|
|
1857
1866
|
|
|
1858
|
-
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"];
|
|
1859
1868
|
var MultiSelect = function MultiSelect(_ref) {
|
|
1860
1869
|
var className = _ref.className,
|
|
1861
1870
|
_ref$clearable = _ref.clearable,
|
|
@@ -1868,9 +1877,9 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1868
1877
|
feedback = _ref.feedback,
|
|
1869
1878
|
_ref$hideSelectAll = _ref.hideSelectAll,
|
|
1870
1879
|
hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
|
|
1871
|
-
_ref$itemFilter = _ref.itemFilter,
|
|
1872
|
-
itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
|
|
1873
1880
|
initialItems = _ref.items,
|
|
1881
|
+
_ref$itemFilter = _ref.itemFilter,
|
|
1882
|
+
itemFilter = _ref$itemFilter === void 0 ? isFunctionWithQueryArgument(initialItems) ? noFilter : lowerCaseFilterTest : _ref$itemFilter,
|
|
1874
1883
|
label = _ref.label,
|
|
1875
1884
|
_ref$labelAllItemsSel = _ref.labelAllItemsSelected,
|
|
1876
1885
|
labelAllItemsSelected = _ref$labelAllItemsSel === void 0 ? 'Alle valgt' : _ref$labelAllItemsSel,
|
|
@@ -1889,7 +1898,8 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1889
1898
|
placeholder = _ref.placeholder,
|
|
1890
1899
|
_ref$readOnly = _ref.readOnly,
|
|
1891
1900
|
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
1892
|
-
selectedItems = _ref.selectedItems,
|
|
1901
|
+
_ref$selectedItems = _ref.selectedItems,
|
|
1902
|
+
selectedItems = _ref$selectedItems === void 0 ? [] : _ref$selectedItems,
|
|
1893
1903
|
_ref$selectOnBlur = _ref.selectOnBlur,
|
|
1894
1904
|
selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
|
|
1895
1905
|
style = _ref.style,
|
|
@@ -1915,6 +1925,10 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1915
1925
|
lastRemovedItem = _React$useState2[0],
|
|
1916
1926
|
setLastRemovedItem = _React$useState2[1];
|
|
1917
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
|
+
}, []);
|
|
1918
1932
|
var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
|
|
1919
1933
|
normalizedItems = _useResolvedItems.items,
|
|
1920
1934
|
loading = _useResolvedItems.loading,
|
|
@@ -1944,9 +1958,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1944
1958
|
};
|
|
1945
1959
|
var updateListItems = function updateListItems(_ref3) {
|
|
1946
1960
|
var inputValue = _ref3.inputValue;
|
|
1947
|
-
var shouldRefetchItems =
|
|
1948
|
-
// fetch items only if user provides a function with inputValue argument as items
|
|
1949
|
-
typeof initialItems === 'function' && initialItems.length > 0; // Function.length == number of arguments
|
|
1961
|
+
var shouldRefetchItems = isFunctionWithQueryArgument(initialItems);
|
|
1950
1962
|
if (shouldRefetchItems) fetchItems(inputValue != null ? inputValue : EMPTY_INPUT);
|
|
1951
1963
|
filterListItems({
|
|
1952
1964
|
inputValue: inputValue != null ? inputValue : EMPTY_INPUT
|
|
@@ -2050,6 +2062,9 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2050
2062
|
// reset input value when leaving input field
|
|
2051
2063
|
case Downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
2052
2064
|
{
|
|
2065
|
+
updateListItems({
|
|
2066
|
+
inputValue: EMPTY_INPUT
|
|
2067
|
+
});
|
|
2053
2068
|
return _extends({}, changes, {
|
|
2054
2069
|
inputValue: EMPTY_INPUT
|
|
2055
2070
|
});
|
|
@@ -2142,16 +2157,16 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2142
2157
|
label: label,
|
|
2143
2158
|
labelId: getLabelProps().id,
|
|
2144
2159
|
labelProps: getLabelProps(),
|
|
2145
|
-
readOnly: readOnly,
|
|
2146
|
-
variant: variant
|
|
2147
|
-
}, rest), React.createElement("div", {
|
|
2148
|
-
className: classNames('eds-dropdown__selected-items-and-input', {
|
|
2149
|
-
'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
|
|
2150
|
-
}),
|
|
2151
2160
|
onClick: function onClick(e) {
|
|
2152
2161
|
var _inputRef$current4;
|
|
2153
2162
|
if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
|
|
2154
|
-
}
|
|
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
|
+
})
|
|
2155
2170
|
}, selectedItems.length < maxChips ? React.createElement(React.Fragment, null, selectedItems.length > 1 ? React.createElement(a11y.VisuallyHidden, {
|
|
2156
2171
|
onClick: function onClick() {
|
|
2157
2172
|
var _inputRef$current5;
|
|
@@ -2308,12 +2323,12 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2308
2323
|
readOnly: readOnly,
|
|
2309
2324
|
variant: variant
|
|
2310
2325
|
}, rest), React.createElement("div", _extends({
|
|
2311
|
-
className: "eds-dropdown__selected-item
|
|
2326
|
+
className: "eds-dropdown__selected-item"
|
|
2312
2327
|
}, getToggleButtonProps({
|
|
2313
2328
|
id: undefined
|
|
2314
2329
|
})), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("span", {
|
|
2315
|
-
className: classNames('eds-dropdown__selected-
|
|
2316
|
-
'eds-dropdown__selected-
|
|
2330
|
+
className: classNames('eds-dropdown__selected-item__placeholder', {
|
|
2331
|
+
'eds-dropdown__selected-item__placeholder--readonly': readOnly
|
|
2317
2332
|
})
|
|
2318
2333
|
}, placeholder)) != null ? _ref3 : '')), React.createElement(DropdownList, {
|
|
2319
2334
|
getItemProps: getItemProps,
|