@entur/dropdown 7.2.2 → 7.3.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/dropdown.cjs.development.js +45 -53
- 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 +45 -53
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/package.json +4 -4
|
@@ -425,7 +425,9 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
425
425
|
checked: selectAllCheckboxState == null ? void 0 : selectAllCheckboxState(),
|
|
426
426
|
className: "eds-dropdown__list__item__checkbox",
|
|
427
427
|
tabIndex: -1,
|
|
428
|
-
|
|
428
|
+
onChange: function onChange() {
|
|
429
|
+
return undefined;
|
|
430
|
+
}
|
|
429
431
|
}), React.createElement("span", {
|
|
430
432
|
className: "eds-dropdown__list__item__text",
|
|
431
433
|
"aria-label": ariaValuesSelectAll().label
|
|
@@ -440,7 +442,9 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
440
442
|
checked: isItemSelected(item),
|
|
441
443
|
className: "eds-dropdown__list__item__checkbox",
|
|
442
444
|
tabIndex: -1,
|
|
443
|
-
|
|
445
|
+
onChange: function onChange() {
|
|
446
|
+
return undefined;
|
|
447
|
+
}
|
|
444
448
|
}), React.createElement("span", {
|
|
445
449
|
className: "eds-dropdown__list__item__text"
|
|
446
450
|
}, item.label, React.createElement(a11y.VisuallyHidden, null, isItemSelected(item) ? ariaLabelSelectedItem : '')), Array.isArray(item.icons) ? item.icons.filter(isReactComponent).map(function (Icon, index) {
|
|
@@ -1039,9 +1043,8 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1039
1043
|
inputValue: changes.inputValue
|
|
1040
1044
|
});
|
|
1041
1045
|
},
|
|
1042
|
-
|
|
1046
|
+
onSelectedItemChange: function onSelectedItemChange(_ref6) {
|
|
1043
1047
|
var newSelectedItem = _ref6.selectedItem;
|
|
1044
|
-
if (newSelectedItem === undefined) return;
|
|
1045
1048
|
onChange(newSelectedItem);
|
|
1046
1049
|
},
|
|
1047
1050
|
// Accessibility
|
|
@@ -1051,7 +1054,6 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1051
1054
|
}));
|
|
1052
1055
|
}
|
|
1053
1056
|
}),
|
|
1054
|
-
closeMenu = _useCombobox.closeMenu,
|
|
1055
1057
|
isOpen = _useCombobox.isOpen,
|
|
1056
1058
|
getToggleButtonProps = _useCombobox.getToggleButtonProps,
|
|
1057
1059
|
getLabelProps = _useCombobox.getLabelProps,
|
|
@@ -1061,7 +1063,9 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1061
1063
|
getItemProps = _useCombobox.getItemProps,
|
|
1062
1064
|
selectedItem = _useCombobox.selectedItem,
|
|
1063
1065
|
inputValue = _useCombobox.inputValue,
|
|
1064
|
-
setInputValue = _useCombobox.setInputValue
|
|
1066
|
+
setInputValue = _useCombobox.setInputValue,
|
|
1067
|
+
selectItem = _useCombobox.selectItem,
|
|
1068
|
+
reset = _useCombobox.reset;
|
|
1065
1069
|
// calculations for floating-UI popover position
|
|
1066
1070
|
var _useFloating = reactDom.useFloating({
|
|
1067
1071
|
open: isOpen,
|
|
@@ -1098,13 +1102,8 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1098
1102
|
}, [isOpen, refs.reference, refs.floating, update]);
|
|
1099
1103
|
var handleOnClear = function handleOnClear() {
|
|
1100
1104
|
var _inputRef$current;
|
|
1101
|
-
onChange(null);
|
|
1102
|
-
setInputValue(EMPTY_INPUT);
|
|
1103
1105
|
(_inputRef$current = inputRef.current) == null || _inputRef$current.focus();
|
|
1104
|
-
|
|
1105
|
-
inputValue: inputValue
|
|
1106
|
-
});
|
|
1107
|
-
setShowSelectedItem(false);
|
|
1106
|
+
reset();
|
|
1108
1107
|
};
|
|
1109
1108
|
return React.createElement(form.BaseFormControl, _extends({
|
|
1110
1109
|
className: classNames('eds-dropdown', 'eds-dropdown--searchable', className, {
|
|
@@ -1169,10 +1168,8 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1169
1168
|
var highlitedItem = listItems[highlightedIndex];
|
|
1170
1169
|
// we don't want to clear selection with tab
|
|
1171
1170
|
if ((selectOnTab || selectOnBlur) && highlitedItem && highlitedItem !== selectedItem) {
|
|
1172
|
-
|
|
1171
|
+
selectItem(highlitedItem);
|
|
1173
1172
|
}
|
|
1174
|
-
closeMenu();
|
|
1175
|
-
e.preventDefault();
|
|
1176
1173
|
}
|
|
1177
1174
|
},
|
|
1178
1175
|
onBlur: function onBlur() {
|
|
@@ -1207,7 +1204,7 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1207
1204
|
|
|
1208
1205
|
var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "hideSelectAll", "items", "itemFilter", "label", "labelAllItemsSelected", "labelClearAllItems", "labelSelectAll", "labelTooltip", "listStyle", "loading", "loadingText", "maxChips", "noMatchesText", "onChange", "placeholder", "readOnly", "selectedItems", "selectOnBlur", "selectOnTab", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected", "ariaLabelSelectedItem"];
|
|
1209
1206
|
var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
1210
|
-
var _inputRef$
|
|
1207
|
+
var _inputRef$current4;
|
|
1211
1208
|
var className = _ref.className,
|
|
1212
1209
|
_ref$clearable = _ref.clearable,
|
|
1213
1210
|
clearable = _ref$clearable === void 0 ? true : _ref$clearable,
|
|
@@ -1321,21 +1318,25 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1321
1318
|
}),
|
|
1322
1319
|
hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
|
|
1323
1320
|
handleListItemClicked = _useMultiselectUtils.handleListItemClicked,
|
|
1324
|
-
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState
|
|
1321
|
+
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState,
|
|
1322
|
+
clickedItemIsInSelectedItems = _useMultiselectUtils.clickedItemIsInSelectedItems,
|
|
1323
|
+
clickedItemIsSelectAll = _useMultiselectUtils.clickedItemIsSelectAll;
|
|
1325
1324
|
var _useMultipleSelection = downshift.useMultipleSelection({
|
|
1326
1325
|
selectedItems: selectedItems,
|
|
1327
1326
|
// @ts-expect-error prop missing from library types
|
|
1328
1327
|
itemToString: itemToString,
|
|
1329
1328
|
itemToKey: itemToKey,
|
|
1330
|
-
|
|
1329
|
+
onSelectedItemsChange: function onSelectedItemsChange(_ref4) {
|
|
1331
1330
|
var newSelectedItems = _ref4.selectedItems;
|
|
1332
|
-
|
|
1331
|
+
onChange(newSelectedItems);
|
|
1333
1332
|
}
|
|
1334
1333
|
}),
|
|
1335
1334
|
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
1336
|
-
getDropdownProps = _useMultipleSelection.getDropdownProps
|
|
1335
|
+
getDropdownProps = _useMultipleSelection.getDropdownProps,
|
|
1336
|
+
reset = _useMultipleSelection.reset,
|
|
1337
|
+
_removeSelectedItem = _useMultipleSelection.removeSelectedItem,
|
|
1338
|
+
setSelectedItems = _useMultipleSelection.setSelectedItems;
|
|
1337
1339
|
var stateReducer = React.useCallback(function (state, _ref5) {
|
|
1338
|
-
var _inputRef$current;
|
|
1339
1340
|
var changes = _ref5.changes,
|
|
1340
1341
|
type = _ref5.type;
|
|
1341
1342
|
if (changes.highlightedIndex !== undefined && (changes == null ? void 0 : changes.highlightedIndex) >= 0) {
|
|
@@ -1344,7 +1345,6 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1344
1345
|
switch (type) {
|
|
1345
1346
|
// reset input value when leaving input field
|
|
1346
1347
|
case downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
1347
|
-
if (state.isOpen) (_inputRef$current = inputRef.current) == null || _inputRef$current.focus();
|
|
1348
1348
|
return _extends({}, changes, {
|
|
1349
1349
|
inputValue: EMPTY_INPUT
|
|
1350
1350
|
});
|
|
@@ -1352,18 +1352,18 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1352
1352
|
case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
1353
1353
|
case downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
1354
1354
|
{
|
|
1355
|
-
var _inputRef$current$val, _inputRef$
|
|
1355
|
+
var _inputRef$current$val, _inputRef$current;
|
|
1356
1356
|
return _extends({}, changes, {
|
|
1357
1357
|
isOpen: true,
|
|
1358
|
-
inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val = inputRef == null || (_inputRef$
|
|
1358
|
+
inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val = inputRef == null || (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value) != null ? _inputRef$current$val : EMPTY_INPUT
|
|
1359
1359
|
});
|
|
1360
1360
|
}
|
|
1361
1361
|
// edit input value when selected items is updated outside component
|
|
1362
1362
|
case downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1363
1363
|
{
|
|
1364
|
-
var _inputRef$current$val2, _inputRef$
|
|
1364
|
+
var _inputRef$current$val2, _inputRef$current2;
|
|
1365
1365
|
return _extends({}, changes, {
|
|
1366
|
-
inputValue: (_inputRef$current$val2 = inputRef == null || (_inputRef$
|
|
1366
|
+
inputValue: (_inputRef$current$val2 = inputRef == null || (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : EMPTY_INPUT
|
|
1367
1367
|
});
|
|
1368
1368
|
}
|
|
1369
1369
|
// remove leading whitespace, select item with spacebar if input is empty and filter list items
|
|
@@ -1408,13 +1408,13 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1408
1408
|
setHighlightedIndex(hideSelectAll ? 0 : 1);
|
|
1409
1409
|
setLastHighlightedIndex(hideSelectAll ? 0 : 1);
|
|
1410
1410
|
},
|
|
1411
|
-
|
|
1411
|
+
onSelectedItemChange: function onSelectedItemChange(_ref6) {
|
|
1412
1412
|
var clickedItem = _ref6.selectedItem;
|
|
1413
1413
|
// clickedItem means item chosen either via mouse or keyboard
|
|
1414
1414
|
if (!clickedItem) return;
|
|
1415
1415
|
handleListItemClicked({
|
|
1416
1416
|
clickedItem: clickedItem,
|
|
1417
|
-
onChange:
|
|
1417
|
+
onChange: setSelectedItems
|
|
1418
1418
|
});
|
|
1419
1419
|
},
|
|
1420
1420
|
// Accessibility
|
|
@@ -1470,13 +1470,9 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1470
1470
|
}
|
|
1471
1471
|
}, [isOpen, refs.reference, refs.floating, update]);
|
|
1472
1472
|
var handleOnClear = function handleOnClear() {
|
|
1473
|
-
var _inputRef$
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
(_inputRef$current4 = inputRef.current) == null || _inputRef$current4.focus();
|
|
1477
|
-
updateListItems({
|
|
1478
|
-
inputValue: inputValue
|
|
1479
|
-
});
|
|
1473
|
+
var _inputRef$current3;
|
|
1474
|
+
(_inputRef$current3 = inputRef.current) == null || _inputRef$current3.focus();
|
|
1475
|
+
reset();
|
|
1480
1476
|
};
|
|
1481
1477
|
return React.createElement(form.BaseFormControl, _extends({
|
|
1482
1478
|
className: classNames('eds-dropdown', 'eds-dropdown--multiselect', className, {
|
|
@@ -1527,7 +1523,7 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1527
1523
|
'eds-dropdown--multiselect__selected-items-and-input--filled': hasSelectedItems
|
|
1528
1524
|
})
|
|
1529
1525
|
}, selectedItems.length > 1 ? React.createElement(a11y.VisuallyHidden, {
|
|
1530
|
-
onClick: (_inputRef$
|
|
1526
|
+
onClick: (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus
|
|
1531
1527
|
}, ariaLabelJumpToInput) : null, selectedItems.length <= maxChips ? selectedItems.map(function (selectedItem, index) {
|
|
1532
1528
|
return React.createElement(SelectedItemTag, {
|
|
1533
1529
|
ariaLabelChosen: ariaLabelChosenSingular,
|
|
@@ -1538,12 +1534,9 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1538
1534
|
key: (selectedItem == null ? void 0 : selectedItem.label) + (typeof (selectedItem == null ? void 0 : selectedItem.value) === 'string' ? selectedItem.value : ''),
|
|
1539
1535
|
readOnly: readOnly,
|
|
1540
1536
|
removeSelectedItem: function removeSelectedItem() {
|
|
1541
|
-
var _inputRef$
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
onChange: onChange
|
|
1545
|
-
});
|
|
1546
|
-
inputRef == null || (_inputRef$current6 = inputRef.current) == null || _inputRef$current6.focus();
|
|
1537
|
+
var _inputRef$current5;
|
|
1538
|
+
_removeSelectedItem(selectedItem);
|
|
1539
|
+
inputRef == null || (_inputRef$current5 = inputRef.current) == null || _inputRef$current5.focus();
|
|
1547
1540
|
},
|
|
1548
1541
|
selectedItem: selectedItem
|
|
1549
1542
|
});
|
|
@@ -1558,13 +1551,14 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1558
1551
|
onKeyDown: function onKeyDown(e) {
|
|
1559
1552
|
if (selectOnTab && isOpen && e.key === 'Tab') {
|
|
1560
1553
|
var highlitedItem = listItems[highlightedIndex];
|
|
1561
|
-
|
|
1562
|
-
if
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1554
|
+
if (!highlitedItem) return;
|
|
1555
|
+
// Skip tab selection for select all or if item already is selected
|
|
1556
|
+
var shouldSkipTabSelection = clickedItemIsSelectAll(highlitedItem) || !clickedItemIsSelectAll(highlitedItem) && clickedItemIsInSelectedItems(highlitedItem);
|
|
1557
|
+
if (shouldSkipTabSelection) return;
|
|
1558
|
+
handleListItemClicked({
|
|
1559
|
+
clickedItem: highlitedItem,
|
|
1560
|
+
onChange: setSelectedItems
|
|
1561
|
+
});
|
|
1568
1562
|
}
|
|
1569
1563
|
}
|
|
1570
1564
|
}, getDropdownProps({
|
|
@@ -1667,13 +1661,13 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1667
1661
|
},
|
|
1668
1662
|
itemToString: itemToString
|
|
1669
1663
|
}),
|
|
1670
|
-
closeMenu = _useSelect.closeMenu,
|
|
1671
1664
|
isOpen = _useSelect.isOpen,
|
|
1672
1665
|
getItemProps = _useSelect.getItemProps,
|
|
1673
1666
|
getLabelProps = _useSelect.getLabelProps,
|
|
1674
1667
|
getMenuProps = _useSelect.getMenuProps,
|
|
1675
1668
|
getToggleButtonProps = _useSelect.getToggleButtonProps,
|
|
1676
1669
|
highlightedIndex = _useSelect.highlightedIndex,
|
|
1670
|
+
selectItem = _useSelect.selectItem,
|
|
1677
1671
|
reset = _useSelect.reset;
|
|
1678
1672
|
// calculations for floating-UI popover position
|
|
1679
1673
|
var _useFloating = reactDom.useFloating({
|
|
@@ -1741,10 +1735,8 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1741
1735
|
var highlitedItem = normalizedItems[highlightedIndex];
|
|
1742
1736
|
// we don't want to clear selection with tab
|
|
1743
1737
|
if ((selectOnTab || selectOnBlur) && highlitedItem && highlitedItem !== selectedItem) {
|
|
1744
|
-
|
|
1738
|
+
selectItem(highlitedItem);
|
|
1745
1739
|
}
|
|
1746
|
-
closeMenu();
|
|
1747
|
-
e.preventDefault();
|
|
1748
1740
|
}
|
|
1749
1741
|
}
|
|
1750
1742
|
}), {
|