@entur/dropdown 2.3.0 → 3.0.2
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 +22 -0
- package/dist/dropdown.cjs.development.js +79 -11
- 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 +80 -12
- package/dist/dropdown.esm.js.map +1 -1
- package/dist/styles.css +100 -66
- package/package.json +6 -6
package/dist/dropdown.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { debounce, useRandomId, warnAboutMissingStyles } from '@entur/utils';
|
|
2
|
-
import React, { useState } from 'react';
|
|
2
|
+
import React, { useState, useRef } from 'react';
|
|
3
3
|
import Downshift, { useSelect } from 'downshift';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import { BaseFormControl, VariantProvider, FeedbackText } from '@entur/form';
|
|
@@ -77,6 +77,44 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
77
77
|
return target;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
81
|
+
if (!o) return;
|
|
82
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
83
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
84
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
85
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
86
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function _arrayLikeToArray(arr, len) {
|
|
90
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
91
|
+
|
|
92
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
93
|
+
|
|
94
|
+
return arr2;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
98
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
99
|
+
if (it) return (it = it.call(o)).next.bind(it);
|
|
100
|
+
|
|
101
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
102
|
+
if (it) o = it;
|
|
103
|
+
var i = 0;
|
|
104
|
+
return function () {
|
|
105
|
+
if (i >= o.length) return {
|
|
106
|
+
done: true
|
|
107
|
+
};
|
|
108
|
+
return {
|
|
109
|
+
done: false,
|
|
110
|
+
value: o[i++]
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
116
|
+
}
|
|
117
|
+
|
|
80
118
|
var _excluded$8 = ["children", "onChange", "onInputValueChange", "highlightFirstItemOnOpen", "className", "style", "searchable"];
|
|
81
119
|
var DownshiftContext = /*#__PURE__*/React.createContext(null);
|
|
82
120
|
var DownshiftProvider = function DownshiftProvider(_ref) {
|
|
@@ -435,8 +473,14 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
435
473
|
selectHighlightedItem = _useDownshift.selectHighlightedItem,
|
|
436
474
|
isOpen = _useDownshift.isOpen,
|
|
437
475
|
openMenu = _useDownshift.openMenu,
|
|
476
|
+
closeMenu = _useDownshift.closeMenu,
|
|
438
477
|
selectedItem = _useDownshift.selectedItem;
|
|
439
478
|
|
|
479
|
+
var _useState = useState(false),
|
|
480
|
+
hideSelectedItem = _useState[0],
|
|
481
|
+
setHideSelectedItem = _useState[1];
|
|
482
|
+
|
|
483
|
+
var inputRef = useRef(null);
|
|
440
484
|
var filteredItems = React.useMemo(function () {
|
|
441
485
|
return items.filter(function (item) {
|
|
442
486
|
return itemFilter(item, inputValue);
|
|
@@ -455,28 +499,52 @@ var SearchableDropdown = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
455
499
|
label: label,
|
|
456
500
|
isFilled: selectedItem ? true : false,
|
|
457
501
|
disableLabelAnimation: disableLabelAnimation
|
|
458
|
-
}, selectedItem && !inputValue && React.createElement("span", {
|
|
459
|
-
className: "eds-dropdown__searchable-selected-
|
|
460
|
-
},
|
|
502
|
+
}, !hideSelectedItem && selectedItem && !inputValue && React.createElement("span", {
|
|
503
|
+
className: "eds-dropdown__searchable-selected-item__wrapper"
|
|
504
|
+
}, React.createElement("span", {
|
|
505
|
+
className: "eds-dropdown__searchable-selected-item",
|
|
506
|
+
onClick: function onClick() {
|
|
507
|
+
var _inputRef$current;
|
|
508
|
+
|
|
509
|
+
return (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
|
|
510
|
+
}
|
|
511
|
+
}, selectedItem.label)), React.createElement("input", _extends({}, getInputProps(_extends({
|
|
461
512
|
disabled: disabled,
|
|
462
513
|
readOnly: readOnly,
|
|
463
514
|
className: 'eds-form-control eds-dropdown__input',
|
|
464
515
|
onKeyDown: function onKeyDown(e) {
|
|
465
|
-
if (selectOnTab && e.key === 'Tab')
|
|
466
|
-
selectHighlightedItem();
|
|
467
|
-
}
|
|
516
|
+
if (selectOnTab && e.key === 'Tab') selectHighlightedItem();
|
|
468
517
|
},
|
|
469
518
|
onFocus: function onFocus() {
|
|
470
|
-
if (openOnFocus)
|
|
471
|
-
|
|
472
|
-
}
|
|
519
|
+
if (!isOpen && openOnFocus) openMenu();
|
|
520
|
+
setHideSelectedItem(true);
|
|
473
521
|
},
|
|
474
|
-
placeholder: selectedItem ?
|
|
522
|
+
placeholder: selectedItem ? selectedItem.label : placeholder
|
|
475
523
|
}, rest)), {
|
|
476
|
-
|
|
524
|
+
onBlur: function onBlur() {
|
|
525
|
+
setHideSelectedItem(false);
|
|
526
|
+
closeMenu();
|
|
527
|
+
},
|
|
528
|
+
ref: mergeRefs(ref, inputRef)
|
|
477
529
|
})));
|
|
478
530
|
});
|
|
479
531
|
|
|
532
|
+
var mergeRefs = function mergeRefs() {
|
|
533
|
+
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
534
|
+
refs[_key] = arguments[_key];
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
return function (node) {
|
|
538
|
+
for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {
|
|
539
|
+
var ref = _step.value;
|
|
540
|
+
|
|
541
|
+
if (typeof ref === 'function') {
|
|
542
|
+
ref(node);
|
|
543
|
+
} else if (ref) ref.current = node;
|
|
544
|
+
}
|
|
545
|
+
};
|
|
546
|
+
};
|
|
547
|
+
|
|
480
548
|
var DropdownInputGroup = function DropdownInputGroup(_ref) {
|
|
481
549
|
var children = _ref.children,
|
|
482
550
|
feedback = _ref.feedback,
|