@entur/dropdown 3.0.15 → 3.0.16

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,19 @@
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
+ # [4.0.0-beta.2](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@4.0.0-beta.1...@entur/dropdown@4.0.0-beta.2) (2022-09-30)
7
+
8
+ ### Features
9
+
10
+ - **searchable dropdown:** fixes from beta testing ([c460e94](https://bitbucket.org/enturas/design-system/commits/c460e947b2f39fd486b79d433d43a4ac3cdc9bdc))
11
+
12
+ # [4.0.0-beta.1](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@3.0.15...@entur/dropdown@4.0.0-beta.1) (2022-09-27)
13
+
14
+ ### Features
15
+
16
+ - **searchable dropdown:** fixes from beta testing ([f88405f](https://bitbucket.org/enturas/design-system/commits/f88405fd45353163bcd0b202b538a470d86e5d8c))
17
+ - **searchable dropdown:** mvp new controlled searchable dropdown component (alpha) ([b8b2d05](https://bitbucket.org/enturas/design-system/commits/b8b2d051461406de0544b92b5169b066c91386ce))
18
+
6
19
  ## [3.0.14](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@3.0.13...@entur/dropdown@3.0.14) (2022-08-31)
7
20
 
8
21
  **Note:** Version bump only for package @entur/dropdown
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { UseComboboxGetMenuPropsOptions, GetPropsCommonOptions, UseComboboxGetItemPropsOptions } from 'downshift';
3
+ import { NormalizedDropdownItemType } from '../useNormalizedItems';
4
+ declare type DropdownListProps = {
5
+ selectedItem: NormalizedDropdownItemType | null;
6
+ isOpen: boolean;
7
+ filteredItems: NormalizedDropdownItemType[];
8
+ highlightedIndex: number;
9
+ listStyle: {
10
+ [key: string]: any;
11
+ } | undefined;
12
+ getMenuProps: (options?: UseComboboxGetMenuPropsOptions | undefined, otherOptions?: GetPropsCommonOptions | undefined) => any;
13
+ getItemProps: (options: UseComboboxGetItemPropsOptions<NormalizedDropdownItemType>) => any;
14
+ [key: string]: any;
15
+ };
16
+ export declare const DropdownList: ({ selectedItem, isOpen, getMenuProps, getItemProps, filteredItems, highlightedIndex, listStyle, ...rest }: DropdownListProps) => JSX.Element;
17
+ export {};
@@ -0,0 +1,42 @@
1
+ /// <reference types="react" />
2
+ import { VariantType } from '@entur/form';
3
+ import { NormalizedDropdownItemType } from '../useNormalizedItems';
4
+ import './dropdown.scss';
5
+ export declare type SearchableDropdownProps = {
6
+ /** Tilgjengelige valg i dropdown-en */
7
+ items: NormalizedDropdownItemType[];
8
+ /** Valgt element. Bruk null for ingen verdi. */
9
+ selectedItem: NormalizedDropdownItemType | null;
10
+ /** Callback for når brukeren endrer valg */
11
+ onChange: (value: NormalizedDropdownItemType | null) => void;
12
+ /** Beskrivende tekst som forklarer feltet */
13
+ label: string;
14
+ /** Placeholder-tekst når ingenting er satt */
15
+ placeholder?: string;
16
+ /** Vis knapp for å nullstille Dropdown-en skal vises
17
+ * @default false
18
+ */
19
+ clearable?: boolean;
20
+ /** Vis listen med valg skal vises på fokus av inputfeltet
21
+ * @default false
22
+ */
23
+ openOnFocus?: boolean;
24
+ /** Gjør dropdown-en til å kun kunne leses
25
+ * @default false
26
+ */
27
+ readonly?: boolean;
28
+ /** Hvilken valideringsvariant som gjelder */
29
+ variant?: VariantType;
30
+ /** Valideringsmelding, brukes sammen med `variant` */
31
+ feedback?: string;
32
+ className?: string;
33
+ style?: {
34
+ [key: string]: any;
35
+ };
36
+ /** Style som kun påføres listeelementet */
37
+ listStyle?: {
38
+ [key: string]: any;
39
+ };
40
+ [key: string]: any;
41
+ };
42
+ export declare const SearchableDropdownBeta: ({ items, selectedItem: value, onChange, label, placeholder, clearable, openOnFocus, readonly, feedback, variant, className, listStyle, ...rest }: SearchableDropdownProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from './SearchableDropdown';
@@ -11,6 +11,7 @@ var icons = require('@entur/icons');
11
11
  var a11y = require('@entur/a11y');
12
12
  var loader = require('@entur/loader');
13
13
  var tokens = require('@entur/tokens');
14
+ var button = require('@entur/button');
14
15
 
15
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
17
 
@@ -87,7 +88,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
87
88
  return target;
88
89
  }
89
90
 
90
- var _excluded$8 = ["children", "onChange", "onInputValueChange", "highlightFirstItemOnOpen", "className", "style", "searchable"];
91
+ var _excluded$a = ["children", "onChange", "onInputValueChange", "highlightFirstItemOnOpen", "className", "style", "searchable"];
91
92
  var DownshiftContext = /*#__PURE__*/React__default["default"].createContext(null);
92
93
  var DownshiftProvider = function DownshiftProvider(_ref) {
93
94
  var children = _ref.children,
@@ -105,7 +106,7 @@ var DownshiftProvider = function DownshiftProvider(_ref) {
105
106
  style = _ref.style,
106
107
  _ref$searchable = _ref.searchable,
107
108
  searchable = _ref$searchable === void 0 ? false : _ref$searchable,
108
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
109
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
109
110
 
110
111
  var handleStateChange = function handleStateChange(changes, stateAndHelpers) {
111
112
  if (changes.type === Downshift__default["default"].stateChangeTypes.controlledPropUpdatedSelectedItem) {
@@ -175,10 +176,10 @@ var useDownshift = function useDownshift() {
175
176
  return context;
176
177
  };
177
178
 
178
- var _excluded$7 = ["items"];
179
- var DropdownList = function DropdownList(_ref) {
179
+ var _excluded$9 = ["items"];
180
+ var DropdownList$1 = function DropdownList(_ref) {
180
181
  var items = _ref.items,
181
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
182
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
182
183
 
183
184
  var _useDownshift = useDownshift(),
184
185
  highlightedIndex = _useDownshift.highlightedIndex,
@@ -228,18 +229,18 @@ var DropdownToggleButton$1 = function DropdownToggleButton() {
228
229
  }), React__default["default"].createElement(icons.DownArrowIcon, null));
229
230
  };
230
231
 
231
- var _excluded$6 = ["className", "children"];
232
+ var _excluded$8 = ["className", "children"];
232
233
  var DropdownLoadingDots = function DropdownLoadingDots(_ref) {
233
234
  var className = _ref.className,
234
235
  children = _ref.children,
235
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
236
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
236
237
 
237
238
  return React__default["default"].createElement("div", _extends({
238
239
  className: classNames__default["default"]('eds-inline-spinner', className)
239
240
  }, rest), React__default["default"].createElement(loader.LoadingDots, null), React__default["default"].createElement(a11y.VisuallyHidden, null, children));
240
241
  };
241
242
 
242
- var _excluded$5 = ["children", "className", "items", "loading", "loadingText", "placeholder", "style", "listStyle", "clearable", "label", "isFilled", "disableLabelAnimation"];
243
+ var _excluded$7 = ["children", "className", "items", "loading", "loadingText", "placeholder", "style", "listStyle", "clearable", "label", "isFilled", "disableLabelAnimation"];
243
244
  var BaseDropdown = function BaseDropdown(_ref) {
244
245
  var children = _ref.children,
245
246
  className = _ref.className,
@@ -255,7 +256,7 @@ var BaseDropdown = function BaseDropdown(_ref) {
255
256
  _ref$isFilled = _ref.isFilled,
256
257
  isFilled = _ref$isFilled === void 0 ? false : _ref$isFilled,
257
258
  disableLabelAnimation = _ref.disableLabelAnimation,
258
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
259
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
259
260
 
260
261
  var _useDownshift = useDownshift(),
261
262
  getLabelProps = _useDownshift.getLabelProps;
@@ -264,7 +265,7 @@ var BaseDropdown = function BaseDropdown(_ref) {
264
265
  className: "eds-dropdown-wrapper",
265
266
  style: style
266
267
  }, React__default["default"].createElement(form.BaseFormControl, _extends({
267
- append: React__default["default"].createElement(Appendix$1, {
268
+ append: React__default["default"].createElement(Appendix$2, {
268
269
  clearable: clearable,
269
270
  loading: loading,
270
271
  loadingText: loadingText,
@@ -275,7 +276,7 @@ var BaseDropdown = function BaseDropdown(_ref) {
275
276
  isFilled: isFilled,
276
277
  labelProps: getLabelProps(),
277
278
  disableLabelAnimation: disableLabelAnimation
278
- }, rest), children), React__default["default"].createElement(DropdownList, _extends({
279
+ }, rest), children), React__default["default"].createElement(DropdownList$1, _extends({
279
280
  items: items,
280
281
  style: _extends({
281
282
  position: 'absolute',
@@ -303,7 +304,7 @@ var ClearButton$1 = function ClearButton(_ref2) {
303
304
  }));
304
305
  };
305
306
 
306
- var Appendix$1 = function Appendix(_ref3) {
307
+ var Appendix$2 = function Appendix(_ref3) {
307
308
  var clearable = _ref3.clearable,
308
309
  loading = _ref3.loading,
309
310
  loadingText = _ref3.loadingText,
@@ -320,7 +321,7 @@ var Appendix$1 = function Appendix(_ref3) {
320
321
  return clearable ? React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(ClearButton$1, null), " ", React__default["default"].createElement(DropdownToggleButton$1, null)) : React__default["default"].createElement(DropdownToggleButton$1, null);
321
322
  };
322
323
 
323
- var _excluded$4 = ["disabled", "placeholder", "selectOnTab", "openOnFocus", "listStyle", "items", "label", "disableLabelAnimation", "loading", "loadingText", "className", "clearable"];
324
+ var _excluded$6 = ["disabled", "placeholder", "selectOnTab", "openOnFocus", "listStyle", "items", "label", "disableLabelAnimation", "loading", "loadingText", "className", "clearable"];
324
325
  var RegularDropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
325
326
  var disabled = _ref.disabled,
326
327
  _ref$placeholder = _ref.placeholder,
@@ -337,7 +338,7 @@ var RegularDropdown = /*#__PURE__*/React__default["default"].forwardRef(function
337
338
  loadingText = _ref.loadingText,
338
339
  className = _ref.className,
339
340
  clearable = _ref.clearable,
340
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
341
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
341
342
 
342
343
  var _useDownshift = useDownshift(),
343
344
  getToggleButtonProps = _useDownshift.getToggleButtonProps,
@@ -402,7 +403,7 @@ var RegularDropdown = /*#__PURE__*/React__default["default"].forwardRef(function
402
403
  }), selectedItem ? selectedItem.label : placeholder));
403
404
  });
404
405
 
405
- var _excluded$3 = ["disabled", "className", "items", "loading", "loadingText", "readOnly", "prepend", "selectOnTab", "openOnFocus", "listStyle", "clearable", "itemFilter", "label", "disableLabelAnimation", "placeholder"];
406
+ var _excluded$5 = ["disabled", "className", "items", "loading", "loadingText", "readOnly", "prepend", "selectOnTab", "openOnFocus", "listStyle", "clearable", "itemFilter", "label", "disableLabelAnimation", "placeholder"];
406
407
 
407
408
  function LowerCaseFilterTest(item, input) {
408
409
  if (!input) {
@@ -437,7 +438,7 @@ var SearchableDropdown = /*#__PURE__*/React__default["default"].forwardRef(funct
437
438
  label = _ref.label,
438
439
  disableLabelAnimation = _ref.disableLabelAnimation,
439
440
  placeholder = _ref.placeholder,
440
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
441
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
441
442
 
442
443
  var _useDownshift = useDownshift(),
443
444
  getInputProps = _useDownshift.getInputProps,
@@ -1383,7 +1384,7 @@ debounceTimeout) {
1383
1384
  };
1384
1385
  };
1385
1386
 
1386
- var _excluded$2 = ["highlightFirstItemOnOpen", "debounceTimeout", "disabled", "feedback", "items", "label", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "searchable", "selectOnTab", "openOnFocus", "variant", "value", "clearable", "className", "style", "listStyle", "itemFilter", "disableLabelAnimation"];
1387
+ var _excluded$4 = ["highlightFirstItemOnOpen", "debounceTimeout", "disabled", "feedback", "items", "label", "loadingText", "onChange", "placeholder", "prepend", "readOnly", "searchable", "selectOnTab", "openOnFocus", "variant", "value", "clearable", "className", "style", "listStyle", "itemFilter", "disableLabelAnimation"];
1387
1388
  var Dropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
1388
1389
  var highlightFirstItemOnOpen = _ref.highlightFirstItemOnOpen,
1389
1390
  debounceTimeout = _ref.debounceTimeout,
@@ -1411,7 +1412,7 @@ var Dropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
1411
1412
  listStyle = _ref.listStyle,
1412
1413
  itemFilter = _ref.itemFilter,
1413
1414
  disableLabelAnimation = _ref.disableLabelAnimation,
1414
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1415
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
1415
1416
 
1416
1417
  var _useResolvedItems = useResolvedItems(items, debounceTimeout),
1417
1418
  normalizedItems = _useResolvedItems.items,
@@ -1460,7 +1461,7 @@ var Dropdown = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
1460
1461
  }, searchAbleProps))));
1461
1462
  });
1462
1463
 
1463
- var _excluded$1 = ["className", "disabled", "readOnly", "items", "loadingText", "prepend", "style", "label", "variant", "feedback", "disableLabelAnimation"];
1464
+ var _excluded$3 = ["className", "disabled", "readOnly", "items", "loadingText", "prepend", "style", "label", "variant", "feedback", "disableLabelAnimation"];
1464
1465
  var NativeDropdown = function NativeDropdown(_ref) {
1465
1466
  var className = _ref.className,
1466
1467
  _ref$disabled = _ref.disabled,
@@ -1475,7 +1476,7 @@ var NativeDropdown = function NativeDropdown(_ref) {
1475
1476
  variant = _ref.variant,
1476
1477
  feedback = _ref.feedback,
1477
1478
  disableLabelAnimation = _ref.disableLabelAnimation,
1478
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1479
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
1479
1480
 
1480
1481
  var _useResolvedItems = useResolvedItems(items),
1481
1482
  normalizedItems = _useResolvedItems.items,
@@ -1517,7 +1518,7 @@ var NativeDropdown = function NativeDropdown(_ref) {
1517
1518
  })));
1518
1519
  };
1519
1520
 
1520
- var _excluded = ["items", "itemsSelectedLabel", "label", "feedback", "variant", "disabled", "readOnly", "onChange", "className", "clearable", "loading", "loadingText", "openOnFocus", "style", "listStyle", "initialSelectedItems", "debounceTimeout"];
1521
+ var _excluded$2 = ["items", "itemsSelectedLabel", "label", "feedback", "variant", "disabled", "readOnly", "onChange", "className", "clearable", "loading", "loadingText", "openOnFocus", "style", "listStyle", "initialSelectedItems", "debounceTimeout"];
1521
1522
  var MultiSelectContext = /*#__PURE__*/React__default["default"].createContext(null);
1522
1523
 
1523
1524
  var useMultiSelectContext = function useMultiSelectContext() {
@@ -1579,7 +1580,7 @@ var MultiSelect = function MultiSelect(_ref) {
1579
1580
  _ref$initialSelectedI = _ref.initialSelectedItems,
1580
1581
  initialSelectedItems = _ref$initialSelectedI === void 0 ? [] : _ref$initialSelectedI,
1581
1582
  debounceTimeout = _ref.debounceTimeout,
1582
- rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1583
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
1583
1584
 
1584
1585
  var _useResolvedItems = useResolvedItems(input, debounceTimeout),
1585
1586
  items = _useResolvedItems.items;
@@ -1655,7 +1656,7 @@ var MultiSelect = function MultiSelect(_ref) {
1655
1656
  isFilled: selectedItems.length > 0 || isOpen,
1656
1657
  disabled: disabled,
1657
1658
  readOnly: readOnly,
1658
- append: React__default["default"].createElement(Appendix, {
1659
+ append: React__default["default"].createElement(Appendix$1, {
1659
1660
  hasSelected: clearable && selectedItems.length > 0,
1660
1661
  loading: loading,
1661
1662
  loadingText: loadingText,
@@ -1728,7 +1729,7 @@ var ClearButton = function ClearButton(_ref3) {
1728
1729
  }));
1729
1730
  };
1730
1731
 
1731
- var Appendix = function Appendix(_ref4) {
1732
+ var Appendix$1 = function Appendix(_ref4) {
1732
1733
  var loading = _ref4.loading,
1733
1734
  loadingText = _ref4.loadingText,
1734
1735
  readOnly = _ref4.readOnly,
@@ -1785,9 +1786,234 @@ function SelectedItemsLabel(items) {
1785
1786
  }).toString() : items.length + " elementer valgt";
1786
1787
  }
1787
1788
 
1789
+ var _excluded$1 = ["selectedItem", "isOpen", "getMenuProps", "getItemProps", "filteredItems", "highlightedIndex", "listStyle"];
1790
+ var DropdownList = function DropdownList(_ref) {
1791
+ var selectedItem = _ref.selectedItem,
1792
+ isOpen = _ref.isOpen,
1793
+ getMenuProps = _ref.getMenuProps,
1794
+ getItemProps = _ref.getItemProps,
1795
+ filteredItems = _ref.filteredItems,
1796
+ highlightedIndex = _ref.highlightedIndex,
1797
+ listStyle = _ref.listStyle,
1798
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
1799
+
1800
+ return React__default["default"].createElement("ul", _extends({
1801
+ className: classNames__default["default"]('eds-searchable-dropdown__list', {
1802
+ 'eds-searchable-dropdown__list--open': isOpen
1803
+ })
1804
+ }, getMenuProps(), {
1805
+ style: _extends({}, rest.style, listStyle)
1806
+ }), isOpen ? filteredItems.map(function (item, index) {
1807
+ return (// eslint-disable-next-line react/jsx-key
1808
+ React__default["default"].createElement("li", _extends({
1809
+ className: classNames__default["default"]('eds-searchable-dropdown__list__item', {
1810
+ 'eds-searchable-dropdown__list__item--highlighted': highlightedIndex === index,
1811
+ 'eds-searchable-dropdown__list__item--selected': (selectedItem == null ? void 0 : selectedItem.value) === item.value
1812
+ })
1813
+ }, getItemProps({
1814
+ key: "" + index + item.value,
1815
+ item: item,
1816
+ index: index
1817
+ })), React__default["default"].createElement("span", null, item.label), item.icons && React__default["default"].createElement("span", null, item.icons.map(function (Icon, index) {
1818
+ return React__default["default"].createElement(Icon, {
1819
+ key: index,
1820
+ inline: true,
1821
+ className: "eds-searchable-dropdown__list__item-icon"
1822
+ });
1823
+ })), (selectedItem == null ? void 0 : selectedItem.value) === item.value && React__default["default"].createElement(icons.CheckIcon, null))
1824
+ );
1825
+ }) : null);
1826
+ };
1827
+
1828
+ var _excluded = ["items", "selectedItem", "onChange", "label", "placeholder", "clearable", "openOnFocus", "readonly", "feedback", "variant", "className", "listStyle"];
1829
+
1830
+ function lowerCaseFilterTest(item, input) {
1831
+ if (!input) {
1832
+ return true;
1833
+ }
1834
+
1835
+ var sanitizeEscapeCharacters = input.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
1836
+ var inputRegex = new RegExp(sanitizeEscapeCharacters, 'i');
1837
+ return inputRegex.test(item.label);
1838
+ } // TODO Husk å @deprecate searchable-prop-en til Dropdown når denne komponenten skal ha official release
1839
+ // TODO Husk å generelt legge inn støtte for typeof value === string
1840
+
1841
+
1842
+ var SearchableDropdownBeta = function SearchableDropdownBeta(_ref) {
1843
+ var _selectedItem$label;
1844
+
1845
+ var items = _ref.items,
1846
+ value = _ref.selectedItem,
1847
+ onChange = _ref.onChange,
1848
+ label = _ref.label,
1849
+ placeholder = _ref.placeholder,
1850
+ _ref$clearable = _ref.clearable,
1851
+ clearable = _ref$clearable === void 0 ? false : _ref$clearable,
1852
+ _ref$openOnFocus = _ref.openOnFocus,
1853
+ openOnFocus = _ref$openOnFocus === void 0 ? false : _ref$openOnFocus,
1854
+ _ref$readonly = _ref.readonly,
1855
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
1856
+ feedback = _ref.feedback,
1857
+ _ref$variant = _ref.variant,
1858
+ variant = _ref$variant === void 0 ? 'info' : _ref$variant,
1859
+ className = _ref.className,
1860
+ listStyle = _ref.listStyle,
1861
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1862
+
1863
+ var _React$useState = React__default["default"].useState(items),
1864
+ filteredItems = _React$useState[0],
1865
+ setFilteredItems = _React$useState[1];
1866
+
1867
+ var _useState = React.useState(false),
1868
+ hideSelectedItem = _useState[0],
1869
+ setHideSelectedItem = _useState[1];
1870
+
1871
+ var inputRef = React.useRef(null);
1872
+ var stateReducer = React__default["default"].useCallback(function (_, actionAndChanges) {
1873
+ var type = actionAndChanges.type,
1874
+ changes = actionAndChanges.changes;
1875
+
1876
+ switch (type) {
1877
+ case Downshift.useCombobox.stateChangeTypes.ItemClick:
1878
+ case Downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
1879
+ case Downshift.useCombobox.stateChangeTypes.InputBlur:
1880
+ case Downshift.useCombobox.stateChangeTypes.ControlledPropUpdatedSelectedItem:
1881
+ return _extends({}, changes, changes.selectedItem && {
1882
+ inputValue: ''
1883
+ });
1884
+
1885
+ default:
1886
+ return changes;
1887
+ }
1888
+ }, []);
1889
+
1890
+ var _useCombobox = Downshift.useCombobox(_extends({
1891
+ onInputValueChange: function onInputValueChange(_ref2) {
1892
+ var inputValue = _ref2.inputValue;
1893
+ setFilteredItems(items.filter(function (item) {
1894
+ return lowerCaseFilterTest(item, inputValue);
1895
+ }));
1896
+ },
1897
+ items: filteredItems,
1898
+ itemToString: function itemToString(item) {
1899
+ if (item) return item.value;
1900
+ return '';
1901
+ },
1902
+ stateReducer: stateReducer,
1903
+ selectedItem: value,
1904
+ onSelectedItemChange: function onSelectedItemChange(_ref3) {
1905
+ var newSelectedItem = _ref3.selectedItem;
1906
+ return onChange(newSelectedItem != null ? newSelectedItem : null);
1907
+ }
1908
+ }, rest)),
1909
+ isOpen = _useCombobox.isOpen,
1910
+ getToggleButtonProps = _useCombobox.getToggleButtonProps,
1911
+ getLabelProps = _useCombobox.getLabelProps,
1912
+ getMenuProps = _useCombobox.getMenuProps,
1913
+ getInputProps = _useCombobox.getInputProps,
1914
+ getComboboxProps = _useCombobox.getComboboxProps,
1915
+ highlightedIndex = _useCombobox.highlightedIndex,
1916
+ getItemProps = _useCombobox.getItemProps,
1917
+ selectedItem = _useCombobox.selectedItem,
1918
+ openMenu = _useCombobox.openMenu,
1919
+ inputValue = _useCombobox.inputValue;
1920
+
1921
+ return React__default["default"].createElement("div", {
1922
+ className: "eds-searchable-dropdown__wrapper"
1923
+ }, React__default["default"].createElement(form.BaseFormControl, _extends({
1924
+ append: React__default["default"].createElement(Appendix, {
1925
+ selectedItem: selectedItem,
1926
+ isOpen: isOpen,
1927
+ clearable: clearable,
1928
+ loading: false,
1929
+ loadingText: '',
1930
+ readOnly: readonly,
1931
+ onChange: onChange,
1932
+ getToggleButtonProps: getToggleButtonProps
1933
+ }),
1934
+ className: classNames__default["default"]('eds-searchable-dropdown', className),
1935
+ label: label,
1936
+ isFilled: selectedItem ? true : false,
1937
+ feedback: feedback,
1938
+ variant: variant,
1939
+ readOnly: readonly,
1940
+ labelProps: getLabelProps()
1941
+ }, getComboboxProps(), rest), !hideSelectedItem && selectedItem && !inputValue && React__default["default"].createElement("span", {
1942
+ className: "eds-searchable-dropdown__selected-item__wrapper"
1943
+ }, React__default["default"].createElement("span", {
1944
+ className: "eds-searchable-dropdown__selected-item",
1945
+ onClick: function onClick() {
1946
+ var _inputRef$current;
1947
+
1948
+ return (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
1949
+ }
1950
+ }, selectedItem.label)), React__default["default"].createElement("input", _extends({
1951
+ placeholder: (_selectedItem$label = selectedItem == null ? void 0 : selectedItem.label) != null ? _selectedItem$label : placeholder,
1952
+ className: "eds-searchable-dropdown__input eds-form-control"
1953
+ }, getInputProps({
1954
+ onFocus: function onFocus() {
1955
+ if (!isOpen && openOnFocus) openMenu();
1956
+ setHideSelectedItem(true);
1957
+ },
1958
+ onBlur: function onBlur() {
1959
+ setHideSelectedItem(false);
1960
+ },
1961
+ ref: inputRef
1962
+ })))), React__default["default"].createElement(DropdownList, {
1963
+ selectedItem: selectedItem,
1964
+ isOpen: isOpen,
1965
+ filteredItems: filteredItems,
1966
+ highlightedIndex: highlightedIndex,
1967
+ listStyle: listStyle,
1968
+ getMenuProps: getMenuProps,
1969
+ getItemProps: getItemProps
1970
+ }));
1971
+ };
1972
+
1973
+ var Appendix = function Appendix(_ref4) {
1974
+ var clearable = _ref4.clearable,
1975
+ readOnly = _ref4.readOnly,
1976
+ getToggleButtonProps = _ref4.getToggleButtonProps,
1977
+ selectedItem = _ref4.selectedItem,
1978
+ isOpen = _ref4.isOpen,
1979
+ onChange = _ref4.onChange;
1980
+
1981
+ // TODO implement loading / async
1982
+ // if (loading) {
1983
+ // return <DropdownLoadingDots>{loadingText}</DropdownLoadingDots>;
1984
+ // }
1985
+ if (readOnly) {
1986
+ return null;
1987
+ }
1988
+
1989
+ return React__default["default"].createElement("div", {
1990
+ style: {
1991
+ display: 'flex',
1992
+ alignItems: 'center'
1993
+ }
1994
+ }, clearable && selectedItem && React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(button.IconButton, {
1995
+ className: "eds-searchable-dropdown-appendix__clear-button",
1996
+ type: "button",
1997
+ tabIndex: -1,
1998
+ onClick: function onClick() {
1999
+ return onChange(null);
2000
+ }
2001
+ }, React__default["default"].createElement(icons.CloseSmallIcon, null)), React__default["default"].createElement("div", {
2002
+ className: "eds-searchable-dropdown-appendix__divider"
2003
+ })), React__default["default"].createElement(button.IconButton, _extends({}, getToggleButtonProps({
2004
+ className: classNames__default["default"]('eds-searchable-dropdown-appendix__toggle-button', {
2005
+ 'eds-searchable-dropdown-appendix__toggle-button--open': isOpen
2006
+ })
2007
+ }), {
2008
+ tabIndex: -1,
2009
+ type: "button"
2010
+ }), React__default["default"].createElement(icons.DownArrowIcon, null)));
2011
+ };
2012
+
1788
2013
  utils.warnAboutMissingStyles('dropdown', 'form', 'a11y', 'chip');
1789
2014
 
1790
2015
  exports.Dropdown = Dropdown;
1791
2016
  exports.MultiSelect = MultiSelect;
1792
2017
  exports.NativeDropdown = NativeDropdown;
2018
+ exports.SearchableDropdownBeta = SearchableDropdownBeta;
1793
2019
  //# sourceMappingURL=dropdown.cjs.development.js.map