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