@salutejs/plasma-hope 1.387.0 → 1.387.1-dev.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/components/Button/views/b2c/ButtonB2C.d.ts +1 -1
- package/components/Button/views/web/ButtonWeb.d.ts +1 -1
- package/components/Card/CardBadge.d.ts +12 -1
- package/components/Card/CardBadge.d.ts.map +1 -1
- package/components/Card/CardBadge.js +19 -4
- package/components/PreviewGallery/PreviewGalleryItemBase.d.ts +1 -1
- package/components/PreviewGallery/PreviewGalleryItemBase.d.ts.map +1 -1
- package/components/PreviewGallery/PreviewGalleryItemBase.js +1 -2
- package/components/Upload/UploadMessage.d.ts.map +1 -1
- package/components/Upload/UploadMessage.js +2 -2
- package/es/components/Card/CardBadge.js +17 -3
- package/es/components/PreviewGallery/PreviewGalleryItemBase.js +1 -2
- package/es/components/Upload/UploadMessage.js +1 -1
- package/es/index.js +0 -10
- package/index.d.ts +0 -10
- package/index.js +0 -110
- package/package.json +11 -11
- package/components/Badge/Badge.d.ts +0 -21
- package/components/Badge/Badge.d.ts.map +0 -1
- package/components/Badge/Badge.js +0 -30
- package/components/Badge/index.d.ts +0 -5
- package/components/Badge/index.d.ts.map +0 -1
- package/components/Badge/index.js +0 -25
- package/components/Cell/Cell.d.ts +0 -18
- package/components/Cell/Cell.d.ts.map +0 -1
- package/components/Cell/Cell.js +0 -32
- package/components/Cell/index.d.ts +0 -3
- package/components/Cell/index.d.ts.map +0 -1
- package/components/Cell/index.js +0 -12
- package/components/Dropdown/Dropdown.component-test.js +0 -547
- package/components/Dropdown/Dropdown.d.ts +0 -20
- package/components/Dropdown/Dropdown.d.ts.map +0 -1
- package/components/Dropdown/Dropdown.js +0 -64
- package/components/Dropdown/Dropdown.types.d.ts +0 -16
- package/components/Dropdown/Dropdown.types.d.ts.map +0 -1
- package/components/Dropdown/Dropdown.types.js +0 -7
- package/components/Dropdown/DropdownItem.d.ts +0 -30
- package/components/Dropdown/DropdownItem.d.ts.map +0 -1
- package/components/Dropdown/DropdownItem.js +0 -122
- package/components/Dropdown/DropdownList.d.ts +0 -22
- package/components/Dropdown/DropdownList.d.ts.map +0 -1
- package/components/Dropdown/DropdownList.js +0 -23
- package/components/Dropdown/DropdownMenu.d.ts +0 -30
- package/components/Dropdown/DropdownMenu.d.ts.map +0 -1
- package/components/Dropdown/DropdownMenu.js +0 -60
- package/components/Dropdown/DropdownPopup.d.ts +0 -18
- package/components/Dropdown/DropdownPopup.d.ts.map +0 -1
- package/components/Dropdown/DropdownPopup.js +0 -47
- package/components/Dropdown/DropdownUncontrolled.d.ts +0 -12
- package/components/Dropdown/DropdownUncontrolled.d.ts.map +0 -1
- package/components/Dropdown/DropdownUncontrolled.js +0 -69
- package/components/Dropdown/index.d.ts +0 -13
- package/components/Dropdown/index.d.ts.map +0 -1
- package/components/Dropdown/index.js +0 -53
- package/components/Dropdown/keyboardNavigation/index.d.ts +0 -2
- package/components/Dropdown/keyboardNavigation/index.d.ts.map +0 -1
- package/components/Dropdown/keyboardNavigation/index.js +0 -18
- package/components/Dropdown/keyboardNavigation/useKeyboardNavigation.d.ts +0 -20
- package/components/Dropdown/keyboardNavigation/useKeyboardNavigation.d.ts.map +0 -1
- package/components/Dropdown/keyboardNavigation/useKeyboardNavigation.js +0 -58
- package/components/Dropdown/keyboardNavigation/useOnComboType.d.ts +0 -6
- package/components/Dropdown/keyboardNavigation/useOnComboType.d.ts.map +0 -1
- package/components/Dropdown/keyboardNavigation/useOnComboType.js +0 -30
- package/components/Dropdown/keyboardNavigation/useSearchString.d.ts +0 -5
- package/components/Dropdown/keyboardNavigation/useSearchString.d.ts.map +0 -1
- package/components/Dropdown/keyboardNavigation/useSearchString.js +0 -46
- package/components/Dropdown/keyboardNavigation/utils.d.ts +0 -39
- package/components/Dropdown/keyboardNavigation/utils.d.ts.map +0 -1
- package/components/Dropdown/keyboardNavigation/utils.js +0 -175
- package/components/Dropdown/withAssistiveDropdown.d.ts +0 -27
- package/components/Dropdown/withAssistiveDropdown.d.ts.map +0 -1
- package/components/Dropdown/withAssistiveDropdown.js +0 -134
- package/components/Editable/Editable.component-test.js +0 -114
- package/components/Editable/Editable.d.ts +0 -36
- package/components/Editable/Editable.d.ts.map +0 -1
- package/components/Editable/Editable.js +0 -154
- package/components/Editable/index.d.ts +0 -2
- package/components/Editable/index.d.ts.map +0 -1
- package/components/Editable/index.js +0 -16
- package/components/List/List.d.ts +0 -3
- package/components/List/List.d.ts.map +0 -1
- package/components/List/List.js +0 -14
- package/components/List/ListItem.d.ts +0 -3
- package/components/List/ListItem.d.ts.map +0 -1
- package/components/List/ListItem.js +0 -14
- package/components/List/index.d.ts +0 -3
- package/components/List/index.d.ts.map +0 -1
- package/components/List/index.js +0 -19
- package/components/Price/Price.d.ts +0 -8
- package/components/Price/Price.d.ts.map +0 -1
- package/components/Price/Price.js +0 -17
- package/components/Price/index.d.ts +0 -3
- package/components/Price/index.d.ts.map +0 -1
- package/components/Price/index.js +0 -12
- package/components/Select/Select.d.ts +0 -35
- package/components/Select/Select.d.ts.map +0 -1
- package/components/Select/Select.js +0 -38
- package/components/Select/Select.utils.d.ts +0 -18
- package/components/Select/Select.utils.d.ts.map +0 -1
- package/components/Select/Select.utils.js +0 -50
- package/components/Select/SelectButton.d.ts +0 -20
- package/components/Select/SelectButton.d.ts.map +0 -1
- package/components/Select/SelectButton.js +0 -75
- package/components/Select/SelectDropdown.d.ts +0 -6
- package/components/Select/SelectDropdown.d.ts.map +0 -1
- package/components/Select/SelectDropdown.js +0 -16
- package/components/Select/SelectGroup.d.ts +0 -2
- package/components/Select/SelectGroup.d.ts.map +0 -1
- package/components/Select/SelectGroup.js +0 -13
- package/components/Select/SelectView.d.ts +0 -18
- package/components/Select/SelectView.d.ts.map +0 -1
- package/components/Select/SelectView.js +0 -29
- package/components/Select/index.d.ts +0 -5
- package/components/Select/index.d.ts.map +0 -1
- package/components/Select/index.js +0 -19
- package/components/Select/types.d.ts +0 -4
- package/components/Select/types.d.ts.map +0 -1
- package/components/Select/types.js +0 -5
- package/components/Select/views/b2c/SelectButton.d.ts +0 -4
- package/components/Select/views/b2c/SelectButton.d.ts.map +0 -1
- package/components/Select/views/b2c/SelectButton.js +0 -18
- package/components/Select/views/b2c/SelectDropdown.d.ts +0 -2
- package/components/Select/views/b2c/SelectDropdown.d.ts.map +0 -1
- package/components/Select/views/b2c/SelectDropdown.js +0 -11
- package/components/Select/views/b2c/SelectView.d.ts +0 -7
- package/components/Select/views/b2c/SelectView.d.ts.map +0 -1
- package/components/Select/views/b2c/SelectView.js +0 -76
- package/components/Select/views/web/SelectView.d.ts +0 -7
- package/components/Select/views/web/SelectView.d.ts.map +0 -1
- package/components/Select/views/web/SelectView.js +0 -73
- package/components/Select/withMultiSelect.d.ts +0 -24
- package/components/Select/withMultiSelect.d.ts.map +0 -1
- package/components/Select/withMultiSelect.js +0 -54
- package/components/Select/withSingleSelect.d.ts +0 -20
- package/components/Select/withSingleSelect.d.ts.map +0 -1
- package/components/Select/withSingleSelect.js +0 -47
- package/components/Slider/Slider.d.ts +0 -4
- package/components/Slider/Slider.d.ts.map +0 -1
- package/components/Slider/Slider.js +0 -14
- package/components/Slider/index.d.ts +0 -2
- package/components/Slider/index.d.ts.map +0 -1
- package/components/Slider/index.js +0 -12
- package/components/Switch/Switch.d.ts +0 -6
- package/components/Switch/Switch.d.ts.map +0 -1
- package/components/Switch/Switch.js +0 -17
- package/components/Switch/index.d.ts +0 -3
- package/components/Switch/index.d.ts.map +0 -1
- package/components/Switch/index.js +0 -12
- package/components/Typography/Body/index.d.ts +0 -2
- package/components/Typography/Body/index.d.ts.map +0 -1
- package/components/Typography/Body/index.js +0 -18
- package/components/Typography/Button/index.d.ts +0 -2
- package/components/Typography/Button/index.d.ts.map +0 -1
- package/components/Typography/Button/index.js +0 -18
- package/components/Typography/Caption/index.d.ts +0 -2
- package/components/Typography/Caption/index.d.ts.map +0 -1
- package/components/Typography/Caption/index.js +0 -12
- package/components/Typography/Footnote/index.d.ts +0 -2
- package/components/Typography/Footnote/index.d.ts.map +0 -1
- package/components/Typography/Footnote/index.js +0 -18
- package/components/Typography/Headline/index.d.ts +0 -4
- package/components/Typography/Headline/index.d.ts.map +0 -1
- package/components/Typography/Headline/index.js +0 -52
- package/components/Typography/Paragraph/index.d.ts +0 -2
- package/components/Typography/Paragraph/index.d.ts.map +0 -1
- package/components/Typography/Paragraph/index.js +0 -36
- package/components/Typography/Subtitle/index.d.ts +0 -2
- package/components/Typography/Subtitle/index.d.ts.map +0 -1
- package/components/Typography/Subtitle/index.js +0 -21
- package/components/Typography/Underline/index.d.ts +0 -2
- package/components/Typography/Underline/index.d.ts.map +0 -1
- package/components/Typography/Underline/index.js +0 -12
- package/components/Typography/index.d.ts +0 -11
- package/components/Typography/index.d.ts.map +0 -1
- package/components/Typography/index.js +0 -223
- package/es/components/Badge/Badge.js +0 -22
- package/es/components/Badge/index.js +0 -2
- package/es/components/Cell/Cell.js +0 -25
- package/es/components/Cell/index.js +0 -1
- package/es/components/Dropdown/Dropdown.component-test.js +0 -544
- package/es/components/Dropdown/Dropdown.js +0 -55
- package/es/components/Dropdown/Dropdown.types.js +0 -3
- package/es/components/Dropdown/DropdownItem.js +0 -114
- package/es/components/Dropdown/DropdownList.js +0 -15
- package/es/components/Dropdown/DropdownMenu.js +0 -53
- package/es/components/Dropdown/DropdownPopup.js +0 -39
- package/es/components/Dropdown/DropdownUncontrolled.js +0 -61
- package/es/components/Dropdown/index.js +0 -6
- package/es/components/Dropdown/keyboardNavigation/index.js +0 -1
- package/es/components/Dropdown/keyboardNavigation/useKeyboardNavigation.js +0 -52
- package/es/components/Dropdown/keyboardNavigation/useOnComboType.js +0 -24
- package/es/components/Dropdown/keyboardNavigation/useSearchString.js +0 -40
- package/es/components/Dropdown/keyboardNavigation/utils.js +0 -170
- package/es/components/Dropdown/withAssistiveDropdown.js +0 -126
- package/es/components/Editable/Editable.component-test.js +0 -111
- package/es/components/Editable/Editable.js +0 -145
- package/es/components/Editable/index.js +0 -1
- package/es/components/List/List.js +0 -7
- package/es/components/List/ListItem.js +0 -7
- package/es/components/List/index.js +0 -2
- package/es/components/Price/Price.js +0 -10
- package/es/components/Price/index.js +0 -1
- package/es/components/Select/Select.js +0 -29
- package/es/components/Select/Select.utils.js +0 -44
- package/es/components/Select/SelectButton.js +0 -67
- package/es/components/Select/SelectDropdown.js +0 -9
- package/es/components/Select/SelectGroup.js +0 -6
- package/es/components/Select/SelectView.js +0 -21
- package/es/components/Select/index.js +0 -2
- package/es/components/Select/types.js +0 -1
- package/es/components/Select/views/b2c/SelectButton.js +0 -12
- package/es/components/Select/views/b2c/SelectDropdown.js +0 -5
- package/es/components/Select/views/b2c/SelectView.js +0 -67
- package/es/components/Select/views/web/SelectView.js +0 -64
- package/es/components/Select/withMultiSelect.js +0 -46
- package/es/components/Select/withSingleSelect.js +0 -39
- package/es/components/Slider/Slider.js +0 -7
- package/es/components/Slider/index.js +0 -1
- package/es/components/Switch/Switch.js +0 -10
- package/es/components/Switch/index.js +0 -1
- package/es/components/Typography/Body/index.js +0 -1
- package/es/components/Typography/Button/index.js +0 -1
- package/es/components/Typography/Caption/index.js +0 -1
- package/es/components/Typography/Footnote/index.js +0 -1
- package/es/components/Typography/Headline/index.js +0 -20
- package/es/components/Typography/Paragraph/index.js +0 -1
- package/es/components/Typography/Subtitle/index.js +0 -14
- package/es/components/Typography/Underline/index.js +0 -1
- package/es/components/Typography/index.js +0 -9
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
var _StyledDot, _StyledChevron, _StyledCheck;
|
|
2
|
-
var _excluded = ["value", "label", "isActive", "isDisabled", "isHovered", "color", "contentLeft", "items", "role", "index", "onClick", "onHover", "onFocus"];
|
|
3
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
4
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
5
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
6
|
-
import React, { useRef, useCallback, useMemo, forwardRef } from 'react';
|
|
7
|
-
import styled, { css } from 'styled-components';
|
|
8
|
-
import { body1, applyDisabled, applyEllipsis, useForkRef } from '@salutejs/plasma-core';
|
|
9
|
-
import { IconChevronRight, IconDone } from '@salutejs/plasma-icons';
|
|
10
|
-
import { collectPackageInfo } from '../../collectPackageInfo';
|
|
11
|
-
collectPackageInfo('Dropdown/DropdownItem');
|
|
12
|
-
var StyledDropdownItem = /*#__PURE__*/styled.li.withConfig({
|
|
13
|
-
componentId: "plasma-web-core__sc-sdbmry-0"
|
|
14
|
-
})(["display:flex;flex:1;align-items:center;justify-content:flex-start;box-sizing:border-box;text-decoration:none;height:var(--plasma-dropdown-item-height,3rem);padding:var(--plasma-dropdown-item-padding,1rem);border-radius:var(--plasma-dropdown-item-border-radius,0);font-family:var(--plasma-dropdown-item-font-family,", ");font-size:var(--plasma-dropdown-item-font-size,", ");font-weight:var(--plasma-dropdown-item-font-weight,", ");line-height:var(--plasma-dropdown-item-line-height,", ");letter-spacing:var(--plasma-dropdown-item-letter-spacing,", ");background-color:transparent;color:", ";transition:background-color 0.3s ease-in-out;cursor:pointer;", " &:focus{outline:0 none;}", " &:active{background-color:var(--surface-transparent-tertiary);}", ""], body1.fontFamily, body1.fontSize, body1.fontWeight, body1.lineHeight, body1.letterSpacing, function (_ref) {
|
|
15
|
-
var $color = _ref.$color;
|
|
16
|
-
return $color || 'var(--text-primary)';
|
|
17
|
-
}, function (_ref2) {
|
|
18
|
-
var $withAssistive = _ref2.$withAssistive,
|
|
19
|
-
$color = _ref2.$color;
|
|
20
|
-
return !$withAssistive && css(["&:hover,&:focus{color:", ";background-color:var(--surface-transparent-secondary);}"], $color || 'var(--text-primary)');
|
|
21
|
-
}, function (_ref3) {
|
|
22
|
-
var $hover = _ref3.$hover,
|
|
23
|
-
$color = _ref3.$color;
|
|
24
|
-
return $hover && css(["color:", ";background-color:var(--surface-transparent-secondary);"], $color || 'var(--text-primary)');
|
|
25
|
-
}, applyDisabled);
|
|
26
|
-
var StyledContent = /*#__PURE__*/styled.div.withConfig({
|
|
27
|
-
componentId: "plasma-web-core__sc-sdbmry-1"
|
|
28
|
-
})(["display:inline-flex;margin-right:0.375rem;"]);
|
|
29
|
-
var StyledText = /*#__PURE__*/styled.span.withConfig({
|
|
30
|
-
componentId: "plasma-web-core__sc-sdbmry-2"
|
|
31
|
-
})(["", ";margin-right:0.625rem;pointer-events:none;user-select:none;"], applyEllipsis);
|
|
32
|
-
var StyledChevron = /*#__PURE__*/styled(IconChevronRight).withConfig({
|
|
33
|
-
componentId: "plasma-web-core__sc-sdbmry-3"
|
|
34
|
-
})(["margin-left:auto;pointer-events:none;margin-right:-0.25rem;"]);
|
|
35
|
-
var StyledCheck = /*#__PURE__*/styled(IconDone).withConfig({
|
|
36
|
-
componentId: "plasma-web-core__sc-sdbmry-4"
|
|
37
|
-
})(["margin-left:auto;pointer-events:none;margin-right:-0.5rem;"]);
|
|
38
|
-
var StyledDot = /*#__PURE__*/styled.div.withConfig({
|
|
39
|
-
componentId: "plasma-web-core__sc-sdbmry-5"
|
|
40
|
-
})(["width:0.375rem;height:0.375rem;background-color:var(--text-accent);border-radius:50%;"]);
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Элемент выпадающего списка.
|
|
44
|
-
*/
|
|
45
|
-
export var DropdownItem = /*#__PURE__*/forwardRef(function (props, outerRef) {
|
|
46
|
-
var _items$filter;
|
|
47
|
-
var value = props.value,
|
|
48
|
-
label = props.label,
|
|
49
|
-
isActive = props.isActive,
|
|
50
|
-
isDisabled = props.isDisabled,
|
|
51
|
-
isHovered = props.isHovered,
|
|
52
|
-
color = props.color,
|
|
53
|
-
contentLeft = props.contentLeft,
|
|
54
|
-
_props$items = props.items,
|
|
55
|
-
items = _props$items === void 0 ? [] : _props$items,
|
|
56
|
-
_props$role = props.role,
|
|
57
|
-
role = _props$role === void 0 ? 'menuitem' : _props$role,
|
|
58
|
-
index = props.index,
|
|
59
|
-
onClickExternal = props.onClick,
|
|
60
|
-
onHover = props.onHover,
|
|
61
|
-
onFocus = props.onFocus,
|
|
62
|
-
rest = _objectWithoutProperties(props, _excluded);
|
|
63
|
-
var ref = useRef(null);
|
|
64
|
-
var forkRef = useForkRef(outerRef, ref);
|
|
65
|
-
var hasItems = Boolean(items.length);
|
|
66
|
-
var isActiveAsSingleOrNode = Boolean(isActive || ((_items$filter = items.filter(function (item) {
|
|
67
|
-
return item.isActive;
|
|
68
|
-
})) === null || _items$filter === void 0 ? void 0 : _items$filter.length));
|
|
69
|
-
var contentRight = useMemo(function () {
|
|
70
|
-
if (hasItems) {
|
|
71
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, isActiveAsSingleOrNode && (_StyledDot || (_StyledDot = /*#__PURE__*/React.createElement(StyledDot, null))), _StyledChevron || (_StyledChevron = /*#__PURE__*/React.createElement(StyledChevron, {
|
|
72
|
-
size: "xs"
|
|
73
|
-
})));
|
|
74
|
-
}
|
|
75
|
-
if (isActive) {
|
|
76
|
-
return _StyledCheck || (_StyledCheck = /*#__PURE__*/React.createElement(StyledCheck, {
|
|
77
|
-
size: "s",
|
|
78
|
-
color: "var(--text-accent)"
|
|
79
|
-
}));
|
|
80
|
-
}
|
|
81
|
-
return null;
|
|
82
|
-
}, [isActive, isActiveAsSingleOrNode, hasItems]);
|
|
83
|
-
var onClick = useCallback(function (event) {
|
|
84
|
-
var _ref$current;
|
|
85
|
-
event.preventDefault();
|
|
86
|
-
var targetIsItem = event.target === ref.current;
|
|
87
|
-
var targetInItem = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.contains(event.target);
|
|
88
|
-
if (value !== undefined && !isDisabled && (targetIsItem || targetInItem)) {
|
|
89
|
-
onClickExternal === null || onClickExternal === void 0 || onClickExternal({
|
|
90
|
-
value: value,
|
|
91
|
-
label: label
|
|
92
|
-
}, event);
|
|
93
|
-
}
|
|
94
|
-
}, [value, label, isDisabled, onClickExternal]);
|
|
95
|
-
var onMouseOver = useCallback(function () {
|
|
96
|
-
onHover === null || onHover === void 0 || onHover(index);
|
|
97
|
-
}, [value, label, isDisabled, onClickExternal]);
|
|
98
|
-
return /*#__PURE__*/React.createElement(StyledDropdownItem, _extends({}, rest, {
|
|
99
|
-
ref: forkRef,
|
|
100
|
-
$withAssistive: Boolean(onHover),
|
|
101
|
-
$hover: isHovered,
|
|
102
|
-
$disabled: isDisabled,
|
|
103
|
-
$color: color,
|
|
104
|
-
role: role,
|
|
105
|
-
"aria-label": label,
|
|
106
|
-
"aria-disabled": isDisabled,
|
|
107
|
-
"aria-selected": role === 'option' ? isActiveAsSingleOrNode : undefined,
|
|
108
|
-
onClick: onClick,
|
|
109
|
-
onMouseOver: onMouseOver,
|
|
110
|
-
onFocus: onFocus
|
|
111
|
-
}), contentLeft && /*#__PURE__*/React.createElement(StyledContent, null, contentLeft), label && /*#__PURE__*/React.createElement(StyledText, {
|
|
112
|
-
role: "presentation"
|
|
113
|
-
}, label), contentRight);
|
|
114
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import styled, { css } from 'styled-components';
|
|
2
|
-
/**
|
|
3
|
-
* Выпадающий список.
|
|
4
|
-
*/
|
|
5
|
-
import { collectPackageInfo } from '../../collectPackageInfo';
|
|
6
|
-
collectPackageInfo('Dropdown/DropdownList');
|
|
7
|
-
export var DropdownList = /*#__PURE__*/styled.ul.withConfig({
|
|
8
|
-
componentId: "plasma-web-core__sc-ghowbu-0"
|
|
9
|
-
})(["margin:0;padding:var(--plasma-dropdown-padding,0);width:100%;height:var(--plasma-dropdown-height,initial);border-radius:var(--plasma-dropdown-border-radius,0);background-color:var(--plasma-dropdown-background,var(--surface-solid-card));box-shadow:0 0.75rem 1.75rem rgba(0,0,0,0.08);transition:opacity 0.3s ease-in-out;list-style:none;box-sizing:border-box;overflow-y:var(--plasma-dropdown-overflow,initial);"]);
|
|
10
|
-
export var applyDropdownListCssProperties = function applyDropdownListCssProperties(_ref) {
|
|
11
|
-
var listHeight = _ref.listHeight,
|
|
12
|
-
listOverflow = _ref.listOverflow;
|
|
13
|
-
var computedHeight = !Number.isNaN(Number(listHeight)) ? "".concat(listHeight, "rem") : listHeight;
|
|
14
|
-
return css(["--plasma-dropdown-height:", ";--plasma-dropdown-overflow:", ";"], computedHeight, listOverflow);
|
|
15
|
-
};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
var _excluded = ["id", "items", "hoverIndex", "itemRole", "onItemSelect", "onHover", "role"];
|
|
2
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
4
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
5
|
-
import React from 'react';
|
|
6
|
-
import { DropdownSelfControlledPopup } from './DropdownPopup';
|
|
7
|
-
import { DropdownList } from './DropdownList';
|
|
8
|
-
import { DropdownItem } from './DropdownItem';
|
|
9
|
-
/**
|
|
10
|
-
* Меню dropdown, выводящее текущий список и все вложенные в него списки в popup.
|
|
11
|
-
*/
|
|
12
|
-
export var DropdownMenu = function DropdownMenu(_ref) {
|
|
13
|
-
var id = _ref.id,
|
|
14
|
-
items = _ref.items,
|
|
15
|
-
hoverIndex = _ref.hoverIndex,
|
|
16
|
-
itemRole = _ref.itemRole,
|
|
17
|
-
onItemSelect = _ref.onItemSelect,
|
|
18
|
-
onHover = _ref.onHover,
|
|
19
|
-
_ref$role = _ref.role,
|
|
20
|
-
role = _ref$role === void 0 ? 'menu' : _ref$role,
|
|
21
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
22
|
-
return /*#__PURE__*/React.createElement(DropdownList, _extends({}, rest, {
|
|
23
|
-
id: id,
|
|
24
|
-
role: role
|
|
25
|
-
}), items.map(function (item, i) {
|
|
26
|
-
return item.items && item.items.length ? /*#__PURE__*/React.createElement(DropdownSelfControlledPopup, {
|
|
27
|
-
role: "presentation",
|
|
28
|
-
key: item.value,
|
|
29
|
-
id: id ? "".concat(id, "-nested-").concat(i) : id,
|
|
30
|
-
trigger: "hover",
|
|
31
|
-
placement: "right",
|
|
32
|
-
disclosure: /*#__PURE__*/React.createElement(DropdownItem, _extends({}, item, {
|
|
33
|
-
id: id ? "".concat(id, "-item-").concat(i) : id,
|
|
34
|
-
role: itemRole,
|
|
35
|
-
isHovered: i === hoverIndex,
|
|
36
|
-
index: i,
|
|
37
|
-
onClick: onItemSelect,
|
|
38
|
-
onHover: onHover
|
|
39
|
-
}))
|
|
40
|
-
}, /*#__PURE__*/React.createElement(DropdownMenu, {
|
|
41
|
-
items: item.items,
|
|
42
|
-
onItemSelect: onItemSelect
|
|
43
|
-
})) : /*#__PURE__*/React.createElement(DropdownItem, _extends({}, item, {
|
|
44
|
-
key: item.value,
|
|
45
|
-
id: id ? "".concat(id, "-item-").concat(i) : id,
|
|
46
|
-
role: itemRole,
|
|
47
|
-
isHovered: i === hoverIndex,
|
|
48
|
-
index: i,
|
|
49
|
-
onClick: onItemSelect,
|
|
50
|
-
onHover: onHover
|
|
51
|
-
}));
|
|
52
|
-
}));
|
|
53
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
-
function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); }
|
|
8
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
9
|
-
import React, { useState } from 'react';
|
|
10
|
-
import styled, { css } from 'styled-components';
|
|
11
|
-
import { Popup } from '../Popup';
|
|
12
|
-
import { collectPackageInfo } from '../../collectPackageInfo';
|
|
13
|
-
collectPackageInfo('Dropdown/DropdownPopup');
|
|
14
|
-
/**
|
|
15
|
-
* Popup с внешним контролем над видимостью через props: `opened` и `onToggle`.
|
|
16
|
-
*/
|
|
17
|
-
export var DropdownPopup = /*#__PURE__*/styled(Popup).withConfig({
|
|
18
|
-
componentId: "plasma-web-core__sc-psgcp9-0"
|
|
19
|
-
})(["& &{width:100%;--plasma-popup-width:var(--plasma-popup-nested-width);--plasma-popup-padding:var(--plasma-popup-nested-padding);--plasma-popup-margin:var(--plasma-popup-nested-margin);}", ""], function (_ref) {
|
|
20
|
-
var offsetTop = _ref.offsetTop;
|
|
21
|
-
return offsetTop !== undefined && css(["--plasma-popup-padding:", " 0 0;"], offsetTop);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Popup, не требующий внешнего контроля над видимостью.
|
|
26
|
-
*/
|
|
27
|
-
export var DropdownSelfControlledPopup = function DropdownSelfControlledPopup(_ref2) {
|
|
28
|
-
var rest = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
|
|
29
|
-
var _useState = useState(false),
|
|
30
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
31
|
-
isOpen = _useState2[0],
|
|
32
|
-
setIsOpen = _useState2[1];
|
|
33
|
-
return /*#__PURE__*/React.createElement(DropdownPopup, _extends({}, rest, {
|
|
34
|
-
opened: isOpen,
|
|
35
|
-
onToggle: function onToggle(is) {
|
|
36
|
-
return setIsOpen(is);
|
|
37
|
-
}
|
|
38
|
-
}));
|
|
39
|
-
};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
var _excluded = ["id", "isOpen", "opened", "items", "children", "offsetTop", "disabled", "style", "className", "hoverIndex", "placement", "trigger", "onBlur", "onKeyDown", "onToggle", "onItemSelect", "onHover"];
|
|
2
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
3
|
-
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
4
|
-
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
5
|
-
import React, { useCallback } from 'react';
|
|
6
|
-
import { DropdownMenu } from './DropdownMenu';
|
|
7
|
-
import { DropdownPopup } from './DropdownPopup';
|
|
8
|
-
import { collectPackageInfo } from '../../collectPackageInfo';
|
|
9
|
-
collectPackageInfo('Dropdown/DropdownUncontrolled');
|
|
10
|
-
/**
|
|
11
|
-
* Выпадающий список с внешнего контроля видимости через props: `opened` и `onToggle`.
|
|
12
|
-
*/
|
|
13
|
-
export var DropdownUncontrolled = function DropdownUncontrolled(_ref) {
|
|
14
|
-
var id = _ref.id,
|
|
15
|
-
isOpen = _ref.isOpen,
|
|
16
|
-
opened = _ref.opened,
|
|
17
|
-
items = _ref.items,
|
|
18
|
-
children = _ref.children,
|
|
19
|
-
offsetTop = _ref.offsetTop,
|
|
20
|
-
disabled = _ref.disabled,
|
|
21
|
-
style = _ref.style,
|
|
22
|
-
className = _ref.className,
|
|
23
|
-
hoverIndex = _ref.hoverIndex,
|
|
24
|
-
_ref$placement = _ref.placement,
|
|
25
|
-
placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,
|
|
26
|
-
_ref$trigger = _ref.trigger,
|
|
27
|
-
trigger = _ref$trigger === void 0 ? 'click' : _ref$trigger,
|
|
28
|
-
onBlur = _ref.onBlur,
|
|
29
|
-
onKeyDown = _ref.onKeyDown,
|
|
30
|
-
onToggleExternal = _ref.onToggle,
|
|
31
|
-
onItemSelect = _ref.onItemSelect,
|
|
32
|
-
onHover = _ref.onHover,
|
|
33
|
-
rest = _objectWithoutProperties(_ref, _excluded);
|
|
34
|
-
var innerIsOpen = Boolean(isOpen || opened);
|
|
35
|
-
var hasItems = Array.isArray(items) && items.length > 0;
|
|
36
|
-
var onToggle = useCallback(function (newIsOpen, event) {
|
|
37
|
-
if (newIsOpen && hasItems && !disabled) {
|
|
38
|
-
onToggleExternal === null || onToggleExternal === void 0 || onToggleExternal(true, event);
|
|
39
|
-
} else {
|
|
40
|
-
onToggleExternal === null || onToggleExternal === void 0 || onToggleExternal(false, event);
|
|
41
|
-
}
|
|
42
|
-
}, [onToggleExternal, disabled, hasItems]);
|
|
43
|
-
return /*#__PURE__*/React.createElement(DropdownPopup, {
|
|
44
|
-
opened: innerIsOpen,
|
|
45
|
-
trigger: trigger,
|
|
46
|
-
placement: placement,
|
|
47
|
-
disclosure: children,
|
|
48
|
-
offsetTop: offsetTop,
|
|
49
|
-
style: style,
|
|
50
|
-
className: className,
|
|
51
|
-
onToggle: onToggle,
|
|
52
|
-
onKeyDown: onKeyDown,
|
|
53
|
-
onBlur: onBlur
|
|
54
|
-
}, /*#__PURE__*/React.createElement(DropdownMenu, _extends({}, rest, {
|
|
55
|
-
id: id,
|
|
56
|
-
items: items,
|
|
57
|
-
hoverIndex: hoverIndex,
|
|
58
|
-
onHover: onHover,
|
|
59
|
-
onItemSelect: onItemSelect
|
|
60
|
-
})));
|
|
61
|
-
};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { Dropdown } from './Dropdown';
|
|
2
|
-
export { DropdownList, applyDropdownListCssProperties } from './DropdownList';
|
|
3
|
-
export { DropdownItem } from './DropdownItem';
|
|
4
|
-
export { DropdownPopup } from './DropdownPopup';
|
|
5
|
-
export { withAssistiveDropdown } from './withAssistiveDropdown';
|
|
6
|
-
export { DropdownUncontrolled } from './DropdownUncontrolled';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { useKeyboardNavigation, INITIAL_INDEX } from './useKeyboardNavigation';
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
import { getActionFromKey, getUpdatedIndex, Actions } from './utils';
|
|
3
|
-
import { useOnComboType } from './useOnComboType';
|
|
4
|
-
export var INITIAL_INDEX = 0;
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Клавиатурная навигация для dropdown.
|
|
8
|
-
* Работает для каждого instance dropdown, (popup) отдельно.
|
|
9
|
-
*/
|
|
10
|
-
export var useKeyboardNavigation = function useKeyboardNavigation(_ref) {
|
|
11
|
-
var items = _ref.items,
|
|
12
|
-
isOpen = _ref.isOpen,
|
|
13
|
-
_ref$index = _ref.index,
|
|
14
|
-
index = _ref$index === void 0 ? INITIAL_INDEX : _ref$index,
|
|
15
|
-
onToggle = _ref.onToggle,
|
|
16
|
-
onItemSelect = _ref.onItemSelect,
|
|
17
|
-
onIndexChange = _ref.onIndexChange;
|
|
18
|
-
var getIndexByTyping = useOnComboType({
|
|
19
|
-
index: index,
|
|
20
|
-
items: items
|
|
21
|
-
});
|
|
22
|
-
var onKeyDown = useCallback(function (event) {
|
|
23
|
-
if (!items.length) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
var action = getActionFromKey(event, isOpen);
|
|
27
|
-
if (action === Actions.Last || action === Actions.First || action === Actions.Next || action === Actions.Previous || action === Actions.PageUp || action === Actions.PageDown) {
|
|
28
|
-
event.preventDefault();
|
|
29
|
-
onIndexChange === null || onIndexChange === void 0 || onIndexChange(getUpdatedIndex(action, index, items));
|
|
30
|
-
} else if (action === Actions.Select) {
|
|
31
|
-
event.stopPropagation();
|
|
32
|
-
event.preventDefault();
|
|
33
|
-
onItemSelect === null || onItemSelect === void 0 || onItemSelect(items[index], event);
|
|
34
|
-
} else if (action === Actions.Open) {
|
|
35
|
-
event.preventDefault();
|
|
36
|
-
onToggle === null || onToggle === void 0 || onToggle(true, event);
|
|
37
|
-
} else if (action === Actions.Close) {
|
|
38
|
-
event.preventDefault();
|
|
39
|
-
onToggle === null || onToggle === void 0 || onToggle(false, event);
|
|
40
|
-
} else if (action === Actions.Type) {
|
|
41
|
-
event.preventDefault();
|
|
42
|
-
var newIndex = getIndexByTyping(event.key);
|
|
43
|
-
if (newIndex !== undefined) {
|
|
44
|
-
onIndexChange === null || onIndexChange === void 0 || onIndexChange(newIndex);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}, [isOpen, index, items, onIndexChange, onToggle, getIndexByTyping]);
|
|
48
|
-
return {
|
|
49
|
-
onKeyDown: onKeyDown,
|
|
50
|
-
index: index
|
|
51
|
-
};
|
|
52
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
import { getIndexByLetter } from './utils';
|
|
3
|
-
import { useSearchString } from './useSearchString';
|
|
4
|
-
export var useOnComboType = function useOnComboType(_ref) {
|
|
5
|
-
var items = _ref.items,
|
|
6
|
-
index = _ref.index;
|
|
7
|
-
var _useSearchString = useSearchString(),
|
|
8
|
-
getSearchString = _useSearchString.getSearchString,
|
|
9
|
-
resetSearchString = _useSearchString.resetSearchString;
|
|
10
|
-
return useCallback(function (letter) {
|
|
11
|
-
// Находим индекс первого подходящего item
|
|
12
|
-
var updatedSearchString = getSearchString(letter);
|
|
13
|
-
var searchIndex = getIndexByLetter(items.map(function (item) {
|
|
14
|
-
return item.label;
|
|
15
|
-
}), updatedSearchString, index + 1);
|
|
16
|
-
|
|
17
|
-
// Если есть подходящая опция - переходим к ней
|
|
18
|
-
if (searchIndex >= 0) {
|
|
19
|
-
return searchIndex;
|
|
20
|
-
}
|
|
21
|
-
resetSearchString();
|
|
22
|
-
return undefined;
|
|
23
|
-
}, [items, index, getSearchString, resetSearchString]);
|
|
24
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
-
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
7
|
-
import { useCallback, useRef, useState } from 'react';
|
|
8
|
-
export var useSearchString = function useSearchString() {
|
|
9
|
-
var _useState = useState(''),
|
|
10
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
11
|
-
searchString = _useState2[0],
|
|
12
|
-
setSearchString = _useState2[1];
|
|
13
|
-
var searchTimeout = useRef(null);
|
|
14
|
-
var getSearchString = useCallback(function (_char) {
|
|
15
|
-
// Скидываем таймаут и начинаем новый
|
|
16
|
-
// Это позволяет делать поиск с несколькими буквами, как нативный select
|
|
17
|
-
if (searchTimeout.current) {
|
|
18
|
-
window.clearTimeout(searchTimeout.current);
|
|
19
|
-
}
|
|
20
|
-
searchTimeout.current = window.setTimeout(function () {
|
|
21
|
-
setSearchString('');
|
|
22
|
-
}, 500);
|
|
23
|
-
|
|
24
|
-
// Добавляем последнюю букву в поисковой строке
|
|
25
|
-
setSearchString(function (prev) {
|
|
26
|
-
return prev + _char;
|
|
27
|
-
});
|
|
28
|
-
return searchString + _char;
|
|
29
|
-
}, [searchString]);
|
|
30
|
-
var resetSearchString = useCallback(function () {
|
|
31
|
-
if (searchTimeout.current) {
|
|
32
|
-
window.clearTimeout(searchTimeout.current);
|
|
33
|
-
}
|
|
34
|
-
setSearchString('');
|
|
35
|
-
}, []);
|
|
36
|
-
return {
|
|
37
|
-
getSearchString: getSearchString,
|
|
38
|
-
resetSearchString: resetSearchString
|
|
39
|
-
};
|
|
40
|
-
};
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
2
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
5
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
6
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
7
|
-
export var Actions = /*#__PURE__*/function (Actions) {
|
|
8
|
-
Actions[Actions["Close"] = 0] = "Close";
|
|
9
|
-
Actions[Actions["CloseSelect"] = 1] = "CloseSelect";
|
|
10
|
-
Actions[Actions["First"] = 2] = "First";
|
|
11
|
-
Actions[Actions["Last"] = 3] = "Last";
|
|
12
|
-
Actions[Actions["Next"] = 4] = "Next";
|
|
13
|
-
Actions[Actions["Open"] = 5] = "Open";
|
|
14
|
-
Actions[Actions["PageDown"] = 6] = "PageDown";
|
|
15
|
-
Actions[Actions["PageUp"] = 7] = "PageUp";
|
|
16
|
-
Actions[Actions["Previous"] = 8] = "Previous";
|
|
17
|
-
Actions[Actions["Select"] = 9] = "Select";
|
|
18
|
-
Actions[Actions["Type"] = 10] = "Type";
|
|
19
|
-
Actions[Actions["OpenSub"] = 11] = "OpenSub";
|
|
20
|
-
Actions[Actions["CloseSub"] = 12] = "CloseSub";
|
|
21
|
-
return Actions;
|
|
22
|
-
}({});
|
|
23
|
-
export var Keys = /*#__PURE__*/function (Keys) {
|
|
24
|
-
Keys["Home"] = "Home";
|
|
25
|
-
Keys["ArrowUp"] = "ArrowUp";
|
|
26
|
-
Keys["ArrowDown"] = "ArrowDown";
|
|
27
|
-
Keys["ArrowLeft"] = "ArrowLeft";
|
|
28
|
-
Keys["ArrowRight"] = "ArrowRight";
|
|
29
|
-
Keys["Enter"] = "Enter";
|
|
30
|
-
Keys["Space"] = " ";
|
|
31
|
-
Keys["End"] = "End";
|
|
32
|
-
Keys["Backspace"] = "Backspace";
|
|
33
|
-
Keys["Clear"] = "Clear";
|
|
34
|
-
Keys["PageUp"] = "PageUp";
|
|
35
|
-
Keys["PageDown"] = "PageDown";
|
|
36
|
-
Keys["Escape"] = "Escape";
|
|
37
|
-
return Keys;
|
|
38
|
-
}({});
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Возвращает экшн в соответствии с нажатой клавишей.
|
|
42
|
-
*/
|
|
43
|
-
export var getActionFromKey = function getActionFromKey(event, isOpen) {
|
|
44
|
-
var altKey = event.altKey,
|
|
45
|
-
ctrlKey = event.ctrlKey,
|
|
46
|
-
metaKey = event.metaKey;
|
|
47
|
-
|
|
48
|
-
// Все кнопки, которые открывают селект
|
|
49
|
-
var key = event.key;
|
|
50
|
-
var openKeys = [Keys.ArrowUp, Keys.ArrowDown, Keys.Enter, Keys.Space];
|
|
51
|
-
|
|
52
|
-
// Обработка открытия когда селект закрыт
|
|
53
|
-
if (!isOpen && openKeys.includes(key)) {
|
|
54
|
-
return Actions.Open;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Кнопки Home и End должны перемещать всегда(открыт или закрыт)
|
|
58
|
-
if (key === Keys.Home) {
|
|
59
|
-
return Actions.First;
|
|
60
|
-
}
|
|
61
|
-
if (key === Keys.End) {
|
|
62
|
-
return Actions.Last;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Обработка ввода на клавиатуре при открытом и закрытом селекте
|
|
66
|
-
if (key === Keys.Backspace || key === Keys.Clear || key.length === 1 && key !== Keys.Space && !altKey && !ctrlKey && !metaKey) {
|
|
67
|
-
return Actions.Type;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Обработка когда селект открыт
|
|
71
|
-
if (isOpen) {
|
|
72
|
-
if (key === Keys.ArrowUp && altKey) {
|
|
73
|
-
return Actions.CloseSelect;
|
|
74
|
-
}
|
|
75
|
-
if (key === Keys.ArrowDown && !altKey) {
|
|
76
|
-
return Actions.Next;
|
|
77
|
-
}
|
|
78
|
-
if (key === Keys.ArrowUp) {
|
|
79
|
-
return Actions.Previous;
|
|
80
|
-
}
|
|
81
|
-
if (key === Keys.ArrowRight) {
|
|
82
|
-
return Actions.OpenSub;
|
|
83
|
-
}
|
|
84
|
-
if (key === Keys.ArrowLeft) {
|
|
85
|
-
return Actions.CloseSub;
|
|
86
|
-
}
|
|
87
|
-
if (key === Keys.PageUp) {
|
|
88
|
-
return Actions.PageUp;
|
|
89
|
-
}
|
|
90
|
-
if (key === Keys.PageDown) {
|
|
91
|
-
return Actions.PageDown;
|
|
92
|
-
}
|
|
93
|
-
if (key === Keys.Escape) {
|
|
94
|
-
return Actions.Close;
|
|
95
|
-
}
|
|
96
|
-
if (key === Keys.Enter || key === Keys.Space) {
|
|
97
|
-
return Actions.Select;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
};
|
|
102
|
-
export var getUpdatedIndex = function getUpdatedIndex(action, index, items) {
|
|
103
|
-
var pageSize = 10; // Используется для pageup/pagedown
|
|
104
|
-
var maxIndex = items.length - 1;
|
|
105
|
-
var newIndex;
|
|
106
|
-
switch (action) {
|
|
107
|
-
case Actions.First:
|
|
108
|
-
newIndex = 0;
|
|
109
|
-
break;
|
|
110
|
-
case Actions.Last:
|
|
111
|
-
newIndex = maxIndex;
|
|
112
|
-
break;
|
|
113
|
-
case Actions.Previous:
|
|
114
|
-
newIndex = index - 1 >= 0 ? index - 1 : maxIndex;
|
|
115
|
-
break;
|
|
116
|
-
case Actions.Next:
|
|
117
|
-
newIndex = index + 1 <= maxIndex ? index + 1 : 0;
|
|
118
|
-
break;
|
|
119
|
-
case Actions.PageUp:
|
|
120
|
-
newIndex = Math.max(0, index - pageSize);
|
|
121
|
-
break;
|
|
122
|
-
case Actions.PageDown:
|
|
123
|
-
newIndex = Math.min(maxIndex, index + pageSize);
|
|
124
|
-
break;
|
|
125
|
-
default:
|
|
126
|
-
newIndex = index;
|
|
127
|
-
}
|
|
128
|
-
return newIndex;
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
// Фильтрует массив по входной строке
|
|
132
|
-
// Возвращает массив параметров, которые начинаются со строки filter, независимо от регистра
|
|
133
|
-
export var filterOptions = function filterOptions() {
|
|
134
|
-
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
135
|
-
var filter = arguments.length > 1 ? arguments[1] : undefined;
|
|
136
|
-
var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
137
|
-
var lowerCaseFilter = filter.toLowerCase();
|
|
138
|
-
return options.filter(function (option) {
|
|
139
|
-
var matches = option.toLowerCase().indexOf(lowerCaseFilter) === 0;
|
|
140
|
-
return matches && exclude.indexOf(option) < 0;
|
|
141
|
-
});
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
// Возвращает индекс параметра из массива параметров на основе строки поиска
|
|
145
|
-
// Если filter - это несколько итераций одной и той же буквы (например, "aaa"), то ищем только по одной букве
|
|
146
|
-
export var getIndexByLetter = function getIndexByLetter(options, filter) {
|
|
147
|
-
var startIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
148
|
-
var orderedOptions = [].concat(_toConsumableArray(options.slice(startIndex)), _toConsumableArray(options.slice(0, startIndex)));
|
|
149
|
-
var firstMatch = filterOptions(orderedOptions, filter)[0];
|
|
150
|
-
var allSameLetter = function allSameLetter(array) {
|
|
151
|
-
return array.every(function (letter) {
|
|
152
|
-
return letter === array[0];
|
|
153
|
-
});
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
// Сначала проверяем, есть ли точное совпадение для введенной строки
|
|
157
|
-
if (firstMatch) {
|
|
158
|
-
return options.indexOf(firstMatch);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// Если повторяется одна и та же буква, то ищем только по одной букве
|
|
162
|
-
if (allSameLetter(filter.split(''))) {
|
|
163
|
-
var matches = filterOptions(orderedOptions, filter[0]);
|
|
164
|
-
return options.indexOf(matches[0]);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Если нет совпадений, возвращаем -1
|
|
168
|
-
|
|
169
|
-
return -1;
|
|
170
|
-
};
|