@entur/dropdown 4.0.10 → 5.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/beta/Dropdown.d.ts +56 -0
- package/dist/beta/MultiSelect.d.ts +67 -0
- package/dist/beta/SearchableDropdown.d.ts +18 -5
- package/dist/beta/components/DropdownList.d.ts +24 -0
- package/dist/beta/components/FieldComponents.d.ts +24 -0
- package/dist/beta/index.d.ts +2 -0
- package/dist/beta/utils.d.ts +22 -0
- package/dist/dropdown.cjs.development.js +709 -155
- 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 +710 -158
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +199 -87
- package/package.json +7 -7
- package/dist/beta/DropdownList.d.ts +0 -17
package/dist/dropdown.esm.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { mergeRefs, debounce, useRandomId, warnAboutMissingStyles } from '@entur/utils';
|
|
2
2
|
import React, { useState, useRef } from 'react';
|
|
3
|
-
import Downshift, { useSelect, useCombobox } from 'downshift';
|
|
3
|
+
import Downshift, { useSelect, useCombobox, useMultipleSelection } from 'downshift';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
|
-
import { BaseFormControl, VariantProvider, FeedbackText } from '@entur/form';
|
|
5
|
+
import { BaseFormControl, VariantProvider, FeedbackText, Checkbox } from '@entur/form';
|
|
6
6
|
import { CheckIcon, DownArrowIcon, CloseSmallIcon, CloseIcon } from '@entur/icons';
|
|
7
7
|
import { VisuallyHidden } from '@entur/a11y';
|
|
8
8
|
import { LoadingDots } from '@entur/loader';
|
|
9
9
|
import { space } from '@entur/tokens';
|
|
10
10
|
import { IconButton } from '@entur/button';
|
|
11
|
+
import { TagChip } from '@entur/chip';
|
|
12
|
+
import { Tooltip } from '@entur/tooltip';
|
|
11
13
|
|
|
12
14
|
function _regeneratorRuntime() {
|
|
13
15
|
_regeneratorRuntime = function () {
|
|
@@ -370,7 +372,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
370
372
|
return target;
|
|
371
373
|
}
|
|
372
374
|
|
|
373
|
-
var _excluded$
|
|
375
|
+
var _excluded$d = ["children", "onChange", "onInputValueChange", "highlightFirstItemOnOpen", "className", "style", "searchable"];
|
|
374
376
|
var DownshiftContext = /*#__PURE__*/React.createContext(null);
|
|
375
377
|
var DownshiftProvider = function DownshiftProvider(_ref) {
|
|
376
378
|
var children = _ref.children,
|
|
@@ -388,7 +390,7 @@ var DownshiftProvider = function DownshiftProvider(_ref) {
|
|
|
388
390
|
style = _ref.style,
|
|
389
391
|
_ref$searchable = _ref.searchable,
|
|
390
392
|
searchable = _ref$searchable === void 0 ? false : _ref$searchable,
|
|
391
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
393
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$d);
|
|
392
394
|
var handleStateChange = function handleStateChange(changes, stateAndHelpers) {
|
|
393
395
|
if (changes.type === Downshift.stateChangeTypes.controlledPropUpdatedSelectedItem) {
|
|
394
396
|
return;
|
|
@@ -448,10 +450,10 @@ var useDownshift = function useDownshift() {
|
|
|
448
450
|
return context;
|
|
449
451
|
};
|
|
450
452
|
|
|
451
|
-
var _excluded$
|
|
453
|
+
var _excluded$c = ["items"];
|
|
452
454
|
var DropdownList$1 = function DropdownList(_ref) {
|
|
453
455
|
var items = _ref.items,
|
|
454
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
456
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$c);
|
|
455
457
|
var _useDownshift = useDownshift(),
|
|
456
458
|
highlightedIndex = _useDownshift.highlightedIndex,
|
|
457
459
|
isOpen = _useDownshift.isOpen,
|
|
@@ -499,17 +501,17 @@ var DropdownToggleButton$1 = function DropdownToggleButton() {
|
|
|
499
501
|
}), React.createElement(DownArrowIcon, null));
|
|
500
502
|
};
|
|
501
503
|
|
|
502
|
-
var _excluded$
|
|
504
|
+
var _excluded$b = ["className", "children"];
|
|
503
505
|
var DropdownLoadingDots = function DropdownLoadingDots(_ref) {
|
|
504
506
|
var className = _ref.className,
|
|
505
507
|
children = _ref.children,
|
|
506
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
508
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
|
|
507
509
|
return React.createElement("div", _extends({
|
|
508
510
|
className: classNames('eds-inline-spinner', className)
|
|
509
511
|
}, rest), React.createElement(LoadingDots, null), React.createElement(VisuallyHidden, null, children));
|
|
510
512
|
};
|
|
511
513
|
|
|
512
|
-
var _excluded$
|
|
514
|
+
var _excluded$a = ["children", "className", "items", "loading", "loadingText", "placeholder", "style", "listStyle", "clearable", "label", "isFilled", "disableLabelAnimation"];
|
|
513
515
|
var BaseDropdown = function BaseDropdown(_ref) {
|
|
514
516
|
var children = _ref.children,
|
|
515
517
|
className = _ref.className,
|
|
@@ -525,14 +527,14 @@ var BaseDropdown = function BaseDropdown(_ref) {
|
|
|
525
527
|
_ref$isFilled = _ref.isFilled,
|
|
526
528
|
isFilled = _ref$isFilled === void 0 ? false : _ref$isFilled,
|
|
527
529
|
disableLabelAnimation = _ref.disableLabelAnimation,
|
|
528
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
530
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
529
531
|
var _useDownshift = useDownshift(),
|
|
530
532
|
getLabelProps = _useDownshift.getLabelProps;
|
|
531
533
|
return React.createElement("div", {
|
|
532
534
|
className: "eds-dropdown-wrapper",
|
|
533
535
|
style: style
|
|
534
536
|
}, React.createElement(BaseFormControl, _extends({
|
|
535
|
-
append: React.createElement(Appendix$
|
|
537
|
+
append: React.createElement(Appendix$1, {
|
|
536
538
|
clearable: clearable,
|
|
537
539
|
loading: loading,
|
|
538
540
|
loadingText: loadingText,
|
|
@@ -568,7 +570,7 @@ var ClearButton$1 = function ClearButton(_ref2) {
|
|
|
568
570
|
className: "eds-dropdown__divider"
|
|
569
571
|
}));
|
|
570
572
|
};
|
|
571
|
-
var Appendix$
|
|
573
|
+
var Appendix$1 = function Appendix(_ref3) {
|
|
572
574
|
var clearable = _ref3.clearable,
|
|
573
575
|
loading = _ref3.loading,
|
|
574
576
|
loadingText = _ref3.loadingText,
|
|
@@ -582,7 +584,7 @@ var Appendix$2 = function Appendix(_ref3) {
|
|
|
582
584
|
return clearable ? React.createElement(React.Fragment, null, React.createElement(ClearButton$1, null), " ", React.createElement(DropdownToggleButton$1, null)) : React.createElement(DropdownToggleButton$1, null);
|
|
583
585
|
};
|
|
584
586
|
|
|
585
|
-
var _excluded$
|
|
587
|
+
var _excluded$9 = ["disabled", "placeholder", "selectOnTab", "openOnFocus", "listStyle", "items", "label", "disableLabelAnimation", "loading", "loadingText", "className", "clearable"];
|
|
586
588
|
var RegularDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
587
589
|
var disabled = _ref.disabled,
|
|
588
590
|
_ref$placeholder = _ref.placeholder,
|
|
@@ -599,7 +601,7 @@ var RegularDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
599
601
|
loadingText = _ref.loadingText,
|
|
600
602
|
className = _ref.className,
|
|
601
603
|
clearable = _ref.clearable,
|
|
602
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
604
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
603
605
|
var _useDownshift = useDownshift(),
|
|
604
606
|
getToggleButtonProps = _useDownshift.getToggleButtonProps,
|
|
605
607
|
selectedItem = _useDownshift.selectedItem,
|
|
@@ -660,7 +662,7 @@ var RegularDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
660
662
|
}), selectedItem ? selectedItem.label : placeholder));
|
|
661
663
|
});
|
|
662
664
|
|
|
663
|
-
var _excluded$
|
|
665
|
+
var _excluded$8 = ["disabled", "className", "items", "loading", "loadingText", "readOnly", "prepend", "selectOnTab", "openOnFocus", "listStyle", "clearable", "itemFilter", "label", "disableLabelAnimation", "placeholder"];
|
|
664
666
|
function LowerCaseFilterTest(item, input) {
|
|
665
667
|
if (!input) {
|
|
666
668
|
return true;
|
|
@@ -692,7 +694,7 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
692
694
|
label = _ref.label,
|
|
693
695
|
disableLabelAnimation = _ref.disableLabelAnimation,
|
|
694
696
|
placeholder = _ref.placeholder,
|
|
695
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
697
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
696
698
|
var _useDownshift = useDownshift(),
|
|
697
699
|
getInputProps = _useDownshift.getInputProps,
|
|
698
700
|
inputValue = _useDownshift.inputValue,
|
|
@@ -881,7 +883,7 @@ debounceTimeout) {
|
|
|
881
883
|
if (isItemsFunction) {
|
|
882
884
|
fetchItems('');
|
|
883
885
|
}
|
|
884
|
-
}, [isItemsFunction
|
|
886
|
+
}, [isItemsFunction]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
885
887
|
return {
|
|
886
888
|
items: normalizedItems,
|
|
887
889
|
loading: isItemsFunction ? loading : false,
|
|
@@ -889,7 +891,7 @@ debounceTimeout) {
|
|
|
889
891
|
};
|
|
890
892
|
};
|
|
891
893
|
|
|
892
|
-
var _excluded$
|
|
894
|
+
var _excluded$7 = ["highlightFirstItemOnOpen", "debounceTimeout", "disabled", "feedback", "items", "label", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "searchable", "selectOnTab", "openOnFocus", "variant", "value", "clearable", "className", "style", "listStyle", "itemFilter", "disableLabelAnimation"];
|
|
893
895
|
var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
894
896
|
var highlightFirstItemOnOpen = _ref.highlightFirstItemOnOpen,
|
|
895
897
|
debounceTimeout = _ref.debounceTimeout,
|
|
@@ -917,7 +919,7 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
917
919
|
listStyle = _ref.listStyle,
|
|
918
920
|
itemFilter = _ref.itemFilter,
|
|
919
921
|
disableLabelAnimation = _ref.disableLabelAnimation,
|
|
920
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
922
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
921
923
|
var _useResolvedItems = useResolvedItems(items, debounceTimeout),
|
|
922
924
|
normalizedItems = _useResolvedItems.items,
|
|
923
925
|
loading = _useResolvedItems.loading,
|
|
@@ -964,7 +966,7 @@ var Dropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
964
966
|
}, searchAbleProps))));
|
|
965
967
|
});
|
|
966
968
|
|
|
967
|
-
var _excluded$
|
|
969
|
+
var _excluded$6 = ["className", "disabled", "readOnly", "items", "loadingText", "prepend", "style", "label", "variant", "feedback", "disableLabelAnimation"];
|
|
968
970
|
var NativeDropdown = function NativeDropdown(_ref) {
|
|
969
971
|
var className = _ref.className,
|
|
970
972
|
_ref$disabled = _ref.disabled,
|
|
@@ -979,7 +981,7 @@ var NativeDropdown = function NativeDropdown(_ref) {
|
|
|
979
981
|
variant = _ref.variant,
|
|
980
982
|
feedback = _ref.feedback,
|
|
981
983
|
disableLabelAnimation = _ref.disableLabelAnimation,
|
|
982
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
984
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
983
985
|
var _useResolvedItems = useResolvedItems(items),
|
|
984
986
|
normalizedItems = _useResolvedItems.items,
|
|
985
987
|
loading = _useResolvedItems.loading;
|
|
@@ -1022,7 +1024,7 @@ var NativeDropdown = function NativeDropdown(_ref) {
|
|
|
1022
1024
|
})));
|
|
1023
1025
|
};
|
|
1024
1026
|
|
|
1025
|
-
var _excluded$
|
|
1027
|
+
var _excluded$5 = ["className", "clearable", "debounceTimeout", "disabled", "feedback", "initialSelectedItems", "items", "itemsSelectedLabel", "label", "listStyle", "loading", "loadingText", "onChange", "openOnFocus", "readOnly", "style", "variant"];
|
|
1026
1028
|
var MultiSelectContext = /*#__PURE__*/React.createContext(null);
|
|
1027
1029
|
var useMultiSelectContext = function useMultiSelectContext() {
|
|
1028
1030
|
var context = React.useContext(MultiSelectContext);
|
|
@@ -1049,36 +1051,36 @@ actionAndChanges) {
|
|
|
1049
1051
|
}
|
|
1050
1052
|
}
|
|
1051
1053
|
var MultiSelect = function MultiSelect(_ref) {
|
|
1052
|
-
var
|
|
1054
|
+
var className = _ref.className,
|
|
1055
|
+
_ref$clearable = _ref.clearable,
|
|
1056
|
+
clearable = _ref$clearable === void 0 ? false : _ref$clearable,
|
|
1057
|
+
debounceTimeout = _ref.debounceTimeout,
|
|
1058
|
+
disabled = _ref.disabled,
|
|
1059
|
+
feedback = _ref.feedback,
|
|
1060
|
+
_ref$initialSelectedI = _ref.initialSelectedItems,
|
|
1061
|
+
initialSelectedItems = _ref$initialSelectedI === void 0 ? [] : _ref$initialSelectedI,
|
|
1062
|
+
input = _ref.items,
|
|
1053
1063
|
_ref$itemsSelectedLab = _ref.itemsSelectedLabel,
|
|
1054
1064
|
itemsSelectedLabel = _ref$itemsSelectedLab === void 0 ? function (items) {
|
|
1055
1065
|
return SelectedItemsLabel(items);
|
|
1056
1066
|
} : _ref$itemsSelectedLab,
|
|
1057
1067
|
label = _ref.label,
|
|
1058
|
-
|
|
1059
|
-
variant = _ref.variant,
|
|
1060
|
-
disabled = _ref.disabled,
|
|
1061
|
-
_ref$readOnly = _ref.readOnly,
|
|
1062
|
-
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
1063
|
-
_ref$onChange = _ref.onChange,
|
|
1064
|
-
onChange = _ref$onChange === void 0 ? function () {
|
|
1065
|
-
return undefined;
|
|
1066
|
-
} : _ref$onChange,
|
|
1067
|
-
className = _ref.className,
|
|
1068
|
-
_ref$clearable = _ref.clearable,
|
|
1069
|
-
clearable = _ref$clearable === void 0 ? false : _ref$clearable,
|
|
1068
|
+
listStyle = _ref.listStyle,
|
|
1070
1069
|
_ref$loading = _ref.loading,
|
|
1071
1070
|
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
1072
1071
|
_ref$loadingText = _ref.loadingText,
|
|
1073
1072
|
loadingText = _ref$loadingText === void 0 ? '' : _ref$loadingText,
|
|
1073
|
+
_ref$onChange = _ref.onChange,
|
|
1074
|
+
onChange = _ref$onChange === void 0 ? function () {
|
|
1075
|
+
return undefined;
|
|
1076
|
+
} : _ref$onChange,
|
|
1074
1077
|
_ref$openOnFocus = _ref.openOnFocus,
|
|
1075
1078
|
openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
|
|
1079
|
+
_ref$readOnly = _ref.readOnly,
|
|
1080
|
+
readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
|
|
1076
1081
|
style = _ref.style,
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
initialSelectedItems = _ref$initialSelectedI === void 0 ? [] : _ref$initialSelectedI,
|
|
1080
|
-
debounceTimeout = _ref.debounceTimeout,
|
|
1081
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
1082
|
+
variant = _ref.variant,
|
|
1083
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
1082
1084
|
var _useResolvedItems = useResolvedItems(input, debounceTimeout),
|
|
1083
1085
|
items = _useResolvedItems.items;
|
|
1084
1086
|
var _useState = useState(initialSelectedItems),
|
|
@@ -1144,7 +1146,7 @@ var MultiSelect = function MultiSelect(_ref) {
|
|
|
1144
1146
|
isFilled: selectedItems.length > 0 || isOpen,
|
|
1145
1147
|
disabled: disabled,
|
|
1146
1148
|
readOnly: readOnly,
|
|
1147
|
-
append: React.createElement(Appendix
|
|
1149
|
+
append: React.createElement(Appendix, {
|
|
1148
1150
|
hasSelected: clearable && selectedItems.length > 0,
|
|
1149
1151
|
loading: loading,
|
|
1150
1152
|
loadingText: loadingText,
|
|
@@ -1213,7 +1215,7 @@ var ClearButton = function ClearButton(_ref3) {
|
|
|
1213
1215
|
className: "eds-dropdown__divider"
|
|
1214
1216
|
}));
|
|
1215
1217
|
};
|
|
1216
|
-
var Appendix
|
|
1218
|
+
var Appendix = function Appendix(_ref4) {
|
|
1217
1219
|
var loading = _ref4.loading,
|
|
1218
1220
|
loadingText = _ref4.loadingText,
|
|
1219
1221
|
readOnly = _ref4.readOnly,
|
|
@@ -1263,46 +1265,93 @@ function SelectedItemsLabel(items) {
|
|
|
1263
1265
|
}).toString() : items.length + " elementer valgt";
|
|
1264
1266
|
}
|
|
1265
1267
|
|
|
1266
|
-
var _excluded$
|
|
1268
|
+
var _excluded$4 = ["selectedItems", "listItems", "inputValue", "isOpen", "getMenuProps", "getItemProps", "highlightedIndex", "showSelectAllInList", "loading", "selectAllCheckboxState", "selectAllItem", "listStyle", "noMatchesText", "loadingText", "selectedItemAriaLabel"];
|
|
1267
1269
|
var DropdownList = function DropdownList(_ref) {
|
|
1268
|
-
var
|
|
1270
|
+
var selectedItems = _ref.selectedItems,
|
|
1271
|
+
listItems = _ref.listItems,
|
|
1269
1272
|
isOpen = _ref.isOpen,
|
|
1270
1273
|
getMenuProps = _ref.getMenuProps,
|
|
1271
1274
|
getItemProps = _ref.getItemProps,
|
|
1272
|
-
filteredItems = _ref.filteredItems,
|
|
1273
1275
|
highlightedIndex = _ref.highlightedIndex,
|
|
1276
|
+
_ref$loading = _ref.loading,
|
|
1277
|
+
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
1278
|
+
selectAllCheckboxState = _ref.selectAllCheckboxState,
|
|
1279
|
+
selectAllItem = _ref.selectAllItem,
|
|
1274
1280
|
listStyle = _ref.listStyle,
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
+
_ref$noMatchesText = _ref.noMatchesText,
|
|
1282
|
+
noMatchesText = _ref$noMatchesText === void 0 ? 'Ingen treff for søket' : _ref$noMatchesText,
|
|
1283
|
+
_ref$loadingText = _ref.loadingText,
|
|
1284
|
+
loadingText = _ref$loadingText === void 0 ? 'Laster inn …' : _ref$loadingText,
|
|
1285
|
+
_ref$selectedItemAria = _ref.selectedItemAriaLabel,
|
|
1286
|
+
selectedItemAriaLabel = _ref$selectedItemAria === void 0 ? ', valgt element' : _ref$selectedItemAria,
|
|
1287
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
1288
|
+
var isMultiselect = selectAllItem !== undefined;
|
|
1289
|
+
var isNoMatches = !loading && (listItems.length === 0 || listItems.length === 1 && listItems[0].value === (selectAllItem == null ? void 0 : selectAllItem.value));
|
|
1290
|
+
var itemIsSelected = function itemIsSelected(item) {
|
|
1291
|
+
return selectedItems.some(function (selectedItem) {
|
|
1292
|
+
return selectedItem.value === item.value;
|
|
1293
|
+
});
|
|
1294
|
+
};
|
|
1295
|
+
var selectAllListItemContent = function selectAllListItemContent() {
|
|
1296
|
+
return React.createElement(React.Fragment, null, React.createElement(Checkbox, {
|
|
1297
|
+
className: "eds-dropdown__list__item__checkbox",
|
|
1298
|
+
checked: selectAllCheckboxState == null ? void 0 : selectAllCheckboxState(),
|
|
1299
|
+
"aria-hidden": "true",
|
|
1300
|
+
onChange: function onChange() {
|
|
1301
|
+
return;
|
|
1302
|
+
}
|
|
1303
|
+
}), React.createElement("span", {
|
|
1304
|
+
className: "eds-dropdown__list__item__text"
|
|
1305
|
+
}, selectAllItem == null ? void 0 : selectAllItem.label));
|
|
1306
|
+
};
|
|
1307
|
+
var listItemContent = function listItemContent(item) {
|
|
1308
|
+
return React.createElement(React.Fragment, null, React.createElement(Checkbox, {
|
|
1309
|
+
style: !isMultiselect ? {
|
|
1310
|
+
display: 'none'
|
|
1311
|
+
} : {},
|
|
1312
|
+
className: "eds-dropdown__list__item__checkbox",
|
|
1313
|
+
checked: itemIsSelected(item),
|
|
1314
|
+
"aria-hidden": "true",
|
|
1315
|
+
onChange: function onChange() {
|
|
1316
|
+
return;
|
|
1317
|
+
}
|
|
1318
|
+
}), React.createElement("span", {
|
|
1319
|
+
className: "eds-dropdown__list__item__text"
|
|
1320
|
+
}, item.label, React.createElement(VisuallyHidden, null, selectedItemAriaLabel)), item.icons && React.createElement("span", null, item.icons.map(function (Icon, index) {
|
|
1321
|
+
return React.createElement(Icon, {
|
|
1322
|
+
key: index,
|
|
1323
|
+
inline: true,
|
|
1324
|
+
className: "eds-dropdown__list__item__icon"
|
|
1325
|
+
});
|
|
1326
|
+
})));
|
|
1327
|
+
};
|
|
1328
|
+
return React.createElement("ul", _extends({}, getMenuProps(), {
|
|
1329
|
+
className: classNames('eds-dropdown__list', {
|
|
1330
|
+
'eds-dropdown__list--open': isOpen
|
|
1331
|
+
}),
|
|
1281
1332
|
style: _extends({}, rest.style, listStyle)
|
|
1282
|
-
}), isOpen
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
}) : null);
|
|
1333
|
+
}), isOpen && listItems.length > 0 && listItems.map(function (item, index) {
|
|
1334
|
+
var itemIsSelectAll = item.value === (selectAllItem == null ? void 0 : selectAllItem.value);
|
|
1335
|
+
if (itemIsSelectAll && listItems.length <= 2) return React.createElement(React.Fragment, null);
|
|
1336
|
+
return React.createElement("li", _extends({
|
|
1337
|
+
key: item.value,
|
|
1338
|
+
className: classNames('eds-dropdown__list__item', {
|
|
1339
|
+
'eds-dropdown__list__item--select-all': itemIsSelectAll,
|
|
1340
|
+
'eds-dropdown__list__item--highlighted': highlightedIndex === index,
|
|
1341
|
+
'eds-dropdown__list__item--selected': !isMultiselect && itemIsSelected(item)
|
|
1342
|
+
})
|
|
1343
|
+
}, getItemProps({
|
|
1344
|
+
key: "" + index + item.value,
|
|
1345
|
+
item: item,
|
|
1346
|
+
index: index
|
|
1347
|
+
})), itemIsSelectAll ? selectAllListItemContent() : listItemContent(item));
|
|
1348
|
+
}), isOpen && isNoMatches && React.createElement("li", {
|
|
1349
|
+
className: "eds-dropdown__list__item"
|
|
1350
|
+
}, noMatchesText), isOpen && loading && React.createElement("li", {
|
|
1351
|
+
className: "eds-dropdown__list__item"
|
|
1352
|
+
}, loadingText));
|
|
1303
1353
|
};
|
|
1304
1354
|
|
|
1305
|
-
var _excluded = ["items", "selectedItem", "onChange", "label", "placeholder", "clearable", "openOnFocus", "readonly", "feedback", "variant", "className", "listStyle"];
|
|
1306
1355
|
function lowerCaseFilterTest(item, input) {
|
|
1307
1356
|
if (!input) {
|
|
1308
1357
|
return true;
|
|
@@ -1311,69 +1360,279 @@ function lowerCaseFilterTest(item, input) {
|
|
|
1311
1360
|
var inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');
|
|
1312
1361
|
return inputRegex.test(item.label);
|
|
1313
1362
|
}
|
|
1363
|
+
var itemToString = function itemToString(item) {
|
|
1364
|
+
return item ? item.label : '';
|
|
1365
|
+
};
|
|
1366
|
+
var useMultiselectUtils = function useMultiselectUtils(_ref) {
|
|
1367
|
+
var listItems = _ref.listItems,
|
|
1368
|
+
selectedItems = _ref.selectedItems,
|
|
1369
|
+
selectAllValue = _ref.selectAllValue;
|
|
1370
|
+
var hasSelectedItems = selectedItems.length > 0;
|
|
1371
|
+
var listItemsWithoutSelectAll = listItems.filter(function (item) {
|
|
1372
|
+
return item.value !== selectAllValue;
|
|
1373
|
+
});
|
|
1374
|
+
var allListItemsAreSelected = listItemsWithoutSelectAll.filter(function (item) {
|
|
1375
|
+
return !selectedItems.includes(item);
|
|
1376
|
+
}).length === 0;
|
|
1377
|
+
var someListItemsAreSelected = listItemsWithoutSelectAll.some(function (item) {
|
|
1378
|
+
return selectedItems.includes(item);
|
|
1379
|
+
});
|
|
1380
|
+
var addClickedItemToSelectedItems = function addClickedItemToSelectedItems(clickedItem, onChange) {
|
|
1381
|
+
return onChange([].concat(selectedItems, [clickedItem]));
|
|
1382
|
+
};
|
|
1383
|
+
var clickedItemIsInSelectedItems = function clickedItemIsInSelectedItems(clickedItem) {
|
|
1384
|
+
return selectedItems.some(function (selectedItem) {
|
|
1385
|
+
return selectedItem.value === clickedItem.value;
|
|
1386
|
+
});
|
|
1387
|
+
};
|
|
1388
|
+
var clickedItemIsSelectAll = function clickedItemIsSelectAll(clickedItem) {
|
|
1389
|
+
return clickedItem.value === selectAllValue;
|
|
1390
|
+
};
|
|
1391
|
+
var removeClickedItemFromSelectedItems = function removeClickedItemFromSelectedItems(clickedItem, onChange) {
|
|
1392
|
+
return onChange(selectedItems.filter(function (selectedItem) {
|
|
1393
|
+
return selectedItem.value !== clickedItem.value;
|
|
1394
|
+
}));
|
|
1395
|
+
};
|
|
1396
|
+
var selectAllCheckboxState = function selectAllCheckboxState() {
|
|
1397
|
+
if (allListItemsAreSelected) return true;
|
|
1398
|
+
if (someListItemsAreSelected) return 'indeterminate';
|
|
1399
|
+
return false;
|
|
1400
|
+
};
|
|
1401
|
+
var selectAllUnselectedItemsInListItems = function selectAllUnselectedItemsInListItems(onChange) {
|
|
1402
|
+
onChange([].concat(selectedItems, listItemsWithoutSelectAll.filter(function (item) {
|
|
1403
|
+
return !selectedItems.includes(item);
|
|
1404
|
+
})));
|
|
1405
|
+
};
|
|
1406
|
+
var unselectAllListItems = function unselectAllListItems(onChange) {
|
|
1407
|
+
onChange(selectedItems.filter(function (item) {
|
|
1408
|
+
return !listItemsWithoutSelectAll.includes(item);
|
|
1409
|
+
}));
|
|
1410
|
+
};
|
|
1411
|
+
return {
|
|
1412
|
+
addClickedItemToSelectedItems: addClickedItemToSelectedItems,
|
|
1413
|
+
allListItemsAreSelected: allListItemsAreSelected,
|
|
1414
|
+
clickedItemIsInSelectedItems: clickedItemIsInSelectedItems,
|
|
1415
|
+
clickedItemIsSelectAll: clickedItemIsSelectAll,
|
|
1416
|
+
hasSelectedItems: hasSelectedItems,
|
|
1417
|
+
listItemsWithoutSelectAll: listItemsWithoutSelectAll,
|
|
1418
|
+
removeClickedItemFromSelectedItems: removeClickedItemFromSelectedItems,
|
|
1419
|
+
selectAllCheckboxState: selectAllCheckboxState,
|
|
1420
|
+
selectAllUnselectedItemsInListItems: selectAllUnselectedItemsInListItems,
|
|
1421
|
+
someListItemsAreSelected: someListItemsAreSelected,
|
|
1422
|
+
unselectAllListItems: unselectAllListItems
|
|
1423
|
+
};
|
|
1424
|
+
};
|
|
1425
|
+
|
|
1426
|
+
var _excluded$3 = ["tabIndex"];
|
|
1427
|
+
var SelectedElementsTag = function SelectedElementsTag(_ref) {
|
|
1428
|
+
var getSelectedItemProps = _ref.getSelectedItemProps,
|
|
1429
|
+
removeSelectedItem = _ref.removeSelectedItem,
|
|
1430
|
+
selectedItem = _ref.selectedItem,
|
|
1431
|
+
index = _ref.index,
|
|
1432
|
+
ariaLabelRemoveSelected = _ref.ariaLabelRemoveSelected;
|
|
1433
|
+
var _getSelectedItemProps = getSelectedItemProps({
|
|
1434
|
+
selectedItem: selectedItem,
|
|
1435
|
+
index: index
|
|
1436
|
+
}),
|
|
1437
|
+
selectedItemProps = _objectWithoutPropertiesLoose(_getSelectedItemProps, _excluded$3);
|
|
1438
|
+
return React.createElement(TagChip, _extends({
|
|
1439
|
+
className: classNames('eds-dropdown__selected-element-tag')
|
|
1440
|
+
}, selectedItemProps, {
|
|
1441
|
+
onClose: function onClose(e) {
|
|
1442
|
+
e.stopPropagation();
|
|
1443
|
+
removeSelectedItem(selectedItem);
|
|
1444
|
+
},
|
|
1445
|
+
closeButtonAriaLabel: selectedItem.label + ", " + ariaLabelRemoveSelected + " ",
|
|
1446
|
+
key: selectedItem.value
|
|
1447
|
+
}), React.createElement("span", {
|
|
1448
|
+
"aria-hidden": "true"
|
|
1449
|
+
}, selectedItem.label));
|
|
1450
|
+
};
|
|
1451
|
+
var FieldAppend = function FieldAppend(_ref2) {
|
|
1452
|
+
var clearable = _ref2.clearable,
|
|
1453
|
+
readOnly = _ref2.readOnly,
|
|
1454
|
+
getToggleButtonProps = _ref2.getToggleButtonProps,
|
|
1455
|
+
selectedItems = _ref2.selectedItems,
|
|
1456
|
+
_ref2$loading = _ref2.loading,
|
|
1457
|
+
loading = _ref2$loading === void 0 ? false : _ref2$loading,
|
|
1458
|
+
_ref2$loadingText = _ref2.loadingText,
|
|
1459
|
+
loadingText = _ref2$loadingText === void 0 ? 'Laster resultater …' : _ref2$loadingText,
|
|
1460
|
+
ariaLabelClearItems = _ref2.ariaLabelClearItems,
|
|
1461
|
+
clearSelectedItemsLabel = _ref2.clearSelectedItemsLabel,
|
|
1462
|
+
isOpen = _ref2.isOpen,
|
|
1463
|
+
onClear = _ref2.onClear,
|
|
1464
|
+
_ref2$focusable = _ref2.focusable,
|
|
1465
|
+
focusable = _ref2$focusable === void 0 ? false : _ref2$focusable;
|
|
1466
|
+
if (loading) {
|
|
1467
|
+
return React.createElement(DropdownLoadingDots, null, loadingText);
|
|
1468
|
+
}
|
|
1469
|
+
if (readOnly) {
|
|
1470
|
+
return null;
|
|
1471
|
+
}
|
|
1472
|
+
return React.createElement("div", {
|
|
1473
|
+
className: "eds-dropdown-appendix"
|
|
1474
|
+
}, clearable && (selectedItems == null ? void 0 : selectedItems.length) > 0 && selectedItems[0] !== null && React.createElement(React.Fragment, null, React.createElement(ClearableButton, {
|
|
1475
|
+
onClear: onClear,
|
|
1476
|
+
focusable: focusable,
|
|
1477
|
+
clearSelectedItemsLabel: clearSelectedItemsLabel,
|
|
1478
|
+
ariaLabelClearItems: ariaLabelClearItems
|
|
1479
|
+
}), React.createElement("div", {
|
|
1480
|
+
className: "eds-dropdown-appendix__divider"
|
|
1481
|
+
})), React.createElement(ToggleButton, {
|
|
1482
|
+
getToggleButtonProps: getToggleButtonProps,
|
|
1483
|
+
isOpen: isOpen,
|
|
1484
|
+
focusable: focusable
|
|
1485
|
+
}));
|
|
1486
|
+
};
|
|
1487
|
+
var ClearableButton = function ClearableButton(_ref3) {
|
|
1488
|
+
var onClear = _ref3.onClear,
|
|
1489
|
+
_ref3$clearSelectedIt = _ref3.clearSelectedItemsLabel,
|
|
1490
|
+
clearSelectedItemsLabel = _ref3$clearSelectedIt === void 0 ? 'Fjern valgte' : _ref3$clearSelectedIt,
|
|
1491
|
+
_ref3$ariaLabelClearI = _ref3.ariaLabelClearItems,
|
|
1492
|
+
ariaLabelClearItems = _ref3$ariaLabelClearI === void 0 ? 'Fjern valgte' : _ref3$ariaLabelClearI,
|
|
1493
|
+
_ref3$focusable = _ref3.focusable,
|
|
1494
|
+
focusable = _ref3$focusable === void 0 ? false : _ref3$focusable;
|
|
1495
|
+
return React.createElement(Tooltip, {
|
|
1496
|
+
"aria-hidden": "true",
|
|
1497
|
+
placement: "right",
|
|
1498
|
+
content: clearSelectedItemsLabel
|
|
1499
|
+
}, React.createElement(IconButton, {
|
|
1500
|
+
className: "eds-dropdown-appendix__clear-button",
|
|
1501
|
+
type: "button",
|
|
1502
|
+
tabIndex: focusable ? 0 : 1,
|
|
1503
|
+
onClick: onClear,
|
|
1504
|
+
"aria-label": ariaLabelClearItems
|
|
1505
|
+
}, React.createElement(CloseSmallIcon, {
|
|
1506
|
+
"aria-hidden": "true"
|
|
1507
|
+
})));
|
|
1508
|
+
};
|
|
1509
|
+
var ToggleButton = function ToggleButton(_ref4) {
|
|
1510
|
+
var getToggleButtonProps = _ref4.getToggleButtonProps,
|
|
1511
|
+
isOpen = _ref4.isOpen,
|
|
1512
|
+
_ref4$closeAriaLabel = _ref4.closeAriaLabel,
|
|
1513
|
+
closeAriaLabel = _ref4$closeAriaLabel === void 0 ? 'Lukk liste med valg' : _ref4$closeAriaLabel,
|
|
1514
|
+
_ref4$openAriaLabel = _ref4.openAriaLabel,
|
|
1515
|
+
openAriaLabel = _ref4$openAriaLabel === void 0 ? 'Åpne liste med valg' : _ref4$openAriaLabel,
|
|
1516
|
+
_ref4$focusable = _ref4.focusable,
|
|
1517
|
+
focusable = _ref4$focusable === void 0 ? false : _ref4$focusable;
|
|
1518
|
+
return React.createElement(IconButton, _extends({}, getToggleButtonProps({
|
|
1519
|
+
className: classNames('eds-dropdown-appendix__toggle-button', {
|
|
1520
|
+
'eds-dropdown-appendix__toggle-button--open': isOpen
|
|
1521
|
+
})
|
|
1522
|
+
}), {
|
|
1523
|
+
"aria-label": isOpen ? closeAriaLabel : openAriaLabel,
|
|
1524
|
+
tabIndex: focusable ? 0 : 1,
|
|
1525
|
+
type: "button"
|
|
1526
|
+
}), React.createElement(DownArrowIcon, {
|
|
1527
|
+
"aria-hidden": "true"
|
|
1528
|
+
}));
|
|
1529
|
+
};
|
|
1530
|
+
|
|
1531
|
+
var _excluded$2 = ["className", "clearable", "debounceTimeout", "disableLabelAnimation", "feedback", "itemFilter", "items", "label", "listStyle", "onChange", "openOnFocus", "placeholder", "readonly", "selectedItem", "selectOnBlur", "variant"];
|
|
1314
1532
|
// TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
|
|
1315
1533
|
// TODO Husk å generelt legge inn støtte for typeof value === string
|
|
1316
1534
|
var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
1317
1535
|
var _selectedItem$label;
|
|
1318
|
-
var
|
|
1319
|
-
value = _ref.selectedItem,
|
|
1320
|
-
onChange = _ref.onChange,
|
|
1321
|
-
label = _ref.label,
|
|
1322
|
-
placeholder = _ref.placeholder,
|
|
1536
|
+
var className = _ref.className,
|
|
1323
1537
|
_ref$clearable = _ref.clearable,
|
|
1324
1538
|
clearable = _ref$clearable === void 0 ? false : _ref$clearable,
|
|
1539
|
+
debounceTimeout = _ref.debounceTimeout,
|
|
1540
|
+
_ref$disableLabelAnim = _ref.disableLabelAnimation,
|
|
1541
|
+
disableLabelAnimation = _ref$disableLabelAnim === void 0 ? false : _ref$disableLabelAnim,
|
|
1542
|
+
feedback = _ref.feedback,
|
|
1543
|
+
_ref$itemFilter = _ref.itemFilter,
|
|
1544
|
+
itemFilter = _ref$itemFilter === void 0 ? lowerCaseFilterTest : _ref$itemFilter,
|
|
1545
|
+
initialItems = _ref.items,
|
|
1546
|
+
label = _ref.label,
|
|
1547
|
+
listStyle = _ref.listStyle,
|
|
1548
|
+
onChange = _ref.onChange,
|
|
1325
1549
|
_ref$openOnFocus = _ref.openOnFocus,
|
|
1326
1550
|
openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
|
|
1551
|
+
placeholder = _ref.placeholder,
|
|
1327
1552
|
_ref$readonly = _ref.readonly,
|
|
1328
1553
|
readonly = _ref$readonly === void 0 ? false : _ref$readonly,
|
|
1329
|
-
|
|
1554
|
+
value = _ref.selectedItem,
|
|
1555
|
+
_ref$selectOnBlur = _ref.selectOnBlur,
|
|
1556
|
+
selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
|
|
1330
1557
|
_ref$variant = _ref.variant,
|
|
1331
1558
|
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
1332
|
-
|
|
1333
|
-
listStyle = _ref.listStyle,
|
|
1334
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
1335
|
-
var _React$useState = React.useState(items),
|
|
1336
|
-
filteredItems = _React$useState[0],
|
|
1337
|
-
setFilteredItems = _React$useState[1];
|
|
1559
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
1338
1560
|
var _useState = useState(false),
|
|
1339
1561
|
hideSelectedItem = _useState[0],
|
|
1340
1562
|
setHideSelectedItem = _useState[1];
|
|
1341
1563
|
var inputRef = useRef(null);
|
|
1342
|
-
var
|
|
1343
|
-
|
|
1344
|
-
|
|
1564
|
+
var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
|
|
1565
|
+
normalizedItems = _useResolvedItems.items,
|
|
1566
|
+
loading = _useResolvedItems.loading,
|
|
1567
|
+
fetchItems = _useResolvedItems.fetchItems;
|
|
1568
|
+
var _React$useState = React.useState(normalizedItems),
|
|
1569
|
+
listItems = _React$useState[0],
|
|
1570
|
+
setListItems = _React$useState[1];
|
|
1571
|
+
var filterListItems = function filterListItems(_ref2) {
|
|
1572
|
+
var inputValue = _ref2.inputValue;
|
|
1573
|
+
return setListItems(normalizedItems.filter(function (item) {
|
|
1574
|
+
return itemFilter(item, inputValue);
|
|
1575
|
+
}));
|
|
1576
|
+
};
|
|
1577
|
+
React.useEffect(function () {
|
|
1578
|
+
filterListItems({
|
|
1579
|
+
inputValue: inputValue
|
|
1580
|
+
});
|
|
1581
|
+
}, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
1582
|
+
var stateReducer = React.useCallback(function (_, _ref3) {
|
|
1583
|
+
var type = _ref3.type,
|
|
1584
|
+
changes = _ref3.changes;
|
|
1345
1585
|
switch (type) {
|
|
1346
1586
|
case useCombobox.stateChangeTypes.ItemClick:
|
|
1347
1587
|
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
1348
1588
|
case useCombobox.stateChangeTypes.InputBlur:
|
|
1349
1589
|
case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1590
|
+
{
|
|
1591
|
+
filterListItems({
|
|
1592
|
+
inputValue: ''
|
|
1593
|
+
});
|
|
1594
|
+
return _extends({}, changes, {
|
|
1595
|
+
inputValue: '' // reset input value to show placeholder on focus
|
|
1596
|
+
});
|
|
1597
|
+
}
|
|
1598
|
+
|
|
1599
|
+
case useCombobox.stateChangeTypes.InputChange:
|
|
1600
|
+
{
|
|
1601
|
+
var _changes$inputValue;
|
|
1602
|
+
var leadingWhitespaceTest = /^\s+/g;
|
|
1603
|
+
if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(leadingWhitespaceTest)) setInputValue(changes.inputValue.replace(leadingWhitespaceTest, ''));else {
|
|
1604
|
+
var _changes$inputValue2, _changes$inputValue3;
|
|
1605
|
+
fetchItems((_changes$inputValue2 = changes.inputValue) != null ? _changes$inputValue2 : '');
|
|
1606
|
+
filterListItems({
|
|
1607
|
+
inputValue: (_changes$inputValue3 = changes.inputValue) != null ? _changes$inputValue3 : ''
|
|
1608
|
+
});
|
|
1609
|
+
}
|
|
1610
|
+
return changes;
|
|
1611
|
+
}
|
|
1353
1612
|
default:
|
|
1354
1613
|
return changes;
|
|
1355
1614
|
}
|
|
1356
|
-
}, []);
|
|
1615
|
+
}, [fetchItems, filterListItems]);
|
|
1357
1616
|
var _useCombobox = useCombobox(_extends({
|
|
1358
|
-
|
|
1359
|
-
var inputValue = _ref2.inputValue;
|
|
1360
|
-
setFilteredItems(items.filter(function (item) {
|
|
1361
|
-
return lowerCaseFilterTest(item, inputValue);
|
|
1362
|
-
}));
|
|
1363
|
-
},
|
|
1364
|
-
items: filteredItems,
|
|
1365
|
-
itemToString: function itemToString(item) {
|
|
1366
|
-
if (item) return item.value;
|
|
1367
|
-
return '';
|
|
1368
|
-
},
|
|
1369
|
-
stateReducer: stateReducer,
|
|
1617
|
+
items: listItems,
|
|
1370
1618
|
selectedItem: value,
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1619
|
+
itemToString: itemToString,
|
|
1620
|
+
stateReducer: stateReducer,
|
|
1621
|
+
onStateChange: function onStateChange(_ref4) {
|
|
1622
|
+
var type = _ref4.type,
|
|
1623
|
+
clickedItem = _ref4.selectedItem;
|
|
1624
|
+
switch (type) {
|
|
1625
|
+
// @ts-expect-error This falltrough is wanted
|
|
1626
|
+
case useCombobox.stateChangeTypes.InputBlur:
|
|
1627
|
+
if (!selectOnBlur) break;
|
|
1628
|
+
case useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
|
|
1629
|
+
case useCombobox.stateChangeTypes.ItemClick:
|
|
1630
|
+
onChange(clickedItem != null ? clickedItem : null);
|
|
1631
|
+
}
|
|
1374
1632
|
}
|
|
1375
1633
|
}, rest)),
|
|
1376
1634
|
isOpen = _useCombobox.isOpen,
|
|
1635
|
+
openMenu = _useCombobox.openMenu,
|
|
1377
1636
|
getToggleButtonProps = _useCombobox.getToggleButtonProps,
|
|
1378
1637
|
getLabelProps = _useCombobox.getLabelProps,
|
|
1379
1638
|
getMenuProps = _useCombobox.getMenuProps,
|
|
@@ -1382,39 +1641,46 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1382
1641
|
highlightedIndex = _useCombobox.highlightedIndex,
|
|
1383
1642
|
getItemProps = _useCombobox.getItemProps,
|
|
1384
1643
|
selectedItem = _useCombobox.selectedItem,
|
|
1385
|
-
|
|
1386
|
-
|
|
1644
|
+
inputValue = _useCombobox.inputValue,
|
|
1645
|
+
setInputValue = _useCombobox.setInputValue;
|
|
1387
1646
|
return React.createElement("div", {
|
|
1388
|
-
className: "eds-
|
|
1647
|
+
className: "eds-dropdown__wrapper"
|
|
1389
1648
|
}, React.createElement(BaseFormControl, _extends({
|
|
1390
|
-
append: React.createElement(
|
|
1391
|
-
|
|
1649
|
+
append: React.createElement(FieldAppend, {
|
|
1650
|
+
selectedItems: [selectedItem],
|
|
1392
1651
|
isOpen: isOpen,
|
|
1393
1652
|
clearable: clearable,
|
|
1394
1653
|
loading: false,
|
|
1395
1654
|
loadingText: '',
|
|
1396
1655
|
readOnly: readonly,
|
|
1397
|
-
|
|
1656
|
+
onClear: function onClear() {
|
|
1657
|
+
var _inputRef$current;
|
|
1658
|
+
onChange(null);
|
|
1659
|
+
setInputValue('');
|
|
1660
|
+
(_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
|
|
1661
|
+
if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : '');
|
|
1662
|
+
},
|
|
1398
1663
|
getToggleButtonProps: getToggleButtonProps
|
|
1399
1664
|
}),
|
|
1400
|
-
|
|
1665
|
+
disableLabelAnimation: disableLabelAnimation,
|
|
1666
|
+
className: classNames('eds-dropdown', className),
|
|
1401
1667
|
label: label,
|
|
1402
|
-
isFilled: selectedItem
|
|
1668
|
+
isFilled: selectedItem || inputValue !== '',
|
|
1403
1669
|
feedback: feedback,
|
|
1404
1670
|
variant: variant,
|
|
1405
1671
|
readOnly: readonly,
|
|
1406
1672
|
labelProps: getLabelProps()
|
|
1407
1673
|
}, getComboboxProps(), rest), !hideSelectedItem && selectedItem && !inputValue && React.createElement("span", {
|
|
1408
|
-
className: "eds-
|
|
1674
|
+
className: "eds-dropdown__selected-item__wrapper"
|
|
1409
1675
|
}, React.createElement("span", {
|
|
1410
|
-
className: "eds-
|
|
1676
|
+
className: "eds-dropdown__selected-item",
|
|
1411
1677
|
onClick: function onClick() {
|
|
1412
|
-
var _inputRef$
|
|
1413
|
-
return (_inputRef$
|
|
1678
|
+
var _inputRef$current2;
|
|
1679
|
+
return (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.focus();
|
|
1414
1680
|
}
|
|
1415
1681
|
}, selectedItem.label)), React.createElement("input", _extends({
|
|
1416
1682
|
placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder,
|
|
1417
|
-
className: "eds-
|
|
1683
|
+
className: "eds-dropdown__input eds-form-control"
|
|
1418
1684
|
}, getInputProps({
|
|
1419
1685
|
onFocus: function onFocus() {
|
|
1420
1686
|
if (!isOpen && openOnFocus) openMenu();
|
|
@@ -1425,54 +1691,340 @@ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
|
|
|
1425
1691
|
},
|
|
1426
1692
|
ref: inputRef
|
|
1427
1693
|
})))), React.createElement(DropdownList, {
|
|
1428
|
-
selectedItem:
|
|
1694
|
+
selectedItems: selectedItem !== null ? [selectedItem] : [],
|
|
1429
1695
|
isOpen: isOpen,
|
|
1430
|
-
|
|
1696
|
+
listItems: listItems,
|
|
1431
1697
|
highlightedIndex: highlightedIndex,
|
|
1432
1698
|
listStyle: listStyle,
|
|
1433
1699
|
getMenuProps: getMenuProps,
|
|
1434
|
-
getItemProps: getItemProps
|
|
1700
|
+
getItemProps: getItemProps,
|
|
1701
|
+
loading: loading
|
|
1435
1702
|
}));
|
|
1436
1703
|
};
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1704
|
+
|
|
1705
|
+
var _excluded$1 = ["ariaLabelRemoveSelected", "className", "clearable", "debounceTimeout", "feedback", "hideSelectAll", "items", "label", "listStyle", "onChange", "openOnFocus", "placeholder", "readonly", "selectAllLabel", "selectedItems", "selectOnBlur", "style", "variant"];
|
|
1706
|
+
var MultiSelectBeta = function MultiSelectBeta(_ref) {
|
|
1707
|
+
var _ref$ariaLabelRemoveS = _ref.ariaLabelRemoveSelected,
|
|
1708
|
+
ariaLabelRemoveSelected = _ref$ariaLabelRemoveS === void 0 ? 'trykk for å fjerne valg' : _ref$ariaLabelRemoveS,
|
|
1709
|
+
className = _ref.className,
|
|
1710
|
+
_ref$clearable = _ref.clearable,
|
|
1711
|
+
clearable = _ref$clearable === void 0 ? false : _ref$clearable,
|
|
1712
|
+
feedback = _ref.feedback,
|
|
1713
|
+
_ref$hideSelectAll = _ref.hideSelectAll,
|
|
1714
|
+
hideSelectAll = _ref$hideSelectAll === void 0 ? false : _ref$hideSelectAll,
|
|
1715
|
+
initialItems = _ref.items,
|
|
1716
|
+
label = _ref.label,
|
|
1717
|
+
listStyle = _ref.listStyle,
|
|
1718
|
+
onChange = _ref.onChange,
|
|
1719
|
+
_ref$openOnFocus = _ref.openOnFocus,
|
|
1720
|
+
openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
|
|
1721
|
+
placeholder = _ref.placeholder,
|
|
1722
|
+
_ref$readonly = _ref.readonly,
|
|
1723
|
+
readonly = _ref$readonly === void 0 ? false : _ref$readonly,
|
|
1724
|
+
_ref$selectAllLabel = _ref.selectAllLabel,
|
|
1725
|
+
selectAllLabel = _ref$selectAllLabel === void 0 ? 'Velg alle' : _ref$selectAllLabel,
|
|
1726
|
+
selectedItems = _ref.selectedItems,
|
|
1727
|
+
_ref$selectOnBlur = _ref.selectOnBlur,
|
|
1728
|
+
selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
|
|
1729
|
+
style = _ref.style,
|
|
1730
|
+
_ref$variant = _ref.variant,
|
|
1731
|
+
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
1732
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
1733
|
+
var _React$useState = React.useState(0),
|
|
1734
|
+
lastHighlightedIndex = _React$useState[0],
|
|
1735
|
+
setLastHighlightedIndex = _React$useState[1];
|
|
1736
|
+
var inputRef = useRef(null);
|
|
1737
|
+
var _useResolvedItems = useResolvedItems(initialItems),
|
|
1738
|
+
normalizedItems = _useResolvedItems.items,
|
|
1739
|
+
loading = _useResolvedItems.loading,
|
|
1740
|
+
fetchItems = _useResolvedItems.fetchItems;
|
|
1741
|
+
var selectAll = {
|
|
1742
|
+
value: useRandomId('select-all'),
|
|
1743
|
+
label: selectAllLabel
|
|
1744
|
+
};
|
|
1745
|
+
var _useState = useState([].concat(!hideSelectAll ? [selectAll] : [], normalizedItems)),
|
|
1746
|
+
listItems = _useState[0],
|
|
1747
|
+
setListItems = _useState[1];
|
|
1748
|
+
var filterListItems = function filterListItems(_ref2) {
|
|
1749
|
+
var inputValue = _ref2.inputValue;
|
|
1750
|
+
return setListItems([].concat(!hideSelectAll ? [selectAll] : [], normalizedItems.filter(function (item) {
|
|
1751
|
+
return lowerCaseFilterTest(item, inputValue);
|
|
1752
|
+
})));
|
|
1753
|
+
};
|
|
1754
|
+
React.useEffect(function () {
|
|
1755
|
+
filterListItems({
|
|
1756
|
+
inputValue: inputValue
|
|
1757
|
+
});
|
|
1758
|
+
}, [normalizedItems]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
1759
|
+
var _useMultiselectUtils = useMultiselectUtils({
|
|
1760
|
+
listItems: listItems,
|
|
1761
|
+
selectAllValue: selectAll.value,
|
|
1762
|
+
selectedItems: selectedItems
|
|
1763
|
+
}),
|
|
1764
|
+
addClickedItemToSelectedItems = _useMultiselectUtils.addClickedItemToSelectedItems,
|
|
1765
|
+
allListItemsAreSelected = _useMultiselectUtils.allListItemsAreSelected,
|
|
1766
|
+
clickedItemIsInSelectedItems = _useMultiselectUtils.clickedItemIsInSelectedItems,
|
|
1767
|
+
clickedItemIsSelectAll = _useMultiselectUtils.clickedItemIsSelectAll,
|
|
1768
|
+
hasSelectedItems = _useMultiselectUtils.hasSelectedItems,
|
|
1769
|
+
removeClickedItemFromSelectedItems = _useMultiselectUtils.removeClickedItemFromSelectedItems,
|
|
1770
|
+
selectAllCheckboxState = _useMultiselectUtils.selectAllCheckboxState,
|
|
1771
|
+
selectAllUnselectedItemsInListItems = _useMultiselectUtils.selectAllUnselectedItemsInListItems,
|
|
1772
|
+
unselectAllListItems = _useMultiselectUtils.unselectAllListItems;
|
|
1773
|
+
var _useMultipleSelection = useMultipleSelection({
|
|
1774
|
+
selectedItems: selectedItems,
|
|
1775
|
+
itemToString: itemToString,
|
|
1776
|
+
onSelectedItemsChange: function onSelectedItemsChange(changes) {
|
|
1777
|
+
var _changes$selectedItem;
|
|
1778
|
+
onChange((_changes$selectedItem = changes.selectedItems) != null ? _changes$selectedItem : []);
|
|
1779
|
+
}
|
|
1780
|
+
}),
|
|
1781
|
+
getSelectedItemProps = _useMultipleSelection.getSelectedItemProps,
|
|
1782
|
+
getDropdownProps = _useMultipleSelection.getDropdownProps,
|
|
1783
|
+
removeSelectedItem = _useMultipleSelection.removeSelectedItem;
|
|
1784
|
+
var stateReducer = React.useCallback(function (_, _ref3) {
|
|
1785
|
+
var _inputRef$current$val, _inputRef$current, _inputRef$current$val2, _inputRef$current2, _changes$inputValue, _changes$inputValue2, _changes$inputValue3;
|
|
1786
|
+
var changes = _ref3.changes,
|
|
1787
|
+
type = _ref3.type;
|
|
1788
|
+
if (changes != null && changes.highlightedIndex && (changes == null ? void 0 : changes.highlightedIndex) >= 0) setLastHighlightedIndex(changes == null ? void 0 : changes.highlightedIndex);
|
|
1789
|
+
switch (type) {
|
|
1790
|
+
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
1791
|
+
case useCombobox.stateChangeTypes.ItemClick:
|
|
1792
|
+
return _extends({}, changes, {
|
|
1793
|
+
isOpen: true,
|
|
1794
|
+
inputValue: (_inputRef$current$val = inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.value) != null ? _inputRef$current$val : '' // don't reset input value on select
|
|
1795
|
+
});
|
|
1796
|
+
|
|
1797
|
+
case useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
|
|
1798
|
+
return _extends({}, changes, {
|
|
1799
|
+
inputValue: (_inputRef$current$val2 = inputRef == null ? void 0 : (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value) != null ? _inputRef$current$val2 : '' // don't reset input value on select
|
|
1800
|
+
});
|
|
1801
|
+
|
|
1802
|
+
case useCombobox.stateChangeTypes.InputChange:
|
|
1803
|
+
if ((_changes$inputValue = changes.inputValue) != null && _changes$inputValue.match(/^\s+/g)) {
|
|
1804
|
+
var _changes$inputValue$r;
|
|
1805
|
+
// remove leading whitespace if it exists
|
|
1806
|
+
return _extends({}, changes, {
|
|
1807
|
+
inputValue: (_changes$inputValue$r = changes.inputValue.replace(/^\s+/g, '')) != null ? _changes$inputValue$r : ''
|
|
1808
|
+
});
|
|
1809
|
+
}
|
|
1810
|
+
if (typeof initialItems === 'function') fetchItems((_changes$inputValue2 = changes.inputValue) != null ? _changes$inputValue2 : ''); // fetch items only if user provides a function as items
|
|
1811
|
+
filterListItems({
|
|
1812
|
+
inputValue: (_changes$inputValue3 = changes.inputValue) != null ? _changes$inputValue3 : ''
|
|
1813
|
+
});
|
|
1814
|
+
return changes;
|
|
1815
|
+
case useCombobox.stateChangeTypes.InputBlur:
|
|
1816
|
+
return _extends({}, changes, {
|
|
1817
|
+
inputValue: ''
|
|
1818
|
+
});
|
|
1819
|
+
default:
|
|
1820
|
+
return changes;
|
|
1455
1821
|
}
|
|
1456
|
-
},
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1822
|
+
}, [hideSelectAll, normalizedItems, filterListItems, initialItems]);
|
|
1823
|
+
var _useCombobox = useCombobox(_extends({
|
|
1824
|
+
defaultHighlightedIndex: lastHighlightedIndex,
|
|
1825
|
+
items: listItems,
|
|
1826
|
+
itemToString: itemToString,
|
|
1827
|
+
selectedItem: null,
|
|
1828
|
+
stateReducer: stateReducer,
|
|
1829
|
+
onStateChange: function onStateChange(_ref4) {
|
|
1830
|
+
var type = _ref4.type,
|
|
1831
|
+
clickedItem = _ref4.selectedItem;
|
|
1832
|
+
// clickedItem means item chosen either via mouse or keyboard
|
|
1833
|
+
if (!clickedItem) return;
|
|
1834
|
+
switch (type) {
|
|
1835
|
+
// @ts-expect-error This falltrough is wanted
|
|
1836
|
+
case useCombobox.stateChangeTypes.InputBlur:
|
|
1837
|
+
if (!selectOnBlur) break;
|
|
1838
|
+
case useCombobox.stateChangeTypes.InputKeyDownEnter: // eslint-disable-line no-fallthrough
|
|
1839
|
+
case useCombobox.stateChangeTypes.ItemClick:
|
|
1840
|
+
if (clickedItemIsSelectAll(clickedItem)) {
|
|
1841
|
+
if (allListItemsAreSelected) {
|
|
1842
|
+
return unselectAllListItems(onChange);
|
|
1843
|
+
}
|
|
1844
|
+
return selectAllUnselectedItemsInListItems(onChange);
|
|
1845
|
+
}
|
|
1846
|
+
if (clickedItemIsInSelectedItems(clickedItem)) {
|
|
1847
|
+
return removeClickedItemFromSelectedItems(clickedItem, onChange);
|
|
1848
|
+
}
|
|
1849
|
+
addClickedItemToSelectedItems(clickedItem, onChange);
|
|
1850
|
+
}
|
|
1851
|
+
}
|
|
1852
|
+
}, rest)),
|
|
1853
|
+
getComboboxProps = _useCombobox.getComboboxProps,
|
|
1854
|
+
getInputProps = _useCombobox.getInputProps,
|
|
1855
|
+
getItemProps = _useCombobox.getItemProps,
|
|
1856
|
+
getLabelProps = _useCombobox.getLabelProps,
|
|
1857
|
+
getMenuProps = _useCombobox.getMenuProps,
|
|
1858
|
+
getToggleButtonProps = _useCombobox.getToggleButtonProps,
|
|
1859
|
+
highlightedIndex = _useCombobox.highlightedIndex,
|
|
1860
|
+
inputValue = _useCombobox.inputValue,
|
|
1861
|
+
isOpen = _useCombobox.isOpen,
|
|
1862
|
+
openMenu = _useCombobox.openMenu,
|
|
1863
|
+
setInputValue = _useCombobox.setInputValue;
|
|
1864
|
+
// role=combobox leads to strange VoiceOver behavior and is therefor omitted
|
|
1865
|
+
// const { role: _, ...comboboxProps } = getComboboxProps();
|
|
1866
|
+
var _getComboboxProps = getComboboxProps(),
|
|
1867
|
+
comboboxProps = _extends({}, (_objectDestructuringEmpty(_getComboboxProps), _getComboboxProps));
|
|
1868
|
+
return React.createElement("div", {
|
|
1869
|
+
className: "eds-dropdown__wrapper"
|
|
1870
|
+
}, React.createElement(BaseFormControl, _extends({
|
|
1871
|
+
append: React.createElement(FieldAppend, {
|
|
1872
|
+
selectedItems: selectedItems,
|
|
1873
|
+
isOpen: isOpen,
|
|
1874
|
+
clearable: clearable,
|
|
1875
|
+
loading: loading,
|
|
1876
|
+
loadingText: '',
|
|
1877
|
+
readOnly: readonly,
|
|
1878
|
+
onClear: function onClear() {
|
|
1879
|
+
var _inputRef$current3;
|
|
1880
|
+
onChange([]);
|
|
1881
|
+
setInputValue('');
|
|
1882
|
+
(_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.focus();
|
|
1883
|
+
if (typeof initialItems === 'function') fetchItems(inputValue != null ? inputValue : '');
|
|
1884
|
+
},
|
|
1885
|
+
getToggleButtonProps: getToggleButtonProps
|
|
1886
|
+
}),
|
|
1887
|
+
className: classNames('eds-dropdown', className),
|
|
1888
|
+
label: label,
|
|
1889
|
+
isFilled: hasSelectedItems || inputValue !== '',
|
|
1890
|
+
feedback: feedback,
|
|
1891
|
+
variant: variant,
|
|
1892
|
+
readOnly: readonly,
|
|
1893
|
+
style: style,
|
|
1894
|
+
labelProps: _extends({
|
|
1895
|
+
'aria-label': label + ", multiselect, " + selectedItems.length + " valgte elementer"
|
|
1896
|
+
}, getLabelProps())
|
|
1897
|
+
}, comboboxProps, rest), React.createElement("div", {
|
|
1898
|
+
className: classNames('eds-dropdown__selected-items-and-input', {
|
|
1899
|
+
'eds-dropdown__selected-items-and-input--filled': hasSelectedItems
|
|
1900
|
+
}),
|
|
1901
|
+
onClick: function onClick(e) {
|
|
1902
|
+
var _inputRef$current4;
|
|
1903
|
+
if (e.target === e.currentTarget) (_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.focus();
|
|
1462
1904
|
}
|
|
1463
|
-
},
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
}), React.createElement(
|
|
1905
|
+
}, selectedItems.map(function (selectedItem, index) {
|
|
1906
|
+
return React.createElement(SelectedElementsTag, {
|
|
1907
|
+
index: index,
|
|
1908
|
+
key: selectedItem.value,
|
|
1909
|
+
getSelectedItemProps: getSelectedItemProps,
|
|
1910
|
+
selectedItem: selectedItem,
|
|
1911
|
+
removeSelectedItem: removeSelectedItem,
|
|
1912
|
+
ariaLabelRemoveSelected: ariaLabelRemoveSelected
|
|
1913
|
+
});
|
|
1914
|
+
}), React.createElement("input", _extends({
|
|
1915
|
+
placeholder: placeholder,
|
|
1916
|
+
className: "eds-dropdown__input eds-form-control",
|
|
1917
|
+
role: "combobox" // eslint-disable-line jsx-a11y/role-has-required-aria-props
|
|
1918
|
+
}, getInputProps(getDropdownProps({
|
|
1919
|
+
preventKeyAction: isOpen,
|
|
1920
|
+
onFocus: function onFocus() {
|
|
1921
|
+
if (!isOpen && openOnFocus) openMenu();
|
|
1922
|
+
},
|
|
1923
|
+
ref: inputRef,
|
|
1924
|
+
value: inputValue != null ? inputValue : ''
|
|
1925
|
+
})))))), React.createElement(DropdownList, {
|
|
1926
|
+
listItems: listItems,
|
|
1927
|
+
selectedItems: selectedItems,
|
|
1928
|
+
inputValue: inputValue,
|
|
1929
|
+
isOpen: isOpen,
|
|
1930
|
+
highlightedIndex: highlightedIndex,
|
|
1931
|
+
getMenuProps: getMenuProps,
|
|
1932
|
+
getItemProps: getItemProps,
|
|
1933
|
+
selectAllItem: selectAll,
|
|
1934
|
+
selectAllCheckboxState: selectAllCheckboxState,
|
|
1935
|
+
listStyle: listStyle,
|
|
1936
|
+
loading: loading
|
|
1937
|
+
}));
|
|
1938
|
+
};
|
|
1939
|
+
|
|
1940
|
+
var _excluded = ["className", "clearable", "debounceTimeout", "feedback", "items", "label", "listStyle", "onChange", "openOnFocus", "placeholder", "readonly", "selectedItem", "selectOnBlur", "selectOnTab", "variant"];
|
|
1941
|
+
var DropdownBeta = function DropdownBeta(_ref) {
|
|
1942
|
+
var _selectedItem$label;
|
|
1943
|
+
var className = _ref.className,
|
|
1944
|
+
debounceTimeout = _ref.debounceTimeout,
|
|
1945
|
+
feedback = _ref.feedback,
|
|
1946
|
+
initialItems = _ref.items,
|
|
1947
|
+
label = _ref.label,
|
|
1948
|
+
listStyle = _ref.listStyle,
|
|
1949
|
+
onChange = _ref.onChange,
|
|
1950
|
+
_ref$readonly = _ref.readonly,
|
|
1951
|
+
readonly = _ref$readonly === void 0 ? false : _ref$readonly,
|
|
1952
|
+
selectedItem = _ref.selectedItem,
|
|
1953
|
+
_ref$selectOnBlur = _ref.selectOnBlur,
|
|
1954
|
+
selectOnBlur = _ref$selectOnBlur === void 0 ? false : _ref$selectOnBlur,
|
|
1955
|
+
_ref$variant = _ref.variant,
|
|
1956
|
+
variant = _ref$variant === void 0 ? 'info' : _ref$variant,
|
|
1957
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
1958
|
+
var _useResolvedItems = useResolvedItems(initialItems, debounceTimeout),
|
|
1959
|
+
normalizedItems = _useResolvedItems.items,
|
|
1960
|
+
loading = _useResolvedItems.loading;
|
|
1961
|
+
var _useSelect = useSelect({
|
|
1962
|
+
items: normalizedItems,
|
|
1963
|
+
selectedItem: selectedItem,
|
|
1964
|
+
onStateChange: function onStateChange(_ref2) {
|
|
1965
|
+
var type = _ref2.type,
|
|
1966
|
+
clickedItem = _ref2.selectedItem;
|
|
1967
|
+
switch (type) {
|
|
1968
|
+
// @ts-expect-error This falltrough is wanted
|
|
1969
|
+
case useSelect.stateChangeTypes.InputBlur:
|
|
1970
|
+
if (!selectOnBlur) break;
|
|
1971
|
+
case useSelect.stateChangeTypes.MenuKeyDownEnter: // eslint-disable-line no-fallthrough
|
|
1972
|
+
case useSelect.stateChangeTypes.ItemClick:
|
|
1973
|
+
onChange == null ? void 0 : onChange(clickedItem !== undefined ? clickedItem : null);
|
|
1974
|
+
}
|
|
1975
|
+
},
|
|
1976
|
+
itemToString: itemToString
|
|
1977
|
+
}),
|
|
1978
|
+
isOpen = _useSelect.isOpen,
|
|
1979
|
+
getToggleButtonProps = _useSelect.getToggleButtonProps,
|
|
1980
|
+
getLabelProps = _useSelect.getLabelProps,
|
|
1981
|
+
getMenuProps = _useSelect.getMenuProps,
|
|
1982
|
+
highlightedIndex = _useSelect.highlightedIndex,
|
|
1983
|
+
getItemProps = _useSelect.getItemProps;
|
|
1984
|
+
return React.createElement("div", {
|
|
1985
|
+
className: "eds-dropdown__wrapper"
|
|
1986
|
+
}, React.createElement(BaseFormControl, _extends({
|
|
1987
|
+
append: React.createElement(FieldAppend, {
|
|
1988
|
+
selectedItems: [selectedItem],
|
|
1989
|
+
isOpen: isOpen,
|
|
1990
|
+
clearable: true,
|
|
1991
|
+
loading: loading,
|
|
1992
|
+
loadingText: '',
|
|
1993
|
+
readOnly: readonly,
|
|
1994
|
+
onClear: function onClear() {
|
|
1995
|
+
onChange == null ? void 0 : onChange(null);
|
|
1996
|
+
},
|
|
1997
|
+
getToggleButtonProps: getToggleButtonProps,
|
|
1998
|
+
clearSelectedItemsLabel: "Fjern valgt",
|
|
1999
|
+
ariaLabelClearItems: (selectedItem == null ? void 0 : selectedItem.label) + " valgt, trykk for \xE5 fjerne valget",
|
|
2000
|
+
focusable: true
|
|
2001
|
+
}),
|
|
2002
|
+
className: classNames('eds-dropdown', className, {
|
|
2003
|
+
'eds-dropdown--not-filled': selectedItem === null
|
|
2004
|
+
}),
|
|
2005
|
+
label: label,
|
|
2006
|
+
labelId: getLabelProps().id,
|
|
2007
|
+
labelProps: getLabelProps(),
|
|
2008
|
+
disableLabelAnimation: true,
|
|
2009
|
+
isFilled: selectedItem !== null,
|
|
2010
|
+
feedback: feedback,
|
|
2011
|
+
variant: variant,
|
|
2012
|
+
readOnly: readonly
|
|
2013
|
+
}, rest), React.createElement("div", _extends({
|
|
2014
|
+
className: "eds-dropdown__selected-item-button"
|
|
2015
|
+
}, getToggleButtonProps()), (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : '')), React.createElement(DropdownList, {
|
|
2016
|
+
selectedItems: selectedItem !== null ? [selectedItem] : [],
|
|
2017
|
+
isOpen: isOpen,
|
|
2018
|
+
listItems: normalizedItems,
|
|
2019
|
+
highlightedIndex: highlightedIndex,
|
|
2020
|
+
listStyle: listStyle,
|
|
2021
|
+
getMenuProps: getMenuProps,
|
|
2022
|
+
getItemProps: getItemProps,
|
|
2023
|
+
loading: loading
|
|
2024
|
+
}));
|
|
1473
2025
|
};
|
|
1474
2026
|
|
|
1475
2027
|
warnAboutMissingStyles('dropdown', 'form', 'a11y', 'chip');
|
|
1476
2028
|
|
|
1477
|
-
export { Dropdown, MultiSelect, NativeDropdown, SearchableDropdownBeta };
|
|
2029
|
+
export { Dropdown, DropdownBeta, MultiSelect, MultiSelectBeta, NativeDropdown, SearchableDropdownBeta };
|
|
1478
2030
|
//# sourceMappingURL=dropdown.esm.js.map
|