@dxc-technology/halstack-react 10.0.0 → 11.0.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 (219) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +5 -17
  3. package/HalstackContext.d.ts +26 -6
  4. package/HalstackContext.js +9 -34
  5. package/README.md +47 -0
  6. package/accordion/Accordion.js +21 -58
  7. package/accordion/Accordion.stories.tsx +1 -15
  8. package/accordion/Accordion.test.js +18 -33
  9. package/accordion/types.d.ts +5 -5
  10. package/accordion-group/AccordionGroup.js +15 -42
  11. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  12. package/accordion-group/AccordionGroup.test.js +42 -60
  13. package/accordion-group/AccordionGroupAccordion.js +9 -21
  14. package/accordion-group/types.d.ts +6 -6
  15. package/alert/Alert.js +14 -46
  16. package/alert/Alert.test.js +28 -45
  17. package/alert/types.d.ts +5 -5
  18. package/badge/Badge.js +4 -17
  19. package/badge/types.d.ts +1 -1
  20. package/bleed/Bleed.js +13 -21
  21. package/bleed/types.d.ts +2 -2
  22. package/box/Box.js +10 -29
  23. package/box/Box.test.js +1 -6
  24. package/box/types.d.ts +3 -3
  25. package/bulleted-list/BulletedList.js +7 -33
  26. package/bulleted-list/BulletedList.stories.tsx +1 -91
  27. package/bulleted-list/types.d.ts +5 -5
  28. package/button/Button.js +23 -46
  29. package/button/Button.stories.tsx +5 -86
  30. package/button/Button.test.js +11 -21
  31. package/button/types.d.ts +4 -4
  32. package/card/Card.js +21 -44
  33. package/card/Card.test.js +10 -21
  34. package/card/types.d.ts +5 -5
  35. package/checkbox/Checkbox.js +81 -111
  36. package/checkbox/Checkbox.stories.tsx +16 -54
  37. package/checkbox/Checkbox.test.js +107 -63
  38. package/checkbox/types.d.ts +8 -4
  39. package/chip/Chip.js +12 -31
  40. package/chip/Chip.test.js +15 -28
  41. package/chip/types.d.ts +4 -4
  42. package/common/coreTokens.js +1 -2
  43. package/common/utils.js +2 -8
  44. package/common/variables.d.ts +23 -6
  45. package/common/variables.js +25 -15
  46. package/date-input/Calendar.js +13 -57
  47. package/date-input/DateInput.js +50 -96
  48. package/date-input/DateInput.stories.tsx +11 -30
  49. package/date-input/DateInput.test.js +674 -701
  50. package/date-input/DatePicker.js +11 -42
  51. package/date-input/Icons.d.ts +6 -6
  52. package/date-input/Icons.js +6 -23
  53. package/date-input/YearPicker.js +8 -34
  54. package/date-input/types.d.ts +27 -21
  55. package/dialog/Dialog.js +11 -35
  56. package/dialog/Dialog.test.js +125 -187
  57. package/dialog/types.d.ts +18 -13
  58. package/dropdown/Dropdown.js +39 -93
  59. package/dropdown/Dropdown.test.js +391 -378
  60. package/dropdown/DropdownMenu.js +8 -19
  61. package/dropdown/DropdownMenuItem.js +5 -17
  62. package/dropdown/types.d.ts +17 -19
  63. package/file-input/FileInput.js +131 -220
  64. package/file-input/FileInput.stories.tsx +1 -1
  65. package/file-input/FileInput.test.js +293 -342
  66. package/file-input/FileItem.js +12 -39
  67. package/file-input/types.d.ts +9 -9
  68. package/flex/Flex.js +25 -39
  69. package/flex/types.d.ts +6 -6
  70. package/footer/Footer.js +9 -39
  71. package/footer/Footer.stories.tsx +8 -7
  72. package/footer/Footer.test.js +18 -32
  73. package/footer/Icons.d.ts +2 -2
  74. package/footer/Icons.js +2 -7
  75. package/footer/types.d.ts +13 -13
  76. package/grid/Grid.js +1 -16
  77. package/grid/types.d.ts +10 -10
  78. package/header/Header.d.ts +1 -1
  79. package/header/Header.js +19 -64
  80. package/header/Header.test.js +12 -25
  81. package/header/Icons.d.ts +2 -2
  82. package/header/Icons.js +2 -7
  83. package/header/types.d.ts +5 -7
  84. package/heading/Heading.js +9 -31
  85. package/heading/Heading.test.js +70 -87
  86. package/heading/types.d.ts +7 -7
  87. package/image/Image.d.ts +4 -0
  88. package/image/Image.js +70 -0
  89. package/image/Image.stories.tsx +127 -0
  90. package/image/types.d.ts +72 -0
  91. package/inset/Inset.js +13 -21
  92. package/inset/types.d.ts +2 -2
  93. package/layout/ApplicationLayout.d.ts +1 -1
  94. package/layout/ApplicationLayout.js +25 -65
  95. package/layout/ApplicationLayout.stories.tsx +1 -1
  96. package/layout/Icons.d.ts +8 -5
  97. package/layout/Icons.js +51 -59
  98. package/layout/SidenavContext.d.ts +1 -1
  99. package/layout/SidenavContext.js +3 -9
  100. package/layout/types.d.ts +3 -3
  101. package/link/Link.js +21 -42
  102. package/link/Link.test.js +23 -41
  103. package/link/types.d.ts +14 -14
  104. package/main.d.ts +3 -2
  105. package/main.js +10 -51
  106. package/nav-tabs/NavTabs.js +11 -43
  107. package/nav-tabs/NavTabs.stories.tsx +1 -1
  108. package/nav-tabs/NavTabs.test.js +36 -43
  109. package/nav-tabs/Tab.js +16 -45
  110. package/nav-tabs/types.d.ts +9 -9
  111. package/number-input/NumberInput.d.ts +7 -0
  112. package/number-input/NumberInput.js +26 -35
  113. package/number-input/NumberInput.stories.tsx +42 -26
  114. package/number-input/NumberInput.test.js +700 -412
  115. package/number-input/types.d.ts +11 -5
  116. package/package.json +28 -26
  117. package/paginator/Icons.d.ts +5 -5
  118. package/paginator/Icons.js +5 -19
  119. package/paginator/Paginator.js +14 -39
  120. package/paginator/Paginator.test.js +224 -207
  121. package/paginator/types.d.ts +3 -3
  122. package/paragraph/Paragraph.js +3 -14
  123. package/paragraph/Paragraph.stories.tsx +0 -17
  124. package/password-input/Icons.d.ts +6 -0
  125. package/password-input/Icons.js +35 -0
  126. package/password-input/PasswordInput.js +57 -126
  127. package/password-input/PasswordInput.stories.tsx +1 -32
  128. package/password-input/PasswordInput.test.js +157 -140
  129. package/password-input/types.d.ts +8 -7
  130. package/progress-bar/ProgressBar.js +16 -42
  131. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +1 -1
  132. package/progress-bar/ProgressBar.test.js +35 -52
  133. package/progress-bar/types.d.ts +3 -3
  134. package/quick-nav/QuickNav.js +4 -27
  135. package/quick-nav/QuickNav.stories.tsx +1 -1
  136. package/quick-nav/types.d.ts +10 -10
  137. package/radio-group/Radio.d.ts +1 -1
  138. package/radio-group/Radio.js +22 -54
  139. package/radio-group/RadioGroup.js +37 -83
  140. package/radio-group/RadioGroup.stories.tsx +10 -10
  141. package/radio-group/RadioGroup.test.js +504 -470
  142. package/radio-group/types.d.ts +8 -8
  143. package/resultset-table/Icons.d.ts +7 -0
  144. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  145. package/{resultsetTable → resultset-table}/ResultsetTable.js +22 -58
  146. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +72 -92
  147. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  148. package/select/Icons.d.ts +7 -7
  149. package/select/Icons.js +1 -5
  150. package/select/Listbox.js +13 -39
  151. package/select/Option.js +9 -26
  152. package/select/Select.js +54 -138
  153. package/select/Select.stories.tsx +3 -3
  154. package/select/Select.test.js +1906 -1800
  155. package/select/types.d.ts +14 -15
  156. package/sidenav/Icons.d.ts +4 -4
  157. package/sidenav/Icons.js +1 -5
  158. package/sidenav/Sidenav.js +24 -63
  159. package/sidenav/Sidenav.test.js +3 -10
  160. package/sidenav/types.d.ts +18 -18
  161. package/slider/Slider.js +38 -86
  162. package/slider/Slider.test.js +107 -103
  163. package/slider/types.d.ts +4 -4
  164. package/spinner/Spinner.js +10 -40
  165. package/spinner/Spinner.test.js +25 -34
  166. package/spinner/types.d.ts +3 -3
  167. package/switch/Switch.js +26 -69
  168. package/switch/Switch.stories.tsx +0 -34
  169. package/switch/Switch.test.js +51 -96
  170. package/switch/types.d.ts +4 -4
  171. package/table/Table.js +4 -23
  172. package/table/Table.test.js +1 -6
  173. package/table/types.d.ts +8 -8
  174. package/tabs/Tab.js +10 -29
  175. package/tabs/Tabs.js +48 -124
  176. package/tabs/Tabs.test.js +62 -118
  177. package/tabs/types.d.ts +19 -19
  178. package/tag/Tag.js +21 -51
  179. package/tag/Tag.test.js +19 -30
  180. package/tag/types.d.ts +7 -7
  181. package/text-input/Icons.d.ts +5 -5
  182. package/text-input/Icons.js +1 -5
  183. package/text-input/Suggestion.js +9 -26
  184. package/text-input/Suggestions.d.ts +1 -1
  185. package/text-input/Suggestions.js +12 -57
  186. package/text-input/TextInput.js +182 -263
  187. package/text-input/TextInput.stories.tsx +48 -152
  188. package/text-input/TextInput.test.js +1210 -1194
  189. package/text-input/types.d.ts +25 -17
  190. package/textarea/Textarea.js +60 -96
  191. package/textarea/{Textarea.stories.jsx → Textarea.stories.tsx} +58 -99
  192. package/textarea/Textarea.test.js +150 -179
  193. package/textarea/types.d.ts +9 -5
  194. package/toggle-group/ToggleGroup.js +91 -105
  195. package/toggle-group/ToggleGroup.stories.tsx +7 -4
  196. package/toggle-group/ToggleGroup.test.js +68 -87
  197. package/toggle-group/types.d.ts +26 -17
  198. package/typography/Typography.js +4 -13
  199. package/typography/types.d.ts +1 -1
  200. package/useTheme.d.ts +20 -3
  201. package/useTheme.js +1 -8
  202. package/useTranslatedLabels.js +1 -7
  203. package/utils/BaseTypography.d.ts +2 -2
  204. package/utils/BaseTypography.js +16 -30
  205. package/utils/FocusLock.js +12 -36
  206. package/wizard/Wizard.js +14 -49
  207. package/wizard/Wizard.test.js +53 -80
  208. package/wizard/types.d.ts +6 -6
  209. package/number-input/NumberInputContext.d.ts +0 -4
  210. package/number-input/NumberInputContext.js +0 -19
  211. package/number-input/numberInputContextTypes.d.ts +0 -19
  212. package/resultsetTable/Icons.d.ts +0 -7
  213. package/slider/Slider.stories.tsx +0 -240
  214. /package/{resultsetTable → image}/types.js +0 -0
  215. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
  216. /package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +0 -0
  217. /package/{number-input/numberInputContextTypes.js → resultset-table/types.js} +0 -0
  218. /package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
  219. /package/table/{Table.stories.jsx → Table.stories.tsx} +0 -0
package/tabs/Tabs.test.js CHANGED
@@ -1,13 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _react = _interopRequireDefault(require("react"));
6
-
7
5
  var _react2 = require("@testing-library/react");
8
-
9
6
  var _Tabs = _interopRequireDefault(require("./Tabs.tsx"));
10
-
11
7
  var sampleTabs = [{
12
8
  label: "Tab-1"
13
9
  }, {
@@ -45,11 +41,10 @@ var sampleTabsLastTabNonDisabled = [{
45
41
  describe("Tabs component tests", function () {
46
42
  test("Tabs render with correct labels", function () {
47
43
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
48
- tabs: sampleTabs
49
- })),
50
- getByText = _render.getByText,
51
- getAllByRole = _render.getAllByRole;
52
-
44
+ tabs: sampleTabs
45
+ })),
46
+ getByText = _render.getByText,
47
+ getAllByRole = _render.getAllByRole;
53
48
  var tabs = getAllByRole("tab");
54
49
  expect(getByText("Tab-1")).toBeTruthy();
55
50
  expect(getByText("Tab-2")).toBeTruthy();
@@ -60,21 +55,19 @@ describe("Tabs component tests", function () {
60
55
  });
61
56
  test("Tabs render with correct labels and badges", function () {
62
57
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
63
- tabs: sampleTabsWithBadge
64
- })),
65
- getByText = _render2.getByText;
66
-
58
+ tabs: sampleTabsWithBadge
59
+ })),
60
+ getByText = _render2.getByText;
67
61
  expect(getByText("10")).toBeTruthy();
68
62
  expect(getByText("20")).toBeTruthy();
69
63
  expect(getByText("+99")).toBeTruthy();
70
64
  });
71
65
  test("Tabs render with an initially active tab", function () {
72
66
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
73
- defaultActiveTabIndex: 2,
74
- tabs: sampleTabsWithBadge
75
- })),
76
- getAllByRole = _render3.getAllByRole;
77
-
67
+ defaultActiveTabIndex: 2,
68
+ tabs: sampleTabsWithBadge
69
+ })),
70
+ getAllByRole = _render3.getAllByRole;
78
71
  var tabs = getAllByRole("tab");
79
72
  expect(tabs[0].getAttribute("aria-selected")).toBe("false");
80
73
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
@@ -82,60 +75,52 @@ describe("Tabs component tests", function () {
82
75
  });
83
76
  test("Tabs render with correct icons", function () {
84
77
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
85
- tabs: [{
86
- label: "Tab-1",
87
- icon: "/testIcon1.png"
88
- }, {
89
- label: "Tab-2",
90
- icon: "/testIcon2.png"
91
- }, {
92
- label: "Tab-3",
93
- icon: "/testIcon3.png"
94
- }]
95
- })),
96
- getAllByRole = _render4.getAllByRole;
97
-
78
+ tabs: [{
79
+ label: "Tab-1",
80
+ icon: "/testIcon1.png"
81
+ }, {
82
+ label: "Tab-2",
83
+ icon: "/testIcon2.png"
84
+ }, {
85
+ label: "Tab-3",
86
+ icon: "/testIcon3.png"
87
+ }]
88
+ })),
89
+ getAllByRole = _render4.getAllByRole;
98
90
  expect(getAllByRole("img")[0].getAttribute("src")).toBe("/testIcon1.png");
99
91
  expect(getAllByRole("img")[1].getAttribute("src")).toBe("/testIcon2.png");
100
92
  expect(getAllByRole("img")[2].getAttribute("src")).toBe("/testIcon3.png");
101
93
  });
102
94
  test("Tabs render with disabled tab", function () {
103
95
  var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
104
- tabs: [{
105
- label: "Tab-1",
106
- isDisabled: true
107
- }, {
108
- label: "Tab-2"
109
- }]
110
- })),
111
- getAllByRole = _render5.getAllByRole;
112
-
96
+ tabs: [{
97
+ label: "Tab-1",
98
+ isDisabled: true
99
+ }, {
100
+ label: "Tab-2"
101
+ }]
102
+ })),
103
+ getAllByRole = _render5.getAllByRole;
113
104
  expect(getAllByRole("tab")[0].hasAttribute("disabled")).toBeTruthy();
114
105
  expect(getAllByRole("tab")[1].hasAttribute("disabled")).toBeFalsy();
115
106
  });
116
107
  test("Uncontrolled tabs", function () {
117
108
  var onTabClick = jest.fn();
118
-
119
109
  var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
120
- tabs: sampleTabs,
121
- onTabClick: onTabClick
122
- })),
123
- getByText = _render6.getByText,
124
- getAllByRole = _render6.getAllByRole;
125
-
110
+ tabs: sampleTabs,
111
+ onTabClick: onTabClick
112
+ })),
113
+ getByText = _render6.getByText,
114
+ getAllByRole = _render6.getAllByRole;
126
115
  var tabs = getAllByRole("tab");
127
116
  var tab1 = getByText("Tab-1");
128
117
  var tab2 = getByText("Tab-2");
129
-
130
118
  _react2.fireEvent.click(tab2);
131
-
132
119
  expect(onTabClick).toHaveBeenCalledWith(1);
133
120
  expect(tabs[0].getAttribute("aria-selected")).toBe("false");
134
121
  expect(tabs[1].getAttribute("aria-selected")).toBe("true");
135
122
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
136
-
137
123
  _react2.fireEvent.click(tab1);
138
-
139
124
  expect(onTabClick).toHaveBeenCalledWith(0);
140
125
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
141
126
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
@@ -143,25 +128,19 @@ describe("Tabs component tests", function () {
143
128
  });
144
129
  test("Controlled tabs", function () {
145
130
  var onTabClick = jest.fn();
146
-
147
131
  var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
148
- tabs: sampleTabs,
149
- onTabClick: onTabClick,
150
- activeTabIndex: 0
151
- })),
152
- getAllByRole = _render7.getAllByRole;
153
-
132
+ tabs: sampleTabs,
133
+ onTabClick: onTabClick,
134
+ activeTabIndex: 0
135
+ })),
136
+ getAllByRole = _render7.getAllByRole;
154
137
  var tabs = getAllByRole("tab");
155
-
156
138
  _react2.fireEvent.click(tabs[1]);
157
-
158
139
  expect(onTabClick).toHaveBeenCalledWith(1);
159
140
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
160
141
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
161
142
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
162
-
163
143
  _react2.fireEvent.click(tabs[2]);
164
-
165
144
  expect(onTabClick).toHaveBeenCalledWith(2);
166
145
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
167
146
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
@@ -169,13 +148,11 @@ describe("Tabs component tests", function () {
169
148
  });
170
149
  test("Uncontrolled tabs should have focus in the first non-disabled tab", function () {
171
150
  var onTabClick = jest.fn();
172
-
173
151
  var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
174
- tabs: sampleTabsLastTabNonDisabled,
175
- onTabClick: onTabClick
176
- })),
177
- getAllByRole = _render8.getAllByRole;
178
-
152
+ tabs: sampleTabsLastTabNonDisabled,
153
+ onTabClick: onTabClick
154
+ })),
155
+ getAllByRole = _render8.getAllByRole;
179
156
  var tabs = getAllByRole("tab");
180
157
  expect(tabs[0].hasAttribute("disabled")).toBeTruthy();
181
158
  expect(tabs[1].hasAttribute("disabled")).toBeTruthy();
@@ -186,14 +163,12 @@ describe("Tabs component tests", function () {
186
163
  });
187
164
  test("Controlled tabs with active index in disabled tab should not change focus to the first available tab", function () {
188
165
  var onTabClick = jest.fn();
189
-
190
166
  var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
191
- tabs: sampleTabsLastTabNonDisabled,
192
- onTabClick: onTabClick,
193
- activeTabIndex: 0
194
- })),
195
- getAllByRole = _render9.getAllByRole;
196
-
167
+ tabs: sampleTabsLastTabNonDisabled,
168
+ onTabClick: onTabClick,
169
+ activeTabIndex: 0
170
+ })),
171
+ getAllByRole = _render9.getAllByRole;
197
172
  var tabs = getAllByRole("tab");
198
173
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
199
174
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
@@ -201,9 +176,7 @@ describe("Tabs component tests", function () {
201
176
  expect(tabs[0].hasAttribute("disabled")).toBeTruthy();
202
177
  expect(tabs[1].hasAttribute("disabled")).toBeTruthy();
203
178
  expect(tabs[2].hasAttribute("disabled")).toBeFalsy();
204
-
205
179
  _react2.fireEvent.click(tabs[2]);
206
-
207
180
  expect(onTabClick).toHaveBeenCalledWith(2);
208
181
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
209
182
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
@@ -214,99 +187,77 @@ describe("Tabs component tests", function () {
214
187
  });
215
188
  test("Select tabs with keyboard event arrows", function () {
216
189
  var onTabClick = jest.fn();
217
-
218
190
  var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
219
- tabs: sampleTabs,
220
- onTabClick: onTabClick
221
- })),
222
- getByText = _render10.getByText,
223
- getByRole = _render10.getByRole,
224
- getAllByRole = _render10.getAllByRole;
225
-
191
+ tabs: sampleTabs,
192
+ onTabClick: onTabClick
193
+ })),
194
+ getByText = _render10.getByText,
195
+ getByRole = _render10.getByRole,
196
+ getAllByRole = _render10.getAllByRole;
226
197
  var tabList = getByRole("tablist");
227
198
  var tab1 = getByText("Tab-1");
228
199
  var tabs = getAllByRole("tab");
229
-
230
200
  _react2.fireEvent.click(tab1);
231
-
232
201
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
233
202
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
234
203
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
235
204
  expect(onTabClick).toHaveBeenCalledWith(0);
236
-
237
205
  _react2.fireEvent.keyDown(tabList, {
238
206
  key: "ArrowRight"
239
207
  });
240
-
241
208
  _react2.fireEvent.keyDown(tabList, {
242
209
  key: "Enter"
243
210
  });
244
-
245
211
  expect(tabs[0].getAttribute("aria-selected")).toBe("false");
246
212
  expect(tabs[1].getAttribute("aria-selected")).toBe("true");
247
213
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
248
214
  expect(onTabClick).toHaveBeenCalledWith(1);
249
-
250
215
  _react2.fireEvent.keyDown(tabList, {
251
216
  key: "ArrowRight"
252
217
  });
253
-
254
218
  _react2.fireEvent.keyDown(tabList, {
255
219
  key: "Enter"
256
220
  });
257
-
258
221
  expect(tabs[0].getAttribute("aria-selected")).toBe("false");
259
222
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
260
223
  expect(tabs[2].getAttribute("aria-selected")).toBe("true");
261
224
  expect(onTabClick).toHaveBeenCalledWith(2);
262
-
263
225
  _react2.fireEvent.keyDown(tabList, {
264
226
  key: "ArrowLeft"
265
227
  });
266
-
267
228
  _react2.fireEvent.keyDown(tabList, {
268
229
  key: "Enter"
269
230
  });
270
-
271
231
  expect(tabs[0].getAttribute("aria-selected")).toBe("false");
272
232
  expect(tabs[1].getAttribute("aria-selected")).toBe("true");
273
233
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
274
234
  expect(onTabClick).toHaveBeenCalledWith(1);
275
-
276
235
  _react2.fireEvent.keyDown(tabList, {
277
236
  key: "ArrowLeft"
278
237
  });
279
-
280
238
  _react2.fireEvent.keyDown(tabList, {
281
239
  key: "Enter"
282
240
  });
283
-
284
241
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
285
242
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
286
243
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
287
244
  expect(onTabClick).toHaveBeenCalledWith(0);
288
-
289
245
  _react2.fireEvent.keyDown(tabList, {
290
246
  key: "ArrowLeft"
291
247
  });
292
-
293
248
  _react2.fireEvent.keyDown(tabList, {
294
249
  key: "Enter"
295
250
  });
296
-
297
251
  expect(tabs[0].getAttribute("aria-selected")).toBe("false");
298
252
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
299
253
  expect(tabs[2].getAttribute("aria-selected")).toBe("true");
300
254
  expect(onTabClick).toHaveBeenCalledWith(2);
301
-
302
255
  _react2.fireEvent.keyDown(tabList, {
303
256
  key: "ArrowRight"
304
257
  });
305
-
306
258
  _react2.fireEvent.keyDown(tabList, {
307
259
  key: "Enter"
308
260
  });
309
-
310
261
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
311
262
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
312
263
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
@@ -314,34 +265,27 @@ describe("Tabs component tests", function () {
314
265
  });
315
266
  test("Skip disabled tab with keyboard event arrows", function () {
316
267
  var onTabClick = jest.fn();
317
-
318
268
  var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
319
- tabs: sampleTabsMiddleDisabled,
320
- onTabClick: onTabClick
321
- })),
322
- getByText = _render11.getByText,
323
- getByRole = _render11.getByRole,
324
- getAllByRole = _render11.getAllByRole;
325
-
269
+ tabs: sampleTabsMiddleDisabled,
270
+ onTabClick: onTabClick
271
+ })),
272
+ getByText = _render11.getByText,
273
+ getByRole = _render11.getByRole,
274
+ getAllByRole = _render11.getAllByRole;
326
275
  var tabList = getByRole("tablist");
327
276
  var tab1 = getByText("Tab-1");
328
277
  var tabs = getAllByRole("tab");
329
-
330
278
  _react2.fireEvent.click(tab1);
331
-
332
279
  expect(tabs[0].getAttribute("aria-selected")).toBe("true");
333
280
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
334
281
  expect(tabs[2].getAttribute("aria-selected")).toBe("false");
335
282
  expect(onTabClick).toHaveBeenCalledWith(0);
336
-
337
283
  _react2.fireEvent.keyDown(tabList, {
338
284
  key: "ArrowRight"
339
285
  });
340
-
341
286
  _react2.fireEvent.keyDown(tabList, {
342
287
  key: " "
343
288
  });
344
-
345
289
  expect(tabs[0].getAttribute("aria-selected")).toBe("false");
346
290
  expect(tabs[1].getAttribute("aria-selected")).toBe("false");
347
291
  expect(tabs[2].getAttribute("aria-selected")).toBe("true");
package/tabs/types.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /// <reference types="react" />
2
- declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- declare type Margin = {
2
+ type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ type Margin = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
- declare type TabCommonProps = {
9
+ type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
+ type TabCommonProps = {
11
11
  /**
12
12
  * Whether the tab is disabled or not.
13
13
  */
@@ -21,7 +21,7 @@ declare type TabCommonProps = {
21
21
  */
22
22
  notificationNumber?: boolean | number;
23
23
  };
24
- export declare type TabLabelProps = TabCommonProps & {
24
+ export type TabLabelProps = TabCommonProps & {
25
25
  /**
26
26
  * Tab label.
27
27
  */
@@ -31,7 +31,7 @@ export declare type TabLabelProps = TabCommonProps & {
31
31
  */
32
32
  icon?: string | SVG;
33
33
  };
34
- export declare type TabIconProps = TabCommonProps & {
34
+ export type TabIconProps = TabCommonProps & {
35
35
  /**
36
36
  * Tab label.
37
37
  */
@@ -41,7 +41,7 @@ export declare type TabIconProps = TabCommonProps & {
41
41
  */
42
42
  icon: string | SVG;
43
43
  };
44
- export declare type TabProps = {
44
+ export type TabProps = {
45
45
  tab: TabLabelProps | TabIconProps;
46
46
  active: boolean;
47
47
  tabIndex: number;
@@ -51,15 +51,7 @@ export declare type TabProps = {
51
51
  onMouseEnter: () => void;
52
52
  onMouseLeave: () => void;
53
53
  };
54
- declare type Props = {
55
- /**
56
- * An array of objects representing the tabs.
57
- */
58
- tabs: (TabLabelProps | TabIconProps)[];
59
- /**
60
- * Whether the icon should appear above or to the left of the label.
61
- */
62
- iconPosition?: "top" | "left";
54
+ type Props = {
63
55
  /**
64
56
  * Initially active tab, only when it is uncontrolled.
65
57
  */
@@ -69,23 +61,31 @@ declare type Props = {
69
61
  * uncontrolled and the active tab will be managed internally by the component.
70
62
  */
71
63
  activeTabIndex?: number;
64
+ /**
65
+ * An array of objects representing the tabs.
66
+ */
67
+ tabs: (TabLabelProps | TabIconProps)[];
68
+ /**
69
+ * Whether the icon should appear above or to the left of the label.
70
+ */
71
+ iconPosition?: "top" | "left";
72
72
  /**
73
73
  * This function will be called when the user clicks on a tab. The index of the
74
74
  * clicked tab will be passed as a parameter.
75
75
  */
76
- onTabClick?: (tabIndex: number) => void;
76
+ onTabClick?: (index: number) => void;
77
77
  /**
78
78
  * This function will be called when the user hovers a tab.The index of the
79
79
  * hovered tab will be passed as a parameter.
80
80
  */
81
- onTabHover?: (tabIndex: number) => void;
81
+ onTabHover?: (index: number) => void;
82
82
  /**
83
83
  * Size of the margin to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
84
84
  * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
85
85
  */
86
86
  margin?: Space | Margin;
87
87
  /**
88
- * Value of the tabindex for each tab.
88
+ * Value of the tabindex attribute applied to each tab.
89
89
  */
90
90
  tabIndex?: number;
91
91
  };
package/tag/Tag.js CHANGED
@@ -1,66 +1,48 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
-
16
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
12
  var _react = _interopRequireWildcard(require("react"));
19
-
20
13
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
-
22
14
  var _variables = require("../common/variables");
23
-
24
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
26
16
  var _utils = require("../common/utils");
27
-
28
17
  var _Box = _interopRequireDefault(require("../box/Box"));
29
-
30
18
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
31
-
32
- 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); }
33
-
34
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
35
-
19
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
20
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
36
21
  var DxcTag = function DxcTag(_ref) {
37
22
  var icon = _ref.icon,
38
- _ref$label = _ref.label,
39
- label = _ref$label === void 0 ? "" : _ref$label,
40
- linkHref = _ref.linkHref,
41
- onClick = _ref.onClick,
42
- _ref$iconBgColor = _ref.iconBgColor,
43
- iconBgColor = _ref$iconBgColor === void 0 ? "#5f249f" : _ref$iconBgColor,
44
- _ref$labelPosition = _ref.labelPosition,
45
- labelPosition = _ref$labelPosition === void 0 ? "after" : _ref$labelPosition,
46
- _ref$newWindow = _ref.newWindow,
47
- newWindow = _ref$newWindow === void 0 ? false : _ref$newWindow,
48
- margin = _ref.margin,
49
- _ref$size = _ref.size,
50
- size = _ref$size === void 0 ? "fitContent" : _ref$size,
51
- _ref$tabIndex = _ref.tabIndex,
52
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
23
+ _ref$label = _ref.label,
24
+ label = _ref$label === void 0 ? "" : _ref$label,
25
+ linkHref = _ref.linkHref,
26
+ onClick = _ref.onClick,
27
+ _ref$iconBgColor = _ref.iconBgColor,
28
+ iconBgColor = _ref$iconBgColor === void 0 ? "#5f249f" : _ref$iconBgColor,
29
+ _ref$labelPosition = _ref.labelPosition,
30
+ labelPosition = _ref$labelPosition === void 0 ? "after" : _ref$labelPosition,
31
+ _ref$newWindow = _ref.newWindow,
32
+ newWindow = _ref$newWindow === void 0 ? false : _ref$newWindow,
33
+ margin = _ref.margin,
34
+ _ref$size = _ref.size,
35
+ size = _ref$size === void 0 ? "fitContent" : _ref$size,
36
+ _ref$tabIndex = _ref.tabIndex,
37
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
53
38
  var colorsTheme = (0, _useTheme["default"])();
54
-
55
39
  var _useState = (0, _react.useState)(false),
56
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
57
- isHovered = _useState2[0],
58
- changeIsHovered = _useState2[1];
59
-
40
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
41
+ isHovered = _useState2[0],
42
+ changeIsHovered = _useState2[1];
60
43
  var clickHandler = function clickHandler() {
61
44
  onClick && onClick();
62
45
  };
63
-
64
46
  var tagContent = /*#__PURE__*/_react["default"].createElement(_Box["default"], {
65
47
  size: size,
66
48
  shadowDepth: isHovered && (onClick || linkHref) && 2 || 1
@@ -69,7 +51,6 @@ var DxcTag = function DxcTag(_ref) {
69
51
  }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(TagIcon, {
70
52
  src: icon
71
53
  }) : icon), labelPosition === "after" && size !== "small" && label && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label)));
72
-
73
54
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
74
55
  theme: colorsTheme.tag
75
56
  }, /*#__PURE__*/_react["default"].createElement(StyledDxcTag, {
@@ -91,7 +72,6 @@ var DxcTag = function DxcTag(_ref) {
91
72
  target: newWindow ? "_blank" : "_self"
92
73
  }, tagContent) : tagContent));
93
74
  };
94
-
95
75
  var sizes = {
96
76
  small: "42px",
97
77
  medium: "240px",
@@ -99,11 +79,9 @@ var sizes = {
99
79
  fillParent: "100%",
100
80
  fitContent: "fit-content"
101
81
  };
102
-
103
82
  var calculateWidth = function calculateWidth(margin, size) {
104
83
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
105
84
  };
106
-
107
85
  var StyledDxcTag = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n cursor: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n width: ", ";\n height: ", ";\n"])), function (_ref2) {
108
86
  var hasAction = _ref2.hasAction;
109
87
  return hasAction && "pointer" || "unset";
@@ -127,19 +105,15 @@ var StyledDxcTag = _styledComponents["default"].div(_templateObject || (_templat
127
105
  }, function (props) {
128
106
  return props.theme.height;
129
107
  });
130
-
131
108
  var TagContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n width: 100%;\n height: ", ";\n"])), function (props) {
132
109
  return props.theme.height;
133
110
  });
134
-
135
111
  var StyledLink = _styledComponents["default"].a(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n text-decoration: none;\n border-radius: 4px;\n width: 100%;\n :focus {\n outline: 2px solid ", ";\n outline-offset: 0px;\n }\n"])), function (props) {
136
112
  return props.theme.focusColor;
137
113
  });
138
-
139
114
  var StyledButton = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n background: none;\n border-radius: 4px;\n border: none;\n padding: 0;\n cursor: pointer;\n font-family: inherit;\n width: 100%;\n :focus {\n outline: 2px solid ", ";\n }\n"])), function (props) {
140
115
  return props.theme.focusColor;
141
116
  });
142
-
143
117
  var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n background: ", ";\n width: ", ";\n height: 100%;\n justify-content: center;\n align-items: center;\n color: ", ";\n min-width: ", ";\n overflow: hidden;\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (_ref8) {
144
118
  var iconBgColor = _ref8.iconBgColor;
145
119
  return iconBgColor;
@@ -154,9 +128,7 @@ var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templ
154
128
  }, function (props) {
155
129
  return props.theme.iconHeight;
156
130
  });
157
-
158
131
  var TagIcon = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])([""])));
159
-
160
132
  var TagLabel = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n flex-grow: 1;\n text-align: center;\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n"])), function (props) {
161
133
  return props.theme.fontFamily;
162
134
  }, function (props) {
@@ -176,6 +148,4 @@ var TagLabel = _styledComponents["default"].div(_templateObject7 || (_templateOb
176
148
  }, function (props) {
177
149
  return props.theme.labelPaddingRight;
178
150
  });
179
-
180
- var _default = DxcTag;
181
- exports["default"] = _default;
151
+ var _default = exports["default"] = DxcTag;