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