@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.
Files changed (229) hide show
  1. package/components/Button/views/b2c/ButtonB2C.d.ts +1 -1
  2. package/components/Button/views/web/ButtonWeb.d.ts +1 -1
  3. package/components/Card/CardBadge.d.ts +12 -1
  4. package/components/Card/CardBadge.d.ts.map +1 -1
  5. package/components/Card/CardBadge.js +19 -4
  6. package/components/PreviewGallery/PreviewGalleryItemBase.d.ts +1 -1
  7. package/components/PreviewGallery/PreviewGalleryItemBase.d.ts.map +1 -1
  8. package/components/PreviewGallery/PreviewGalleryItemBase.js +1 -2
  9. package/components/Upload/UploadMessage.d.ts.map +1 -1
  10. package/components/Upload/UploadMessage.js +2 -2
  11. package/es/components/Card/CardBadge.js +17 -3
  12. package/es/components/PreviewGallery/PreviewGalleryItemBase.js +1 -2
  13. package/es/components/Upload/UploadMessage.js +1 -1
  14. package/es/index.js +0 -10
  15. package/index.d.ts +0 -10
  16. package/index.js +0 -110
  17. package/package.json +11 -11
  18. package/components/Badge/Badge.d.ts +0 -21
  19. package/components/Badge/Badge.d.ts.map +0 -1
  20. package/components/Badge/Badge.js +0 -30
  21. package/components/Badge/index.d.ts +0 -5
  22. package/components/Badge/index.d.ts.map +0 -1
  23. package/components/Badge/index.js +0 -25
  24. package/components/Cell/Cell.d.ts +0 -18
  25. package/components/Cell/Cell.d.ts.map +0 -1
  26. package/components/Cell/Cell.js +0 -32
  27. package/components/Cell/index.d.ts +0 -3
  28. package/components/Cell/index.d.ts.map +0 -1
  29. package/components/Cell/index.js +0 -12
  30. package/components/Dropdown/Dropdown.component-test.js +0 -547
  31. package/components/Dropdown/Dropdown.d.ts +0 -20
  32. package/components/Dropdown/Dropdown.d.ts.map +0 -1
  33. package/components/Dropdown/Dropdown.js +0 -64
  34. package/components/Dropdown/Dropdown.types.d.ts +0 -16
  35. package/components/Dropdown/Dropdown.types.d.ts.map +0 -1
  36. package/components/Dropdown/Dropdown.types.js +0 -7
  37. package/components/Dropdown/DropdownItem.d.ts +0 -30
  38. package/components/Dropdown/DropdownItem.d.ts.map +0 -1
  39. package/components/Dropdown/DropdownItem.js +0 -122
  40. package/components/Dropdown/DropdownList.d.ts +0 -22
  41. package/components/Dropdown/DropdownList.d.ts.map +0 -1
  42. package/components/Dropdown/DropdownList.js +0 -23
  43. package/components/Dropdown/DropdownMenu.d.ts +0 -30
  44. package/components/Dropdown/DropdownMenu.d.ts.map +0 -1
  45. package/components/Dropdown/DropdownMenu.js +0 -60
  46. package/components/Dropdown/DropdownPopup.d.ts +0 -18
  47. package/components/Dropdown/DropdownPopup.d.ts.map +0 -1
  48. package/components/Dropdown/DropdownPopup.js +0 -47
  49. package/components/Dropdown/DropdownUncontrolled.d.ts +0 -12
  50. package/components/Dropdown/DropdownUncontrolled.d.ts.map +0 -1
  51. package/components/Dropdown/DropdownUncontrolled.js +0 -69
  52. package/components/Dropdown/index.d.ts +0 -13
  53. package/components/Dropdown/index.d.ts.map +0 -1
  54. package/components/Dropdown/index.js +0 -53
  55. package/components/Dropdown/keyboardNavigation/index.d.ts +0 -2
  56. package/components/Dropdown/keyboardNavigation/index.d.ts.map +0 -1
  57. package/components/Dropdown/keyboardNavigation/index.js +0 -18
  58. package/components/Dropdown/keyboardNavigation/useKeyboardNavigation.d.ts +0 -20
  59. package/components/Dropdown/keyboardNavigation/useKeyboardNavigation.d.ts.map +0 -1
  60. package/components/Dropdown/keyboardNavigation/useKeyboardNavigation.js +0 -58
  61. package/components/Dropdown/keyboardNavigation/useOnComboType.d.ts +0 -6
  62. package/components/Dropdown/keyboardNavigation/useOnComboType.d.ts.map +0 -1
  63. package/components/Dropdown/keyboardNavigation/useOnComboType.js +0 -30
  64. package/components/Dropdown/keyboardNavigation/useSearchString.d.ts +0 -5
  65. package/components/Dropdown/keyboardNavigation/useSearchString.d.ts.map +0 -1
  66. package/components/Dropdown/keyboardNavigation/useSearchString.js +0 -46
  67. package/components/Dropdown/keyboardNavigation/utils.d.ts +0 -39
  68. package/components/Dropdown/keyboardNavigation/utils.d.ts.map +0 -1
  69. package/components/Dropdown/keyboardNavigation/utils.js +0 -175
  70. package/components/Dropdown/withAssistiveDropdown.d.ts +0 -27
  71. package/components/Dropdown/withAssistiveDropdown.d.ts.map +0 -1
  72. package/components/Dropdown/withAssistiveDropdown.js +0 -134
  73. package/components/Editable/Editable.component-test.js +0 -114
  74. package/components/Editable/Editable.d.ts +0 -36
  75. package/components/Editable/Editable.d.ts.map +0 -1
  76. package/components/Editable/Editable.js +0 -154
  77. package/components/Editable/index.d.ts +0 -2
  78. package/components/Editable/index.d.ts.map +0 -1
  79. package/components/Editable/index.js +0 -16
  80. package/components/List/List.d.ts +0 -3
  81. package/components/List/List.d.ts.map +0 -1
  82. package/components/List/List.js +0 -14
  83. package/components/List/ListItem.d.ts +0 -3
  84. package/components/List/ListItem.d.ts.map +0 -1
  85. package/components/List/ListItem.js +0 -14
  86. package/components/List/index.d.ts +0 -3
  87. package/components/List/index.d.ts.map +0 -1
  88. package/components/List/index.js +0 -19
  89. package/components/Price/Price.d.ts +0 -8
  90. package/components/Price/Price.d.ts.map +0 -1
  91. package/components/Price/Price.js +0 -17
  92. package/components/Price/index.d.ts +0 -3
  93. package/components/Price/index.d.ts.map +0 -1
  94. package/components/Price/index.js +0 -12
  95. package/components/Select/Select.d.ts +0 -35
  96. package/components/Select/Select.d.ts.map +0 -1
  97. package/components/Select/Select.js +0 -38
  98. package/components/Select/Select.utils.d.ts +0 -18
  99. package/components/Select/Select.utils.d.ts.map +0 -1
  100. package/components/Select/Select.utils.js +0 -50
  101. package/components/Select/SelectButton.d.ts +0 -20
  102. package/components/Select/SelectButton.d.ts.map +0 -1
  103. package/components/Select/SelectButton.js +0 -75
  104. package/components/Select/SelectDropdown.d.ts +0 -6
  105. package/components/Select/SelectDropdown.d.ts.map +0 -1
  106. package/components/Select/SelectDropdown.js +0 -16
  107. package/components/Select/SelectGroup.d.ts +0 -2
  108. package/components/Select/SelectGroup.d.ts.map +0 -1
  109. package/components/Select/SelectGroup.js +0 -13
  110. package/components/Select/SelectView.d.ts +0 -18
  111. package/components/Select/SelectView.d.ts.map +0 -1
  112. package/components/Select/SelectView.js +0 -29
  113. package/components/Select/index.d.ts +0 -5
  114. package/components/Select/index.d.ts.map +0 -1
  115. package/components/Select/index.js +0 -19
  116. package/components/Select/types.d.ts +0 -4
  117. package/components/Select/types.d.ts.map +0 -1
  118. package/components/Select/types.js +0 -5
  119. package/components/Select/views/b2c/SelectButton.d.ts +0 -4
  120. package/components/Select/views/b2c/SelectButton.d.ts.map +0 -1
  121. package/components/Select/views/b2c/SelectButton.js +0 -18
  122. package/components/Select/views/b2c/SelectDropdown.d.ts +0 -2
  123. package/components/Select/views/b2c/SelectDropdown.d.ts.map +0 -1
  124. package/components/Select/views/b2c/SelectDropdown.js +0 -11
  125. package/components/Select/views/b2c/SelectView.d.ts +0 -7
  126. package/components/Select/views/b2c/SelectView.d.ts.map +0 -1
  127. package/components/Select/views/b2c/SelectView.js +0 -76
  128. package/components/Select/views/web/SelectView.d.ts +0 -7
  129. package/components/Select/views/web/SelectView.d.ts.map +0 -1
  130. package/components/Select/views/web/SelectView.js +0 -73
  131. package/components/Select/withMultiSelect.d.ts +0 -24
  132. package/components/Select/withMultiSelect.d.ts.map +0 -1
  133. package/components/Select/withMultiSelect.js +0 -54
  134. package/components/Select/withSingleSelect.d.ts +0 -20
  135. package/components/Select/withSingleSelect.d.ts.map +0 -1
  136. package/components/Select/withSingleSelect.js +0 -47
  137. package/components/Slider/Slider.d.ts +0 -4
  138. package/components/Slider/Slider.d.ts.map +0 -1
  139. package/components/Slider/Slider.js +0 -14
  140. package/components/Slider/index.d.ts +0 -2
  141. package/components/Slider/index.d.ts.map +0 -1
  142. package/components/Slider/index.js +0 -12
  143. package/components/Switch/Switch.d.ts +0 -6
  144. package/components/Switch/Switch.d.ts.map +0 -1
  145. package/components/Switch/Switch.js +0 -17
  146. package/components/Switch/index.d.ts +0 -3
  147. package/components/Switch/index.d.ts.map +0 -1
  148. package/components/Switch/index.js +0 -12
  149. package/components/Typography/Body/index.d.ts +0 -2
  150. package/components/Typography/Body/index.d.ts.map +0 -1
  151. package/components/Typography/Body/index.js +0 -18
  152. package/components/Typography/Button/index.d.ts +0 -2
  153. package/components/Typography/Button/index.d.ts.map +0 -1
  154. package/components/Typography/Button/index.js +0 -18
  155. package/components/Typography/Caption/index.d.ts +0 -2
  156. package/components/Typography/Caption/index.d.ts.map +0 -1
  157. package/components/Typography/Caption/index.js +0 -12
  158. package/components/Typography/Footnote/index.d.ts +0 -2
  159. package/components/Typography/Footnote/index.d.ts.map +0 -1
  160. package/components/Typography/Footnote/index.js +0 -18
  161. package/components/Typography/Headline/index.d.ts +0 -4
  162. package/components/Typography/Headline/index.d.ts.map +0 -1
  163. package/components/Typography/Headline/index.js +0 -52
  164. package/components/Typography/Paragraph/index.d.ts +0 -2
  165. package/components/Typography/Paragraph/index.d.ts.map +0 -1
  166. package/components/Typography/Paragraph/index.js +0 -36
  167. package/components/Typography/Subtitle/index.d.ts +0 -2
  168. package/components/Typography/Subtitle/index.d.ts.map +0 -1
  169. package/components/Typography/Subtitle/index.js +0 -21
  170. package/components/Typography/Underline/index.d.ts +0 -2
  171. package/components/Typography/Underline/index.d.ts.map +0 -1
  172. package/components/Typography/Underline/index.js +0 -12
  173. package/components/Typography/index.d.ts +0 -11
  174. package/components/Typography/index.d.ts.map +0 -1
  175. package/components/Typography/index.js +0 -223
  176. package/es/components/Badge/Badge.js +0 -22
  177. package/es/components/Badge/index.js +0 -2
  178. package/es/components/Cell/Cell.js +0 -25
  179. package/es/components/Cell/index.js +0 -1
  180. package/es/components/Dropdown/Dropdown.component-test.js +0 -544
  181. package/es/components/Dropdown/Dropdown.js +0 -55
  182. package/es/components/Dropdown/Dropdown.types.js +0 -3
  183. package/es/components/Dropdown/DropdownItem.js +0 -114
  184. package/es/components/Dropdown/DropdownList.js +0 -15
  185. package/es/components/Dropdown/DropdownMenu.js +0 -53
  186. package/es/components/Dropdown/DropdownPopup.js +0 -39
  187. package/es/components/Dropdown/DropdownUncontrolled.js +0 -61
  188. package/es/components/Dropdown/index.js +0 -6
  189. package/es/components/Dropdown/keyboardNavigation/index.js +0 -1
  190. package/es/components/Dropdown/keyboardNavigation/useKeyboardNavigation.js +0 -52
  191. package/es/components/Dropdown/keyboardNavigation/useOnComboType.js +0 -24
  192. package/es/components/Dropdown/keyboardNavigation/useSearchString.js +0 -40
  193. package/es/components/Dropdown/keyboardNavigation/utils.js +0 -170
  194. package/es/components/Dropdown/withAssistiveDropdown.js +0 -126
  195. package/es/components/Editable/Editable.component-test.js +0 -111
  196. package/es/components/Editable/Editable.js +0 -145
  197. package/es/components/Editable/index.js +0 -1
  198. package/es/components/List/List.js +0 -7
  199. package/es/components/List/ListItem.js +0 -7
  200. package/es/components/List/index.js +0 -2
  201. package/es/components/Price/Price.js +0 -10
  202. package/es/components/Price/index.js +0 -1
  203. package/es/components/Select/Select.js +0 -29
  204. package/es/components/Select/Select.utils.js +0 -44
  205. package/es/components/Select/SelectButton.js +0 -67
  206. package/es/components/Select/SelectDropdown.js +0 -9
  207. package/es/components/Select/SelectGroup.js +0 -6
  208. package/es/components/Select/SelectView.js +0 -21
  209. package/es/components/Select/index.js +0 -2
  210. package/es/components/Select/types.js +0 -1
  211. package/es/components/Select/views/b2c/SelectButton.js +0 -12
  212. package/es/components/Select/views/b2c/SelectDropdown.js +0 -5
  213. package/es/components/Select/views/b2c/SelectView.js +0 -67
  214. package/es/components/Select/views/web/SelectView.js +0 -64
  215. package/es/components/Select/withMultiSelect.js +0 -46
  216. package/es/components/Select/withSingleSelect.js +0 -39
  217. package/es/components/Slider/Slider.js +0 -7
  218. package/es/components/Slider/index.js +0 -1
  219. package/es/components/Switch/Switch.js +0 -10
  220. package/es/components/Switch/index.js +0 -1
  221. package/es/components/Typography/Body/index.js +0 -1
  222. package/es/components/Typography/Button/index.js +0 -1
  223. package/es/components/Typography/Caption/index.js +0 -1
  224. package/es/components/Typography/Footnote/index.js +0 -1
  225. package/es/components/Typography/Headline/index.js +0 -20
  226. package/es/components/Typography/Paragraph/index.js +0 -1
  227. package/es/components/Typography/Subtitle/index.js +0 -14
  228. package/es/components/Typography/Underline/index.js +0 -1
  229. 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
- };