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