@dxc-technology/halstack-react 0.0.0-c680086 → 0.0.0-c702054
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/ThemeContext.d.ts +4 -9
- package/ThemeContext.js +32 -32
- package/accordion/Accordion.test.js +57 -0
- package/accordion-group/AccordionGroup.test.js +133 -0
- package/alert/Alert.test.js +92 -0
- package/badge/Badge.d.ts +4 -0
- package/badge/types.d.ts +4 -0
- package/badge/types.js +5 -0
- package/bleed/types.d.ts +24 -0
- package/box/Box.test.js +18 -0
- package/button/Button.test.js +35 -0
- package/card/Card.test.js +50 -0
- package/checkbox/Checkbox.test.js +65 -0
- package/chip/Chip.test.js +56 -0
- package/common/variables.js +0 -238
- package/date-input/DateInput.js +16 -20
- package/date-input/DateInput.stories.tsx +7 -7
- package/date-input/DateInput.test.js +492 -0
- package/date-input/types.d.ts +4 -0
- package/dialog/Dialog.test.js +40 -0
- package/dropdown/Dropdown.test.js +189 -0
- package/file-input/FileInput.test.js +457 -0
- package/footer/Footer.test.js +109 -0
- package/header/Header.test.js +63 -0
- package/heading/Heading.test.js +186 -0
- package/layout/ApplicationLayout.js +8 -2
- package/link/Link.test.js +91 -0
- package/main.d.ts +3 -6
- package/main.js +12 -36
- package/number-input/NumberInput.js +11 -18
- package/number-input/NumberInput.stories.tsx +5 -5
- package/number-input/NumberInput.test.js +508 -0
- package/number-input/types.d.ts +4 -0
- package/package.json +1 -1
- package/paginator/Paginator.test.js +266 -0
- package/password-input/PasswordInput.test.js +183 -0
- package/progress-bar/ProgressBar.test.js +65 -0
- package/radio/Radio.test.js +71 -0
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +24 -23
- package/radio-group/RadioGroup.js +39 -32
- package/radio-group/RadioGroup.stories.tsx +60 -39
- package/radio-group/RadioGroup.test.js +530 -83
- package/radio-group/types.d.ts +80 -2
- package/resultsetTable/ResultsetTable.test.js +306 -0
- package/row/types.d.ts +18 -0
- package/select/Icons.d.ts +10 -0
- package/select/Icons.js +93 -0
- package/select/Option.d.ts +4 -0
- package/select/Option.js +110 -0
- package/select/Select.js +82 -205
- package/select/Select.stories.tsx +91 -81
- package/select/Select.test.js +2016 -0
- package/select/types.d.ts +22 -1
- package/sidenav/Sidenav.test.js +56 -0
- package/slider/Slider.test.js +129 -0
- package/spinner/Spinner.test.js +64 -0
- package/stack/types.d.ts +15 -0
- package/switch/Switch.test.js +73 -0
- package/table/Table.test.js +26 -0
- package/tabs/Tabs.test.js +123 -0
- package/tag/Tag.js +12 -14
- package/tag/Tag.stories.tsx +12 -8
- package/tag/Tag.test.js +60 -0
- package/text-input/TextInput.js +8 -4
- package/text-input/TextInput.stories.tsx +30 -12
- package/text-input/TextInput.test.js +1725 -0
- package/text-input/types.d.ts +4 -0
- package/textarea/Textarea.js +8 -4
- package/textarea/Textarea.stories.jsx +33 -12
- package/textarea/Textarea.test.js +447 -0
- package/textarea/types.d.ts +4 -0
- package/toggle-group/ToggleGroup.test.js +125 -0
- package/wizard/Wizard.test.js +128 -0
- package/V3Select/V3Select.js +0 -455
- package/V3Select/index.d.ts +0 -27
- package/V3Textarea/V3Textarea.js +0 -260
- package/V3Textarea/index.d.ts +0 -27
- package/date/Date.js +0 -373
- package/date/index.d.ts +0 -27
- package/input-text/Icons.js +0 -22
- package/input-text/InputText.js +0 -611
- package/input-text/index.d.ts +0 -36
- package/toggle/Toggle.js +0 -186
- package/toggle/index.d.ts +0 -21
- package/upload/Upload.js +0 -201
- package/upload/buttons-upload/ButtonsUpload.js +0 -111
- package/upload/buttons-upload/Icons.js +0 -40
- package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
- package/upload/dragAndDropArea/Icons.js +0 -39
- package/upload/file-upload/FileToUpload.js +0 -115
- package/upload/file-upload/Icons.js +0 -66
- package/upload/files-upload/FilesToUpload.js +0 -109
- package/upload/index.d.ts +0 -15
- package/upload/transaction/Icons.js +0 -160
- package/upload/transaction/Transaction.js +0 -104
- package/upload/transactions/Transactions.js +0 -94
package/select/types.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ declare type CommonProps = {
|
|
|
53
53
|
/**
|
|
54
54
|
* An array of objects representing the selectable options.
|
|
55
55
|
*/
|
|
56
|
-
options
|
|
56
|
+
options: Option[] | OptionGroup[];
|
|
57
57
|
/**
|
|
58
58
|
* Helper text to be placed above the select.
|
|
59
59
|
*/
|
|
@@ -105,6 +105,10 @@ declare type SingleSelect = CommonProps & {
|
|
|
105
105
|
* option value.
|
|
106
106
|
*/
|
|
107
107
|
multiple?: false;
|
|
108
|
+
/**
|
|
109
|
+
* Initial value of the select, only when it is uncontrolled.
|
|
110
|
+
*/
|
|
111
|
+
defaultValue?: string;
|
|
108
112
|
/**
|
|
109
113
|
* Value of the select. If undefined, the component will be uncontrolled
|
|
110
114
|
* and the value will be managed internally by the component.
|
|
@@ -137,6 +141,10 @@ declare type MultipleSelect = CommonProps & {
|
|
|
137
141
|
* option value.
|
|
138
142
|
*/
|
|
139
143
|
multiple: true;
|
|
144
|
+
/**
|
|
145
|
+
* Initial value of the select, only when it is uncontrolled.
|
|
146
|
+
*/
|
|
147
|
+
defaultValue?: string[];
|
|
140
148
|
/**
|
|
141
149
|
* Value of the select. If undefined, the component will be uncontrolled
|
|
142
150
|
* and the value will be managed internally by the component.
|
|
@@ -163,6 +171,19 @@ declare type MultipleSelect = CommonProps & {
|
|
|
163
171
|
}) => void;
|
|
164
172
|
};
|
|
165
173
|
declare type Props = SingleSelect | MultipleSelect;
|
|
174
|
+
/**
|
|
175
|
+
* Single option of the select component.
|
|
176
|
+
*/
|
|
177
|
+
export declare type OptionProps = {
|
|
178
|
+
id: string;
|
|
179
|
+
option: Option;
|
|
180
|
+
onClick: (option: Option) => void;
|
|
181
|
+
multiple: boolean;
|
|
182
|
+
visualFocused: boolean;
|
|
183
|
+
isGroupedOption: boolean;
|
|
184
|
+
isLastOption: boolean;
|
|
185
|
+
isSelected: boolean;
|
|
186
|
+
};
|
|
166
187
|
/**
|
|
167
188
|
* Reference to the component.
|
|
168
189
|
*/
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
|
|
9
|
+
var _Sidenav = _interopRequireDefault(require("./Sidenav"));
|
|
10
|
+
|
|
11
|
+
var navContent = /*#__PURE__*/_react["default"].createElement("p", null, "nav-content-test");
|
|
12
|
+
|
|
13
|
+
describe("Sidenav component tests", function () {
|
|
14
|
+
test("Sidenav renders nav content", function () {
|
|
15
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Sidenav["default"], null, navContent)),
|
|
16
|
+
getByText = _render.getByText;
|
|
17
|
+
|
|
18
|
+
expect(getByText("nav-content-test")).toBeTruthy();
|
|
19
|
+
});
|
|
20
|
+
test("Sidenav renders nav and page content in mobile version", function () {
|
|
21
|
+
//425 is mobile width
|
|
22
|
+
Object.defineProperty(HTMLElement.prototype, "offsetWidth", {
|
|
23
|
+
configurable: true,
|
|
24
|
+
value: 425
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Sidenav["default"], null, navContent)),
|
|
28
|
+
getByText = _render2.getByText;
|
|
29
|
+
|
|
30
|
+
expect(getByText("nav-content-test")).toBeTruthy();
|
|
31
|
+
});
|
|
32
|
+
test("Sidenav renders compound components", function () {
|
|
33
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Sidenav["default"], null, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Title, null, "test-title"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Subtitle, null, "test-subtitle"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
34
|
+
href: "#"
|
|
35
|
+
}, "test-link"))),
|
|
36
|
+
getByText = _render3.getByText;
|
|
37
|
+
|
|
38
|
+
expect(getByText("test-title")).toBeTruthy();
|
|
39
|
+
expect(getByText("test-subtitle")).toBeTruthy();
|
|
40
|
+
expect(getByText("test-link")).toBeTruthy();
|
|
41
|
+
});
|
|
42
|
+
test("Sidenav link onClick", function () {
|
|
43
|
+
var onClick = jest.fn();
|
|
44
|
+
|
|
45
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Sidenav["default"], null, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
|
|
46
|
+
onClick: onClick
|
|
47
|
+
}, "test-link"))),
|
|
48
|
+
getByText = _render4.getByText;
|
|
49
|
+
|
|
50
|
+
var link = getByText("test-link");
|
|
51
|
+
|
|
52
|
+
_react2.fireEvent.click(link);
|
|
53
|
+
|
|
54
|
+
expect(onClick).toHaveBeenCalled();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
|
|
9
|
+
var _Slider = _interopRequireDefault(require("./Slider"));
|
|
10
|
+
|
|
11
|
+
describe("Slider component tests", function () {
|
|
12
|
+
test("Slider renders with correct text", function () {
|
|
13
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
14
|
+
minValue: 0,
|
|
15
|
+
maxValue: 100,
|
|
16
|
+
showLimitsValues: true
|
|
17
|
+
})),
|
|
18
|
+
getByText = _render.getByText;
|
|
19
|
+
|
|
20
|
+
expect(getByText("0")).toBeTruthy();
|
|
21
|
+
expect(getByText("100")).toBeTruthy();
|
|
22
|
+
});
|
|
23
|
+
test("Calls correct function onChange in controlled slider", function () {
|
|
24
|
+
var onChange = jest.fn();
|
|
25
|
+
|
|
26
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
27
|
+
minValue: 0,
|
|
28
|
+
maxValue: 100,
|
|
29
|
+
onChange: onChange,
|
|
30
|
+
showLimitsValues: true,
|
|
31
|
+
value: 13,
|
|
32
|
+
showInput: true
|
|
33
|
+
})),
|
|
34
|
+
getByRole = _render2.getByRole;
|
|
35
|
+
|
|
36
|
+
(0, _react2.act)(function () {
|
|
37
|
+
_react2.fireEvent.change(getByRole("textbox"), {
|
|
38
|
+
target: {
|
|
39
|
+
value: 25
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
expect(onChange).toHaveBeenCalledWith(25);
|
|
44
|
+
});
|
|
45
|
+
test("Calls correct function onChange in uncontrolled slider", function () {
|
|
46
|
+
var onChange = jest.fn();
|
|
47
|
+
|
|
48
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
49
|
+
minValue: 0,
|
|
50
|
+
maxValue: 100,
|
|
51
|
+
onChange: onChange,
|
|
52
|
+
showLimitsValues: true,
|
|
53
|
+
showInput: true
|
|
54
|
+
})),
|
|
55
|
+
getByRole = _render3.getByRole;
|
|
56
|
+
|
|
57
|
+
(0, _react2.act)(function () {
|
|
58
|
+
_react2.fireEvent.change(getByRole("textbox"), {
|
|
59
|
+
target: {
|
|
60
|
+
value: 25
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
expect(onChange).toHaveBeenCalledWith(25);
|
|
65
|
+
});
|
|
66
|
+
test("Disabled slider have disabled input", function () {
|
|
67
|
+
var onChange = jest.fn();
|
|
68
|
+
|
|
69
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
70
|
+
minValue: 0,
|
|
71
|
+
maxValue: 100,
|
|
72
|
+
onChange: onChange,
|
|
73
|
+
showLimitsValues: true,
|
|
74
|
+
disabled: true,
|
|
75
|
+
showInput: true,
|
|
76
|
+
value: 13
|
|
77
|
+
})),
|
|
78
|
+
getByRole = _render4.getByRole;
|
|
79
|
+
|
|
80
|
+
(0, _react2.act)(function () {
|
|
81
|
+
_react2.fireEvent.change(getByRole("textbox"), {
|
|
82
|
+
target: {
|
|
83
|
+
value: 25
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
expect(getByRole("textbox").hasAttribute("disabled")).toBeTruthy();
|
|
88
|
+
expect(getByRole("textbox").value).toBe("13");
|
|
89
|
+
});
|
|
90
|
+
test("Calls correct function onDragEnd", function () {
|
|
91
|
+
var onDragEnd = jest.fn();
|
|
92
|
+
|
|
93
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
94
|
+
minValue: 0,
|
|
95
|
+
maxValue: 100,
|
|
96
|
+
showLimitsValues: true,
|
|
97
|
+
showInput: true,
|
|
98
|
+
onDragEnd: onDragEnd,
|
|
99
|
+
value: 25
|
|
100
|
+
})),
|
|
101
|
+
getByRole = _render5.getByRole;
|
|
102
|
+
|
|
103
|
+
(0, _react2.act)(function () {
|
|
104
|
+
_react2.fireEvent.mouseDown(getByRole("slider"));
|
|
105
|
+
|
|
106
|
+
_react2.fireEvent.mouseUp(getByRole("slider"));
|
|
107
|
+
});
|
|
108
|
+
expect(onDragEnd).toHaveBeenCalled();
|
|
109
|
+
});
|
|
110
|
+
test("Calls correct function labelFormatCallback", function () {
|
|
111
|
+
var labelFormatCallback = jest.fn(function (x) {
|
|
112
|
+
return "".concat(x, "$");
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
|
|
116
|
+
minValue: 0,
|
|
117
|
+
maxValue: 100,
|
|
118
|
+
showLimitsValues: true,
|
|
119
|
+
showInput: true,
|
|
120
|
+
value: 25,
|
|
121
|
+
labelFormatCallback: labelFormatCallback
|
|
122
|
+
})),
|
|
123
|
+
getByText = _render6.getByText;
|
|
124
|
+
|
|
125
|
+
expect(getByText("0$")).toBeTruthy();
|
|
126
|
+
expect(getByText("100$")).toBeTruthy();
|
|
127
|
+
expect(labelFormatCallback).toHaveBeenCalledTimes(2);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
|
|
9
|
+
var _Spinner = _interopRequireDefault(require("./Spinner"));
|
|
10
|
+
|
|
11
|
+
describe("Spinner component tests", function () {
|
|
12
|
+
test("Spinner renders with correct label", function () {
|
|
13
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
|
|
14
|
+
label: "test-loading"
|
|
15
|
+
})),
|
|
16
|
+
getByText = _render.getByText;
|
|
17
|
+
|
|
18
|
+
expect(getByText("test-loading")).toBeTruthy();
|
|
19
|
+
});
|
|
20
|
+
test("Spinner shows value correctly", function () {
|
|
21
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
|
|
22
|
+
label: "test-loading",
|
|
23
|
+
value: 75,
|
|
24
|
+
showValue: true
|
|
25
|
+
})),
|
|
26
|
+
getByText = _render2.getByText;
|
|
27
|
+
|
|
28
|
+
expect(getByText("75%")).toBeTruthy();
|
|
29
|
+
});
|
|
30
|
+
test("Small spinner hides value and label correctly", function () {
|
|
31
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
|
|
32
|
+
mode: "small",
|
|
33
|
+
label: "test-loading",
|
|
34
|
+
value: 75,
|
|
35
|
+
showValue: true
|
|
36
|
+
})),
|
|
37
|
+
queryByText = _render3.queryByText;
|
|
38
|
+
|
|
39
|
+
expect(queryByText("test-loading")).toBeFalsy();
|
|
40
|
+
expect(queryByText("75%")).toBeFalsy();
|
|
41
|
+
});
|
|
42
|
+
test("Overlay spinner shows value and label correctly", function () {
|
|
43
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
|
|
44
|
+
mode: "overlay",
|
|
45
|
+
label: "test-loading",
|
|
46
|
+
value: 75,
|
|
47
|
+
showValue: true
|
|
48
|
+
})),
|
|
49
|
+
getByText = _render4.getByText;
|
|
50
|
+
|
|
51
|
+
expect(getByText("test-loading")).toBeTruthy();
|
|
52
|
+
expect(getByText("75%")).toBeTruthy();
|
|
53
|
+
});
|
|
54
|
+
test("Get spinner by role", function () {
|
|
55
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
|
|
56
|
+
label: "test-loading",
|
|
57
|
+
value: 75,
|
|
58
|
+
showValue: true
|
|
59
|
+
})),
|
|
60
|
+
getByRole = _render5.getByRole;
|
|
61
|
+
|
|
62
|
+
expect(getByRole("progressbar")).toBeTruthy();
|
|
63
|
+
});
|
|
64
|
+
});
|
package/stack/types.d.ts
CHANGED
|
@@ -1,9 +1,24 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
declare type Props = {
|
|
3
|
+
/**
|
|
4
|
+
* Space applied between each child.
|
|
5
|
+
*/
|
|
3
6
|
gutter?: "none" | "xxxsmall" | "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge" | "xxxlarge";
|
|
7
|
+
/**
|
|
8
|
+
* If true, a divider is shown between children.
|
|
9
|
+
*/
|
|
4
10
|
divider?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Alignment applied to children.
|
|
13
|
+
*/
|
|
5
14
|
align?: "start" | "center" | "end" | "baseline" | "stretch";
|
|
15
|
+
/**
|
|
16
|
+
* Specifies the HTML tag or component that is rendered as the wrapper element.
|
|
17
|
+
*/
|
|
6
18
|
as?: React.ElementType;
|
|
19
|
+
/**
|
|
20
|
+
* Custom content inside the stack.
|
|
21
|
+
*/
|
|
7
22
|
children: React.ReactNode;
|
|
8
23
|
};
|
|
9
24
|
export default Props;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
|
|
9
|
+
var _Switch = _interopRequireDefault(require("./Switch"));
|
|
10
|
+
|
|
11
|
+
describe("Switch component tests", function () {
|
|
12
|
+
test("Switch renders with correct text", function () {
|
|
13
|
+
var onChange = jest.fn(function (returnedValue) {
|
|
14
|
+
expect(returnedValue).toBe(true);
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
18
|
+
label: "SwitchComponent",
|
|
19
|
+
checked: false,
|
|
20
|
+
onChange: onChange
|
|
21
|
+
})),
|
|
22
|
+
getByText = _render.getByText;
|
|
23
|
+
|
|
24
|
+
expect(getByText("SwitchComponent")).toBeTruthy();
|
|
25
|
+
});
|
|
26
|
+
test("Calls correct function on click", function () {
|
|
27
|
+
var onChange = jest.fn();
|
|
28
|
+
|
|
29
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
30
|
+
label: "SwitchComponent",
|
|
31
|
+
checked: false,
|
|
32
|
+
onChange: onChange
|
|
33
|
+
})),
|
|
34
|
+
getByText = _render2.getByText;
|
|
35
|
+
|
|
36
|
+
_react2.fireEvent.click(getByText("SwitchComponent"));
|
|
37
|
+
|
|
38
|
+
expect(onChange).toHaveBeenCalled();
|
|
39
|
+
});
|
|
40
|
+
test("Everytime the user clicks the component the onchange function is called with the correct value CONTROLLED COMPONENT", function () {
|
|
41
|
+
var onChange = jest.fn();
|
|
42
|
+
|
|
43
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
44
|
+
label: "SwitchComponent",
|
|
45
|
+
checked: false,
|
|
46
|
+
onChange: onChange
|
|
47
|
+
})),
|
|
48
|
+
getByText = _render3.getByText;
|
|
49
|
+
|
|
50
|
+
_react2.fireEvent.click(getByText("SwitchComponent"));
|
|
51
|
+
|
|
52
|
+
_react2.fireEvent.click(getByText("SwitchComponent"));
|
|
53
|
+
|
|
54
|
+
expect(onChange.mock.calls[0][0]).toBe(true);
|
|
55
|
+
expect(onChange.mock.calls[1][0]).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
test("Everytime the user clicks the component the onchange function is called with the correct value UNCONTROLLED COMPONENT", function () {
|
|
58
|
+
var onChange = jest.fn();
|
|
59
|
+
|
|
60
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
61
|
+
label: "SwitchComponent",
|
|
62
|
+
onChange: onChange
|
|
63
|
+
})),
|
|
64
|
+
getByText = _render4.getByText;
|
|
65
|
+
|
|
66
|
+
_react2.fireEvent.click(getByText("SwitchComponent"));
|
|
67
|
+
|
|
68
|
+
_react2.fireEvent.click(getByText("SwitchComponent"));
|
|
69
|
+
|
|
70
|
+
expect(onChange.mock.calls[0][0]).toBe(true);
|
|
71
|
+
expect(onChange.mock.calls[1][0]).toBe(false);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
|
|
9
|
+
var _Table = _interopRequireDefault(require("./Table"));
|
|
10
|
+
|
|
11
|
+
describe("Table component tests", function () {
|
|
12
|
+
test("Table renders with correct content", function () {
|
|
13
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Table["default"], null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "header-1"), /*#__PURE__*/_react["default"].createElement("th", null, "header-2"), /*#__PURE__*/_react["default"].createElement("th", null, "header-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-1"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-2"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-4"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-5"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-6")))),
|
|
14
|
+
getByText = _render.getByText;
|
|
15
|
+
|
|
16
|
+
expect(getByText("header-1")).toBeTruthy();
|
|
17
|
+
expect(getByText("header-2")).toBeTruthy();
|
|
18
|
+
expect(getByText("header-3")).toBeTruthy();
|
|
19
|
+
expect(getByText("cell-1")).toBeTruthy();
|
|
20
|
+
expect(getByText("cell-2")).toBeTruthy();
|
|
21
|
+
expect(getByText("cell-3")).toBeTruthy();
|
|
22
|
+
expect(getByText("cell-4")).toBeTruthy();
|
|
23
|
+
expect(getByText("cell-5")).toBeTruthy();
|
|
24
|
+
expect(getByText("cell-6")).toBeTruthy();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
|
|
9
|
+
var _Tabs = _interopRequireDefault(require("./Tabs"));
|
|
10
|
+
|
|
11
|
+
var sampleTabs = [{
|
|
12
|
+
label: "Tab-1"
|
|
13
|
+
}, {
|
|
14
|
+
label: "Tab-2"
|
|
15
|
+
}, {
|
|
16
|
+
label: "Tab-3"
|
|
17
|
+
}];
|
|
18
|
+
var sampleTabsWithBadge = [{
|
|
19
|
+
label: "Tab-1",
|
|
20
|
+
notificationNumber: "10"
|
|
21
|
+
}, {
|
|
22
|
+
label: "Tab-2",
|
|
23
|
+
notificationNumber: "20"
|
|
24
|
+
}, {
|
|
25
|
+
label: "Tab-3",
|
|
26
|
+
notificationNumber: "101"
|
|
27
|
+
}];
|
|
28
|
+
describe("Tabs component tests", function () {
|
|
29
|
+
test("Tabs render with correct labels", function () {
|
|
30
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
31
|
+
tabs: sampleTabs
|
|
32
|
+
})),
|
|
33
|
+
getByText = _render.getByText;
|
|
34
|
+
|
|
35
|
+
expect(getByText("Tab-1")).toBeTruthy();
|
|
36
|
+
expect(getByText("Tab-2")).toBeTruthy();
|
|
37
|
+
expect(getByText("Tab-3")).toBeTruthy();
|
|
38
|
+
});
|
|
39
|
+
test("Tabs render with correct labels and badges", function () {
|
|
40
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
41
|
+
tabs: sampleTabsWithBadge
|
|
42
|
+
})),
|
|
43
|
+
getByText = _render2.getByText;
|
|
44
|
+
|
|
45
|
+
expect(getByText("10")).toBeTruthy();
|
|
46
|
+
expect(getByText("20")).toBeTruthy();
|
|
47
|
+
expect(getByText("+99")).toBeTruthy();
|
|
48
|
+
});
|
|
49
|
+
test("Tabs render with correct icons", function () {
|
|
50
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
51
|
+
tabs: [{
|
|
52
|
+
label: "Tab-1",
|
|
53
|
+
icon: "/testIcon1.png"
|
|
54
|
+
}, {
|
|
55
|
+
label: "Tab-2",
|
|
56
|
+
icon: "/testIcon2.png"
|
|
57
|
+
}, {
|
|
58
|
+
label: "Tab-3",
|
|
59
|
+
icon: "/testIcon3.png"
|
|
60
|
+
}]
|
|
61
|
+
})),
|
|
62
|
+
getAllByRole = _render3.getAllByRole;
|
|
63
|
+
|
|
64
|
+
expect(getAllByRole("img")[0].getAttribute("src")).toBe("/testIcon1.png");
|
|
65
|
+
expect(getAllByRole("img")[1].getAttribute("src")).toBe("/testIcon2.png");
|
|
66
|
+
expect(getAllByRole("img")[2].getAttribute("src")).toBe("/testIcon3.png");
|
|
67
|
+
});
|
|
68
|
+
test("Tabs render with disabled tab", function () {
|
|
69
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
70
|
+
tabs: [{
|
|
71
|
+
label: "Tab-1",
|
|
72
|
+
isDisabled: true
|
|
73
|
+
}, {
|
|
74
|
+
label: "Tab-2"
|
|
75
|
+
}]
|
|
76
|
+
})),
|
|
77
|
+
getAllByRole = _render4.getAllByRole;
|
|
78
|
+
|
|
79
|
+
expect(getAllByRole("tab")[0].hasAttribute("disabled")).toBeTruthy();
|
|
80
|
+
expect(getAllByRole("tab")[1].hasAttribute("disabled")).toBeFalsy();
|
|
81
|
+
});
|
|
82
|
+
test("Uncontrolled tabs", function () {
|
|
83
|
+
var onTabClick = jest.fn();
|
|
84
|
+
|
|
85
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
86
|
+
tabs: sampleTabs,
|
|
87
|
+
onTabClick: onTabClick
|
|
88
|
+
})),
|
|
89
|
+
getByText = _render5.getByText;
|
|
90
|
+
|
|
91
|
+
var tab1 = getByText("Tab-1");
|
|
92
|
+
var tab2 = getByText("Tab-2");
|
|
93
|
+
|
|
94
|
+
_react2.fireEvent.click(tab2);
|
|
95
|
+
|
|
96
|
+
expect(onTabClick).toHaveBeenCalledWith(1);
|
|
97
|
+
|
|
98
|
+
_react2.fireEvent.click(tab1);
|
|
99
|
+
|
|
100
|
+
expect(onTabClick).toHaveBeenCalledWith(0);
|
|
101
|
+
});
|
|
102
|
+
test("Controlled tabs", function () {
|
|
103
|
+
var onTabClick = jest.fn();
|
|
104
|
+
|
|
105
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Tabs["default"], {
|
|
106
|
+
tabs: sampleTabs,
|
|
107
|
+
onTabClick: onTabClick,
|
|
108
|
+
activeTabIndex: 0
|
|
109
|
+
})),
|
|
110
|
+
getByText = _render6.getByText;
|
|
111
|
+
|
|
112
|
+
var tab2 = getByText("Tab-2");
|
|
113
|
+
var tab3 = getByText("Tab-3");
|
|
114
|
+
|
|
115
|
+
_react2.fireEvent.click(tab2);
|
|
116
|
+
|
|
117
|
+
expect(onTabClick).toHaveBeenCalledWith(1);
|
|
118
|
+
|
|
119
|
+
_react2.fireEvent.click(tab3);
|
|
120
|
+
|
|
121
|
+
expect(onTabClick).toHaveBeenCalledWith(2);
|
|
122
|
+
});
|
|
123
|
+
});
|
package/tag/Tag.js
CHANGED
|
@@ -27,7 +27,7 @@ var _utils = require("../common/utils.js");
|
|
|
27
27
|
|
|
28
28
|
var _Box = _interopRequireDefault(require("../box/Box"));
|
|
29
29
|
|
|
30
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7
|
|
30
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
|
|
31
31
|
|
|
32
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
33
|
|
|
@@ -66,11 +66,11 @@ var DxcTag = function DxcTag(_ref) {
|
|
|
66
66
|
shadowDepth: isHovered && (onClick || linkHref) && 2 || 1
|
|
67
67
|
}, /*#__PURE__*/_react["default"].createElement(TagContent, {
|
|
68
68
|
labelPosition: labelPosition
|
|
69
|
-
}, /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
69
|
+
}, icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
70
70
|
iconBgColor: iconBgColor
|
|
71
|
-
},
|
|
71
|
+
}, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(TagIcon, {
|
|
72
72
|
src: icon
|
|
73
|
-
}) : icon)
|
|
73
|
+
}) : icon), size !== "small" && label && /*#__PURE__*/_react["default"].createElement(TagLabel, null, label)));
|
|
74
74
|
|
|
75
75
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
76
76
|
theme: colorsTheme.tag
|
|
@@ -145,15 +145,7 @@ var StyledButton = _styledComponents["default"].button(_templateObject4 || (_tem
|
|
|
145
145
|
return props.theme.focusColor;
|
|
146
146
|
});
|
|
147
147
|
|
|
148
|
-
var
|
|
149
|
-
|
|
150
|
-
var TagIconContainer = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
|
|
151
|
-
return props.theme.iconWidth;
|
|
152
|
-
}, function (props) {
|
|
153
|
-
return props.theme.iconHeight;
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (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"])), function (_ref9) {
|
|
148
|
+
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 (_ref9) {
|
|
157
149
|
var iconBgColor = _ref9.iconBgColor;
|
|
158
150
|
return iconBgColor;
|
|
159
151
|
}, function (props) {
|
|
@@ -162,9 +154,15 @@ var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templ
|
|
|
162
154
|
return props.theme.iconColor;
|
|
163
155
|
}, function (props) {
|
|
164
156
|
return props.theme.iconSectionWidth;
|
|
157
|
+
}, function (props) {
|
|
158
|
+
return props.theme.iconWidth;
|
|
159
|
+
}, function (props) {
|
|
160
|
+
return props.theme.iconHeight;
|
|
165
161
|
});
|
|
166
162
|
|
|
167
|
-
var
|
|
163
|
+
var TagIcon = _styledComponents["default"].img(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])([""])));
|
|
164
|
+
|
|
165
|
+
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) {
|
|
168
166
|
return props.theme.fontFamily;
|
|
169
167
|
}, function (props) {
|
|
170
168
|
return props.theme.fontSize;
|
package/tag/Tag.stories.tsx
CHANGED
|
@@ -39,7 +39,10 @@ export const Chromatic = () => (
|
|
|
39
39
|
</ExampleContainer>
|
|
40
40
|
<ExampleContainer>
|
|
41
41
|
<Title title="With label and icon" theme="light" level={4} />
|
|
42
|
-
<DxcTag
|
|
42
|
+
<DxcTag
|
|
43
|
+
label="Tag"
|
|
44
|
+
icon="https://iconape.com/wp-content/files/yd/367773/svg/logo-linkedin-logo-icon-png-svg.png"
|
|
45
|
+
/>
|
|
43
46
|
</ExampleContainer>
|
|
44
47
|
<ExampleContainer>
|
|
45
48
|
<Title title="With right icon" theme="light" level={4} />
|
|
@@ -95,32 +98,33 @@ export const Chromatic = () => (
|
|
|
95
98
|
<Title title="Sizes" theme="light" level={2} />
|
|
96
99
|
<ExampleContainer>
|
|
97
100
|
<Title title="Small size" theme="light" level={4} />
|
|
98
|
-
<DxcTag label="Small" size="small" />
|
|
101
|
+
<DxcTag label="Small" size="small" icon={icon} />
|
|
99
102
|
</ExampleContainer>
|
|
100
103
|
<ExampleContainer>
|
|
101
104
|
<Title title="Medium size" theme="light" level={4} />
|
|
102
|
-
<DxcTag label="Medium size medium s" size="medium" />
|
|
105
|
+
<DxcTag label="Medium size medium s" size="medium" icon={icon} />
|
|
103
106
|
</ExampleContainer>
|
|
104
107
|
<ExampleContainer>
|
|
105
108
|
<Title title="Medium size with ellipsis" theme="light" level={4} />
|
|
106
|
-
<DxcTag label="Medium size medium si medium" size="medium" />
|
|
109
|
+
<DxcTag label="Medium size medium si medium" size="medium" icon={icon} />
|
|
107
110
|
</ExampleContainer>
|
|
108
111
|
<ExampleContainer>
|
|
109
112
|
<Title title="Large size" theme="light" level={4} />
|
|
110
|
-
<DxcTag label="Large size large size large size large size large size" size="large" />
|
|
113
|
+
<DxcTag label="Large size large size large size large size large size" size="large" icon={icon} />
|
|
111
114
|
</ExampleContainer>
|
|
112
115
|
<ExampleContainer>
|
|
113
116
|
<Title title="Large size with ellipsis" theme="light" level={4} />
|
|
114
|
-
<DxcTag label="Large size large size large size large size large size large size" size="large" />
|
|
117
|
+
<DxcTag label="Large size large size large size large size large size large size" size="large" icon={icon} />
|
|
115
118
|
</ExampleContainer>
|
|
116
119
|
<ExampleContainer>
|
|
117
120
|
<Title title="FillParent size" theme="light" level={4} />
|
|
118
|
-
<DxcTag label="FillParent" size="fillParent" />
|
|
121
|
+
<DxcTag label="FillParent" size="fillParent" icon={icon} />
|
|
119
122
|
</ExampleContainer>
|
|
120
123
|
<ExampleContainer>
|
|
121
124
|
<Title title="FitContent size" theme="light" level={4} />
|
|
122
|
-
<DxcTag label="FitContent" size="fitContent" />
|
|
125
|
+
<DxcTag label="FitContent" size="fitContent" icon={icon} />
|
|
123
126
|
</ExampleContainer>
|
|
127
|
+
<hr />
|
|
124
128
|
</>
|
|
125
129
|
);
|
|
126
130
|
|