@entur/dropdown 5.0.0-beta.3 → 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 +29 -19
- package/dist/beta/MultiSelect.d.ts +53 -32
- package/dist/beta/NativeDropdown.d.ts +52 -0
- package/dist/beta/SearchableDropdown.d.ts +26 -17
- package/dist/beta/components/DropdownList.d.ts +10 -10
- package/dist/beta/components/FieldComponents.d.ts +7 -3
- 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 +25 -4
- package/dist/dropdown.cjs.development.js +460 -283
- 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 +460 -283
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/styles.css +53 -30
- 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,33 +1217,49 @@ 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
1265
|
"aria-hidden": "true",
|
|
@@ -1312,13 +1270,14 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
1312
1270
|
},
|
|
1313
1271
|
tabIndex: -1
|
|
1314
1272
|
}), React__default["default"].createElement("span", {
|
|
1315
|
-
className: "eds-dropdown__list__item__text"
|
|
1273
|
+
className: "eds-dropdown__list__item__text",
|
|
1274
|
+
"aria-label": ariaLabelSelectAll()
|
|
1316
1275
|
}, selectAllItem == null ? void 0 : selectAllItem.label));
|
|
1317
1276
|
};
|
|
1318
1277
|
var listItemContent = function listItemContent(item) {
|
|
1319
1278
|
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(form.Checkbox, {
|
|
1320
1279
|
"aria-hidden": "true",
|
|
1321
|
-
checked:
|
|
1280
|
+
checked: isItemSelected(item),
|
|
1322
1281
|
className: "eds-dropdown__list__item__checkbox",
|
|
1323
1282
|
onChange: function onChange() {
|
|
1324
1283
|
return;
|
|
@@ -1329,7 +1288,7 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
1329
1288
|
tabIndex: -1
|
|
1330
1289
|
}), React__default["default"].createElement("span", {
|
|
1331
1290
|
className: "eds-dropdown__list__item__text"
|
|
1332
|
-
}, 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) {
|
|
1333
1292
|
return React__default["default"].createElement(Icon, {
|
|
1334
1293
|
key: index,
|
|
1335
1294
|
inline: true,
|
|
@@ -1338,13 +1297,13 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
1338
1297
|
})));
|
|
1339
1298
|
};
|
|
1340
1299
|
return (
|
|
1341
|
-
// use popover from @entur/tooltip when
|
|
1300
|
+
// use popover from @entur/tooltip when that package upgrades to floating-ui
|
|
1342
1301
|
React__default["default"].createElement("ul", _extends({}, getMenuProps(), {
|
|
1343
1302
|
className: classNames__default["default"]('eds-dropdown__list', {
|
|
1344
1303
|
'eds-dropdown__list--open': isOpen
|
|
1345
1304
|
}),
|
|
1346
1305
|
style: _extends({}, rest.style, listStyle)
|
|
1347
|
-
}),
|
|
1306
|
+
}), listItems.length > 0 && listItems.map(function (item, index) {
|
|
1348
1307
|
var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
|
|
1349
1308
|
if (itemIsSelectAll && listItems.length <= 2) return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
1350
1309
|
return React__default["default"].createElement("li", _extends({
|
|
@@ -1352,21 +1311,148 @@ var DropdownList = function DropdownList(_ref) {
|
|
|
1352
1311
|
className: classNames__default["default"]('eds-dropdown__list__item', {
|
|
1353
1312
|
'eds-dropdown__list__item--select-all': itemIsSelectAll,
|
|
1354
1313
|
'eds-dropdown__list__item--highlighted': highlightedIndex === index,
|
|
1355
|
-
'eds-dropdown__list__item--selected': !isMultiselect &&
|
|
1314
|
+
'eds-dropdown__list__item--selected': !isMultiselect && isItemSelected(item)
|
|
1356
1315
|
})
|
|
1357
1316
|
}, getItemProps({
|
|
1358
1317
|
key: "" + index + item.value,
|
|
1359
1318
|
item: item,
|
|
1360
1319
|
index: index
|
|
1361
1320
|
})), itemIsSelectAll ? selectAllListItemContent() : listItemContent(item));
|
|
1362
|
-
}),
|
|
1321
|
+
}), isNoMatches && React__default["default"].createElement("li", {
|
|
1363
1322
|
className: "eds-dropdown__list__item"
|
|
1364
|
-
}, noMatchesText),
|
|
1323
|
+
}, noMatchesText), loading && React__default["default"].createElement("li", {
|
|
1365
1324
|
className: "eds-dropdown__list__item"
|
|
1366
1325
|
}, loadingText))
|
|
1367
1326
|
);
|
|
1368
1327
|
};
|
|
1369
1328
|
|
|
1329
|
+
var _excluded$4 = ["tabIndex"];
|
|
1330
|
+
var SelectedItemTag = function SelectedItemTag(_ref) {
|
|
1331
|
+
var _getSelectedItemProps;
|
|
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,
|
|
1337
|
+
index = _ref.index,
|
|
1338
|
+
readOnly = _ref.readOnly,
|
|
1339
|
+
removeSelectedItem = _ref.removeSelectedItem,
|
|
1340
|
+
selectedItem = _ref.selectedItem;
|
|
1341
|
+
var _ref2 = (_getSelectedItemProps = getSelectedItemProps == null ? void 0 : getSelectedItemProps({
|
|
1342
|
+
selectedItem: selectedItem,
|
|
1343
|
+
index: index
|
|
1344
|
+
})) != null ? _getSelectedItemProps : {},
|
|
1345
|
+
selectedItemProps = _objectWithoutPropertiesLoose(_ref2, _excluded$4);
|
|
1346
|
+
return React__default["default"].createElement(chip.TagChip, _extends({
|
|
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
|
+
})
|
|
1351
|
+
}, selectedItemProps, {
|
|
1352
|
+
onClose: function onClose(e) {
|
|
1353
|
+
e.stopPropagation();
|
|
1354
|
+
removeSelectedItem(selectedItem);
|
|
1355
|
+
},
|
|
1356
|
+
closeButtonAriaLabel: selectedItem.label + " " + ariaLabelChosen + ", " + ariaLabelRemoveSelected + " ",
|
|
1357
|
+
key: selectedItem.value,
|
|
1358
|
+
"aria-live": "polite"
|
|
1359
|
+
}), React__default["default"].createElement("span", {
|
|
1360
|
+
"aria-hidden": "true"
|
|
1361
|
+
}, selectedItem.label));
|
|
1362
|
+
};
|
|
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,
|
|
1375
|
+
getToggleButtonProps = _ref3.getToggleButtonProps,
|
|
1376
|
+
isOpen = _ref3.isOpen,
|
|
1377
|
+
_ref3$loading = _ref3.loading,
|
|
1378
|
+
loading = _ref3$loading === void 0 ? false : _ref3$loading,
|
|
1379
|
+
_ref3$loadingText = _ref3.loadingText,
|
|
1380
|
+
loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
|
|
1381
|
+
onClear = _ref3.onClear,
|
|
1382
|
+
selectedItems = _ref3.selectedItems;
|
|
1383
|
+
if (loading) {
|
|
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
|
+
}));
|
|
1389
|
+
}
|
|
1390
|
+
if (disabled) {
|
|
1391
|
+
return null;
|
|
1392
|
+
}
|
|
1393
|
+
return React__default["default"].createElement("div", {
|
|
1394
|
+
className: "eds-dropdown-appendix"
|
|
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, {
|
|
1396
|
+
onClear: onClear,
|
|
1397
|
+
focusable: true,
|
|
1398
|
+
labelClearSelectedItems: labelClearSelectedItems
|
|
1399
|
+
}), React__default["default"].createElement("div", {
|
|
1400
|
+
className: "eds-dropdown-appendix__divider"
|
|
1401
|
+
})), React__default["default"].createElement(ToggleButton, {
|
|
1402
|
+
"aria-hidden": ariaHiddenToggleButton,
|
|
1403
|
+
ariaLabelCloseList: ariaLabelCloseList,
|
|
1404
|
+
ariaLabelOpenList: ariaLabelOpenList,
|
|
1405
|
+
getToggleButtonProps: getToggleButtonProps,
|
|
1406
|
+
isOpen: isOpen,
|
|
1407
|
+
focusable: focusable
|
|
1408
|
+
}));
|
|
1409
|
+
};
|
|
1410
|
+
var ClearableButton = function ClearableButton(_ref4) {
|
|
1411
|
+
var onClear = _ref4.onClear,
|
|
1412
|
+
_ref4$labelClearSelec = _ref4.labelClearSelectedItems,
|
|
1413
|
+
labelClearSelectedItems = _ref4$labelClearSelec === void 0 ? 'Fjern valgte' : _ref4$labelClearSelec,
|
|
1414
|
+
_ref4$focusable = _ref4.focusable,
|
|
1415
|
+
focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
|
|
1416
|
+
return React__default["default"].createElement(tooltip.Tooltip, {
|
|
1417
|
+
"aria-hidden": "true",
|
|
1418
|
+
placement: "right",
|
|
1419
|
+
content: labelClearSelectedItems
|
|
1420
|
+
}, React__default["default"].createElement(button.IconButton, {
|
|
1421
|
+
className: "eds-dropdown-appendix__clear-button",
|
|
1422
|
+
type: "button",
|
|
1423
|
+
tabIndex: focusable ? 0 : 1,
|
|
1424
|
+
onClick: onClear,
|
|
1425
|
+
"aria-label": labelClearSelectedItems
|
|
1426
|
+
}, React__default["default"].createElement(icons.CloseSmallIcon, {
|
|
1427
|
+
"aria-hidden": "true"
|
|
1428
|
+
})));
|
|
1429
|
+
};
|
|
1430
|
+
var ToggleButton = function ToggleButton(_ref5) {
|
|
1431
|
+
var getToggleButtonProps = _ref5.getToggleButtonProps,
|
|
1432
|
+
isOpen = _ref5.isOpen,
|
|
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,
|
|
1439
|
+
_ref5$focusable = _ref5.focusable,
|
|
1440
|
+
focusable = _ref5$focusable === void 0 ? false : _ref5$focusable;
|
|
1441
|
+
return React__default["default"].createElement(button.IconButton, _extends({}, getToggleButtonProps({
|
|
1442
|
+
className: classNames__default["default"]('eds-dropdown-appendix__toggle-button', {
|
|
1443
|
+
'eds-dropdown-appendix__toggle-button--open': isOpen
|
|
1444
|
+
})
|
|
1445
|
+
}), {
|
|
1446
|
+
"aria-hidden": ariaHidden,
|
|
1447
|
+
"aria-label": isOpen ? ariaLabelCloseList : ariaLabelOpenList,
|
|
1448
|
+
tabIndex: focusable ? 0 : -1,
|
|
1449
|
+
type: "button"
|
|
1450
|
+
}), React__default["default"].createElement(icons.DownArrowIcon, {
|
|
1451
|
+
"aria-hidden": "true"
|
|
1452
|
+
}));
|
|
1453
|
+
};
|
|
1454
|
+
|
|
1455
|
+
/* start general utils */
|
|
1370
1456
|
var EMPTY_INPUT = '';
|
|
1371
1457
|
function lowerCaseFilterTest(item, input) {
|
|
1372
1458
|
if (!input) {
|
|
@@ -1382,10 +1468,10 @@ var itemToString = function itemToString(item) {
|
|
|
1382
1468
|
var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
1383
1469
|
var listItems = _ref.listItems,
|
|
1384
1470
|
selectedItems = _ref.selectedItems,
|
|
1385
|
-
|
|
1471
|
+
selectAll = _ref.selectAll;
|
|
1386
1472
|
var hasSelectedItems = selectedItems.length > 0;
|
|
1387
1473
|
var listItemsWithoutSelectAll = listItems.filter(function (item) {
|
|
1388
|
-
return item.value !==
|
|
1474
|
+
return item.value !== selectAll.value;
|
|
1389
1475
|
});
|
|
1390
1476
|
var allListItemsAreSelected = listItemsWithoutSelectAll.filter(function (item) {
|
|
1391
1477
|
return !selectedItems.includes(item);
|
|
@@ -1402,18 +1488,21 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
|
1402
1488
|
});
|
|
1403
1489
|
};
|
|
1404
1490
|
var clickedItemIsSelectAll = function clickedItemIsSelectAll(clickedItem) {
|
|
1405
|
-
return clickedItem.value ===
|
|
1491
|
+
return clickedItem.value === selectAll.value;
|
|
1406
1492
|
};
|
|
1407
1493
|
var handleListItemClicked = function handleListItemClicked(_ref2) {
|
|
1408
1494
|
var clickedItem = _ref2.clickedItem,
|
|
1409
|
-
onChange = _ref2.onChange
|
|
1495
|
+
onChange = _ref2.onChange,
|
|
1496
|
+
setLastRemovedItem = _ref2.setLastRemovedItem;
|
|
1410
1497
|
if (clickedItemIsSelectAll(clickedItem)) {
|
|
1411
1498
|
if (allListItemsAreSelected) {
|
|
1499
|
+
setLastRemovedItem(selectAll);
|
|
1412
1500
|
return unselectAllListItems(onChange);
|
|
1413
1501
|
}
|
|
1414
1502
|
return selectAllUnselectedItemsInListItems(onChange);
|
|
1415
1503
|
}
|
|
1416
1504
|
if (clickedItemIsInSelectedItems(clickedItem)) {
|
|
1505
|
+
setLastRemovedItem(clickedItem);
|
|
1417
1506
|
return removeClickedItemFromSelectedItems(clickedItem, onChange);
|
|
1418
1507
|
}
|
|
1419
1508
|
addClickedItemToSelectedItems(clickedItem, onChange);
|
|
@@ -1453,125 +1542,63 @@ var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
|
1453
1542
|
unselectAllListItems: unselectAllListItems
|
|
1454
1543
|
};
|
|
1455
1544
|
};
|
|
1456
|
-
|
|
1457
|
-
var
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
selectedItem = _ref.selectedItem;
|
|
1467
|
-
var _ref2 = (_getSelectedItemProps = getSelectedItemProps == null ? void 0 : getSelectedItemProps({
|
|
1468
|
-
selectedItem: selectedItem,
|
|
1469
|
-
index: index
|
|
1470
|
-
})) != null ? _getSelectedItemProps : {},
|
|
1471
|
-
selectedItemProps = _objectWithoutPropertiesLoose(_ref2, _excluded$3);
|
|
1472
|
-
return React__default["default"].createElement(chip.TagChip, _extends({
|
|
1473
|
-
className: classNames__default["default"]('eds-dropdown__selected-item-tag', {
|
|
1474
|
-
'eds-dropdown__selected-item-tag--readonly': readOnly,
|
|
1475
|
-
'eds-dropdown__selected-item-tag--disabled': disabled
|
|
1476
|
-
})
|
|
1477
|
-
}, selectedItemProps, {
|
|
1478
|
-
onClose: function onClose(e) {
|
|
1479
|
-
e.stopPropagation();
|
|
1480
|
-
removeSelectedItem(selectedItem);
|
|
1481
|
-
},
|
|
1482
|
-
closeButtonAriaLabel: selectedItem.label + ", " + ariaLabelRemoveSelected + " ",
|
|
1483
|
-
key: selectedItem.value
|
|
1484
|
-
}), React__default["default"].createElement("span", {
|
|
1485
|
-
"aria-hidden": "true"
|
|
1486
|
-
}, selectedItem.label));
|
|
1487
|
-
};
|
|
1488
|
-
var FieldAppend = function FieldAppend(_ref3) {
|
|
1489
|
-
var _ref3$clearable = _ref3.clearable,
|
|
1490
|
-
clearable = _ref3$clearable === void 0 ? false : _ref3$clearable,
|
|
1491
|
-
clearSelectedItemsLabel = _ref3.clearSelectedItemsLabel,
|
|
1492
|
-
_ref3$disabled = _ref3.disabled,
|
|
1493
|
-
disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
|
|
1494
|
-
_ref3$focusable = _ref3.focusable,
|
|
1495
|
-
focusable = _ref3$focusable === void 0 ? false : _ref3$focusable,
|
|
1496
|
-
getToggleButtonProps = _ref3.getToggleButtonProps,
|
|
1497
|
-
isOpen = _ref3.isOpen,
|
|
1498
|
-
_ref3$loading = _ref3.loading,
|
|
1499
|
-
loading = _ref3$loading === void 0 ? false : _ref3$loading,
|
|
1500
|
-
_ref3$loadingText = _ref3.loadingText,
|
|
1501
|
-
loadingText = _ref3$loadingText === void 0 ? 'Laster resultater …' : _ref3$loadingText,
|
|
1502
|
-
onClear = _ref3.onClear,
|
|
1503
|
-
selectedItems = _ref3.selectedItems;
|
|
1504
|
-
if (loading) {
|
|
1505
|
-
return React__default["default"].createElement(DropdownLoadingDots, null, loadingText);
|
|
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 '';
|
|
1506
1555
|
}
|
|
1507
|
-
|
|
1508
|
-
|
|
1556
|
+
var resultCountWithoutSelectAll = selectAllItemIncluded ? resultCount - 1 : resultCount;
|
|
1557
|
+
if (resultCountWithoutSelectAll === 0) {
|
|
1558
|
+
return ariaLabelNoResults;
|
|
1509
1559
|
}
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
onClick: onClear,
|
|
1542
|
-
"aria-label": clearSelectedItemsLabel
|
|
1543
|
-
}, React__default["default"].createElement(icons.CloseSmallIcon, {
|
|
1544
|
-
"aria-hidden": "true"
|
|
1545
|
-
})));
|
|
1546
|
-
};
|
|
1547
|
-
var ToggleButton = function ToggleButton(_ref5) {
|
|
1548
|
-
var getToggleButtonProps = _ref5.getToggleButtonProps,
|
|
1549
|
-
isOpen = _ref5.isOpen,
|
|
1550
|
-
_ref5$closeAriaLabel = _ref5.closeAriaLabel,
|
|
1551
|
-
closeAriaLabel = _ref5$closeAriaLabel === void 0 ? 'Lukk liste med valg' : _ref5$closeAriaLabel,
|
|
1552
|
-
_ref5$openAriaLabel = _ref5.openAriaLabel,
|
|
1553
|
-
openAriaLabel = _ref5$openAriaLabel === void 0 ? 'Åpne liste med valg' : _ref5$openAriaLabel,
|
|
1554
|
-
_ref5$focusable = _ref5.focusable,
|
|
1555
|
-
focusable = _ref5$focusable === void 0 ? false : _ref5$focusable;
|
|
1556
|
-
return React__default["default"].createElement(button.IconButton, _extends({}, getToggleButtonProps({
|
|
1557
|
-
className: classNames__default["default"]('eds-dropdown-appendix__toggle-button', {
|
|
1558
|
-
'eds-dropdown-appendix__toggle-button--open': isOpen
|
|
1559
|
-
})
|
|
1560
|
-
}), {
|
|
1561
|
-
"aria-label": isOpen ? closeAriaLabel : openAriaLabel,
|
|
1562
|
-
tabIndex: focusable ? 0 : -1,
|
|
1563
|
-
type: "button"
|
|
1564
|
-
}), React__default["default"].createElement(icons.DownArrowIcon, {
|
|
1565
|
-
"aria-hidden": "true"
|
|
1566
|
-
}));
|
|
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;
|
|
1567
1591
|
};
|
|
1592
|
+
/* end a11y utils */
|
|
1568
1593
|
|
|
1569
|
-
var _excluded$
|
|
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"];
|
|
1570
1595
|
var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
1571
1596
|
var _selectedItem$label;
|
|
1572
|
-
var
|
|
1597
|
+
var ariaLabelCloseList = _ref.ariaLabelCloseList,
|
|
1598
|
+
ariaLabelOpenList = _ref.ariaLabelOpenList,
|
|
1599
|
+
className = _ref.className,
|
|
1573
1600
|
_ref$clearable = _ref.clearable,
|
|
1574
|
-
clearable = _ref$clearable === void 0 ?
|
|
1601
|
+
clearable = _ref$clearable === void 0 ? true : _ref$clearable,
|
|
1575
1602
|
debounceTimeout = _ref.debounceTimeout,
|
|
1576
1603
|
_ref$disabled = _ref.disabled,
|
|
1577
1604
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
@@ -1582,11 +1609,11 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1582
1609
|
itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
|
|
1583
1610
|
initialItems = _ref.items,
|
|
1584
1611
|
label = _ref.label,
|
|
1612
|
+
_ref$labelClearSelect = _ref.labelClearSelectedItem,
|
|
1613
|
+
labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
|
|
1585
1614
|
listStyle = _ref.listStyle,
|
|
1586
1615
|
loadingText = _ref.loadingText,
|
|
1587
1616
|
onChange = _ref.onChange,
|
|
1588
|
-
_ref$openOnFocus = _ref.openOnFocus,
|
|
1589
|
-
openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
|
|
1590
1617
|
placeholder = _ref.placeholder,
|
|
1591
1618
|
prepend = _ref.prepend,
|
|
1592
1619
|
_ref$readOnly = _ref.readOnly,
|
|
@@ -1597,7 +1624,7 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1597
1624
|
style = _ref.style,
|
|
1598
1625
|
_ref$variant = _ref.variant,
|
|
1599
1626
|
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
1600
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
1627
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
1601
1628
|
var _useState = React.useState(false),
|
|
1602
1629
|
hideSelectedItem = _useState[0],
|
|
1603
1630
|
setHideSelectedItem = _useState[1];
|
|
@@ -1637,6 +1664,7 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1637
1664
|
setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
|
|
1638
1665
|
}
|
|
1639
1666
|
switch (type) {
|
|
1667
|
+
// empty input to show selected item and reset dropdown list on item selection
|
|
1640
1668
|
case Downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
1641
1669
|
case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
1642
1670
|
case Downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
@@ -1646,21 +1674,21 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1646
1674
|
inputValue: EMPTY_INPUT
|
|
1647
1675
|
});
|
|
1648
1676
|
return _extends({}, changes, {
|
|
1649
|
-
inputValue: EMPTY_INPUT
|
|
1677
|
+
inputValue: EMPTY_INPUT
|
|
1650
1678
|
});
|
|
1651
1679
|
}
|
|
1652
|
-
|
|
1680
|
+
// remove leading whitespace, select element with spacebar on empty input, and filter list based on input
|
|
1653
1681
|
case Downshift.useCombobox.stateChangeTypes.InputChange:
|
|
1654
1682
|
{
|
|
1655
1683
|
var _changes$inputValue;
|
|
1656
1684
|
var leadingWhitespaceTest = /^\s+/g;
|
|
1657
|
-
var isSpacePressedOnEmptyInput = changes.inputValue
|
|
1685
|
+
var isSpacePressedOnEmptyInput = changes.inputValue === ' ';
|
|
1658
1686
|
if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(leadingWhitespaceTest)) {
|
|
1659
1687
|
setInputValue(changes.inputValue.replace(leadingWhitespaceTest, EMPTY_INPUT));
|
|
1660
1688
|
if (isSpacePressedOnEmptyInput) {
|
|
1661
1689
|
openMenu();
|
|
1662
1690
|
if (isOpen && changes.highlightedIndex !== undefined) {
|
|
1663
|
-
onChange(listItems[changes.highlightedIndex]);
|
|
1691
|
+
onChange == null ? void 0 : onChange(listItems[changes.highlightedIndex]);
|
|
1664
1692
|
}
|
|
1665
1693
|
}
|
|
1666
1694
|
} else {
|
|
@@ -1689,8 +1717,15 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1689
1717
|
if (!selectOnBlur) break;
|
|
1690
1718
|
case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
|
|
1691
1719
|
case Downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
1692
|
-
onChange(clickedItem != null ? clickedItem : null);
|
|
1720
|
+
onChange == null ? void 0 : onChange(clickedItem != null ? clickedItem : null);
|
|
1693
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);
|
|
1694
1729
|
}
|
|
1695
1730
|
}, rest)),
|
|
1696
1731
|
isOpen = _useCombobox.isOpen,
|
|
@@ -1699,7 +1734,6 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1699
1734
|
getLabelProps = _useCombobox.getLabelProps,
|
|
1700
1735
|
getMenuProps = _useCombobox.getMenuProps,
|
|
1701
1736
|
getInputProps = _useCombobox.getInputProps,
|
|
1702
|
-
getComboboxProps = _useCombobox.getComboboxProps,
|
|
1703
1737
|
highlightedIndex = _useCombobox.highlightedIndex,
|
|
1704
1738
|
getItemProps = _useCombobox.getItemProps,
|
|
1705
1739
|
selectedItem = _useCombobox.selectedItem,
|
|
@@ -1707,7 +1741,7 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1707
1741
|
setInputValue = _useCombobox.setInputValue;
|
|
1708
1742
|
var handleOnClear = function handleOnClear() {
|
|
1709
1743
|
var _inputRef$current;
|
|
1710
|
-
onChange(null);
|
|
1744
|
+
onChange == null ? void 0 : onChange(null);
|
|
1711
1745
|
setInputValue(EMPTY_INPUT);
|
|
1712
1746
|
(_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
|
|
1713
1747
|
updateListItems({
|
|
@@ -1717,9 +1751,11 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1717
1751
|
return React__default["default"].createElement("div", {
|
|
1718
1752
|
className: "eds-dropdown__wrapper"
|
|
1719
1753
|
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
1720
|
-
append: React__default["default"].createElement(FieldAppend, {
|
|
1754
|
+
append: React__default["default"].createElement(FieldAppend$1, {
|
|
1755
|
+
ariaLabelCloseList: ariaLabelCloseList,
|
|
1756
|
+
ariaLabelOpenList: ariaLabelOpenList,
|
|
1721
1757
|
clearable: clearable,
|
|
1722
|
-
|
|
1758
|
+
labelClearSelectedItems: labelClearSelectedItem,
|
|
1723
1759
|
disabled: readOnly || disabled,
|
|
1724
1760
|
focusable: false,
|
|
1725
1761
|
getToggleButtonProps: getToggleButtonProps,
|
|
@@ -1733,15 +1769,17 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1733
1769
|
disabled: disabled,
|
|
1734
1770
|
disableLabelAnimation: disableLabelAnimation,
|
|
1735
1771
|
feedback: feedback,
|
|
1736
|
-
isFilled: selectedItem || inputValue !== EMPTY_INPUT,
|
|
1772
|
+
isFilled: selectedItem !== null || inputValue !== EMPTY_INPUT,
|
|
1737
1773
|
label: label,
|
|
1774
|
+
labelId: getLabelProps().id,
|
|
1738
1775
|
labelProps: getLabelProps(),
|
|
1739
1776
|
prepend: prepend,
|
|
1740
1777
|
readOnly: readOnly,
|
|
1741
1778
|
style: style,
|
|
1742
1779
|
variant: variant
|
|
1743
|
-
},
|
|
1744
|
-
className: "eds-dropdown__selected-item__wrapper"
|
|
1780
|
+
}, rest), !hideSelectedItem && selectedItem && !inputValue && React__default["default"].createElement("span", {
|
|
1781
|
+
className: "eds-dropdown__selected-item__wrapper",
|
|
1782
|
+
"aria-hidden": "true"
|
|
1745
1783
|
}, React__default["default"].createElement("span", {
|
|
1746
1784
|
className: "eds-dropdown__selected-item",
|
|
1747
1785
|
onClick: function onClick() {
|
|
@@ -1753,11 +1791,13 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1753
1791
|
disabled: readOnly || disabled,
|
|
1754
1792
|
placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder
|
|
1755
1793
|
}, getInputProps({
|
|
1794
|
+
onClick: function onClick(e) {
|
|
1795
|
+
if (!isOpen && isVoiceOverClick(e)) openMenu();
|
|
1796
|
+
},
|
|
1756
1797
|
onBlur: function onBlur() {
|
|
1757
1798
|
setHideSelectedItem(false);
|
|
1758
1799
|
},
|
|
1759
1800
|
onFocus: function onFocus() {
|
|
1760
|
-
if (!isOpen && openOnFocus) openMenu();
|
|
1761
1801
|
setHideSelectedItem(true);
|
|
1762
1802
|
},
|
|
1763
1803
|
ref: inputRef
|
|
@@ -1774,15 +1814,11 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1774
1814
|
}));
|
|
1775
1815
|
};
|
|
1776
1816
|
|
|
1777
|
-
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"];
|
|
1778
1818
|
var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
1779
|
-
var
|
|
1780
|
-
allItemsSelectedLabel = _ref$allItemsSelected === void 0 ? 'Alle valgt' : _ref$allItemsSelected,
|
|
1781
|
-
_ref$ariaLabelRemoveS = _ref.ariaLabelRemoveSelected,
|
|
1782
|
-
ariaLabelRemoveSelected = _ref$ariaLabelRemoveS === void 0 ? 'trykk for å fjerne valg' : _ref$ariaLabelRemoveS,
|
|
1783
|
-
className = _ref.className,
|
|
1819
|
+
var className = _ref.className,
|
|
1784
1820
|
_ref$clearable = _ref.clearable,
|
|
1785
|
-
clearable = _ref$clearable === void 0 ?
|
|
1821
|
+
clearable = _ref$clearable === void 0 ? true : _ref$clearable,
|
|
1786
1822
|
_ref$clearInputOnSele = _ref.clearInputOnSelect,
|
|
1787
1823
|
clearInputOnSelect = _ref$clearInputOnSele === void 0 ? false : _ref$clearInputOnSele,
|
|
1788
1824
|
_ref$disabled = _ref.disabled,
|
|
@@ -1792,46 +1828,65 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1792
1828
|
hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
|
|
1793
1829
|
initialItems = _ref.items,
|
|
1794
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,
|
|
1795
1837
|
listStyle = _ref.listStyle,
|
|
1796
1838
|
loadingText = _ref.loadingText,
|
|
1797
1839
|
_ref$maxTags = _ref.maxTags,
|
|
1798
1840
|
maxTags = _ref$maxTags === void 0 ? 10 : _ref$maxTags,
|
|
1799
|
-
onChange = _ref.onChange,
|
|
1800
|
-
_ref$
|
|
1801
|
-
|
|
1841
|
+
_ref$onChange = _ref.onChange,
|
|
1842
|
+
onChange = _ref$onChange === void 0 ? function () {
|
|
1843
|
+
return undefined;
|
|
1844
|
+
} : _ref$onChange,
|
|
1802
1845
|
placeholder = _ref.placeholder,
|
|
1803
1846
|
_ref$readOnly = _ref.readOnly,
|
|
1804
1847
|
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
1805
|
-
_ref$clearAllItemsAri = _ref.clearAllItemsAriaLabel,
|
|
1806
|
-
clearAllItemsAriaLabel = _ref$clearAllItemsAri === void 0 ? 'Fjern valgte' : _ref$clearAllItemsAri,
|
|
1807
|
-
_ref$selectAllLabel = _ref.selectAllLabel,
|
|
1808
|
-
selectAllLabel = _ref$selectAllLabel === void 0 ? 'Velg alle' : _ref$selectAllLabel,
|
|
1809
1848
|
selectedItems = _ref.selectedItems,
|
|
1810
1849
|
_ref$selectOnBlur = _ref.selectOnBlur,
|
|
1811
1850
|
selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
|
|
1812
1851
|
style = _ref.style,
|
|
1813
1852
|
_ref$variant = _ref.variant,
|
|
1814
1853
|
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
1815
|
-
|
|
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);
|
|
1816
1865
|
var _React$useState = React__default["default"].useState(0),
|
|
1817
1866
|
lastHighlightedIndex = _React$useState[0],
|
|
1818
1867
|
setLastHighlightedIndex = _React$useState[1];
|
|
1868
|
+
var _React$useState2 = React__default["default"].useState(undefined),
|
|
1869
|
+
lastRemovedItem = _React$useState2[0],
|
|
1870
|
+
setLastRemovedItem = _React$useState2[1];
|
|
1819
1871
|
var inputRef = React.useRef(null);
|
|
1820
1872
|
var _useResolvedItems = useResolvedItems(initialItems),
|
|
1821
1873
|
normalizedItems = _useResolvedItems.items,
|
|
1822
1874
|
loading = _useResolvedItems.loading,
|
|
1823
1875
|
fetchItems = _useResolvedItems.fetchItems;
|
|
1824
1876
|
var isAllNonAsyncItemsSelected = typeof initialItems !== 'function' && selectedItems.length === normalizedItems.length;
|
|
1877
|
+
// special 'item' used as Select All entry in the dropdown list
|
|
1825
1878
|
var selectAll = {
|
|
1826
1879
|
value: utils.useRandomId('select-all'),
|
|
1827
|
-
label:
|
|
1880
|
+
label: labelSelectAll
|
|
1828
1881
|
};
|
|
1882
|
+
// special 'item' used as a replacement selected item tag for when
|
|
1883
|
+
// there are more selected element than maxTags
|
|
1829
1884
|
var summarySelectedItems = React__default["default"].useMemo(function () {
|
|
1830
1885
|
return {
|
|
1831
1886
|
value: EMPTY_INPUT,
|
|
1832
|
-
label: isAllNonAsyncItemsSelected ?
|
|
1887
|
+
label: isAllNonAsyncItemsSelected ? labelAllItemsSelected : selectedItems.length + ' ' + ariaLabelChosenPlural
|
|
1833
1888
|
};
|
|
1834
|
-
}, [isAllNonAsyncItemsSelected, selectedItems,
|
|
1889
|
+
}, [isAllNonAsyncItemsSelected, selectedItems, labelAllItemsSelected]);
|
|
1835
1890
|
var _useState = React.useState([].concat(!hideSelectAll ? [selectAll] : [], normalizedItems)),
|
|
1836
1891
|
listItems = _useState[0],
|
|
1837
1892
|
setListItems = _useState[1];
|
|
@@ -1853,25 +1908,27 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1853
1908
|
inputValue: inputValue
|
|
1854
1909
|
});
|
|
1855
1910
|
}, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
1856
|
-
var _useMultipleSelection = Downshift.useMultipleSelection({
|
|
1857
|
-
selectedItems: selectedItems,
|
|
1858
|
-
itemToString: itemToString,
|
|
1859
|
-
onSelectedItemsChange: function onSelectedItemsChange(changes) {
|
|
1860
|
-
var _changes$selectedItem;
|
|
1861
|
-
onChange((_changes$selectedItem = changes.selectedItems) != null ? _changes$selectedItem : []);
|
|
1862
|
-
}
|
|
1863
|
-
}),
|
|
1864
|
-
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
1865
|
-
getDropdownProps = _useMultipleSelection.getDropdownProps,
|
|
1866
|
-
removeSelectedItem = _useMultipleSelection.removeSelectedItem;
|
|
1867
1911
|
var _useMultiselectUtils = useMultiselectUtils({
|
|
1868
1912
|
listItems: listItems,
|
|
1869
|
-
|
|
1913
|
+
selectAll: selectAll,
|
|
1870
1914
|
selectedItems: selectedItems
|
|
1871
1915
|
}),
|
|
1872
1916
|
hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
|
|
1873
1917
|
handleListItemClicked = _useMultiselectUtils.handleListItemClicked,
|
|
1874
1918
|
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState;
|
|
1919
|
+
var _useMultipleSelection = Downshift.useMultipleSelection({
|
|
1920
|
+
selectedItems: selectedItems,
|
|
1921
|
+
itemToString: itemToString,
|
|
1922
|
+
// Accessibility
|
|
1923
|
+
getA11yRemovalMessage: function getA11yRemovalMessage$1(options) {
|
|
1924
|
+
return getA11yRemovalMessage(_extends({}, options, {
|
|
1925
|
+
selectAllItem: selectAll,
|
|
1926
|
+
removedItem: lastRemovedItem
|
|
1927
|
+
}));
|
|
1928
|
+
}
|
|
1929
|
+
}),
|
|
1930
|
+
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
1931
|
+
getDropdownProps = _useMultipleSelection.getDropdownProps;
|
|
1875
1932
|
var stateReducer = React__default["default"].useCallback(function (_, _ref4) {
|
|
1876
1933
|
var changes = _ref4.changes,
|
|
1877
1934
|
type = _ref4.type;
|
|
@@ -1879,6 +1936,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1879
1936
|
setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
|
|
1880
1937
|
}
|
|
1881
1938
|
switch (type) {
|
|
1939
|
+
// keep menu open and edit input value on item selection
|
|
1882
1940
|
case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
1883
1941
|
case Downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
1884
1942
|
{
|
|
@@ -1893,6 +1951,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1893
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
|
|
1894
1952
|
});
|
|
1895
1953
|
}
|
|
1954
|
+
// edit input value when selected items is updated outside component
|
|
1896
1955
|
case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1897
1956
|
{
|
|
1898
1957
|
var _inputRef$current$val2, _inputRef$current2;
|
|
@@ -1900,6 +1959,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1900
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
|
|
1901
1960
|
});
|
|
1902
1961
|
}
|
|
1962
|
+
// remove leading whitespace, select item with spacebar if input is empty and filter list items
|
|
1903
1963
|
case Downshift.useCombobox.stateChangeTypes.InputChange:
|
|
1904
1964
|
{
|
|
1905
1965
|
var _changes$inputValue;
|
|
@@ -1909,10 +1969,11 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1909
1969
|
setInputValue(changes.inputValue.replace(leadingWhitespaceTest, EMPTY_INPUT));
|
|
1910
1970
|
if (isSpacePressedOnEmptyInput) {
|
|
1911
1971
|
openMenu();
|
|
1912
|
-
if (isOpen && changes.highlightedIndex) {
|
|
1972
|
+
if (isOpen && changes.highlightedIndex !== undefined) {
|
|
1913
1973
|
handleListItemClicked({
|
|
1914
1974
|
clickedItem: listItems[changes.highlightedIndex],
|
|
1915
|
-
onChange: onChange
|
|
1975
|
+
onChange: onChange,
|
|
1976
|
+
setLastRemovedItem: setLastRemovedItem
|
|
1916
1977
|
});
|
|
1917
1978
|
}
|
|
1918
1979
|
}
|
|
@@ -1923,6 +1984,7 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1923
1984
|
}
|
|
1924
1985
|
return changes;
|
|
1925
1986
|
}
|
|
1987
|
+
// reset input value when leaving input field
|
|
1926
1988
|
case Downshift.useCombobox.stateChangeTypes.InputBlur:
|
|
1927
1989
|
{
|
|
1928
1990
|
return _extends({}, changes, {
|
|
@@ -1950,14 +2012,29 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1950
2012
|
if (!selectOnBlur) break;
|
|
1951
2013
|
case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
|
|
1952
2014
|
case Downshift.useCombobox.stateChangeTypes.ItemClick:
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
2015
|
+
{
|
|
2016
|
+
handleListItemClicked({
|
|
2017
|
+
clickedItem: clickedItem,
|
|
2018
|
+
onChange: onChange,
|
|
2019
|
+
setLastRemovedItem: setLastRemovedItem
|
|
2020
|
+
});
|
|
2021
|
+
}
|
|
1957
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
|
+
}));
|
|
1958
2036
|
}
|
|
1959
2037
|
}, rest)),
|
|
1960
|
-
getComboboxProps = _useCombobox.getComboboxProps,
|
|
1961
2038
|
getInputProps = _useCombobox.getInputProps,
|
|
1962
2039
|
getItemProps = _useCombobox.getItemProps,
|
|
1963
2040
|
getLabelProps = _useCombobox.getLabelProps,
|
|
@@ -1977,18 +2054,16 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
1977
2054
|
inputValue: inputValue
|
|
1978
2055
|
});
|
|
1979
2056
|
};
|
|
1980
|
-
// role=combobox leads to strange VoiceOver behavior and is therefor omitted
|
|
1981
|
-
// const { role: _, ...comboboxProps } = getComboboxProps();
|
|
1982
|
-
var _getComboboxProps = getComboboxProps(),
|
|
1983
|
-
comboboxProps = _extends({}, (_objectDestructuringEmpty(_getComboboxProps), _getComboboxProps));
|
|
1984
2057
|
return React__default["default"].createElement("div", {
|
|
1985
2058
|
className: "eds-dropdown__wrapper"
|
|
1986
2059
|
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
1987
|
-
append: React__default["default"].createElement(FieldAppend, {
|
|
2060
|
+
append: React__default["default"].createElement(FieldAppend$1, {
|
|
2061
|
+
ariaLabelCloseList: ariaLabelCloseList,
|
|
2062
|
+
ariaLabelOpenList: ariaLabelOpenList,
|
|
1988
2063
|
selectedItems: selectedItems,
|
|
1989
2064
|
isOpen: isOpen,
|
|
1990
2065
|
clearable: clearable,
|
|
1991
|
-
|
|
2066
|
+
labelClearSelectedItems: labelClearAllItems,
|
|
1992
2067
|
focusable: false,
|
|
1993
2068
|
loading: loading,
|
|
1994
2069
|
loadingText: loadingText,
|
|
@@ -2001,13 +2076,12 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
2001
2076
|
feedback: feedback,
|
|
2002
2077
|
isFilled: hasSelectedItems || inputValue !== EMPTY_INPUT,
|
|
2003
2078
|
label: label,
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
}, getLabelProps()),
|
|
2079
|
+
labelId: getLabelProps().id,
|
|
2080
|
+
labelProps: getLabelProps(),
|
|
2007
2081
|
readOnly: readOnly,
|
|
2008
2082
|
style: style,
|
|
2009
2083
|
variant: variant
|
|
2010
|
-
},
|
|
2084
|
+
}, rest), React__default["default"].createElement("div", {
|
|
2011
2085
|
className: classNames__default["default"]('eds-dropdown__selected-items-and-input', {
|
|
2012
2086
|
'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
|
|
2013
2087
|
}),
|
|
@@ -2015,19 +2089,34 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
2015
2089
|
var _inputRef$current4;
|
|
2016
2090
|
if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
|
|
2017
2091
|
}
|
|
2018
|
-
}, 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) {
|
|
2019
2098
|
return React__default["default"].createElement(SelectedItemTag, {
|
|
2099
|
+
ariaLabelChosen: ariaLabelChosenSingular,
|
|
2020
2100
|
ariaLabelRemoveSelected: ariaLabelRemoveSelected,
|
|
2021
2101
|
disabled: disabled,
|
|
2022
2102
|
getSelectedItemProps: getSelectedItemProps,
|
|
2023
2103
|
index: index,
|
|
2024
2104
|
key: selectedItem.value,
|
|
2025
2105
|
readOnly: readOnly,
|
|
2026
|
-
removeSelectedItem: removeSelectedItem
|
|
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
|
+
},
|
|
2027
2115
|
selectedItem: selectedItem
|
|
2028
2116
|
});
|
|
2029
|
-
}) : React__default["default"].createElement(SelectedItemTag, {
|
|
2030
|
-
ariaLabelRemoveSelected:
|
|
2117
|
+
})) : React__default["default"].createElement(SelectedItemTag, {
|
|
2118
|
+
ariaLabelRemoveSelected: labelClearAllItems,
|
|
2119
|
+
ariaLabelChosen: "",
|
|
2031
2120
|
disabled: disabled,
|
|
2032
2121
|
readOnly: readOnly,
|
|
2033
2122
|
removeSelectedItem: handleOnClear,
|
|
@@ -2035,13 +2124,12 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
2035
2124
|
}), React__default["default"].createElement("input", _extends({
|
|
2036
2125
|
placeholder: placeholder,
|
|
2037
2126
|
className: "eds-dropdown__input eds-form-control",
|
|
2038
|
-
disabled: readOnly || disabled
|
|
2039
|
-
role: "combobox" // eslint-disable-line jsx-a11y/role-has-required-aria-props
|
|
2127
|
+
disabled: readOnly || disabled
|
|
2040
2128
|
}, getInputProps(getDropdownProps({
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
if (!isOpen && openOnFocus) openMenu();
|
|
2129
|
+
onClick: function onClick(e) {
|
|
2130
|
+
if (!isOpen && isVoiceOverClick(e)) openMenu();
|
|
2044
2131
|
},
|
|
2132
|
+
preventKeyAction: isOpen,
|
|
2045
2133
|
ref: inputRef,
|
|
2046
2134
|
value: inputValue != null ? inputValue : EMPTY_INPUT
|
|
2047
2135
|
})))))), React__default["default"].createElement(DropdownList, {
|
|
@@ -2060,17 +2148,20 @@ var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
|
2060
2148
|
}));
|
|
2061
2149
|
};
|
|
2062
2150
|
|
|
2063
|
-
var _excluded = ["className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "
|
|
2151
|
+
var _excluded$1 = ["ariaLabelCloseList", "ariaLabelOpenList", "className", "clearable", "disabled", "disableLabelAnimation", "feedback", "items", "label", "labelClearSelectedItem", "listStyle", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "selectedItem", "selectOnBlur", "style", "variant"];
|
|
2064
2152
|
var DropdownBeta = function DropdownBeta(_ref) {
|
|
2065
2153
|
var _ref3, _selectedItem$label;
|
|
2066
|
-
var
|
|
2154
|
+
var ariaLabelCloseList = _ref.ariaLabelCloseList,
|
|
2155
|
+
ariaLabelOpenList = _ref.ariaLabelOpenList,
|
|
2156
|
+
className = _ref.className,
|
|
2067
2157
|
_ref$disabled = _ref.disabled,
|
|
2068
2158
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
2069
2159
|
disableLabelAnimation = _ref.disableLabelAnimation,
|
|
2070
2160
|
feedback = _ref.feedback,
|
|
2071
2161
|
initialItems = _ref.items,
|
|
2072
2162
|
label = _ref.label,
|
|
2073
|
-
|
|
2163
|
+
_ref$labelClearSelect = _ref.labelClearSelectedItem,
|
|
2164
|
+
labelClearSelectedItem = _ref$labelClearSelect === void 0 ? 'fjern valgt' : _ref$labelClearSelect,
|
|
2074
2165
|
listStyle = _ref.listStyle,
|
|
2075
2166
|
loadingText = _ref.loadingText,
|
|
2076
2167
|
onChange = _ref.onChange,
|
|
@@ -2084,14 +2175,14 @@ var DropdownBeta = function DropdownBeta(_ref) {
|
|
|
2084
2175
|
style = _ref.style,
|
|
2085
2176
|
_ref$variant = _ref.variant,
|
|
2086
2177
|
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
2087
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
2088
|
-
// TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
|
|
2178
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
2089
2179
|
var _useResolvedItems = useResolvedItems(initialItems),
|
|
2090
2180
|
normalizedItems = _useResolvedItems.items,
|
|
2091
2181
|
loading = _useResolvedItems.loading;
|
|
2092
2182
|
var isFilled = selectedItem !== null || placeholder !== undefined;
|
|
2093
2183
|
var _useSelect = Downshift.useSelect({
|
|
2094
2184
|
items: normalizedItems,
|
|
2185
|
+
defaultHighlightedIndex: selectedItem ? undefined : 0,
|
|
2095
2186
|
selectedItem: selectedItem,
|
|
2096
2187
|
onStateChange: function onStateChange(_ref2) {
|
|
2097
2188
|
var type = _ref2.type,
|
|
@@ -2100,7 +2191,7 @@ var DropdownBeta = function DropdownBeta(_ref) {
|
|
|
2100
2191
|
// @ts-expect-error This falltrough is wanted
|
|
2101
2192
|
case Downshift.useSelect.stateChangeTypes.InputBlur:
|
|
2102
2193
|
if (!selectOnBlur) break;
|
|
2103
|
-
case Downshift.useSelect.stateChangeTypes.
|
|
2194
|
+
case Downshift.useSelect.stateChangeTypes.ToggleButtonKeyDownEnter: // eslint-disable-line no-fallthrough
|
|
2104
2195
|
case Downshift.useSelect.stateChangeTypes.ItemClick:
|
|
2105
2196
|
onChange == null ? void 0 : onChange(clickedItem !== undefined ? clickedItem : null);
|
|
2106
2197
|
}
|
|
@@ -2116,10 +2207,13 @@ var DropdownBeta = function DropdownBeta(_ref) {
|
|
|
2116
2207
|
return React__default["default"].createElement("div", {
|
|
2117
2208
|
className: "eds-dropdown__wrapper"
|
|
2118
2209
|
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
2119
|
-
append: React__default["default"].createElement(FieldAppend, {
|
|
2210
|
+
append: React__default["default"].createElement(FieldAppend$1, {
|
|
2211
|
+
ariaHiddenToggleButton: true,
|
|
2212
|
+
ariaLabelCloseList: ariaLabelCloseList,
|
|
2213
|
+
ariaLabelOpenList: ariaLabelOpenList,
|
|
2120
2214
|
clearable: true,
|
|
2121
|
-
|
|
2122
|
-
focusable:
|
|
2215
|
+
labelClearSelectedItems: labelClearSelectedItem,
|
|
2216
|
+
focusable: false,
|
|
2123
2217
|
getToggleButtonProps: getToggleButtonProps,
|
|
2124
2218
|
isOpen: isOpen,
|
|
2125
2219
|
loading: loading,
|
|
@@ -2140,12 +2234,11 @@ var DropdownBeta = function DropdownBeta(_ref) {
|
|
|
2140
2234
|
label: label,
|
|
2141
2235
|
labelId: getLabelProps().id,
|
|
2142
2236
|
labelProps: getLabelProps(),
|
|
2143
|
-
labelTooltip: labelTooltip,
|
|
2144
2237
|
prepend: prepend,
|
|
2145
2238
|
readOnly: readOnly,
|
|
2146
2239
|
style: style,
|
|
2147
2240
|
variant: variant
|
|
2148
|
-
}, rest), React__default["default"].createElement("
|
|
2241
|
+
}, rest), React__default["default"].createElement("button", _extends({
|
|
2149
2242
|
className: "eds-dropdown__selected-item-button"
|
|
2150
2243
|
}, getToggleButtonProps()), (_ref3 = (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : React__default["default"].createElement("span", {
|
|
2151
2244
|
className: classNames__default["default"]('eds-dropdown__selected-item-button__placeholder', {
|
|
@@ -2164,6 +2257,90 @@ var DropdownBeta = function DropdownBeta(_ref) {
|
|
|
2164
2257
|
}));
|
|
2165
2258
|
};
|
|
2166
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
|
+
|
|
2167
2344
|
utils.warnAboutMissingStyles('dropdown', 'form', 'a11y', 'chip');
|
|
2168
2345
|
|
|
2169
2346
|
exports.Dropdown = Dropdown;
|