@entur/dropdown 6.0.3-beta.2 → 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.
- package/dist/components/DropdownList.d.ts +5 -5
- package/dist/dropdown.cjs.development.js +22 -28
- 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 +22 -28
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +68 -62
- package/dist/utils.d.ts +1 -2
- package/package.json +10 -10
|
@@ -1,19 +1,19 @@
|
|
|
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>[];
|
|
13
13
|
listStyle: {
|
|
14
14
|
[key: string]: any;
|
|
15
15
|
} | undefined;
|
|
16
|
-
|
|
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,
|
|
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", "
|
|
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
|
-
|
|
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,
|
|
@@ -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: setListRef,
|
|
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) {
|
|
@@ -1559,17 +1561,14 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
|
1559
1561
|
};
|
|
1560
1562
|
var handleListItemClicked = function handleListItemClicked(_ref2) {
|
|
1561
1563
|
var clickedItem = _ref2.clickedItem,
|
|
1562
|
-
onChange = _ref2.onChange
|
|
1563
|
-
setLastRemovedItem = _ref2.setLastClickedItem;
|
|
1564
|
+
onChange = _ref2.onChange;
|
|
1564
1565
|
if (clickedItemIsSelectAll(clickedItem)) {
|
|
1565
1566
|
if (allListItemsAreSelected) {
|
|
1566
|
-
setLastRemovedItem(selectAll);
|
|
1567
1567
|
return unselectAllListItems(onChange);
|
|
1568
1568
|
}
|
|
1569
1569
|
return selectAllUnselectedItemsInListItems(onChange);
|
|
1570
1570
|
}
|
|
1571
1571
|
if (clickedItemIsInSelectedItems(clickedItem)) {
|
|
1572
|
-
setLastRemovedItem(clickedItem);
|
|
1573
1572
|
return removeClickedItemFromSelectedItems(clickedItem, onChange);
|
|
1574
1573
|
}
|
|
1575
1574
|
addClickedItemToSelectedItems(clickedItem, onChange);
|
|
@@ -1900,7 +1899,7 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
|
|
|
1900
1899
|
isOpen: isOpen,
|
|
1901
1900
|
listItems: listItems,
|
|
1902
1901
|
listStyle: _extends({}, floatingStyles, listStyle),
|
|
1903
|
-
|
|
1902
|
+
setListRef: refs.setFloating,
|
|
1904
1903
|
loading: loading,
|
|
1905
1904
|
loadingText: loadingText,
|
|
1906
1905
|
noMatchesText: noMatchesText,
|
|
@@ -1967,13 +1966,12 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1967
1966
|
var _React$useState = React.useState(0),
|
|
1968
1967
|
lastHighlightedIndex = _React$useState[0],
|
|
1969
1968
|
setLastHighlightedIndex = _React$useState[1];
|
|
1970
|
-
var _React$useState2 = React.useState(undefined),
|
|
1971
|
-
setLastClickedItem = _React$useState2[1];
|
|
1972
1969
|
var inputRef = React.useRef(null);
|
|
1973
1970
|
React.useEffect(function () {
|
|
1974
1971
|
//@ts-expect-error this is done to aid developers debug wrong prop usage
|
|
1975
1972
|
if (rest.selectedItem !== undefined) console.warn("Incorrect 'selectedItem' prop found, did you mean to use 'selectedItems?");
|
|
1976
|
-
|
|
1973
|
+
//@ts-expect-error selectedItem should not actually exist in rest
|
|
1974
|
+
}, [rest.selectedItem]);
|
|
1977
1975
|
var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
|
|
1978
1976
|
normalizedItems = _useResolvedItems.items,
|
|
1979
1977
|
loading = _useResolvedItems.loading,
|
|
@@ -2087,8 +2085,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2087
2085
|
if (isOpen && changes.highlightedIndex !== undefined) {
|
|
2088
2086
|
handleListItemClicked({
|
|
2089
2087
|
clickedItem: listItems[changes.highlightedIndex],
|
|
2090
|
-
onChange: onChange
|
|
2091
|
-
setLastClickedItem: setLastClickedItem
|
|
2088
|
+
onChange: onChange
|
|
2092
2089
|
});
|
|
2093
2090
|
}
|
|
2094
2091
|
}
|
|
@@ -2138,8 +2135,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2138
2135
|
{
|
|
2139
2136
|
handleListItemClicked({
|
|
2140
2137
|
clickedItem: clickedItem,
|
|
2141
|
-
onChange: onChange
|
|
2142
|
-
setLastClickedItem: setLastClickedItem
|
|
2138
|
+
onChange: onChange
|
|
2143
2139
|
});
|
|
2144
2140
|
}
|
|
2145
2141
|
}
|
|
@@ -2239,8 +2235,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2239
2235
|
var _inputRef$current6;
|
|
2240
2236
|
handleListItemClicked({
|
|
2241
2237
|
clickedItem: selectedItem,
|
|
2242
|
-
onChange: onChange
|
|
2243
|
-
setLastClickedItem: setLastClickedItem
|
|
2238
|
+
onChange: onChange
|
|
2244
2239
|
});
|
|
2245
2240
|
inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
|
|
2246
2241
|
},
|
|
@@ -2265,16 +2260,15 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2265
2260
|
if (highlitedItem) {
|
|
2266
2261
|
handleListItemClicked({
|
|
2267
2262
|
clickedItem: highlitedItem,
|
|
2268
|
-
onChange: onChange
|
|
2269
|
-
setLastClickedItem: setLastClickedItem
|
|
2263
|
+
onChange: onChange
|
|
2270
2264
|
});
|
|
2271
2265
|
}
|
|
2272
2266
|
}
|
|
2273
2267
|
}
|
|
2274
2268
|
}, getDropdownProps({
|
|
2275
2269
|
preventKeyAction: isOpen,
|
|
2276
|
-
|
|
2277
|
-
|
|
2270
|
+
value: inputValue != null ? inputValue : EMPTY_INPUT,
|
|
2271
|
+
ref: inputRef
|
|
2278
2272
|
})))))), React.createElement(DropdownList, {
|
|
2279
2273
|
ariaLabelChosenSingular: ariaLabelChosenSingular,
|
|
2280
2274
|
ariaLabelSelectedItem: ariaLabelSelectedItem,
|
|
@@ -2285,7 +2279,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
2285
2279
|
isOpen: isOpen,
|
|
2286
2280
|
listItems: listItems,
|
|
2287
2281
|
listStyle: _extends({}, floatingStyles, listStyle),
|
|
2288
|
-
|
|
2282
|
+
setListRef: refs.setFloating,
|
|
2289
2283
|
loading: loading,
|
|
2290
2284
|
loadingText: loadingText,
|
|
2291
2285
|
noMatchesText: noMatchesText,
|
|
@@ -2440,7 +2434,7 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
2440
2434
|
isOpen: isOpen,
|
|
2441
2435
|
listItems: normalizedItems,
|
|
2442
2436
|
listStyle: _extends({}, floatingStyles, listStyle),
|
|
2443
|
-
|
|
2437
|
+
setListRef: refs.setFloating,
|
|
2444
2438
|
loading: loading,
|
|
2445
2439
|
loadingText: loadingText,
|
|
2446
2440
|
selectedItems: selectedItem !== null ? [selectedItem] : []
|