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