@entur/dropdown 2.0.10 → 2.2.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.2.0](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@2.1.2...@entur/dropdown@2.2.0) (2022-01-05)
7
+
8
+ ### Bug Fixes
9
+
10
+ - **searchable:** adjust position of selected item ([0abed8d](https://bitbucket.org/enturas/design-system/commits/0abed8d3767dead4161d915a71ad94a8f64f600a))
11
+ - **searchable:** align selectedItem with input field ([527e4f4](https://bitbucket.org/enturas/design-system/commits/527e4f4afea961a0f877e81a5b92f4ec0d44f97c))
12
+ - **searchable:** hide placeholder if item is selected ([933a6cb](https://bitbucket.org/enturas/design-system/commits/933a6cb1b4f84346d737b23f36fc9c4252e7ea46))
13
+
14
+ ### Features
15
+
16
+ - **searchable:** improve usability of searchable dropdown ([eb3038f](https://bitbucket.org/enturas/design-system/commits/eb3038fb6fc6db7a55d3cc65541ab1d40a6e87af))
17
+
18
+ ## [2.1.2](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@2.1.1...@entur/dropdown@2.1.2) (2021-12-10)
19
+
20
+ **Note:** Version bump only for package @entur/dropdown
21
+
22
+ ## [2.1.1](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@2.1.0...@entur/dropdown@2.1.1) (2021-11-17)
23
+
24
+ ### Bug Fixes
25
+
26
+ - change dropdown background to white in contrast mode ([7064988](https://bitbucket.org/enturas/design-system/commits/7064988fd7690e500c08f74fee82d88566730ee1))
27
+
28
+ # [2.1.0](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@2.0.10...@entur/dropdown@2.1.0) (2021-10-25)
29
+
30
+ ### Features
31
+
32
+ - **multiselect:** add support for initialSelectedItems ([40f14d7](https://bitbucket.org/enturas/design-system/commits/40f14d7ccbba43d1da42834839246d294e289a7f))
33
+
6
34
  ## [2.0.10](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@2.0.9...@entur/dropdown@2.0.10) (2021-10-18)
7
35
 
8
36
  **Note:** Version bump only for package @entur/dropdown
@@ -9,6 +9,7 @@ export declare type DownshiftProviderProps = {
9
9
  highlightFirstItemOnOpen?: boolean;
10
10
  className?: string;
11
11
  style?: React.CSSProperties;
12
+ searchable?: boolean;
12
13
  [key: string]: any;
13
14
  };
14
15
  export declare const DownshiftProvider: React.FC<DownshiftProviderProps>;
@@ -48,6 +48,7 @@ declare type MultiSelectProps = {
48
48
  clearable?: boolean;
49
49
  loading?: boolean;
50
50
  style?: React.CSSProperties;
51
- } & UseSelectProps<NormalizedDropdownItemType>;
51
+ initialSelectedItems?: NormalizedDropdownItemType[];
52
+ } & Omit<UseSelectProps<NormalizedDropdownItemType>, 'initialSelectedItem'>;
52
53
  export declare const MultiSelect: React.FC<MultiSelectProps>;
53
54
  export {};
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { NormalizedDropdownItemType } from './useNormalizedItems';
3
+ import './SearchableDropdown.scss';
3
4
  declare type SearchableDropdownProps = {
4
5
  className?: string;
5
6
  disabled?: boolean;
@@ -64,7 +64,9 @@ var DownshiftProvider = function DownshiftProvider(_ref) {
64
64
  highlightFirstItemOnOpen = _ref$highlightFirstIt === void 0 ? false : _ref$highlightFirstIt,
65
65
  className = _ref.className,
66
66
  style = _ref.style,
67
- rest = _objectWithoutPropertiesLoose(_ref, ["children", "onChange", "onInputValueChange", "highlightFirstItemOnOpen", "className", "style"]);
67
+ _ref$searchable = _ref.searchable,
68
+ searchable = _ref$searchable === void 0 ? false : _ref$searchable,
69
+ rest = _objectWithoutPropertiesLoose(_ref, ["children", "onChange", "onInputValueChange", "highlightFirstItemOnOpen", "className", "style", "searchable"]);
68
70
 
69
71
  var handleStateChange = function handleStateChange(changes, stateAndHelpers) {
70
72
  if (changes.type === Downshift__default.stateChangeTypes.controlledPropUpdatedSelectedItem) {
@@ -79,17 +81,34 @@ var DownshiftProvider = function DownshiftProvider(_ref) {
79
81
  };
80
82
 
81
83
  var stateReducer = function stateReducer(_, changes) {
82
- if (highlightFirstItemOnOpen) {
83
- var wasJustOpened = 'isOpen' in changes && changes.isOpen;
84
-
85
- if (wasJustOpened) {
86
- return _extends({}, changes, {
87
- highlightedIndex: 0
88
- });
84
+ var highlightFirstOnOpen = highlightFirstItemOnOpen && 'isOpen' in changes && changes.isOpen;
85
+ var highlightFirstItemIndex = highlightFirstOnOpen ? {
86
+ highlightedIndex: 0
87
+ } : {};
88
+
89
+ if (searchable) {
90
+ var type = changes.type;
91
+
92
+ switch (type) {
93
+ case '__autocomplete_change_input__':
94
+ return _extends({}, changes, highlightFirstItemIndex);
95
+
96
+ case '__autocomplete_click_item__':
97
+ case '__autocomplete_keydown_enter__':
98
+ case '__autocomplete_blur_input__':
99
+ case '__autocomplete_mouseup__':
100
+ return _extends({}, changes, {
101
+ // if we had an item highlighted in the previous state.
102
+ // we will reset input field value to blank
103
+ inputValue: ''
104
+ }, highlightFirstItemIndex);
105
+
106
+ default:
107
+ return _extends({}, changes, highlightFirstItemIndex);
89
108
  }
109
+ } else {
110
+ return _extends({}, changes, highlightFirstItemIndex);
90
111
  }
91
-
92
- return changes;
93
112
  };
94
113
 
95
114
  return React__default.createElement(Downshift__default, Object.assign({
@@ -370,7 +389,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
370
389
  } : _ref$itemFilter,
371
390
  label = _ref.label,
372
391
  disableLabelAnimation = _ref.disableLabelAnimation,
373
- rest = _objectWithoutPropertiesLoose(_ref, ["disabled", "className", "items", "loading", "loadingText", "readOnly", "prepend", "selectOnTab", "openOnFocus", "listStyle", "clearable", "itemFilter", "label", "disableLabelAnimation"]);
392
+ placeholder = _ref.placeholder,
393
+ rest = _objectWithoutPropertiesLoose(_ref, ["disabled", "className", "items", "loading", "loadingText", "readOnly", "prepend", "selectOnTab", "openOnFocus", "listStyle", "clearable", "itemFilter", "label", "disableLabelAnimation", "placeholder"]);
374
394
 
375
395
  var _useDownshift = useDownshift(),
376
396
  getInputProps = _useDownshift.getInputProps,
@@ -398,7 +418,9 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
398
418
  label: label,
399
419
  isFilled: selectedItem ? true : false,
400
420
  disableLabelAnimation: disableLabelAnimation
401
- }, React__default.createElement("input", Object.assign({}, getInputProps(_extends({
421
+ }, selectedItem && !inputValue && React__default.createElement("span", {
422
+ className: "eds-dropdown__searchable-selected-item"
423
+ }, selectedItem.label), React__default.createElement("input", Object.assign({}, getInputProps(_extends({
402
424
  disabled: disabled,
403
425
  readOnly: readOnly,
404
426
  className: 'eds-form-control eds-dropdown__input',
@@ -411,7 +433,8 @@ var SearchableDropdown = function SearchableDropdown(_ref) {
411
433
  if (openOnFocus) {
412
434
  !isOpen && openMenu();
413
435
  }
414
- }
436
+ },
437
+ placeholder: selectedItem ? undefined : placeholder
415
438
  }, rest)))));
416
439
  };
417
440
 
@@ -599,7 +622,8 @@ var Dropdown = function Dropdown(_ref) {
599
622
  value: value,
600
623
  highlightFirstItemOnOpen: highlightFirstItemOnOpen,
601
624
  className: className,
602
- style: style
625
+ style: style,
626
+ searchable: searchable
603
627
  }, rest), React__default.createElement(DropdownInputGroup, {
604
628
  feedback: feedback,
605
629
  variant: variant
@@ -734,13 +758,15 @@ var MultiSelect = function MultiSelect(_ref) {
734
758
  openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
735
759
  style = _ref.style,
736
760
  listStyle = _ref.listStyle,
761
+ _ref$initialSelectedI = _ref.initialSelectedItems,
762
+ initialSelectedItems = _ref$initialSelectedI === void 0 ? [] : _ref$initialSelectedI,
737
763
  debounceTimeout = _ref.debounceTimeout,
738
- rest = _objectWithoutPropertiesLoose(_ref, ["items", "itemsSelectedLabel", "label", "feedback", "variant", "disabled", "readOnly", "onChange", "className", "clearable", "loading", "loadingText", "openOnFocus", "style", "listStyle", "debounceTimeout"]);
764
+ rest = _objectWithoutPropertiesLoose(_ref, ["items", "itemsSelectedLabel", "label", "feedback", "variant", "disabled", "readOnly", "onChange", "className", "clearable", "loading", "loadingText", "openOnFocus", "style", "listStyle", "initialSelectedItems", "debounceTimeout"]);
739
765
 
740
766
  var _useResolvedItems = useResolvedItems(input, debounceTimeout),
741
767
  items = _useResolvedItems.items;
742
768
 
743
- var _useState = React.useState([]),
769
+ var _useState = React.useState(initialSelectedItems),
744
770
  selectedItems = _useState[0],
745
771
  setSelectedItems = _useState[1];
746
772
 
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.cjs.development.js","sources":["../src/DownshiftProvider.tsx","../src/DropdownList.tsx","../src/DropdownToggleButton.tsx","../src/DropdownLoadingDots.tsx","../src/BaseDropdown.tsx","../src/RegularDropdown.tsx","../src/SearchableDropdown.tsx","../src/DropdownInputGroup.tsx","../src/useNormalizedItems.ts","../src/useResolvedItems.ts","../src/Dropdown.tsx","../src/NativeDropdown.tsx","../src/MultiSelect.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport Downshift, {\n ControllerStateAndHelpers,\n DownshiftState,\n StateChangeOptions,\n} from 'downshift';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport classNames from 'classnames';\n\nconst DownshiftContext =\n React.createContext<ControllerStateAndHelpers<NormalizedDropdownItemType> | null>(\n null,\n );\n\nexport type DownshiftProviderProps = {\n onChange?: (\n selectedItem: NormalizedDropdownItemType,\n stateAndHelpers: ControllerStateAndHelpers<NormalizedDropdownItemType>,\n ) => void;\n onInputValueChange?: (value: string) => void;\n inputValue?: string;\n initialSelectedItem?: NormalizedDropdownItemType;\n highlightFirstItemOnOpen?: boolean;\n className?: string;\n style?: React.CSSProperties;\n [key: string]: any;\n};\nexport const DownshiftProvider: React.FC<DownshiftProviderProps> = ({\n children,\n onChange = () => undefined,\n onInputValueChange = () => undefined,\n highlightFirstItemOnOpen = false,\n className,\n style,\n ...rest\n}) => {\n const handleStateChange = (\n changes: any,\n stateAndHelpers: ControllerStateAndHelpers<NormalizedDropdownItemType>,\n ) => {\n if (\n changes.type ===\n Downshift.stateChangeTypes.controlledPropUpdatedSelectedItem\n ) {\n return;\n }\n if ('selectedItem' in changes) {\n onChange(changes.selectedItem, stateAndHelpers);\n } else if ('inputValue' in changes) {\n onInputValueChange(changes.inputValue);\n }\n };\n\n const stateReducer = (\n _: DownshiftState<NormalizedDropdownItemType>,\n changes: StateChangeOptions<NormalizedDropdownItemType>,\n ): Partial<StateChangeOptions<NormalizedDropdownItemType>> => {\n if (highlightFirstItemOnOpen) {\n const wasJustOpened = 'isOpen' in changes && changes.isOpen;\n if (wasJustOpened) {\n return { ...changes, highlightedIndex: 0 };\n }\n }\n return changes;\n };\n\n return (\n <Downshift\n itemToString={item => (item ? item.label : '')}\n onStateChange={handleStateChange}\n stateReducer={stateReducer}\n {...rest}\n >\n {args => (\n <div className={classNames('eds-input-group', className)} style={style}>\n {/* This div is required by Downshift */}\n <DownshiftContext.Provider value={args}>\n {children}\n </DownshiftContext.Provider>\n </div>\n )}\n </Downshift>\n );\n};\n\nexport const useDownshift: () => ControllerStateAndHelpers<NormalizedDropdownItemType> =\n () => {\n const context = React.useContext(DownshiftContext);\n if (!context) {\n throw new Error('You need to wrap your component in a DownshiftProvider');\n }\n return context;\n };\n","import React from 'react';\nimport classNames from 'classnames';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { useDownshift } from './DownshiftProvider';\nimport { CheckIcon } from '@entur/icons';\nimport './DropdownList.scss';\n\nexport type DropdownListProps = {\n items: NormalizedDropdownItemType[];\n [key: string]: any;\n};\n\nexport const DropdownList: React.FC<DropdownListProps> = ({\n items,\n ...rest\n}) => {\n const { highlightedIndex, isOpen, selectedItem, getItemProps, getMenuProps } =\n useDownshift();\n\n return (\n <ul\n className={classNames('eds-dropdown-list', {\n 'eds-dropdown-list--open': isOpen,\n })}\n {...getMenuProps()}\n {...rest}\n >\n {isOpen\n ? items.map((item, index) => (\n // eslint-disable-next-line react/jsx-key\n <li\n className={classNames('eds-dropdown-list__item', {\n 'eds-dropdown-list__item--highlighted':\n highlightedIndex === index,\n 'eds-dropdown-list__item--selected': selectedItem === item,\n })}\n {...getItemProps({ key: `${index}${item.value}`, item, index })}\n >\n <span>{item.label}</span>\n {item.icons && (\n <span>\n {item.icons.map((Icon, index) => (\n <Icon\n key={index}\n inline\n className=\"eds-dropdown-list__item-icon\"\n />\n ))}\n </span>\n )}\n {selectedItem === item && <CheckIcon />}\n </li>\n ))\n : null}\n </ul>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport { useDownshift } from './DownshiftProvider';\nimport './DropdownToggleButton.scss';\n\nexport const DropdownToggleButton: () => JSX.Element = () => {\n const { getToggleButtonProps, isOpen } = useDownshift();\n return (\n <button\n {...getToggleButtonProps({\n className: classNames('eds-dropdown__toggle-button', {\n 'eds-dropdown__toggle-button--open': isOpen,\n }),\n })}\n tabIndex=\"-1\"\n type=\"button\"\n >\n <DownArrowIcon />\n </button>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { VisuallyHidden } from '@entur/a11y';\nimport { LoadingDots } from '@entur/loader';\nimport './InlineSpinner.scss';\n\nexport type InlineSpinnerType = {\n /** Ekstra klassenavn */\n className?: string;\n /** Tekst for skjermlesere */\n children: string;\n [key: string]: any;\n};\nexport const DropdownLoadingDots: React.FC<InlineSpinnerType> = ({\n className,\n children,\n ...rest\n}) => (\n <div className={classNames('eds-inline-spinner', className)} {...rest}>\n <LoadingDots />\n <VisuallyHidden>{children}</VisuallyHidden>\n </div>\n);\n","import React from 'react';\nimport { BaseFormControl } from '@entur/form';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { DropdownList } from './DropdownList';\nimport { DropdownToggleButton } from './DropdownToggleButton';\nimport { DropdownLoadingDots } from './DropdownLoadingDots';\nimport { CloseSmallIcon } from '@entur/icons';\nimport './BaseDropdown.scss';\nimport { useDownshift } from './DownshiftProvider';\nimport { space } from '@entur/tokens';\n\ntype BaseDropdownProps = {\n className?: string;\n disabled?: boolean;\n items: NormalizedDropdownItemType[];\n loading?: boolean;\n loadingText?: string;\n placeholder?: string;\n style?: { [key: string]: any };\n listStyle?: { [key: string]: any };\n isFilled?: boolean;\n disableLabelAnimation?: boolean;\n [key: string]: any;\n};\nexport const BaseDropdown: React.FC<BaseDropdownProps> = ({\n children,\n className,\n items,\n loading = false,\n loadingText = 'Loading...',\n //eslint-disable-next-line\n placeholder,\n style,\n listStyle,\n clearable,\n label,\n isFilled = false,\n disableLabelAnimation,\n ...rest\n}) => {\n const { getLabelProps } = useDownshift();\n return (\n <div className=\"eds-dropdown-wrapper\" style={style}>\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <BaseFormControl\n append={\n <Appendix\n clearable={clearable}\n loading={loading}\n loadingText={loadingText}\n readOnly={...rest.readOnly}\n />\n }\n className={className}\n label={label}\n isFilled={isFilled}\n labelProps={getLabelProps()}\n disableLabelAnimation={disableLabelAnimation}\n {...rest}\n >\n {children}\n </BaseFormControl>\n <DropdownList\n items={items}\n style={{\n position: 'absolute',\n top: `${space.extraLarge3 + space.extraSmall}px`,\n ...listStyle,\n }}\n {...rest}\n />\n </div>\n );\n};\n\nconst ClearButton: React.FC<{ [key: string]: any }> = ({ ...props }) => {\n const { clearSelection, selectedItem } = useDownshift();\n return (\n <>\n {selectedItem && (\n <button\n className=\"eds-dropdown__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => clearSelection()}\n {...props}\n >\n <CloseSmallIcon />\n </button>\n )}\n {selectedItem && <div className=\"eds-dropdown__divider\"></div>}\n </>\n );\n};\n\nconst Appendix: React.FC<{\n clearable: boolean;\n loading: boolean;\n loadingText: string;\n readOnly: boolean;\n}> = ({ clearable, loading, loadingText, readOnly }) => {\n if (loading) {\n return <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;\n }\n if (readOnly) {\n return null;\n }\n return clearable ? (\n <>\n <ClearButton></ClearButton> <DropdownToggleButton />\n </>\n ) : (\n <DropdownToggleButton />\n );\n};\n","import React from 'react';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { useDownshift } from './DownshiftProvider';\nimport { BaseDropdown } from './BaseDropdown';\n\ntype RegularDropdownProps = {\n items: NormalizedDropdownItemType[];\n disabled?: boolean;\n placeholder?: string;\n loading?: boolean;\n loadingText?: string;\n className?: string;\n selectOnTab?: boolean;\n openOnFocus?: boolean;\n listStyle?: { [key: string]: any };\n disableLabelAnimation?: boolean;\n clearable?: boolean;\n [key: string]: any;\n};\nexport const RegularDropdown: React.FC<RegularDropdownProps> = ({\n disabled,\n placeholder = 'Vennligst velg',\n selectOnTab = false,\n openOnFocus = false,\n listStyle,\n items,\n label,\n disableLabelAnimation,\n loading,\n loadingText,\n className,\n clearable,\n ...rest\n}) => {\n const {\n getToggleButtonProps,\n selectedItem,\n selectHighlightedItem,\n openMenu,\n isOpen,\n highlightedIndex,\n setHighlightedIndex,\n } = useDownshift();\n return (\n <BaseDropdown\n disabled={disabled}\n listStyle={listStyle}\n items={items}\n label={label}\n isFilled={selectedItem ? true : placeholder.length !== 0}\n disableLabelAnimation={disableLabelAnimation}\n loading={loading}\n loadingText={loadingText}\n className={className}\n clearable={clearable}\n {...rest}\n >\n <button\n {...getToggleButtonProps({\n className: 'eds-form-control eds-dropdown__selected-item',\n style: { textAlign: 'left' },\n disabled,\n type: 'button',\n onKeyDown: e => {\n if (selectOnTab && e.key === 'Tab') {\n selectHighlightedItem();\n }\n\n if (isOpen) {\n const keyDownValue = e.key;\n const matchedItems = items\n .map((item, index) => ({ ...item, index }))\n .filter(item => {\n const firstCharacter = item.label\n .trim()\n .charAt(0)\n .toLowerCase();\n return firstCharacter === keyDownValue;\n });\n\n const nextHighlightItem = matchedItems.find(\n item => item.index > (highlightedIndex ?? 0),\n );\n\n if (nextHighlightItem) {\n setHighlightedIndex(nextHighlightItem.index);\n } else if (matchedItems.length > 0) {\n setHighlightedIndex(matchedItems[0].index);\n }\n }\n },\n onFocus: () => {\n if (openOnFocus) {\n !isOpen && openMenu();\n }\n },\n ...rest,\n })}\n >\n {selectedItem ? selectedItem.label : placeholder}\n </button>\n </BaseDropdown>\n );\n};\n","import React from 'react';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { BaseDropdown } from './BaseDropdown';\nimport { useDownshift } from './DownshiftProvider';\n\ntype SearchableDropdownProps = {\n className?: string;\n disabled?: boolean;\n items: NormalizedDropdownItemType[];\n loading?: boolean;\n loadingText?: string;\n placeholder?: string;\n prepend?: React.ReactNode;\n readOnly?: boolean;\n selectOnTab?: boolean;\n openOnFocus?: boolean;\n listStyle?: { [key: string]: any };\n clearable: boolean;\n itemFilter?: (item: NormalizedDropdownItemType) => boolean;\n disableLabelAnimation?: boolean;\n [key: string]: any;\n};\n\nfunction LowerCaseFilterTest(\n item: NormalizedDropdownItemType,\n input: string | null,\n) {\n if (!input) {\n return true;\n }\n const sanitizeEscapeCharacters = input.replace(\n /[-/\\\\^$*+?.()|[\\]{}]/g,\n '\\\\$&',\n );\n const inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');\n return inputRegex.test(item.label);\n}\n\nexport const SearchableDropdown: React.FC<SearchableDropdownProps> = ({\n disabled = false,\n className,\n items,\n loading,\n loadingText,\n readOnly = false,\n prepend,\n selectOnTab = false,\n openOnFocus = false,\n listStyle,\n clearable,\n itemFilter = (item: NormalizedDropdownItemType, inputValue: string | null) =>\n LowerCaseFilterTest(item, inputValue),\n label,\n disableLabelAnimation,\n ...rest\n}) => {\n const {\n getInputProps,\n inputValue,\n selectHighlightedItem,\n isOpen,\n openMenu,\n selectedItem,\n } = useDownshift();\n\n const filteredItems = React.useMemo(() => {\n return items.filter(item => itemFilter(item, inputValue));\n }, [inputValue, items, itemFilter]);\n\n return (\n <BaseDropdown\n items={filteredItems}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n loading={loading}\n loadingText={loadingText}\n prepend={prepend}\n listStyle={listStyle}\n clearable={clearable}\n label={label}\n isFilled={selectedItem ? true : false}\n disableLabelAnimation={disableLabelAnimation}\n >\n <input\n {...getInputProps({\n disabled,\n readOnly,\n className: 'eds-form-control eds-dropdown__input',\n onKeyDown: e => {\n if (selectOnTab && e.key === 'Tab') {\n selectHighlightedItem();\n }\n },\n onFocus: () => {\n if (openOnFocus) {\n !isOpen && openMenu();\n }\n },\n ...rest,\n })}\n />\n </BaseDropdown>\n );\n};\n","import { FeedbackText, VariantProvider, VariantType } from '@entur/form';\nimport React from 'react';\n\nexport type DropdownInputGroupProps = {\n feedback?: string;\n variant?: VariantType;\n className?: string;\n style?: { [key: string]: any };\n};\nexport const DropdownInputGroup: React.FC<DropdownInputGroupProps> = ({\n children,\n feedback,\n variant,\n className,\n style,\n}) => {\n return (\n <VariantProvider variant={variant}>\n <div className={className} style={style}>\n {children}\n {feedback && variant && (\n <FeedbackText variant={variant}>{feedback}</FeedbackText>\n )}\n </div>\n </VariantProvider>\n );\n};\n","import React from 'react';\n\n/** A dropdown item has a string label and a string value */\nexport type NormalizedDropdownItemType = {\n value: string;\n label: string;\n icons?: React.ComponentType<any>[];\n};\n\nexport type DropdownItemType =\n | { value?: string; label: string; icons?: React.ComponentType<any>[] }\n | string;\nexport const useNormalizedItems = (items: DropdownItemType[]) =>\n React.useMemo(\n () =>\n items.map(item => {\n if (typeof item == 'string') {\n return { value: item, label: item };\n }\n\n if (!('value' in item)) {\n return { ...item, value: item.label };\n }\n return item as NormalizedDropdownItemType;\n }),\n [items],\n );\n","import React from 'react';\nimport { debounce } from '@entur/utils';\nimport { DropdownItemType, useNormalizedItems } from './useNormalizedItems';\n\nconst useIsMounted = () => {\n const isMountedRef = React.useRef(true);\n React.useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef.current;\n};\n\ntype AsyncDropdownItemType = (inputType: string) => Promise<DropdownItemType[]>;\ntype SyncDropdownItemType = (inputType: string) => DropdownItemType[];\nexport type PotentiallyAsyncDropdownItemType =\n | DropdownItemType[]\n | SyncDropdownItemType\n | AsyncDropdownItemType;\n\ntype ResolverState = {\n items: DropdownItemType[];\n loading: boolean;\n};\n\ntype ResolverAction =\n | {\n type: 'request results';\n }\n | {\n type: 'received results';\n payload: DropdownItemType[];\n };\n\nconst reducer = (_state: ResolverState, action: ResolverAction) => {\n switch (action.type) {\n case 'request results':\n return { items: [], loading: true };\n case 'received results':\n return { items: action.payload, loading: false };\n }\n};\n\nexport const useResolvedItems = (\n /** The list of items, or an async function that resolves the list of items */\n itemsOrItemsResolver: PotentiallyAsyncDropdownItemType,\n /** The time to wait after the input changes to the fetchItems method is called */\n debounceTimeout: number = 250,\n) => {\n const isItemsFunction = typeof itemsOrItemsResolver === 'function';\n\n // Here, we normalize the itemsResolver argument to an async function, so we\n // can use it without thinking about the differences later\n const itemsResolver = React.useMemo(\n () =>\n isItemsFunction\n ? (itemsOrItemsResolver as AsyncDropdownItemType)\n : () => Promise.resolve(itemsOrItemsResolver as DropdownItemType[]),\n [itemsOrItemsResolver, isItemsFunction],\n );\n\n const [{ items, loading }, dispatch] = React.useReducer(reducer, {\n items: isItemsFunction ? [] : (itemsOrItemsResolver as DropdownItemType[]),\n loading: false,\n });\n\n // This is a way to check whether or not the dropdown is still in the\n // document. We use it below to make sure we're not updating the state of\n // an unmounted component.\n const isMounted = useIsMounted();\n\n // Next, let's create the fetching function. This should be called whenever\n // the input value changes\n const fetchItems = React.useCallback(\n async (inputValue: string) => {\n if (!isMounted) {\n return;\n }\n dispatch({ type: 'request results' });\n const resolvedItems = await itemsResolver(inputValue);\n if (isMounted) {\n dispatch({ type: 'received results', payload: resolvedItems });\n }\n },\n [itemsResolver, isMounted],\n );\n\n const normalizedItems = useNormalizedItems(items);\n React.useEffect(() => {\n // Let's fetch the list initially if it's specified\n if (isItemsFunction) {\n fetchItems('');\n }\n }, [isItemsFunction, fetchItems]);\n\n return {\n items: normalizedItems,\n loading: isItemsFunction ? loading : false,\n fetchItems: debounce(fetchItems, debounceTimeout),\n };\n};\n","import React from 'react';\nimport { VariantType } from '@entur/form';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { RegularDropdown } from './RegularDropdown';\nimport { DownshiftProvider } from './DownshiftProvider';\nimport { SearchableDropdown } from './SearchableDropdown';\nimport { DropdownInputGroup } from './DropdownInputGroup';\nimport {\n useResolvedItems,\n PotentiallyAsyncDropdownItemType,\n} from './useResolvedItems';\n\nexport type DropdownProps = {\n /** Tilgjengelige valg i dropdownen */\n items: PotentiallyAsyncDropdownItemType;\n /** Valgt verdi. Bruk null for ingen verdi. */\n value?: string | null;\n /** Om man skal kunne søke i dropdownen eller ikke */\n searchable?: boolean;\n /** Beskrivende tekst som forklarer feltet */\n label?: string;\n /** Tooltip for labelen */\n labelTooltip?: string;\n /** Hvilken valideringsvariant som gjelder */\n variant?: VariantType;\n /** Valideringsmelding, brukes sammen med `variant` */\n feedback?: string;\n /** Tekst eller ikon som kommer før dropdownen */\n prepend?: React.ReactNode;\n /** Deaktiver dropdownen */\n disabled?: boolean;\n /** Setter dropdownen i read-only modus */\n readOnly?: boolean;\n /** Placeholder-tekst når ingenting er satt */\n placeholder?: string;\n /** En tekst som beskriver hva som skjer når man venter på items */\n loadingText?: string;\n /** Callback når brukeren endrer valg */\n onChange?: (selectedItem: NormalizedDropdownItemType | null) => void;\n /** Lar brukeren velge ved å \"tæbbe\" seg ut av komponenten */\n selectOnTab?: boolean;\n /** Om man skal vise items ved fokusering av input-feltet, før man skriver inn noe */\n openOnFocus?: boolean;\n /** Antall millisekunder man venter før man kaller en potensiell items-funksjon */\n debounceTimeout?: number;\n /** Om man skal ha muliget for å nullstille Dropdownen\n * @default false\n */\n clearable?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Marker første valgmulighet automatisk */\n highlightFirstItemOnOpen?: boolean;\n /** Styling som sendes ned til Dropdown-lista */\n listStyle?: { [key: string]: any };\n /** Filtreringen som blir brukt dersom man har en searchable Dropdown\n * @default Enkel tekstsammenligning\n */\n itemFilter?: (item: NormalizedDropdownItemType) => boolean;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Alle ekstra props videresendes til Downshift */\n [key: string]: any;\n};\nexport const Dropdown: React.FC<DropdownProps> = ({\n highlightFirstItemOnOpen,\n debounceTimeout,\n disabled,\n feedback,\n items,\n label,\n loadingText,\n onChange = () => undefined,\n placeholder,\n prepend,\n readOnly,\n searchable,\n selectOnTab,\n openOnFocus,\n variant,\n value,\n clearable = false,\n className,\n style,\n listStyle,\n itemFilter,\n disableLabelAnimation,\n ...rest\n}) => {\n const {\n items: normalizedItems,\n loading,\n fetchItems,\n } = useResolvedItems(items, debounceTimeout);\n\n const selectedItem =\n value === undefined\n ? undefined\n : normalizedItems.find(item => value === item.value) || null;\n\n const RenderedDropdown = searchable ? SearchableDropdown : RegularDropdown;\n const searchAbleProps = searchable\n ? { itemFilter: itemFilter, name: rest.name, 'data-cy': rest['data-cy'] }\n : { name: rest.name, 'data-cy': rest['data-cy'] };\n return (\n <DownshiftProvider\n selectedItem={selectedItem}\n onInputValueChange={fetchItems}\n onChange={onChange}\n value={value}\n highlightFirstItemOnOpen={highlightFirstItemOnOpen}\n className={className}\n style={style}\n {...rest}\n >\n <DropdownInputGroup feedback={feedback} variant={variant}>\n <RenderedDropdown\n label={label}\n items={normalizedItems}\n loading={loading}\n loadingText={loadingText}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n prepend={prepend}\n selectOnTab={selectOnTab}\n openOnFocus={openOnFocus}\n listStyle={listStyle}\n clearable={clearable}\n disableLabelAnimation={disableLabelAnimation}\n {...searchAbleProps}\n />\n </DropdownInputGroup>\n </DownshiftProvider>\n );\n};\n","import { BaseFormControl, VariantType } from '@entur/form';\nimport { DownArrowIcon } from '@entur/icons';\nimport { useRandomId } from '@entur/utils';\nimport React from 'react';\nimport { DropdownLoadingDots } from './DropdownLoadingDots';\nimport './NativeDropdown.scss';\nimport {\n PotentiallyAsyncDropdownItemType,\n useResolvedItems,\n} from './useResolvedItems';\n\nexport type NativeDropdownProps = {\n /** Ekstra klassenavn */\n className?: string;\n /**\n * For å deaktivere dropdownen\n * @default false\n **/\n disabled?: boolean;\n /** Valideringsmelding, brukes sammen med `variant` */\n feedback?: string;\n /** Alle valg for dropdownen å ha */\n items: PotentiallyAsyncDropdownItemType;\n /** Beskrivende tekst som forklarer feltet */\n label: string;\n /** En callback for endringer av value */\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\n /** Tekst eller ikon som kommer før dropdownen */\n prepend?: React.ReactNode;\n /**\n * Setter dropdownen i read-only modus\n * @default false\n **/\n readOnly?: boolean;\n /** Den valgte verdien */\n value?: string;\n /** Hvilken valideringsvariant som gjelder */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n [key: string]: any;\n};\n\nexport const NativeDropdown: React.FC<NativeDropdownProps> = ({\n className,\n disabled = false,\n readOnly = false,\n items,\n loadingText,\n prepend,\n style,\n label,\n variant,\n feedback,\n disableLabelAnimation,\n ...rest\n}) => {\n const { items: normalizedItems, loading } = useResolvedItems(items);\n\n let rightSideIcon: JSX.Element | null = <DownArrowIcon inline={true} />;\n if (disabled || readOnly) {\n rightSideIcon = null;\n } else if (loading) {\n rightSideIcon = <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;\n }\n const nativeDropdownId = useRandomId('eds-native-dropdown');\n return (\n <BaseFormControl\n disabled={disabled}\n readOnly={readOnly}\n prepend={prepend}\n append={rightSideIcon}\n className={className}\n style={style}\n label={label}\n variant={variant}\n feedback={feedback}\n labelId={nativeDropdownId}\n disableLabelAnimation={disableLabelAnimation}\n isFilled={true}\n >\n <select\n aria-invalid={variant === 'error'}\n className=\"eds-form-control eds-dropdown\"\n disabled={disabled || readOnly}\n {...rest}\n >\n {normalizedItems.map(item => (\n <option key={item.value} value={item.value}>\n {item.label}\n </option>\n ))}\n </select>\n </BaseFormControl>\n );\n};\n","import React, { useState } from 'react';\nimport {\n useSelect,\n UseSelectProps,\n // StateChangeOptions,\n // UseSelectStateChangeOptions,\n} from 'downshift';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { BaseFormControl, VariantType } from '@entur/form';\nimport {\n PotentiallyAsyncDropdownItemType,\n useResolvedItems,\n} from './useResolvedItems';\nimport { DropdownLoadingDots } from './DropdownLoadingDots';\nimport { useRandomId } from '@entur/utils';\nimport classNames from 'classnames';\nimport { CloseIcon, DownArrowIcon } from '@entur/icons';\nimport { space } from '@entur/tokens';\nimport './MultiSelect.scss';\nimport './DropdownList.scss';\n\nconst MultiSelectContext = React.createContext<{\n isOpen: boolean;\n reset: () => void;\n getToggleButtonProps: any;\n openMenu: () => void;\n openOnFocus?: boolean;\n} | null>(null);\nconst useMultiSelectContext = () => {\n const context = React.useContext(MultiSelectContext);\n if (!context) {\n throw new Error('You need to wrap your component in a DownshiftProvider');\n }\n return context;\n};\n\nfunction stateReducer(\n state: any, //StateChangeOptions<NormalizedDropdownItemType>,\n actionAndChanges: any, //UseSelectStateChangeOptions<NormalizedDropdownItemType>,\n) {\n const { changes, type } = actionAndChanges;\n switch (type) {\n case useSelect.stateChangeTypes.MenuKeyDownEnter:\n case useSelect.stateChangeTypes.MenuKeyDownSpaceButton:\n case useSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen: true, // keep menu open after selection.\n highlightedIndex: state.highlightedIndex,\n };\n default:\n return changes;\n }\n}\ntype MultiSelectProps = {\n /** Tilgjengelige valg i MultiSelect */\n items: PotentiallyAsyncDropdownItemType;\n /** Tekst som vises i boksen når elementer er valgt */\n itemsSelectedLabel?: (\n selectedItems: NormalizedDropdownItemType[],\n numberOfItems?: number,\n ) => string;\n /** Beskrivende tekst som forklarer feltet */\n label?: string;\n /** Hvilken valideringsvariant som gjelder */\n variant?: VariantType;\n /** Valideringsmelding, brukes sammen med `variant` */\n feedback?: string;\n /** Tekst eller ikon som kommer før MultiSelect */\n prepend?: React.ReactNode;\n /** Deaktiver dropdownen */\n disabled?: boolean;\n /** Setter dropdownen i read-only modus */\n readOnly?: boolean;\n /** Placeholder-tekst når ingenting er satt */\n placeholder?: string;\n /** En tekst som beskriver hva som skjer når man venter på items */\n loadingText?: string;\n /** Callback når brukeren endrer valg */\n onChange?: (e: any) => void;\n /** Om man skal vise items ved fokusering av input-feltet, før man skriver inn noe\n * @default false\n */\n openOnFocus?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Styling som sendes ned til MultiSelect-lista */\n listStyle?: { [key: string]: any };\n /** Antall millisekunder man venter før man kaller en potensiell items-funksjon\n * @default 250\n */\n debounceTimeout?: number;\n /** Om man skal ha muliget for å nullstille Dropdownen\n * @default false\n */\n clearable?: boolean;\n loading?: boolean;\n style?: React.CSSProperties;\n} & UseSelectProps<NormalizedDropdownItemType>;\n\nexport const MultiSelect: React.FC<MultiSelectProps> = ({\n items: input,\n itemsSelectedLabel = items => SelectedItemsLabel(items),\n label,\n feedback,\n variant,\n disabled,\n readOnly = false,\n onChange = () => undefined,\n className,\n clearable = false,\n loading = false,\n loadingText = '',\n openOnFocus = false,\n style,\n listStyle,\n debounceTimeout,\n ...rest\n}) => {\n const { items } = useResolvedItems(input, debounceTimeout);\n const [selectedItems, setSelectedItems] = useState<\n NormalizedDropdownItemType[]\n >([]);\n\n const reset = React.useCallback(() => {\n setSelectedItems([]);\n }, []);\n const {\n isOpen,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n highlightedIndex,\n getItemProps,\n openMenu,\n } = useSelect<NormalizedDropdownItemType>({\n items,\n stateReducer,\n selectedItem: null,\n onSelectedItemChange: ({ selectedItem }) => {\n if (!selectedItem) {\n return;\n }\n const index = selectedItems.indexOf(selectedItem);\n if (index > 0) {\n const slicedItemList = [\n ...selectedItems.slice(0, index),\n ...selectedItems.slice(index + 1),\n ];\n setSelectedItems(slicedItemList);\n onChange(slicedItemList);\n } else if (index === 0) {\n const slicedItemList = [...selectedItems.slice(1)];\n setSelectedItems(slicedItemList);\n onChange(slicedItemList);\n } else {\n const slicedItemList = [...selectedItems, selectedItem];\n setSelectedItems(slicedItemList);\n onChange(slicedItemList);\n }\n },\n ...rest,\n });\n const buttonText = selectedItems.length\n ? itemsSelectedLabel(selectedItems)\n : '';\n const multiSelectId = useRandomId('eds-multiselect');\n\n return (\n <MultiSelectContext.Provider\n value={{ isOpen, reset, getToggleButtonProps, openMenu, openOnFocus }}\n >\n <div\n className={classNames(\n 'eds-multiselect',\n 'eds-dropdown-wrapper',\n className,\n )}\n style={style}\n >\n <BaseFormControl\n label={label}\n labelId={multiSelectId}\n labelProps={...getLabelProps()}\n feedback={feedback}\n variant={variant}\n isFilled={selectedItems.length > 0 || isOpen}\n disabled={disabled}\n readOnly={readOnly}\n append={\n <Appendix\n hasSelected={clearable && selectedItems.length > 0}\n loading={loading}\n loadingText={loadingText}\n readOnly={readOnly}\n />\n }\n >\n <button\n {...getToggleButtonProps({\n style: {\n textAlign: 'left',\n },\n type: 'button',\n className: 'eds-form-control eds-multiselect__button',\n })}\n >\n {buttonText}\n </button>\n </BaseFormControl>\n <ul\n className={classNames('eds-dropdown-list', {\n 'eds-dropdown-list--open': isOpen,\n })}\n {...getMenuProps({\n style: {\n position: 'absolute',\n top: `${space.extraLarge3 + space.extraSmall}px`,\n ...listStyle,\n },\n })}\n >\n {isOpen &&\n items.map((item, index) => (\n <li\n className={classNames('eds-dropdown-list__item', {\n 'eds-dropdown-list__item--highlighted':\n highlightedIndex === index,\n 'eds-dropdown-list__item--selected':\n selectedItems.includes(item),\n })}\n key={`${item}${index}`}\n {...getItemProps({\n item,\n index,\n })}\n style={{ display: 'flex' }}\n >\n <span style={{ display: 'flex' }}>\n <span\n className={classNames('eds-multiselect-checkbox', {\n 'eds-multiselect-checkbox--checked':\n selectedItems.includes(item),\n })}\n >\n <CheckboxIcon />\n </span>\n <span className=\"eds-multiselect__item-label\">\n {item.label}\n </span>\n </span>\n {item.icons && (\n <span>\n {item.icons.map((Icon, index) => (\n <Icon\n key={index}\n inline\n className=\"eds-dropdown-list__item-icon\"\n />\n ))}\n </span>\n )}\n </li>\n ))}\n </ul>\n </div>\n </MultiSelectContext.Provider>\n );\n};\n\nconst ClearButton: React.FC<{ [key: string]: any }> = ({ ...props }) => {\n const { reset } = useMultiSelectContext();\n return (\n <>\n <button\n className=\"eds-dropdown__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => reset()}\n {...props}\n >\n <CloseIcon />\n </button>\n <div className=\"eds-dropdown__divider\"></div>\n </>\n );\n};\n\nconst Appendix: React.FC<{\n loading: boolean;\n loadingText: string;\n readOnly: boolean;\n hasSelected: boolean;\n}> = ({ loading, loadingText, readOnly, hasSelected }) => {\n if (loading) {\n return <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;\n }\n if (readOnly) {\n return null;\n }\n return hasSelected ? (\n <>\n <ClearButton></ClearButton>\n <DropdownToggleButton />\n </>\n ) : (\n <DropdownToggleButton />\n );\n};\n\nconst DropdownToggleButton = () => {\n const { getToggleButtonProps, isOpen, openMenu, openOnFocus } =\n useMultiSelectContext();\n return (\n <button\n {...getToggleButtonProps({\n className: classNames('eds-dropdown__toggle-button', {\n 'eds-dropdown__toggle-button--open': isOpen,\n }),\n onFocus: () => {\n if (openOnFocus) {\n openMenu();\n }\n },\n })}\n type=\"button\"\n >\n <DownArrowIcon />\n </button>\n );\n};\n\nconst CheckboxIcon: React.FC = () => {\n return (\n <svg\n className=\"eds-checkbox-icon\"\n width=\"11px\"\n height=\"9px\"\n viewBox=\"6 11 37 33\"\n >\n <path\n className=\"eds-checkbox-icon__path\"\n d=\"M14.1 27.2l7.1 7.2 14.6-14.8\"\n fill=\"none\"\n />\n </svg>\n );\n};\n\nfunction SelectedItemsLabel(items: NormalizedDropdownItemType[]) {\n return items.length < 3\n ? items.map(item => item.label).toString()\n : `${items.length} elementer valgt`;\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('dropdown', 'form', 'a11y', 'chip');\n\nexport * from './Dropdown';\nexport * from './NativeDropdown';\nexport * from './MultiSelect';\nexport * from './MultiSelect';\n"],"names":["DownshiftContext","React","createContext","DownshiftProvider","children","onChange","undefined","onInputValueChange","highlightFirstItemOnOpen","className","style","rest","handleStateChange","changes","stateAndHelpers","type","Downshift","stateChangeTypes","controlledPropUpdatedSelectedItem","selectedItem","inputValue","stateReducer","_","wasJustOpened","isOpen","highlightedIndex","itemToString","item","label","onStateChange","args","classNames","Provider","value","useDownshift","context","useContext","Error","DropdownList","items","getItemProps","getMenuProps","map","index","key","icons","Icon","inline","CheckIcon","DropdownToggleButton","getToggleButtonProps","tabIndex","DownArrowIcon","DropdownLoadingDots","LoadingDots","VisuallyHidden","BaseDropdown","loading","loadingText","placeholder","listStyle","clearable","isFilled","disableLabelAnimation","getLabelProps","BaseFormControl","append","Appendix","readOnly","labelProps","position","top","space","extraLarge3","extraSmall","ClearButton","props","clearSelection","onClick","CloseSmallIcon","RegularDropdown","disabled","selectOnTab","openOnFocus","selectHighlightedItem","openMenu","setHighlightedIndex","length","textAlign","onKeyDown","e","keyDownValue","matchedItems","filter","firstCharacter","trim","charAt","toLowerCase","nextHighlightItem","find","onFocus","LowerCaseFilterTest","input","sanitizeEscapeCharacters","replace","inputRegex","RegExp","test","SearchableDropdown","prepend","itemFilter","getInputProps","filteredItems","useMemo","DropdownInputGroup","feedback","variant","VariantProvider","FeedbackText","useNormalizedItems","useIsMounted","isMountedRef","useRef","useEffect","current","reducer","_state","action","payload","useResolvedItems","itemsOrItemsResolver","debounceTimeout","isItemsFunction","itemsResolver","Promise","resolve","useReducer","dispatch","isMounted","fetchItems","useCallback","resolvedItems","normalizedItems","debounce","Dropdown","searchable","RenderedDropdown","searchAbleProps","name","NativeDropdown","rightSideIcon","nativeDropdownId","useRandomId","labelId","MultiSelectContext","useMultiSelectContext","state","actionAndChanges","useSelect","MenuKeyDownEnter","MenuKeyDownSpaceButton","ItemClick","MultiSelect","itemsSelectedLabel","SelectedItemsLabel","useState","selectedItems","setSelectedItems","reset","onSelectedItemChange","indexOf","slicedItemList","slice","buttonText","multiSelectId","hasSelected","includes","display","CheckboxIcon","CloseIcon","width","height","viewBox","d","fill","toString","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.cjs.development.js","sources":["../src/DownshiftProvider.tsx","../src/DropdownList.tsx","../src/DropdownToggleButton.tsx","../src/DropdownLoadingDots.tsx","../src/BaseDropdown.tsx","../src/RegularDropdown.tsx","../src/SearchableDropdown.tsx","../src/DropdownInputGroup.tsx","../src/useNormalizedItems.ts","../src/useResolvedItems.ts","../src/Dropdown.tsx","../src/NativeDropdown.tsx","../src/MultiSelect.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport Downshift, {\n ControllerStateAndHelpers,\n DownshiftState,\n StateChangeOptions,\n} from 'downshift';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport classNames from 'classnames';\n\nconst DownshiftContext =\n React.createContext<ControllerStateAndHelpers<NormalizedDropdownItemType> | null>(\n null,\n );\n\nexport type DownshiftProviderProps = {\n onChange?: (\n selectedItem: NormalizedDropdownItemType,\n stateAndHelpers: ControllerStateAndHelpers<NormalizedDropdownItemType>,\n ) => void;\n onInputValueChange?: (value: string) => void;\n inputValue?: string;\n initialSelectedItem?: NormalizedDropdownItemType;\n highlightFirstItemOnOpen?: boolean;\n className?: string;\n style?: React.CSSProperties;\n searchable?: boolean;\n [key: string]: any;\n};\nexport const DownshiftProvider: React.FC<DownshiftProviderProps> = ({\n children,\n onChange = () => undefined,\n onInputValueChange = () => undefined,\n highlightFirstItemOnOpen = false,\n className,\n style,\n searchable = false,\n ...rest\n}) => {\n const handleStateChange = (\n changes: any,\n stateAndHelpers: ControllerStateAndHelpers<NormalizedDropdownItemType>,\n ) => {\n if (\n changes.type ===\n Downshift.stateChangeTypes.controlledPropUpdatedSelectedItem\n ) {\n return;\n }\n if ('selectedItem' in changes) {\n onChange(changes.selectedItem, stateAndHelpers);\n } else if ('inputValue' in changes) {\n onInputValueChange(changes.inputValue);\n }\n };\n\n const stateReducer = (\n _: DownshiftState<NormalizedDropdownItemType>,\n changes: StateChangeOptions<NormalizedDropdownItemType>,\n ): Partial<StateChangeOptions<NormalizedDropdownItemType>> => {\n const highlightFirstOnOpen =\n highlightFirstItemOnOpen && 'isOpen' in changes && changes.isOpen;\n const highlightFirstItemIndex: Partial<\n StateChangeOptions<NormalizedDropdownItemType>\n > = highlightFirstOnOpen ? { highlightedIndex: 0 } : {};\n\n if (searchable) {\n const { type } = changes;\n\n switch (type) {\n case '__autocomplete_change_input__':\n return {\n // return normal changes.\n ...changes,\n ...highlightFirstItemIndex,\n };\n case '__autocomplete_click_item__':\n case '__autocomplete_keydown_enter__':\n case '__autocomplete_blur_input__':\n case '__autocomplete_mouseup__':\n return {\n ...changes,\n // if we had an item highlighted in the previous state.\n // we will reset input field value to blank\n inputValue: '',\n ...highlightFirstItemIndex,\n };\n default:\n return {\n ...changes,\n ...highlightFirstItemIndex,\n };\n }\n } else {\n return { ...changes, ...highlightFirstItemIndex };\n }\n };\n\n return (\n <Downshift\n itemToString={item => (item ? item.label : '')}\n onStateChange={handleStateChange}\n stateReducer={stateReducer}\n {...rest}\n >\n {args => (\n <div className={classNames('eds-input-group', className)} style={style}>\n {/* This div is required by Downshift */}\n <DownshiftContext.Provider value={args}>\n {children}\n </DownshiftContext.Provider>\n </div>\n )}\n </Downshift>\n );\n};\n\nexport const useDownshift: () => ControllerStateAndHelpers<NormalizedDropdownItemType> =\n () => {\n const context = React.useContext(DownshiftContext);\n if (!context) {\n throw new Error('You need to wrap your component in a DownshiftProvider');\n }\n return context;\n };\n","import React from 'react';\nimport classNames from 'classnames';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { useDownshift } from './DownshiftProvider';\nimport { CheckIcon } from '@entur/icons';\nimport './DropdownList.scss';\n\nexport type DropdownListProps = {\n items: NormalizedDropdownItemType[];\n [key: string]: any;\n};\n\nexport const DropdownList: React.FC<DropdownListProps> = ({\n items,\n ...rest\n}) => {\n const { highlightedIndex, isOpen, selectedItem, getItemProps, getMenuProps } =\n useDownshift();\n\n return (\n <ul\n className={classNames('eds-dropdown-list', {\n 'eds-dropdown-list--open': isOpen,\n })}\n {...getMenuProps()}\n {...rest}\n >\n {isOpen\n ? items.map((item, index) => (\n // eslint-disable-next-line react/jsx-key\n <li\n className={classNames('eds-dropdown-list__item', {\n 'eds-dropdown-list__item--highlighted':\n highlightedIndex === index,\n 'eds-dropdown-list__item--selected': selectedItem === item,\n })}\n {...getItemProps({ key: `${index}${item.value}`, item, index })}\n >\n <span>{item.label}</span>\n {item.icons && (\n <span>\n {item.icons.map((Icon, index) => (\n <Icon\n key={index}\n inline\n className=\"eds-dropdown-list__item-icon\"\n />\n ))}\n </span>\n )}\n {selectedItem === item && <CheckIcon />}\n </li>\n ))\n : null}\n </ul>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport { useDownshift } from './DownshiftProvider';\nimport './DropdownToggleButton.scss';\n\nexport const DropdownToggleButton: () => JSX.Element = () => {\n const { getToggleButtonProps, isOpen } = useDownshift();\n return (\n <button\n {...getToggleButtonProps({\n className: classNames('eds-dropdown__toggle-button', {\n 'eds-dropdown__toggle-button--open': isOpen,\n }),\n })}\n tabIndex=\"-1\"\n type=\"button\"\n >\n <DownArrowIcon />\n </button>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { VisuallyHidden } from '@entur/a11y';\nimport { LoadingDots } from '@entur/loader';\nimport './InlineSpinner.scss';\n\nexport type InlineSpinnerType = {\n /** Ekstra klassenavn */\n className?: string;\n /** Tekst for skjermlesere */\n children: string;\n [key: string]: any;\n};\nexport const DropdownLoadingDots: React.FC<InlineSpinnerType> = ({\n className,\n children,\n ...rest\n}) => (\n <div className={classNames('eds-inline-spinner', className)} {...rest}>\n <LoadingDots />\n <VisuallyHidden>{children}</VisuallyHidden>\n </div>\n);\n","import React from 'react';\nimport { BaseFormControl } from '@entur/form';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { DropdownList } from './DropdownList';\nimport { DropdownToggleButton } from './DropdownToggleButton';\nimport { DropdownLoadingDots } from './DropdownLoadingDots';\nimport { CloseSmallIcon } from '@entur/icons';\nimport './BaseDropdown.scss';\nimport { useDownshift } from './DownshiftProvider';\nimport { space } from '@entur/tokens';\n\ntype BaseDropdownProps = {\n className?: string;\n disabled?: boolean;\n items: NormalizedDropdownItemType[];\n loading?: boolean;\n loadingText?: string;\n placeholder?: string;\n style?: { [key: string]: any };\n listStyle?: { [key: string]: any };\n isFilled?: boolean;\n disableLabelAnimation?: boolean;\n [key: string]: any;\n};\nexport const BaseDropdown: React.FC<BaseDropdownProps> = ({\n children,\n className,\n items,\n loading = false,\n loadingText = 'Loading...',\n //eslint-disable-next-line\n placeholder,\n style,\n listStyle,\n clearable,\n label,\n isFilled = false,\n disableLabelAnimation,\n ...rest\n}) => {\n const { getLabelProps } = useDownshift();\n return (\n <div className=\"eds-dropdown-wrapper\" style={style}>\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <BaseFormControl\n append={\n <Appendix\n clearable={clearable}\n loading={loading}\n loadingText={loadingText}\n readOnly={...rest.readOnly}\n />\n }\n className={className}\n label={label}\n isFilled={isFilled}\n labelProps={getLabelProps()}\n disableLabelAnimation={disableLabelAnimation}\n {...rest}\n >\n {children}\n </BaseFormControl>\n <DropdownList\n items={items}\n style={{\n position: 'absolute',\n top: `${space.extraLarge3 + space.extraSmall}px`,\n ...listStyle,\n }}\n {...rest}\n />\n </div>\n );\n};\n\nconst ClearButton: React.FC<{ [key: string]: any }> = ({ ...props }) => {\n const { clearSelection, selectedItem } = useDownshift();\n return (\n <>\n {selectedItem && (\n <button\n className=\"eds-dropdown__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => clearSelection()}\n {...props}\n >\n <CloseSmallIcon />\n </button>\n )}\n {selectedItem && <div className=\"eds-dropdown__divider\"></div>}\n </>\n );\n};\n\nconst Appendix: React.FC<{\n clearable: boolean;\n loading: boolean;\n loadingText: string;\n readOnly: boolean;\n}> = ({ clearable, loading, loadingText, readOnly }) => {\n if (loading) {\n return <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;\n }\n if (readOnly) {\n return null;\n }\n return clearable ? (\n <>\n <ClearButton></ClearButton> <DropdownToggleButton />\n </>\n ) : (\n <DropdownToggleButton />\n );\n};\n","import React from 'react';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { useDownshift } from './DownshiftProvider';\nimport { BaseDropdown } from './BaseDropdown';\n\ntype RegularDropdownProps = {\n items: NormalizedDropdownItemType[];\n disabled?: boolean;\n placeholder?: string;\n loading?: boolean;\n loadingText?: string;\n className?: string;\n selectOnTab?: boolean;\n openOnFocus?: boolean;\n listStyle?: { [key: string]: any };\n disableLabelAnimation?: boolean;\n clearable?: boolean;\n [key: string]: any;\n};\nexport const RegularDropdown: React.FC<RegularDropdownProps> = ({\n disabled,\n placeholder = 'Vennligst velg',\n selectOnTab = false,\n openOnFocus = false,\n listStyle,\n items,\n label,\n disableLabelAnimation,\n loading,\n loadingText,\n className,\n clearable,\n ...rest\n}) => {\n const {\n getToggleButtonProps,\n selectedItem,\n selectHighlightedItem,\n openMenu,\n isOpen,\n highlightedIndex,\n setHighlightedIndex,\n } = useDownshift();\n return (\n <BaseDropdown\n disabled={disabled}\n listStyle={listStyle}\n items={items}\n label={label}\n isFilled={selectedItem ? true : placeholder.length !== 0}\n disableLabelAnimation={disableLabelAnimation}\n loading={loading}\n loadingText={loadingText}\n className={className}\n clearable={clearable}\n {...rest}\n >\n <button\n {...getToggleButtonProps({\n className: 'eds-form-control eds-dropdown__selected-item',\n style: { textAlign: 'left' },\n disabled,\n type: 'button',\n onKeyDown: e => {\n if (selectOnTab && e.key === 'Tab') {\n selectHighlightedItem();\n }\n\n if (isOpen) {\n const keyDownValue = e.key;\n const matchedItems = items\n .map((item, index) => ({ ...item, index }))\n .filter(item => {\n const firstCharacter = item.label\n .trim()\n .charAt(0)\n .toLowerCase();\n return firstCharacter === keyDownValue;\n });\n\n const nextHighlightItem = matchedItems.find(\n item => item.index > (highlightedIndex ?? 0),\n );\n\n if (nextHighlightItem) {\n setHighlightedIndex(nextHighlightItem.index);\n } else if (matchedItems.length > 0) {\n setHighlightedIndex(matchedItems[0].index);\n }\n }\n },\n onFocus: () => {\n if (openOnFocus) {\n !isOpen && openMenu();\n }\n },\n ...rest,\n })}\n >\n {selectedItem ? selectedItem.label : placeholder}\n </button>\n </BaseDropdown>\n );\n};\n","import React from 'react';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { BaseDropdown } from './BaseDropdown';\nimport { useDownshift } from './DownshiftProvider';\nimport './SearchableDropdown.scss';\n\ntype SearchableDropdownProps = {\n className?: string;\n disabled?: boolean;\n items: NormalizedDropdownItemType[];\n loading?: boolean;\n loadingText?: string;\n placeholder?: string;\n prepend?: React.ReactNode;\n readOnly?: boolean;\n selectOnTab?: boolean;\n openOnFocus?: boolean;\n listStyle?: { [key: string]: any };\n clearable: boolean;\n itemFilter?: (item: NormalizedDropdownItemType) => boolean;\n disableLabelAnimation?: boolean;\n [key: string]: any;\n};\n\nfunction LowerCaseFilterTest(\n item: NormalizedDropdownItemType,\n input: string | null,\n) {\n if (!input) {\n return true;\n }\n const sanitizeEscapeCharacters = input.replace(\n /[-/\\\\^$*+?.()|[\\]{}]/g,\n '\\\\$&',\n );\n const inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');\n return inputRegex.test(item.label);\n}\n\nexport const SearchableDropdown: React.FC<SearchableDropdownProps> = ({\n disabled = false,\n className,\n items,\n loading,\n loadingText,\n readOnly = false,\n prepend,\n selectOnTab = false,\n openOnFocus = false,\n listStyle,\n clearable,\n itemFilter = (item: NormalizedDropdownItemType, inputValue: string | null) =>\n LowerCaseFilterTest(item, inputValue),\n label,\n disableLabelAnimation,\n placeholder,\n ...rest\n}) => {\n const {\n getInputProps,\n inputValue,\n selectHighlightedItem,\n isOpen,\n openMenu,\n selectedItem,\n } = useDownshift();\n\n const filteredItems = React.useMemo(() => {\n return items.filter(item => itemFilter(item, inputValue));\n }, [inputValue, items, itemFilter]);\n\n return (\n <BaseDropdown\n items={filteredItems}\n disabled={disabled}\n readOnly={readOnly}\n className={className}\n loading={loading}\n loadingText={loadingText}\n prepend={prepend}\n listStyle={listStyle}\n clearable={clearable}\n label={label}\n isFilled={selectedItem ? true : false}\n disableLabelAnimation={disableLabelAnimation}\n >\n {selectedItem && !inputValue && (\n <span className=\"eds-dropdown__searchable-selected-item\">\n {selectedItem.label}\n </span>\n )}\n <input\n {...getInputProps({\n disabled,\n readOnly,\n className: 'eds-form-control eds-dropdown__input',\n onKeyDown: e => {\n if (selectOnTab && e.key === 'Tab') {\n selectHighlightedItem();\n }\n },\n onFocus: () => {\n if (openOnFocus) {\n !isOpen && openMenu();\n }\n },\n placeholder: selectedItem ? undefined : placeholder,\n ...rest,\n })}\n />\n </BaseDropdown>\n );\n};\n","import { FeedbackText, VariantProvider, VariantType } from '@entur/form';\nimport React from 'react';\n\nexport type DropdownInputGroupProps = {\n feedback?: string;\n variant?: VariantType;\n className?: string;\n style?: { [key: string]: any };\n};\nexport const DropdownInputGroup: React.FC<DropdownInputGroupProps> = ({\n children,\n feedback,\n variant,\n className,\n style,\n}) => {\n return (\n <VariantProvider variant={variant}>\n <div className={className} style={style}>\n {children}\n {feedback && variant && (\n <FeedbackText variant={variant}>{feedback}</FeedbackText>\n )}\n </div>\n </VariantProvider>\n );\n};\n","import React from 'react';\n\n/** A dropdown item has a string label and a string value */\nexport type NormalizedDropdownItemType = {\n value: string;\n label: string;\n icons?: React.ComponentType<any>[];\n};\n\nexport type DropdownItemType =\n | { value?: string; label: string; icons?: React.ComponentType<any>[] }\n | string;\nexport const useNormalizedItems = (items: DropdownItemType[]) =>\n React.useMemo(\n () =>\n items.map(item => {\n if (typeof item == 'string') {\n return { value: item, label: item };\n }\n\n if (!('value' in item)) {\n return { ...item, value: item.label };\n }\n return item as NormalizedDropdownItemType;\n }),\n [items],\n );\n","import React from 'react';\nimport { debounce } from '@entur/utils';\nimport { DropdownItemType, useNormalizedItems } from './useNormalizedItems';\n\nconst useIsMounted = () => {\n const isMountedRef = React.useRef(true);\n React.useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef.current;\n};\n\ntype AsyncDropdownItemType = (inputType: string) => Promise<DropdownItemType[]>;\ntype SyncDropdownItemType = (inputType: string) => DropdownItemType[];\nexport type PotentiallyAsyncDropdownItemType =\n | DropdownItemType[]\n | SyncDropdownItemType\n | AsyncDropdownItemType;\n\ntype ResolverState = {\n items: DropdownItemType[];\n loading: boolean;\n};\n\ntype ResolverAction =\n | {\n type: 'request results';\n }\n | {\n type: 'received results';\n payload: DropdownItemType[];\n };\n\nconst reducer = (_state: ResolverState, action: ResolverAction) => {\n switch (action.type) {\n case 'request results':\n return { items: [], loading: true };\n case 'received results':\n return { items: action.payload, loading: false };\n }\n};\n\nexport const useResolvedItems = (\n /** The list of items, or an async function that resolves the list of items */\n itemsOrItemsResolver: PotentiallyAsyncDropdownItemType,\n /** The time to wait after the input changes to the fetchItems method is called */\n debounceTimeout: number = 250,\n) => {\n const isItemsFunction = typeof itemsOrItemsResolver === 'function';\n\n // Here, we normalize the itemsResolver argument to an async function, so we\n // can use it without thinking about the differences later\n const itemsResolver = React.useMemo(\n () =>\n isItemsFunction\n ? (itemsOrItemsResolver as AsyncDropdownItemType)\n : () => Promise.resolve(itemsOrItemsResolver as DropdownItemType[]),\n [itemsOrItemsResolver, isItemsFunction],\n );\n\n const [{ items, loading }, dispatch] = React.useReducer(reducer, {\n items: isItemsFunction ? [] : (itemsOrItemsResolver as DropdownItemType[]),\n loading: false,\n });\n\n // This is a way to check whether or not the dropdown is still in the\n // document. We use it below to make sure we're not updating the state of\n // an unmounted component.\n const isMounted = useIsMounted();\n\n // Next, let's create the fetching function. This should be called whenever\n // the input value changes\n const fetchItems = React.useCallback(\n async (inputValue: string) => {\n if (!isMounted) {\n return;\n }\n dispatch({ type: 'request results' });\n const resolvedItems = await itemsResolver(inputValue);\n if (isMounted) {\n dispatch({ type: 'received results', payload: resolvedItems });\n }\n },\n [itemsResolver, isMounted],\n );\n\n const normalizedItems = useNormalizedItems(items);\n React.useEffect(() => {\n // Let's fetch the list initially if it's specified\n if (isItemsFunction) {\n fetchItems('');\n }\n }, [isItemsFunction, fetchItems]);\n\n return {\n items: normalizedItems,\n loading: isItemsFunction ? loading : false,\n fetchItems: debounce(fetchItems, debounceTimeout),\n };\n};\n","import React from 'react';\nimport { VariantType } from '@entur/form';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { RegularDropdown } from './RegularDropdown';\nimport { DownshiftProvider } from './DownshiftProvider';\nimport { SearchableDropdown } from './SearchableDropdown';\nimport { DropdownInputGroup } from './DropdownInputGroup';\nimport {\n useResolvedItems,\n PotentiallyAsyncDropdownItemType,\n} from './useResolvedItems';\n\nexport type DropdownProps = {\n /** Tilgjengelige valg i dropdownen */\n items: PotentiallyAsyncDropdownItemType;\n /** Valgt verdi. Bruk null for ingen verdi. */\n value?: string | null;\n /** Om man skal kunne søke i dropdownen eller ikke */\n searchable?: boolean;\n /** Beskrivende tekst som forklarer feltet */\n label?: string;\n /** Tooltip for labelen */\n labelTooltip?: string;\n /** Hvilken valideringsvariant som gjelder */\n variant?: VariantType;\n /** Valideringsmelding, brukes sammen med `variant` */\n feedback?: string;\n /** Tekst eller ikon som kommer før dropdownen */\n prepend?: React.ReactNode;\n /** Deaktiver dropdownen */\n disabled?: boolean;\n /** Setter dropdownen i read-only modus */\n readOnly?: boolean;\n /** Placeholder-tekst når ingenting er satt */\n placeholder?: string;\n /** En tekst som beskriver hva som skjer når man venter på items */\n loadingText?: string;\n /** Callback når brukeren endrer valg */\n onChange?: (selectedItem: NormalizedDropdownItemType | null) => void;\n /** Lar brukeren velge ved å \"tæbbe\" seg ut av komponenten */\n selectOnTab?: boolean;\n /** Om man skal vise items ved fokusering av input-feltet, før man skriver inn noe */\n openOnFocus?: boolean;\n /** Antall millisekunder man venter før man kaller en potensiell items-funksjon */\n debounceTimeout?: number;\n /** Om man skal ha muliget for å nullstille Dropdownen\n * @default false\n */\n clearable?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Marker første valgmulighet automatisk */\n highlightFirstItemOnOpen?: boolean;\n /** Styling som sendes ned til Dropdown-lista */\n listStyle?: { [key: string]: any };\n /** Filtreringen som blir brukt dersom man har en searchable Dropdown\n * @default Enkel tekstsammenligning\n */\n itemFilter?: (item: NormalizedDropdownItemType) => boolean;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Alle ekstra props videresendes til Downshift */\n [key: string]: any;\n};\nexport const Dropdown: React.FC<DropdownProps> = ({\n highlightFirstItemOnOpen,\n debounceTimeout,\n disabled,\n feedback,\n items,\n label,\n loadingText,\n onChange = () => undefined,\n placeholder,\n prepend,\n readOnly,\n searchable,\n selectOnTab,\n openOnFocus,\n variant,\n value,\n clearable = false,\n className,\n style,\n listStyle,\n itemFilter,\n disableLabelAnimation,\n ...rest\n}) => {\n const {\n items: normalizedItems,\n loading,\n fetchItems,\n } = useResolvedItems(items, debounceTimeout);\n\n const selectedItem =\n value === undefined\n ? undefined\n : normalizedItems.find(item => value === item.value) || null;\n\n const RenderedDropdown = searchable ? SearchableDropdown : RegularDropdown;\n const searchAbleProps = searchable\n ? { itemFilter: itemFilter, name: rest.name, 'data-cy': rest['data-cy'] }\n : { name: rest.name, 'data-cy': rest['data-cy'] };\n return (\n <DownshiftProvider\n selectedItem={selectedItem}\n onInputValueChange={fetchItems}\n onChange={onChange}\n value={value}\n highlightFirstItemOnOpen={highlightFirstItemOnOpen}\n className={className}\n style={style}\n searchable={searchable}\n {...rest}\n >\n <DropdownInputGroup feedback={feedback} variant={variant}>\n <RenderedDropdown\n label={label}\n items={normalizedItems}\n loading={loading}\n loadingText={loadingText}\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n prepend={prepend}\n selectOnTab={selectOnTab}\n openOnFocus={openOnFocus}\n listStyle={listStyle}\n clearable={clearable}\n disableLabelAnimation={disableLabelAnimation}\n {...searchAbleProps}\n />\n </DropdownInputGroup>\n </DownshiftProvider>\n );\n};\n","import { BaseFormControl, VariantType } from '@entur/form';\nimport { DownArrowIcon } from '@entur/icons';\nimport { useRandomId } from '@entur/utils';\nimport React from 'react';\nimport { DropdownLoadingDots } from './DropdownLoadingDots';\nimport './NativeDropdown.scss';\nimport {\n PotentiallyAsyncDropdownItemType,\n useResolvedItems,\n} from './useResolvedItems';\n\nexport type NativeDropdownProps = {\n /** Ekstra klassenavn */\n className?: string;\n /**\n * For å deaktivere dropdownen\n * @default false\n **/\n disabled?: boolean;\n /** Valideringsmelding, brukes sammen med `variant` */\n feedback?: string;\n /** Alle valg for dropdownen å ha */\n items: PotentiallyAsyncDropdownItemType;\n /** Beskrivende tekst som forklarer feltet */\n label: string;\n /** En callback for endringer av value */\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\n /** Tekst eller ikon som kommer før dropdownen */\n prepend?: React.ReactNode;\n /**\n * Setter dropdownen i read-only modus\n * @default false\n **/\n readOnly?: boolean;\n /** Den valgte verdien */\n value?: string;\n /** Hvilken valideringsvariant som gjelder */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n [key: string]: any;\n};\n\nexport const NativeDropdown: React.FC<NativeDropdownProps> = ({\n className,\n disabled = false,\n readOnly = false,\n items,\n loadingText,\n prepend,\n style,\n label,\n variant,\n feedback,\n disableLabelAnimation,\n ...rest\n}) => {\n const { items: normalizedItems, loading } = useResolvedItems(items);\n\n let rightSideIcon: JSX.Element | null = <DownArrowIcon inline={true} />;\n if (disabled || readOnly) {\n rightSideIcon = null;\n } else if (loading) {\n rightSideIcon = <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;\n }\n const nativeDropdownId = useRandomId('eds-native-dropdown');\n return (\n <BaseFormControl\n disabled={disabled}\n readOnly={readOnly}\n prepend={prepend}\n append={rightSideIcon}\n className={className}\n style={style}\n label={label}\n variant={variant}\n feedback={feedback}\n labelId={nativeDropdownId}\n disableLabelAnimation={disableLabelAnimation}\n isFilled={true}\n >\n <select\n aria-invalid={variant === 'error'}\n className=\"eds-form-control eds-dropdown\"\n disabled={disabled || readOnly}\n {...rest}\n >\n {normalizedItems.map(item => (\n <option key={item.value} value={item.value}>\n {item.label}\n </option>\n ))}\n </select>\n </BaseFormControl>\n );\n};\n","import React, { useState } from 'react';\nimport {\n useSelect,\n UseSelectProps,\n // StateChangeOptions,\n // UseSelectStateChangeOptions,\n} from 'downshift';\nimport { NormalizedDropdownItemType } from './useNormalizedItems';\nimport { BaseFormControl, VariantType } from '@entur/form';\nimport {\n PotentiallyAsyncDropdownItemType,\n useResolvedItems,\n} from './useResolvedItems';\nimport { DropdownLoadingDots } from './DropdownLoadingDots';\nimport { useRandomId } from '@entur/utils';\nimport classNames from 'classnames';\nimport { CloseIcon, DownArrowIcon } from '@entur/icons';\nimport { space } from '@entur/tokens';\nimport './MultiSelect.scss';\nimport './DropdownList.scss';\n\nconst MultiSelectContext = React.createContext<{\n isOpen: boolean;\n reset: () => void;\n getToggleButtonProps: any;\n openMenu: () => void;\n openOnFocus?: boolean;\n} | null>(null);\nconst useMultiSelectContext = () => {\n const context = React.useContext(MultiSelectContext);\n if (!context) {\n throw new Error('You need to wrap your component in a DownshiftProvider');\n }\n return context;\n};\n\nfunction stateReducer(\n state: any, //StateChangeOptions<NormalizedDropdownItemType>,\n actionAndChanges: any, //UseSelectStateChangeOptions<NormalizedDropdownItemType>,\n) {\n const { changes, type } = actionAndChanges;\n switch (type) {\n case useSelect.stateChangeTypes.MenuKeyDownEnter:\n case useSelect.stateChangeTypes.MenuKeyDownSpaceButton:\n case useSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen: true, // keep menu open after selection.\n highlightedIndex: state.highlightedIndex,\n };\n default:\n return changes;\n }\n}\ntype MultiSelectProps = {\n /** Tilgjengelige valg i MultiSelect */\n items: PotentiallyAsyncDropdownItemType;\n /** Tekst som vises i boksen når elementer er valgt */\n itemsSelectedLabel?: (\n selectedItems: NormalizedDropdownItemType[],\n numberOfItems?: number,\n ) => string;\n /** Beskrivende tekst som forklarer feltet */\n label?: string;\n /** Hvilken valideringsvariant som gjelder */\n variant?: VariantType;\n /** Valideringsmelding, brukes sammen med `variant` */\n feedback?: string;\n /** Tekst eller ikon som kommer før MultiSelect */\n prepend?: React.ReactNode;\n /** Deaktiver dropdownen */\n disabled?: boolean;\n /** Setter dropdownen i read-only modus */\n readOnly?: boolean;\n /** Placeholder-tekst når ingenting er satt */\n placeholder?: string;\n /** En tekst som beskriver hva som skjer når man venter på items */\n loadingText?: string;\n /** Callback når brukeren endrer valg */\n onChange?: (e: any) => void;\n /** Om man skal vise items ved fokusering av input-feltet, før man skriver inn noe\n * @default false\n */\n openOnFocus?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Styling som sendes ned til MultiSelect-lista */\n listStyle?: { [key: string]: any };\n /** Antall millisekunder man venter før man kaller en potensiell items-funksjon\n * @default 250\n */\n debounceTimeout?: number;\n /** Om man skal ha muliget for å nullstille Dropdownen\n * @default false\n */\n clearable?: boolean;\n loading?: boolean;\n style?: React.CSSProperties;\n initialSelectedItems?: NormalizedDropdownItemType[];\n} & Omit<UseSelectProps<NormalizedDropdownItemType>, 'initialSelectedItem'>;\n\nexport const MultiSelect: React.FC<MultiSelectProps> = ({\n items: input,\n itemsSelectedLabel = items => SelectedItemsLabel(items),\n label,\n feedback,\n variant,\n disabled,\n readOnly = false,\n onChange = () => undefined,\n className,\n clearable = false,\n loading = false,\n loadingText = '',\n openOnFocus = false,\n style,\n listStyle,\n initialSelectedItems = [],\n debounceTimeout,\n ...rest\n}) => {\n const { items } = useResolvedItems(input, debounceTimeout);\n const [selectedItems, setSelectedItems] =\n useState<NormalizedDropdownItemType[]>(initialSelectedItems);\n\n const reset = React.useCallback(() => {\n setSelectedItems([]);\n }, []);\n const {\n isOpen,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n highlightedIndex,\n getItemProps,\n openMenu,\n } = useSelect<NormalizedDropdownItemType>({\n items,\n stateReducer,\n selectedItem: null,\n onSelectedItemChange: ({ selectedItem }) => {\n if (!selectedItem) {\n return;\n }\n const index = selectedItems.indexOf(selectedItem);\n if (index > 0) {\n const slicedItemList = [\n ...selectedItems.slice(0, index),\n ...selectedItems.slice(index + 1),\n ];\n setSelectedItems(slicedItemList);\n onChange(slicedItemList);\n } else if (index === 0) {\n const slicedItemList = [...selectedItems.slice(1)];\n setSelectedItems(slicedItemList);\n onChange(slicedItemList);\n } else {\n const slicedItemList = [...selectedItems, selectedItem];\n setSelectedItems(slicedItemList);\n onChange(slicedItemList);\n }\n },\n ...rest,\n });\n const buttonText = selectedItems.length\n ? itemsSelectedLabel(selectedItems)\n : '';\n const multiSelectId = useRandomId('eds-multiselect');\n\n return (\n <MultiSelectContext.Provider\n value={{ isOpen, reset, getToggleButtonProps, openMenu, openOnFocus }}\n >\n <div\n className={classNames(\n 'eds-multiselect',\n 'eds-dropdown-wrapper',\n className,\n )}\n style={style}\n >\n <BaseFormControl\n label={label}\n labelId={multiSelectId}\n labelProps={...getLabelProps()}\n feedback={feedback}\n variant={variant}\n isFilled={selectedItems.length > 0 || isOpen}\n disabled={disabled}\n readOnly={readOnly}\n append={\n <Appendix\n hasSelected={clearable && selectedItems.length > 0}\n loading={loading}\n loadingText={loadingText}\n readOnly={readOnly}\n />\n }\n >\n <button\n {...getToggleButtonProps({\n style: {\n textAlign: 'left',\n },\n type: 'button',\n className: 'eds-form-control eds-multiselect__button',\n })}\n >\n {buttonText}\n </button>\n </BaseFormControl>\n <ul\n className={classNames('eds-dropdown-list', {\n 'eds-dropdown-list--open': isOpen,\n })}\n {...getMenuProps({\n style: {\n position: 'absolute',\n top: `${space.extraLarge3 + space.extraSmall}px`,\n ...listStyle,\n },\n })}\n >\n {isOpen &&\n items.map((item, index) => (\n <li\n className={classNames('eds-dropdown-list__item', {\n 'eds-dropdown-list__item--highlighted':\n highlightedIndex === index,\n 'eds-dropdown-list__item--selected':\n selectedItems.includes(item),\n })}\n key={`${item}${index}`}\n {...getItemProps({\n item,\n index,\n })}\n style={{ display: 'flex' }}\n >\n <span style={{ display: 'flex' }}>\n <span\n className={classNames('eds-multiselect-checkbox', {\n 'eds-multiselect-checkbox--checked':\n selectedItems.includes(item),\n })}\n >\n <CheckboxIcon />\n </span>\n <span className=\"eds-multiselect__item-label\">\n {item.label}\n </span>\n </span>\n {item.icons && (\n <span>\n {item.icons.map((Icon, index) => (\n <Icon\n key={index}\n inline\n className=\"eds-dropdown-list__item-icon\"\n />\n ))}\n </span>\n )}\n </li>\n ))}\n </ul>\n </div>\n </MultiSelectContext.Provider>\n );\n};\n\nconst ClearButton: React.FC<{ [key: string]: any }> = ({ ...props }) => {\n const { reset } = useMultiSelectContext();\n return (\n <>\n <button\n className=\"eds-dropdown__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => reset()}\n {...props}\n >\n <CloseIcon />\n </button>\n <div className=\"eds-dropdown__divider\"></div>\n </>\n );\n};\n\nconst Appendix: React.FC<{\n loading: boolean;\n loadingText: string;\n readOnly: boolean;\n hasSelected: boolean;\n}> = ({ loading, loadingText, readOnly, hasSelected }) => {\n if (loading) {\n return <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;\n }\n if (readOnly) {\n return null;\n }\n return hasSelected ? (\n <>\n <ClearButton></ClearButton>\n <DropdownToggleButton />\n </>\n ) : (\n <DropdownToggleButton />\n );\n};\n\nconst DropdownToggleButton = () => {\n const { getToggleButtonProps, isOpen, openMenu, openOnFocus } =\n useMultiSelectContext();\n return (\n <button\n {...getToggleButtonProps({\n className: classNames('eds-dropdown__toggle-button', {\n 'eds-dropdown__toggle-button--open': isOpen,\n }),\n onFocus: () => {\n if (openOnFocus) {\n openMenu();\n }\n },\n })}\n type=\"button\"\n >\n <DownArrowIcon />\n </button>\n );\n};\n\nconst CheckboxIcon: React.FC = () => {\n return (\n <svg\n className=\"eds-checkbox-icon\"\n width=\"11px\"\n height=\"9px\"\n viewBox=\"6 11 37 33\"\n >\n <path\n className=\"eds-checkbox-icon__path\"\n d=\"M14.1 27.2l7.1 7.2 14.6-14.8\"\n fill=\"none\"\n />\n </svg>\n );\n};\n\nfunction SelectedItemsLabel(items: NormalizedDropdownItemType[]) {\n return items.length < 3\n ? items.map(item => item.label).toString()\n : `${items.length} elementer valgt`;\n}\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('dropdown', 'form', 'a11y', 'chip');\n\nexport * from './Dropdown';\nexport * from './NativeDropdown';\nexport * from './MultiSelect';\nexport * from './MultiSelect';\n"],"names":["DownshiftContext","React","createContext","DownshiftProvider","children","onChange","undefined","onInputValueChange","highlightFirstItemOnOpen","className","style","searchable","rest","handleStateChange","changes","stateAndHelpers","type","Downshift","stateChangeTypes","controlledPropUpdatedSelectedItem","selectedItem","inputValue","stateReducer","_","highlightFirstOnOpen","isOpen","highlightFirstItemIndex","highlightedIndex","itemToString","item","label","onStateChange","args","classNames","Provider","value","useDownshift","context","useContext","Error","DropdownList","items","getItemProps","getMenuProps","map","index","key","icons","Icon","inline","CheckIcon","DropdownToggleButton","getToggleButtonProps","tabIndex","DownArrowIcon","DropdownLoadingDots","LoadingDots","VisuallyHidden","BaseDropdown","loading","loadingText","placeholder","listStyle","clearable","isFilled","disableLabelAnimation","getLabelProps","BaseFormControl","append","Appendix","readOnly","labelProps","position","top","space","extraLarge3","extraSmall","ClearButton","props","clearSelection","onClick","CloseSmallIcon","RegularDropdown","disabled","selectOnTab","openOnFocus","selectHighlightedItem","openMenu","setHighlightedIndex","length","textAlign","onKeyDown","e","keyDownValue","matchedItems","filter","firstCharacter","trim","charAt","toLowerCase","nextHighlightItem","find","onFocus","LowerCaseFilterTest","input","sanitizeEscapeCharacters","replace","inputRegex","RegExp","test","SearchableDropdown","prepend","itemFilter","getInputProps","filteredItems","useMemo","DropdownInputGroup","feedback","variant","VariantProvider","FeedbackText","useNormalizedItems","useIsMounted","isMountedRef","useRef","useEffect","current","reducer","_state","action","payload","useResolvedItems","itemsOrItemsResolver","debounceTimeout","isItemsFunction","itemsResolver","Promise","resolve","useReducer","dispatch","isMounted","fetchItems","useCallback","resolvedItems","normalizedItems","debounce","Dropdown","RenderedDropdown","searchAbleProps","name","NativeDropdown","rightSideIcon","nativeDropdownId","useRandomId","labelId","MultiSelectContext","useMultiSelectContext","state","actionAndChanges","useSelect","MenuKeyDownEnter","MenuKeyDownSpaceButton","ItemClick","MultiSelect","itemsSelectedLabel","SelectedItemsLabel","initialSelectedItems","useState","selectedItems","setSelectedItems","reset","onSelectedItemChange","indexOf","slicedItemList","slice","buttonText","multiSelectId","hasSelected","includes","display","CheckboxIcon","CloseIcon","width","height","viewBox","d","fill","toString","warnAboutMissingStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAMA,gBAAgB,gBACpBC,cAAK,CAACC,aAAN,CACE,IADF,CADF;AAmBO,IAAMC,iBAAiB,GAAqC,SAAtDA,iBAAsD;MACjEC,gBAAAA;2BACAC;MAAAA,sCAAW;AAAA,WAAMC,SAAN;AAAA;mCACXC;MAAAA,wDAAqB;AAAA,WAAMD,SAAN;AAAA;mCACrBE;MAAAA,8DAA2B;MAC3BC,iBAAAA;MACAC,aAAAA;6BACAC;MAAAA,0CAAa;MACVC;;AAEH,MAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CACxBC,OADwB,EAExBC,eAFwB;AAIxB,QACED,OAAO,CAACE,IAAR,KACAC,kBAAS,CAACC,gBAAV,CAA2BC,iCAF7B,EAGE;AACA;AACD;;AACD,QAAI,kBAAkBL,OAAtB,EAA+B;AAC7BT,MAAAA,QAAQ,CAACS,OAAO,CAACM,YAAT,EAAuBL,eAAvB,CAAR;AACD,KAFD,MAEO,IAAI,gBAAgBD,OAApB,EAA6B;AAClCP,MAAAA,kBAAkB,CAACO,OAAO,CAACO,UAAT,CAAlB;AACD;AACF,GAfD;;AAiBA,MAAMC,YAAY,GAAG,SAAfA,YAAe,CACnBC,CADmB,EAEnBT,OAFmB;AAInB,QAAMU,oBAAoB,GACxBhB,wBAAwB,IAAI,YAAYM,OAAxC,IAAmDA,OAAO,CAACW,MAD7D;AAEA,QAAMC,uBAAuB,GAEzBF,oBAAoB,GAAG;AAAEG,MAAAA,gBAAgB,EAAE;AAApB,KAAH,GAA6B,EAFrD;;AAIA,QAAIhB,UAAJ,EAAgB;AAAA,UACNK,IADM,GACGF,OADH,CACNE,IADM;;AAGd,cAAQA,IAAR;AACE,aAAK,+BAAL;AACE,8BAEKF,OAFL,EAGKY,uBAHL;;AAKF,aAAK,6BAAL;AACA,aAAK,gCAAL;AACA,aAAK,6BAAL;AACA,aAAK,0BAAL;AACE,8BACKZ,OADL;AAEE;AACA;AACAO,YAAAA,UAAU,EAAE;AAJd,aAKKK,uBALL;;AAOF;AACE,8BACKZ,OADL,EAEKY,uBAFL;AAnBJ;AAwBD,KA3BD,MA2BO;AACL,0BAAYZ,OAAZ,EAAwBY,uBAAxB;AACD;AACF,GAxCD;;AA0CA,SACEzB,4BAAA,CAACgB,kBAAD;AACEW,IAAAA,YAAY,EAAE,sBAAAC,IAAI;AAAA,aAAKA,IAAI,GAAGA,IAAI,CAACC,KAAR,GAAgB,EAAzB;AAAA;AAClBC,IAAAA,aAAa,EAAElB;AACfS,IAAAA,YAAY,EAAEA;KACVV,KAJN,EAMG,UAAAoB,IAAI;AAAA,WACH/B,4BAAA,MAAA;AAAKQ,MAAAA,SAAS,EAAEwB,UAAU,CAAC,iBAAD,EAAoBxB,SAApB;AAAgCC,MAAAA,KAAK,EAAEA;KAAjE,EAEET,4BAAA,CAACD,gBAAgB,CAACkC,QAAlB;AAA2BC,MAAAA,KAAK,EAAEH;KAAlC,EACG5B,QADH,CAFF,CADG;AAAA,GANP,CADF;AAiBD,CAtFM;AAwFA,IAAMgC,YAAY,GACvB,SADWA,YACX;AACE,MAAMC,OAAO,GAAGpC,cAAK,CAACqC,UAAN,CAAiBtC,gBAAjB,CAAhB;;AACA,MAAI,CAACqC,OAAL,EAAc;AACZ,UAAM,IAAIE,KAAJ,CAAU,wDAAV,CAAN;AACD;;AACD,SAAOF,OAAP;AACD,CAPI;;ACxGA,IAAMG,YAAY,GAAgC,SAA5CA,YAA4C;MACvDC,aAAAA;MACG7B;;sBAGDwB,YAAY;MADNT,iCAAAA;MAAkBF,uBAAAA;MAAQL,6BAAAA;MAAcsB,6BAAAA;MAAcC,6BAAAA;;AAG9D,SACE1C,4BAAA,KAAA;AACEQ,IAAAA,SAAS,EAAEwB,UAAU,CAAC,mBAAD,EAAsB;AACzC,iCAA2BR;AADc,KAAtB;KAGjBkB,YAAY,IACZ/B,KALN,EAOGa,MAAM,GACHgB,KAAK,CAACG,GAAN,CAAU,UAACf,IAAD,EAAOgB,KAAP;AAAA;AAER5C,MAAAA,4BAAA,KAAA;AACEQ,QAAAA,SAAS,EAAEwB,UAAU,CAAC,yBAAD,EAA4B;AAC/C,kDACEN,gBAAgB,KAAKkB,KAFwB;AAG/C,+CAAqCzB,YAAY,KAAKS;AAHP,SAA5B;SAKjBa,YAAY,CAAC;AAAEI,QAAAA,GAAG,OAAKD,KAAL,GAAahB,IAAI,CAACM,KAAvB;AAAgCN,QAAAA,IAAI,EAAJA,IAAhC;AAAsCgB,QAAAA,KAAK,EAALA;AAAtC,OAAD,EANlB,EAQE5C,4BAAA,OAAA,MAAA,EAAO4B,IAAI,CAACC,KAAZ,CARF,EASGD,IAAI,CAACkB,KAAL,IACC9C,4BAAA,OAAA,MAAA,EACG4B,IAAI,CAACkB,KAAL,CAAWH,GAAX,CAAe,UAACI,IAAD,EAAOH,KAAP;AAAA,eACd5C,4BAAA,CAAC+C,IAAD;AACEF,UAAAA,GAAG,EAAED;AACLI,UAAAA,MAAM;AACNxC,UAAAA,SAAS,EAAC;SAHZ,CADc;AAAA,OAAf,CADH,CAVJ,EAoBGW,YAAY,KAAKS,IAAjB,IAAyB5B,4BAAA,CAACiD,eAAD,MAAA,CApB5B;AAFQ;AAAA,GAAV,CADG,GA0BH,IAjCN,CADF;AAqCD,CA5CM;;ACNA,IAAMC,oBAAoB,GAAsB,SAA1CA,oBAA0C;sBACZf,YAAY;MAA7CgB,qCAAAA;MAAsB3B,uBAAAA;;AAC9B,SACExB,4BAAA,SAAA,oBACMmD,oBAAoB,CAAC;AACvB3C,IAAAA,SAAS,EAAEwB,UAAU,CAAC,6BAAD,EAAgC;AACnD,2CAAqCR;AADc,KAAhC;AADE,GAAD;AAKxB4B,IAAAA,QAAQ,EAAC;AACTrC,IAAAA,IAAI,EAAC;IAPP,EASEf,4BAAA,CAACqD,mBAAD,MAAA,CATF,CADF;AAaD,CAfM;;ACOA,IAAMC,mBAAmB,GAAgC,SAAnDA,mBAAmD;AAAA,MAC9D9C,SAD8D,QAC9DA,SAD8D;AAAA,MAE9DL,QAF8D,QAE9DA,QAF8D;AAAA,MAG3DQ,IAH2D;;AAAA,SAK9DX,4BAAA,MAAA;AAAKQ,IAAAA,SAAS,EAAEwB,UAAU,CAAC,oBAAD,EAAuBxB,SAAvB;KAAuCG,KAAjE,EACEX,4BAAA,CAACuD,kBAAD,MAAA,CADF,EAEEvD,4BAAA,CAACwD,mBAAD,MAAA,EAAiBrD,QAAjB,CAFF,CAL8D;AAAA,CAAzD;;ACWA,IAAMsD,YAAY,GAAgC,SAA5CA,YAA4C;MACvDtD,gBAAAA;MACAK,iBAAAA;MACAgC,aAAAA;0BACAkB;MAAAA,oCAAU;8BACVC;MAAAA,4CAAc;MAEdC,AACAnD,aAAAA;MACAoD,iBAAAA;MACAC,iBAAAA;MACAjC,aAAAA;2BACAkC;MAAAA,sCAAW;MACXC,6BAAAA;MACGrD;;sBAEuBwB,YAAY;MAA9B8B,8BAAAA;;AACR,SACEjE,4BAAA,MAAA;AAAKQ,IAAAA,SAAS,EAAC;AAAuBC,IAAAA,KAAK,EAAEA;GAA7C,EAGET,4BAAA,CAACkE,oBAAD;AACEC,IAAAA,MAAM,EACJnE,4BAAA,CAACoE,QAAD;AACEN,MAAAA,SAAS,EAAEA;AACXJ,MAAAA,OAAO,EAAEA;AACTC,MAAAA,WAAW,EAAEA;AACbU,MAAAA,QAAQ,EAAK1D,IAAI,CAAC0D;KAJpB;AAOF7D,IAAAA,SAAS,EAAEA;AACXqB,IAAAA,KAAK,EAAEA;AACPkC,IAAAA,QAAQ,EAAEA;AACVO,IAAAA,UAAU,EAAEL,aAAa;AACzBD,IAAAA,qBAAqB,EAAEA;KACnBrD,KAdN,EAgBGR,QAhBH,CAHF,EAqBEH,4BAAA,CAACuC,YAAD;AACEC,IAAAA,KAAK,EAAEA;AACP/B,IAAAA,KAAK;AACH8D,MAAAA,QAAQ,EAAE,UADP;AAEHC,MAAAA,GAAG,EAAKC,YAAK,CAACC,WAAN,GAAoBD,YAAK,CAACE,UAA/B;AAFA,OAGAd,SAHA;KAKDlD,KAPN,CArBF,CADF;AAiCD,CAlDM;;AAoDP,IAAMiE,WAAW,GAAqC,SAAhDA,WAAgD;MAAMC;;uBACjB1C,YAAY;MAA7C2C,gCAAAA;MAAgB3D,8BAAAA;;AACxB,SACEnB,4BAAA,wBAAA,MAAA,EACGmB,YAAY,IACXnB,4BAAA,SAAA;AACEQ,IAAAA,SAAS,EAAC;AACVO,IAAAA,IAAI,EAAC;AACLqC,IAAAA,QAAQ,EAAE,CAAC;AACX2B,IAAAA,OAAO,EAAE;AAAA,aAAMD,cAAc,EAApB;AAAA;KACLD,MALN,EAOE7E,4BAAA,CAACgF,oBAAD,MAAA,CAPF,CAFJ,EAYG7D,YAAY,IAAInB,4BAAA,MAAA;AAAKQ,IAAAA,SAAS,EAAC;GAAf,CAZnB,CADF;AAgBD,CAlBD;;AAoBA,IAAM4D,QAAQ,GAKT,SALCA,QAKD;MAAGN,kBAAAA;MAAWJ,gBAAAA;MAASC,oBAAAA;MAAaU,iBAAAA;;AACvC,MAAIX,OAAJ,EAAa;AACX,WAAO1D,4BAAA,CAACsD,mBAAD,MAAA,EAAsBK,WAAtB,CAAP;AACD;;AACD,MAAIU,QAAJ,EAAc;AACZ,WAAO,IAAP;AACD;;AACD,SAAOP,SAAS,GACd9D,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAAC4E,WAAD,MAAA,CADF,KAAA,EAC8B5E,4BAAA,CAACkD,oBAAD,MAAA,CAD9B,CADc,GAKdlD,4BAAA,CAACkD,oBAAD,MAAA,CALF;AAOD,CAnBD;;AC7EO,IAAM+B,eAAe,GAAmC,SAAlDA,eAAkD;MAC7DC,gBAAAA;8BACAtB;MAAAA,4CAAc;8BACduB;MAAAA,4CAAc;8BACdC;MAAAA,4CAAc;MACdvB,iBAAAA;MACArB,aAAAA;MACAX,aAAAA;MACAmC,6BAAAA;MACAN,eAAAA;MACAC,mBAAAA;MACAnD,iBAAAA;MACAsD,iBAAAA;MACGnD;;sBAUCwB,YAAY;MAPdgB,qCAAAA;MACAhC,6BAAAA;MACAkE,sCAAAA;MACAC,yBAAAA;MACA9D,uBAAAA;MACAE,iCAAAA;MACA6D,oCAAAA;;AAEF,SACEvF,4BAAA,CAACyD,YAAD;AACEyB,IAAAA,QAAQ,EAAEA;AACVrB,IAAAA,SAAS,EAAEA;AACXrB,IAAAA,KAAK,EAAEA;AACPX,IAAAA,KAAK,EAAEA;AACPkC,IAAAA,QAAQ,EAAE5C,YAAY,GAAG,IAAH,GAAUyC,WAAW,CAAC4B,MAAZ,KAAuB;AACvDxB,IAAAA,qBAAqB,EAAEA;AACvBN,IAAAA,OAAO,EAAEA;AACTC,IAAAA,WAAW,EAAEA;AACbnD,IAAAA,SAAS,EAAEA;AACXsD,IAAAA,SAAS,EAAEA;KACPnD,KAXN,EAaEX,4BAAA,SAAA,oBACMmD,oBAAoB;AACtB3C,IAAAA,SAAS,EAAE,8CADW;AAEtBC,IAAAA,KAAK,EAAE;AAAEgF,MAAAA,SAAS,EAAE;AAAb,KAFe;AAGtBP,IAAAA,QAAQ,EAARA,QAHsB;AAItBnE,IAAAA,IAAI,EAAE,QAJgB;AAKtB2E,IAAAA,SAAS,EAAE,mBAAAC,CAAC;AACV,UAAIR,WAAW,IAAIQ,CAAC,CAAC9C,GAAF,KAAU,KAA7B,EAAoC;AAClCwC,QAAAA,qBAAqB;AACtB;;AAED,UAAI7D,MAAJ,EAAY;AACV,YAAMoE,YAAY,GAAGD,CAAC,CAAC9C,GAAvB;AACA,YAAMgD,YAAY,GAAGrD,KAAK,CACvBG,GADkB,CACd,UAACf,IAAD,EAAOgB,KAAP;AAAA,8BAAuBhB,IAAvB;AAA6BgB,YAAAA,KAAK,EAALA;AAA7B;AAAA,SADc,EAElBkD,MAFkB,CAEX,UAAAlE,IAAI;AACV,cAAMmE,cAAc,GAAGnE,IAAI,CAACC,KAAL,CACpBmE,IADoB,GAEpBC,MAFoB,CAEb,CAFa,EAGpBC,WAHoB,EAAvB;AAIA,iBAAOH,cAAc,KAAKH,YAA1B;AACD,SARkB,CAArB;AAUA,YAAMO,iBAAiB,GAAGN,YAAY,CAACO,IAAb,CACxB,UAAAxE,IAAI;AAAA,iBAAIA,IAAI,CAACgB,KAAL,IAAclB,gBAAd,aAAcA,gBAAd,cAAcA,gBAAd,GAAkC,CAAlC,CAAJ;AAAA,SADoB,CAA1B;;AAIA,YAAIyE,iBAAJ,EAAuB;AACrBZ,UAAAA,mBAAmB,CAACY,iBAAiB,CAACvD,KAAnB,CAAnB;AACD,SAFD,MAEO,IAAIiD,YAAY,CAACL,MAAb,GAAsB,CAA1B,EAA6B;AAClCD,UAAAA,mBAAmB,CAACM,YAAY,CAAC,CAAD,CAAZ,CAAgBjD,KAAjB,CAAnB;AACD;AACF;AACF,KAhCqB;AAiCtByD,IAAAA,OAAO,EAAE;AACP,UAAIjB,WAAJ,EAAiB;AACf,SAAC5D,MAAD,IAAW8D,QAAQ,EAAnB;AACD;AACF;AArCqB,KAsCnB3E,IAtCmB,GAD1B,EA0CGQ,YAAY,GAAGA,YAAY,CAACU,KAAhB,GAAwB+B,WA1CvC,CAbF,CADF;AA4DD,CApFM;;ACKP,SAAS0C,mBAAT,CACE1E,IADF,EAEE2E,KAFF;AAIE,MAAI,CAACA,KAAL,EAAY;AACV,WAAO,IAAP;AACD;;AACD,MAAMC,wBAAwB,GAAGD,KAAK,CAACE,OAAN,CAC/B,uBAD+B,EAE/B,MAF+B,CAAjC;AAIA,MAAMC,UAAU,GAAG,IAAIC,MAAJ,CAAWH,wBAAX,EAAqC,GAArC,CAAnB;AACA,SAAOE,UAAU,CAACE,IAAX,CAAgBhF,IAAI,CAACC,KAArB,CAAP;AACD;;AAED,AAAO,IAAMgF,kBAAkB,GAAsC,SAAxDA,kBAAwD;2BACnE3B;MAAAA,sCAAW;MACX1E,iBAAAA;MACAgC,aAAAA;MACAkB,eAAAA;MACAC,mBAAAA;2BACAU;MAAAA,sCAAW;MACXyC,eAAAA;8BACA3B;MAAAA,4CAAc;8BACdC;MAAAA,4CAAc;MACdvB,iBAAAA;MACAC,iBAAAA;6BACAiD;MAAAA,0CAAa,UAACnF,IAAD,EAAmCR,UAAnC;AAAA,WACXkF,mBAAmB,CAAC1E,IAAD,EAAOR,UAAP,CADR;AAAA;MAEbS,aAAAA;MACAmC,6BAAAA;MACAJ,mBAAAA;MACGjD;;sBASCwB,YAAY;MANd6E,8BAAAA;MACA5F,2BAAAA;MACAiE,sCAAAA;MACA7D,uBAAAA;MACA8D,yBAAAA;MACAnE,6BAAAA;;AAGF,MAAM8F,aAAa,GAAGjH,cAAK,CAACkH,OAAN,CAAc;AAClC,WAAO1E,KAAK,CAACsD,MAAN,CAAa,UAAAlE,IAAI;AAAA,aAAImF,UAAU,CAACnF,IAAD,EAAOR,UAAP,CAAd;AAAA,KAAjB,CAAP;AACD,GAFqB,EAEnB,CAACA,UAAD,EAAaoB,KAAb,EAAoBuE,UAApB,CAFmB,CAAtB;AAIA,SACE/G,4BAAA,CAACyD,YAAD;AACEjB,IAAAA,KAAK,EAAEyE;AACP/B,IAAAA,QAAQ,EAAEA;AACVb,IAAAA,QAAQ,EAAEA;AACV7D,IAAAA,SAAS,EAAEA;AACXkD,IAAAA,OAAO,EAAEA;AACTC,IAAAA,WAAW,EAAEA;AACbmD,IAAAA,OAAO,EAAEA;AACTjD,IAAAA,SAAS,EAAEA;AACXC,IAAAA,SAAS,EAAEA;AACXjC,IAAAA,KAAK,EAAEA;AACPkC,IAAAA,QAAQ,EAAE5C,YAAY,GAAG,IAAH,GAAU;AAChC6C,IAAAA,qBAAqB,EAAEA;GAZzB,EAcG7C,YAAY,IAAI,CAACC,UAAjB,IACCpB,4BAAA,OAAA;AAAMQ,IAAAA,SAAS,EAAC;GAAhB,EACGW,YAAY,CAACU,KADhB,CAfJ,EAmBE7B,4BAAA,QAAA,oBACMgH,aAAa;AACf9B,IAAAA,QAAQ,EAARA,QADe;AAEfb,IAAAA,QAAQ,EAARA,QAFe;AAGf7D,IAAAA,SAAS,EAAE,sCAHI;AAIfkF,IAAAA,SAAS,EAAE,mBAAAC,CAAC;AACV,UAAIR,WAAW,IAAIQ,CAAC,CAAC9C,GAAF,KAAU,KAA7B,EAAoC;AAClCwC,QAAAA,qBAAqB;AACtB;AACF,KARc;AASfgB,IAAAA,OAAO,EAAE;AACP,UAAIjB,WAAJ,EAAiB;AACf,SAAC5D,MAAD,IAAW8D,QAAQ,EAAnB;AACD;AACF,KAbc;AAcf1B,IAAAA,WAAW,EAAEzC,YAAY,GAAGd,SAAH,GAAeuD;AAdzB,KAeZjD,IAfY,GADnB,CAnBF,CADF;AAyCD,CAzEM;;AC9BA,IAAMwG,kBAAkB,GAAsC,SAAxDA,kBAAwD;MACnEhH,gBAAAA;MACAiH,gBAAAA;MACAC,eAAAA;MACA7G,iBAAAA;MACAC,aAAAA;AAEA,SACET,4BAAA,CAACsH,oBAAD;AAAiBD,IAAAA,OAAO,EAAEA;GAA1B,EACErH,4BAAA,MAAA;AAAKQ,IAAAA,SAAS,EAAEA;AAAWC,IAAAA,KAAK,EAAEA;GAAlC,EACGN,QADH,EAEGiH,QAAQ,IAAIC,OAAZ,IACCrH,4BAAA,CAACuH,iBAAD;AAAcF,IAAAA,OAAO,EAAEA;GAAvB,EAAiCD,QAAjC,CAHJ,CADF,CADF;AAUD,CAjBM;;ACGA,IAAMI,kBAAkB,GAAG,SAArBA,kBAAqB,CAAChF,KAAD;AAAA,SAChCxC,cAAK,CAACkH,OAAN,CACE;AAAA,WACE1E,KAAK,CAACG,GAAN,CAAU,UAAAf,IAAI;AACZ,UAAI,OAAOA,IAAP,IAAe,QAAnB,EAA6B;AAC3B,eAAO;AAAEM,UAAAA,KAAK,EAAEN,IAAT;AAAeC,UAAAA,KAAK,EAAED;AAAtB,SAAP;AACD;;AAED,UAAI,EAAE,WAAWA,IAAb,CAAJ,EAAwB;AACtB,4BAAYA,IAAZ;AAAkBM,UAAAA,KAAK,EAAEN,IAAI,CAACC;AAA9B;AACD;;AACD,aAAOD,IAAP;AACD,KATD,CADF;AAAA,GADF,EAYE,CAACY,KAAD,CAZF,CADgC;AAAA,CAA3B;;ACRP,IAAMiF,YAAY,GAAG,SAAfA,YAAe;AACnB,MAAMC,YAAY,GAAG1H,cAAK,CAAC2H,MAAN,CAAa,IAAb,CAArB;AACA3H,EAAAA,cAAK,CAAC4H,SAAN,CAAgB;AACd,WAAO;AACLF,MAAAA,YAAY,CAACG,OAAb,GAAuB,KAAvB;AACD,KAFD;AAGD,GAJD,EAIG,EAJH;AAKA,SAAOH,YAAY,CAACG,OAApB;AACD,CARD;;AA+BA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,MAAD,EAAwBC,MAAxB;AACd,UAAQA,MAAM,CAACjH,IAAf;AACE,SAAK,iBAAL;AACE,aAAO;AAAEyB,QAAAA,KAAK,EAAE,EAAT;AAAakB,QAAAA,OAAO,EAAE;AAAtB,OAAP;;AACF,SAAK,kBAAL;AACE,aAAO;AAAElB,QAAAA,KAAK,EAAEwF,MAAM,CAACC,OAAhB;AAAyBvE,QAAAA,OAAO,EAAE;AAAlC,OAAP;AAJJ;AAMD,CAPD;;AASA,AAAO,IAAMwE,gBAAgB,GAAG,SAAnBA,gBAAmB;AAC9B;AACAC,oBAF8B;AAG9B;AACAC,eAJ8B;MAI9BA;AAAAA,IAAAA,kBAA0B;;;AAE1B,MAAMC,eAAe,GAAG,OAAOF,oBAAP,KAAgC,UAAxD;AAGA;;AACA,MAAMG,aAAa,GAAGtI,cAAK,CAACkH,OAAN,CACpB;AAAA,WACEmB,eAAe,GACVF,oBADU,GAEX;AAAA,aAAMI,OAAO,CAACC,OAAR,CAAgBL,oBAAhB,CAAN;AAAA,KAHN;AAAA,GADoB,EAKpB,CAACA,oBAAD,EAAuBE,eAAvB,CALoB,CAAtB;;0BAQuCrI,cAAK,CAACyI,UAAN,CAAiBX,OAAjB,EAA0B;AAC/DtF,IAAAA,KAAK,EAAE6F,eAAe,GAAG,EAAH,GAASF,oBADgC;AAE/DzE,IAAAA,OAAO,EAAE;AAFsD,GAA1B;;MAA9BlB,2BAAAA;MAAOkB,6BAAAA;MAAWgF;AAM3B;AACA;;;AACA,MAAMC,SAAS,GAAGlB,YAAY,EAA9B;AAGA;;AACA,MAAMmB,UAAU,GAAG5I,cAAK,CAAC6I,WAAN,WACVzH,UADU;AAAA;AAEf,UAAI,CAACuH,SAAL,EAAgB;AACd;AACD;;AACDD,MAAAA,QAAQ,CAAC;AAAE3H,QAAAA,IAAI,EAAE;AAAR,OAAD,CAAR;6BAC4BuH,aAAa,CAAClH,UAAD,kBAAnC0H;YACFH;AACFD,UAAAA,QAAQ,CAAC;AAAE3H,YAAAA,IAAI,EAAE,kBAAR;AAA4BkH,YAAAA,OAAO,EAAEa;AAArC,WAAD,CAAR;;;AAEH,KAVgB;AAAA;AAAA;AAAA,KAWjB,CAACR,aAAD,EAAgBK,SAAhB,CAXiB,CAAnB;AAcA,MAAMI,eAAe,GAAGvB,kBAAkB,CAAChF,KAAD,CAA1C;AACAxC,EAAAA,cAAK,CAAC4H,SAAN,CAAgB;AACd;AACA,QAAIS,eAAJ,EAAqB;AACnBO,MAAAA,UAAU,CAAC,EAAD,CAAV;AACD;AACF,GALD,EAKG,CAACP,eAAD,EAAkBO,UAAlB,CALH;AAOA,SAAO;AACLpG,IAAAA,KAAK,EAAEuG,eADF;AAELrF,IAAAA,OAAO,EAAE2E,eAAe,GAAG3E,OAAH,GAAa,KAFhC;AAGLkF,IAAAA,UAAU,EAAEI,cAAQ,CAACJ,UAAD,EAAaR,eAAb;AAHf,GAAP;AAKD,CAzDM;;ICsBMa,QAAQ,GAA4B,SAApCA,QAAoC;MAC/C1I,gCAAAA;MACA6H,uBAAAA;MACAlD,gBAAAA;MACAkC,gBAAAA;MACA5E,aAAAA;MACAX,aAAAA;MACA8B,mBAAAA;2BACAvD;MAAAA,sCAAW;AAAA,WAAMC,SAAN;AAAA;MACXuD,mBAAAA;MACAkD,eAAAA;MACAzC,gBAAAA;MACA3D,kBAAAA;MACAyE,mBAAAA;MACAC,mBAAAA;MACAiC,eAAAA;MACAnF,aAAAA;4BACA4B;MAAAA,wCAAY;MACZtD,iBAAAA;MACAC,aAAAA;MACAoD,iBAAAA;MACAkD,kBAAAA;MACA/C,6BAAAA;MACGrD;;0BAMCuH,gBAAgB,CAAC1F,KAAD,EAAQ4F,eAAR;MAHXW,oCAAPvG;MACAkB,4BAAAA;MACAkF,+BAAAA;;AAGF,MAAMzH,YAAY,GAChBe,KAAK,KAAK7B,SAAV,GACIA,SADJ,GAEI0I,eAAe,CAAC3C,IAAhB,CAAqB,UAAAxE,IAAI;AAAA,WAAIM,KAAK,KAAKN,IAAI,CAACM,KAAnB;AAAA,GAAzB,KAAsD,IAH5D;AAKA,MAAMgH,gBAAgB,GAAGxI,UAAU,GAAGmG,kBAAH,GAAwB5B,eAA3D;AACA,MAAMkE,eAAe,GAAGzI,UAAU,GAC9B;AAAEqG,IAAAA,UAAU,EAAEA,UAAd;AAA0BqC,IAAAA,IAAI,EAAEzI,IAAI,CAACyI,IAArC;AAA2C,eAAWzI,IAAI,CAAC,SAAD;AAA1D,GAD8B,GAE9B;AAAEyI,IAAAA,IAAI,EAAEzI,IAAI,CAACyI,IAAb;AAAmB,eAAWzI,IAAI,CAAC,SAAD;AAAlC,GAFJ;AAGA,SACEX,4BAAA,CAACE,iBAAD;AACEiB,IAAAA,YAAY,EAAEA;AACdb,IAAAA,kBAAkB,EAAEsI;AACpBxI,IAAAA,QAAQ,EAAEA;AACV8B,IAAAA,KAAK,EAAEA;AACP3B,IAAAA,wBAAwB,EAAEA;AAC1BC,IAAAA,SAAS,EAAEA;AACXC,IAAAA,KAAK,EAAEA;AACPC,IAAAA,UAAU,EAAEA;KACRC,KATN,EAWEX,4BAAA,CAACmH,kBAAD;AAAoBC,IAAAA,QAAQ,EAAEA;AAAUC,IAAAA,OAAO,EAAEA;GAAjD,EACErH,4BAAA,CAACkJ,gBAAD;AACErH,IAAAA,KAAK,EAAEA;AACPW,IAAAA,KAAK,EAAEuG;AACPrF,IAAAA,OAAO,EAAEA;AACTC,IAAAA,WAAW,EAAEA;AACbuB,IAAAA,QAAQ,EAAEA;AACVb,IAAAA,QAAQ,EAAEA;AACVT,IAAAA,WAAW,EAAEA;AACbkD,IAAAA,OAAO,EAAEA;AACT3B,IAAAA,WAAW,EAAEA;AACbC,IAAAA,WAAW,EAAEA;AACbvB,IAAAA,SAAS,EAAEA;AACXC,IAAAA,SAAS,EAAEA;AACXE,IAAAA,qBAAqB,EAAEA;KACnBmF,gBAdN,CADF,CAXF,CADF;AAgCD,CAxEM;;ICrBME,cAAc,GAAkC,SAAhDA,cAAgD;MAC3D7I,iBAAAA;2BACA0E;MAAAA,sCAAW;2BACXb;MAAAA,sCAAW;MACX7B,aAAAA;MACAmB,mBAAAA;MACAmD,eAAAA;MACArG,aAAAA;MACAoB,aAAAA;MACAwF,eAAAA;MACAD,gBAAAA;MACApD,6BAAAA;MACGrD;;0BAEyCuH,gBAAgB,CAAC1F,KAAD;MAA7CuG,oCAAPvG;MAAwBkB,4BAAAA;;AAEhC,MAAI4F,aAAa,GAAuBtJ,4BAAA,CAACqD,mBAAD;AAAeL,IAAAA,MAAM,EAAE;GAAvB,CAAxC;;AACA,MAAIkC,QAAQ,IAAIb,QAAhB,EAA0B;AACxBiF,IAAAA,aAAa,GAAG,IAAhB;AACD,GAFD,MAEO,IAAI5F,OAAJ,EAAa;AAClB4F,IAAAA,aAAa,GAAGtJ,4BAAA,CAACsD,mBAAD,MAAA,EAAsBK,WAAtB,CAAhB;AACD;;AACD,MAAM4F,gBAAgB,GAAGC,iBAAW,CAAC,qBAAD,CAApC;AACA,SACExJ,4BAAA,CAACkE,oBAAD;AACEgB,IAAAA,QAAQ,EAAEA;AACVb,IAAAA,QAAQ,EAAEA;AACVyC,IAAAA,OAAO,EAAEA;AACT3C,IAAAA,MAAM,EAAEmF;AACR9I,IAAAA,SAAS,EAAEA;AACXC,IAAAA,KAAK,EAAEA;AACPoB,IAAAA,KAAK,EAAEA;AACPwF,IAAAA,OAAO,EAAEA;AACTD,IAAAA,QAAQ,EAAEA;AACVqC,IAAAA,OAAO,EAAEF;AACTvF,IAAAA,qBAAqB,EAAEA;AACvBD,IAAAA,QAAQ,EAAE;GAZZ,EAcE/D,4BAAA,SAAA;oBACgBqH,OAAO,KAAK;AAC1B7G,IAAAA,SAAS,EAAC;AACV0E,IAAAA,QAAQ,EAAEA,QAAQ,IAAIb;KAClB1D,KAJN,EAMGoI,eAAe,CAACpG,GAAhB,CAAoB,UAAAf,IAAI;AAAA,WACvB5B,4BAAA,SAAA;AAAQ6C,MAAAA,GAAG,EAAEjB,IAAI,CAACM;AAAOA,MAAAA,KAAK,EAAEN,IAAI,CAACM;KAArC,EACGN,IAAI,CAACC,KADR,CADuB;AAAA,GAAxB,CANH,CAdF,CADF;AA6BD,CApDM;;ACxBP,IAAM6H,kBAAkB,gBAAG1J,cAAK,CAACC,aAAN,CAMjB,IANiB,CAA3B;;AAOA,IAAM0J,qBAAqB,GAAG,SAAxBA,qBAAwB;AAC5B,MAAMvH,OAAO,GAAGpC,cAAK,CAACqC,UAAN,CAAiBqH,kBAAjB,CAAhB;;AACA,MAAI,CAACtH,OAAL,EAAc;AACZ,UAAM,IAAIE,KAAJ,CAAU,wDAAV,CAAN;AACD;;AACD,SAAOF,OAAP;AACD,CAND;;AAQA,SAASf,YAAT,CACEuI,KADF;AAEEC,gBAFF;MAIUhJ,UAAkBgJ,iBAAlBhJ;MAASE,OAAS8I,iBAAT9I;;AACjB,UAAQA,IAAR;AACE,SAAK+I,mBAAS,CAAC7I,gBAAV,CAA2B8I,gBAAhC;AACA,SAAKD,mBAAS,CAAC7I,gBAAV,CAA2B+I,sBAAhC;AACA,SAAKF,mBAAS,CAAC7I,gBAAV,CAA2BgJ,SAAhC;AACE,0BACKpJ,OADL;AAEEW,QAAAA,MAAM,EAAE,IAFV;AAGEE,QAAAA,gBAAgB,EAAEkI,KAAK,CAAClI;AAH1B;;AAKF;AACE,aAAOb,OAAP;AAVJ;AAYD;;AAgDD,IAAaqJ,WAAW,GAA+B,SAA1CA,WAA0C;MAC9C3D,aAAP/D;mCACA2H;MAAAA,wDAAqB,UAAA3H,KAAK;AAAA,WAAI4H,kBAAkB,CAAC5H,KAAD,CAAtB;AAAA;MAC1BX,aAAAA;MACAuF,gBAAAA;MACAC,eAAAA;MACAnC,gBAAAA;2BACAb;MAAAA,sCAAW;2BACXjE;MAAAA,sCAAW;AAAA,WAAMC,SAAN;AAAA;MACXG,iBAAAA;4BACAsD;MAAAA,wCAAY;0BACZJ;MAAAA,oCAAU;8BACVC;MAAAA,4CAAc;8BACdyB;MAAAA,4CAAc;MACd3E,aAAAA;MACAoD,iBAAAA;mCACAwG;MAAAA,0DAAuB;MACvBjC,uBAAAA;MACGzH;;0BAEeuH,gBAAgB,CAAC3B,KAAD,EAAQ6B,eAAR;MAA1B5F,0BAAAA;;kBAEN8H,cAAQ,CAA+BD,oBAA/B;MADHE;MAAeC;;AAGtB,MAAMC,KAAK,GAAGzK,cAAK,CAAC6I,WAAN,CAAkB;AAC9B2B,IAAAA,gBAAgB,CAAC,EAAD,CAAhB;AACD,GAFa,EAEX,EAFW,CAAd;;mBAWIV,mBAAS;AACXtH,IAAAA,KAAK,EAALA,KADW;AAEXnB,IAAAA,YAAY,EAAZA,YAFW;AAGXF,IAAAA,YAAY,EAAE,IAHH;AAIXuJ,IAAAA,oBAAoB,EAAE;UAAGvJ,qBAAAA;;AACvB,UAAI,CAACA,YAAL,EAAmB;AACjB;AACD;;AACD,UAAMyB,KAAK,GAAG2H,aAAa,CAACI,OAAd,CAAsBxJ,YAAtB,CAAd;;AACA,UAAIyB,KAAK,GAAG,CAAZ,EAAe;AACb,YAAMgI,cAAc,aACfL,aAAa,CAACM,KAAd,CAAoB,CAApB,EAAuBjI,KAAvB,CADe,EAEf2H,aAAa,CAACM,KAAd,CAAoBjI,KAAK,GAAG,CAA5B,CAFe,CAApB;AAIA4H,QAAAA,gBAAgB,CAACI,cAAD,CAAhB;AACAxK,QAAAA,QAAQ,CAACwK,cAAD,CAAR;AACD,OAPD,MAOO,IAAIhI,KAAK,KAAK,CAAd,EAAiB;AACtB,YAAMgI,eAAc,aAAOL,aAAa,CAACM,KAAd,CAAoB,CAApB,CAAP,CAApB;;AACAL,QAAAA,gBAAgB,CAACI,eAAD,CAAhB;AACAxK,QAAAA,QAAQ,CAACwK,eAAD,CAAR;AACD,OAJM,MAIA;AACL,YAAMA,gBAAc,aAAOL,aAAP,GAAsBpJ,YAAtB,EAApB;;AACAqJ,QAAAA,gBAAgB,CAACI,gBAAD,CAAhB;AACAxK,QAAAA,QAAQ,CAACwK,gBAAD,CAAR;AACD;AACF;AAzBU,KA0BRjK,IA1BQ;MAPXa,oBAAAA;MACA2B,kCAAAA;MACAc,2BAAAA;MACAvB,0BAAAA;MACAhB,8BAAAA;MACAe,0BAAAA;MACA6C,sBAAAA;;AA6BF,MAAMwF,UAAU,GAAGP,aAAa,CAAC/E,MAAd,GACf2E,kBAAkB,CAACI,aAAD,CADH,GAEf,EAFJ;AAGA,MAAMQ,aAAa,GAAGvB,iBAAW,CAAC,iBAAD,CAAjC;AAEA,SACExJ,4BAAA,CAAC0J,kBAAkB,CAACzH,QAApB;AACEC,IAAAA,KAAK,EAAE;AAAEV,MAAAA,MAAM,EAANA,MAAF;AAAUiJ,MAAAA,KAAK,EAALA,KAAV;AAAiBtH,MAAAA,oBAAoB,EAApBA,oBAAjB;AAAuCmC,MAAAA,QAAQ,EAARA,QAAvC;AAAiDF,MAAAA,WAAW,EAAXA;AAAjD;GADT,EAGEpF,4BAAA,MAAA;AACEQ,IAAAA,SAAS,EAAEwB,UAAU,CACnB,iBADmB,EAEnB,sBAFmB,EAGnBxB,SAHmB;AAKrBC,IAAAA,KAAK,EAAEA;GANT,EAQET,4BAAA,CAACkE,oBAAD;AACErC,IAAAA,KAAK,EAAEA;AACP4H,IAAAA,OAAO,EAAEsB;AACTzG,IAAAA,UAAU,EAAKL,aAAa;AAC5BmD,IAAAA,QAAQ,EAAEA;AACVC,IAAAA,OAAO,EAAEA;AACTtD,IAAAA,QAAQ,EAAEwG,aAAa,CAAC/E,MAAd,GAAuB,CAAvB,IAA4BhE;AACtC0D,IAAAA,QAAQ,EAAEA;AACVb,IAAAA,QAAQ,EAAEA;AACVF,IAAAA,MAAM,EACJnE,4BAAA,CAACoE,UAAD;AACE4G,MAAAA,WAAW,EAAElH,SAAS,IAAIyG,aAAa,CAAC/E,MAAd,GAAuB;AACjD9B,MAAAA,OAAO,EAAEA;AACTC,MAAAA,WAAW,EAAEA;AACbU,MAAAA,QAAQ,EAAEA;KAJZ;GAVJ,EAkBErE,4BAAA,SAAA,oBACMmD,oBAAoB,CAAC;AACvB1C,IAAAA,KAAK,EAAE;AACLgF,MAAAA,SAAS,EAAE;AADN,KADgB;AAIvB1E,IAAAA,IAAI,EAAE,QAJiB;AAKvBP,IAAAA,SAAS,EAAE;AALY,GAAD,EAD1B,EASGsK,UATH,CAlBF,CARF,EAsCE9K,4BAAA,KAAA;AACEQ,IAAAA,SAAS,EAAEwB,UAAU,CAAC,mBAAD,EAAsB;AACzC,iCAA2BR;AADc,KAAtB;KAGjBkB,YAAY,CAAC;AACfjC,IAAAA,KAAK;AACH8D,MAAAA,QAAQ,EAAE,UADP;AAEHC,MAAAA,GAAG,EAAKC,YAAK,CAACC,WAAN,GAAoBD,YAAK,CAACE,UAA/B;AAFA,OAGAd,SAHA;AADU,GAAD,EAJlB,EAYGrC,MAAM,IACLgB,KAAK,CAACG,GAAN,CAAU,UAACf,IAAD,EAAOgB,KAAP;AAAA,WACR5C,4BAAA,KAAA;AACEQ,MAAAA,SAAS,EAAEwB,UAAU,CAAC,yBAAD,EAA4B;AAC/C,gDACEN,gBAAgB,KAAKkB,KAFwB;AAG/C,6CACE2H,aAAa,CAACU,QAAd,CAAuBrJ,IAAvB;AAJ6C,OAA5B;AAMrBiB,MAAAA,GAAG,OAAKjB,IAAL,GAAYgB;OACXH,YAAY,CAAC;AACfb,MAAAA,IAAI,EAAJA,IADe;AAEfgB,MAAAA,KAAK,EAALA;AAFe,KAAD;AAIhBnC,MAAAA,KAAK,EAAE;AAAEyK,QAAAA,OAAO,EAAE;AAAX;MAZT,EAcElL,4BAAA,OAAA;AAAMS,MAAAA,KAAK,EAAE;AAAEyK,QAAAA,OAAO,EAAE;AAAX;KAAb,EACElL,4BAAA,OAAA;AACEQ,MAAAA,SAAS,EAAEwB,UAAU,CAAC,0BAAD,EAA6B;AAChD,6CACEuI,aAAa,CAACU,QAAd,CAAuBrJ,IAAvB;AAF8C,OAA7B;KADvB,EAME5B,4BAAA,CAACmL,YAAD,MAAA,CANF,CADF,EASEnL,4BAAA,OAAA;AAAMQ,MAAAA,SAAS,EAAC;KAAhB,EACGoB,IAAI,CAACC,KADR,CATF,CAdF,EA2BGD,IAAI,CAACkB,KAAL,IACC9C,4BAAA,OAAA,MAAA,EACG4B,IAAI,CAACkB,KAAL,CAAWH,GAAX,CAAe,UAACI,IAAD,EAAOH,KAAP;AAAA,aACd5C,4BAAA,CAAC+C,IAAD;AACEF,QAAAA,GAAG,EAAED;AACLI,QAAAA,MAAM;AACNxC,QAAAA,SAAS,EAAC;OAHZ,CADc;AAAA,KAAf,CADH,CA5BJ,CADQ;AAAA,GAAV,CAbJ,CAtCF,CAHF,CADF;AAoGD,CAxKM;;AA0KP,IAAMoE,aAAW,GAAqC,SAAhDA,WAAgD;MAAMC;;8BACxC8E,qBAAqB;MAA/Bc,8BAAAA;;AACR,SACEzK,4BAAA,wBAAA,MAAA,EACEA,4BAAA,SAAA;AACEQ,IAAAA,SAAS,EAAC;AACVO,IAAAA,IAAI,EAAC;AACLqC,IAAAA,QAAQ,EAAE,CAAC;AACX2B,IAAAA,OAAO,EAAE;AAAA,aAAM0F,KAAK,EAAX;AAAA;KACL5F,MALN,EAOE7E,4BAAA,CAACoL,eAAD,MAAA,CAPF,CADF,EAUEpL,4BAAA,MAAA;AAAKQ,IAAAA,SAAS,EAAC;GAAf,CAVF,CADF;AAcD,CAhBD;;AAkBA,IAAM4D,UAAQ,GAKT,SALCA,QAKD;MAAGV,gBAAAA;MAASC,oBAAAA;MAAaU,iBAAAA;MAAU2G,oBAAAA;;AACtC,MAAItH,OAAJ,EAAa;AACX,WAAO1D,4BAAA,CAACsD,mBAAD,MAAA,EAAsBK,WAAtB,CAAP;AACD;;AACD,MAAIU,QAAJ,EAAc;AACZ,WAAO,IAAP;AACD;;AACD,SAAO2G,WAAW,GAChBhL,4BAAA,wBAAA,MAAA,EACEA,4BAAA,CAAC4E,aAAD,MAAA,CADF,EAEE5E,4BAAA,CAACkD,sBAAD,MAAA,CAFF,CADgB,GAMhBlD,4BAAA,CAACkD,sBAAD,MAAA,CANF;AAQD,CApBD;;AAsBA,IAAMA,sBAAoB,GAAG,SAAvBA,oBAAuB;+BAEzByG,qBAAqB;MADfxG,8CAAAA;MAAsB3B,gCAAAA;MAAQ8D,kCAAAA;MAAUF,qCAAAA;;AAEhD,SACEpF,4BAAA,SAAA,oBACMmD,oBAAoB,CAAC;AACvB3C,IAAAA,SAAS,EAAEwB,UAAU,CAAC,6BAAD,EAAgC;AACnD,2CAAqCR;AADc,KAAhC,CADE;AAIvB6E,IAAAA,OAAO,EAAE;AACP,UAAIjB,WAAJ,EAAiB;AACfE,QAAAA,QAAQ;AACT;AACF;AARsB,GAAD;AAUxBvE,IAAAA,IAAI,EAAC;IAXP,EAaEf,4BAAA,CAACqD,mBAAD,MAAA,CAbF,CADF;AAiBD,CApBD;;AAsBA,IAAM8H,YAAY,GAAa,SAAzBA,YAAyB;AAC7B,SACEnL,4BAAA,MAAA;AACEQ,IAAAA,SAAS,EAAC;AACV6K,IAAAA,KAAK,EAAC;AACNC,IAAAA,MAAM,EAAC;AACPC,IAAAA,OAAO,EAAC;GAJV,EAMEvL,4BAAA,OAAA;AACEQ,IAAAA,SAAS,EAAC;AACVgL,IAAAA,CAAC,EAAC;AACFC,IAAAA,IAAI,EAAC;GAHP,CANF,CADF;AAcD,CAfD;;AAiBA,SAASrB,kBAAT,CAA4B5H,KAA5B;AACE,SAAOA,KAAK,CAACgD,MAAN,GAAe,CAAf,GACHhD,KAAK,CAACG,GAAN,CAAU,UAAAf,IAAI;AAAA,WAAIA,IAAI,CAACC,KAAT;AAAA,GAAd,EAA8B6J,QAA9B,EADG,GAEAlJ,KAAK,CAACgD,MAFN,qBAAP;AAGD;;AC/VDmG,4BAAsB,CAAC,UAAD,EAAa,MAAb,EAAqB,MAArB,EAA6B,MAA7B,CAAtB;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@entur/utils"),n=require("react"),l=e(n),a=require("downshift"),i=e(a),r=e(require("classnames")),s=require("@entur/form"),o=require("@entur/icons"),c=require("@entur/a11y"),d=require("@entur/loader"),u=require("@entur/tokens");function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e}).apply(this,arguments)}function p(e,t){if(null==e)return{};var n,l,a={},i=Object.keys(e);for(l=0;l<i.length;l++)t.indexOf(n=i[l])>=0||(a[n]=e[n]);return a}var b=l.createContext(null),g=function(e){var t=e.children,n=e.onChange,a=void 0===n?function(){}:n,s=e.onInputValueChange,o=void 0===s?function(){}:s,c=e.highlightFirstItemOnOpen,d=void 0!==c&&c,u=e.className,g=e.style,f=p(e,["children","onChange","onInputValueChange","highlightFirstItemOnOpen","className","style"]);return l.createElement(i,Object.assign({itemToString:function(e){return e?e.label:""},onStateChange:function(e,t){e.type!==i.stateChangeTypes.controlledPropUpdatedSelectedItem&&("selectedItem"in e?a(e.selectedItem,t):"inputValue"in e&&o(e.inputValue))},stateReducer:function(e,t){return d&&"isOpen"in t&&t.isOpen?m({},t,{highlightedIndex:0}):t}},f),(function(e){return l.createElement("div",{className:r("eds-input-group",u),style:g},l.createElement(b.Provider,{value:e},t))}))},f=function(){var e=l.useContext(b);if(!e)throw new Error("You need to wrap your component in a DownshiftProvider");return e},v=function(e){var t=e.items,n=p(e,["items"]),a=f(),i=a.highlightedIndex,s=a.isOpen,c=a.selectedItem,d=a.getItemProps,u=a.getMenuProps;return l.createElement("ul",Object.assign({className:r("eds-dropdown-list",{"eds-dropdown-list--open":s})},u(),n),s?t.map((function(e,t){return l.createElement("li",Object.assign({className:r("eds-dropdown-list__item",{"eds-dropdown-list__item--highlighted":i===t,"eds-dropdown-list__item--selected":c===e})},d({key:""+t+e.value,item:e,index:t})),l.createElement("span",null,e.label),e.icons&&l.createElement("span",null,e.icons.map((function(e,t){return l.createElement(e,{key:t,inline:!0,className:"eds-dropdown-list__item-icon"})}))),c===e&&l.createElement(o.CheckIcon,null))})):null)},h=function(){var e=f();return l.createElement("button",Object.assign({},(0,e.getToggleButtonProps)({className:r("eds-dropdown__toggle-button",{"eds-dropdown__toggle-button--open":e.isOpen})}),{tabIndex:"-1",type:"button"}),l.createElement(o.DownArrowIcon,null))},y=function(e){var t=e.className,n=e.children,a=p(e,["className","children"]);return l.createElement("div",Object.assign({className:r("eds-inline-spinner",t)},a),l.createElement(d.LoadingDots,null),l.createElement(c.VisuallyHidden,null,n))},O=function(e){var t=e.children,n=e.className,a=e.items,i=e.loading,r=void 0!==i&&i,o=e.loadingText,c=void 0===o?"Loading...":o,d=e.style,b=e.listStyle,g=e.clearable,h=e.label,y=e.isFilled,O=void 0!==y&&y,E=e.disableLabelAnimation,w=p(e,["children","className","items","loading","loadingText","placeholder","style","listStyle","clearable","label","isFilled","disableLabelAnimation"]),N=f().getLabelProps;return l.createElement("div",{className:"eds-dropdown-wrapper",style:d},l.createElement(s.BaseFormControl,Object.assign({append:l.createElement(x,{clearable:g,loading:r,loadingText:c,readOnly:w.readOnly}),className:n,label:h,isFilled:O,labelProps:N(),disableLabelAnimation:E},w),t),l.createElement(v,Object.assign({items:a,style:m({position:"absolute",top:u.space.extraLarge3+u.space.extraSmall+"px"},b)},w)))},E=function(e){var t=m({},e),n=f(),a=n.clearSelection,i=n.selectedItem;return l.createElement(l.Fragment,null,i&&l.createElement("button",Object.assign({className:"eds-dropdown__clear-button",type:"button",tabIndex:-1,onClick:function(){return a()}},t),l.createElement(o.CloseSmallIcon,null)),i&&l.createElement("div",{className:"eds-dropdown__divider"}))},x=function(e){var t=e.clearable,n=e.readOnly;return e.loading?l.createElement(y,null,e.loadingText):n?null:t?l.createElement(l.Fragment,null,l.createElement(E,null)," ",l.createElement(h,null)):l.createElement(h,null)},w=function(e){var t=e.disabled,n=e.placeholder,a=void 0===n?"Vennligst velg":n,i=e.selectOnTab,r=void 0!==i&&i,s=e.openOnFocus,o=void 0!==s&&s,c=e.listStyle,d=e.items,u=e.label,b=e.disableLabelAnimation,g=e.loading,v=e.loadingText,h=e.className,y=e.clearable,E=p(e,["disabled","placeholder","selectOnTab","openOnFocus","listStyle","items","label","disableLabelAnimation","loading","loadingText","className","clearable"]),x=f(),w=x.getToggleButtonProps,N=x.selectedItem,I=x.selectHighlightedItem,_=x.openMenu,T=x.isOpen,F=x.highlightedIndex,S=x.setHighlightedIndex;return l.createElement(O,Object.assign({disabled:t,listStyle:c,items:d,label:u,isFilled:!!N||0!==a.length,disableLabelAnimation:b,loading:g,loadingText:v,className:h,clearable:y},E),l.createElement("button",Object.assign({},w(m({className:"eds-form-control eds-dropdown__selected-item",style:{textAlign:"left"},disabled:t,type:"button",onKeyDown:function(e){if(r&&"Tab"===e.key&&I(),T){var t=e.key,n=d.map((function(e,t){return m({},e,{index:t})})).filter((function(e){return e.label.trim().charAt(0).toLowerCase()===t})),l=n.find((function(e){return e.index>(null!=F?F:0)}));l?S(l.index):n.length>0&&S(n[0].index)}},onFocus:function(){o&&!T&&_()}},E))),N?N.label:a))},N=function(e){var t=e.disabled,n=void 0!==t&&t,a=e.className,i=e.items,r=e.loading,s=e.loadingText,o=e.readOnly,c=void 0!==o&&o,d=e.prepend,u=e.selectOnTab,b=void 0!==u&&u,g=e.openOnFocus,v=void 0!==g&&g,h=e.listStyle,y=e.clearable,E=e.itemFilter,x=void 0===E?function(e,t){return function(e,t){if(!t)return!0;var n=t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&");return new RegExp(n,"i").test(e.label)}(e,t)}:E,w=e.label,N=e.disableLabelAnimation,I=p(e,["disabled","className","items","loading","loadingText","readOnly","prepend","selectOnTab","openOnFocus","listStyle","clearable","itemFilter","label","disableLabelAnimation"]),_=f(),T=_.getInputProps,F=_.inputValue,S=_.selectHighlightedItem,k=_.isOpen,C=_.openMenu,P=_.selectedItem,j=l.useMemo((function(){return i.filter((function(e){return x(e,F)}))}),[F,i,x]);return l.createElement(O,{items:j,disabled:n,readOnly:c,className:a,loading:r,loadingText:s,prepend:d,listStyle:h,clearable:y,label:w,isFilled:!!P,disableLabelAnimation:N},l.createElement("input",Object.assign({},T(m({disabled:n,readOnly:c,className:"eds-form-control eds-dropdown__input",onKeyDown:function(e){b&&"Tab"===e.key&&S()},onFocus:function(){v&&!k&&C()}},I)))))},I=function(e){var t=e.feedback,n=e.variant;return l.createElement(s.VariantProvider,{variant:n},l.createElement("div",{className:e.className,style:e.style},e.children,t&&n&&l.createElement(s.FeedbackText,{variant:n},t)))},_=function(e,t){switch(t.type){case"request results":return{items:[],loading:!0};case"received results":return{items:t.payload,loading:!1}}},T=function(e,n){void 0===n&&(n=250);var a,i="function"==typeof e,r=l.useMemo((function(){return i?e:function(){return Promise.resolve(e)}}),[e,i]),s=l.useReducer(_,{items:i?[]:e,loading:!1}),o=s[0],c=o.items,d=o.loading,u=s[1],p=(a=l.useRef(!0),l.useEffect((function(){return function(){a.current=!1}}),[]),a.current),b=l.useCallback((function(e){try{return p?(u({type:"request results"}),Promise.resolve(r(e)).then((function(e){p&&u({type:"received results",payload:e})}))):Promise.resolve()}catch(e){return Promise.reject(e)}}),[r,p]),g=function(e){return l.useMemo((function(){return e.map((function(e){return"string"==typeof e?{value:e,label:e}:"value"in e?e:m({},e,{value:e.label})}))}),[e])}(c);return l.useEffect((function(){i&&b("")}),[i,b]),{items:g,loading:!!i&&d,fetchItems:t.debounce(b,n)}},F=l.createContext(null),S=function(){var e=l.useContext(F);if(!e)throw new Error("You need to wrap your component in a DownshiftProvider");return e};function k(e,t){var n=t.changes;switch(t.type){case a.useSelect.stateChangeTypes.MenuKeyDownEnter:case a.useSelect.stateChangeTypes.MenuKeyDownSpaceButton:case a.useSelect.stateChangeTypes.ItemClick:return m({},n,{isOpen:!0,highlightedIndex:e.highlightedIndex});default:return n}}var C=function(e){var t=m({},e),n=S().reset;return l.createElement(l.Fragment,null,l.createElement("button",Object.assign({className:"eds-dropdown__clear-button",type:"button",tabIndex:-1,onClick:function(){return n()}},t),l.createElement(o.CloseIcon,null)),l.createElement("div",{className:"eds-dropdown__divider"}))},P=function(e){var t=e.readOnly,n=e.hasSelected;return e.loading?l.createElement(y,null,e.loadingText):t?null:n?l.createElement(l.Fragment,null,l.createElement(C,null),l.createElement(j,null)):l.createElement(j,null)},j=function(){var e=S(),t=e.openMenu,n=e.openOnFocus;return l.createElement("button",Object.assign({},(0,e.getToggleButtonProps)({className:r("eds-dropdown__toggle-button",{"eds-dropdown__toggle-button--open":e.isOpen}),onFocus:function(){n&&t()}}),{type:"button"}),l.createElement(o.DownArrowIcon,null))},L=function(){return l.createElement("svg",{className:"eds-checkbox-icon",width:"11px",height:"9px",viewBox:"6 11 37 33"},l.createElement("path",{className:"eds-checkbox-icon__path",d:"M14.1 27.2l7.1 7.2 14.6-14.8",fill:"none"}))};t.warnAboutMissingStyles("dropdown","form","a11y","chip"),exports.Dropdown=function(e){var t=e.highlightFirstItemOnOpen,n=e.debounceTimeout,a=e.disabled,i=e.feedback,r=e.items,s=e.label,o=e.loadingText,c=e.onChange,d=void 0===c?function(){}:c,u=e.placeholder,m=e.prepend,b=e.readOnly,f=e.searchable,v=e.selectOnTab,h=e.openOnFocus,y=e.variant,O=e.value,E=e.clearable,x=void 0!==E&&E,_=e.className,F=e.style,S=e.listStyle,k=e.itemFilter,C=e.disableLabelAnimation,P=p(e,["highlightFirstItemOnOpen","debounceTimeout","disabled","feedback","items","label","loadingText","onChange","placeholder","prepend","readOnly","searchable","selectOnTab","openOnFocus","variant","value","clearable","className","style","listStyle","itemFilter","disableLabelAnimation"]),j=T(r,n),L=j.items,A=j.loading,M=j.fetchItems,D=void 0===O?void 0:L.find((function(e){return O===e.value}))||null,q=f?N:w,B=f?{itemFilter:k,name:P.name,"data-cy":P["data-cy"]}:{name:P.name,"data-cy":P["data-cy"]};return l.createElement(g,Object.assign({selectedItem:D,onInputValueChange:M,onChange:d,value:O,highlightFirstItemOnOpen:t,className:_,style:F},P),l.createElement(I,{feedback:i,variant:y},l.createElement(q,Object.assign({label:s,items:L,loading:A,loadingText:o,disabled:a,readOnly:b,placeholder:u,prepend:m,selectOnTab:v,openOnFocus:h,listStyle:S,clearable:x,disableLabelAnimation:C},B))))},exports.MultiSelect=function(e){var i=e.items,o=e.itemsSelectedLabel,c=void 0===o?function(e){return function(e){return e.length<3?e.map((function(e){return e.label})).toString():e.length+" elementer valgt"}(e)}:o,d=e.label,b=e.feedback,g=e.variant,f=e.disabled,v=e.readOnly,h=void 0!==v&&v,y=e.onChange,O=void 0===y?function(){}:y,E=e.className,x=e.clearable,w=void 0!==x&&x,N=e.loading,I=void 0!==N&&N,_=e.loadingText,S=void 0===_?"":_,C=e.openOnFocus,j=void 0!==C&&C,A=e.style,M=e.listStyle,D=e.debounceTimeout,q=p(e,["items","itemsSelectedLabel","label","feedback","variant","disabled","readOnly","onChange","className","clearable","loading","loadingText","openOnFocus","style","listStyle","debounceTimeout"]),B=T(i,D).items,V=n.useState([]),R=V[0],H=V[1],K=l.useCallback((function(){H([])}),[]),Y=a.useSelect(m({items:B,stateReducer:k,selectedItem:null,onSelectedItemChange:function(e){var t=e.selectedItem;if(t){var n=R.indexOf(t);if(n>0){var l=[].concat(R.slice(0,n),R.slice(n+1));H(l),O(l)}else if(0===n){var a=[].concat(R.slice(1));H(a),O(a)}else{var i=[].concat(R,[t]);H(i),O(i)}}}},q)),$=Y.isOpen,U=Y.getToggleButtonProps,z=Y.getLabelProps,G=Y.getMenuProps,J=Y.highlightedIndex,Q=Y.getItemProps,W=Y.openMenu,X=R.length?c(R):"",Z=t.useRandomId("eds-multiselect");return l.createElement(F.Provider,{value:{isOpen:$,reset:K,getToggleButtonProps:U,openMenu:W,openOnFocus:j}},l.createElement("div",{className:r("eds-multiselect","eds-dropdown-wrapper",E),style:A},l.createElement(s.BaseFormControl,{label:d,labelId:Z,labelProps:z(),feedback:b,variant:g,isFilled:R.length>0||$,disabled:f,readOnly:h,append:l.createElement(P,{hasSelected:w&&R.length>0,loading:I,loadingText:S,readOnly:h})},l.createElement("button",Object.assign({},U({style:{textAlign:"left"},type:"button",className:"eds-form-control eds-multiselect__button"})),X)),l.createElement("ul",Object.assign({className:r("eds-dropdown-list",{"eds-dropdown-list--open":$})},G({style:m({position:"absolute",top:u.space.extraLarge3+u.space.extraSmall+"px"},M)})),$&&B.map((function(e,t){return l.createElement("li",Object.assign({className:r("eds-dropdown-list__item",{"eds-dropdown-list__item--highlighted":J===t,"eds-dropdown-list__item--selected":R.includes(e)}),key:""+e+t},Q({item:e,index:t}),{style:{display:"flex"}}),l.createElement("span",{style:{display:"flex"}},l.createElement("span",{className:r("eds-multiselect-checkbox",{"eds-multiselect-checkbox--checked":R.includes(e)})},l.createElement(L,null)),l.createElement("span",{className:"eds-multiselect__item-label"},e.label)),e.icons&&l.createElement("span",null,e.icons.map((function(e,t){return l.createElement(e,{key:t,inline:!0,className:"eds-dropdown-list__item-icon"})}))))})))))},exports.NativeDropdown=function(e){var n=e.className,a=e.disabled,i=void 0!==a&&a,r=e.readOnly,c=void 0!==r&&r,d=e.items,u=e.loadingText,m=e.prepend,b=e.style,g=e.label,f=e.variant,v=e.feedback,h=e.disableLabelAnimation,O=p(e,["className","disabled","readOnly","items","loadingText","prepend","style","label","variant","feedback","disableLabelAnimation"]),E=T(d),x=E.items,w=E.loading,N=l.createElement(o.DownArrowIcon,{inline:!0});i||c?N=null:w&&(N=l.createElement(y,null,u));var I=t.useRandomId("eds-native-dropdown");return l.createElement(s.BaseFormControl,{disabled:i,readOnly:c,prepend:m,append:N,className:n,style:b,label:g,variant:f,feedback:v,labelId:I,disableLabelAnimation:h,isFilled:!0},l.createElement("select",Object.assign({"aria-invalid":"error"===f,className:"eds-form-control eds-dropdown",disabled:i||c},O),x.map((function(e){return l.createElement("option",{key:e.value,value:e.value},e.label)}))))};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@entur/utils"),n=require("react"),l=e(n),a=require("downshift"),i=e(a),r=e(require("classnames")),s=require("@entur/form"),o=require("@entur/icons"),c=require("@entur/a11y"),d=require("@entur/loader"),u=require("@entur/tokens");function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e}).apply(this,arguments)}function p(e,t){if(null==e)return{};var n,l,a={},i=Object.keys(e);for(l=0;l<i.length;l++)t.indexOf(n=i[l])>=0||(a[n]=e[n]);return a}var b=l.createContext(null),g=function(e){var t=e.children,n=e.onChange,a=void 0===n?function(){}:n,s=e.onInputValueChange,o=void 0===s?function(){}:s,c=e.highlightFirstItemOnOpen,d=void 0!==c&&c,u=e.className,g=e.style,f=e.searchable,h=void 0!==f&&f,v=p(e,["children","onChange","onInputValueChange","highlightFirstItemOnOpen","className","style","searchable"]);return l.createElement(i,Object.assign({itemToString:function(e){return e?e.label:""},onStateChange:function(e,t){e.type!==i.stateChangeTypes.controlledPropUpdatedSelectedItem&&("selectedItem"in e?a(e.selectedItem,t):"inputValue"in e&&o(e.inputValue))},stateReducer:function(e,t){var n=d&&"isOpen"in t&&t.isOpen?{highlightedIndex:0}:{};if(!h)return m({},t,n);switch(t.type){case"__autocomplete_change_input__":return m({},t,n);case"__autocomplete_click_item__":case"__autocomplete_keydown_enter__":case"__autocomplete_blur_input__":case"__autocomplete_mouseup__":return m({},t,{inputValue:""},n);default:return m({},t,n)}}},v),(function(e){return l.createElement("div",{className:r("eds-input-group",u),style:g},l.createElement(b.Provider,{value:e},t))}))},f=function(){var e=l.useContext(b);if(!e)throw new Error("You need to wrap your component in a DownshiftProvider");return e},h=function(e){var t=e.items,n=p(e,["items"]),a=f(),i=a.highlightedIndex,s=a.isOpen,c=a.selectedItem,d=a.getItemProps,u=a.getMenuProps;return l.createElement("ul",Object.assign({className:r("eds-dropdown-list",{"eds-dropdown-list--open":s})},u(),n),s?t.map((function(e,t){return l.createElement("li",Object.assign({className:r("eds-dropdown-list__item",{"eds-dropdown-list__item--highlighted":i===t,"eds-dropdown-list__item--selected":c===e})},d({key:""+t+e.value,item:e,index:t})),l.createElement("span",null,e.label),e.icons&&l.createElement("span",null,e.icons.map((function(e,t){return l.createElement(e,{key:t,inline:!0,className:"eds-dropdown-list__item-icon"})}))),c===e&&l.createElement(o.CheckIcon,null))})):null)},v=function(){var e=f();return l.createElement("button",Object.assign({},(0,e.getToggleButtonProps)({className:r("eds-dropdown__toggle-button",{"eds-dropdown__toggle-button--open":e.isOpen})}),{tabIndex:"-1",type:"button"}),l.createElement(o.DownArrowIcon,null))},y=function(e){var t=e.className,n=e.children,a=p(e,["className","children"]);return l.createElement("div",Object.assign({className:r("eds-inline-spinner",t)},a),l.createElement(d.LoadingDots,null),l.createElement(c.VisuallyHidden,null,n))},O=function(e){var t=e.children,n=e.className,a=e.items,i=e.loading,r=void 0!==i&&i,o=e.loadingText,c=void 0===o?"Loading...":o,d=e.style,b=e.listStyle,g=e.clearable,v=e.label,y=e.isFilled,O=void 0!==y&&y,E=e.disableLabelAnimation,x=p(e,["children","className","items","loading","loadingText","placeholder","style","listStyle","clearable","label","isFilled","disableLabelAnimation"]),w=f().getLabelProps;return l.createElement("div",{className:"eds-dropdown-wrapper",style:d},l.createElement(s.BaseFormControl,Object.assign({append:l.createElement(_,{clearable:g,loading:r,loadingText:c,readOnly:x.readOnly}),className:n,label:v,isFilled:O,labelProps:w(),disableLabelAnimation:E},x),t),l.createElement(h,Object.assign({items:a,style:m({position:"absolute",top:u.space.extraLarge3+u.space.extraSmall+"px"},b)},x)))},E=function(e){var t=m({},e),n=f(),a=n.clearSelection,i=n.selectedItem;return l.createElement(l.Fragment,null,i&&l.createElement("button",Object.assign({className:"eds-dropdown__clear-button",type:"button",tabIndex:-1,onClick:function(){return a()}},t),l.createElement(o.CloseSmallIcon,null)),i&&l.createElement("div",{className:"eds-dropdown__divider"}))},_=function(e){var t=e.clearable,n=e.readOnly;return e.loading?l.createElement(y,null,e.loadingText):n?null:t?l.createElement(l.Fragment,null,l.createElement(E,null)," ",l.createElement(v,null)):l.createElement(v,null)},x=function(e){var t=e.disabled,n=e.placeholder,a=void 0===n?"Vennligst velg":n,i=e.selectOnTab,r=void 0!==i&&i,s=e.openOnFocus,o=void 0!==s&&s,c=e.listStyle,d=e.items,u=e.label,b=e.disableLabelAnimation,g=e.loading,h=e.loadingText,v=e.className,y=e.clearable,E=p(e,["disabled","placeholder","selectOnTab","openOnFocus","listStyle","items","label","disableLabelAnimation","loading","loadingText","className","clearable"]),_=f(),x=_.getToggleButtonProps,w=_.selectedItem,I=_.selectHighlightedItem,N=_.openMenu,T=_.isOpen,F=_.highlightedIndex,S=_.setHighlightedIndex;return l.createElement(O,Object.assign({disabled:t,listStyle:c,items:d,label:u,isFilled:!!w||0!==a.length,disableLabelAnimation:b,loading:g,loadingText:h,className:v,clearable:y},E),l.createElement("button",Object.assign({},x(m({className:"eds-form-control eds-dropdown__selected-item",style:{textAlign:"left"},disabled:t,type:"button",onKeyDown:function(e){if(r&&"Tab"===e.key&&I(),T){var t=e.key,n=d.map((function(e,t){return m({},e,{index:t})})).filter((function(e){return e.label.trim().charAt(0).toLowerCase()===t})),l=n.find((function(e){return e.index>(null!=F?F:0)}));l?S(l.index):n.length>0&&S(n[0].index)}},onFocus:function(){o&&!T&&N()}},E))),w?w.label:a))},w=function(e){var t=e.disabled,n=void 0!==t&&t,a=e.className,i=e.items,r=e.loading,s=e.loadingText,o=e.readOnly,c=void 0!==o&&o,d=e.prepend,u=e.selectOnTab,b=void 0!==u&&u,g=e.openOnFocus,h=void 0!==g&&g,v=e.listStyle,y=e.clearable,E=e.itemFilter,_=void 0===E?function(e,t){return function(e,t){if(!t)return!0;var n=t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&");return new RegExp(n,"i").test(e.label)}(e,t)}:E,x=e.label,w=e.disableLabelAnimation,I=e.placeholder,N=p(e,["disabled","className","items","loading","loadingText","readOnly","prepend","selectOnTab","openOnFocus","listStyle","clearable","itemFilter","label","disableLabelAnimation","placeholder"]),T=f(),F=T.getInputProps,S=T.inputValue,k=T.selectHighlightedItem,C=T.isOpen,P=T.openMenu,j=T.selectedItem,L=l.useMemo((function(){return i.filter((function(e){return _(e,S)}))}),[S,i,_]);return l.createElement(O,{items:L,disabled:n,readOnly:c,className:a,loading:r,loadingText:s,prepend:d,listStyle:v,clearable:y,label:x,isFilled:!!j,disableLabelAnimation:w},j&&!S&&l.createElement("span",{className:"eds-dropdown__searchable-selected-item"},j.label),l.createElement("input",Object.assign({},F(m({disabled:n,readOnly:c,className:"eds-form-control eds-dropdown__input",onKeyDown:function(e){b&&"Tab"===e.key&&k()},onFocus:function(){h&&!C&&P()},placeholder:j?void 0:I},N)))))},I=function(e){var t=e.feedback,n=e.variant;return l.createElement(s.VariantProvider,{variant:n},l.createElement("div",{className:e.className,style:e.style},e.children,t&&n&&l.createElement(s.FeedbackText,{variant:n},t)))},N=function(e,t){switch(t.type){case"request results":return{items:[],loading:!0};case"received results":return{items:t.payload,loading:!1}}},T=function(e,n){void 0===n&&(n=250);var a,i="function"==typeof e,r=l.useMemo((function(){return i?e:function(){return Promise.resolve(e)}}),[e,i]),s=l.useReducer(N,{items:i?[]:e,loading:!1}),o=s[0],c=o.items,d=o.loading,u=s[1],p=(a=l.useRef(!0),l.useEffect((function(){return function(){a.current=!1}}),[]),a.current),b=l.useCallback((function(e){try{return p?(u({type:"request results"}),Promise.resolve(r(e)).then((function(e){p&&u({type:"received results",payload:e})}))):Promise.resolve()}catch(e){return Promise.reject(e)}}),[r,p]),g=function(e){return l.useMemo((function(){return e.map((function(e){return"string"==typeof e?{value:e,label:e}:"value"in e?e:m({},e,{value:e.label})}))}),[e])}(c);return l.useEffect((function(){i&&b("")}),[i,b]),{items:g,loading:!!i&&d,fetchItems:t.debounce(b,n)}},F=l.createContext(null),S=function(){var e=l.useContext(F);if(!e)throw new Error("You need to wrap your component in a DownshiftProvider");return e};function k(e,t){var n=t.changes;switch(t.type){case a.useSelect.stateChangeTypes.MenuKeyDownEnter:case a.useSelect.stateChangeTypes.MenuKeyDownSpaceButton:case a.useSelect.stateChangeTypes.ItemClick:return m({},n,{isOpen:!0,highlightedIndex:e.highlightedIndex});default:return n}}var C=function(e){var t=m({},e),n=S().reset;return l.createElement(l.Fragment,null,l.createElement("button",Object.assign({className:"eds-dropdown__clear-button",type:"button",tabIndex:-1,onClick:function(){return n()}},t),l.createElement(o.CloseIcon,null)),l.createElement("div",{className:"eds-dropdown__divider"}))},P=function(e){var t=e.readOnly,n=e.hasSelected;return e.loading?l.createElement(y,null,e.loadingText):t?null:n?l.createElement(l.Fragment,null,l.createElement(C,null),l.createElement(j,null)):l.createElement(j,null)},j=function(){var e=S(),t=e.openMenu,n=e.openOnFocus;return l.createElement("button",Object.assign({},(0,e.getToggleButtonProps)({className:r("eds-dropdown__toggle-button",{"eds-dropdown__toggle-button--open":e.isOpen}),onFocus:function(){n&&t()}}),{type:"button"}),l.createElement(o.DownArrowIcon,null))},L=function(){return l.createElement("svg",{className:"eds-checkbox-icon",width:"11px",height:"9px",viewBox:"6 11 37 33"},l.createElement("path",{className:"eds-checkbox-icon__path",d:"M14.1 27.2l7.1 7.2 14.6-14.8",fill:"none"}))};t.warnAboutMissingStyles("dropdown","form","a11y","chip"),exports.Dropdown=function(e){var t=e.highlightFirstItemOnOpen,n=e.debounceTimeout,a=e.disabled,i=e.feedback,r=e.items,s=e.label,o=e.loadingText,c=e.onChange,d=void 0===c?function(){}:c,u=e.placeholder,m=e.prepend,b=e.readOnly,f=e.searchable,h=e.selectOnTab,v=e.openOnFocus,y=e.variant,O=e.value,E=e.clearable,_=void 0!==E&&E,N=e.className,F=e.style,S=e.listStyle,k=e.itemFilter,C=e.disableLabelAnimation,P=p(e,["highlightFirstItemOnOpen","debounceTimeout","disabled","feedback","items","label","loadingText","onChange","placeholder","prepend","readOnly","searchable","selectOnTab","openOnFocus","variant","value","clearable","className","style","listStyle","itemFilter","disableLabelAnimation"]),j=T(r,n),L=j.items,A=j.loading,M=j.fetchItems,D=void 0===O?void 0:L.find((function(e){return O===e.value}))||null,q=f?w:x,B=f?{itemFilter:k,name:P.name,"data-cy":P["data-cy"]}:{name:P.name,"data-cy":P["data-cy"]};return l.createElement(g,Object.assign({selectedItem:D,onInputValueChange:M,onChange:d,value:O,highlightFirstItemOnOpen:t,className:N,style:F,searchable:f},P),l.createElement(I,{feedback:i,variant:y},l.createElement(q,Object.assign({label:s,items:L,loading:A,loadingText:o,disabled:a,readOnly:b,placeholder:u,prepend:m,selectOnTab:h,openOnFocus:v,listStyle:S,clearable:_,disableLabelAnimation:C},B))))},exports.MultiSelect=function(e){var i=e.items,o=e.itemsSelectedLabel,c=void 0===o?function(e){return function(e){return e.length<3?e.map((function(e){return e.label})).toString():e.length+" elementer valgt"}(e)}:o,d=e.label,b=e.feedback,g=e.variant,f=e.disabled,h=e.readOnly,v=void 0!==h&&h,y=e.onChange,O=void 0===y?function(){}:y,E=e.className,_=e.clearable,x=void 0!==_&&_,w=e.loading,I=void 0!==w&&w,N=e.loadingText,S=void 0===N?"":N,C=e.openOnFocus,j=void 0!==C&&C,A=e.style,M=e.listStyle,D=e.initialSelectedItems,q=void 0===D?[]:D,B=e.debounceTimeout,V=p(e,["items","itemsSelectedLabel","label","feedback","variant","disabled","readOnly","onChange","className","clearable","loading","loadingText","openOnFocus","style","listStyle","initialSelectedItems","debounceTimeout"]),R=T(i,B).items,H=n.useState(q),K=H[0],Y=H[1],$=l.useCallback((function(){Y([])}),[]),U=a.useSelect(m({items:R,stateReducer:k,selectedItem:null,onSelectedItemChange:function(e){var t=e.selectedItem;if(t){var n=K.indexOf(t);if(n>0){var l=[].concat(K.slice(0,n),K.slice(n+1));Y(l),O(l)}else if(0===n){var a=[].concat(K.slice(1));Y(a),O(a)}else{var i=[].concat(K,[t]);Y(i),O(i)}}}},V)),z=U.isOpen,G=U.getToggleButtonProps,J=U.getLabelProps,Q=U.getMenuProps,W=U.highlightedIndex,X=U.getItemProps,Z=U.openMenu,ee=K.length?c(K):"",te=t.useRandomId("eds-multiselect");return l.createElement(F.Provider,{value:{isOpen:z,reset:$,getToggleButtonProps:G,openMenu:Z,openOnFocus:j}},l.createElement("div",{className:r("eds-multiselect","eds-dropdown-wrapper",E),style:A},l.createElement(s.BaseFormControl,{label:d,labelId:te,labelProps:J(),feedback:b,variant:g,isFilled:K.length>0||z,disabled:f,readOnly:v,append:l.createElement(P,{hasSelected:x&&K.length>0,loading:I,loadingText:S,readOnly:v})},l.createElement("button",Object.assign({},G({style:{textAlign:"left"},type:"button",className:"eds-form-control eds-multiselect__button"})),ee)),l.createElement("ul",Object.assign({className:r("eds-dropdown-list",{"eds-dropdown-list--open":z})},Q({style:m({position:"absolute",top:u.space.extraLarge3+u.space.extraSmall+"px"},M)})),z&&R.map((function(e,t){return l.createElement("li",Object.assign({className:r("eds-dropdown-list__item",{"eds-dropdown-list__item--highlighted":W===t,"eds-dropdown-list__item--selected":K.includes(e)}),key:""+e+t},X({item:e,index:t}),{style:{display:"flex"}}),l.createElement("span",{style:{display:"flex"}},l.createElement("span",{className:r("eds-multiselect-checkbox",{"eds-multiselect-checkbox--checked":K.includes(e)})},l.createElement(L,null)),l.createElement("span",{className:"eds-multiselect__item-label"},e.label)),e.icons&&l.createElement("span",null,e.icons.map((function(e,t){return l.createElement(e,{key:t,inline:!0,className:"eds-dropdown-list__item-icon"})}))))})))))},exports.NativeDropdown=function(e){var n=e.className,a=e.disabled,i=void 0!==a&&a,r=e.readOnly,c=void 0!==r&&r,d=e.items,u=e.loadingText,m=e.prepend,b=e.style,g=e.label,f=e.variant,h=e.feedback,v=e.disableLabelAnimation,O=p(e,["className","disabled","readOnly","items","loadingText","prepend","style","label","variant","feedback","disableLabelAnimation"]),E=T(d),_=E.items,x=E.loading,w=l.createElement(o.DownArrowIcon,{inline:!0});i||c?w=null:x&&(w=l.createElement(y,null,u));var I=t.useRandomId("eds-native-dropdown");return l.createElement(s.BaseFormControl,{disabled:i,readOnly:c,prepend:m,append:w,className:n,style:b,label:g,variant:f,feedback:h,labelId:I,disableLabelAnimation:v,isFilled:!0},l.createElement("select",Object.assign({"aria-invalid":"error"===f,className:"eds-form-control eds-dropdown",disabled:i||c},O),_.map((function(e){return l.createElement("option",{key:e.value,value:e.value},e.label)}))))};
2
2
  //# sourceMappingURL=dropdown.cjs.production.min.js.map