@entur/dropdown 5.0.0-beta.3 → 5.0.0-beta.4

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.
@@ -976,65 +976,7 @@ var Dropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
976
976
  }, searchAbleProps))));
977
977
  });
978
978
 
979
- var _excluded$6 = ["className", "disabled", "readOnly", "items", "loadingText", "prepend", "style", "label", "variant", "feedback", "disableLabelAnimation"];
980
- var NativeDropdown = function NativeDropdown(_ref) {
981
- var className = _ref.className,
982
- _ref$disabled = _ref.disabled,
983
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
984
- _ref$readOnly = _ref.readOnly,
985
- readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
986
- items = _ref.items,
987
- loadingText = _ref.loadingText,
988
- prepend = _ref.prepend,
989
- style = _ref.style,
990
- label = _ref.label,
991
- variant = _ref.variant,
992
- feedback = _ref.feedback,
993
- disableLabelAnimation = _ref.disableLabelAnimation,
994
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
995
- var _useResolvedItems = useResolvedItems(items),
996
- normalizedItems = _useResolvedItems.items,
997
- loading = _useResolvedItems.loading;
998
- var rightSideIcon = React__default["default"].createElement(icons.DownArrowIcon, {
999
- inline: true,
1000
- "aria-hidden": "true"
1001
- });
1002
- if (disabled || readOnly) {
1003
- rightSideIcon = null;
1004
- } else if (loading) {
1005
- rightSideIcon = React__default["default"].createElement(DropdownLoadingDots, {
1006
- "aria-hidden": "true"
1007
- }, loadingText);
1008
- }
1009
- var nativeDropdownId = utils.useRandomId('eds-native-dropdown');
1010
- return React__default["default"].createElement(form.BaseFormControl, {
1011
- disabled: disabled,
1012
- readOnly: readOnly,
1013
- prepend: prepend,
1014
- append: rightSideIcon,
1015
- className: className,
1016
- style: style,
1017
- label: label,
1018
- labelId: nativeDropdownId,
1019
- variant: variant,
1020
- feedback: feedback,
1021
- disableLabelAnimation: disableLabelAnimation,
1022
- isFilled: true
1023
- }, React__default["default"].createElement("select", _extends({
1024
- "aria-invalid": variant === 'error',
1025
- "aria-labelledby": nativeDropdownId,
1026
- "aria-busy": loading,
1027
- className: "eds-form-control eds-dropdown",
1028
- disabled: disabled || readOnly
1029
- }, rest), normalizedItems.map(function (item) {
1030
- return React__default["default"].createElement("option", {
1031
- key: item.value,
1032
- value: item.value
1033
- }, item.label);
1034
- })));
1035
- };
1036
-
1037
- var _excluded$5 = ["className", "clearable", "debounceTimeout", "disabled", "feedback", "initialSelectedItems", "items", "itemsSelectedLabel", "label", "listStyle", "loading", "loadingText", "onChange", "openOnFocus", "readOnly", "style", "variant"];
979
+ var _excluded$6 = ["className", "clearable", "debounceTimeout", "disabled", "feedback", "initialSelectedItems", "items", "itemsSelectedLabel", "label", "listStyle", "loading", "loadingText", "onChange", "openOnFocus", "readOnly", "style", "variant"];
1038
980
  var MultiSelectContext = /*#__PURE__*/React__default["default"].createContext(null);
1039
981
  var useMultiSelectContext = function useMultiSelectContext() {
1040
982
  var context = React__default["default"].useContext(MultiSelectContext);
@@ -1049,8 +991,8 @@ actionAndChanges) {
1049
991
  var changes = actionAndChanges.changes,
1050
992
  type = actionAndChanges.type;
1051
993
  switch (type) {
1052
- case Downshift.useSelect.stateChangeTypes.MenuKeyDownEnter:
1053
- case Downshift.useSelect.stateChangeTypes.MenuKeyDownSpaceButton:
994
+ case Downshift.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:
995
+ case Downshift.useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
1054
996
  case Downshift.useSelect.stateChangeTypes.ItemClick:
1055
997
  return _extends({}, changes, {
1056
998
  isOpen: true,
@@ -1090,7 +1032,7 @@ var MultiSelect = function MultiSelect(_ref) {
1090
1032
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
1091
1033
  style = _ref.style,
1092
1034
  variant = _ref.variant,
1093
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
1035
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
1094
1036
  var _useResolvedItems = useResolvedItems(input, debounceTimeout),
1095
1037
  items = _useResolvedItems.items;
1096
1038
  var _useState = React.useState(initialSelectedItems),
@@ -1275,33 +1217,49 @@ function SelectedItemsLabel(items) {
1275
1217
  }).toString() : items.length + " elementer valgt";
1276
1218
  }
1277
1219
 
1278
- var _excluded$4 = ["selectedItems", "listItems", "inputValue", "isOpen", "getMenuProps", "getItemProps", "highlightedIndex", "showSelectAllInList", "loading", "selectAllCheckboxState", "selectAllItem", "listStyle", "noMatchesText", "loadingText", "selectedItemAriaLabel"];
1220
+ var _excluded$5 = ["ariaLabelSelectedItem", "getItemProps", "getMenuProps", "inputValue", "isOpen", "highlightedIndex", "listItems", "listStyle", "loading", "loadingText", "noMatchesText", "selectAllCheckboxState", "selectAllItem", "selectedItems", "showSelectAllInList"];
1279
1221
  var DropdownList = function DropdownList(_ref) {
1280
- var selectedItems = _ref.selectedItems,
1281
- listItems = _ref.listItems,
1282
- isOpen = _ref.isOpen,
1283
- getMenuProps = _ref.getMenuProps,
1222
+ var _ref$ariaLabelSelecte = _ref.ariaLabelSelectedItem,
1223
+ ariaLabelSelectedItem = _ref$ariaLabelSelecte === void 0 ? ', valgt element, trykk for å fjerne' : _ref$ariaLabelSelecte,
1284
1224
  getItemProps = _ref.getItemProps,
1225
+ getMenuProps = _ref.getMenuProps,
1226
+ isOpen = _ref.isOpen,
1285
1227
  highlightedIndex = _ref.highlightedIndex,
1228
+ listItems = _ref.listItems,
1229
+ listStyle = _ref.listStyle,
1286
1230
  _ref$loading = _ref.loading,
1287
1231
  loading = _ref$loading === void 0 ? false : _ref$loading,
1288
- selectAllCheckboxState = _ref.selectAllCheckboxState,
1289
- selectAllItem = _ref.selectAllItem,
1290
- listStyle = _ref.listStyle,
1291
- _ref$noMatchesText = _ref.noMatchesText,
1292
- noMatchesText = _ref$noMatchesText === void 0 ? 'Ingen treff for søket' : _ref$noMatchesText,
1293
1232
  _ref$loadingText = _ref.loadingText,
1294
1233
  loadingText = _ref$loadingText === void 0 ? 'Laster inn …' : _ref$loadingText,
1295
- _ref$selectedItemAria = _ref.selectedItemAriaLabel,
1296
- selectedItemAriaLabel = _ref$selectedItemAria === void 0 ? ', valgt element' : _ref$selectedItemAria,
1297
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
1234
+ _ref$noMatchesText = _ref.noMatchesText,
1235
+ noMatchesText = _ref$noMatchesText === void 0 ? 'Ingen treff for søket' : _ref$noMatchesText,
1236
+ selectAllCheckboxState = _ref.selectAllCheckboxState,
1237
+ selectAllItem = _ref.selectAllItem,
1238
+ selectedItems = _ref.selectedItems,
1239
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
1298
1240
  var isMultiselect = selectAllItem !== undefined;
1299
1241
  var isNoMatches = !loading && (listItems.length === 0 || listItems.length === 1 && listItems[0].value === (selectAllItem == null ? void 0 : selectAllItem.value));
1300
- var itemIsSelected = function itemIsSelected(item) {
1242
+ var isItemSelected = function isItemSelected(item) {
1301
1243
  return selectedItems.some(function (selectedItem) {
1302
1244
  return selectedItem.value === item.value;
1303
1245
  });
1304
1246
  };
1247
+ var ariaLabelSelectAll = function ariaLabelSelectAll() {
1248
+ switch (selectAllCheckboxState == null ? void 0 : selectAllCheckboxState()) {
1249
+ case 'indeterminate':
1250
+ {
1251
+ return (selectAllItem == null ? void 0 : selectAllItem.label) + ", delvis valgt";
1252
+ }
1253
+ case true:
1254
+ {
1255
+ return (selectAllItem == null ? void 0 : selectAllItem.label) + ", valgt";
1256
+ }
1257
+ default:
1258
+ {
1259
+ return "" + (selectAllItem == null ? void 0 : selectAllItem.label);
1260
+ }
1261
+ }
1262
+ };
1305
1263
  var selectAllListItemContent = function selectAllListItemContent() {
1306
1264
  return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(form.Checkbox, {
1307
1265
  "aria-hidden": "true",
@@ -1312,13 +1270,14 @@ var DropdownList = function DropdownList(_ref) {
1312
1270
  },
1313
1271
  tabIndex: -1
1314
1272
  }), React__default["default"].createElement("span", {
1315
- className: "eds-dropdown__list__item__text"
1273
+ className: "eds-dropdown__list__item__text",
1274
+ "aria-label": ariaLabelSelectAll()
1316
1275
  }, selectAllItem == null ? void 0 : selectAllItem.label));
1317
1276
  };
1318
1277
  var listItemContent = function listItemContent(item) {
1319
1278
  return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(form.Checkbox, {
1320
1279
  "aria-hidden": "true",
1321
- checked: itemIsSelected(item),
1280
+ checked: isItemSelected(item),
1322
1281
  className: "eds-dropdown__list__item__checkbox",
1323
1282
  onChange: function onChange() {
1324
1283
  return;
@@ -1329,7 +1288,7 @@ var DropdownList = function DropdownList(_ref) {
1329
1288
  tabIndex: -1
1330
1289
  }), React__default["default"].createElement("span", {
1331
1290
  className: "eds-dropdown__list__item__text"
1332
- }, item.label, React__default["default"].createElement(a11y.VisuallyHidden, null, selectedItemAriaLabel)), item.icons && React__default["default"].createElement("span", null, item.icons.map(function (Icon, index) {
1291
+ }, item.label, React__default["default"].createElement(a11y.VisuallyHidden, null, isItemSelected(item) ? ariaLabelSelectedItem : '')), item.icons && React__default["default"].createElement("span", null, item.icons.map(function (Icon, index) {
1333
1292
  return React__default["default"].createElement(Icon, {
1334
1293
  key: index,
1335
1294
  inline: true,
@@ -1338,13 +1297,13 @@ var DropdownList = function DropdownList(_ref) {
1338
1297
  })));
1339
1298
  };
1340
1299
  return (
1341
- // use popover from @entur/tooltip when the package uses floating-ui
1300
+ // use popover from @entur/tooltip when that package upgrades to floating-ui
1342
1301
  React__default["default"].createElement("ul", _extends({}, getMenuProps(), {
1343
1302
  className: classNames__default["default"]('eds-dropdown__list', {
1344
1303
  'eds-dropdown__list--open': isOpen
1345
1304
  }),
1346
1305
  style: _extends({}, rest.style, listStyle)
1347
- }), isOpen && listItems.length > 0 && listItems.map(function (item, index) {
1306
+ }), listItems.length > 0 && listItems.map(function (item, index) {
1348
1307
  var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1349
1308
  if (itemIsSelectAll && listItems.length <= 2) return React__default["default"].createElement(React__default["default"].Fragment, null);
1350
1309
  return React__default["default"].createElement("li", _extends({
@@ -1352,21 +1311,148 @@ var DropdownList = function DropdownList(_ref) {
1352
1311
  className: classNames__default["default"]('eds-dropdown__list__item', {
1353
1312
  'eds-dropdown__list__item--select-all': itemIsSelectAll,
1354
1313
  'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1355
- 'eds-dropdown__list__item--selected': !isMultiselect && itemIsSelected(item)
1314
+ 'eds-dropdown__list__item--selected': !isMultiselect && isItemSelected(item)
1356
1315
  })
1357
1316
  }, getItemProps({
1358
1317
  key: "" + index + item.value,
1359
1318
  item: item,
1360
1319
  index: index
1361
1320
  })), itemIsSelectAll ? selectAllListItemContent() : listItemContent(item));
1362
- }), isOpen && isNoMatches && React__default["default"].createElement("li", {
1321
+ }), isNoMatches && React__default["default"].createElement("li", {
1363
1322
  className: "eds-dropdown__list__item"
1364
- }, noMatchesText), isOpen && loading && React__default["default"].createElement("li", {
1323
+ }, noMatchesText), loading && React__default["default"].createElement("li", {
1365
1324
  className: "eds-dropdown__list__item"
1366
1325
  }, loadingText))
1367
1326
  );
1368
1327
  };
1369
1328
 
1329
+ var _excluded$4 = ["tabIndex"];
1330
+ var SelectedItemTag = function SelectedItemTag(_ref) {
1331
+ var _getSelectedItemProps;
1332
+ var ariaLabelRemoveSelected = _ref.ariaLabelRemoveSelected,
1333
+ _ref$ariaLabelChosen = _ref.ariaLabelChosen,
1334
+ ariaLabelChosen = _ref$ariaLabelChosen === void 0 ? 'valgt' : _ref$ariaLabelChosen,
1335
+ disabled = _ref.disabled,
1336
+ getSelectedItemProps = _ref.getSelectedItemProps,
1337
+ index = _ref.index,
1338
+ readOnly = _ref.readOnly,
1339
+ removeSelectedItem = _ref.removeSelectedItem,
1340
+ selectedItem = _ref.selectedItem;
1341
+ var _ref2 = (_getSelectedItemProps = getSelectedItemProps == null ? void 0 : getSelectedItemProps({
1342
+ selectedItem: selectedItem,
1343
+ index: index
1344
+ })) != null ? _getSelectedItemProps : {},
1345
+ selectedItemProps = _objectWithoutPropertiesLoose(_ref2, _excluded$4);
1346
+ return React__default["default"].createElement(chip.TagChip, _extends({
1347
+ className: classNames__default["default"]('eds-dropdown__selected-item-tag', {
1348
+ 'eds-dropdown__selected-item-tag--readonly': readOnly,
1349
+ 'eds-dropdown__selected-item-tag--disabled': disabled
1350
+ })
1351
+ }, selectedItemProps, {
1352
+ onClose: function onClose(e) {
1353
+ e.stopPropagation();
1354
+ removeSelectedItem(selectedItem);
1355
+ },
1356
+ closeButtonAriaLabel: selectedItem.label + " " + ariaLabelChosen + ", " + ariaLabelRemoveSelected + " ",
1357
+ key: selectedItem.value,
1358
+ "aria-live": "polite"
1359
+ }), React__default["default"].createElement("span", {
1360
+ "aria-hidden": "true"
1361
+ }, selectedItem.label));
1362
+ };
1363
+ var FieldAppend$1 = function FieldAppend(_ref3) {
1364
+ var _ref3$ariaHiddenToggl = _ref3.ariaHiddenToggleButton,
1365
+ ariaHiddenToggleButton = _ref3$ariaHiddenToggl === void 0 ? false : _ref3$ariaHiddenToggl,
1366
+ ariaLabelCloseList = _ref3.ariaLabelCloseList,
1367
+ ariaLabelOpenList = _ref3.ariaLabelOpenList,
1368
+ _ref3$clearable = _ref3.clearable,
1369
+ clearable = _ref3$clearable === void 0 ? false : _ref3$clearable,
1370
+ labelClearSelectedItems = _ref3.labelClearSelectedItems,
1371
+ _ref3$disabled = _ref3.disabled,
1372
+ disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
1373
+ _ref3$focusable = _ref3.focusable,
1374
+ focusable = _ref3$focusable === void 0 ? false : _ref3$focusable,
1375
+ getToggleButtonProps = _ref3.getToggleButtonProps,
1376
+ isOpen = _ref3.isOpen,
1377
+ _ref3$loading = _ref3.loading,
1378
+ loading = _ref3$loading === void 0 ? false : _ref3$loading,
1379
+ _ref3$loadingText = _ref3.loadingText,
1380
+ loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
1381
+ onClear = _ref3.onClear,
1382
+ selectedItems = _ref3.selectedItems;
1383
+ if (loading) {
1384
+ return React__default["default"].createElement("div", {
1385
+ className: 'eds-dropdown-appendix__toggle-button--loading-dots'
1386
+ }, React__default["default"].createElement(loader.LoadingDots, {
1387
+ "aria-label": loadingText
1388
+ }));
1389
+ }
1390
+ if (disabled) {
1391
+ return null;
1392
+ }
1393
+ return React__default["default"].createElement("div", {
1394
+ className: "eds-dropdown-appendix"
1395
+ }, clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(ClearableButton, {
1396
+ onClear: onClear,
1397
+ focusable: true,
1398
+ labelClearSelectedItems: labelClearSelectedItems
1399
+ }), React__default["default"].createElement("div", {
1400
+ className: "eds-dropdown-appendix__divider"
1401
+ })), React__default["default"].createElement(ToggleButton, {
1402
+ "aria-hidden": ariaHiddenToggleButton,
1403
+ ariaLabelCloseList: ariaLabelCloseList,
1404
+ ariaLabelOpenList: ariaLabelOpenList,
1405
+ getToggleButtonProps: getToggleButtonProps,
1406
+ isOpen: isOpen,
1407
+ focusable: focusable
1408
+ }));
1409
+ };
1410
+ var ClearableButton = function ClearableButton(_ref4) {
1411
+ var onClear = _ref4.onClear,
1412
+ _ref4$labelClearSelec = _ref4.labelClearSelectedItems,
1413
+ labelClearSelectedItems = _ref4$labelClearSelec === void 0 ? 'Fjern valgte' : _ref4$labelClearSelec,
1414
+ _ref4$focusable = _ref4.focusable,
1415
+ focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
1416
+ return React__default["default"].createElement(tooltip.Tooltip, {
1417
+ "aria-hidden": "true",
1418
+ placement: "right",
1419
+ content: labelClearSelectedItems
1420
+ }, React__default["default"].createElement(button.IconButton, {
1421
+ className: "eds-dropdown-appendix__clear-button",
1422
+ type: "button",
1423
+ tabIndex: focusable ? 0 : 1,
1424
+ onClick: onClear,
1425
+ "aria-label": labelClearSelectedItems
1426
+ }, React__default["default"].createElement(icons.CloseSmallIcon, {
1427
+ "aria-hidden": "true"
1428
+ })));
1429
+ };
1430
+ var ToggleButton = function ToggleButton(_ref5) {
1431
+ var getToggleButtonProps = _ref5.getToggleButtonProps,
1432
+ isOpen = _ref5.isOpen,
1433
+ _ref5$ariaHidden = _ref5['aria-hidden'],
1434
+ ariaHidden = _ref5$ariaHidden === void 0 ? false : _ref5$ariaHidden,
1435
+ _ref5$ariaLabelCloseL = _ref5.ariaLabelCloseList,
1436
+ ariaLabelCloseList = _ref5$ariaLabelCloseL === void 0 ? 'Lukk liste med valg' : _ref5$ariaLabelCloseL,
1437
+ _ref5$ariaLabelOpenLi = _ref5.ariaLabelOpenList,
1438
+ ariaLabelOpenList = _ref5$ariaLabelOpenLi === void 0 ? 'Åpne liste med valg' : _ref5$ariaLabelOpenLi,
1439
+ _ref5$focusable = _ref5.focusable,
1440
+ focusable = _ref5$focusable === void 0 ? false : _ref5$focusable;
1441
+ return React__default["default"].createElement(button.IconButton, _extends({}, getToggleButtonProps({
1442
+ className: classNames__default["default"]('eds-dropdown-appendix__toggle-button', {
1443
+ 'eds-dropdown-appendix__toggle-button--open': isOpen
1444
+ })
1445
+ }), {
1446
+ "aria-hidden": ariaHidden,
1447
+ "aria-label": isOpen ? ariaLabelCloseList : ariaLabelOpenList,
1448
+ tabIndex: focusable ? 0 : -1,
1449
+ type: "button"
1450
+ }), React__default["default"].createElement(icons.DownArrowIcon, {
1451
+ "aria-hidden": "true"
1452
+ }));
1453
+ };
1454
+
1455
+ /* start general utils */
1370
1456
  var EMPTY_INPUT = '';
1371
1457
  function lowerCaseFilterTest(item, input) {
1372
1458
  if (!input) {
@@ -1382,10 +1468,10 @@ var itemToString = function itemToString(item) {
1382
1468
  var useMultiselectUtils = function useMultiselectUtils(_ref) {
1383
1469
  var listItems = _ref.listItems,
1384
1470
  selectedItems = _ref.selectedItems,
1385
- selectAllValue = _ref.selectAllValue;
1471
+ selectAll = _ref.selectAll;
1386
1472
  var hasSelectedItems = selectedItems.length > 0;
1387
1473
  var listItemsWithoutSelectAll = listItems.filter(function (item) {
1388
- return item.value !== selectAllValue;
1474
+ return item.value !== selectAll.value;
1389
1475
  });
1390
1476
  var allListItemsAreSelected = listItemsWithoutSelectAll.filter(function (item) {
1391
1477
  return !selectedItems.includes(item);
@@ -1402,18 +1488,21 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1402
1488
  });
1403
1489
  };
1404
1490
  var clickedItemIsSelectAll = function clickedItemIsSelectAll(clickedItem) {
1405
- return clickedItem.value === selectAllValue;
1491
+ return clickedItem.value === selectAll.value;
1406
1492
  };
1407
1493
  var handleListItemClicked = function handleListItemClicked(_ref2) {
1408
1494
  var clickedItem = _ref2.clickedItem,
1409
- onChange = _ref2.onChange;
1495
+ onChange = _ref2.onChange,
1496
+ setLastRemovedItem = _ref2.setLastRemovedItem;
1410
1497
  if (clickedItemIsSelectAll(clickedItem)) {
1411
1498
  if (allListItemsAreSelected) {
1499
+ setLastRemovedItem(selectAll);
1412
1500
  return unselectAllListItems(onChange);
1413
1501
  }
1414
1502
  return selectAllUnselectedItemsInListItems(onChange);
1415
1503
  }
1416
1504
  if (clickedItemIsInSelectedItems(clickedItem)) {
1505
+ setLastRemovedItem(clickedItem);
1417
1506
  return removeClickedItemFromSelectedItems(clickedItem, onChange);
1418
1507
  }
1419
1508
  addClickedItemToSelectedItems(clickedItem, onChange);
@@ -1453,125 +1542,63 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1453
1542
  unselectAllListItems: unselectAllListItems
1454
1543
  };
1455
1544
  };
1456
-
1457
- var _excluded$3 = ["tabIndex"];
1458
- var SelectedItemTag = function SelectedItemTag(_ref) {
1459
- var _getSelectedItemProps;
1460
- var ariaLabelRemoveSelected = _ref.ariaLabelRemoveSelected,
1461
- disabled = _ref.disabled,
1462
- getSelectedItemProps = _ref.getSelectedItemProps,
1463
- index = _ref.index,
1464
- readOnly = _ref.readOnly,
1465
- removeSelectedItem = _ref.removeSelectedItem,
1466
- selectedItem = _ref.selectedItem;
1467
- var _ref2 = (_getSelectedItemProps = getSelectedItemProps == null ? void 0 : getSelectedItemProps({
1468
- selectedItem: selectedItem,
1469
- index: index
1470
- })) != null ? _getSelectedItemProps : {},
1471
- selectedItemProps = _objectWithoutPropertiesLoose(_ref2, _excluded$3);
1472
- return React__default["default"].createElement(chip.TagChip, _extends({
1473
- className: classNames__default["default"]('eds-dropdown__selected-item-tag', {
1474
- 'eds-dropdown__selected-item-tag--readonly': readOnly,
1475
- 'eds-dropdown__selected-item-tag--disabled': disabled
1476
- })
1477
- }, selectedItemProps, {
1478
- onClose: function onClose(e) {
1479
- e.stopPropagation();
1480
- removeSelectedItem(selectedItem);
1481
- },
1482
- closeButtonAriaLabel: selectedItem.label + ", " + ariaLabelRemoveSelected + " ",
1483
- key: selectedItem.value
1484
- }), React__default["default"].createElement("span", {
1485
- "aria-hidden": "true"
1486
- }, selectedItem.label));
1487
- };
1488
- var FieldAppend = function FieldAppend(_ref3) {
1489
- var _ref3$clearable = _ref3.clearable,
1490
- clearable = _ref3$clearable === void 0 ? false : _ref3$clearable,
1491
- clearSelectedItemsLabel = _ref3.clearSelectedItemsLabel,
1492
- _ref3$disabled = _ref3.disabled,
1493
- disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
1494
- _ref3$focusable = _ref3.focusable,
1495
- focusable = _ref3$focusable === void 0 ? false : _ref3$focusable,
1496
- getToggleButtonProps = _ref3.getToggleButtonProps,
1497
- isOpen = _ref3.isOpen,
1498
- _ref3$loading = _ref3.loading,
1499
- loading = _ref3$loading === void 0 ? false : _ref3$loading,
1500
- _ref3$loadingText = _ref3.loadingText,
1501
- loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
1502
- onClear = _ref3.onClear,
1503
- selectedItems = _ref3.selectedItems;
1504
- if (loading) {
1505
- return React__default["default"].createElement(DropdownLoadingDots, null, loadingText);
1545
+ function getA11yStatusMessage(options) {
1546
+ var isOpen = options.isOpen,
1547
+ resultCount = options.resultCount,
1548
+ previousResultCount = options.previousResultCount,
1549
+ _options$selectAllIte = options.selectAllItemIncluded,
1550
+ selectAllItemIncluded = _options$selectAllIte === void 0 ? false : _options$selectAllIte,
1551
+ _options$ariaLabelNoR = options.ariaLabelNoResults,
1552
+ ariaLabelNoResults = _options$ariaLabelNoR === void 0 ? 'Ingen resultater' : _options$ariaLabelNoR;
1553
+ if (!isOpen) {
1554
+ return '';
1506
1555
  }
1507
- if (disabled) {
1508
- return null;
1556
+ var resultCountWithoutSelectAll = selectAllItemIncluded ? resultCount - 1 : resultCount;
1557
+ if (resultCountWithoutSelectAll === 0) {
1558
+ return ariaLabelNoResults;
1509
1559
  }
1510
- return (
1511
- // to have a natural tab order, these elements are ordered opposite of how they are displayed
1512
- React__default["default"].createElement("div", {
1513
- className: "eds-dropdown-appendix"
1514
- }, React__default["default"].createElement(ToggleButton, {
1515
- getToggleButtonProps: getToggleButtonProps,
1516
- isOpen: isOpen,
1517
- focusable: focusable
1518
- }), clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("div", {
1519
- className: "eds-dropdown-appendix__divider"
1520
- }), React__default["default"].createElement(ClearableButton, {
1521
- onClear: onClear,
1522
- focusable: true,
1523
- clearSelectedItemsLabel: clearSelectedItemsLabel
1524
- })))
1525
- );
1526
- };
1527
- var ClearableButton = function ClearableButton(_ref4) {
1528
- var onClear = _ref4.onClear,
1529
- _ref4$clearSelectedIt = _ref4.clearSelectedItemsLabel,
1530
- clearSelectedItemsLabel = _ref4$clearSelectedIt === void 0 ? 'Fjern valgte' : _ref4$clearSelectedIt,
1531
- _ref4$focusable = _ref4.focusable,
1532
- focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
1533
- return React__default["default"].createElement(tooltip.Tooltip, {
1534
- "aria-hidden": "true",
1535
- placement: "right",
1536
- content: clearSelectedItemsLabel
1537
- }, React__default["default"].createElement(button.IconButton, {
1538
- className: "eds-dropdown-appendix__clear-button",
1539
- type: "button",
1540
- tabIndex: focusable ? 0 : 1,
1541
- onClick: onClear,
1542
- "aria-label": clearSelectedItemsLabel
1543
- }, React__default["default"].createElement(icons.CloseSmallIcon, {
1544
- "aria-hidden": "true"
1545
- })));
1546
- };
1547
- var ToggleButton = function ToggleButton(_ref5) {
1548
- var getToggleButtonProps = _ref5.getToggleButtonProps,
1549
- isOpen = _ref5.isOpen,
1550
- _ref5$closeAriaLabel = _ref5.closeAriaLabel,
1551
- closeAriaLabel = _ref5$closeAriaLabel === void 0 ? 'Lukk liste med valg' : _ref5$closeAriaLabel,
1552
- _ref5$openAriaLabel = _ref5.openAriaLabel,
1553
- openAriaLabel = _ref5$openAriaLabel === void 0 ? 'Åpne liste med valg' : _ref5$openAriaLabel,
1554
- _ref5$focusable = _ref5.focusable,
1555
- focusable = _ref5$focusable === void 0 ? false : _ref5$focusable;
1556
- return React__default["default"].createElement(button.IconButton, _extends({}, getToggleButtonProps({
1557
- className: classNames__default["default"]('eds-dropdown-appendix__toggle-button', {
1558
- 'eds-dropdown-appendix__toggle-button--open': isOpen
1559
- })
1560
- }), {
1561
- "aria-label": isOpen ? closeAriaLabel : openAriaLabel,
1562
- tabIndex: focusable ? 0 : -1,
1563
- type: "button"
1564
- }), React__default["default"].createElement(icons.DownArrowIcon, {
1565
- "aria-hidden": "true"
1566
- }));
1560
+ if (resultCount !== previousResultCount) {
1561
+ return resultCountWithoutSelectAll + " resultat" + (resultCountWithoutSelectAll === 1 ? '' : 'er') + " tilgjengelig, naviger med pil opp eller ned, velg elementer med enter.";
1562
+ }
1563
+ return '';
1564
+ }
1565
+ function getA11ySelectionMessage(options) {
1566
+ var selectedItem = options.selectedItem,
1567
+ itemToStringLocal = options.itemToString,
1568
+ selectAllItem = options.selectAllItem;
1569
+ if ((selectedItem == null ? void 0 : selectedItem.value) === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen valgt.';
1570
+ return selectedItem ? itemToStringLocal(selectedItem) + " er valgt." : '';
1571
+ }
1572
+ function getA11yRemovalMessage(options) {
1573
+ var itemToString = options.itemToString,
1574
+ selectAllItem = options.selectAllItem,
1575
+ removedItem = options.removedItem;
1576
+ if (removedItem === undefined) return '';
1577
+ if (removedItem.value === (selectAllItem == null ? void 0 : selectAllItem.value)) return 'Alle elementer i listen fjernet fra valgte.';
1578
+ return itemToString(removedItem) + " fjernet fra valgte.";
1579
+ }
1580
+ /**A VoiceOver click is always preformed in the center of the clicked element.
1581
+ This functions expolits that to check if the performed click likely is
1582
+ made by VoiceOver. */
1583
+ var isVoiceOverClick = function isVoiceOverClick(clickEvent) {
1584
+ var targetElementRect = clickEvent.currentTarget.getBoundingClientRect();
1585
+ var targetElementMiddleX = Math.floor(targetElementRect.x + targetElementRect.width / 2);
1586
+ var targetElementMiddleY = Math.floor(targetElementRect.y + targetElementRect.height / 2);
1587
+ var clickPositionX = clickEvent.clientX;
1588
+ var clickPositionY = clickEvent.clientY;
1589
+ console.log('targetX:', targetElementMiddleX, 'targetY:', targetElementMiddleY, 'clickX:', clickPositionX, 'clickY:', clickPositionY);
1590
+ return Math.abs(targetElementMiddleX - clickPositionX) <= 1 && Math.abs(targetElementMiddleY - clickPositionY) <= 1;
1567
1591
  };
1592
+ /* end a11y utils */
1568
1593
 
1569
- var _excluded$2 = ["className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "itemFilter", "items", "label", "listStyle", "loadingText", "onChange", "openOnFocus", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
1594
+ var _excluded$3 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "itemFilter", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
1570
1595
  var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1571
1596
  var _selectedItem$label;
1572
- var className = _ref.className,
1597
+ var ariaLabelCloseList = _ref.ariaLabelCloseList,
1598
+ ariaLabelOpenList = _ref.ariaLabelOpenList,
1599
+ className = _ref.className,
1573
1600
  _ref$clearable = _ref.clearable,
1574
- clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1601
+ clearable = _ref$clearable === void 0 ? true : _ref$clearable,
1575
1602
  debounceTimeout = _ref.debounceTimeout,
1576
1603
  _ref$disabled = _ref.disabled,
1577
1604
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
@@ -1582,11 +1609,11 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1582
1609
  itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
1583
1610
  initialItems = _ref.items,
1584
1611
  label = _ref.label,
1612
+ _ref$labelClearSelect = _ref.labelClearSelectedItem,
1613
+ labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
1585
1614
  listStyle = _ref.listStyle,
1586
1615
  loadingText = _ref.loadingText,
1587
1616
  onChange = _ref.onChange,
1588
- _ref$openOnFocus = _ref.openOnFocus,
1589
- openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1590
1617
  placeholder = _ref.placeholder,
1591
1618
  prepend = _ref.prepend,
1592
1619
  _ref$readOnly = _ref.readOnly,
@@ -1597,7 +1624,7 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1597
1624
  style = _ref.style,
1598
1625
  _ref$variant = _ref.variant,
1599
1626
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
1600
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1627
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
1601
1628
  var _useState = React.useState(false),
1602
1629
  hideSelectedItem = _useState[0],
1603
1630
  setHideSelectedItem = _useState[1];
@@ -1637,6 +1664,7 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1637
1664
  setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
1638
1665
  }
1639
1666
  switch (type) {
1667
+ // empty input to show selected item and reset dropdown list on item selection
1640
1668
  case Downshift.useCombobox.stateChangeTypes.ItemClick:
1641
1669
  case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
1642
1670
  case Downshift.useCombobox.stateChangeTypes.InputBlur:
@@ -1646,21 +1674,21 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1646
1674
  inputValue: EMPTY_INPUT
1647
1675
  });
1648
1676
  return _extends({}, changes, {
1649
- inputValue: EMPTY_INPUT // reset input value to show placeholder on focus
1677
+ inputValue: EMPTY_INPUT
1650
1678
  });
1651
1679
  }
1652
-
1680
+ // remove leading whitespace, select element with spacebar on empty input, and filter list based on input
1653
1681
  case Downshift.useCombobox.stateChangeTypes.InputChange:
1654
1682
  {
1655
1683
  var _changes$inputValue;
1656
1684
  var leadingWhitespaceTest = /^\s+/g;
1657
- var isSpacePressedOnEmptyInput = changes.inputValue == ' ';
1685
+ var isSpacePressedOnEmptyInput = changes.inputValue === ' ';
1658
1686
  if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(leadingWhitespaceTest)) {
1659
1687
  setInputValue(changes.inputValue.replace(leadingWhitespaceTest, EMPTY_INPUT));
1660
1688
  if (isSpacePressedOnEmptyInput) {
1661
1689
  openMenu();
1662
1690
  if (isOpen && changes.highlightedIndex !== undefined) {
1663
- onChange(listItems[changes.highlightedIndex]);
1691
+ onChange == null ? void 0 : onChange(listItems[changes.highlightedIndex]);
1664
1692
  }
1665
1693
  }
1666
1694
  } else {
@@ -1689,8 +1717,15 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1689
1717
  if (!selectOnBlur) break;
1690
1718
  case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
1691
1719
  case Downshift.useCombobox.stateChangeTypes.ItemClick:
1692
- onChange(clickedItem != null ? clickedItem : null);
1720
+ onChange == null ? void 0 : onChange(clickedItem != null ? clickedItem : null);
1693
1721
  }
1722
+ },
1723
+ // Accessibility
1724
+ getA11yStatusMessage: getA11yStatusMessage,
1725
+ // The following A11y-helper does not work due to a bug (https://github.com/downshift-js/downshift/issues/1227)
1726
+ // but is left here for when it is fixed
1727
+ getA11ySelectionMessage: function getA11ySelectionMessage$1(options) {
1728
+ return getA11ySelectionMessage(options);
1694
1729
  }
1695
1730
  }, rest)),
1696
1731
  isOpen = _useCombobox.isOpen,
@@ -1699,7 +1734,6 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1699
1734
  getLabelProps = _useCombobox.getLabelProps,
1700
1735
  getMenuProps = _useCombobox.getMenuProps,
1701
1736
  getInputProps = _useCombobox.getInputProps,
1702
- getComboboxProps = _useCombobox.getComboboxProps,
1703
1737
  highlightedIndex = _useCombobox.highlightedIndex,
1704
1738
  getItemProps = _useCombobox.getItemProps,
1705
1739
  selectedItem = _useCombobox.selectedItem,
@@ -1707,7 +1741,7 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1707
1741
  setInputValue = _useCombobox.setInputValue;
1708
1742
  var handleOnClear = function handleOnClear() {
1709
1743
  var _inputRef$current;
1710
- onChange(null);
1744
+ onChange == null ? void 0 : onChange(null);
1711
1745
  setInputValue(EMPTY_INPUT);
1712
1746
  (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
1713
1747
  updateListItems({
@@ -1717,9 +1751,11 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1717
1751
  return React__default["default"].createElement("div", {
1718
1752
  className: "eds-dropdown__wrapper"
1719
1753
  }, React__default["default"].createElement(form.BaseFormControl, _extends({
1720
- append: React__default["default"].createElement(FieldAppend, {
1754
+ append: React__default["default"].createElement(FieldAppend$1, {
1755
+ ariaLabelCloseList: ariaLabelCloseList,
1756
+ ariaLabelOpenList: ariaLabelOpenList,
1721
1757
  clearable: clearable,
1722
- clearSelectedItemsLabel: "Fjern valgt",
1758
+ labelClearSelectedItems: labelClearSelectedItem,
1723
1759
  disabled: readOnly || disabled,
1724
1760
  focusable: false,
1725
1761
  getToggleButtonProps: getToggleButtonProps,
@@ -1733,15 +1769,17 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1733
1769
  disabled: disabled,
1734
1770
  disableLabelAnimation: disableLabelAnimation,
1735
1771
  feedback: feedback,
1736
- isFilled: selectedItem || inputValue !== EMPTY_INPUT,
1772
+ isFilled: selectedItem !== null || inputValue !== EMPTY_INPUT,
1737
1773
  label: label,
1774
+ labelId: getLabelProps().id,
1738
1775
  labelProps: getLabelProps(),
1739
1776
  prepend: prepend,
1740
1777
  readOnly: readOnly,
1741
1778
  style: style,
1742
1779
  variant: variant
1743
- }, getComboboxProps(), rest), !hideSelectedItem && selectedItem && !inputValue && React__default["default"].createElement("span", {
1744
- className: "eds-dropdown__selected-item__wrapper"
1780
+ }, rest), !hideSelectedItem && selectedItem && !inputValue && React__default["default"].createElement("span", {
1781
+ className: "eds-dropdown__selected-item__wrapper",
1782
+ "aria-hidden": "true"
1745
1783
  }, React__default["default"].createElement("span", {
1746
1784
  className: "eds-dropdown__selected-item",
1747
1785
  onClick: function onClick() {
@@ -1753,11 +1791,13 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1753
1791
  disabled: readOnly || disabled,
1754
1792
  placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder
1755
1793
  }, getInputProps({
1794
+ onClick: function onClick(e) {
1795
+ if (!isOpen && isVoiceOverClick(e)) openMenu();
1796
+ },
1756
1797
  onBlur: function onBlur() {
1757
1798
  setHideSelectedItem(false);
1758
1799
  },
1759
1800
  onFocus: function onFocus() {
1760
- if (!isOpen && openOnFocus) openMenu();
1761
1801
  setHideSelectedItem(true);
1762
1802
  },
1763
1803
  ref: inputRef
@@ -1774,15 +1814,11 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1774
1814
  }));
1775
1815
  };
1776
1816
 
1777
- var _excluded$1 = ["allItemsSelectedLabel", "ariaLabelRemoveSelected", "className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "items", "label", "listStyle", "loadingText", "maxTags", "onChange", "openOnFocus", "placeholder", "readOnly", "clearAllItemsAriaLabel", "selectAllLabel", "selectedItems", "selectOnBlur", "style", "variant"];
1817
+ var _excluded$2 = ["className", "clearable", "clearInputOnSelect", "debounceTimeout", "disabled", "feedback", "hideSelectAll", "items", "label", "labelAllItemsSelected", "labelClearAllItems", "labelSelectAll", "listStyle", "loadingText", "maxTags", "onChange", "placeholder", "readOnly", "selectedItems", "selectOnBlur", "style", "variant", "ariaLabelChosenSingular", "ariaLabelChosenPlural", "ariaLabelCloseList", "ariaLabelJumpToInput", "ariaLabelOpenList", "ariaLabelRemoveSelected"];
1778
1818
  var MultiSelectBeta = function MultiSelectBeta(_ref) {
1779
- var _ref$allItemsSelected = _ref.allItemsSelectedLabel,
1780
- allItemsSelectedLabel = _ref$allItemsSelected === void 0 ? 'Alle valgt' : _ref$allItemsSelected,
1781
- _ref$ariaLabelRemoveS = _ref.ariaLabelRemoveSelected,
1782
- ariaLabelRemoveSelected = _ref$ariaLabelRemoveS === void 0 ? 'trykk for å fjerne valg' : _ref$ariaLabelRemoveS,
1783
- className = _ref.className,
1819
+ var className = _ref.className,
1784
1820
  _ref$clearable = _ref.clearable,
1785
- clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1821
+ clearable = _ref$clearable === void 0 ? true : _ref$clearable,
1786
1822
  _ref$clearInputOnSele = _ref.clearInputOnSelect,
1787
1823
  clearInputOnSelect = _ref$clearInputOnSele === void 0 ? false : _ref$clearInputOnSele,
1788
1824
  _ref$disabled = _ref.disabled,
@@ -1792,46 +1828,65 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1792
1828
  hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
1793
1829
  initialItems = _ref.items,
1794
1830
  label = _ref.label,
1831
+ _ref$labelAllItemsSel = _ref.labelAllItemsSelected,
1832
+ labelAllItemsSelected = _ref$labelAllItemsSel === void 0 ? 'Alle valgt' : _ref$labelAllItemsSel,
1833
+ _ref$labelClearAllIte = _ref.labelClearAllItems,
1834
+ labelClearAllItems = _ref$labelClearAllIte === void 0 ? 'Fjern valgte' : _ref$labelClearAllIte,
1835
+ _ref$labelSelectAll = _ref.labelSelectAll,
1836
+ labelSelectAll = _ref$labelSelectAll === void 0 ? 'Velg alle' : _ref$labelSelectAll,
1795
1837
  listStyle = _ref.listStyle,
1796
1838
  loadingText = _ref.loadingText,
1797
1839
  _ref$maxTags = _ref.maxTags,
1798
1840
  maxTags = _ref$maxTags === void 0 ? 10 : _ref$maxTags,
1799
- onChange = _ref.onChange,
1800
- _ref$openOnFocus = _ref.openOnFocus,
1801
- openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1841
+ _ref$onChange = _ref.onChange,
1842
+ onChange = _ref$onChange === void 0 ? function () {
1843
+ return undefined;
1844
+ } : _ref$onChange,
1802
1845
  placeholder = _ref.placeholder,
1803
1846
  _ref$readOnly = _ref.readOnly,
1804
1847
  readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
1805
- _ref$clearAllItemsAri = _ref.clearAllItemsAriaLabel,
1806
- clearAllItemsAriaLabel = _ref$clearAllItemsAri === void 0 ? 'Fjern valgte' : _ref$clearAllItemsAri,
1807
- _ref$selectAllLabel = _ref.selectAllLabel,
1808
- selectAllLabel = _ref$selectAllLabel === void 0 ? 'Velg alle' : _ref$selectAllLabel,
1809
1848
  selectedItems = _ref.selectedItems,
1810
1849
  _ref$selectOnBlur = _ref.selectOnBlur,
1811
1850
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
1812
1851
  style = _ref.style,
1813
1852
  _ref$variant = _ref.variant,
1814
1853
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
1815
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1854
+ _ref$ariaLabelChosenS = _ref.ariaLabelChosenSingular,
1855
+ ariaLabelChosenSingular = _ref$ariaLabelChosenS === void 0 ? 'valgt' : _ref$ariaLabelChosenS,
1856
+ _ref$ariaLabelChosenP = _ref.ariaLabelChosenPlural,
1857
+ ariaLabelChosenPlural = _ref$ariaLabelChosenP === void 0 ? 'valgte' : _ref$ariaLabelChosenP,
1858
+ ariaLabelCloseList = _ref.ariaLabelCloseList,
1859
+ _ref$ariaLabelJumpToI = _ref.ariaLabelJumpToInput,
1860
+ ariaLabelJumpToInput = _ref$ariaLabelJumpToI === void 0 ? selectedItems.length + " valgte elementer, trykk for \xE5 hoppe til tekstfeltet" : _ref$ariaLabelJumpToI,
1861
+ ariaLabelOpenList = _ref.ariaLabelOpenList,
1862
+ _ref$ariaLabelRemoveS = _ref.ariaLabelRemoveSelected,
1863
+ ariaLabelRemoveSelected = _ref$ariaLabelRemoveS === void 0 ? 'trykk for å fjerne valg' : _ref$ariaLabelRemoveS,
1864
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1816
1865
  var _React$useState = React__default["default"].useState(0),
1817
1866
  lastHighlightedIndex = _React$useState[0],
1818
1867
  setLastHighlightedIndex = _React$useState[1];
1868
+ var _React$useState2 = React__default["default"].useState(undefined),
1869
+ lastRemovedItem = _React$useState2[0],
1870
+ setLastRemovedItem = _React$useState2[1];
1819
1871
  var inputRef = React.useRef(null);
1820
1872
  var _useResolvedItems = useResolvedItems(initialItems),
1821
1873
  normalizedItems = _useResolvedItems.items,
1822
1874
  loading = _useResolvedItems.loading,
1823
1875
  fetchItems = _useResolvedItems.fetchItems;
1824
1876
  var isAllNonAsyncItemsSelected = typeof initialItems !== 'function' && selectedItems.length === normalizedItems.length;
1877
+ // special 'item' used as Select All entry in the dropdown list
1825
1878
  var selectAll = {
1826
1879
  value: utils.useRandomId('select-all'),
1827
- label: selectAllLabel
1880
+ label: labelSelectAll
1828
1881
  };
1882
+ // special 'item' used as a replacement selected item tag for when
1883
+ // there are more selected element than maxTags
1829
1884
  var summarySelectedItems = React__default["default"].useMemo(function () {
1830
1885
  return {
1831
1886
  value: EMPTY_INPUT,
1832
- label: isAllNonAsyncItemsSelected ? allItemsSelectedLabel : selectedItems.length + ' valgte'
1887
+ label: isAllNonAsyncItemsSelected ? labelAllItemsSelected : selectedItems.length + ' ' + ariaLabelChosenPlural
1833
1888
  };
1834
- }, [isAllNonAsyncItemsSelected, selectedItems, allItemsSelectedLabel]);
1889
+ }, [isAllNonAsyncItemsSelected, selectedItems, labelAllItemsSelected]);
1835
1890
  var _useState = React.useState([].concat(!hideSelectAll ? [selectAll] : [], normalizedItems)),
1836
1891
  listItems = _useState[0],
1837
1892
  setListItems = _useState[1];
@@ -1853,25 +1908,27 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1853
1908
  inputValue: inputValue
1854
1909
  });
1855
1910
  }, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
1856
- var _useMultipleSelection = Downshift.useMultipleSelection({
1857
- selectedItems: selectedItems,
1858
- itemToString: itemToString,
1859
- onSelectedItemsChange: function onSelectedItemsChange(changes) {
1860
- var _changes$selectedItem;
1861
- onChange((_changes$selectedItem = changes.selectedItems) != null ? _changes$selectedItem : []);
1862
- }
1863
- }),
1864
- getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
1865
- getDropdownProps = _useMultipleSelection.getDropdownProps,
1866
- removeSelectedItem = _useMultipleSelection.removeSelectedItem;
1867
1911
  var _useMultiselectUtils = useMultiselectUtils({
1868
1912
  listItems: listItems,
1869
- selectAllValue: selectAll.value,
1913
+ selectAll: selectAll,
1870
1914
  selectedItems: selectedItems
1871
1915
  }),
1872
1916
  hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
1873
1917
  handleListItemClicked = _useMultiselectUtils.handleListItemClicked,
1874
1918
  selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState;
1919
+ var _useMultipleSelection = Downshift.useMultipleSelection({
1920
+ selectedItems: selectedItems,
1921
+ itemToString: itemToString,
1922
+ // Accessibility
1923
+ getA11yRemovalMessage: function getA11yRemovalMessage$1(options) {
1924
+ return getA11yRemovalMessage(_extends({}, options, {
1925
+ selectAllItem: selectAll,
1926
+ removedItem: lastRemovedItem
1927
+ }));
1928
+ }
1929
+ }),
1930
+ getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
1931
+ getDropdownProps = _useMultipleSelection.getDropdownProps;
1875
1932
  var stateReducer = React__default["default"].useCallback(function (_, _ref4) {
1876
1933
  var changes = _ref4.changes,
1877
1934
  type = _ref4.type;
@@ -1879,6 +1936,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1879
1936
  setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
1880
1937
  }
1881
1938
  switch (type) {
1939
+ // keep menu open and edit input value on item selection
1882
1940
  case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
1883
1941
  case Downshift.useCombobox.stateChangeTypes.ItemClick:
1884
1942
  {
@@ -1893,6 +1951,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1893
1951
  inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val = inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value) != null ? _inputRef$current$val : EMPTY_INPUT
1894
1952
  });
1895
1953
  }
1954
+ // edit input value when selected items is updated outside component
1896
1955
  case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1897
1956
  {
1898
1957
  var _inputRef$current$val2, _inputRef$current2;
@@ -1900,6 +1959,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1900
1959
  inputValue: clearInputOnSelect ? EMPTY_INPUT : (_inputRef$current$val2 = inputRef == null ? void 0 : (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : EMPTY_INPUT
1901
1960
  });
1902
1961
  }
1962
+ // remove leading whitespace, select item with spacebar if input is empty and filter list items
1903
1963
  case Downshift.useCombobox.stateChangeTypes.InputChange:
1904
1964
  {
1905
1965
  var _changes$inputValue;
@@ -1909,10 +1969,11 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1909
1969
  setInputValue(changes.inputValue.replace(leadingWhitespaceTest, EMPTY_INPUT));
1910
1970
  if (isSpacePressedOnEmptyInput) {
1911
1971
  openMenu();
1912
- if (isOpen && changes.highlightedIndex) {
1972
+ if (isOpen && changes.highlightedIndex !== undefined) {
1913
1973
  handleListItemClicked({
1914
1974
  clickedItem: listItems[changes.highlightedIndex],
1915
- onChange: onChange
1975
+ onChange: onChange,
1976
+ setLastRemovedItem: setLastRemovedItem
1916
1977
  });
1917
1978
  }
1918
1979
  }
@@ -1923,6 +1984,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1923
1984
  }
1924
1985
  return changes;
1925
1986
  }
1987
+ // reset input value when leaving input field
1926
1988
  case Downshift.useCombobox.stateChangeTypes.InputBlur:
1927
1989
  {
1928
1990
  return _extends({}, changes, {
@@ -1950,14 +2012,29 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1950
2012
  if (!selectOnBlur) break;
1951
2013
  case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
1952
2014
  case Downshift.useCombobox.stateChangeTypes.ItemClick:
1953
- handleListItemClicked({
1954
- clickedItem: clickedItem,
1955
- onChange: onChange
1956
- });
2015
+ {
2016
+ handleListItemClicked({
2017
+ clickedItem: clickedItem,
2018
+ onChange: onChange,
2019
+ setLastRemovedItem: setLastRemovedItem
2020
+ });
2021
+ }
1957
2022
  }
2023
+ },
2024
+ // Accessibility
2025
+ getA11yStatusMessage: function getA11yStatusMessage$1(options) {
2026
+ return getA11yStatusMessage(_extends({}, options, {
2027
+ selectAllItemIncluded: !hideSelectAll
2028
+ }));
2029
+ },
2030
+ // The following A11y-helper does not work due to a bug (https://github.com/downshift-js/downshift/issues/1227)
2031
+ // but is left here for when it is fixed
2032
+ getA11ySelectionMessage: function getA11ySelectionMessage$1(options) {
2033
+ return getA11ySelectionMessage(_extends({}, options, {
2034
+ selectAllItem: selectAll
2035
+ }));
1958
2036
  }
1959
2037
  }, rest)),
1960
- getComboboxProps = _useCombobox.getComboboxProps,
1961
2038
  getInputProps = _useCombobox.getInputProps,
1962
2039
  getItemProps = _useCombobox.getItemProps,
1963
2040
  getLabelProps = _useCombobox.getLabelProps,
@@ -1977,18 +2054,16 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1977
2054
  inputValue: inputValue
1978
2055
  });
1979
2056
  };
1980
- // role=combobox leads to strange VoiceOver behavior and is therefor omitted
1981
- // const { role: _, ...comboboxProps } = getComboboxProps();
1982
- var _getComboboxProps = getComboboxProps(),
1983
- comboboxProps = _extends({}, (_objectDestructuringEmpty(_getComboboxProps), _getComboboxProps));
1984
2057
  return React__default["default"].createElement("div", {
1985
2058
  className: "eds-dropdown__wrapper"
1986
2059
  }, React__default["default"].createElement(form.BaseFormControl, _extends({
1987
- append: React__default["default"].createElement(FieldAppend, {
2060
+ append: React__default["default"].createElement(FieldAppend$1, {
2061
+ ariaLabelCloseList: ariaLabelCloseList,
2062
+ ariaLabelOpenList: ariaLabelOpenList,
1988
2063
  selectedItems: selectedItems,
1989
2064
  isOpen: isOpen,
1990
2065
  clearable: clearable,
1991
- clearSelectedItemsLabel: clearAllItemsAriaLabel,
2066
+ labelClearSelectedItems: labelClearAllItems,
1992
2067
  focusable: false,
1993
2068
  loading: loading,
1994
2069
  loadingText: loadingText,
@@ -2001,13 +2076,12 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
2001
2076
  feedback: feedback,
2002
2077
  isFilled: hasSelectedItems || inputValue !== EMPTY_INPUT,
2003
2078
  label: label,
2004
- labelProps: _extends({
2005
- 'aria-label': label + ", multiselect, " + selectedItems.length + " valgte elementer"
2006
- }, getLabelProps()),
2079
+ labelId: getLabelProps().id,
2080
+ labelProps: getLabelProps(),
2007
2081
  readOnly: readOnly,
2008
2082
  style: style,
2009
2083
  variant: variant
2010
- }, comboboxProps, rest), React__default["default"].createElement("div", {
2084
+ }, rest), React__default["default"].createElement("div", {
2011
2085
  className: classNames__default["default"]('eds-dropdown__selected-items-and-input', {
2012
2086
  'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
2013
2087
  }),
@@ -2015,19 +2089,34 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
2015
2089
  var _inputRef$current4;
2016
2090
  if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
2017
2091
  }
2018
- }, selectedItems.length < maxTags ? selectedItems.map(function (selectedItem, index) {
2092
+ }, selectedItems.length < maxTags ? React__default["default"].createElement(React__default["default"].Fragment, null, selectedItems.length > 1 ? React__default["default"].createElement(a11y.VisuallyHidden, {
2093
+ onClick: function onClick() {
2094
+ var _inputRef$current5;
2095
+ return (_inputRef$current5 = inputRef.current) == null ? void 0 : _inputRef$current5.focus();
2096
+ }
2097
+ }, ariaLabelJumpToInput) : React__default["default"].createElement(React__default["default"].Fragment, null), selectedItems.map(function (selectedItem, index) {
2019
2098
  return React__default["default"].createElement(SelectedItemTag, {
2099
+ ariaLabelChosen: ariaLabelChosenSingular,
2020
2100
  ariaLabelRemoveSelected: ariaLabelRemoveSelected,
2021
2101
  disabled: disabled,
2022
2102
  getSelectedItemProps: getSelectedItemProps,
2023
2103
  index: index,
2024
2104
  key: selectedItem.value,
2025
2105
  readOnly: readOnly,
2026
- removeSelectedItem: removeSelectedItem,
2106
+ removeSelectedItem: function removeSelectedItem() {
2107
+ var _inputRef$current6;
2108
+ handleListItemClicked({
2109
+ clickedItem: selectedItem,
2110
+ onChange: onChange,
2111
+ setLastRemovedItem: setLastRemovedItem
2112
+ });
2113
+ inputRef == null ? void 0 : (_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.focus();
2114
+ },
2027
2115
  selectedItem: selectedItem
2028
2116
  });
2029
- }) : React__default["default"].createElement(SelectedItemTag, {
2030
- ariaLabelRemoveSelected: clearAllItemsAriaLabel,
2117
+ })) : React__default["default"].createElement(SelectedItemTag, {
2118
+ ariaLabelRemoveSelected: labelClearAllItems,
2119
+ ariaLabelChosen: "",
2031
2120
  disabled: disabled,
2032
2121
  readOnly: readOnly,
2033
2122
  removeSelectedItem: handleOnClear,
@@ -2035,13 +2124,12 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
2035
2124
  }), React__default["default"].createElement("input", _extends({
2036
2125
  placeholder: placeholder,
2037
2126
  className: "eds-dropdown__input eds-form-control",
2038
- disabled: readOnly || disabled,
2039
- role: "combobox" // eslint-disable-line jsx-a11y/role-has-required-aria-props
2127
+ disabled: readOnly || disabled
2040
2128
  }, getInputProps(getDropdownProps({
2041
- preventKeyAction: isOpen,
2042
- onFocus: function onFocus() {
2043
- if (!isOpen && openOnFocus) openMenu();
2129
+ onClick: function onClick(e) {
2130
+ if (!isOpen && isVoiceOverClick(e)) openMenu();
2044
2131
  },
2132
+ preventKeyAction: isOpen,
2045
2133
  ref: inputRef,
2046
2134
  value: inputValue != null ? inputValue : EMPTY_INPUT
2047
2135
  })))))), React__default["default"].createElement(DropdownList, {
@@ -2060,17 +2148,20 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
2060
2148
  }));
2061
2149
  };
2062
2150
 
2063
- var _excluded = ["className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelTooltip", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
2151
+ var _excluded$1 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
2064
2152
  var DropdownBeta = function DropdownBeta(_ref) {
2065
2153
  var _ref3, _selectedItem$label;
2066
- var className = _ref.className,
2154
+ var ariaLabelCloseList = _ref.ariaLabelCloseList,
2155
+ ariaLabelOpenList = _ref.ariaLabelOpenList,
2156
+ className = _ref.className,
2067
2157
  _ref$disabled = _ref.disabled,
2068
2158
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
2069
2159
  disableLabelAnimation = _ref.disableLabelAnimation,
2070
2160
  feedback = _ref.feedback,
2071
2161
  initialItems = _ref.items,
2072
2162
  label = _ref.label,
2073
- labelTooltip = _ref.labelTooltip,
2163
+ _ref$labelClearSelect = _ref.labelClearSelectedItem,
2164
+ labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
2074
2165
  listStyle = _ref.listStyle,
2075
2166
  loadingText = _ref.loadingText,
2076
2167
  onChange = _ref.onChange,
@@ -2084,14 +2175,14 @@ var DropdownBeta = function DropdownBeta(_ref) {
2084
2175
  style = _ref.style,
2085
2176
  _ref$variant = _ref.variant,
2086
2177
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
2087
- rest = _objectWithoutPropertiesLoose(_ref, _excluded);
2088
- // TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
2178
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
2089
2179
  var _useResolvedItems = useResolvedItems(initialItems),
2090
2180
  normalizedItems = _useResolvedItems.items,
2091
2181
  loading = _useResolvedItems.loading;
2092
2182
  var isFilled = selectedItem !== null || placeholder !== undefined;
2093
2183
  var _useSelect = Downshift.useSelect({
2094
2184
  items: normalizedItems,
2185
+ defaultHighlightedIndex: selectedItem ? undefined : 0,
2095
2186
  selectedItem: selectedItem,
2096
2187
  onStateChange: function onStateChange(_ref2) {
2097
2188
  var type = _ref2.type,
@@ -2100,7 +2191,7 @@ var DropdownBeta = function DropdownBeta(_ref) {
2100
2191
  // @ts-expect-error This falltrough is wanted
2101
2192
  case Downshift.useSelect.stateChangeTypes.InputBlur:
2102
2193
  if (!selectOnBlur) break;
2103
- case Downshift.useSelect.stateChangeTypes.MenuKeyDownEnter: // eslint-disable-line no-fallthrough
2194
+ case Downshift.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter: // eslint-disable-line no-fallthrough
2104
2195
  case Downshift.useSelect.stateChangeTypes.ItemClick:
2105
2196
  onChange == null ? void 0 : onChange(clickedItem !== undefined ? clickedItem : null);
2106
2197
  }
@@ -2116,10 +2207,13 @@ var DropdownBeta = function DropdownBeta(_ref) {
2116
2207
  return React__default["default"].createElement("div", {
2117
2208
  className: "eds-dropdown__wrapper"
2118
2209
  }, React__default["default"].createElement(form.BaseFormControl, _extends({
2119
- append: React__default["default"].createElement(FieldAppend, {
2210
+ append: React__default["default"].createElement(FieldAppend$1, {
2211
+ ariaHiddenToggleButton: true,
2212
+ ariaLabelCloseList: ariaLabelCloseList,
2213
+ ariaLabelOpenList: ariaLabelOpenList,
2120
2214
  clearable: true,
2121
- clearSelectedItemsLabel: "Fjern valgt",
2122
- focusable: true,
2215
+ labelClearSelectedItems: labelClearSelectedItem,
2216
+ focusable: false,
2123
2217
  getToggleButtonProps: getToggleButtonProps,
2124
2218
  isOpen: isOpen,
2125
2219
  loading: loading,
@@ -2140,12 +2234,11 @@ var DropdownBeta = function DropdownBeta(_ref) {
2140
2234
  label: label,
2141
2235
  labelId: getLabelProps().id,
2142
2236
  labelProps: getLabelProps(),
2143
- labelTooltip: labelTooltip,
2144
2237
  prepend: prepend,
2145
2238
  readOnly: readOnly,
2146
2239
  style: style,
2147
2240
  variant: variant
2148
- }, rest), React__default["default"].createElement("div", _extends({
2241
+ }, rest), React__default["default"].createElement("button", _extends({
2149
2242
  className: "eds-dropdown__selected-item-button"
2150
2243
  }, getToggleButtonProps()), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React__default["default"].createElement("span", {
2151
2244
  className: classNames__default["default"]('eds-dropdown__selected-item-button__placeholder', {
@@ -2164,6 +2257,90 @@ var DropdownBeta = function DropdownBeta(_ref) {
2164
2257
  }));
2165
2258
  };
2166
2259
 
2260
+ var _excluded = ["className", "disabled", "disableLabelAnimation", "feedback", "items", "label", "loadingText", "onChange", "prepend", "readOnly", "selectedItem", "style", "value", "variant"];
2261
+ var NativeDropdown = function NativeDropdown(_ref) {
2262
+ var _ref2;
2263
+ var className = _ref.className,
2264
+ _ref$disabled = _ref.disabled,
2265
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
2266
+ disableLabelAnimation = _ref.disableLabelAnimation,
2267
+ feedback = _ref.feedback,
2268
+ items = _ref.items,
2269
+ label = _ref.label,
2270
+ loadingText = _ref.loadingText,
2271
+ _onChange = _ref.onChange,
2272
+ prepend = _ref.prepend,
2273
+ _ref$readOnly = _ref.readOnly,
2274
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
2275
+ selectedItem = _ref.selectedItem,
2276
+ style = _ref.style,
2277
+ value = _ref.value,
2278
+ variant = _ref.variant,
2279
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
2280
+ var _useResolvedItems = useResolvedItems(items),
2281
+ normalizedItems = _useResolvedItems.items,
2282
+ loading = _useResolvedItems.loading;
2283
+ var nativeDropdownId = utils.useRandomId('eds-dropdown-native');
2284
+ return React__default["default"].createElement(form.BaseFormControl, {
2285
+ disabled: disabled,
2286
+ readOnly: readOnly,
2287
+ prepend: prepend,
2288
+ append: React__default["default"].createElement(FieldAppend, {
2289
+ hidden: disabled || readOnly,
2290
+ loading: loading,
2291
+ loadingText: loadingText
2292
+ }),
2293
+ className: className,
2294
+ style: style,
2295
+ label: label,
2296
+ labelId: nativeDropdownId,
2297
+ variant: variant,
2298
+ feedback: feedback,
2299
+ disableLabelAnimation: disableLabelAnimation,
2300
+ isFilled: true
2301
+ }, React__default["default"].createElement("select", _extends({
2302
+ "aria-invalid": variant === 'error',
2303
+ "aria-labelledby": nativeDropdownId,
2304
+ "aria-busy": loading,
2305
+ className: "eds-form-control eds-dropdown--native",
2306
+ disabled: disabled || readOnly,
2307
+ onChange: function onChange(event) {
2308
+ var _normalizedItems$find;
2309
+ _onChange == null ? void 0 : _onChange({
2310
+ value: event.target.value,
2311
+ selectedItem: (_normalizedItems$find = normalizedItems.find(function (item) {
2312
+ return item.value === event.target.value;
2313
+ })) != null ? _normalizedItems$find : null,
2314
+ target: event.target
2315
+ });
2316
+ },
2317
+ value: (_ref2 = value != null ? value : selectedItem == null ? void 0 : selectedItem.value) != null ? _ref2 : undefined
2318
+ }, rest), normalizedItems.map(function (item) {
2319
+ return React__default["default"].createElement("option", {
2320
+ key: item.value,
2321
+ value: item.value
2322
+ }, item.label);
2323
+ })));
2324
+ };
2325
+ var FieldAppend = function FieldAppend(_ref3) {
2326
+ var loading = _ref3.loading,
2327
+ loadingText = _ref3.loadingText,
2328
+ hidden = _ref3.hidden;
2329
+ if (loading) {
2330
+ return React__default["default"].createElement("div", {
2331
+ className: "eds-dropdown-native__loading-dots"
2332
+ }, React__default["default"].createElement(loader.LoadingDots, {
2333
+ "aria-label": loadingText
2334
+ }));
2335
+ }
2336
+ if (hidden) {
2337
+ return React__default["default"].createElement(React__default["default"].Fragment, null);
2338
+ }
2339
+ return React__default["default"].createElement(icons.DownArrowIcon, {
2340
+ inline: true
2341
+ });
2342
+ };
2343
+
2167
2344
  utils.warnAboutMissingStyles('dropdown', 'form', 'a11y', 'chip');
2168
2345
 
2169
2346
  exports.Dropdown = Dropdown;