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