@entur/dropdown 6.0.1 → 6.0.3-RC.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/components/DropdownList.d.ts +3 -3
- package/dist/dropdown.cjs.development.js +43 -72
- 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 +43 -72
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +130 -119
- package/dist/utils.d.ts +6 -16
- package/package.json +12 -12
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
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
|
-
|
|
9
|
-
|
|
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>[];
|
|
@@ -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
|
-
|
|
1338
|
+
'aria-multiselectable': isMultiselect
|
|
1339
|
+
}, {
|
|
1340
|
+
suppressRefError: true
|
|
1340
1341
|
}), {
|
|
1342
|
+
ref: utils.mergeRefs(listRef, getMenuProps().ref),
|
|
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) {
|
|
@@ -1517,6 +1519,9 @@ input) {
|
|
|
1517
1519
|
var itemToString = function itemToString(item) {
|
|
1518
1520
|
return item ? item.label : '';
|
|
1519
1521
|
};
|
|
1522
|
+
var itemToKey = function itemToKey(item) {
|
|
1523
|
+
return (item == null ? void 0 : item.label) + (item == null ? void 0 : item.value);
|
|
1524
|
+
};
|
|
1520
1525
|
var isFunctionWithQueryArgument = function isFunctionWithQueryArgument(object) {
|
|
1521
1526
|
return typeof object === 'function' && object.length > 0;
|
|
1522
1527
|
};
|
|
@@ -1556,17 +1561,14 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
|
1556
1561
|
};
|
|
1557
1562
|
var handleListItemClicked = function handleListItemClicked(_ref2) {
|
|
1558
1563
|
var clickedItem = _ref2.clickedItem,
|
|
1559
|
-
onChange = _ref2.onChange
|
|
1560
|
-
setLastRemovedItem = _ref2.setLastRemovedItem;
|
|
1564
|
+
onChange = _ref2.onChange;
|
|
1561
1565
|
if (clickedItemIsSelectAll(clickedItem)) {
|
|
1562
1566
|
if (allListItemsAreSelected) {
|
|
1563
|
-
setLastRemovedItem(selectAll);
|
|
1564
1567
|
return unselectAllListItems(onChange);
|
|
1565
1568
|
}
|
|
1566
1569
|
return selectAllUnselectedItemsInListItems(onChange);
|
|
1567
1570
|
}
|
|
1568
1571
|
if (clickedItemIsInSelectedItems(clickedItem)) {
|
|
1569
|
-
setLastRemovedItem(clickedItem);
|
|
1570
1572
|
return removeClickedItemFromSelectedItems(clickedItem, onChange);
|
|
1571
1573
|
}
|
|
1572
1574
|
addClickedItemToSelectedItems(clickedItem, onChange);
|
|
@@ -1607,40 +1609,23 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
|
1607
1609
|
unselectAllListItems: unselectAllListItems
|
|
1608
1610
|
};
|
|
1609
1611
|
};
|
|
1612
|
+
/* end multiselect utils */
|
|
1613
|
+
/* start a11y utils */
|
|
1614
|
+
// called when the state changes:
|
|
1615
|
+
// selectedItem, highlightedIndex, inputValue or isOpen.
|
|
1610
1616
|
function getA11yStatusMessage(options) {
|
|
1611
1617
|
var isOpen = options.isOpen,
|
|
1612
|
-
resultCount = options.resultCount,
|
|
1613
|
-
previousResultCount = options.previousResultCount,
|
|
1614
1618
|
_options$selectAllIte = options.selectAllItemIncluded,
|
|
1615
1619
|
selectAllItemIncluded = _options$selectAllIte === void 0 ? false : _options$selectAllIte,
|
|
1616
|
-
|
|
1617
|
-
ariaLabelNoResults = _options$ariaLabelNoR === void 0 ? 'Ingen resultater' : _options$ariaLabelNoR;
|
|
1620
|
+
resultCount = options.resultCount;
|
|
1618
1621
|
if (!isOpen) {
|
|
1619
1622
|
return '';
|
|
1620
1623
|
}
|
|
1621
1624
|
var resultCountWithoutSelectAll = selectAllItemIncluded ? resultCount - 1 : resultCount;
|
|
1622
1625
|
if (resultCountWithoutSelectAll === 0) {
|
|
1623
|
-
return
|
|
1626
|
+
return 'Ingen resultater';
|
|
1624
1627
|
}
|
|
1625
|
-
|
|
1626
|
-
return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med enter.";
|
|
1627
|
-
}
|
|
1628
|
-
return '';
|
|
1629
|
-
}
|
|
1630
|
-
function getA11ySelectionMessage(options) {
|
|
1631
|
-
var selectedItem = options.selectedItem,
|
|
1632
|
-
itemToStringLocal = options.itemToString,
|
|
1633
|
-
selectAllItem = options.selectAllItem;
|
|
1634
|
-
if ((selectedItem == null ? void 0 : selectedItem.value) === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen valgt.';
|
|
1635
|
-
return selectedItem ? itemToStringLocal(selectedItem) + " er valgt." : '';
|
|
1636
|
-
}
|
|
1637
|
-
function getA11yRemovalMessage(options) {
|
|
1638
|
-
var itemToString = options.itemToString,
|
|
1639
|
-
selectAllItem = options.selectAllItem,
|
|
1640
|
-
removedItem = options.removedItem;
|
|
1641
|
-
if (removedItem === undefined) return '';
|
|
1642
|
-
if (removedItem.value === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen fjernet fra valgte.';
|
|
1643
|
-
return itemToString(removedItem) + " fjernet fra valgte.";
|
|
1628
|
+
return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med Enter.";
|
|
1644
1629
|
}
|
|
1645
1630
|
/* end a11y utils */
|
|
1646
1631
|
|
|
@@ -1805,11 +1790,10 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1805
1790
|
}
|
|
1806
1791
|
},
|
|
1807
1792
|
// Accessibility
|
|
1808
|
-
getA11yStatusMessage: getA11yStatusMessage
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
return getA11ySelectionMessage(options);
|
|
1793
|
+
getA11yStatusMessage: function getA11yStatusMessage$1(options) {
|
|
1794
|
+
return getA11yStatusMessage(_extends({}, options, {
|
|
1795
|
+
resultCount: listItems.length
|
|
1796
|
+
}));
|
|
1813
1797
|
}
|
|
1814
1798
|
}, rest)),
|
|
1815
1799
|
isOpen = _useCombobox.isOpen,
|
|
@@ -1909,6 +1893,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1909
1893
|
}))), React.createElement(DropdownList, {
|
|
1910
1894
|
ariaLabelChosenSingular: ariaLabelChosenSingular,
|
|
1911
1895
|
ariaLabelSelectedItem: ariaLabelSelectedItem,
|
|
1896
|
+
getItemProps: getItemProps,
|
|
1897
|
+
getMenuProps: getMenuProps,
|
|
1898
|
+
highlightedIndex: highlightedIndex,
|
|
1912
1899
|
isOpen: isOpen,
|
|
1913
1900
|
listItems: listItems,
|
|
1914
1901
|
listStyle: _extends({}, floatingStyles, listStyle),
|
|
@@ -1916,9 +1903,6 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1916
1903
|
loading: loading,
|
|
1917
1904
|
loadingText: loadingText,
|
|
1918
1905
|
noMatchesText: noMatchesText,
|
|
1919
|
-
getItemProps: getItemProps,
|
|
1920
|
-
getMenuProps: getMenuProps,
|
|
1921
|
-
highlightedIndex: highlightedIndex,
|
|
1922
1906
|
selectedItems: selectedItem !== null ? [selectedItem] : []
|
|
1923
1907
|
}));
|
|
1924
1908
|
};
|
|
@@ -1982,14 +1966,12 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1982
1966
|
var _React$useState = React.useState(0),
|
|
1983
1967
|
lastHighlightedIndex = _React$useState[0],
|
|
1984
1968
|
setLastHighlightedIndex = _React$useState[1];
|
|
1985
|
-
var _React$useState2 = React.useState(undefined),
|
|
1986
|
-
lastRemovedItem = _React$useState2[0],
|
|
1987
|
-
setLastRemovedItem = _React$useState2[1];
|
|
1988
1969
|
var inputRef = React.useRef(null);
|
|
1989
1970
|
React.useEffect(function () {
|
|
1990
1971
|
//@ts-expect-error this is done to aid developers debug wrong prop usage
|
|
1991
1972
|
if (rest.selectedItem !== undefined) console.warn("Incorrect 'selectedItem' prop found, did you mean to use 'selectedItems?");
|
|
1992
|
-
|
|
1973
|
+
//@ts-expect-error selectedItem should not actually exist in rest
|
|
1974
|
+
}, [rest.selectedItem]);
|
|
1993
1975
|
var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
|
|
1994
1976
|
normalizedItems = _useResolvedItems.items,
|
|
1995
1977
|
loading = _useResolvedItems.loading,
|
|
@@ -2040,7 +2022,9 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2040
2022
|
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState;
|
|
2041
2023
|
var _useMultipleSelection = Downshift.useMultipleSelection({
|
|
2042
2024
|
selectedItems: selectedItems,
|
|
2025
|
+
// @ts-expect-error prop missing from library types
|
|
2043
2026
|
itemToString: itemToString,
|
|
2027
|
+
itemToKey: itemToKey,
|
|
2044
2028
|
onStateChange: function onStateChange(_ref4) {
|
|
2045
2029
|
var newSelectedItems = _ref4.selectedItems,
|
|
2046
2030
|
type = _ref4.type;
|
|
@@ -2054,13 +2038,6 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2054
2038
|
break;
|
|
2055
2039
|
}
|
|
2056
2040
|
}
|
|
2057
|
-
},
|
|
2058
|
-
// Accessibility
|
|
2059
|
-
getA11yRemovalMessage: function getA11yRemovalMessage$1(options) {
|
|
2060
|
-
return getA11yRemovalMessage(_extends({}, options, {
|
|
2061
|
-
selectAllItem: selectAll,
|
|
2062
|
-
removedItem: lastRemovedItem
|
|
2063
|
-
}));
|
|
2064
2041
|
}
|
|
2065
2042
|
}),
|
|
2066
2043
|
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
@@ -2108,8 +2085,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2108
2085
|
if (isOpen && changes.highlightedIndex !== undefined) {
|
|
2109
2086
|
handleListItemClicked({
|
|
2110
2087
|
clickedItem: listItems[changes.highlightedIndex],
|
|
2111
|
-
onChange: onChange
|
|
2112
|
-
setLastRemovedItem: setLastRemovedItem
|
|
2088
|
+
onChange: onChange
|
|
2113
2089
|
});
|
|
2114
2090
|
}
|
|
2115
2091
|
}
|
|
@@ -2159,8 +2135,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2159
2135
|
{
|
|
2160
2136
|
handleListItemClicked({
|
|
2161
2137
|
clickedItem: clickedItem,
|
|
2162
|
-
onChange: onChange
|
|
2163
|
-
setLastRemovedItem: setLastRemovedItem
|
|
2138
|
+
onChange: onChange
|
|
2164
2139
|
});
|
|
2165
2140
|
}
|
|
2166
2141
|
}
|
|
@@ -2168,14 +2143,8 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2168
2143
|
// Accessibility
|
|
2169
2144
|
getA11yStatusMessage: function getA11yStatusMessage$1(options) {
|
|
2170
2145
|
return getA11yStatusMessage(_extends({}, options, {
|
|
2171
|
-
selectAllItemIncluded: !hideSelectAll
|
|
2172
|
-
|
|
2173
|
-
},
|
|
2174
|
-
// The following A11y-helper does not work due to a bug (https://github.com/downshift-js/downshift/issues/1227)
|
|
2175
|
-
// but is left here for when it is fixed
|
|
2176
|
-
getA11ySelectionMessage: function getA11ySelectionMessage$1(options) {
|
|
2177
|
-
return getA11ySelectionMessage(_extends({}, options, {
|
|
2178
|
-
selectAllItem: selectAll
|
|
2146
|
+
selectAllItemIncluded: !hideSelectAll,
|
|
2147
|
+
resultCount: listItems.length
|
|
2179
2148
|
}));
|
|
2180
2149
|
}
|
|
2181
2150
|
}, rest)),
|
|
@@ -2266,8 +2235,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2266
2235
|
var _inputRef$current6;
|
|
2267
2236
|
handleListItemClicked({
|
|
2268
2237
|
clickedItem: selectedItem,
|
|
2269
|
-
onChange: onChange
|
|
2270
|
-
setLastRemovedItem: setLastRemovedItem
|
|
2238
|
+
onChange: onChange
|
|
2271
2239
|
});
|
|
2272
2240
|
inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
|
|
2273
2241
|
},
|
|
@@ -2292,17 +2260,16 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2292
2260
|
if (highlitedItem) {
|
|
2293
2261
|
handleListItemClicked({
|
|
2294
2262
|
clickedItem: highlitedItem,
|
|
2295
|
-
onChange: onChange
|
|
2296
|
-
setLastRemovedItem: setLastRemovedItem
|
|
2263
|
+
onChange: onChange
|
|
2297
2264
|
});
|
|
2298
2265
|
}
|
|
2299
2266
|
}
|
|
2300
2267
|
}
|
|
2301
2268
|
}, getDropdownProps({
|
|
2302
2269
|
preventKeyAction: isOpen,
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
})))))), React.createElement(DropdownList, {
|
|
2270
|
+
value: inputValue != null ? inputValue : EMPTY_INPUT,
|
|
2271
|
+
ref: inputRef
|
|
2272
|
+
}))))), "; ;"), React.createElement(DropdownList, {
|
|
2306
2273
|
ariaLabelChosenSingular: ariaLabelChosenSingular,
|
|
2307
2274
|
ariaLabelSelectedItem: ariaLabelSelectedItem,
|
|
2308
2275
|
getItemProps: getItemProps,
|
|
@@ -2385,6 +2352,7 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2385
2352
|
itemToString: itemToString
|
|
2386
2353
|
}),
|
|
2387
2354
|
isOpen = _useSelect.isOpen,
|
|
2355
|
+
openMenu = _useSelect.openMenu,
|
|
2388
2356
|
getItemProps = _useSelect.getItemProps,
|
|
2389
2357
|
getLabelProps = _useSelect.getLabelProps,
|
|
2390
2358
|
getMenuProps = _useSelect.getMenuProps,
|
|
@@ -2431,6 +2399,9 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2431
2399
|
labelId: getLabelProps().id,
|
|
2432
2400
|
labelProps: getLabelProps(),
|
|
2433
2401
|
labelTooltip: labelTooltip,
|
|
2402
|
+
onClick: function onClick(e) {
|
|
2403
|
+
if (e.target === e.currentTarget) openMenu();
|
|
2404
|
+
},
|
|
2434
2405
|
prepend: prepend,
|
|
2435
2406
|
readOnly: readOnly,
|
|
2436
2407
|
ref: refs.setReference,
|