@entur/dropdown 7.2.3-beta.0 → 7.3.1
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, {
|
|
@@ -1172,10 +1171,8 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1172
1171
|
var highlitedItem = listItems[highlightedIndex];
|
|
1173
1172
|
// we don't want to clear selection with tab
|
|
1174
1173
|
if ((selectOnTab || selectOnBlur) && highlitedItem && highlitedItem !== selectedItem) {
|
|
1175
|
-
|
|
1174
|
+
selectItem(highlitedItem);
|
|
1176
1175
|
}
|
|
1177
|
-
closeMenu();
|
|
1178
|
-
e.preventDefault();
|
|
1179
1176
|
}
|
|
1180
1177
|
},
|
|
1181
1178
|
onBlur: function onBlur() {
|
|
@@ -1210,7 +1207,7 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1210
1207
|
|
|
1211
1208
|
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"];
|
|
1212
1209
|
var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
1213
|
-
var _inputRef$
|
|
1210
|
+
var _inputRef$current4;
|
|
1214
1211
|
var className = _ref.className,
|
|
1215
1212
|
_ref$clearable = _ref.clearable,
|
|
1216
1213
|
clearable = _ref$clearable === void 0 ? true : _ref$clearable,
|
|
@@ -1324,21 +1321,25 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1324
1321
|
}),
|
|
1325
1322
|
hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
|
|
1326
1323
|
handleListItemClicked = _useMultiselectUtils.handleListItemClicked,
|
|
1327
|
-
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState
|
|
1324
|
+
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState,
|
|
1325
|
+
clickedItemIsInSelectedItems = _useMultiselectUtils.clickedItemIsInSelectedItems,
|
|
1326
|
+
clickedItemIsSelectAll = _useMultiselectUtils.clickedItemIsSelectAll;
|
|
1328
1327
|
var _useMultipleSelection = downshift.useMultipleSelection({
|
|
1329
1328
|
selectedItems: selectedItems,
|
|
1330
1329
|
// @ts-expect-error prop missing from library types
|
|
1331
1330
|
itemToString: itemToString,
|
|
1332
1331
|
itemToKey: itemToKey,
|
|
1333
|
-
|
|
1332
|
+
onSelectedItemsChange: function onSelectedItemsChange(_ref4) {
|
|
1334
1333
|
var newSelectedItems = _ref4.selectedItems;
|
|
1335
|
-
|
|
1334
|
+
onChange(newSelectedItems);
|
|
1336
1335
|
}
|
|
1337
1336
|
}),
|
|
1338
1337
|
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
1339
|
-
getDropdownProps = _useMultipleSelection.getDropdownProps
|
|
1338
|
+
getDropdownProps = _useMultipleSelection.getDropdownProps,
|
|
1339
|
+
reset = _useMultipleSelection.reset,
|
|
1340
|
+
_removeSelectedItem = _useMultipleSelection.removeSelectedItem,
|
|
1341
|
+
setSelectedItems = _useMultipleSelection.setSelectedItems;
|
|
1340
1342
|
var stateReducer = React.useCallback(function (state, _ref5) {
|
|
1341
|
-
var _inputRef$current;
|
|
1342
1343
|
var changes = _ref5.changes,
|
|
1343
1344
|
type = _ref5.type;
|
|
1344
1345
|
if (changes.highlightedIndex !== undefined && (changes == null ? void 0 : changes.highlightedIndex) >= 0) {
|
|
@@ -1347,7 +1348,6 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1347
1348
|
switch (type) {
|
|
1348
1349
|
// reset input value when leaving input field
|
|
1349
1350
|
case downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
1350
|
-
if (state.isOpen) (_inputRef$current = inputRef.current) == null || _inputRef$current.focus();
|
|
1351
1351
|
return _extends({}, changes, {
|
|
1352
1352
|
inputValue: EMPTY_INPUT
|
|
1353
1353
|
});
|
|
@@ -1355,18 +1355,18 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1355
1355
|
case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
1356
1356
|
case downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
1357
1357
|
{
|
|
1358
|
-
var _inputRef$current$val, _inputRef$
|
|
1358
|
+
var _inputRef$current$val, _inputRef$current;
|
|
1359
1359
|
return _extends({}, changes, {
|
|
1360
1360
|
isOpen: true,
|
|
1361
|
-
inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val = inputRef == null || (_inputRef$
|
|
1361
|
+
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
|
|
1362
1362
|
});
|
|
1363
1363
|
}
|
|
1364
1364
|
// edit input value when selected items is updated outside component
|
|
1365
1365
|
case downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1366
1366
|
{
|
|
1367
|
-
var _inputRef$current$val2, _inputRef$
|
|
1367
|
+
var _inputRef$current$val2, _inputRef$current2;
|
|
1368
1368
|
return _extends({}, changes, {
|
|
1369
|
-
inputValue: (_inputRef$current$val2 = inputRef == null || (_inputRef$
|
|
1369
|
+
inputValue: (_inputRef$current$val2 = inputRef == null || (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : EMPTY_INPUT
|
|
1370
1370
|
});
|
|
1371
1371
|
}
|
|
1372
1372
|
// remove leading whitespace, select item with spacebar if input is empty and filter list items
|
|
@@ -1411,13 +1411,13 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1411
1411
|
setHighlightedIndex(hideSelectAll ? 0 : 1);
|
|
1412
1412
|
setLastHighlightedIndex(hideSelectAll ? 0 : 1);
|
|
1413
1413
|
},
|
|
1414
|
-
|
|
1414
|
+
onSelectedItemChange: function onSelectedItemChange(_ref6) {
|
|
1415
1415
|
var clickedItem = _ref6.selectedItem;
|
|
1416
1416
|
// clickedItem means item chosen either via mouse or keyboard
|
|
1417
1417
|
if (!clickedItem) return;
|
|
1418
1418
|
handleListItemClicked({
|
|
1419
1419
|
clickedItem: clickedItem,
|
|
1420
|
-
onChange:
|
|
1420
|
+
onChange: setSelectedItems
|
|
1421
1421
|
});
|
|
1422
1422
|
},
|
|
1423
1423
|
// Accessibility
|
|
@@ -1473,13 +1473,9 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1473
1473
|
}
|
|
1474
1474
|
}, [isOpen, refs.reference, refs.floating, update]);
|
|
1475
1475
|
var handleOnClear = function handleOnClear() {
|
|
1476
|
-
var _inputRef$
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
(_inputRef$current4 = inputRef.current) == null || _inputRef$current4.focus();
|
|
1480
|
-
updateListItems({
|
|
1481
|
-
inputValue: inputValue
|
|
1482
|
-
});
|
|
1476
|
+
var _inputRef$current3;
|
|
1477
|
+
(_inputRef$current3 = inputRef.current) == null || _inputRef$current3.focus();
|
|
1478
|
+
reset();
|
|
1483
1479
|
};
|
|
1484
1480
|
return React.createElement(form.BaseFormControl, _extends({
|
|
1485
1481
|
className: classNames('eds-dropdown', 'eds-dropdown--multiselect', className, {
|
|
@@ -1530,7 +1526,7 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1530
1526
|
'eds-dropdown--multiselect__selected-items-and-input--filled': hasSelectedItems
|
|
1531
1527
|
})
|
|
1532
1528
|
}, selectedItems.length > 1 ? React.createElement(a11y.VisuallyHidden, {
|
|
1533
|
-
onClick: (_inputRef$
|
|
1529
|
+
onClick: (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus
|
|
1534
1530
|
}, ariaLabelJumpToInput) : null, selectedItems.length <= maxChips ? selectedItems.map(function (selectedItem, index) {
|
|
1535
1531
|
return React.createElement(SelectedItemTag, {
|
|
1536
1532
|
ariaLabelChosen: ariaLabelChosenSingular,
|
|
@@ -1541,12 +1537,9 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1541
1537
|
key: (selectedItem == null ? void 0 : selectedItem.label) + (typeof (selectedItem == null ? void 0 : selectedItem.value) === 'string' ? selectedItem.value : ''),
|
|
1542
1538
|
readOnly: readOnly,
|
|
1543
1539
|
removeSelectedItem: function removeSelectedItem() {
|
|
1544
|
-
var _inputRef$
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
onChange: onChange
|
|
1548
|
-
});
|
|
1549
|
-
inputRef == null || (_inputRef$current6 = inputRef.current) == null || _inputRef$current6.focus();
|
|
1540
|
+
var _inputRef$current5;
|
|
1541
|
+
_removeSelectedItem(selectedItem);
|
|
1542
|
+
inputRef == null || (_inputRef$current5 = inputRef.current) == null || _inputRef$current5.focus();
|
|
1550
1543
|
},
|
|
1551
1544
|
selectedItem: selectedItem
|
|
1552
1545
|
});
|
|
@@ -1561,13 +1554,14 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1561
1554
|
onKeyDown: function onKeyDown(e) {
|
|
1562
1555
|
if (selectOnTab && isOpen && e.key === 'Tab') {
|
|
1563
1556
|
var highlitedItem = listItems[highlightedIndex];
|
|
1564
|
-
|
|
1565
|
-
if
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1557
|
+
if (!highlitedItem) return;
|
|
1558
|
+
// Skip tab selection for select all or if item already is selected
|
|
1559
|
+
var shouldSkipTabSelection = clickedItemIsSelectAll(highlitedItem) || !clickedItemIsSelectAll(highlitedItem) && clickedItemIsInSelectedItems(highlitedItem);
|
|
1560
|
+
if (shouldSkipTabSelection) return;
|
|
1561
|
+
handleListItemClicked({
|
|
1562
|
+
clickedItem: highlitedItem,
|
|
1563
|
+
onChange: setSelectedItems
|
|
1564
|
+
});
|
|
1571
1565
|
}
|
|
1572
1566
|
}
|
|
1573
1567
|
}, getDropdownProps({
|
|
@@ -1670,13 +1664,13 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1670
1664
|
},
|
|
1671
1665
|
itemToString: itemToString
|
|
1672
1666
|
}),
|
|
1673
|
-
closeMenu = _useSelect.closeMenu,
|
|
1674
1667
|
isOpen = _useSelect.isOpen,
|
|
1675
1668
|
getItemProps = _useSelect.getItemProps,
|
|
1676
1669
|
getLabelProps = _useSelect.getLabelProps,
|
|
1677
1670
|
getMenuProps = _useSelect.getMenuProps,
|
|
1678
1671
|
getToggleButtonProps = _useSelect.getToggleButtonProps,
|
|
1679
1672
|
highlightedIndex = _useSelect.highlightedIndex,
|
|
1673
|
+
selectItem = _useSelect.selectItem,
|
|
1680
1674
|
reset = _useSelect.reset;
|
|
1681
1675
|
// calculations for floating-UI popover position
|
|
1682
1676
|
var _useFloating = reactDom.useFloating({
|
|
@@ -1744,10 +1738,8 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1744
1738
|
var highlitedItem = normalizedItems[highlightedIndex];
|
|
1745
1739
|
// we don't want to clear selection with tab
|
|
1746
1740
|
if ((selectOnTab || selectOnBlur) && highlitedItem && highlitedItem !== selectedItem) {
|
|
1747
|
-
|
|
1741
|
+
selectItem(highlitedItem);
|
|
1748
1742
|
}
|
|
1749
|
-
closeMenu();
|
|
1750
|
-
e.preventDefault();
|
|
1751
1743
|
}
|
|
1752
1744
|
}
|
|
1753
1745
|
}), {
|