@dxc-technology/halstack-react 0.0.0-b41d935 → 0.0.0-b4aec06

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 (329) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +5 -22
  3. package/HalstackContext.d.ts +1243 -6
  4. package/HalstackContext.js +126 -111
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +42 -118
  8. package/accordion/Accordion.stories.tsx +85 -139
  9. package/accordion/Accordion.test.js +19 -34
  10. package/accordion/types.d.ts +6 -18
  11. package/accordion-group/AccordionGroup.d.ts +2 -2
  12. package/accordion-group/AccordionGroup.js +29 -77
  13. package/accordion-group/AccordionGroup.stories.tsx +78 -77
  14. package/accordion-group/AccordionGroup.test.js +44 -72
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +31 -0
  17. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  18. package/accordion-group/AccordionGroupContext.js +8 -0
  19. package/accordion-group/types.d.ts +7 -19
  20. package/action-icon/ActionIcon.d.ts +4 -0
  21. package/action-icon/ActionIcon.js +48 -0
  22. package/action-icon/ActionIcon.stories.tsx +41 -0
  23. package/action-icon/ActionIcon.test.js +64 -0
  24. package/action-icon/types.d.ts +26 -0
  25. package/alert/Alert.js +31 -124
  26. package/alert/Alert.stories.tsx +28 -0
  27. package/alert/Alert.test.js +29 -46
  28. package/alert/types.d.ts +5 -5
  29. package/badge/Badge.d.ts +1 -1
  30. package/badge/Badge.js +141 -43
  31. package/badge/Badge.stories.tsx +210 -0
  32. package/badge/Badge.test.js +30 -0
  33. package/badge/types.d.ts +52 -3
  34. package/bleed/Bleed.js +13 -21
  35. package/bleed/Bleed.stories.tsx +1 -0
  36. package/bleed/types.d.ts +2 -2
  37. package/box/Box.d.ts +1 -1
  38. package/box/Box.js +18 -59
  39. package/box/Box.stories.tsx +38 -51
  40. package/box/Box.test.js +2 -7
  41. package/box/types.d.ts +3 -15
  42. package/bulleted-list/BulletedList.js +19 -53
  43. package/bulleted-list/BulletedList.stories.tsx +8 -93
  44. package/bulleted-list/types.d.ts +32 -5
  45. package/button/Button.d.ts +1 -1
  46. package/button/Button.js +71 -106
  47. package/button/Button.stories.tsx +144 -101
  48. package/button/Button.test.js +20 -17
  49. package/button/types.d.ts +9 -5
  50. package/card/Card.d.ts +1 -1
  51. package/card/Card.js +48 -89
  52. package/card/Card.stories.tsx +12 -42
  53. package/card/Card.test.js +11 -22
  54. package/card/types.d.ts +6 -12
  55. package/checkbox/Checkbox.d.ts +2 -2
  56. package/checkbox/Checkbox.js +90 -124
  57. package/checkbox/Checkbox.stories.tsx +68 -54
  58. package/checkbox/Checkbox.test.js +108 -64
  59. package/checkbox/types.d.ts +11 -3
  60. package/chip/Chip.js +39 -79
  61. package/chip/Chip.stories.tsx +121 -26
  62. package/chip/Chip.test.js +16 -31
  63. package/chip/types.d.ts +4 -4
  64. package/common/coreTokens.d.ts +237 -0
  65. package/common/coreTokens.js +184 -0
  66. package/common/utils.d.ts +1 -0
  67. package/common/utils.js +6 -12
  68. package/common/variables.d.ts +1395 -0
  69. package/common/variables.js +914 -1156
  70. package/container/Container.d.ts +4 -0
  71. package/container/Container.js +194 -0
  72. package/container/Container.stories.tsx +214 -0
  73. package/container/types.d.ts +74 -0
  74. package/contextual-menu/ContextualMenu.d.ts +7 -0
  75. package/contextual-menu/ContextualMenu.js +71 -0
  76. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  77. package/contextual-menu/ContextualMenu.test.js +71 -0
  78. package/contextual-menu/MenuItemAction.d.ts +4 -0
  79. package/contextual-menu/MenuItemAction.js +46 -0
  80. package/contextual-menu/types.d.ts +22 -0
  81. package/date-input/Calendar.d.ts +4 -0
  82. package/date-input/Calendar.js +214 -0
  83. package/date-input/DateInput.js +150 -299
  84. package/date-input/DateInput.stories.tsx +203 -56
  85. package/date-input/DateInput.test.js +700 -371
  86. package/date-input/DatePicker.d.ts +4 -0
  87. package/date-input/DatePicker.js +115 -0
  88. package/date-input/Icons.d.ts +6 -0
  89. package/date-input/Icons.js +58 -0
  90. package/date-input/YearPicker.d.ts +4 -0
  91. package/date-input/YearPicker.js +100 -0
  92. package/date-input/types.d.ts +72 -15
  93. package/dialog/Dialog.d.ts +1 -1
  94. package/dialog/Dialog.js +61 -119
  95. package/dialog/Dialog.stories.tsx +310 -212
  96. package/dialog/Dialog.test.js +269 -32
  97. package/dialog/types.d.ts +18 -26
  98. package/divider/Divider.d.ts +4 -0
  99. package/divider/Divider.js +36 -0
  100. package/divider/Divider.stories.tsx +223 -0
  101. package/divider/Divider.test.js +38 -0
  102. package/divider/types.d.ts +21 -0
  103. package/divider/types.js +5 -0
  104. package/dropdown/Dropdown.js +84 -153
  105. package/dropdown/Dropdown.stories.tsx +209 -94
  106. package/dropdown/Dropdown.test.js +409 -400
  107. package/dropdown/DropdownMenu.js +20 -37
  108. package/dropdown/DropdownMenuItem.js +15 -37
  109. package/dropdown/types.d.ts +20 -24
  110. package/file-input/FileInput.d.ts +2 -2
  111. package/file-input/FileInput.js +193 -262
  112. package/file-input/FileInput.stories.tsx +86 -3
  113. package/file-input/FileInput.test.js +356 -395
  114. package/file-input/FileItem.js +15 -41
  115. package/file-input/types.d.ts +13 -9
  116. package/flex/Flex.js +27 -39
  117. package/flex/Flex.stories.tsx +35 -26
  118. package/flex/types.d.ts +74 -9
  119. package/footer/Footer.d.ts +1 -1
  120. package/footer/Footer.js +70 -117
  121. package/footer/Footer.stories.tsx +55 -21
  122. package/footer/Footer.test.js +33 -57
  123. package/footer/Icons.d.ts +3 -2
  124. package/footer/Icons.js +66 -7
  125. package/footer/types.d.ts +25 -27
  126. package/grid/Grid.d.ts +7 -0
  127. package/grid/Grid.js +76 -0
  128. package/grid/Grid.stories.tsx +219 -0
  129. package/grid/types.d.ts +115 -0
  130. package/grid/types.js +5 -0
  131. package/header/Header.d.ts +4 -3
  132. package/header/Header.js +48 -133
  133. package/header/Header.stories.tsx +115 -36
  134. package/header/Header.test.js +13 -26
  135. package/header/Icons.d.ts +2 -2
  136. package/header/Icons.js +2 -7
  137. package/header/types.d.ts +7 -22
  138. package/heading/Heading.js +10 -32
  139. package/heading/Heading.test.js +71 -88
  140. package/heading/types.d.ts +7 -7
  141. package/icon/Icon.d.ts +4 -0
  142. package/icon/Icon.js +33 -0
  143. package/icon/Icon.stories.tsx +28 -0
  144. package/icon/types.d.ts +4 -0
  145. package/icon/types.js +5 -0
  146. package/image/Image.d.ts +4 -0
  147. package/image/Image.js +70 -0
  148. package/image/Image.stories.tsx +129 -0
  149. package/image/types.d.ts +72 -0
  150. package/image/types.js +5 -0
  151. package/inset/Inset.js +13 -21
  152. package/inset/Inset.stories.tsx +2 -1
  153. package/inset/types.d.ts +2 -2
  154. package/layout/ApplicationLayout.d.ts +5 -5
  155. package/layout/ApplicationLayout.js +30 -67
  156. package/layout/ApplicationLayout.stories.tsx +1 -1
  157. package/layout/Icons.d.ts +8 -5
  158. package/layout/Icons.js +51 -59
  159. package/layout/types.d.ts +5 -6
  160. package/link/Link.js +25 -46
  161. package/link/Link.stories.tsx +60 -0
  162. package/link/Link.test.js +24 -44
  163. package/link/types.d.ts +14 -14
  164. package/main.d.ts +10 -5
  165. package/main.js +47 -59
  166. package/nav-tabs/NavTabs.d.ts +7 -0
  167. package/{tabs-nav → nav-tabs}/NavTabs.js +25 -57
  168. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +115 -9
  169. package/{tabs-nav → nav-tabs}/NavTabs.test.js +39 -45
  170. package/nav-tabs/NavTabsContext.d.ts +3 -0
  171. package/nav-tabs/NavTabsContext.js +8 -0
  172. package/nav-tabs/Tab.js +118 -0
  173. package/{tabs-nav → nav-tabs}/types.d.ts +14 -15
  174. package/nav-tabs/types.js +5 -0
  175. package/number-input/NumberInput.js +46 -36
  176. package/number-input/NumberInput.stories.tsx +42 -26
  177. package/number-input/NumberInput.test.js +860 -414
  178. package/number-input/NumberInputContext.d.ts +3 -4
  179. package/number-input/NumberInputContext.js +3 -14
  180. package/number-input/types.d.ts +17 -5
  181. package/package.json +37 -40
  182. package/paginator/Icons.d.ts +5 -0
  183. package/paginator/Icons.js +21 -47
  184. package/paginator/Paginator.js +22 -58
  185. package/paginator/Paginator.stories.tsx +24 -0
  186. package/paginator/Paginator.test.js +252 -225
  187. package/paginator/types.d.ts +3 -3
  188. package/paragraph/Paragraph.d.ts +3 -4
  189. package/paragraph/Paragraph.js +6 -22
  190. package/paragraph/Paragraph.stories.tsx +0 -17
  191. package/password-input/Icons.d.ts +6 -0
  192. package/password-input/Icons.js +35 -0
  193. package/password-input/PasswordInput.js +57 -126
  194. package/password-input/PasswordInput.stories.tsx +1 -33
  195. package/password-input/PasswordInput.test.js +158 -141
  196. package/password-input/types.d.ts +8 -7
  197. package/progress-bar/ProgressBar.d.ts +2 -2
  198. package/progress-bar/ProgressBar.js +23 -55
  199. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +36 -3
  200. package/progress-bar/ProgressBar.test.js +36 -53
  201. package/progress-bar/types.d.ts +4 -3
  202. package/quick-nav/QuickNav.js +4 -27
  203. package/quick-nav/QuickNav.stories.tsx +15 -1
  204. package/quick-nav/types.d.ts +10 -10
  205. package/radio-group/Radio.d.ts +1 -1
  206. package/radio-group/Radio.js +31 -63
  207. package/radio-group/RadioGroup.js +45 -93
  208. package/radio-group/RadioGroup.stories.tsx +131 -18
  209. package/radio-group/RadioGroup.test.js +505 -471
  210. package/radio-group/types.d.ts +8 -8
  211. package/resultset-table/Icons.d.ts +7 -0
  212. package/resultset-table/Icons.js +47 -0
  213. package/resultset-table/ResultsetTable.d.ts +7 -0
  214. package/resultset-table/ResultsetTable.js +170 -0
  215. package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +156 -30
  216. package/resultset-table/ResultsetTable.test.js +381 -0
  217. package/{resultsetTable → resultset-table}/types.d.ts +44 -11
  218. package/resultset-table/types.js +5 -0
  219. package/select/Icons.d.ts +7 -7
  220. package/select/Icons.js +1 -5
  221. package/select/Listbox.d.ts +1 -1
  222. package/select/Listbox.js +17 -72
  223. package/select/Option.js +27 -50
  224. package/select/Select.js +120 -175
  225. package/select/Select.stories.tsx +497 -153
  226. package/select/Select.test.js +1974 -1837
  227. package/select/types.d.ts +16 -17
  228. package/sidenav/Icons.d.ts +7 -0
  229. package/{text-input → sidenav}/Icons.js +10 -23
  230. package/sidenav/Sidenav.d.ts +2 -2
  231. package/sidenav/Sidenav.js +83 -154
  232. package/sidenav/Sidenav.stories.tsx +165 -63
  233. package/sidenav/Sidenav.test.js +3 -10
  234. package/{layout → sidenav}/SidenavContext.d.ts +1 -1
  235. package/{layout → sidenav}/SidenavContext.js +3 -9
  236. package/sidenav/types.d.ts +31 -28
  237. package/slider/Slider.d.ts +2 -2
  238. package/slider/Slider.js +77 -134
  239. package/slider/Slider.test.js +108 -104
  240. package/slider/types.d.ts +7 -3
  241. package/spinner/Spinner.js +31 -75
  242. package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +53 -27
  243. package/spinner/Spinner.test.js +26 -35
  244. package/spinner/types.d.ts +3 -3
  245. package/status-light/StatusLight.d.ts +4 -0
  246. package/status-light/StatusLight.js +51 -0
  247. package/status-light/StatusLight.stories.tsx +74 -0
  248. package/status-light/StatusLight.test.js +25 -0
  249. package/status-light/types.d.ts +17 -0
  250. package/status-light/types.js +5 -0
  251. package/switch/Switch.d.ts +3 -3
  252. package/switch/Switch.js +56 -103
  253. package/switch/Switch.stories.tsx +33 -34
  254. package/switch/Switch.test.js +52 -97
  255. package/switch/types.d.ts +8 -3
  256. package/table/DropdownTheme.js +62 -0
  257. package/table/Table.d.ts +6 -2
  258. package/table/Table.js +78 -35
  259. package/table/Table.stories.tsx +651 -0
  260. package/table/Table.test.js +95 -8
  261. package/table/types.d.ts +34 -6
  262. package/tabs/Tab.js +26 -45
  263. package/tabs/Tabs.js +62 -145
  264. package/tabs/Tabs.stories.tsx +46 -6
  265. package/tabs/Tabs.test.js +66 -123
  266. package/tabs/types.d.ts +19 -19
  267. package/tag/Tag.js +28 -60
  268. package/tag/Tag.stories.tsx +14 -1
  269. package/tag/Tag.test.js +20 -31
  270. package/tag/types.d.ts +7 -7
  271. package/text-input/Suggestion.js +35 -25
  272. package/text-input/Suggestions.d.ts +1 -1
  273. package/text-input/Suggestions.js +19 -67
  274. package/text-input/TextInput.js +223 -333
  275. package/text-input/TextInput.stories.tsx +139 -155
  276. package/text-input/TextInput.test.js +1389 -1404
  277. package/text-input/types.d.ts +25 -17
  278. package/textarea/Textarea.js +70 -113
  279. package/textarea/Textarea.stories.tsx +174 -0
  280. package/textarea/Textarea.test.js +152 -183
  281. package/textarea/types.d.ts +9 -5
  282. package/toggle-group/ToggleGroup.d.ts +2 -2
  283. package/toggle-group/ToggleGroup.js +92 -106
  284. package/toggle-group/ToggleGroup.stories.tsx +49 -4
  285. package/toggle-group/ToggleGroup.test.js +69 -88
  286. package/toggle-group/types.d.ts +26 -17
  287. package/typography/Typography.d.ts +2 -2
  288. package/typography/Typography.js +15 -123
  289. package/typography/Typography.stories.tsx +1 -1
  290. package/typography/types.d.ts +1 -1
  291. package/useTheme.d.ts +1147 -1
  292. package/useTheme.js +2 -9
  293. package/useTranslatedLabels.d.ts +84 -1
  294. package/useTranslatedLabels.js +1 -7
  295. package/utils/BaseTypography.d.ts +21 -0
  296. package/utils/BaseTypography.js +94 -0
  297. package/utils/FocusLock.d.ts +13 -0
  298. package/utils/FocusLock.js +124 -0
  299. package/wizard/Wizard.js +16 -51
  300. package/wizard/Wizard.stories.tsx +20 -0
  301. package/wizard/Wizard.test.js +54 -81
  302. package/wizard/types.d.ts +9 -10
  303. package/card/ice-cream.jpg +0 -0
  304. package/common/OpenSans.css +0 -81
  305. package/common/RequiredComponent.js +0 -32
  306. package/common/fonts/OpenSans-Bold.ttf +0 -0
  307. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  308. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  309. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  310. package/common/fonts/OpenSans-Italic.ttf +0 -0
  311. package/common/fonts/OpenSans-Light.ttf +0 -0
  312. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  313. package/common/fonts/OpenSans-Regular.ttf +0 -0
  314. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  315. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  316. package/number-input/numberInputContextTypes.d.ts +0 -19
  317. package/resultsetTable/ResultsetTable.d.ts +0 -4
  318. package/resultsetTable/ResultsetTable.js +0 -252
  319. package/resultsetTable/ResultsetTable.test.js +0 -348
  320. package/slider/Slider.stories.tsx +0 -183
  321. package/table/Table.stories.jsx +0 -277
  322. package/tabs-nav/NavTabs.d.ts +0 -8
  323. package/tabs-nav/Tab.js +0 -130
  324. package/text-input/Icons.d.ts +0 -8
  325. package/textarea/Textarea.stories.jsx +0 -157
  326. /package/{resultsetTable → action-icon}/types.js +0 -0
  327. /package/{tabs-nav → container}/types.js +0 -0
  328. /package/{number-input/numberInputContextTypes.js → contextual-menu/types.js} +0 -0
  329. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -1,44 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
5
6
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
6
-
7
7
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
-
9
8
  var _react = _interopRequireDefault(require("react"));
10
-
11
9
  var _react2 = require("@testing-library/react");
12
-
13
- var _Dropdown = _interopRequireDefault(require("./Dropdown"));
14
-
15
10
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
16
-
11
+ var _Dropdown = _interopRequireDefault(require("./Dropdown.tsx"));
12
+ // Mocking DOMRect for Radix Primitive Popover
17
13
  global.globalThis = global;
18
-
19
- global.ResizeObserver = /*#__PURE__*/function () {
20
- function ResizeObserver(cb) {
21
- (0, _classCallCheck2["default"])(this, ResizeObserver);
22
- this.cb = cb;
23
- }
24
-
25
- (0, _createClass2["default"])(ResizeObserver, [{
26
- key: "observe",
27
- value: function observe() {
28
- this.cb([{
29
- borderBoxSize: {
30
- inlineSize: 0,
31
- blockSize: 0
32
- }
33
- }]);
34
- }
35
- }, {
36
- key: "unobserve",
37
- value: function unobserve() {}
38
- }]);
39
- return ResizeObserver;
40
- }();
41
-
42
14
  global.DOMRect = {
43
15
  fromRect: function fromRect() {
44
16
  return {
@@ -51,6 +23,22 @@ global.DOMRect = {
51
23
  };
52
24
  }
53
25
  };
26
+ global.ResizeObserver = /*#__PURE__*/function () {
27
+ function ResizeObserver() {
28
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
29
+ }
30
+ (0, _createClass2["default"])(ResizeObserver, [{
31
+ key: "observe",
32
+ value: function observe() {}
33
+ }, {
34
+ key: "unobserve",
35
+ value: function unobserve() {}
36
+ }, {
37
+ key: "disconnect",
38
+ value: function disconnect() {}
39
+ }]);
40
+ return ResizeObserver;
41
+ }();
54
42
  var options = [{
55
43
  value: "1",
56
44
  label: "Amazon"
@@ -65,150 +53,170 @@ var options = [{
65
53
  label: "Aliexpress"
66
54
  }];
67
55
  describe("Dropdown component tests", function () {
68
- test("Renders with correct aria attributes", function () {
69
- var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
70
- options: options,
71
- label: "dropdown-test"
72
- })),
73
- getAllByRole = _render.getAllByRole,
74
- getByRole = _render.getByRole;
75
-
76
- var dropdown = getByRole("button");
77
- expect(dropdown.getAttribute("aria-haspopup")).toBe("true");
78
- expect(dropdown.getAttribute("aria-expanded")).toBeNull();
79
- expect(dropdown.getAttribute("aria-activedescendant")).toBeNull();
80
-
81
- _userEvent["default"].click(dropdown);
82
-
83
- var menu = getByRole("menu");
84
- expect(dropdown.getAttribute("aria-controls")).toBe(menu.id);
85
- expect(dropdown.getAttribute("aria-expanded")).toBe("true");
86
- expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
87
- expect(menu.getAttribute("aria-orientation")).toBe("vertical");
88
- expect(menu.getAttribute("aria-labelledby")).toBe(dropdown.id);
89
- expect(getAllByRole("menuitem").length).toBe(4);
90
- });
91
- test("Button trigger opens and closes the menu options when clicked", function () {
92
- var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
93
- options: options,
94
- label: "dropdown-test"
95
- })),
96
- getByRole = _render2.getByRole,
97
- queryByRole = _render2.queryByRole,
98
- getByText = _render2.getByText;
99
-
100
- var dropdown = getByRole("button");
101
- expect(queryByRole("menu")).toBeFalsy();
102
-
103
- _userEvent["default"].click(dropdown);
104
-
105
- expect(queryByRole("menu")).toBeTruthy();
106
- expect(getByText("Amazon")).toBeTruthy();
107
- expect(getByText("Ebay")).toBeTruthy();
108
- expect(getByText("Wallapop")).toBeTruthy();
109
- expect(getByText("Aliexpress")).toBeTruthy();
110
-
111
- _userEvent["default"].click(dropdown);
112
-
113
- expect(queryByRole("menu")).toBeFalsy();
114
- });
115
- test("Button trigger is not interactable when disabled", function () {
116
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
117
- disabled: true,
118
- options: options,
119
- label: "dropdown-test"
120
- })),
121
- getByRole = _render3.getByRole,
122
- queryByRole = _render3.queryByRole,
123
- queryByText = _render3.queryByText;
124
-
125
- var dropdown = getByRole("button");
126
- expect(queryByRole("menu")).toBeFalsy();
127
-
128
- _userEvent["default"].click(dropdown);
129
-
130
- expect(queryByRole("menu")).toBeFalsy();
131
- expect(queryByText("Amazon")).toBeFalsy();
132
-
133
- _userEvent["default"].click(dropdown);
134
-
135
- expect(queryByRole("menu")).toBeFalsy();
136
- expect(dropdown.getAttribute("aria-expanded")).toBeNull();
137
- });
138
- test("onSelectOption function is called correctly when an option is clicked", function () {
139
- var onSelectOption = jest.fn();
140
-
141
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
142
- options: options,
143
- onSelectOption: onSelectOption,
144
- label: "dropdown-test"
145
- })),
146
- getByText = _render4.getByText;
147
-
148
- var dropdown = getByText("dropdown-test");
149
-
150
- _userEvent["default"].click(dropdown);
151
-
152
- var option = getByText("Aliexpress");
153
-
154
- _userEvent["default"].click(option);
155
-
156
- expect(onSelectOption).toHaveBeenCalledWith("4");
157
- });
56
+ test("Renders with correct aria attributes", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
57
+ var _render, getAllByRole, getByRole, dropdown, menu;
58
+ return _regenerator["default"].wrap(function _callee$(_context) {
59
+ while (1) switch (_context.prev = _context.next) {
60
+ case 0:
61
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
62
+ options: options,
63
+ label: "dropdown-test"
64
+ })), getAllByRole = _render.getAllByRole, getByRole = _render.getByRole;
65
+ dropdown = getByRole("button");
66
+ expect(dropdown.getAttribute("aria-haspopup")).toBe("true");
67
+ expect(dropdown.getAttribute("aria-expanded")).toBeNull();
68
+ expect(dropdown.getAttribute("aria-activedescendant")).toBeNull();
69
+ _context.next = 7;
70
+ return _userEvent["default"].click(dropdown);
71
+ case 7:
72
+ menu = getByRole("menu");
73
+ expect(dropdown.getAttribute("aria-controls")).toBe(menu.id);
74
+ expect(dropdown.getAttribute("aria-expanded")).toBe("true");
75
+ expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
76
+ expect(menu.getAttribute("aria-orientation")).toBe("vertical");
77
+ expect(menu.getAttribute("aria-labelledby")).toBe(dropdown.id);
78
+ expect(getAllByRole("menuitem").length).toBe(4);
79
+ case 14:
80
+ case "end":
81
+ return _context.stop();
82
+ }
83
+ }, _callee);
84
+ })));
85
+ test("Button trigger opens and closes the menu options when clicked", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
86
+ var _render2, getByRole, queryByRole, getByText, dropdown;
87
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
88
+ while (1) switch (_context2.prev = _context2.next) {
89
+ case 0:
90
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
91
+ options: options,
92
+ label: "dropdown-test"
93
+ })), getByRole = _render2.getByRole, queryByRole = _render2.queryByRole, getByText = _render2.getByText;
94
+ dropdown = getByRole("button");
95
+ expect(queryByRole("menu")).toBeFalsy();
96
+ _context2.next = 5;
97
+ return _userEvent["default"].click(dropdown);
98
+ case 5:
99
+ expect(queryByRole("menu")).toBeTruthy();
100
+ expect(getByText("Amazon")).toBeTruthy();
101
+ expect(getByText("Ebay")).toBeTruthy();
102
+ expect(getByText("Wallapop")).toBeTruthy();
103
+ expect(getByText("Aliexpress")).toBeTruthy();
104
+ _context2.next = 12;
105
+ return _userEvent["default"].click(dropdown);
106
+ case 12:
107
+ expect(queryByRole("menu")).toBeFalsy();
108
+ case 13:
109
+ case "end":
110
+ return _context2.stop();
111
+ }
112
+ }, _callee2);
113
+ })));
114
+ test("Button trigger is not interactive when disabled", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
115
+ var _render3, getByRole, queryByRole, queryByText, dropdown;
116
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
117
+ while (1) switch (_context3.prev = _context3.next) {
118
+ case 0:
119
+ _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
120
+ disabled: true,
121
+ options: options,
122
+ label: "dropdown-test"
123
+ })), getByRole = _render3.getByRole, queryByRole = _render3.queryByRole, queryByText = _render3.queryByText;
124
+ dropdown = getByRole("button");
125
+ expect(queryByRole("menu")).toBeFalsy();
126
+ _context3.next = 5;
127
+ return _userEvent["default"].click(dropdown);
128
+ case 5:
129
+ expect(queryByRole("menu")).toBeFalsy();
130
+ expect(queryByText("Amazon")).toBeFalsy();
131
+ _context3.next = 9;
132
+ return _userEvent["default"].click(dropdown);
133
+ case 9:
134
+ expect(queryByRole("menu")).toBeFalsy();
135
+ expect(dropdown.getAttribute("aria-expanded")).toBeNull();
136
+ case 11:
137
+ case "end":
138
+ return _context3.stop();
139
+ }
140
+ }, _callee3);
141
+ })));
142
+ test("onSelectOption function is called correctly when an option is clicked", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
143
+ var onSelectOption, _render4, getByText, dropdown, option;
144
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
145
+ while (1) switch (_context4.prev = _context4.next) {
146
+ case 0:
147
+ onSelectOption = jest.fn();
148
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
149
+ options: options,
150
+ onSelectOption: onSelectOption,
151
+ label: "dropdown-test"
152
+ })), getByText = _render4.getByText;
153
+ dropdown = getByText("dropdown-test");
154
+ _context4.next = 5;
155
+ return _userEvent["default"].click(dropdown);
156
+ case 5:
157
+ option = getByText("Aliexpress");
158
+ _context4.next = 8;
159
+ return _userEvent["default"].click(option);
160
+ case 8:
161
+ expect(onSelectOption).toHaveBeenCalledWith("4");
162
+ case 9:
163
+ case "end":
164
+ return _context4.stop();
165
+ }
166
+ }, _callee4);
167
+ })));
158
168
  test("When expandOnHover is true, the dropdown trigger shows and hides the menu when it is hovered", function () {
159
169
  var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
160
- options: options,
161
- expandOnHover: true,
162
- label: "dropdown-test"
163
- })),
164
- queryByText = _render5.queryByText,
165
- getByRole = _render5.getByRole,
166
- queryByRole = _render5.queryByRole;
167
-
170
+ options: options,
171
+ expandOnHover: true,
172
+ label: "dropdown-test"
173
+ })),
174
+ queryByText = _render5.queryByText,
175
+ getByRole = _render5.getByRole,
176
+ queryByRole = _render5.queryByRole;
168
177
  expect(queryByText("option-test")).toBeFalsy();
169
178
  expect(queryByRole("menu")).toBeFalsy();
170
-
171
179
  _react2.fireEvent.mouseOver(getByRole("button"));
172
-
173
180
  var menu = getByRole("menu");
174
181
  expect(menu).toBeTruthy();
175
182
  expect(document.activeElement === menu).toBeTruthy();
176
183
  expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
177
184
  });
178
- test("The menu is closed when the dropdown loses the focus (blur)", function () {
179
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
180
- options: options,
181
- label: "dropdown-test"
182
- })),
183
- getByRole = _render6.getByRole,
184
- queryByRole = _render6.queryByRole;
185
-
186
- var dropdown = getByRole("button");
187
-
188
- _userEvent["default"].click(dropdown);
189
-
190
- expect(getByRole("menu")).toBeTruthy();
191
-
192
- _react2.fireEvent.blur(getByRole("menu"));
193
-
194
- expect(queryByRole("menu")).toBeFalsy();
195
- });
185
+ test("The menu is closed when the dropdown loses the focus (blur)", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
186
+ var _render6, getByRole, queryByRole, dropdown;
187
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
188
+ while (1) switch (_context5.prev = _context5.next) {
189
+ case 0:
190
+ _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
191
+ options: options,
192
+ label: "dropdown-test"
193
+ })), getByRole = _render6.getByRole, queryByRole = _render6.queryByRole;
194
+ dropdown = getByRole("button");
195
+ _context5.next = 4;
196
+ return _userEvent["default"].click(dropdown);
197
+ case 4:
198
+ expect(getByRole("menu")).toBeTruthy();
199
+ _react2.fireEvent.blur(getByRole("menu"));
200
+ expect(queryByRole("menu")).toBeFalsy();
201
+ case 7:
202
+ case "end":
203
+ return _context5.stop();
204
+ }
205
+ }, _callee5);
206
+ })));
196
207
  test("Menu button key events - Arrow up opens the list and moves the focus to the last menu item", function () {
197
208
  var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
198
- options: options,
199
- label: "dropdown-test"
200
- })),
201
- getByRole = _render7.getByRole;
202
-
209
+ options: options,
210
+ label: "dropdown-test"
211
+ })),
212
+ getByRole = _render7.getByRole;
203
213
  var dropdown = getByRole("button");
204
-
205
214
  _react2.fireEvent.keyDown(dropdown, {
206
215
  key: "ArrowUp",
207
216
  code: "ArrowUp",
208
217
  keyCode: 38,
209
218
  charCode: 38
210
219
  });
211
-
212
220
  var menu = getByRole("menu");
213
221
  expect(menu).toBeTruthy();
214
222
  expect(document.activeElement === menu).toBeTruthy();
@@ -216,20 +224,17 @@ describe("Dropdown component tests", function () {
216
224
  });
217
225
  test("Menu button key events - Arrow down opens the list and moves the focus to the first menu item", function () {
218
226
  var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
219
- options: options,
220
- label: "dropdown-test"
221
- })),
222
- getByRole = _render8.getByRole;
223
-
227
+ options: options,
228
+ label: "dropdown-test"
229
+ })),
230
+ getByRole = _render8.getByRole;
224
231
  var dropdown = getByRole("button");
225
-
226
232
  _react2.fireEvent.keyDown(dropdown, {
227
233
  key: "ArrowDown",
228
234
  code: "ArrowDown",
229
235
  keyCode: 40,
230
236
  charCode: 40
231
237
  });
232
-
233
238
  var menu = getByRole("menu");
234
239
  expect(menu).toBeTruthy();
235
240
  expect(document.activeElement === menu).toBeTruthy();
@@ -237,20 +242,17 @@ describe("Dropdown component tests", function () {
237
242
  });
238
243
  test("Menu button key events - Enter opens the list and moves the focus to the first menu item", function () {
239
244
  var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
240
- options: options,
241
- label: "dropdown-test"
242
- })),
243
- getByRole = _render9.getByRole;
244
-
245
+ options: options,
246
+ label: "dropdown-test"
247
+ })),
248
+ getByRole = _render9.getByRole;
245
249
  var dropdown = getByRole("button");
246
-
247
250
  _react2.fireEvent.keyDown(dropdown, {
248
251
  key: "Enter",
249
252
  code: "Enter",
250
253
  keyCode: 13,
251
254
  charCode: 13
252
255
  });
253
-
254
256
  var menu = getByRole("menu");
255
257
  expect(menu).toBeTruthy();
256
258
  expect(document.activeElement === menu).toBeTruthy();
@@ -258,20 +260,17 @@ describe("Dropdown component tests", function () {
258
260
  });
259
261
  test("Menu button key events - Space opens the list and moves the focus to the first menu item", function () {
260
262
  var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
261
- options: options,
262
- label: "dropdown-test"
263
- })),
264
- getByRole = _render10.getByRole;
265
-
263
+ options: options,
264
+ label: "dropdown-test"
265
+ })),
266
+ getByRole = _render10.getByRole;
266
267
  var dropdown = getByRole("button");
267
-
268
268
  _react2.fireEvent.keyDown(dropdown, {
269
269
  key: " ",
270
270
  code: "Space",
271
271
  keyCode: 32,
272
272
  charCode: 32
273
273
  });
274
-
275
274
  var menu = getByRole("menu");
276
275
  expect(menu).toBeTruthy();
277
276
  expect(document.activeElement === menu).toBeTruthy();
@@ -279,312 +278,322 @@ describe("Dropdown component tests", function () {
279
278
  });
280
279
  test("Menu key events - Arrow up moves the focus to the previous menu item", function () {
281
280
  var onSelectOption = jest.fn();
282
-
283
281
  var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
284
- onSelectOption: onSelectOption,
285
- options: options,
286
- label: "dropdown-test"
287
- })),
288
- getByRole = _render11.getByRole;
289
-
282
+ onSelectOption: onSelectOption,
283
+ options: options,
284
+ label: "dropdown-test"
285
+ })),
286
+ getByRole = _render11.getByRole;
290
287
  _react2.fireEvent.keyDown(getByRole("button"), {
291
288
  key: "ArrowUp",
292
289
  code: "ArrowUp",
293
290
  keyCode: 38,
294
291
  charCode: 38
295
292
  });
296
-
297
- var menu = getByRole("menu");
298
-
299
- _react2.fireEvent.keyDown(menu, {
300
- key: "ArrowUp",
301
- code: "ArrowUp",
302
- keyCode: 38,
303
- charCode: 38
304
- });
305
-
306
- expect(document.activeElement === menu).toBeTruthy();
307
- expect(menu.getAttribute("aria-activedescendant")).toBe("option-2");
308
-
309
- _react2.fireEvent.keyDown(menu, {
310
- key: "Enter",
311
- code: "Enter",
312
- keyCode: 13,
313
- charCode: 13
314
- });
315
-
316
- expect(onSelectOption).toHaveBeenCalledWith("3");
317
- });
318
- test("Menu key events - Arrow up, if focus is on the first menu item, moves focus to the last menu item.", function () {
319
- var onSelectOption = jest.fn();
320
-
321
- var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
322
- onSelectOption: onSelectOption,
323
- options: options,
324
- label: "dropdown-test"
325
- })),
326
- getByRole = _render12.getByRole;
327
-
328
- _userEvent["default"].click(getByRole("button"));
329
-
330
293
  var menu = getByRole("menu");
331
-
332
294
  _react2.fireEvent.keyDown(menu, {
333
295
  key: "ArrowUp",
334
296
  code: "ArrowUp",
335
297
  keyCode: 38,
336
298
  charCode: 38
337
299
  });
338
-
339
- expect(document.activeElement === menu).toBeTruthy();
340
- expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
341
-
342
- _react2.fireEvent.keyDown(menu, {
343
- key: "Enter",
344
- code: "Enter",
345
- keyCode: 13,
346
- charCode: 13
347
- });
348
-
349
- expect(onSelectOption).toHaveBeenCalledWith("4");
350
- });
351
- test("Menu key events - Arrow down moves the focus to the next menu item", function () {
352
- var onSelectOption = jest.fn();
353
-
354
- var _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
355
- onSelectOption: onSelectOption,
356
- options: options,
357
- label: "dropdown-test"
358
- })),
359
- getByRole = _render13.getByRole;
360
-
361
- _userEvent["default"].click(getByRole("button"));
362
-
363
- var menu = getByRole("menu");
364
-
365
- _react2.fireEvent.keyDown(menu, {
366
- key: "ArrowDown",
367
- code: "ArrowDown",
368
- keyCode: 40,
369
- charCode: 40
370
- });
371
-
372
- _react2.fireEvent.keyDown(menu, {
373
- key: "ArrowDown",
374
- code: "ArrowDown",
375
- keyCode: 40,
376
- charCode: 40
377
- });
378
-
379
300
  expect(document.activeElement === menu).toBeTruthy();
380
301
  expect(menu.getAttribute("aria-activedescendant")).toBe("option-2");
381
-
382
302
  _react2.fireEvent.keyDown(menu, {
383
303
  key: "Enter",
384
304
  code: "Enter",
385
305
  keyCode: 13,
386
306
  charCode: 13
387
307
  });
388
-
389
308
  expect(onSelectOption).toHaveBeenCalledWith("3");
390
309
  });
310
+ test("Menu key events - Arrow up, if focus is on the first menu item, moves focus to the last menu item.", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
311
+ var onSelectOption, _render12, getByRole, menu;
312
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
313
+ while (1) switch (_context6.prev = _context6.next) {
314
+ case 0:
315
+ onSelectOption = jest.fn();
316
+ _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
317
+ onSelectOption: onSelectOption,
318
+ options: options,
319
+ label: "dropdown-test"
320
+ })), getByRole = _render12.getByRole;
321
+ _context6.next = 4;
322
+ return _userEvent["default"].click(getByRole("button"));
323
+ case 4:
324
+ menu = getByRole("menu");
325
+ _react2.fireEvent.keyDown(menu, {
326
+ key: "ArrowUp",
327
+ code: "ArrowUp",
328
+ keyCode: 38,
329
+ charCode: 38
330
+ });
331
+ expect(document.activeElement === menu).toBeTruthy();
332
+ expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
333
+ _react2.fireEvent.keyDown(menu, {
334
+ key: "Enter",
335
+ code: "Enter",
336
+ keyCode: 13,
337
+ charCode: 13
338
+ });
339
+ expect(onSelectOption).toHaveBeenCalledWith("4");
340
+ case 10:
341
+ case "end":
342
+ return _context6.stop();
343
+ }
344
+ }, _callee6);
345
+ })));
346
+ test("Menu key events - Arrow down moves the focus to the next menu item", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
347
+ var onSelectOption, _render13, getByRole, menu;
348
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
349
+ while (1) switch (_context7.prev = _context7.next) {
350
+ case 0:
351
+ onSelectOption = jest.fn();
352
+ _render13 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
353
+ onSelectOption: onSelectOption,
354
+ options: options,
355
+ label: "dropdown-test"
356
+ })), getByRole = _render13.getByRole;
357
+ _context7.next = 4;
358
+ return _userEvent["default"].click(getByRole("button"));
359
+ case 4:
360
+ menu = getByRole("menu");
361
+ _react2.fireEvent.keyDown(menu, {
362
+ key: "ArrowDown",
363
+ code: "ArrowDown",
364
+ keyCode: 40,
365
+ charCode: 40
366
+ });
367
+ _react2.fireEvent.keyDown(menu, {
368
+ key: "ArrowDown",
369
+ code: "ArrowDown",
370
+ keyCode: 40,
371
+ charCode: 40
372
+ });
373
+ expect(document.activeElement === menu).toBeTruthy();
374
+ expect(menu.getAttribute("aria-activedescendant")).toBe("option-2");
375
+ _react2.fireEvent.keyDown(menu, {
376
+ key: "Enter",
377
+ code: "Enter",
378
+ keyCode: 13,
379
+ charCode: 13
380
+ });
381
+ expect(onSelectOption).toHaveBeenCalledWith("3");
382
+ case 11:
383
+ case "end":
384
+ return _context7.stop();
385
+ }
386
+ }, _callee7);
387
+ })));
391
388
  test("Menu key events - Arrow down, if focus is on the last menu item, moves focus to the first menu item. ", function () {
392
389
  var onSelectOption = jest.fn();
393
-
394
390
  var _render14 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
395
- onSelectOption: onSelectOption,
396
- options: options,
397
- label: "dropdown-test"
398
- })),
399
- getByRole = _render14.getByRole;
400
-
391
+ onSelectOption: onSelectOption,
392
+ options: options,
393
+ label: "dropdown-test"
394
+ })),
395
+ getByRole = _render14.getByRole;
401
396
  _react2.fireEvent.keyDown(getByRole("button"), {
402
397
  key: "ArrowUp",
403
398
  code: "ArrowUp",
404
399
  keyCode: 38,
405
400
  charCode: 38
406
401
  });
407
-
408
402
  var menu = getByRole("menu");
409
-
410
403
  _react2.fireEvent.keyDown(menu, {
411
404
  key: "ArrowDown",
412
405
  code: "ArrowDown",
413
406
  keyCode: 40,
414
407
  charCode: 40
415
408
  });
416
-
417
409
  expect(document.activeElement === menu).toBeTruthy();
418
410
  expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
419
-
420
411
  _react2.fireEvent.keyDown(menu, {
421
412
  key: "Enter",
422
413
  code: "Enter",
423
414
  keyCode: 13,
424
415
  charCode: 13
425
416
  });
426
-
427
- expect(onSelectOption).toHaveBeenCalledWith("1");
428
- });
429
- test("Menu key events - Enter key selects the current focused item and closes the menu", function () {
430
- var onSelectOption = jest.fn();
431
-
432
- var _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
433
- onSelectOption: onSelectOption,
434
- options: options,
435
- label: "dropdown-test"
436
- })),
437
- getByRole = _render15.getByRole,
438
- queryByRole = _render15.queryByRole;
439
-
440
- _userEvent["default"].click(getByRole("button"));
441
-
442
- _react2.fireEvent.keyDown(getByRole("menu"), {
443
- key: "Enter",
444
- code: "Enter",
445
- keyCode: 13,
446
- charCode: 13
447
- });
448
-
449
417
  expect(onSelectOption).toHaveBeenCalledWith("1");
450
- expect(queryByRole("menu")).toBeFalsy();
451
- expect(document.activeElement === getByRole("button")).toBeTruthy();
452
- });
453
- test("Menu key events - Esc closes the menu and sets focus on the menu button", function () {
454
- var _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
455
- options: options,
456
- label: "dropdown-test"
457
- })),
458
- getByRole = _render16.getByRole,
459
- queryByRole = _render16.queryByRole;
460
-
461
- _userEvent["default"].click(getByRole("button"));
462
-
463
- _react2.fireEvent.keyDown(getByRole("menu"), {
464
- key: "Esc",
465
- code: "Esc",
466
- keyCode: 27,
467
- charCode: 27
468
- });
469
-
470
- expect(queryByRole("menu")).toBeFalsy();
471
- expect(document.activeElement === getByRole("button")).toBeTruthy();
472
418
  });
419
+ test("Menu key events - Enter key selects the current focused item and closes the menu", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
420
+ var onSelectOption, _render15, getByRole, queryByRole;
421
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
422
+ while (1) switch (_context8.prev = _context8.next) {
423
+ case 0:
424
+ onSelectOption = jest.fn();
425
+ _render15 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
426
+ onSelectOption: onSelectOption,
427
+ options: options,
428
+ label: "dropdown-test"
429
+ })), getByRole = _render15.getByRole, queryByRole = _render15.queryByRole;
430
+ _context8.next = 4;
431
+ return _userEvent["default"].click(getByRole("button"));
432
+ case 4:
433
+ _react2.fireEvent.keyDown(getByRole("menu"), {
434
+ key: "Enter",
435
+ code: "Enter",
436
+ keyCode: 13,
437
+ charCode: 13
438
+ });
439
+ expect(onSelectOption).toHaveBeenCalledWith("1");
440
+ expect(queryByRole("menu")).toBeFalsy();
441
+ expect(document.activeElement === getByRole("button")).toBeTruthy();
442
+ case 8:
443
+ case "end":
444
+ return _context8.stop();
445
+ }
446
+ }, _callee8);
447
+ })));
448
+ test("Menu key events - Esc closes the menu and sets focus on the menu button", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
449
+ var _render16, getByRole, queryByRole;
450
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
451
+ while (1) switch (_context9.prev = _context9.next) {
452
+ case 0:
453
+ _render16 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
454
+ options: options,
455
+ label: "dropdown-test"
456
+ })), getByRole = _render16.getByRole, queryByRole = _render16.queryByRole;
457
+ _context9.next = 3;
458
+ return _userEvent["default"].click(getByRole("button"));
459
+ case 3:
460
+ _react2.fireEvent.keyDown(getByRole("menu"), {
461
+ key: "Esc",
462
+ code: "Esc",
463
+ keyCode: 27,
464
+ charCode: 27
465
+ });
466
+ expect(queryByRole("menu")).toBeFalsy();
467
+ expect(document.activeElement === getByRole("button")).toBeTruthy();
468
+ case 6:
469
+ case "end":
470
+ return _context9.stop();
471
+ }
472
+ }, _callee9);
473
+ })));
473
474
  test("Menu key events - Home moves the focus to the first menu item", function () {
474
475
  var _render17 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
475
- options: options,
476
- label: "dropdown-test-1"
477
- })),
478
- getByRole = _render17.getByRole;
479
-
476
+ options: options,
477
+ label: "dropdown-test-1"
478
+ })),
479
+ getByRole = _render17.getByRole;
480
480
  _react2.fireEvent.keyDown(getByRole("button"), {
481
481
  key: "ArrowUp",
482
482
  code: "ArrowUp",
483
483
  keyCode: 38,
484
484
  charCode: 38
485
485
  });
486
-
487
486
  var menu = getByRole("menu");
488
487
  expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
489
-
490
488
  _react2.fireEvent.keyDown(menu, {
491
489
  key: "Home",
492
490
  code: "Home",
493
491
  keyCode: 36,
494
492
  charCode: 36
495
493
  });
496
-
497
494
  expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
498
495
  });
499
- test("Menu key events - End moves the focus to the last menu item", function () {
500
- var _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
501
- options: options,
502
- label: "dropdown-test-1"
503
- })),
504
- getByRole = _render18.getByRole;
505
-
506
- _userEvent["default"].click(getByRole("button"));
507
-
508
- var menu = getByRole("menu");
509
- expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
510
-
511
- _react2.fireEvent.keyDown(menu, {
512
- key: "End",
513
- code: "End",
514
- keyCode: 35,
515
- charCode: 35
516
- });
517
-
518
- expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
519
- });
496
+ test("Menu key events - End moves the focus to the last menu item", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
497
+ var _render18, getByRole, menu;
498
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
499
+ while (1) switch (_context10.prev = _context10.next) {
500
+ case 0:
501
+ _render18 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
502
+ options: options,
503
+ label: "dropdown-test-1"
504
+ })), getByRole = _render18.getByRole;
505
+ _context10.next = 3;
506
+ return _userEvent["default"].click(getByRole("button"));
507
+ case 3:
508
+ menu = getByRole("menu");
509
+ expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
510
+ _react2.fireEvent.keyDown(menu, {
511
+ key: "End",
512
+ code: "End",
513
+ keyCode: 35,
514
+ charCode: 35
515
+ });
516
+ expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
517
+ case 7:
518
+ case "end":
519
+ return _context10.stop();
520
+ }
521
+ }, _callee10);
522
+ })));
520
523
  test("Menu key events - PageUp moves the focus to the first menu item", function () {
521
524
  var _render19 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
522
- options: options,
523
- label: "dropdown-test-1"
524
- })),
525
- getByRole = _render19.getByRole;
526
-
525
+ options: options,
526
+ label: "dropdown-test-1"
527
+ })),
528
+ getByRole = _render19.getByRole;
527
529
  _react2.fireEvent.keyDown(getByRole("button"), {
528
530
  key: "ArrowUp",
529
531
  code: "ArrowUp",
530
532
  keyCode: 38,
531
533
  charCode: 38
532
534
  });
533
-
534
535
  var menu = getByRole("menu");
535
536
  expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
536
-
537
537
  _react2.fireEvent.keyDown(menu, {
538
538
  key: "PageUp",
539
539
  code: "PageUp",
540
540
  keyCode: 33,
541
541
  charCode: 33
542
542
  });
543
-
544
543
  expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
545
544
  });
546
- test("Menu key events - PageDown moves the focus to the last menu item", function () {
547
- var _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
548
- options: options,
549
- label: "dropdown-test-1"
550
- })),
551
- getByRole = _render20.getByRole;
552
-
553
- _userEvent["default"].click(getByRole("button"));
554
-
555
- var menu = getByRole("menu");
556
- expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
557
-
558
- _react2.fireEvent.keyDown(menu, {
559
- key: "PageDown",
560
- code: "PageDown",
561
- keyCode: 34,
562
- charCode: 34
563
- });
564
-
565
- expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
566
- });
567
- test("Menu key events - Tab closes the menu and sets focus to the next element", function () {
568
- var _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
569
- options: options,
570
- label: "dropdown-test-1"
571
- })),
572
- getByRole = _render21.getByRole,
573
- queryByRole = _render21.queryByRole;
574
-
575
- var dropdown = getByRole("button");
576
-
577
- _userEvent["default"].click(dropdown);
578
-
579
- expect(getByRole("menu")).toBeTruthy();
580
-
581
- _react2.fireEvent.keyDown(getByRole("menu"), {
582
- key: "Tab",
583
- code: "Tab",
584
- keyCode: 9,
585
- charCode: 9
586
- });
587
-
588
- expect(queryByRole("menu")).toBeFalsy();
589
- });
545
+ test("Menu key events - PageDown moves the focus to the last menu item", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
546
+ var _render20, getByRole, menu;
547
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
548
+ while (1) switch (_context11.prev = _context11.next) {
549
+ case 0:
550
+ _render20 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
551
+ options: options,
552
+ label: "dropdown-test-1"
553
+ })), getByRole = _render20.getByRole;
554
+ _context11.next = 3;
555
+ return _userEvent["default"].click(getByRole("button"));
556
+ case 3:
557
+ menu = getByRole("menu");
558
+ expect(menu.getAttribute("aria-activedescendant")).toBe("option-0");
559
+ _react2.fireEvent.keyDown(menu, {
560
+ key: "PageDown",
561
+ code: "PageDown",
562
+ keyCode: 34,
563
+ charCode: 34
564
+ });
565
+ expect(menu.getAttribute("aria-activedescendant")).toBe("option-3");
566
+ case 7:
567
+ case "end":
568
+ return _context11.stop();
569
+ }
570
+ }, _callee11);
571
+ })));
572
+ test("Menu key events - Tab closes the menu and sets focus to the next element", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
573
+ var _render21, getByRole, queryByRole, dropdown;
574
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
575
+ while (1) switch (_context12.prev = _context12.next) {
576
+ case 0:
577
+ _render21 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], {
578
+ options: options,
579
+ label: "dropdown-test-1"
580
+ })), getByRole = _render21.getByRole, queryByRole = _render21.queryByRole;
581
+ dropdown = getByRole("button");
582
+ _context12.next = 4;
583
+ return _userEvent["default"].click(dropdown);
584
+ case 4:
585
+ expect(getByRole("menu")).toBeTruthy();
586
+ _react2.fireEvent.keyDown(getByRole("menu"), {
587
+ key: "Tab",
588
+ code: "Tab",
589
+ keyCode: 9,
590
+ charCode: 9
591
+ });
592
+ expect(queryByRole("menu")).toBeFalsy();
593
+ case 7:
594
+ case "end":
595
+ return _context12.stop();
596
+ }
597
+ }, _callee12);
598
+ })));
590
599
  });