@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
package/dist/dropdown.esm.js
CHANGED
|
@@ -421,7 +421,9 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
421
421
|
checked: selectAllCheckboxState == null ? void 0 : selectAllCheckboxState(),
|
|
422
422
|
className: "eds-dropdown__list__item__checkbox",
|
|
423
423
|
tabIndex: -1,
|
|
424
|
-
|
|
424
|
+
onChange: function onChange() {
|
|
425
|
+
return undefined;
|
|
426
|
+
}
|
|
425
427
|
}), React.createElement("span", {
|
|
426
428
|
className: "eds-dropdown__list__item__text",
|
|
427
429
|
"aria-label": ariaValuesSelectAll().label
|
|
@@ -436,7 +438,9 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
436
438
|
checked: isItemSelected(item),
|
|
437
439
|
className: "eds-dropdown__list__item__checkbox",
|
|
438
440
|
tabIndex: -1,
|
|
439
|
-
|
|
441
|
+
onChange: function onChange() {
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
440
444
|
}), React.createElement("span", {
|
|
441
445
|
className: "eds-dropdown__list__item__text"
|
|
442
446
|
}, item.label, React.createElement(VisuallyHidden, null, isItemSelected(item) ? ariaLabelSelectedItem : '')), Array.isArray(item.icons) ? item.icons.filter(isReactComponent).map(function (Icon, index) {
|
|
@@ -1035,9 +1039,8 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1035
1039
|
inputValue: changes.inputValue
|
|
1036
1040
|
});
|
|
1037
1041
|
},
|
|
1038
|
-
|
|
1042
|
+
onSelectedItemChange: function onSelectedItemChange(_ref6) {
|
|
1039
1043
|
var newSelectedItem = _ref6.selectedItem;
|
|
1040
|
-
if (newSelectedItem === undefined) return;
|
|
1041
1044
|
onChange(newSelectedItem);
|
|
1042
1045
|
},
|
|
1043
1046
|
// Accessibility
|
|
@@ -1047,7 +1050,6 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1047
1050
|
}));
|
|
1048
1051
|
}
|
|
1049
1052
|
}),
|
|
1050
|
-
closeMenu = _useCombobox.closeMenu,
|
|
1051
1053
|
isOpen = _useCombobox.isOpen,
|
|
1052
1054
|
getToggleButtonProps = _useCombobox.getToggleButtonProps,
|
|
1053
1055
|
getLabelProps = _useCombobox.getLabelProps,
|
|
@@ -1057,7 +1059,9 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1057
1059
|
getItemProps = _useCombobox.getItemProps,
|
|
1058
1060
|
selectedItem = _useCombobox.selectedItem,
|
|
1059
1061
|
inputValue = _useCombobox.inputValue,
|
|
1060
|
-
setInputValue = _useCombobox.setInputValue
|
|
1062
|
+
setInputValue = _useCombobox.setInputValue,
|
|
1063
|
+
selectItem = _useCombobox.selectItem,
|
|
1064
|
+
reset = _useCombobox.reset;
|
|
1061
1065
|
// calculations for floating-UI popover position
|
|
1062
1066
|
var _useFloating = useFloating({
|
|
1063
1067
|
open: isOpen,
|
|
@@ -1094,13 +1098,8 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1094
1098
|
}, [isOpen, refs.reference, refs.floating, update]);
|
|
1095
1099
|
var handleOnClear = function handleOnClear() {
|
|
1096
1100
|
var _inputRef$current;
|
|
1097
|
-
onChange(null);
|
|
1098
|
-
setInputValue(EMPTY_INPUT);
|
|
1099
1101
|
(_inputRef$current = inputRef.current) == null || _inputRef$current.focus();
|
|
1100
|
-
|
|
1101
|
-
inputValue: inputValue
|
|
1102
|
-
});
|
|
1103
|
-
setShowSelectedItem(false);
|
|
1102
|
+
reset();
|
|
1104
1103
|
};
|
|
1105
1104
|
return React.createElement(BaseFormControl, _extends({
|
|
1106
1105
|
className: classNames('eds-dropdown', 'eds-dropdown--searchable', className, {
|
|
@@ -1165,10 +1164,8 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1165
1164
|
var highlitedItem = listItems[highlightedIndex];
|
|
1166
1165
|
// we don't want to clear selection with tab
|
|
1167
1166
|
if ((selectOnTab || selectOnBlur) && highlitedItem && highlitedItem !== selectedItem) {
|
|
1168
|
-
|
|
1167
|
+
selectItem(highlitedItem);
|
|
1169
1168
|
}
|
|
1170
|
-
closeMenu();
|
|
1171
|
-
e.preventDefault();
|
|
1172
1169
|
}
|
|
1173
1170
|
},
|
|
1174
1171
|
onBlur: function onBlur() {
|
|
@@ -1203,7 +1200,7 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1203
1200
|
|
|
1204
1201
|
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"];
|
|
1205
1202
|
var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
1206
|
-
var _inputRef$
|
|
1203
|
+
var _inputRef$current4;
|
|
1207
1204
|
var className = _ref.className,
|
|
1208
1205
|
_ref$clearable = _ref.clearable,
|
|
1209
1206
|
clearable = _ref$clearable === void 0 ? true : _ref$clearable,
|
|
@@ -1317,21 +1314,25 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1317
1314
|
}),
|
|
1318
1315
|
hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
|
|
1319
1316
|
handleListItemClicked = _useMultiselectUtils.handleListItemClicked,
|
|
1320
|
-
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState
|
|
1317
|
+
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState,
|
|
1318
|
+
clickedItemIsInSelectedItems = _useMultiselectUtils.clickedItemIsInSelectedItems,
|
|
1319
|
+
clickedItemIsSelectAll = _useMultiselectUtils.clickedItemIsSelectAll;
|
|
1321
1320
|
var _useMultipleSelection = useMultipleSelection({
|
|
1322
1321
|
selectedItems: selectedItems,
|
|
1323
1322
|
// @ts-expect-error prop missing from library types
|
|
1324
1323
|
itemToString: itemToString,
|
|
1325
1324
|
itemToKey: itemToKey,
|
|
1326
|
-
|
|
1325
|
+
onSelectedItemsChange: function onSelectedItemsChange(_ref4) {
|
|
1327
1326
|
var newSelectedItems = _ref4.selectedItems;
|
|
1328
|
-
|
|
1327
|
+
onChange(newSelectedItems);
|
|
1329
1328
|
}
|
|
1330
1329
|
}),
|
|
1331
1330
|
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
1332
|
-
getDropdownProps = _useMultipleSelection.getDropdownProps
|
|
1331
|
+
getDropdownProps = _useMultipleSelection.getDropdownProps,
|
|
1332
|
+
reset = _useMultipleSelection.reset,
|
|
1333
|
+
_removeSelectedItem = _useMultipleSelection.removeSelectedItem,
|
|
1334
|
+
setSelectedItems = _useMultipleSelection.setSelectedItems;
|
|
1333
1335
|
var stateReducer = React.useCallback(function (state, _ref5) {
|
|
1334
|
-
var _inputRef$current;
|
|
1335
1336
|
var changes = _ref5.changes,
|
|
1336
1337
|
type = _ref5.type;
|
|
1337
1338
|
if (changes.highlightedIndex !== undefined && (changes == null ? void 0 : changes.highlightedIndex) >= 0) {
|
|
@@ -1340,7 +1341,6 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1340
1341
|
switch (type) {
|
|
1341
1342
|
// reset input value when leaving input field
|
|
1342
1343
|
case useCombobox.stateChangeTypes.InputBlur:
|
|
1343
|
-
if (state.isOpen) (_inputRef$current = inputRef.current) == null || _inputRef$current.focus();
|
|
1344
1344
|
return _extends({}, changes, {
|
|
1345
1345
|
inputValue: EMPTY_INPUT
|
|
1346
1346
|
});
|
|
@@ -1348,18 +1348,18 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1348
1348
|
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
1349
1349
|
case useCombobox.stateChangeTypes.ItemClick:
|
|
1350
1350
|
{
|
|
1351
|
-
var _inputRef$current$val, _inputRef$
|
|
1351
|
+
var _inputRef$current$val, _inputRef$current;
|
|
1352
1352
|
return _extends({}, changes, {
|
|
1353
1353
|
isOpen: true,
|
|
1354
|
-
inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val = inputRef == null || (_inputRef$
|
|
1354
|
+
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
|
|
1355
1355
|
});
|
|
1356
1356
|
}
|
|
1357
1357
|
// edit input value when selected items is updated outside component
|
|
1358
1358
|
case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1359
1359
|
{
|
|
1360
|
-
var _inputRef$current$val2, _inputRef$
|
|
1360
|
+
var _inputRef$current$val2, _inputRef$current2;
|
|
1361
1361
|
return _extends({}, changes, {
|
|
1362
|
-
inputValue: (_inputRef$current$val2 = inputRef == null || (_inputRef$
|
|
1362
|
+
inputValue: (_inputRef$current$val2 = inputRef == null || (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : EMPTY_INPUT
|
|
1363
1363
|
});
|
|
1364
1364
|
}
|
|
1365
1365
|
// remove leading whitespace, select item with spacebar if input is empty and filter list items
|
|
@@ -1404,13 +1404,13 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1404
1404
|
setHighlightedIndex(hideSelectAll ? 0 : 1);
|
|
1405
1405
|
setLastHighlightedIndex(hideSelectAll ? 0 : 1);
|
|
1406
1406
|
},
|
|
1407
|
-
|
|
1407
|
+
onSelectedItemChange: function onSelectedItemChange(_ref6) {
|
|
1408
1408
|
var clickedItem = _ref6.selectedItem;
|
|
1409
1409
|
// clickedItem means item chosen either via mouse or keyboard
|
|
1410
1410
|
if (!clickedItem) return;
|
|
1411
1411
|
handleListItemClicked({
|
|
1412
1412
|
clickedItem: clickedItem,
|
|
1413
|
-
onChange:
|
|
1413
|
+
onChange: setSelectedItems
|
|
1414
1414
|
});
|
|
1415
1415
|
},
|
|
1416
1416
|
// Accessibility
|
|
@@ -1466,13 +1466,9 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1466
1466
|
}
|
|
1467
1467
|
}, [isOpen, refs.reference, refs.floating, update]);
|
|
1468
1468
|
var handleOnClear = function handleOnClear() {
|
|
1469
|
-
var _inputRef$
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
(_inputRef$current4 = inputRef.current) == null || _inputRef$current4.focus();
|
|
1473
|
-
updateListItems({
|
|
1474
|
-
inputValue: inputValue
|
|
1475
|
-
});
|
|
1469
|
+
var _inputRef$current3;
|
|
1470
|
+
(_inputRef$current3 = inputRef.current) == null || _inputRef$current3.focus();
|
|
1471
|
+
reset();
|
|
1476
1472
|
};
|
|
1477
1473
|
return React.createElement(BaseFormControl, _extends({
|
|
1478
1474
|
className: classNames('eds-dropdown', 'eds-dropdown--multiselect', className, {
|
|
@@ -1523,7 +1519,7 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1523
1519
|
'eds-dropdown--multiselect__selected-items-and-input--filled': hasSelectedItems
|
|
1524
1520
|
})
|
|
1525
1521
|
}, selectedItems.length > 1 ? React.createElement(VisuallyHidden, {
|
|
1526
|
-
onClick: (_inputRef$
|
|
1522
|
+
onClick: (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus
|
|
1527
1523
|
}, ariaLabelJumpToInput) : null, selectedItems.length <= maxChips ? selectedItems.map(function (selectedItem, index) {
|
|
1528
1524
|
return React.createElement(SelectedItemTag, {
|
|
1529
1525
|
ariaLabelChosen: ariaLabelChosenSingular,
|
|
@@ -1534,12 +1530,9 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1534
1530
|
key: (selectedItem == null ? void 0 : selectedItem.label) + (typeof (selectedItem == null ? void 0 : selectedItem.value) === 'string' ? selectedItem.value : ''),
|
|
1535
1531
|
readOnly: readOnly,
|
|
1536
1532
|
removeSelectedItem: function removeSelectedItem() {
|
|
1537
|
-
var _inputRef$
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
onChange: onChange
|
|
1541
|
-
});
|
|
1542
|
-
inputRef == null || (_inputRef$current6 = inputRef.current) == null || _inputRef$current6.focus();
|
|
1533
|
+
var _inputRef$current5;
|
|
1534
|
+
_removeSelectedItem(selectedItem);
|
|
1535
|
+
inputRef == null || (_inputRef$current5 = inputRef.current) == null || _inputRef$current5.focus();
|
|
1543
1536
|
},
|
|
1544
1537
|
selectedItem: selectedItem
|
|
1545
1538
|
});
|
|
@@ -1554,13 +1547,14 @@ var MultiSelect = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1554
1547
|
onKeyDown: function onKeyDown(e) {
|
|
1555
1548
|
if (selectOnTab && isOpen && e.key === 'Tab') {
|
|
1556
1549
|
var highlitedItem = listItems[highlightedIndex];
|
|
1557
|
-
|
|
1558
|
-
if
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1550
|
+
if (!highlitedItem) return;
|
|
1551
|
+
// Skip tab selection for select all or if item already is selected
|
|
1552
|
+
var shouldSkipTabSelection = clickedItemIsSelectAll(highlitedItem) || !clickedItemIsSelectAll(highlitedItem) && clickedItemIsInSelectedItems(highlitedItem);
|
|
1553
|
+
if (shouldSkipTabSelection) return;
|
|
1554
|
+
handleListItemClicked({
|
|
1555
|
+
clickedItem: highlitedItem,
|
|
1556
|
+
onChange: setSelectedItems
|
|
1557
|
+
});
|
|
1564
1558
|
}
|
|
1565
1559
|
}
|
|
1566
1560
|
}, getDropdownProps({
|
|
@@ -1663,13 +1657,13 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1663
1657
|
},
|
|
1664
1658
|
itemToString: itemToString
|
|
1665
1659
|
}),
|
|
1666
|
-
closeMenu = _useSelect.closeMenu,
|
|
1667
1660
|
isOpen = _useSelect.isOpen,
|
|
1668
1661
|
getItemProps = _useSelect.getItemProps,
|
|
1669
1662
|
getLabelProps = _useSelect.getLabelProps,
|
|
1670
1663
|
getMenuProps = _useSelect.getMenuProps,
|
|
1671
1664
|
getToggleButtonProps = _useSelect.getToggleButtonProps,
|
|
1672
1665
|
highlightedIndex = _useSelect.highlightedIndex,
|
|
1666
|
+
selectItem = _useSelect.selectItem,
|
|
1673
1667
|
reset = _useSelect.reset;
|
|
1674
1668
|
// calculations for floating-UI popover position
|
|
1675
1669
|
var _useFloating = useFloating({
|
|
@@ -1737,10 +1731,8 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
1737
1731
|
var highlitedItem = normalizedItems[highlightedIndex];
|
|
1738
1732
|
// we don't want to clear selection with tab
|
|
1739
1733
|
if ((selectOnTab || selectOnBlur) && highlitedItem && highlitedItem !== selectedItem) {
|
|
1740
|
-
|
|
1734
|
+
selectItem(highlitedItem);
|
|
1741
1735
|
}
|
|
1742
|
-
closeMenu();
|
|
1743
|
-
e.preventDefault();
|
|
1744
1736
|
}
|
|
1745
1737
|
}
|
|
1746
1738
|
}), {
|