@dxc-technology/halstack-react 0.0.0-d3554d7 → 0.0.0-d3ac293

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 (267) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1336 -0
  4. package/HalstackContext.js +335 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +118 -126
  7. package/accordion/Accordion.stories.tsx +115 -27
  8. package/accordion/Accordion.test.js +26 -12
  9. package/accordion/types.d.ts +9 -4
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +17 -38
  12. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  13. package/accordion-group/AccordionGroup.test.js +31 -38
  14. package/accordion-group/types.d.ts +14 -3
  15. package/alert/Alert.js +7 -4
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +1 -1
  18. package/badge/Badge.d.ts +1 -1
  19. package/badge/Badge.js +5 -3
  20. package/badge/types.d.ts +1 -0
  21. package/bleed/Bleed.js +1 -34
  22. package/bleed/Bleed.stories.tsx +94 -95
  23. package/bleed/types.d.ts +25 -1
  24. package/box/Box.js +25 -37
  25. package/box/Box.stories.tsx +15 -0
  26. package/box/Box.test.js +1 -1
  27. package/box/types.d.ts +1 -0
  28. package/bulleted-list/BulletedList.d.ts +7 -0
  29. package/bulleted-list/BulletedList.js +123 -0
  30. package/bulleted-list/BulletedList.stories.tsx +200 -0
  31. package/bulleted-list/types.d.ts +11 -0
  32. package/button/Button.js +52 -69
  33. package/button/Button.stories.tsx +159 -8
  34. package/button/Button.test.js +1 -1
  35. package/button/types.d.ts +7 -7
  36. package/card/Card.js +25 -28
  37. package/card/Card.test.js +1 -1
  38. package/card/types.d.ts +1 -0
  39. package/checkbox/Checkbox.d.ts +2 -2
  40. package/checkbox/Checkbox.js +107 -110
  41. package/checkbox/Checkbox.stories.tsx +198 -130
  42. package/checkbox/Checkbox.test.js +101 -11
  43. package/checkbox/types.d.ts +13 -5
  44. package/chip/Chip.js +18 -24
  45. package/chip/Chip.stories.tsx +96 -9
  46. package/chip/Chip.test.js +3 -5
  47. package/chip/types.d.ts +1 -1
  48. package/common/utils.d.ts +1 -0
  49. package/common/utils.js +4 -4
  50. package/common/variables.d.ts +1625 -0
  51. package/common/variables.js +483 -352
  52. package/date-input/Calendar.d.ts +4 -0
  53. package/date-input/Calendar.js +258 -0
  54. package/date-input/DateInput.js +169 -258
  55. package/date-input/DateInput.stories.tsx +199 -33
  56. package/date-input/DateInput.test.js +521 -155
  57. package/date-input/DatePicker.d.ts +4 -0
  58. package/date-input/DatePicker.js +146 -0
  59. package/date-input/Icons.d.ts +6 -0
  60. package/date-input/Icons.js +75 -0
  61. package/date-input/YearPicker.d.ts +4 -0
  62. package/date-input/YearPicker.js +126 -0
  63. package/date-input/types.d.ts +67 -9
  64. package/dialog/Dialog.js +76 -93
  65. package/dialog/Dialog.stories.tsx +230 -123
  66. package/dialog/Dialog.test.js +334 -5
  67. package/dialog/types.d.ts +3 -2
  68. package/dropdown/Dropdown.d.ts +1 -1
  69. package/dropdown/Dropdown.js +246 -253
  70. package/dropdown/Dropdown.stories.tsx +245 -56
  71. package/dropdown/Dropdown.test.js +507 -110
  72. package/dropdown/DropdownMenu.d.ts +4 -0
  73. package/dropdown/DropdownMenu.js +70 -0
  74. package/dropdown/DropdownMenuItem.d.ts +4 -0
  75. package/dropdown/DropdownMenuItem.js +81 -0
  76. package/dropdown/types.d.ts +25 -5
  77. package/file-input/FileInput.d.ts +2 -2
  78. package/file-input/FileInput.js +181 -223
  79. package/file-input/FileInput.stories.tsx +122 -11
  80. package/file-input/FileInput.test.js +14 -14
  81. package/file-input/FileItem.d.ts +4 -14
  82. package/file-input/FileItem.js +44 -66
  83. package/file-input/types.d.ts +17 -0
  84. package/flex/Flex.d.ts +4 -0
  85. package/flex/Flex.js +69 -0
  86. package/flex/Flex.stories.tsx +103 -0
  87. package/flex/types.d.ts +32 -0
  88. package/footer/Footer.js +16 -89
  89. package/footer/Footer.stories.tsx +99 -1
  90. package/footer/Footer.test.js +14 -26
  91. package/footer/Icons.js +1 -1
  92. package/footer/types.d.ts +2 -1
  93. package/header/Header.js +108 -129
  94. package/header/Header.stories.tsx +189 -36
  95. package/header/Header.test.js +20 -4
  96. package/header/Icons.js +2 -2
  97. package/header/types.d.ts +3 -2
  98. package/heading/Heading.js +1 -1
  99. package/heading/Heading.test.js +1 -1
  100. package/inset/Inset.js +1 -34
  101. package/inset/Inset.stories.tsx +36 -36
  102. package/inset/types.d.ts +25 -1
  103. package/layout/ApplicationLayout.d.ts +16 -6
  104. package/layout/ApplicationLayout.js +72 -132
  105. package/layout/ApplicationLayout.stories.tsx +84 -93
  106. package/layout/Icons.d.ts +5 -0
  107. package/layout/Icons.js +13 -2
  108. package/layout/SidenavContext.d.ts +5 -0
  109. package/layout/SidenavContext.js +19 -0
  110. package/layout/types.d.ts +18 -33
  111. package/link/Link.d.ts +3 -2
  112. package/link/Link.js +59 -76
  113. package/link/Link.stories.tsx +155 -53
  114. package/link/Link.test.js +9 -19
  115. package/link/types.d.ts +7 -23
  116. package/main.d.ts +8 -10
  117. package/main.js +46 -56
  118. package/nav-tabs/NavTabs.d.ts +8 -0
  119. package/nav-tabs/NavTabs.js +125 -0
  120. package/nav-tabs/NavTabs.stories.tsx +260 -0
  121. package/nav-tabs/NavTabs.test.js +82 -0
  122. package/nav-tabs/Tab.d.ts +4 -0
  123. package/nav-tabs/Tab.js +150 -0
  124. package/nav-tabs/types.d.ts +53 -0
  125. package/number-input/NumberInput.js +11 -18
  126. package/number-input/NumberInput.stories.tsx +5 -5
  127. package/number-input/NumberInput.test.js +46 -12
  128. package/number-input/types.d.ts +17 -10
  129. package/package.json +20 -23
  130. package/paginator/Icons.d.ts +5 -0
  131. package/paginator/Icons.js +16 -28
  132. package/paginator/Paginator.js +19 -46
  133. package/paginator/Paginator.stories.tsx +24 -0
  134. package/paginator/Paginator.test.js +78 -39
  135. package/paragraph/Paragraph.d.ts +6 -0
  136. package/paragraph/Paragraph.js +38 -0
  137. package/paragraph/Paragraph.stories.tsx +44 -0
  138. package/password-input/PasswordInput.js +7 -4
  139. package/password-input/PasswordInput.test.js +17 -19
  140. package/password-input/types.d.ts +14 -11
  141. package/progress-bar/ProgressBar.d.ts +2 -2
  142. package/progress-bar/ProgressBar.js +61 -55
  143. package/progress-bar/ProgressBar.stories.jsx +47 -12
  144. package/progress-bar/ProgressBar.test.js +68 -23
  145. package/progress-bar/types.d.ts +3 -4
  146. package/quick-nav/QuickNav.d.ts +4 -0
  147. package/quick-nav/QuickNav.js +117 -0
  148. package/quick-nav/QuickNav.stories.tsx +356 -0
  149. package/quick-nav/types.d.ts +21 -0
  150. package/radio-group/Radio.d.ts +1 -1
  151. package/radio-group/Radio.js +43 -28
  152. package/radio-group/RadioGroup.js +32 -28
  153. package/radio-group/RadioGroup.stories.tsx +135 -17
  154. package/radio-group/RadioGroup.test.js +145 -117
  155. package/radio-group/types.d.ts +79 -2
  156. package/resultsetTable/Icons.d.ts +7 -0
  157. package/resultsetTable/Icons.js +51 -0
  158. package/resultsetTable/ResultsetTable.js +49 -108
  159. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  160. package/resultsetTable/ResultsetTable.test.js +61 -42
  161. package/resultsetTable/types.d.ts +2 -2
  162. package/select/Icons.d.ts +10 -0
  163. package/select/Icons.js +93 -0
  164. package/select/Listbox.d.ts +4 -0
  165. package/select/Listbox.js +169 -0
  166. package/select/Option.d.ts +4 -0
  167. package/select/Option.js +97 -0
  168. package/select/Select.js +179 -384
  169. package/select/Select.stories.tsx +531 -142
  170. package/select/Select.test.js +652 -324
  171. package/select/types.d.ts +53 -13
  172. package/sidenav/Sidenav.d.ts +6 -5
  173. package/sidenav/Sidenav.js +183 -53
  174. package/sidenav/Sidenav.stories.tsx +249 -149
  175. package/sidenav/Sidenav.test.js +25 -37
  176. package/sidenav/types.d.ts +50 -27
  177. package/slider/Slider.d.ts +2 -2
  178. package/slider/Slider.js +124 -98
  179. package/slider/Slider.stories.tsx +72 -9
  180. package/slider/Slider.test.js +143 -22
  181. package/slider/types.d.ts +10 -2
  182. package/spinner/Spinner.js +4 -4
  183. package/spinner/Spinner.stories.jsx +27 -1
  184. package/spinner/Spinner.test.js +1 -1
  185. package/switch/Switch.d.ts +2 -2
  186. package/switch/Switch.js +152 -69
  187. package/switch/Switch.stories.tsx +53 -42
  188. package/switch/Switch.test.js +156 -4
  189. package/switch/types.d.ts +12 -4
  190. package/table/Table.js +3 -3
  191. package/table/Table.stories.jsx +80 -1
  192. package/table/Table.test.js +2 -2
  193. package/tabs/Tab.d.ts +4 -0
  194. package/tabs/Tab.js +133 -0
  195. package/tabs/Tabs.d.ts +1 -1
  196. package/tabs/Tabs.js +363 -109
  197. package/tabs/Tabs.stories.tsx +119 -13
  198. package/tabs/Tabs.test.js +241 -14
  199. package/tabs/types.d.ts +19 -5
  200. package/tag/Tag.js +17 -22
  201. package/tag/Tag.stories.tsx +25 -8
  202. package/tag/Tag.test.js +1 -1
  203. package/tag/types.d.ts +1 -1
  204. package/text-input/Icons.d.ts +8 -0
  205. package/text-input/Icons.js +60 -0
  206. package/text-input/Suggestion.d.ts +4 -0
  207. package/text-input/Suggestion.js +84 -0
  208. package/text-input/Suggestions.d.ts +4 -0
  209. package/text-input/Suggestions.js +134 -0
  210. package/text-input/TextInput.js +221 -344
  211. package/text-input/TextInput.stories.tsx +290 -195
  212. package/text-input/TextInput.test.js +763 -731
  213. package/text-input/types.d.ts +50 -12
  214. package/textarea/Textarea.js +17 -26
  215. package/textarea/Textarea.stories.jsx +65 -6
  216. package/textarea/Textarea.test.js +38 -37
  217. package/textarea/types.d.ts +18 -11
  218. package/toggle-group/ToggleGroup.d.ts +1 -1
  219. package/toggle-group/ToggleGroup.js +6 -5
  220. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  221. package/toggle-group/ToggleGroup.test.js +36 -5
  222. package/toggle-group/types.d.ts +9 -1
  223. package/typography/Typography.d.ts +4 -0
  224. package/typography/Typography.js +32 -0
  225. package/typography/Typography.stories.tsx +198 -0
  226. package/typography/types.d.ts +18 -0
  227. package/typography/types.js +5 -0
  228. package/useTheme.d.ts +1234 -1
  229. package/useTheme.js +3 -3
  230. package/useTranslatedLabels.d.ts +85 -0
  231. package/useTranslatedLabels.js +20 -0
  232. package/utils/BaseTypography.d.ts +21 -0
  233. package/utils/BaseTypography.js +108 -0
  234. package/utils/FocusLock.d.ts +13 -0
  235. package/utils/FocusLock.js +139 -0
  236. package/wizard/Wizard.d.ts +1 -1
  237. package/wizard/Wizard.js +59 -55
  238. package/wizard/Wizard.stories.tsx +48 -19
  239. package/wizard/Wizard.test.js +37 -24
  240. package/wizard/types.d.ts +10 -5
  241. package/ThemeContext.d.ts +0 -10
  242. package/ThemeContext.js +0 -243
  243. package/common/RequiredComponent.js +0 -32
  244. package/list/List.d.ts +0 -4
  245. package/list/List.js +0 -47
  246. package/list/List.stories.tsx +0 -95
  247. package/list/types.d.ts +0 -7
  248. package/radio/Radio.d.ts +0 -4
  249. package/radio/Radio.js +0 -174
  250. package/radio/Radio.stories.tsx +0 -192
  251. package/radio/Radio.test.js +0 -71
  252. package/radio/types.d.ts +0 -54
  253. package/row/Row.d.ts +0 -3
  254. package/row/Row.js +0 -127
  255. package/row/Row.stories.tsx +0 -237
  256. package/row/types.d.ts +0 -10
  257. package/stack/Stack.d.ts +0 -3
  258. package/stack/Stack.js +0 -97
  259. package/stack/Stack.stories.tsx +0 -164
  260. package/stack/types.d.ts +0 -9
  261. package/text/Text.d.ts +0 -7
  262. package/text/Text.js +0 -30
  263. package/text/Text.stories.tsx +0 -19
  264. /package/{list → bulleted-list}/types.js +0 -0
  265. /package/{radio → flex}/types.js +0 -0
  266. /package/{row → nav-tabs}/types.js +0 -0
  267. /package/{stack → quick-nav}/types.js +0 -0
@@ -3,6 +3,7 @@ import { userEvent, within } from "@storybook/testing-library";
3
3
  import Title from "../../.storybook/components/Title";
4
4
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
5
5
  import DxcTag from "./Tag";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "Tag",
@@ -23,6 +24,13 @@ const largeIcon = (
23
24
  </svg>
24
25
  );
25
26
 
27
+ const opinionatedTheme = {
28
+ tag: {
29
+ fontColor: "#000000",
30
+ iconColor: "#ffffff",
31
+ },
32
+ };
33
+
26
34
  export const Chromatic = () => (
27
35
  <>
28
36
  <ExampleContainer>
@@ -39,7 +47,10 @@ export const Chromatic = () => (
39
47
  </ExampleContainer>
40
48
  <ExampleContainer>
41
49
  <Title title="With label and icon" theme="light" level={4} />
42
- <DxcTag label="Tag" icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png" />
50
+ <DxcTag
51
+ label="Tag"
52
+ icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
53
+ />
43
54
  </ExampleContainer>
44
55
  <ExampleContainer>
45
56
  <Title title="With right icon" theme="light" level={4} />
@@ -95,31 +106,37 @@ export const Chromatic = () => (
95
106
  <Title title="Sizes" theme="light" level={2} />
96
107
  <ExampleContainer>
97
108
  <Title title="Small size" theme="light" level={4} />
98
- <DxcTag label="Small" size="small" />
109
+ <DxcTag label="Small" size="small" icon={icon} />
99
110
  </ExampleContainer>
100
111
  <ExampleContainer>
101
112
  <Title title="Medium size" theme="light" level={4} />
102
- <DxcTag label="Medium size medium s" size="medium" />
113
+ <DxcTag label="Medium size medium s" size="medium" icon={icon} />
103
114
  </ExampleContainer>
104
115
  <ExampleContainer>
105
116
  <Title title="Medium size with ellipsis" theme="light" level={4} />
106
- <DxcTag label="Medium size medium si medium" size="medium" />
117
+ <DxcTag label="Medium size medium si medium" size="medium" icon={icon} />
107
118
  </ExampleContainer>
108
119
  <ExampleContainer>
109
120
  <Title title="Large size" theme="light" level={4} />
110
- <DxcTag label="Large size large size large size large size large size" size="large" />
121
+ <DxcTag label="Large size large size large size large size large size" size="large" icon={icon} />
111
122
  </ExampleContainer>
112
123
  <ExampleContainer>
113
124
  <Title title="Large size with ellipsis" theme="light" level={4} />
114
- <DxcTag label="Large size large size large size large size large size large size" size="large" />
125
+ <DxcTag label="Large size large size large size large size large size large size" size="large" icon={icon} />
115
126
  </ExampleContainer>
116
127
  <ExampleContainer>
117
128
  <Title title="FillParent size" theme="light" level={4} />
118
- <DxcTag label="FillParent" size="fillParent" />
129
+ <DxcTag label="FillParent" size="fillParent" icon={icon} />
119
130
  </ExampleContainer>
120
131
  <ExampleContainer>
121
132
  <Title title="FitContent size" theme="light" level={4} />
122
- <DxcTag label="FitContent" size="fitContent" />
133
+ <DxcTag label="FitContent" size="fitContent" icon={icon} />
134
+ </ExampleContainer>
135
+ <Title title="Opinionated theme" theme="light" level={2} />
136
+ <ExampleContainer>
137
+ <HalstackProvider theme={opinionatedTheme}>
138
+ <DxcTag label="Tag" icon={icon} />
139
+ </HalstackProvider>
123
140
  </ExampleContainer>
124
141
  </>
125
142
  );
package/tag/Tag.test.js CHANGED
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Tag = _interopRequireDefault(require("./Tag"));
9
+ var _Tag = _interopRequireDefault(require("./Tag.tsx"));
10
10
 
11
11
  describe("Tag component tests", function () {
12
12
  test("Tag renders with correct label", function () {
package/tag/types.d.ts CHANGED
@@ -6,7 +6,7 @@ declare type Margin = {
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.SVGProps<SVGSVGElement>;
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type TagCommonProps = {
11
11
  /**
12
12
  * If defined, the tag will be displayed as an anchor, using this prop as "href".
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ declare const icons: {
3
+ error: JSX.Element;
4
+ clear: JSX.Element;
5
+ increment: JSX.Element;
6
+ decrement: JSX.Element;
7
+ };
8
+ export default icons;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var icons = {
13
+ error: /*#__PURE__*/_react["default"].createElement("svg", {
14
+ xmlns: "http://www.w3.org/2000/svg",
15
+ height: "24px",
16
+ viewBox: "0 0 24 24",
17
+ width: "24px",
18
+ fill: "currentColor"
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"
21
+ })),
22
+ clear: /*#__PURE__*/_react["default"].createElement("svg", {
23
+ xmlns: "http://www.w3.org/2000/svg",
24
+ width: "24",
25
+ height: "24",
26
+ viewBox: "0 0 24 24",
27
+ fill: "currentColor"
28
+ }, /*#__PURE__*/_react["default"].createElement("path", {
29
+ d: "M0 0h24v24H0V0z",
30
+ fill: "none"
31
+ }), /*#__PURE__*/_react["default"].createElement("path", {
32
+ d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"
33
+ })),
34
+ increment: /*#__PURE__*/_react["default"].createElement("svg", {
35
+ xmlns: "http://www.w3.org/2000/svg",
36
+ height: "24px",
37
+ viewBox: "0 0 24 24",
38
+ width: "24px",
39
+ fill: "currentColor"
40
+ }, /*#__PURE__*/_react["default"].createElement("path", {
41
+ d: "M0 0h24v24H0z",
42
+ fill: "none"
43
+ }), /*#__PURE__*/_react["default"].createElement("path", {
44
+ d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"
45
+ })),
46
+ decrement: /*#__PURE__*/_react["default"].createElement("svg", {
47
+ xmlns: "http://www.w3.org/2000/svg",
48
+ height: "24px",
49
+ viewBox: "0 0 24 24",
50
+ width: "24px",
51
+ fill: "currentColor"
52
+ }, /*#__PURE__*/_react["default"].createElement("path", {
53
+ d: "M0 0h24v24H0z",
54
+ fill: "none"
55
+ }), /*#__PURE__*/_react["default"].createElement("path", {
56
+ d: "M19 13H5v-2h14v2z"
57
+ }))
58
+ };
59
+ var _default = icons;
60
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { SuggestionProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ id, value, onClick, suggestion, isLast, visuallyFocused, highlighted, }: SuggestionProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
17
+
18
+ var _templateObject, _templateObject2;
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ var transformSpecialChars = function transformSpecialChars(str) {
25
+ var specialCharsRegex = /[\\*()\[\]{}+?/]/;
26
+ var value = str;
27
+
28
+ if (specialCharsRegex.test(value)) {
29
+ var regexAsString = specialCharsRegex.toString().split("");
30
+ var uniqueSpecialChars = regexAsString.filter(function (item, index) {
31
+ return regexAsString.indexOf(item) === index;
32
+ });
33
+ uniqueSpecialChars.forEach(function (specialChar) {
34
+ if (str.includes(specialChar)) value = value.replace(specialChar, "\\" + specialChar);
35
+ });
36
+ }
37
+
38
+ return value;
39
+ };
40
+
41
+ var Suggestion = function Suggestion(_ref) {
42
+ var id = _ref.id,
43
+ value = _ref.value,
44
+ _onClick = _ref.onClick,
45
+ suggestion = _ref.suggestion,
46
+ isLast = _ref.isLast,
47
+ visuallyFocused = _ref.visuallyFocused,
48
+ highlighted = _ref.highlighted;
49
+ var matchedSuggestion = (0, _react.useMemo)(function () {
50
+ var regEx = new RegExp(transformSpecialChars(value), "i");
51
+ return {
52
+ matchedWords: suggestion.match(regEx),
53
+ noMatchedWords: suggestion.replace(regEx, "")
54
+ };
55
+ }, [value, suggestion]);
56
+ return /*#__PURE__*/_react["default"].createElement(SuggestionContainer, {
57
+ id: id,
58
+ onClick: function onClick() {
59
+ _onClick(suggestion);
60
+ },
61
+ visuallyFocused: visuallyFocused,
62
+ role: "option",
63
+ "aria-selected": visuallyFocused ? true : undefined
64
+ }, /*#__PURE__*/_react["default"].createElement(StyledSuggestion, {
65
+ last: isLast,
66
+ visuallyFocused: visuallyFocused
67
+ }, highlighted ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("strong", null, matchedSuggestion.matchedWords), matchedSuggestion.noMatchedWords) : suggestion));
68
+ };
69
+
70
+ var SuggestionContainer = _styledComponents["default"].li(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0 0.5rem;\n line-height: 1.715em;\n cursor: pointer;\n box-shadow: inset 0 0 0 2px\n ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n"])), function (props) {
71
+ return props.visuallyFocused ? props.theme.focusListOptionBorderColor : "transparent";
72
+ }, function (props) {
73
+ return props.theme.hoverListOptionBackgroundColor;
74
+ }, function (props) {
75
+ return props.theme.activeListOptionBackgroundColor;
76
+ });
77
+
78
+ var StyledSuggestion = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n padding: 0.25rem 0.5rem 0.188rem 0.5rem;\n ", ";\n"])), function (props) {
79
+ return props.last || props.visuallyFocused ? "border-bottom: 1px solid transparent" : "border-bottom: 1px solid ".concat(props.theme.listOptionDividerColor);
80
+ });
81
+
82
+ var _default = /*#__PURE__*/_react["default"].memo(Suggestion);
83
+
84
+ exports["default"] = _default;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { SuggestionsProps } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ id, value, suggestions, visualFocusIndex, highlightedSuggestions, searchHasErrors, isSearching, suggestionOnClick, getTextInputWidth, }: SuggestionsProps) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
19
+
20
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
21
+
22
+ var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
23
+
24
+ var _Suggestion = _interopRequireDefault(require("./Suggestion"));
25
+
26
+ var _Icons = _interopRequireDefault(require("./Icons"));
27
+
28
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
29
+
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ var Suggestions = function Suggestions(_ref) {
35
+ var id = _ref.id,
36
+ value = _ref.value,
37
+ suggestions = _ref.suggestions,
38
+ visualFocusIndex = _ref.visualFocusIndex,
39
+ highlightedSuggestions = _ref.highlightedSuggestions,
40
+ searchHasErrors = _ref.searchHasErrors,
41
+ isSearching = _ref.isSearching,
42
+ suggestionOnClick = _ref.suggestionOnClick,
43
+ getTextInputWidth = _ref.getTextInputWidth;
44
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
45
+ var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
46
+ var listboxRef = (0, _react.useRef)(null);
47
+
48
+ var _useState = (0, _react.useState)(null),
49
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
50
+ styles = _useState2[0],
51
+ setStyles = _useState2[1];
52
+
53
+ (0, _react.useLayoutEffect)(function () {
54
+ var _listboxRef$current, _visualFocusedOptionE;
55
+
56
+ var visualFocusedOptionEl = listboxRef === null || listboxRef === void 0 ? void 0 : (_listboxRef$current = listboxRef.current) === null || _listboxRef$current === void 0 ? void 0 : _listboxRef$current.querySelectorAll("[role='option']")[visualFocusIndex];
57
+ visualFocusedOptionEl === null || visualFocusedOptionEl === void 0 ? void 0 : (_visualFocusedOptionE = visualFocusedOptionEl.scrollIntoView) === null || _visualFocusedOptionE === void 0 ? void 0 : _visualFocusedOptionE.call(visualFocusedOptionEl, {
58
+ block: "nearest",
59
+ inline: "start"
60
+ });
61
+ }, [visualFocusIndex]);
62
+
63
+ var handleResize = function handleResize() {
64
+ setStyles({
65
+ width: getTextInputWidth()
66
+ });
67
+ };
68
+
69
+ (0, _react.useLayoutEffect)(function () {
70
+ handleResize();
71
+ }, [getTextInputWidth]);
72
+ (0, _react.useEffect)(function () {
73
+ window.addEventListener("resize", handleResize);
74
+ return function () {
75
+ window.removeEventListener("resize", handleResize);
76
+ };
77
+ }, [getTextInputWidth]);
78
+ return /*#__PURE__*/_react["default"].createElement(SuggestionsContainer, {
79
+ id: id,
80
+ error: searchHasErrors ? true : false,
81
+ onMouseDown: function onMouseDown(event) {
82
+ event.preventDefault();
83
+ },
84
+ ref: listboxRef,
85
+ role: "listbox",
86
+ backgroundType: backgroundType,
87
+ style: styles
88
+ }, !isSearching && !searchHasErrors && suggestions.length > 0 && suggestions.map(function (suggestion, index) {
89
+ return /*#__PURE__*/_react["default"].createElement(_Suggestion["default"], {
90
+ key: "suggestion-".concat(index),
91
+ id: "suggestion-".concat(index),
92
+ value: value,
93
+ onClick: suggestionOnClick,
94
+ suggestion: suggestion,
95
+ isLast: index === suggestions.length - 1,
96
+ visuallyFocused: visualFocusIndex === index,
97
+ highlighted: highlightedSuggestions
98
+ });
99
+ }), isSearching && /*#__PURE__*/_react["default"].createElement(SuggestionsSystemMessage, null, translatedLabels.textInput.searchingMessage), searchHasErrors && /*#__PURE__*/_react["default"].createElement(SuggestionsError, null, /*#__PURE__*/_react["default"].createElement(SuggestionsErrorIcon, {
100
+ backgroundType: backgroundType
101
+ }, _Icons["default"].error), translatedLabels.textInput.fetchingDataErrorMessage));
102
+ };
103
+
104
+ var SuggestionsContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 304px;\n overflow-y: auto;\n margin: 0;\n padding: 0.25rem 0;\n background-color: ", ";\n border: 1px solid\n ", ";\n\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
105
+ return props.error ? props.theme.errorListDialogBackgroundColor : props.theme.listDialogBackgroundColor;
106
+ }, function (props) {
107
+ return props.error ? props.backgroundType === "dark" ? props.theme.errorBorderColorOnDark : props.theme.errorListDialogBorderColor : props.theme.listDialogBorderColor;
108
+ }, function (props) {
109
+ return props.theme.listOptionFontColor;
110
+ }, function (props) {
111
+ return props.theme.fontFamily;
112
+ }, function (props) {
113
+ return props.theme.listOptionFontSize;
114
+ }, function (props) {
115
+ return props.theme.listOptionFontStyle;
116
+ }, function (props) {
117
+ return props.theme.listOptionFontWeight;
118
+ });
119
+
120
+ var SuggestionsSystemMessage = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n color: ", ";\n line-height: 1.715em;\n"])), function (props) {
121
+ return props.theme.systemMessageFontColor;
122
+ });
123
+
124
+ var SuggestionsErrorIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n margin-right: 0.5rem;\n height: 18px;\n width: 18px;\n color: ", ";\n"])), function (props) {
125
+ return props.backgroundType === "dark" ? props.theme.errorIconColorOnDark : props.theme.errorIconColor;
126
+ });
127
+
128
+ var SuggestionsError = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n align-items: center;\n line-height: 1.715em;\n color: ", ";\n"])), function (props) {
129
+ return props.theme.errorListDialogFontColor;
130
+ });
131
+
132
+ var _default = /*#__PURE__*/_react["default"].memo(Suggestions);
133
+
134
+ exports["default"] = _default;