@entur/dropdown 3.0.15 → 3.0.17
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 +16 -0
- package/dist/Dropdown.d.ts +2 -2
- package/dist/beta/DropdownList.d.ts +17 -0
- package/dist/beta/SearchableDropdown.d.ts +42 -0
- package/dist/beta/index.d.ts +1 -0
- package/dist/dropdown.cjs.development.js +250 -24
- package/dist/dropdown.cjs.development.js.map +1 -1
- package/dist/dropdown.cjs.production.min.js +1 -1
- package/dist/dropdown.cjs.production.min.js.map +1 -1
- package/dist/dropdown.esm.js +251 -26
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/styles.css +147 -13
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
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
|
+
## [3.0.17](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@3.0.16...@entur/dropdown@3.0.17) (2022-10-05)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **dropdown:** make label required ([68cdd12](https://bitbucket.org/enturas/design-system/commits/68cdd12ebb41998868acb18abb2a1faa47157449))
|
|
11
|
+
|
|
12
|
+
# [3.0.16](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 beta:** add new beta component for controlled searchable dropdown ([f6357e3](https://bitbucket.org/enturas/design-system/commits/f6357e37826af7d25dbb4bdbe49a7fae1f632a50))
|
|
17
|
+
|
|
18
|
+
## [3.0.15](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@3.0.14...@entur/dropdown@3.0.15) (2022-09-20)
|
|
19
|
+
|
|
20
|
+
**Note:** Version bump only for package @entur/dropdown
|
|
21
|
+
|
|
6
22
|
## [3.0.14](https://bitbucket.org/enturas/design-system/compare/@entur/dropdown@3.0.13...@entur/dropdown@3.0.14) (2022-08-31)
|
|
7
23
|
|
|
8
24
|
**Note:** Version bump only for package @entur/dropdown
|
package/dist/Dropdown.d.ts
CHANGED
|
@@ -3,14 +3,14 @@ import { VariantType } from '@entur/form';
|
|
|
3
3
|
import { NormalizedDropdownItemType } from './useNormalizedItems';
|
|
4
4
|
import { PotentiallyAsyncDropdownItemType } from './useResolvedItems';
|
|
5
5
|
export declare type DropdownProps = {
|
|
6
|
+
/** Beskrivende tekst som forklarer feltet */
|
|
7
|
+
label: string;
|
|
6
8
|
/** Tilgjengelige valg i dropdownen */
|
|
7
9
|
items: PotentiallyAsyncDropdownItemType;
|
|
8
10
|
/** Valgt verdi. Bruk null for ingen verdi. */
|
|
9
11
|
value?: string | null;
|
|
10
12
|
/** Om man skal kunne søke i dropdownen eller ikke */
|
|
11
13
|
searchable?: boolean;
|
|
12
|
-
/** Beskrivende tekst som forklarer feltet */
|
|
13
|
-
label?: string;
|
|
14
14
|
/** Tooltip for labelen */
|
|
15
15
|
labelTooltip?: string;
|
|
16
16
|
/** Hvilken valideringsvariant som gjelder */
|
|
@@ -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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|