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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1294,27 +1294,29 @@ var DropdownList = function DropdownList(_ref) {
1294
1294
  };
1295
1295
  var selectAllListItemContent = function selectAllListItemContent() {
1296
1296
  return React.createElement(React.Fragment, null, React.createElement(Checkbox, {
1297
- className: "eds-dropdown__list__item__checkbox",
1298
- checked: selectAllCheckboxState == null ? void 0 : selectAllCheckboxState(),
1299
1297
  "aria-hidden": "true",
1298
+ checked: selectAllCheckboxState == null ? void 0 : selectAllCheckboxState(),
1299
+ className: "eds-dropdown__list__item__checkbox",
1300
1300
  onChange: function onChange() {
1301
1301
  return;
1302
- }
1302
+ },
1303
+ tabIndex: -1
1303
1304
  }), React.createElement("span", {
1304
1305
  className: "eds-dropdown__list__item__text"
1305
1306
  }, selectAllItem == null ? void 0 : selectAllItem.label));
1306
1307
  };
1307
1308
  var listItemContent = function listItemContent(item) {
1308
1309
  return React.createElement(React.Fragment, null, React.createElement(Checkbox, {
1309
- style: !isMultiselect ? {
1310
- display: 'none'
1311
- } : {},
1312
- className: "eds-dropdown__list__item__checkbox",
1313
- checked: itemIsSelected(item),
1314
1310
  "aria-hidden": "true",
1311
+ checked: itemIsSelected(item),
1312
+ className: "eds-dropdown__list__item__checkbox",
1315
1313
  onChange: function onChange() {
1316
1314
  return;
1317
- }
1315
+ },
1316
+ style: !isMultiselect ? {
1317
+ display: 'none'
1318
+ } : {},
1319
+ tabIndex: -1
1318
1320
  }), React.createElement("span", {
1319
1321
  className: "eds-dropdown__list__item__text"
1320
1322
  }, item.label, React.createElement(VisuallyHidden, null, selectedItemAriaLabel)), item.icons && React.createElement("span", null, item.icons.map(function (Icon, index) {
@@ -1325,33 +1327,37 @@ var DropdownList = function DropdownList(_ref) {
1325
1327
  });
1326
1328
  })));
1327
1329
  };
1328
- return React.createElement("ul", _extends({}, getMenuProps(), {
1329
- className: classNames('eds-dropdown__list', {
1330
- 'eds-dropdown__list--open': isOpen
1331
- }),
1332
- style: _extends({}, rest.style, listStyle)
1333
- }), isOpen && listItems.length > 0 && listItems.map(function (item, index) {
1334
- var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1335
- if (itemIsSelectAll && listItems.length <= 2) return React.createElement(React.Fragment, null);
1336
- return React.createElement("li", _extends({
1337
- key: item.value,
1338
- className: classNames('eds-dropdown__list__item', {
1339
- 'eds-dropdown__list__item--select-all': itemIsSelectAll,
1340
- 'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1341
- 'eds-dropdown__list__item--selected': !isMultiselect && itemIsSelected(item)
1342
- })
1343
- }, getItemProps({
1344
- key: "" + index + item.value,
1345
- item: item,
1346
- index: index
1347
- })), itemIsSelectAll ? selectAllListItemContent() : listItemContent(item));
1348
- }), isOpen && isNoMatches && React.createElement("li", {
1349
- className: "eds-dropdown__list__item"
1350
- }, noMatchesText), isOpen && loading && React.createElement("li", {
1351
- className: "eds-dropdown__list__item"
1352
- }, loadingText));
1330
+ return (
1331
+ // use popover from @entur/tooltip when the package uses floating-ui
1332
+ React.createElement("ul", _extends({}, getMenuProps(), {
1333
+ className: classNames('eds-dropdown__list', {
1334
+ 'eds-dropdown__list--open': isOpen
1335
+ }),
1336
+ style: _extends({}, rest.style, listStyle)
1337
+ }), isOpen && listItems.length > 0 && listItems.map(function (item, index) {
1338
+ var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
1339
+ if (itemIsSelectAll && listItems.length <= 2) return React.createElement(React.Fragment, null);
1340
+ return React.createElement("li", _extends({
1341
+ key: item.value,
1342
+ className: classNames('eds-dropdown__list__item', {
1343
+ 'eds-dropdown__list__item--select-all': itemIsSelectAll,
1344
+ 'eds-dropdown__list__item--highlighted': highlightedIndex === index,
1345
+ 'eds-dropdown__list__item--selected': !isMultiselect && itemIsSelected(item)
1346
+ })
1347
+ }, getItemProps({
1348
+ key: "" + index + item.value,
1349
+ item: item,
1350
+ index: index
1351
+ })), itemIsSelectAll ? selectAllListItemContent() : listItemContent(item));
1352
+ }), isOpen && isNoMatches && React.createElement("li", {
1353
+ className: "eds-dropdown__list__item"
1354
+ }, noMatchesText), isOpen && loading && React.createElement("li", {
1355
+ className: "eds-dropdown__list__item"
1356
+ }, loadingText))
1357
+ );
1353
1358
  };
1354
1359
 
1360
+ var EMPTY_INPUT = '';
1355
1361
  function lowerCaseFilterTest(item, input) {
1356
1362
  if (!input) {
1357
1363
  return true;
@@ -1388,6 +1394,20 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1388
1394
  var clickedItemIsSelectAll = function clickedItemIsSelectAll(clickedItem) {
1389
1395
  return clickedItem.value === selectAllValue;
1390
1396
  };
1397
+ var handleListItemClicked = function handleListItemClicked(_ref2) {
1398
+ var clickedItem = _ref2.clickedItem,
1399
+ onChange = _ref2.onChange;
1400
+ if (clickedItemIsSelectAll(clickedItem)) {
1401
+ if (allListItemsAreSelected) {
1402
+ return unselectAllListItems(onChange);
1403
+ }
1404
+ return selectAllUnselectedItemsInListItems(onChange);
1405
+ }
1406
+ if (clickedItemIsInSelectedItems(clickedItem)) {
1407
+ return removeClickedItemFromSelectedItems(clickedItem, onChange);
1408
+ }
1409
+ addClickedItemToSelectedItems(clickedItem, onChange);
1410
+ };
1391
1411
  var removeClickedItemFromSelectedItems = function removeClickedItemFromSelectedItems(clickedItem, onChange) {
1392
1412
  return onChange(selectedItems.filter(function (selectedItem) {
1393
1413
  return selectedItem.value !== clickedItem.value;
@@ -1413,6 +1433,7 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1413
1433
  allListItemsAreSelected: allListItemsAreSelected,
1414
1434
  clickedItemIsInSelectedItems: clickedItemIsInSelectedItems,
1415
1435
  clickedItemIsSelectAll: clickedItemIsSelectAll,
1436
+ handleListItemClicked: handleListItemClicked,
1416
1437
  hasSelectedItems: hasSelectedItems,
1417
1438
  listItemsWithoutSelectAll: listItemsWithoutSelectAll,
1418
1439
  removeClickedItemFromSelectedItems: removeClickedItemFromSelectedItems,
@@ -1424,19 +1445,25 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1424
1445
  };
1425
1446
 
1426
1447
  var _excluded$3 = ["tabIndex"];
1427
- var SelectedElementsTag = function SelectedElementsTag(_ref) {
1428
- var getSelectedItemProps = _ref.getSelectedItemProps,
1429
- removeSelectedItem = _ref.removeSelectedItem,
1430
- selectedItem = _ref.selectedItem,
1448
+ var SelectedItemTag = function SelectedItemTag(_ref) {
1449
+ var _getSelectedItemProps;
1450
+ var ariaLabelRemoveSelected = _ref.ariaLabelRemoveSelected,
1451
+ disabled = _ref.disabled,
1452
+ getSelectedItemProps = _ref.getSelectedItemProps,
1431
1453
  index = _ref.index,
1432
- ariaLabelRemoveSelected = _ref.ariaLabelRemoveSelected;
1433
- var _getSelectedItemProps = getSelectedItemProps({
1454
+ readOnly = _ref.readOnly,
1455
+ removeSelectedItem = _ref.removeSelectedItem,
1456
+ selectedItem = _ref.selectedItem;
1457
+ var _ref2 = (_getSelectedItemProps = getSelectedItemProps == null ? void 0 : getSelectedItemProps({
1434
1458
  selectedItem: selectedItem,
1435
1459
  index: index
1436
- }),
1437
- selectedItemProps = _objectWithoutPropertiesLoose(_getSelectedItemProps, _excluded$3);
1460
+ })) != null ? _getSelectedItemProps : {},
1461
+ selectedItemProps = _objectWithoutPropertiesLoose(_ref2, _excluded$3);
1438
1462
  return React.createElement(TagChip, _extends({
1439
- className: classNames('eds-dropdown__selected-element-tag')
1463
+ className: classNames('eds-dropdown__selected-item-tag', {
1464
+ 'eds-dropdown__selected-item-tag--readonly': readOnly,
1465
+ 'eds-dropdown__selected-item-tag--disabled': disabled
1466
+ })
1440
1467
  }, selectedItemProps, {
1441
1468
  onClose: function onClose(e) {
1442
1469
  e.stopPropagation();
@@ -1448,50 +1475,51 @@ var SelectedElementsTag = function SelectedElementsTag(_ref) {
1448
1475
  "aria-hidden": "true"
1449
1476
  }, selectedItem.label));
1450
1477
  };
1451
- var FieldAppend = function FieldAppend(_ref2) {
1452
- var clearable = _ref2.clearable,
1453
- readOnly = _ref2.readOnly,
1454
- getToggleButtonProps = _ref2.getToggleButtonProps,
1455
- selectedItems = _ref2.selectedItems,
1456
- _ref2$loading = _ref2.loading,
1457
- loading = _ref2$loading === void 0 ? false : _ref2$loading,
1458
- _ref2$loadingText = _ref2.loadingText,
1459
- loadingText = _ref2$loadingText === void 0 ? 'Laster resultater …' : _ref2$loadingText,
1460
- ariaLabelClearItems = _ref2.ariaLabelClearItems,
1461
- clearSelectedItemsLabel = _ref2.clearSelectedItemsLabel,
1462
- isOpen = _ref2.isOpen,
1463
- onClear = _ref2.onClear,
1464
- _ref2$focusable = _ref2.focusable,
1465
- focusable = _ref2$focusable === void 0 ? false : _ref2$focusable;
1478
+ var FieldAppend = function FieldAppend(_ref3) {
1479
+ var _ref3$clearable = _ref3.clearable,
1480
+ clearable = _ref3$clearable === void 0 ? false : _ref3$clearable,
1481
+ clearSelectedItemsLabel = _ref3.clearSelectedItemsLabel,
1482
+ _ref3$disabled = _ref3.disabled,
1483
+ disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
1484
+ _ref3$focusable = _ref3.focusable,
1485
+ focusable = _ref3$focusable === void 0 ? false : _ref3$focusable,
1486
+ getToggleButtonProps = _ref3.getToggleButtonProps,
1487
+ isOpen = _ref3.isOpen,
1488
+ _ref3$loading = _ref3.loading,
1489
+ loading = _ref3$loading === void 0 ? false : _ref3$loading,
1490
+ _ref3$loadingText = _ref3.loadingText,
1491
+ loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
1492
+ onClear = _ref3.onClear,
1493
+ selectedItems = _ref3.selectedItems;
1466
1494
  if (loading) {
1467
1495
  return React.createElement(DropdownLoadingDots, null, loadingText);
1468
1496
  }
1469
- if (readOnly) {
1497
+ if (disabled) {
1470
1498
  return null;
1471
1499
  }
1472
- return React.createElement("div", {
1473
- className: "eds-dropdown-appendix"
1474
- }, clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React.createElement(React.Fragment, null, React.createElement(ClearableButton, {
1475
- onClear: onClear,
1476
- focusable: focusable,
1477
- clearSelectedItemsLabel: clearSelectedItemsLabel,
1478
- ariaLabelClearItems: ariaLabelClearItems
1479
- }), React.createElement("div", {
1480
- className: "eds-dropdown-appendix__divider"
1481
- })), React.createElement(ToggleButton, {
1482
- getToggleButtonProps: getToggleButtonProps,
1483
- isOpen: isOpen,
1484
- focusable: focusable
1485
- }));
1500
+ return (
1501
+ // to have a natural tab order, these elements are ordered opposite of how they are displayed
1502
+ React.createElement("div", {
1503
+ className: "eds-dropdown-appendix"
1504
+ }, React.createElement(ToggleButton, {
1505
+ getToggleButtonProps: getToggleButtonProps,
1506
+ isOpen: isOpen,
1507
+ focusable: focusable
1508
+ }), clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React.createElement(React.Fragment, null, React.createElement("div", {
1509
+ className: "eds-dropdown-appendix__divider"
1510
+ }), React.createElement(ClearableButton, {
1511
+ onClear: onClear,
1512
+ focusable: true,
1513
+ clearSelectedItemsLabel: clearSelectedItemsLabel
1514
+ })))
1515
+ );
1486
1516
  };
1487
- var ClearableButton = function ClearableButton(_ref3) {
1488
- var onClear = _ref3.onClear,
1489
- _ref3$clearSelectedIt = _ref3.clearSelectedItemsLabel,
1490
- clearSelectedItemsLabel = _ref3$clearSelectedIt === void 0 ? 'Fjern valgte' : _ref3$clearSelectedIt,
1491
- _ref3$ariaLabelClearI = _ref3.ariaLabelClearItems,
1492
- ariaLabelClearItems = _ref3$ariaLabelClearI === void 0 ? 'Fjern valgte' : _ref3$ariaLabelClearI,
1493
- _ref3$focusable = _ref3.focusable,
1494
- focusable = _ref3$focusable === void 0 ? false : _ref3$focusable;
1517
+ var ClearableButton = function ClearableButton(_ref4) {
1518
+ var onClear = _ref4.onClear,
1519
+ _ref4$clearSelectedIt = _ref4.clearSelectedItemsLabel,
1520
+ clearSelectedItemsLabel = _ref4$clearSelectedIt === void 0 ? 'Fjern valgte' : _ref4$clearSelectedIt,
1521
+ _ref4$focusable = _ref4.focusable,
1522
+ focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
1495
1523
  return React.createElement(Tooltip, {
1496
1524
  "aria-hidden": "true",
1497
1525
  placement: "right",
@@ -1501,42 +1529,42 @@ var ClearableButton = function ClearableButton(_ref3) {
1501
1529
  type: "button",
1502
1530
  tabIndex: focusable ? 0 : 1,
1503
1531
  onClick: onClear,
1504
- "aria-label": ariaLabelClearItems
1532
+ "aria-label": clearSelectedItemsLabel
1505
1533
  }, React.createElement(CloseSmallIcon, {
1506
1534
  "aria-hidden": "true"
1507
1535
  })));
1508
1536
  };
1509
- var ToggleButton = function ToggleButton(_ref4) {
1510
- var getToggleButtonProps = _ref4.getToggleButtonProps,
1511
- isOpen = _ref4.isOpen,
1512
- _ref4$closeAriaLabel = _ref4.closeAriaLabel,
1513
- closeAriaLabel = _ref4$closeAriaLabel === void 0 ? 'Lukk liste med valg' : _ref4$closeAriaLabel,
1514
- _ref4$openAriaLabel = _ref4.openAriaLabel,
1515
- openAriaLabel = _ref4$openAriaLabel === void 0 ? 'Åpne liste med valg' : _ref4$openAriaLabel,
1516
- _ref4$focusable = _ref4.focusable,
1517
- focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
1537
+ var ToggleButton = function ToggleButton(_ref5) {
1538
+ var getToggleButtonProps = _ref5.getToggleButtonProps,
1539
+ isOpen = _ref5.isOpen,
1540
+ _ref5$closeAriaLabel = _ref5.closeAriaLabel,
1541
+ closeAriaLabel = _ref5$closeAriaLabel === void 0 ? 'Lukk liste med valg' : _ref5$closeAriaLabel,
1542
+ _ref5$openAriaLabel = _ref5.openAriaLabel,
1543
+ openAriaLabel = _ref5$openAriaLabel === void 0 ? 'Åpne liste med valg' : _ref5$openAriaLabel,
1544
+ _ref5$focusable = _ref5.focusable,
1545
+ focusable = _ref5$focusable === void 0 ? false : _ref5$focusable;
1518
1546
  return React.createElement(IconButton, _extends({}, getToggleButtonProps({
1519
1547
  className: classNames('eds-dropdown-appendix__toggle-button', {
1520
1548
  'eds-dropdown-appendix__toggle-button--open': isOpen
1521
1549
  })
1522
1550
  }), {
1523
1551
  "aria-label": isOpen ? closeAriaLabel : openAriaLabel,
1524
- tabIndex: focusable ? 0 : 1,
1552
+ tabIndex: focusable ? 0 : -1,
1525
1553
  type: "button"
1526
1554
  }), React.createElement(DownArrowIcon, {
1527
1555
  "aria-hidden": "true"
1528
1556
  }));
1529
1557
  };
1530
1558
 
1531
- var _excluded$2 = ["className", "clearable", "debounceTimeout", "disableLabelAnimation", "feedback", "itemFilter", "items", "label", "listStyle", "onChange", "openOnFocus", "placeholder", "readonly", "selectedItem", "selectOnBlur", "variant"];
1532
- // TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
1533
- // TODO Husk å generelt legge inn støtte for typeof value === string
1559
+ var _excluded$2 = ["className", "clearable", "debounceTimeout", "disabled", "disableLabelAnimation", "feedback", "itemFilter", "items", "label", "listStyle", "loadingText", "onChange", "openOnFocus", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
1534
1560
  var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1535
1561
  var _selectedItem$label;
1536
1562
  var className = _ref.className,
1537
1563
  _ref$clearable = _ref.clearable,
1538
1564
  clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1539
1565
  debounceTimeout = _ref.debounceTimeout,
1566
+ _ref$disabled = _ref.disabled,
1567
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1540
1568
  _ref$disableLabelAnim = _ref.disableLabelAnimation,
1541
1569
  disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
1542
1570
  feedback = _ref.feedback,
@@ -1545,43 +1573,59 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1545
1573
  initialItems = _ref.items,
1546
1574
  label = _ref.label,
1547
1575
  listStyle = _ref.listStyle,
1576
+ loadingText = _ref.loadingText,
1548
1577
  onChange = _ref.onChange,
1549
1578
  _ref$openOnFocus = _ref.openOnFocus,
1550
1579
  openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1551
1580
  placeholder = _ref.placeholder,
1552
- _ref$readonly = _ref.readonly,
1553
- readonly = _ref$readonly === void 0 ? false : _ref$readonly,
1581
+ prepend = _ref.prepend,
1582
+ _ref$readOnly = _ref.readOnly,
1583
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
1554
1584
  value = _ref.selectedItem,
1555
1585
  _ref$selectOnBlur = _ref.selectOnBlur,
1556
1586
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
1587
+ style = _ref.style,
1557
1588
  _ref$variant = _ref.variant,
1558
1589
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
1559
1590
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1560
1591
  var _useState = useState(false),
1561
1592
  hideSelectedItem = _useState[0],
1562
1593
  setHideSelectedItem = _useState[1];
1594
+ var _React$useState = React.useState(0),
1595
+ lastHighlightedIndex = _React$useState[0],
1596
+ setLastHighlightedIndex = _React$useState[1];
1563
1597
  var inputRef = useRef(null);
1564
1598
  var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
1565
1599
  normalizedItems = _useResolvedItems.items,
1566
1600
  loading = _useResolvedItems.loading,
1567
1601
  fetchItems = _useResolvedItems.fetchItems;
1568
- var _React$useState = React.useState(normalizedItems),
1569
- listItems = _React$useState[0],
1570
- setListItems = _React$useState[1];
1602
+ var _React$useState2 = React.useState(normalizedItems),
1603
+ listItems = _React$useState2[0],
1604
+ setListItems = _React$useState2[1];
1571
1605
  var filterListItems = function filterListItems(_ref2) {
1572
1606
  var inputValue = _ref2.inputValue;
1573
1607
  return setListItems(normalizedItems.filter(function (item) {
1574
1608
  return itemFilter(item, inputValue);
1575
1609
  }));
1576
1610
  };
1611
+ var updateListItems = function updateListItems(_ref3) {
1612
+ var inputValue = _ref3.inputValue;
1613
+ if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : EMPTY_INPUT); // fetch items only if user provides a function as items
1614
+ filterListItems({
1615
+ inputValue: inputValue != null ? inputValue : EMPTY_INPUT
1616
+ });
1617
+ };
1577
1618
  React.useEffect(function () {
1578
1619
  filterListItems({
1579
1620
  inputValue: inputValue
1580
1621
  });
1581
1622
  }, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
1582
- var stateReducer = React.useCallback(function (_, _ref3) {
1583
- var type = _ref3.type,
1584
- changes = _ref3.changes;
1623
+ var stateReducer = React.useCallback(function (_, _ref4) {
1624
+ var type = _ref4.type,
1625
+ changes = _ref4.changes;
1626
+ if (changes.highlightedIndex !== undefined && (changes == null ? void 0 : changes.highlightedIndex) >= 0) {
1627
+ setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
1628
+ }
1585
1629
  switch (type) {
1586
1630
  case useCombobox.stateChangeTypes.ItemClick:
1587
1631
  case useCombobox.stateChangeTypes.InputKeyDownEnter:
@@ -1589,10 +1633,10 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1589
1633
  case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1590
1634
  {
1591
1635
  filterListItems({
1592
- inputValue: ''
1636
+ inputValue: EMPTY_INPUT
1593
1637
  });
1594
1638
  return _extends({}, changes, {
1595
- inputValue: '' // reset input value to show placeholder on focus
1639
+ inputValue: EMPTY_INPUT // reset input value to show placeholder on focus
1596
1640
  });
1597
1641
  }
1598
1642
 
@@ -1600,11 +1644,18 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1600
1644
  {
1601
1645
  var _changes$inputValue;
1602
1646
  var leadingWhitespaceTest = /^\s+/g;
1603
- if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(leadingWhitespaceTest)) setInputValue(changes.inputValue.replace(leadingWhitespaceTest, ''));else {
1604
- var _changes$inputValue2, _changes$inputValue3;
1605
- fetchItems((_changes$inputValue2 = changes.inputValue) != null ? _changes$inputValue2 : '');
1606
- filterListItems({
1607
- inputValue: (_changes$inputValue3 = changes.inputValue) != null ? _changes$inputValue3 : ''
1647
+ var isSpacePressedOnEmptyInput = changes.inputValue == ' ';
1648
+ if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(leadingWhitespaceTest)) {
1649
+ setInputValue(changes.inputValue.replace(leadingWhitespaceTest, EMPTY_INPUT));
1650
+ if (isSpacePressedOnEmptyInput) {
1651
+ openMenu();
1652
+ if (isOpen && changes.highlightedIndex !== undefined) {
1653
+ onChange(listItems[changes.highlightedIndex]);
1654
+ }
1655
+ }
1656
+ } else {
1657
+ updateListItems({
1658
+ inputValue: changes.inputValue
1608
1659
  });
1609
1660
  }
1610
1661
  return changes;
@@ -1614,13 +1665,14 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1614
1665
  }
1615
1666
  }, [fetchItems, filterListItems]);
1616
1667
  var _useCombobox = useCombobox(_extends({
1668
+ defaultHighlightedIndex: lastHighlightedIndex,
1617
1669
  items: listItems,
1618
- selectedItem: value,
1619
1670
  itemToString: itemToString,
1671
+ selectedItem: value,
1620
1672
  stateReducer: stateReducer,
1621
- onStateChange: function onStateChange(_ref4) {
1622
- var type = _ref4.type,
1623
- clickedItem = _ref4.selectedItem;
1673
+ onStateChange: function onStateChange(_ref5) {
1674
+ var type = _ref5.type,
1675
+ clickedItem = _ref5.selectedItem;
1624
1676
  switch (type) {
1625
1677
  // @ts-expect-error This falltrough is wanted
1626
1678
  case useCombobox.stateChangeTypes.InputBlur:
@@ -1643,33 +1695,41 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1643
1695
  selectedItem = _useCombobox.selectedItem,
1644
1696
  inputValue = _useCombobox.inputValue,
1645
1697
  setInputValue = _useCombobox.setInputValue;
1698
+ var handleOnClear = function handleOnClear() {
1699
+ var _inputRef$current;
1700
+ onChange(null);
1701
+ setInputValue(EMPTY_INPUT);
1702
+ (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
1703
+ updateListItems({
1704
+ inputValue: inputValue
1705
+ });
1706
+ };
1646
1707
  return React.createElement("div", {
1647
1708
  className: "eds-dropdown__wrapper"
1648
1709
  }, React.createElement(BaseFormControl, _extends({
1649
1710
  append: React.createElement(FieldAppend, {
1650
- selectedItems: [selectedItem],
1651
- isOpen: isOpen,
1652
1711
  clearable: clearable,
1653
- loading: false,
1654
- loadingText: '',
1655
- readOnly: readonly,
1656
- onClear: function onClear() {
1657
- var _inputRef$current;
1658
- onChange(null);
1659
- setInputValue('');
1660
- (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
1661
- if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : '');
1662
- },
1663
- getToggleButtonProps: getToggleButtonProps
1712
+ clearSelectedItemsLabel: "Fjern valgt",
1713
+ disabled: readOnly || disabled,
1714
+ focusable: false,
1715
+ getToggleButtonProps: getToggleButtonProps,
1716
+ isOpen: isOpen,
1717
+ loading: loading,
1718
+ loadingText: loadingText,
1719
+ onClear: handleOnClear,
1720
+ selectedItems: [selectedItem]
1664
1721
  }),
1665
- disableLabelAnimation: disableLabelAnimation,
1666
1722
  className: classNames('eds-dropdown', className),
1667
- label: label,
1668
- isFilled: selectedItem || inputValue !== '',
1723
+ disabled: disabled,
1724
+ disableLabelAnimation: disableLabelAnimation,
1669
1725
  feedback: feedback,
1670
- variant: variant,
1671
- readOnly: readonly,
1672
- labelProps: getLabelProps()
1726
+ isFilled: selectedItem || inputValue !== EMPTY_INPUT,
1727
+ label: label,
1728
+ labelProps: getLabelProps(),
1729
+ prepend: prepend,
1730
+ readOnly: readOnly,
1731
+ style: style,
1732
+ variant: variant
1673
1733
  }, getComboboxProps(), rest), !hideSelectedItem && selectedItem && !inputValue && React.createElement("span", {
1674
1734
  className: "eds-dropdown__selected-item__wrapper"
1675
1735
  }, React.createElement("span", {
@@ -1679,48 +1739,61 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1679
1739
  return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
1680
1740
  }
1681
1741
  }, selectedItem.label)), React.createElement("input", _extends({
1682
- placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder,
1683
- className: "eds-dropdown__input eds-form-control"
1742
+ className: "eds-dropdown__input eds-form-control",
1743
+ disabled: readOnly || disabled,
1744
+ placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder
1684
1745
  }, getInputProps({
1746
+ onBlur: function onBlur() {
1747
+ setHideSelectedItem(false);
1748
+ },
1685
1749
  onFocus: function onFocus() {
1686
1750
  if (!isOpen && openOnFocus) openMenu();
1687
1751
  setHideSelectedItem(true);
1688
1752
  },
1689
- onBlur: function onBlur() {
1690
- setHideSelectedItem(false);
1691
- },
1692
1753
  ref: inputRef
1693
1754
  })))), React.createElement(DropdownList, {
1694
- selectedItems: selectedItem !== null ? [selectedItem] : [],
1695
1755
  isOpen: isOpen,
1696
1756
  listItems: listItems,
1697
- highlightedIndex: highlightedIndex,
1698
1757
  listStyle: listStyle,
1699
- getMenuProps: getMenuProps,
1758
+ loading: loading,
1759
+ loadingText: loadingText,
1700
1760
  getItemProps: getItemProps,
1701
- loading: loading
1761
+ getMenuProps: getMenuProps,
1762
+ highlightedIndex: highlightedIndex,
1763
+ selectedItems: selectedItem !== null ? [selectedItem] : []
1702
1764
  }));
1703
1765
  };
1704
1766
 
1705
- var _excluded$1 = ["ariaLabelRemoveSelected", "className", "clearable", "debounceTimeout", "feedback", "hideSelectAll", "items", "label", "listStyle", "onChange", "openOnFocus", "placeholder", "readonly", "selectAllLabel", "selectedItems", "selectOnBlur", "style", "variant"];
1767
+ 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"];
1706
1768
  var MultiSelectBeta = function MultiSelectBeta(_ref) {
1707
- var _ref$ariaLabelRemoveS = _ref.ariaLabelRemoveSelected,
1769
+ var _ref$allItemsSelected = _ref.allItemsSelectedLabel,
1770
+ allItemsSelectedLabel = _ref$allItemsSelected === void 0 ? 'Alle valgt' : _ref$allItemsSelected,
1771
+ _ref$ariaLabelRemoveS = _ref.ariaLabelRemoveSelected,
1708
1772
  ariaLabelRemoveSelected = _ref$ariaLabelRemoveS === void 0 ? 'trykk for å fjerne valg' : _ref$ariaLabelRemoveS,
1709
1773
  className = _ref.className,
1710
1774
  _ref$clearable = _ref.clearable,
1711
1775
  clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1776
+ _ref$clearInputOnSele = _ref.clearInputOnSelect,
1777
+ clearInputOnSelect = _ref$clearInputOnSele === void 0 ? false : _ref$clearInputOnSele,
1778
+ _ref$disabled = _ref.disabled,
1779
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1712
1780
  feedback = _ref.feedback,
1713
1781
  _ref$hideSelectAll = _ref.hideSelectAll,
1714
1782
  hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
1715
1783
  initialItems = _ref.items,
1716
1784
  label = _ref.label,
1717
1785
  listStyle = _ref.listStyle,
1786
+ loadingText = _ref.loadingText,
1787
+ _ref$maxTags = _ref.maxTags,
1788
+ maxTags = _ref$maxTags === void 0 ? 10 : _ref$maxTags,
1718
1789
  onChange = _ref.onChange,
1719
1790
  _ref$openOnFocus = _ref.openOnFocus,
1720
1791
  openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1721
1792
  placeholder = _ref.placeholder,
1722
- _ref$readonly = _ref.readonly,
1723
- readonly = _ref$readonly === void 0 ? false : _ref$readonly,
1793
+ _ref$readOnly = _ref.readOnly,
1794
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
1795
+ _ref$clearAllItemsAri = _ref.clearAllItemsAriaLabel,
1796
+ clearAllItemsAriaLabel = _ref$clearAllItemsAri === void 0 ? 'Fjern valgte' : _ref$clearAllItemsAri,
1724
1797
  _ref$selectAllLabel = _ref.selectAllLabel,
1725
1798
  selectAllLabel = _ref$selectAllLabel === void 0 ? 'Velg alle' : _ref$selectAllLabel,
1726
1799
  selectedItems = _ref.selectedItems,
@@ -1738,10 +1811,17 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1738
1811
  normalizedItems = _useResolvedItems.items,
1739
1812
  loading = _useResolvedItems.loading,
1740
1813
  fetchItems = _useResolvedItems.fetchItems;
1814
+ var isAllNonAsyncItemsSelected = typeof initialItems !== 'function' && selectedItems.length === normalizedItems.length;
1741
1815
  var selectAll = {
1742
1816
  value: useRandomId('select-all'),
1743
1817
  label: selectAllLabel
1744
1818
  };
1819
+ var summarySelectedItems = React.useMemo(function () {
1820
+ return {
1821
+ value: EMPTY_INPUT,
1822
+ label: isAllNonAsyncItemsSelected ? allItemsSelectedLabel : selectedItems.length + ' valgte'
1823
+ };
1824
+ }, [isAllNonAsyncItemsSelected, selectedItems, allItemsSelectedLabel]);
1745
1825
  var _useState = useState([].concat(!hideSelectAll ? [selectAll] : [], normalizedItems)),
1746
1826
  listItems = _useState[0],
1747
1827
  setListItems = _useState[1];
@@ -1751,25 +1831,18 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1751
1831
  return lowerCaseFilterTest(item, inputValue);
1752
1832
  })));
1753
1833
  };
1834
+ var updateListItems = function updateListItems(_ref3) {
1835
+ var inputValue = _ref3.inputValue;
1836
+ if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : EMPTY_INPUT); // fetch items only if user provides a function as items
1837
+ filterListItems({
1838
+ inputValue: inputValue != null ? inputValue : EMPTY_INPUT
1839
+ });
1840
+ };
1754
1841
  React.useEffect(function () {
1755
1842
  filterListItems({
1756
1843
  inputValue: inputValue
1757
1844
  });
1758
1845
  }, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
1759
- var _useMultiselectUtils = useMultiselectUtils({
1760
- listItems: listItems,
1761
- selectAllValue: selectAll.value,
1762
- selectedItems: selectedItems
1763
- }),
1764
- addClickedItemToSelectedItems = _useMultiselectUtils.addClickedItemToSelectedItems,
1765
- allListItemsAreSelected = _useMultiselectUtils.allListItemsAreSelected,
1766
- clickedItemIsInSelectedItems = _useMultiselectUtils.clickedItemIsInSelectedItems,
1767
- clickedItemIsSelectAll = _useMultiselectUtils.clickedItemIsSelectAll,
1768
- hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
1769
- removeClickedItemFromSelectedItems = _useMultiselectUtils.removeClickedItemFromSelectedItems,
1770
- selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState,
1771
- selectAllUnselectedItemsInListItems = _useMultiselectUtils.selectAllUnselectedItemsInListItems,
1772
- unselectAllListItems = _useMultiselectUtils.unselectAllListItems;
1773
1846
  var _useMultipleSelection = useMultipleSelection({
1774
1847
  selectedItems: selectedItems,
1775
1848
  itemToString: itemToString,
@@ -1781,41 +1854,71 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1781
1854
  getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
1782
1855
  getDropdownProps = _useMultipleSelection.getDropdownProps,
1783
1856
  removeSelectedItem = _useMultipleSelection.removeSelectedItem;
1784
- var stateReducer = React.useCallback(function (_, _ref3) {
1785
- var _inputRef$current$val, _inputRef$current, _inputRef$current$val2, _inputRef$current2, _changes$inputValue, _changes$inputValue2, _changes$inputValue3;
1786
- var changes = _ref3.changes,
1787
- type = _ref3.type;
1788
- if (changes != null && changes.highlightedIndex && (changes == null ? void 0 : changes.highlightedIndex) >= 0) setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
1857
+ var _useMultiselectUtils = useMultiselectUtils({
1858
+ listItems: listItems,
1859
+ selectAllValue: selectAll.value,
1860
+ selectedItems: selectedItems
1861
+ }),
1862
+ hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
1863
+ handleListItemClicked = _useMultiselectUtils.handleListItemClicked,
1864
+ selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState;
1865
+ var stateReducer = React.useCallback(function (_, _ref4) {
1866
+ var changes = _ref4.changes,
1867
+ type = _ref4.type;
1868
+ if (changes.highlightedIndex !== undefined && (changes == null ? void 0 : changes.highlightedIndex) >= 0) {
1869
+ setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
1870
+ }
1789
1871
  switch (type) {
1790
1872
  case useCombobox.stateChangeTypes.InputKeyDownEnter:
1791
1873
  case useCombobox.stateChangeTypes.ItemClick:
1792
- return _extends({}, changes, {
1793
- isOpen: true,
1794
- inputValue: (_inputRef$current$val = inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value) != null ? _inputRef$current$val : '' // don't reset input value on select
1795
- });
1796
-
1874
+ {
1875
+ var _inputRef$current$val, _inputRef$current;
1876
+ if (clearInputOnSelect) {
1877
+ updateListItems({
1878
+ inputValue: EMPTY_INPUT
1879
+ });
1880
+ }
1881
+ return _extends({}, changes, {
1882
+ isOpen: true,
1883
+ 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
1884
+ });
1885
+ }
1797
1886
  case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1798
- return _extends({}, changes, {
1799
- inputValue: (_inputRef$current$val2 = inputRef == null ? void 0 : (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : '' // don't reset input value on select
1800
- });
1801
-
1802
- case useCombobox.stateChangeTypes.InputChange:
1803
- if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(/^\s+/g)) {
1804
- var _changes$inputValue$r;
1805
- // remove leading whitespace if it exists
1887
+ {
1888
+ var _inputRef$current$val2, _inputRef$current2;
1806
1889
  return _extends({}, changes, {
1807
- inputValue: (_changes$inputValue$r = changes.inputValue.replace(/^\s+/g, '')) != null ? _changes$inputValue$r : ''
1890
+ 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
1808
1891
  });
1809
1892
  }
1810
- if (typeof initialItems === 'function') fetchItems((_changes$inputValue2 = changes.inputValue) != null ? _changes$inputValue2 : ''); // fetch items only if user provides a function as items
1811
- filterListItems({
1812
- inputValue: (_changes$inputValue3 = changes.inputValue) != null ? _changes$inputValue3 : ''
1813
- });
1814
- return changes;
1893
+ case useCombobox.stateChangeTypes.InputChange:
1894
+ {
1895
+ var _changes$inputValue;
1896
+ var leadingWhitespaceTest = /^\s+/g;
1897
+ var isSpacePressedOnEmptyInput = changes.inputValue === ' ';
1898
+ if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(leadingWhitespaceTest)) {
1899
+ setInputValue(changes.inputValue.replace(leadingWhitespaceTest, EMPTY_INPUT));
1900
+ if (isSpacePressedOnEmptyInput) {
1901
+ openMenu();
1902
+ if (isOpen && changes.highlightedIndex) {
1903
+ handleListItemClicked({
1904
+ clickedItem: listItems[changes.highlightedIndex],
1905
+ onChange: onChange
1906
+ });
1907
+ }
1908
+ }
1909
+ } else {
1910
+ updateListItems({
1911
+ inputValue: changes.inputValue
1912
+ });
1913
+ }
1914
+ return changes;
1915
+ }
1815
1916
  case useCombobox.stateChangeTypes.InputBlur:
1816
- return _extends({}, changes, {
1817
- inputValue: ''
1818
- });
1917
+ {
1918
+ return _extends({}, changes, {
1919
+ inputValue: EMPTY_INPUT
1920
+ });
1921
+ }
1819
1922
  default:
1820
1923
  return changes;
1821
1924
  }
@@ -1826,9 +1929,9 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1826
1929
  itemToString: itemToString,
1827
1930
  selectedItem: null,
1828
1931
  stateReducer: stateReducer,
1829
- onStateChange: function onStateChange(_ref4) {
1830
- var type = _ref4.type,
1831
- clickedItem = _ref4.selectedItem;
1932
+ onStateChange: function onStateChange(_ref5) {
1933
+ var type = _ref5.type,
1934
+ clickedItem = _ref5.selectedItem;
1832
1935
  // clickedItem means item chosen either via mouse or keyboard
1833
1936
  if (!clickedItem) return;
1834
1937
  switch (type) {
@@ -1837,16 +1940,10 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1837
1940
  if (!selectOnBlur) break;
1838
1941
  case useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
1839
1942
  case useCombobox.stateChangeTypes.ItemClick:
1840
- if (clickedItemIsSelectAll(clickedItem)) {
1841
- if (allListItemsAreSelected) {
1842
- return unselectAllListItems(onChange);
1843
- }
1844
- return selectAllUnselectedItemsInListItems(onChange);
1845
- }
1846
- if (clickedItemIsInSelectedItems(clickedItem)) {
1847
- return removeClickedItemFromSelectedItems(clickedItem, onChange);
1848
- }
1849
- addClickedItemToSelectedItems(clickedItem, onChange);
1943
+ handleListItemClicked({
1944
+ clickedItem: clickedItem,
1945
+ onChange: onChange
1946
+ });
1850
1947
  }
1851
1948
  }
1852
1949
  }, rest)),
@@ -1861,6 +1958,15 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1861
1958
  isOpen = _useCombobox.isOpen,
1862
1959
  openMenu = _useCombobox.openMenu,
1863
1960
  setInputValue = _useCombobox.setInputValue;
1961
+ var handleOnClear = function handleOnClear() {
1962
+ var _inputRef$current3;
1963
+ onChange([]);
1964
+ setInputValue(EMPTY_INPUT);
1965
+ (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.focus();
1966
+ updateListItems({
1967
+ inputValue: inputValue
1968
+ });
1969
+ };
1864
1970
  // role=combobox leads to strange VoiceOver behavior and is therefor omitted
1865
1971
  // const { role: _, ...comboboxProps } = getComboboxProps();
1866
1972
  var _getComboboxProps = getComboboxProps(),
@@ -1872,28 +1978,25 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1872
1978
  selectedItems: selectedItems,
1873
1979
  isOpen: isOpen,
1874
1980
  clearable: clearable,
1981
+ clearSelectedItemsLabel: clearAllItemsAriaLabel,
1982
+ focusable: false,
1875
1983
  loading: loading,
1876
- loadingText: '',
1877
- readOnly: readonly,
1878
- onClear: function onClear() {
1879
- var _inputRef$current3;
1880
- onChange([]);
1881
- setInputValue('');
1882
- (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.focus();
1883
- if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : '');
1884
- },
1984
+ loadingText: loadingText,
1985
+ disabled: readOnly || disabled,
1986
+ onClear: handleOnClear,
1885
1987
  getToggleButtonProps: getToggleButtonProps
1886
1988
  }),
1887
1989
  className: classNames('eds-dropdown', className),
1888
- label: label,
1889
- isFilled: hasSelectedItems || inputValue !== '',
1990
+ disabled: disabled,
1890
1991
  feedback: feedback,
1891
- variant: variant,
1892
- readOnly: readonly,
1893
- style: style,
1992
+ isFilled: hasSelectedItems || inputValue !== EMPTY_INPUT,
1993
+ label: label,
1894
1994
  labelProps: _extends({
1895
1995
  'aria-label': label + ", multiselect, " + selectedItems.length + " valgte elementer"
1896
- }, getLabelProps())
1996
+ }, getLabelProps()),
1997
+ readOnly: readOnly,
1998
+ style: style,
1999
+ variant: variant
1897
2000
  }, comboboxProps, rest), React.createElement("div", {
1898
2001
  className: classNames('eds-dropdown__selected-items-and-input', {
1899
2002
  'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
@@ -1902,18 +2005,27 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1902
2005
  var _inputRef$current4;
1903
2006
  if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
1904
2007
  }
1905
- }, selectedItems.map(function (selectedItem, index) {
1906
- return React.createElement(SelectedElementsTag, {
2008
+ }, selectedItems.length < maxTags ? selectedItems.map(function (selectedItem, index) {
2009
+ return React.createElement(SelectedItemTag, {
2010
+ ariaLabelRemoveSelected: ariaLabelRemoveSelected,
2011
+ disabled: disabled,
2012
+ getSelectedItemProps: getSelectedItemProps,
1907
2013
  index: index,
1908
2014
  key: selectedItem.value,
1909
- getSelectedItemProps: getSelectedItemProps,
1910
- selectedItem: selectedItem,
2015
+ readOnly: readOnly,
1911
2016
  removeSelectedItem: removeSelectedItem,
1912
- ariaLabelRemoveSelected: ariaLabelRemoveSelected
2017
+ selectedItem: selectedItem
1913
2018
  });
2019
+ }) : React.createElement(SelectedItemTag, {
2020
+ ariaLabelRemoveSelected: clearAllItemsAriaLabel,
2021
+ disabled: disabled,
2022
+ readOnly: readOnly,
2023
+ removeSelectedItem: handleOnClear,
2024
+ selectedItem: summarySelectedItems
1914
2025
  }), React.createElement("input", _extends({
1915
2026
  placeholder: placeholder,
1916
2027
  className: "eds-dropdown__input eds-form-control",
2028
+ disabled: readOnly || disabled,
1917
2029
  role: "combobox" // eslint-disable-line jsx-a11y/role-has-required-aria-props
1918
2030
  }, getInputProps(getDropdownProps({
1919
2031
  preventKeyAction: isOpen,
@@ -1921,43 +2033,53 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1921
2033
  if (!isOpen && openOnFocus) openMenu();
1922
2034
  },
1923
2035
  ref: inputRef,
1924
- value: inputValue != null ? inputValue : ''
2036
+ value: inputValue != null ? inputValue : EMPTY_INPUT
1925
2037
  })))))), React.createElement(DropdownList, {
1926
- listItems: listItems,
1927
- selectedItems: selectedItems,
2038
+ getItemProps: getItemProps,
2039
+ getMenuProps: getMenuProps,
2040
+ highlightedIndex: highlightedIndex,
1928
2041
  inputValue: inputValue,
1929
2042
  isOpen: isOpen,
1930
- highlightedIndex: highlightedIndex,
1931
- getMenuProps: getMenuProps,
1932
- getItemProps: getItemProps,
1933
- selectAllItem: selectAll,
1934
- selectAllCheckboxState: selectAllCheckboxState,
2043
+ listItems: listItems,
1935
2044
  listStyle: listStyle,
1936
- loading: loading
2045
+ loading: loading,
2046
+ loadingText: loadingText,
2047
+ selectAllCheckboxState: selectAllCheckboxState,
2048
+ selectAllItem: selectAll,
2049
+ selectedItems: selectedItems
1937
2050
  }));
1938
2051
  };
1939
2052
 
1940
- var _excluded = ["className", "clearable", "debounceTimeout", "feedback", "items", "label", "listStyle", "onChange", "openOnFocus", "placeholder", "readonly", "selectedItem", "selectOnBlur", "selectOnTab", "variant"];
2053
+ var _excluded = ["className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelTooltip", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
1941
2054
  var DropdownBeta = function DropdownBeta(_ref) {
1942
- var _selectedItem$label;
2055
+ var _ref3, _selectedItem$label;
1943
2056
  var className = _ref.className,
1944
- debounceTimeout = _ref.debounceTimeout,
2057
+ _ref$disabled = _ref.disabled,
2058
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
2059
+ disableLabelAnimation = _ref.disableLabelAnimation,
1945
2060
  feedback = _ref.feedback,
1946
2061
  initialItems = _ref.items,
1947
2062
  label = _ref.label,
2063
+ labelTooltip = _ref.labelTooltip,
1948
2064
  listStyle = _ref.listStyle,
2065
+ loadingText = _ref.loadingText,
1949
2066
  onChange = _ref.onChange,
1950
- _ref$readonly = _ref.readonly,
1951
- readonly = _ref$readonly === void 0 ? false : _ref$readonly,
2067
+ placeholder = _ref.placeholder,
2068
+ prepend = _ref.prepend,
2069
+ _ref$readOnly = _ref.readOnly,
2070
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
1952
2071
  selectedItem = _ref.selectedItem,
1953
2072
  _ref$selectOnBlur = _ref.selectOnBlur,
1954
2073
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
2074
+ style = _ref.style,
1955
2075
  _ref$variant = _ref.variant,
1956
2076
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
1957
2077
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1958
- var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
2078
+ // TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
2079
+ var _useResolvedItems = useResolvedItems(initialItems),
1959
2080
  normalizedItems = _useResolvedItems.items,
1960
2081
  loading = _useResolvedItems.loading;
2082
+ var isFilled = selectedItem !== null || placeholder !== undefined;
1961
2083
  var _useSelect = useSelect({
1962
2084
  items: normalizedItems,
1963
2085
  selectedItem: selectedItem,
@@ -1976,51 +2098,59 @@ var DropdownBeta = function DropdownBeta(_ref) {
1976
2098
  itemToString: itemToString
1977
2099
  }),
1978
2100
  isOpen = _useSelect.isOpen,
1979
- getToggleButtonProps = _useSelect.getToggleButtonProps,
2101
+ getItemProps = _useSelect.getItemProps,
1980
2102
  getLabelProps = _useSelect.getLabelProps,
1981
2103
  getMenuProps = _useSelect.getMenuProps,
1982
- highlightedIndex = _useSelect.highlightedIndex,
1983
- getItemProps = _useSelect.getItemProps;
2104
+ getToggleButtonProps = _useSelect.getToggleButtonProps,
2105
+ highlightedIndex = _useSelect.highlightedIndex;
1984
2106
  return React.createElement("div", {
1985
2107
  className: "eds-dropdown__wrapper"
1986
2108
  }, React.createElement(BaseFormControl, _extends({
1987
2109
  append: React.createElement(FieldAppend, {
1988
- selectedItems: [selectedItem],
1989
- isOpen: isOpen,
1990
2110
  clearable: true,
2111
+ clearSelectedItemsLabel: "Fjern valgt",
2112
+ focusable: true,
2113
+ getToggleButtonProps: getToggleButtonProps,
2114
+ isOpen: isOpen,
1991
2115
  loading: loading,
1992
- loadingText: '',
1993
- readOnly: readonly,
2116
+ loadingText: loadingText,
1994
2117
  onClear: function onClear() {
1995
2118
  onChange == null ? void 0 : onChange(null);
1996
2119
  },
1997
- getToggleButtonProps: getToggleButtonProps,
1998
- clearSelectedItemsLabel: "Fjern valgt",
1999
- ariaLabelClearItems: (selectedItem == null ? void 0 : selectedItem.label) + " valgt, trykk for \xE5 fjerne valget",
2000
- focusable: true
2120
+ disabled: readOnly || disabled,
2121
+ selectedItems: [selectedItem]
2001
2122
  }),
2002
2123
  className: classNames('eds-dropdown', className, {
2003
- 'eds-dropdown--not-filled': selectedItem === null
2124
+ 'eds-dropdown--not-filled': !isFilled
2004
2125
  }),
2126
+ disabled: disabled,
2127
+ disableLabelAnimation: disableLabelAnimation,
2128
+ feedback: feedback,
2129
+ isFilled: isFilled,
2005
2130
  label: label,
2006
2131
  labelId: getLabelProps().id,
2007
2132
  labelProps: getLabelProps(),
2008
- disableLabelAnimation: true,
2009
- isFilled: selectedItem !== null,
2010
- feedback: feedback,
2011
- variant: variant,
2012
- readOnly: readonly
2133
+ labelTooltip: labelTooltip,
2134
+ prepend: prepend,
2135
+ readOnly: readOnly,
2136
+ style: style,
2137
+ variant: variant
2013
2138
  }, rest), React.createElement("div", _extends({
2014
2139
  className: "eds-dropdown__selected-item-button"
2015
- }, getToggleButtonProps()), (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : '')), React.createElement(DropdownList, {
2016
- selectedItems: selectedItem !== null ? [selectedItem] : [],
2140
+ }, getToggleButtonProps()), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React.createElement("span", {
2141
+ className: classNames('eds-dropdown__selected-item-button__placeholder', {
2142
+ 'eds-dropdown__selected-item-button__placeholder--readonly': readOnly
2143
+ })
2144
+ }, placeholder)) != null ? _ref3 : '')), React.createElement(DropdownList, {
2145
+ getItemProps: getItemProps,
2146
+ getMenuProps: getMenuProps,
2147
+ highlightedIndex: highlightedIndex,
2017
2148
  isOpen: isOpen,
2018
2149
  listItems: normalizedItems,
2019
- highlightedIndex: highlightedIndex,
2020
2150
  listStyle: listStyle,
2021
- getMenuProps: getMenuProps,
2022
- getItemProps: getItemProps,
2023
- loading: loading
2151
+ loading: loading,
2152
+ loadingText: loadingText,
2153
+ selectedItems: selectedItem !== null ? [selectedItem] : []
2024
2154
  }));
2025
2155
  };
2026
2156