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