@entur/dropdown 5.0.0-beta.2 → 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,
@@ -1426,18 +1447,23 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
1426
1447
  var _excluded$3 = ["tabIndex"];
1427
1448
  var SelectedItemTag = function SelectedItemTag(_ref) {
1428
1449
  var _getSelectedItemProps;
1429
- var getSelectedItemProps = _ref.getSelectedItemProps,
1430
- removeSelectedItem = _ref.removeSelectedItem,
1431
- selectedItem = _ref.selectedItem,
1450
+ var ariaLabelRemoveSelected = _ref.ariaLabelRemoveSelected,
1451
+ disabled = _ref.disabled,
1452
+ getSelectedItemProps = _ref.getSelectedItemProps,
1432
1453
  index = _ref.index,
1433
- ariaLabelRemoveSelected = _ref.ariaLabelRemoveSelected;
1454
+ readOnly = _ref.readOnly,
1455
+ removeSelectedItem = _ref.removeSelectedItem,
1456
+ selectedItem = _ref.selectedItem;
1434
1457
  var _ref2 = (_getSelectedItemProps = getSelectedItemProps == null ? void 0 : getSelectedItemProps({
1435
1458
  selectedItem: selectedItem,
1436
1459
  index: index
1437
1460
  })) != null ? _getSelectedItemProps : {},
1438
1461
  selectedItemProps = _objectWithoutPropertiesLoose(_ref2, _excluded$3);
1439
1462
  return React.createElement(TagChip, _extends({
1440
- 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
+ })
1441
1467
  }, selectedItemProps, {
1442
1468
  onClose: function onClose(e) {
1443
1469
  e.stopPropagation();
@@ -1450,47 +1476,48 @@ var SelectedItemTag = function SelectedItemTag(_ref) {
1450
1476
  }, selectedItem.label));
1451
1477
  };
1452
1478
  var FieldAppend = function FieldAppend(_ref3) {
1453
- var clearable = _ref3.clearable,
1454
- readOnly = _ref3.readOnly,
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,
1455
1486
  getToggleButtonProps = _ref3.getToggleButtonProps,
1456
- selectedItems = _ref3.selectedItems,
1487
+ isOpen = _ref3.isOpen,
1457
1488
  _ref3$loading = _ref3.loading,
1458
1489
  loading = _ref3$loading === void 0 ? false : _ref3$loading,
1459
1490
  _ref3$loadingText = _ref3.loadingText,
1460
1491
  loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
1461
- ariaLabelClearItems = _ref3.ariaLabelClearItems,
1462
- clearSelectedItemsLabel = _ref3.clearSelectedItemsLabel,
1463
- isOpen = _ref3.isOpen,
1464
1492
  onClear = _ref3.onClear,
1465
- _ref3$focusable = _ref3.focusable,
1466
- focusable = _ref3$focusable === void 0 ? false : _ref3$focusable;
1493
+ selectedItems = _ref3.selectedItems;
1467
1494
  if (loading) {
1468
1495
  return React.createElement(DropdownLoadingDots, null, loadingText);
1469
1496
  }
1470
- if (readOnly) {
1497
+ if (disabled) {
1471
1498
  return null;
1472
1499
  }
1473
- return React.createElement("div", {
1474
- className: "eds-dropdown-appendix"
1475
- }, clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React.createElement(React.Fragment, null, React.createElement(ClearableButton, {
1476
- onClear: onClear,
1477
- focusable: focusable,
1478
- clearSelectedItemsLabel: clearSelectedItemsLabel,
1479
- ariaLabelClearItems: ariaLabelClearItems
1480
- }), React.createElement("div", {
1481
- className: "eds-dropdown-appendix__divider"
1482
- })), React.createElement(ToggleButton, {
1483
- getToggleButtonProps: getToggleButtonProps,
1484
- isOpen: isOpen,
1485
- focusable: focusable
1486
- }));
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
+ );
1487
1516
  };
1488
1517
  var ClearableButton = function ClearableButton(_ref4) {
1489
1518
  var onClear = _ref4.onClear,
1490
1519
  _ref4$clearSelectedIt = _ref4.clearSelectedItemsLabel,
1491
1520
  clearSelectedItemsLabel = _ref4$clearSelectedIt === void 0 ? 'Fjern valgte' : _ref4$clearSelectedIt,
1492
- _ref4$ariaLabelClearI = _ref4.ariaLabelClearItems,
1493
- ariaLabelClearItems = _ref4$ariaLabelClearI === void 0 ? 'Fjern valgte' : _ref4$ariaLabelClearI,
1494
1521
  _ref4$focusable = _ref4.focusable,
1495
1522
  focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
1496
1523
  return React.createElement(Tooltip, {
@@ -1502,7 +1529,7 @@ var ClearableButton = function ClearableButton(_ref4) {
1502
1529
  type: "button",
1503
1530
  tabIndex: focusable ? 0 : 1,
1504
1531
  onClick: onClear,
1505
- "aria-label": ariaLabelClearItems
1532
+ "aria-label": clearSelectedItemsLabel
1506
1533
  }, React.createElement(CloseSmallIcon, {
1507
1534
  "aria-hidden": "true"
1508
1535
  })));
@@ -1522,22 +1549,22 @@ var ToggleButton = function ToggleButton(_ref5) {
1522
1549
  })
1523
1550
  }), {
1524
1551
  "aria-label": isOpen ? closeAriaLabel : openAriaLabel,
1525
- tabIndex: focusable ? 0 : 1,
1552
+ tabIndex: focusable ? 0 : -1,
1526
1553
  type: "button"
1527
1554
  }), React.createElement(DownArrowIcon, {
1528
1555
  "aria-hidden": "true"
1529
1556
  }));
1530
1557
  };
1531
1558
 
1532
- var _excluded$2 = ["className", "clearable", "debounceTimeout", "disableLabelAnimation", "feedback", "itemFilter", "items", "label", "listStyle", "onChange", "openOnFocus", "placeholder", "readonly", "selectedItem", "selectOnBlur", "variant"];
1533
- // TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
1534
- // 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"];
1535
1560
  var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1536
1561
  var _selectedItem$label;
1537
1562
  var className = _ref.className,
1538
1563
  _ref$clearable = _ref.clearable,
1539
1564
  clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1540
1565
  debounceTimeout = _ref.debounceTimeout,
1566
+ _ref$disabled = _ref.disabled,
1567
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1541
1568
  _ref$disableLabelAnim = _ref.disableLabelAnimation,
1542
1569
  disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
1543
1570
  feedback = _ref.feedback,
@@ -1546,43 +1573,59 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1546
1573
  initialItems = _ref.items,
1547
1574
  label = _ref.label,
1548
1575
  listStyle = _ref.listStyle,
1576
+ loadingText = _ref.loadingText,
1549
1577
  onChange = _ref.onChange,
1550
1578
  _ref$openOnFocus = _ref.openOnFocus,
1551
1579
  openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1552
1580
  placeholder = _ref.placeholder,
1553
- _ref$readonly = _ref.readonly,
1554
- 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,
1555
1584
  value = _ref.selectedItem,
1556
1585
  _ref$selectOnBlur = _ref.selectOnBlur,
1557
1586
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
1587
+ style = _ref.style,
1558
1588
  _ref$variant = _ref.variant,
1559
1589
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
1560
1590
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1561
1591
  var _useState = useState(false),
1562
1592
  hideSelectedItem = _useState[0],
1563
1593
  setHideSelectedItem = _useState[1];
1594
+ var _React$useState = React.useState(0),
1595
+ lastHighlightedIndex = _React$useState[0],
1596
+ setLastHighlightedIndex = _React$useState[1];
1564
1597
  var inputRef = useRef(null);
1565
1598
  var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
1566
1599
  normalizedItems = _useResolvedItems.items,
1567
1600
  loading = _useResolvedItems.loading,
1568
1601
  fetchItems = _useResolvedItems.fetchItems;
1569
- var _React$useState = React.useState(normalizedItems),
1570
- listItems = _React$useState[0],
1571
- setListItems = _React$useState[1];
1602
+ var _React$useState2 = React.useState(normalizedItems),
1603
+ listItems = _React$useState2[0],
1604
+ setListItems = _React$useState2[1];
1572
1605
  var filterListItems = function filterListItems(_ref2) {
1573
1606
  var inputValue = _ref2.inputValue;
1574
1607
  return setListItems(normalizedItems.filter(function (item) {
1575
1608
  return itemFilter(item, inputValue);
1576
1609
  }));
1577
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
+ };
1578
1618
  React.useEffect(function () {
1579
1619
  filterListItems({
1580
1620
  inputValue: inputValue
1581
1621
  });
1582
1622
  }, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
1583
- var stateReducer = React.useCallback(function (_, _ref3) {
1584
- var type = _ref3.type,
1585
- 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
+ }
1586
1629
  switch (type) {
1587
1630
  case useCombobox.stateChangeTypes.ItemClick:
1588
1631
  case useCombobox.stateChangeTypes.InputKeyDownEnter:
@@ -1590,10 +1633,10 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1590
1633
  case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1591
1634
  {
1592
1635
  filterListItems({
1593
- inputValue: ''
1636
+ inputValue: EMPTY_INPUT
1594
1637
  });
1595
1638
  return _extends({}, changes, {
1596
- inputValue: '' // reset input value to show placeholder on focus
1639
+ inputValue: EMPTY_INPUT // reset input value to show placeholder on focus
1597
1640
  });
1598
1641
  }
1599
1642
 
@@ -1601,11 +1644,18 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1601
1644
  {
1602
1645
  var _changes$inputValue;
1603
1646
  var leadingWhitespaceTest = /^\s+/g;
1604
- if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(leadingWhitespaceTest)) setInputValue(changes.inputValue.replace(leadingWhitespaceTest, ''));else {
1605
- var _changes$inputValue2, _changes$inputValue3;
1606
- fetchItems((_changes$inputValue2 = changes.inputValue) != null ? _changes$inputValue2 : '');
1607
- filterListItems({
1608
- 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
1609
1659
  });
1610
1660
  }
1611
1661
  return changes;
@@ -1615,13 +1665,14 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1615
1665
  }
1616
1666
  }, [fetchItems, filterListItems]);
1617
1667
  var _useCombobox = useCombobox(_extends({
1668
+ defaultHighlightedIndex: lastHighlightedIndex,
1618
1669
  items: listItems,
1619
- selectedItem: value,
1620
1670
  itemToString: itemToString,
1671
+ selectedItem: value,
1621
1672
  stateReducer: stateReducer,
1622
- onStateChange: function onStateChange(_ref4) {
1623
- var type = _ref4.type,
1624
- clickedItem = _ref4.selectedItem;
1673
+ onStateChange: function onStateChange(_ref5) {
1674
+ var type = _ref5.type,
1675
+ clickedItem = _ref5.selectedItem;
1625
1676
  switch (type) {
1626
1677
  // @ts-expect-error This falltrough is wanted
1627
1678
  case useCombobox.stateChangeTypes.InputBlur:
@@ -1644,33 +1695,41 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1644
1695
  selectedItem = _useCombobox.selectedItem,
1645
1696
  inputValue = _useCombobox.inputValue,
1646
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
+ };
1647
1707
  return React.createElement("div", {
1648
1708
  className: "eds-dropdown__wrapper"
1649
1709
  }, React.createElement(BaseFormControl, _extends({
1650
1710
  append: React.createElement(FieldAppend, {
1651
- selectedItems: [selectedItem],
1652
- isOpen: isOpen,
1653
1711
  clearable: clearable,
1654
- loading: false,
1655
- loadingText: '',
1656
- readOnly: readonly,
1657
- onClear: function onClear() {
1658
- var _inputRef$current;
1659
- onChange(null);
1660
- setInputValue('');
1661
- (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
1662
- if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : '');
1663
- },
1664
- 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]
1665
1721
  }),
1666
- disableLabelAnimation: disableLabelAnimation,
1667
1722
  className: classNames('eds-dropdown', className),
1668
- label: label,
1669
- isFilled: selectedItem || inputValue !== '',
1723
+ disabled: disabled,
1724
+ disableLabelAnimation: disableLabelAnimation,
1670
1725
  feedback: feedback,
1671
- variant: variant,
1672
- readOnly: readonly,
1673
- 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
1674
1733
  }, getComboboxProps(), rest), !hideSelectedItem && selectedItem && !inputValue && React.createElement("span", {
1675
1734
  className: "eds-dropdown__selected-item__wrapper"
1676
1735
  }, React.createElement("span", {
@@ -1680,30 +1739,32 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1680
1739
  return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
1681
1740
  }
1682
1741
  }, selectedItem.label)), React.createElement("input", _extends({
1683
- placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder,
1684
- 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
1685
1745
  }, getInputProps({
1746
+ onBlur: function onBlur() {
1747
+ setHideSelectedItem(false);
1748
+ },
1686
1749
  onFocus: function onFocus() {
1687
1750
  if (!isOpen && openOnFocus) openMenu();
1688
1751
  setHideSelectedItem(true);
1689
1752
  },
1690
- onBlur: function onBlur() {
1691
- setHideSelectedItem(false);
1692
- },
1693
1753
  ref: inputRef
1694
1754
  })))), React.createElement(DropdownList, {
1695
- selectedItems: selectedItem !== null ? [selectedItem] : [],
1696
1755
  isOpen: isOpen,
1697
1756
  listItems: listItems,
1698
- highlightedIndex: highlightedIndex,
1699
1757
  listStyle: listStyle,
1700
- getMenuProps: getMenuProps,
1758
+ loading: loading,
1759
+ loadingText: loadingText,
1701
1760
  getItemProps: getItemProps,
1702
- loading: loading
1761
+ getMenuProps: getMenuProps,
1762
+ highlightedIndex: highlightedIndex,
1763
+ selectedItems: selectedItem !== null ? [selectedItem] : []
1703
1764
  }));
1704
1765
  };
1705
1766
 
1706
- var _excluded$1 = ["allItemsSelectedLabel", "ariaLabelRemoveSelected", "className", "clearable", "clearInputOnSelect", "debounceTimeout", "feedback", "hideSelectAll", "items", "label", "listStyle", "maxTags", "onChange", "openOnFocus", "placeholder", "readonly", "removeAllItemsAriaLabel", "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"];
1707
1768
  var MultiSelectBeta = function MultiSelectBeta(_ref) {
1708
1769
  var _ref$allItemsSelected = _ref.allItemsSelectedLabel,
1709
1770
  allItemsSelectedLabel = _ref$allItemsSelected === void 0 ? 'Alle valgt' : _ref$allItemsSelected,
@@ -1714,22 +1775,25 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1714
1775
  clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1715
1776
  _ref$clearInputOnSele = _ref.clearInputOnSelect,
1716
1777
  clearInputOnSelect = _ref$clearInputOnSele === void 0 ? false : _ref$clearInputOnSele,
1778
+ _ref$disabled = _ref.disabled,
1779
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
1717
1780
  feedback = _ref.feedback,
1718
1781
  _ref$hideSelectAll = _ref.hideSelectAll,
1719
1782
  hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
1720
1783
  initialItems = _ref.items,
1721
1784
  label = _ref.label,
1722
1785
  listStyle = _ref.listStyle,
1786
+ loadingText = _ref.loadingText,
1723
1787
  _ref$maxTags = _ref.maxTags,
1724
1788
  maxTags = _ref$maxTags === void 0 ? 10 : _ref$maxTags,
1725
1789
  onChange = _ref.onChange,
1726
1790
  _ref$openOnFocus = _ref.openOnFocus,
1727
1791
  openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1728
1792
  placeholder = _ref.placeholder,
1729
- _ref$readonly = _ref.readonly,
1730
- readonly = _ref$readonly === void 0 ? false : _ref$readonly,
1731
- _ref$removeAllItemsAr = _ref.removeAllItemsAriaLabel,
1732
- removeAllItemsAriaLabel = _ref$removeAllItemsAr === void 0 ? 'Fjern valgte' : _ref$removeAllItemsAr,
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,
1733
1797
  _ref$selectAllLabel = _ref.selectAllLabel,
1734
1798
  selectAllLabel = _ref$selectAllLabel === void 0 ? 'Velg alle' : _ref$selectAllLabel,
1735
1799
  selectedItems = _ref.selectedItems,
@@ -1754,10 +1818,10 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1754
1818
  };
1755
1819
  var summarySelectedItems = React.useMemo(function () {
1756
1820
  return {
1757
- value: '',
1821
+ value: EMPTY_INPUT,
1758
1822
  label: isAllNonAsyncItemsSelected ? allItemsSelectedLabel : selectedItems.length + ' valgte'
1759
1823
  };
1760
- }, [isAllNonAsyncItemsSelected, selectedItems, normalizedItems, allItemsSelectedLabel]);
1824
+ }, [isAllNonAsyncItemsSelected, selectedItems, allItemsSelectedLabel]);
1761
1825
  var _useState = useState([].concat(!hideSelectAll ? [selectAll] : [], normalizedItems)),
1762
1826
  listItems = _useState[0],
1763
1827
  setListItems = _useState[1];
@@ -1767,10 +1831,11 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1767
1831
  return lowerCaseFilterTest(item, inputValue);
1768
1832
  })));
1769
1833
  };
1770
- var updateListItems = function updateListItems(inputValue) {
1771
- if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : ''); // fetch items only if user provides a function as items
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
1772
1837
  filterListItems({
1773
- inputValue: inputValue != null ? inputValue : ''
1838
+ inputValue: inputValue != null ? inputValue : EMPTY_INPUT
1774
1839
  });
1775
1840
  };
1776
1841
  React.useEffect(function () {
@@ -1778,20 +1843,6 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1778
1843
  inputValue: inputValue
1779
1844
  });
1780
1845
  }, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
1781
- var _useMultiselectUtils = useMultiselectUtils({
1782
- listItems: listItems,
1783
- selectAllValue: selectAll.value,
1784
- selectedItems: selectedItems
1785
- }),
1786
- addClickedItemToSelectedItems = _useMultiselectUtils.addClickedItemToSelectedItems,
1787
- allListItemsAreSelected = _useMultiselectUtils.allListItemsAreSelected,
1788
- clickedItemIsInSelectedItems = _useMultiselectUtils.clickedItemIsInSelectedItems,
1789
- clickedItemIsSelectAll = _useMultiselectUtils.clickedItemIsSelectAll,
1790
- hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
1791
- removeClickedItemFromSelectedItems = _useMultiselectUtils.removeClickedItemFromSelectedItems,
1792
- selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState,
1793
- selectAllUnselectedItemsInListItems = _useMultiselectUtils.selectAllUnselectedItemsInListItems,
1794
- unselectAllListItems = _useMultiselectUtils.unselectAllListItems;
1795
1846
  var _useMultipleSelection = useMultipleSelection({
1796
1847
  selectedItems: selectedItems,
1797
1848
  itemToString: itemToString,
@@ -1803,39 +1854,71 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1803
1854
  getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
1804
1855
  getDropdownProps = _useMultipleSelection.getDropdownProps,
1805
1856
  removeSelectedItem = _useMultipleSelection.removeSelectedItem;
1806
- var stateReducer = React.useCallback(function (_, _ref3) {
1807
- var _inputRef$current$val, _inputRef$current, _inputRef$current$val2, _inputRef$current2, _changes$inputValue;
1808
- var changes = _ref3.changes,
1809
- type = _ref3.type;
1810
- 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
+ }
1811
1871
  switch (type) {
1812
1872
  case useCombobox.stateChangeTypes.InputKeyDownEnter:
1813
1873
  case useCombobox.stateChangeTypes.ItemClick:
1814
- if (clearInputOnSelect) {
1815
- updateListItems('');
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
+ });
1816
1885
  }
1817
- return _extends({}, changes, {
1818
- isOpen: true,
1819
- inputValue: clearInputOnSelect ? '' : (_inputRef$current$val = inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value) != null ? _inputRef$current$val : ''
1820
- });
1821
1886
  case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1822
- return _extends({}, changes, {
1823
- inputValue: clearInputOnSelect ? '' : (_inputRef$current$val2 = inputRef == null ? void 0 : (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : ''
1824
- });
1825
- case useCombobox.stateChangeTypes.InputChange:
1826
- if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(/^\s+/g)) {
1827
- var _changes$inputValue$r;
1828
- // remove leading whitespace if it exists
1887
+ {
1888
+ var _inputRef$current$val2, _inputRef$current2;
1829
1889
  return _extends({}, changes, {
1830
- 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
1831
1891
  });
1832
1892
  }
1833
- updateListItems(changes.inputValue);
1834
- 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
+ }
1835
1916
  case useCombobox.stateChangeTypes.InputBlur:
1836
- return _extends({}, changes, {
1837
- inputValue: ''
1838
- });
1917
+ {
1918
+ return _extends({}, changes, {
1919
+ inputValue: EMPTY_INPUT
1920
+ });
1921
+ }
1839
1922
  default:
1840
1923
  return changes;
1841
1924
  }
@@ -1846,9 +1929,9 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1846
1929
  itemToString: itemToString,
1847
1930
  selectedItem: null,
1848
1931
  stateReducer: stateReducer,
1849
- onStateChange: function onStateChange(_ref4) {
1850
- var type = _ref4.type,
1851
- clickedItem = _ref4.selectedItem;
1932
+ onStateChange: function onStateChange(_ref5) {
1933
+ var type = _ref5.type,
1934
+ clickedItem = _ref5.selectedItem;
1852
1935
  // clickedItem means item chosen either via mouse or keyboard
1853
1936
  if (!clickedItem) return;
1854
1937
  switch (type) {
@@ -1857,16 +1940,10 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1857
1940
  if (!selectOnBlur) break;
1858
1941
  case useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
1859
1942
  case useCombobox.stateChangeTypes.ItemClick:
1860
- if (clickedItemIsSelectAll(clickedItem)) {
1861
- if (allListItemsAreSelected) {
1862
- return unselectAllListItems(onChange);
1863
- }
1864
- return selectAllUnselectedItemsInListItems(onChange);
1865
- }
1866
- if (clickedItemIsInSelectedItems(clickedItem)) {
1867
- return removeClickedItemFromSelectedItems(clickedItem, onChange);
1868
- }
1869
- addClickedItemToSelectedItems(clickedItem, onChange);
1943
+ handleListItemClicked({
1944
+ clickedItem: clickedItem,
1945
+ onChange: onChange
1946
+ });
1870
1947
  }
1871
1948
  }
1872
1949
  }, rest)),
@@ -1884,9 +1961,11 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1884
1961
  var handleOnClear = function handleOnClear() {
1885
1962
  var _inputRef$current3;
1886
1963
  onChange([]);
1887
- setInputValue('');
1964
+ setInputValue(EMPTY_INPUT);
1888
1965
  (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.focus();
1889
- updateListItems(inputValue);
1966
+ updateListItems({
1967
+ inputValue: inputValue
1968
+ });
1890
1969
  };
1891
1970
  // role=combobox leads to strange VoiceOver behavior and is therefor omitted
1892
1971
  // const { role: _, ...comboboxProps } = getComboboxProps();
@@ -1899,23 +1978,25 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1899
1978
  selectedItems: selectedItems,
1900
1979
  isOpen: isOpen,
1901
1980
  clearable: clearable,
1902
- clearSelectedItemsLabel: removeAllItemsAriaLabel,
1981
+ clearSelectedItemsLabel: clearAllItemsAriaLabel,
1982
+ focusable: false,
1903
1983
  loading: loading,
1904
- loadingText: '',
1905
- readOnly: readonly,
1984
+ loadingText: loadingText,
1985
+ disabled: readOnly || disabled,
1906
1986
  onClear: handleOnClear,
1907
1987
  getToggleButtonProps: getToggleButtonProps
1908
1988
  }),
1909
1989
  className: classNames('eds-dropdown', className),
1910
- label: label,
1911
- isFilled: hasSelectedItems || inputValue !== '',
1990
+ disabled: disabled,
1912
1991
  feedback: feedback,
1913
- variant: variant,
1914
- readOnly: readonly,
1915
- style: style,
1992
+ isFilled: hasSelectedItems || inputValue !== EMPTY_INPUT,
1993
+ label: label,
1916
1994
  labelProps: _extends({
1917
1995
  'aria-label': label + ", multiselect, " + selectedItems.length + " valgte elementer"
1918
- }, getLabelProps())
1996
+ }, getLabelProps()),
1997
+ readOnly: readOnly,
1998
+ style: style,
1999
+ variant: variant
1919
2000
  }, comboboxProps, rest), React.createElement("div", {
1920
2001
  className: classNames('eds-dropdown__selected-items-and-input', {
1921
2002
  'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
@@ -1926,20 +2007,25 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1926
2007
  }
1927
2008
  }, selectedItems.length < maxTags ? selectedItems.map(function (selectedItem, index) {
1928
2009
  return React.createElement(SelectedItemTag, {
2010
+ ariaLabelRemoveSelected: ariaLabelRemoveSelected,
2011
+ disabled: disabled,
2012
+ getSelectedItemProps: getSelectedItemProps,
1929
2013
  index: index,
1930
2014
  key: selectedItem.value,
1931
- getSelectedItemProps: getSelectedItemProps,
1932
- selectedItem: selectedItem,
2015
+ readOnly: readOnly,
1933
2016
  removeSelectedItem: removeSelectedItem,
1934
- ariaLabelRemoveSelected: ariaLabelRemoveSelected
2017
+ selectedItem: selectedItem
1935
2018
  });
1936
2019
  }) : React.createElement(SelectedItemTag, {
1937
- selectedItem: summarySelectedItems,
2020
+ ariaLabelRemoveSelected: clearAllItemsAriaLabel,
2021
+ disabled: disabled,
2022
+ readOnly: readOnly,
1938
2023
  removeSelectedItem: handleOnClear,
1939
- ariaLabelRemoveSelected: removeAllItemsAriaLabel
2024
+ selectedItem: summarySelectedItems
1940
2025
  }), React.createElement("input", _extends({
1941
2026
  placeholder: placeholder,
1942
2027
  className: "eds-dropdown__input eds-form-control",
2028
+ disabled: readOnly || disabled,
1943
2029
  role: "combobox" // eslint-disable-line jsx-a11y/role-has-required-aria-props
1944
2030
  }, getInputProps(getDropdownProps({
1945
2031
  preventKeyAction: isOpen,
@@ -1947,43 +2033,53 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
1947
2033
  if (!isOpen && openOnFocus) openMenu();
1948
2034
  },
1949
2035
  ref: inputRef,
1950
- value: inputValue != null ? inputValue : ''
2036
+ value: inputValue != null ? inputValue : EMPTY_INPUT
1951
2037
  })))))), React.createElement(DropdownList, {
1952
- listItems: listItems,
1953
- selectedItems: selectedItems,
2038
+ getItemProps: getItemProps,
2039
+ getMenuProps: getMenuProps,
2040
+ highlightedIndex: highlightedIndex,
1954
2041
  inputValue: inputValue,
1955
2042
  isOpen: isOpen,
1956
- highlightedIndex: highlightedIndex,
1957
- getMenuProps: getMenuProps,
1958
- getItemProps: getItemProps,
1959
- selectAllItem: selectAll,
1960
- selectAllCheckboxState: selectAllCheckboxState,
2043
+ listItems: listItems,
1961
2044
  listStyle: listStyle,
1962
- loading: loading
2045
+ loading: loading,
2046
+ loadingText: loadingText,
2047
+ selectAllCheckboxState: selectAllCheckboxState,
2048
+ selectAllItem: selectAll,
2049
+ selectedItems: selectedItems
1963
2050
  }));
1964
2051
  };
1965
2052
 
1966
- 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"];
1967
2054
  var DropdownBeta = function DropdownBeta(_ref) {
1968
- var _selectedItem$label;
2055
+ var _ref3, _selectedItem$label;
1969
2056
  var className = _ref.className,
1970
- debounceTimeout = _ref.debounceTimeout,
2057
+ _ref$disabled = _ref.disabled,
2058
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
2059
+ disableLabelAnimation = _ref.disableLabelAnimation,
1971
2060
  feedback = _ref.feedback,
1972
2061
  initialItems = _ref.items,
1973
2062
  label = _ref.label,
2063
+ labelTooltip = _ref.labelTooltip,
1974
2064
  listStyle = _ref.listStyle,
2065
+ loadingText = _ref.loadingText,
1975
2066
  onChange = _ref.onChange,
1976
- _ref$readonly = _ref.readonly,
1977
- 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,
1978
2071
  selectedItem = _ref.selectedItem,
1979
2072
  _ref$selectOnBlur = _ref.selectOnBlur,
1980
2073
  selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
2074
+ style = _ref.style,
1981
2075
  _ref$variant = _ref.variant,
1982
2076
  variant = _ref$variant === void 0 ? 'info' : _ref$variant,
1983
2077
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1984
- 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),
1985
2080
  normalizedItems = _useResolvedItems.items,
1986
2081
  loading = _useResolvedItems.loading;
2082
+ var isFilled = selectedItem !== null || placeholder !== undefined;
1987
2083
  var _useSelect = useSelect({
1988
2084
  items: normalizedItems,
1989
2085
  selectedItem: selectedItem,
@@ -2002,51 +2098,59 @@ var DropdownBeta = function DropdownBeta(_ref) {
2002
2098
  itemToString: itemToString
2003
2099
  }),
2004
2100
  isOpen = _useSelect.isOpen,
2005
- getToggleButtonProps = _useSelect.getToggleButtonProps,
2101
+ getItemProps = _useSelect.getItemProps,
2006
2102
  getLabelProps = _useSelect.getLabelProps,
2007
2103
  getMenuProps = _useSelect.getMenuProps,
2008
- highlightedIndex = _useSelect.highlightedIndex,
2009
- getItemProps = _useSelect.getItemProps;
2104
+ getToggleButtonProps = _useSelect.getToggleButtonProps,
2105
+ highlightedIndex = _useSelect.highlightedIndex;
2010
2106
  return React.createElement("div", {
2011
2107
  className: "eds-dropdown__wrapper"
2012
2108
  }, React.createElement(BaseFormControl, _extends({
2013
2109
  append: React.createElement(FieldAppend, {
2014
- selectedItems: [selectedItem],
2015
- isOpen: isOpen,
2016
2110
  clearable: true,
2111
+ clearSelectedItemsLabel: "Fjern valgt",
2112
+ focusable: true,
2113
+ getToggleButtonProps: getToggleButtonProps,
2114
+ isOpen: isOpen,
2017
2115
  loading: loading,
2018
- loadingText: '',
2019
- readOnly: readonly,
2116
+ loadingText: loadingText,
2020
2117
  onClear: function onClear() {
2021
2118
  onChange == null ? void 0 : onChange(null);
2022
2119
  },
2023
- getToggleButtonProps: getToggleButtonProps,
2024
- clearSelectedItemsLabel: "Fjern valgt",
2025
- ariaLabelClearItems: (selectedItem == null ? void 0 : selectedItem.label) + " valgt, trykk for \xE5 fjerne valget",
2026
- focusable: true
2120
+ disabled: readOnly || disabled,
2121
+ selectedItems: [selectedItem]
2027
2122
  }),
2028
2123
  className: classNames('eds-dropdown', className, {
2029
- 'eds-dropdown--not-filled': selectedItem === null
2124
+ 'eds-dropdown--not-filled': !isFilled
2030
2125
  }),
2126
+ disabled: disabled,
2127
+ disableLabelAnimation: disableLabelAnimation,
2128
+ feedback: feedback,
2129
+ isFilled: isFilled,
2031
2130
  label: label,
2032
2131
  labelId: getLabelProps().id,
2033
2132
  labelProps: getLabelProps(),
2034
- disableLabelAnimation: true,
2035
- isFilled: selectedItem !== null,
2036
- feedback: feedback,
2037
- variant: variant,
2038
- readOnly: readonly
2133
+ labelTooltip: labelTooltip,
2134
+ prepend: prepend,
2135
+ readOnly: readOnly,
2136
+ style: style,
2137
+ variant: variant
2039
2138
  }, rest), React.createElement("div", _extends({
2040
2139
  className: "eds-dropdown__selected-item-button"
2041
- }, getToggleButtonProps()), (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : '')), React.createElement(DropdownList, {
2042
- 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,
2043
2148
  isOpen: isOpen,
2044
2149
  listItems: normalizedItems,
2045
- highlightedIndex: highlightedIndex,
2046
2150
  listStyle: listStyle,
2047
- getMenuProps: getMenuProps,
2048
- getItemProps: getItemProps,
2049
- loading: loading
2151
+ loading: loading,
2152
+ loadingText: loadingText,
2153
+ selectedItems: selectedItem !== null ? [selectedItem] : []
2050
2154
  }));
2051
2155
  };
2052
2156