@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.
- package/BackgroundColorContext.d.ts +2 -2
- package/BackgroundColorContext.js +5 -17
- package/HalstackContext.d.ts +26 -6
- package/HalstackContext.js +9 -34
- package/README.md +47 -0
- package/accordion/Accordion.js +21 -58
- package/accordion/Accordion.stories.tsx +1 -15
- package/accordion/Accordion.test.js +18 -33
- package/accordion/types.d.ts +5 -5
- package/accordion-group/AccordionGroup.js +15 -42
- package/accordion-group/AccordionGroup.stories.tsx +1 -1
- package/accordion-group/AccordionGroup.test.js +42 -60
- package/accordion-group/AccordionGroupAccordion.js +9 -21
- package/accordion-group/types.d.ts +6 -6
- package/alert/Alert.js +14 -46
- package/alert/Alert.test.js +28 -45
- package/alert/types.d.ts +5 -5
- package/badge/Badge.js +4 -17
- package/badge/types.d.ts +1 -1
- package/bleed/Bleed.js +13 -21
- package/bleed/types.d.ts +2 -2
- package/box/Box.js +10 -29
- package/box/Box.test.js +1 -6
- package/box/types.d.ts +3 -3
- package/bulleted-list/BulletedList.js +7 -33
- package/bulleted-list/BulletedList.stories.tsx +1 -91
- package/bulleted-list/types.d.ts +5 -5
- package/button/Button.js +23 -46
- package/button/Button.stories.tsx +5 -86
- package/button/Button.test.js +11 -21
- package/button/types.d.ts +4 -4
- package/card/Card.js +21 -44
- package/card/Card.test.js +10 -21
- package/card/types.d.ts +5 -5
- package/checkbox/Checkbox.js +81 -111
- package/checkbox/Checkbox.stories.tsx +16 -54
- package/checkbox/Checkbox.test.js +107 -63
- package/checkbox/types.d.ts +8 -4
- package/chip/Chip.js +12 -31
- package/chip/Chip.test.js +15 -28
- package/chip/types.d.ts +4 -4
- package/common/coreTokens.js +1 -2
- package/common/utils.js +2 -8
- package/common/variables.d.ts +23 -6
- package/common/variables.js +25 -15
- package/date-input/Calendar.js +13 -57
- package/date-input/DateInput.js +50 -96
- package/date-input/DateInput.stories.tsx +11 -30
- package/date-input/DateInput.test.js +674 -701
- package/date-input/DatePicker.js +11 -42
- package/date-input/Icons.d.ts +6 -6
- package/date-input/Icons.js +6 -23
- package/date-input/YearPicker.js +8 -34
- package/date-input/types.d.ts +27 -21
- package/dialog/Dialog.js +11 -35
- package/dialog/Dialog.test.js +125 -187
- package/dialog/types.d.ts +18 -13
- package/dropdown/Dropdown.js +39 -93
- package/dropdown/Dropdown.test.js +391 -378
- package/dropdown/DropdownMenu.js +8 -19
- package/dropdown/DropdownMenuItem.js +5 -17
- package/dropdown/types.d.ts +17 -19
- package/file-input/FileInput.js +131 -220
- package/file-input/FileInput.stories.tsx +1 -1
- package/file-input/FileInput.test.js +293 -342
- package/file-input/FileItem.js +12 -39
- package/file-input/types.d.ts +9 -9
- package/flex/Flex.js +25 -39
- package/flex/types.d.ts +6 -6
- package/footer/Footer.js +9 -39
- package/footer/Footer.stories.tsx +8 -7
- package/footer/Footer.test.js +18 -32
- package/footer/Icons.d.ts +2 -2
- package/footer/Icons.js +2 -7
- package/footer/types.d.ts +13 -13
- package/grid/Grid.js +1 -16
- package/grid/types.d.ts +10 -10
- package/header/Header.d.ts +1 -1
- package/header/Header.js +19 -64
- package/header/Header.test.js +12 -25
- package/header/Icons.d.ts +2 -2
- package/header/Icons.js +2 -7
- package/header/types.d.ts +5 -7
- package/heading/Heading.js +9 -31
- package/heading/Heading.test.js +70 -87
- package/heading/types.d.ts +7 -7
- package/image/Image.d.ts +4 -0
- package/image/Image.js +70 -0
- package/image/Image.stories.tsx +127 -0
- package/image/types.d.ts +72 -0
- package/inset/Inset.js +13 -21
- package/inset/types.d.ts +2 -2
- package/layout/ApplicationLayout.d.ts +1 -1
- package/layout/ApplicationLayout.js +25 -65
- package/layout/ApplicationLayout.stories.tsx +1 -1
- package/layout/Icons.d.ts +8 -5
- package/layout/Icons.js +51 -59
- package/layout/SidenavContext.d.ts +1 -1
- package/layout/SidenavContext.js +3 -9
- package/layout/types.d.ts +3 -3
- package/link/Link.js +21 -42
- package/link/Link.test.js +23 -41
- package/link/types.d.ts +14 -14
- package/main.d.ts +3 -2
- package/main.js +10 -51
- package/nav-tabs/NavTabs.js +11 -43
- package/nav-tabs/NavTabs.stories.tsx +1 -1
- package/nav-tabs/NavTabs.test.js +36 -43
- package/nav-tabs/Tab.js +16 -45
- package/nav-tabs/types.d.ts +9 -9
- package/number-input/NumberInput.d.ts +7 -0
- package/number-input/NumberInput.js +26 -35
- package/number-input/NumberInput.stories.tsx +42 -26
- package/number-input/NumberInput.test.js +700 -412
- package/number-input/types.d.ts +11 -5
- package/package.json +28 -26
- package/paginator/Icons.d.ts +5 -5
- package/paginator/Icons.js +5 -19
- package/paginator/Paginator.js +14 -39
- package/paginator/Paginator.test.js +224 -207
- package/paginator/types.d.ts +3 -3
- package/paragraph/Paragraph.js +3 -14
- package/paragraph/Paragraph.stories.tsx +0 -17
- package/password-input/Icons.d.ts +6 -0
- package/password-input/Icons.js +35 -0
- package/password-input/PasswordInput.js +57 -126
- package/password-input/PasswordInput.stories.tsx +1 -32
- package/password-input/PasswordInput.test.js +157 -140
- package/password-input/types.d.ts +8 -7
- package/progress-bar/ProgressBar.js +16 -42
- package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +1 -1
- package/progress-bar/ProgressBar.test.js +35 -52
- package/progress-bar/types.d.ts +3 -3
- package/quick-nav/QuickNav.js +4 -27
- package/quick-nav/QuickNav.stories.tsx +1 -1
- package/quick-nav/types.d.ts +10 -10
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +22 -54
- package/radio-group/RadioGroup.js +37 -83
- package/radio-group/RadioGroup.stories.tsx +10 -10
- package/radio-group/RadioGroup.test.js +504 -470
- package/radio-group/types.d.ts +8 -8
- package/resultset-table/Icons.d.ts +7 -0
- package/{resultsetTable → resultset-table}/Icons.js +1 -5
- package/{resultsetTable → resultset-table}/ResultsetTable.js +22 -58
- package/{resultsetTable → resultset-table}/ResultsetTable.test.js +72 -92
- package/{resultsetTable → resultset-table}/types.d.ts +7 -7
- package/select/Icons.d.ts +7 -7
- package/select/Icons.js +1 -5
- package/select/Listbox.js +13 -39
- package/select/Option.js +9 -26
- package/select/Select.js +54 -138
- package/select/Select.stories.tsx +3 -3
- package/select/Select.test.js +1906 -1800
- package/select/types.d.ts +14 -15
- package/sidenav/Icons.d.ts +4 -4
- package/sidenav/Icons.js +1 -5
- package/sidenav/Sidenav.js +24 -63
- package/sidenav/Sidenav.test.js +3 -10
- package/sidenav/types.d.ts +18 -18
- package/slider/Slider.js +38 -86
- package/slider/Slider.test.js +107 -103
- package/slider/types.d.ts +4 -4
- package/spinner/Spinner.js +10 -40
- package/spinner/Spinner.test.js +25 -34
- package/spinner/types.d.ts +3 -3
- package/switch/Switch.js +26 -69
- package/switch/Switch.stories.tsx +0 -34
- package/switch/Switch.test.js +51 -96
- package/switch/types.d.ts +4 -4
- package/table/Table.js +4 -23
- package/table/Table.test.js +1 -6
- package/table/types.d.ts +8 -8
- package/tabs/Tab.js +10 -29
- package/tabs/Tabs.js +48 -124
- package/tabs/Tabs.test.js +62 -118
- package/tabs/types.d.ts +19 -19
- package/tag/Tag.js +21 -51
- package/tag/Tag.test.js +19 -30
- package/tag/types.d.ts +7 -7
- package/text-input/Icons.d.ts +5 -5
- package/text-input/Icons.js +1 -5
- package/text-input/Suggestion.js +9 -26
- package/text-input/Suggestions.d.ts +1 -1
- package/text-input/Suggestions.js +12 -57
- package/text-input/TextInput.js +182 -263
- package/text-input/TextInput.stories.tsx +48 -152
- package/text-input/TextInput.test.js +1210 -1194
- package/text-input/types.d.ts +25 -17
- package/textarea/Textarea.js +60 -96
- package/textarea/{Textarea.stories.jsx → Textarea.stories.tsx} +58 -99
- package/textarea/Textarea.test.js +150 -179
- package/textarea/types.d.ts +9 -5
- package/toggle-group/ToggleGroup.js +91 -105
- package/toggle-group/ToggleGroup.stories.tsx +7 -4
- package/toggle-group/ToggleGroup.test.js +68 -87
- package/toggle-group/types.d.ts +26 -17
- package/typography/Typography.js +4 -13
- package/typography/types.d.ts +1 -1
- package/useTheme.d.ts +20 -3
- package/useTheme.js +1 -8
- package/useTranslatedLabels.js +1 -7
- package/utils/BaseTypography.d.ts +2 -2
- package/utils/BaseTypography.js +16 -30
- package/utils/FocusLock.js +12 -36
- package/wizard/Wizard.js +14 -49
- package/wizard/Wizard.test.js +53 -80
- package/wizard/types.d.ts +6 -6
- package/number-input/NumberInputContext.d.ts +0 -4
- package/number-input/NumberInputContext.js +0 -19
- package/number-input/numberInputContextTypes.d.ts +0 -19
- package/resultsetTable/Icons.d.ts +0 -7
- package/slider/Slider.stories.tsx +0 -240
- /package/{resultsetTable → image}/types.js +0 -0
- /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
- /package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +0 -0
- /package/{number-input/numberInputContextTypes.js → resultset-table/types.js} +0 -0
- /package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
- /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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
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
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
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
|
-
|
|
3
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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?: (
|
|
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?: (
|
|
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
|
|
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
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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;
|