@dxc-technology/halstack-react 0.0.0-c9b5c13 → 0.0.0-ca55cbe
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 +1 -1
- package/HalstackContext.d.ts +1329 -5
- package/HalstackContext.js +117 -77
- package/accordion/Accordion.js +118 -110
- package/accordion/Accordion.stories.tsx +104 -16
- package/accordion/Accordion.test.js +10 -11
- package/accordion/types.d.ts +2 -1
- package/accordion-group/AccordionGroup.js +4 -23
- package/accordion-group/AccordionGroup.stories.tsx +27 -1
- package/accordion-group/AccordionGroup.test.js +21 -46
- package/accordion-group/types.d.ts +8 -1
- package/alert/Alert.js +4 -6
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +1 -1
- package/bleed/Bleed.js +1 -34
- package/bleed/Bleed.stories.tsx +95 -95
- package/bleed/types.d.ts +1 -1
- package/box/Box.js +4 -6
- package/box/Box.stories.tsx +15 -0
- package/box/Box.test.js +1 -1
- package/box/types.d.ts +1 -0
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +125 -0
- package/bulleted-list/BulletedList.stories.tsx +206 -0
- package/bulleted-list/types.d.ts +11 -0
- package/button/Button.js +52 -73
- package/button/Button.stories.tsx +159 -8
- package/button/Button.test.js +1 -1
- package/button/types.d.ts +5 -5
- package/card/Card.js +12 -13
- package/card/Card.stories.tsx +12 -13
- package/card/Card.test.js +1 -1
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +94 -101
- package/checkbox/Checkbox.stories.tsx +131 -59
- package/checkbox/Checkbox.test.js +94 -17
- package/checkbox/types.d.ts +4 -0
- package/chip/Chip.js +18 -26
- package/chip/Chip.stories.tsx +96 -9
- package/chip/Chip.test.js +3 -5
- package/chip/types.d.ts +1 -1
- 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 +4 -4
- package/common/variables.d.ts +1482 -0
- package/common/variables.js +1009 -1118
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +258 -0
- package/date-input/DateInput.js +134 -237
- package/date-input/DateInput.stories.tsx +199 -33
- package/date-input/DateInput.test.js +494 -138
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +146 -0
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +75 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +126 -0
- package/date-input/types.d.ts +51 -0
- package/dialog/Dialog.js +80 -69
- package/dialog/Dialog.stories.tsx +230 -123
- package/dialog/Dialog.test.js +334 -5
- package/dialog/types.d.ts +1 -0
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +246 -249
- package/dropdown/Dropdown.stories.tsx +245 -56
- package/dropdown/Dropdown.test.js +507 -110
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +74 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +79 -0
- package/dropdown/types.d.ts +23 -3
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +174 -220
- package/file-input/FileInput.stories.tsx +122 -11
- package/file-input/FileInput.test.js +14 -14
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +39 -63
- package/file-input/types.d.ts +17 -0
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +71 -0
- package/flex/Flex.stories.tsx +112 -0
- package/flex/types.d.ts +97 -0
- package/footer/Footer.js +6 -8
- package/footer/Footer.stories.tsx +99 -1
- package/footer/Footer.test.js +14 -26
- package/footer/Icons.js +1 -1
- package/footer/types.d.ts +2 -1
- 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 +3 -2
- package/header/Header.js +89 -89
- package/header/Header.stories.tsx +152 -9
- package/header/Header.test.js +2 -2
- package/header/Icons.js +2 -2
- package/header/types.d.ts +1 -0
- package/heading/Heading.js +1 -1
- package/heading/Heading.test.js +1 -1
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +37 -36
- package/inset/types.d.ts +1 -1
- package/layout/ApplicationLayout.d.ts +15 -6
- package/layout/ApplicationLayout.js +38 -66
- package/layout/ApplicationLayout.stories.tsx +80 -44
- package/layout/types.d.ts +18 -29
- package/link/Link.js +4 -4
- package/link/Link.stories.tsx +73 -6
- package/link/Link.test.js +2 -4
- package/link/types.d.ts +3 -3
- package/main.d.ts +7 -9
- package/main.js +33 -49
- package/{tabs-nav → nav-tabs}/NavTabs.js +6 -6
- package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
- package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
- package/{tabs-nav → nav-tabs}/Tab.js +40 -22
- package/{tabs-nav → nav-tabs}/types.d.ts +1 -1
- package/number-input/NumberInput.test.js +44 -8
- package/package.json +17 -21
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +7 -15
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +78 -39
- package/paragraph/Paragraph.d.ts +5 -0
- package/paragraph/Paragraph.js +38 -0
- package/paragraph/Paragraph.stories.tsx +44 -0
- package/password-input/PasswordInput.test.js +14 -13
- package/progress-bar/ProgressBar.js +60 -54
- package/progress-bar/ProgressBar.stories.jsx +38 -3
- package/progress-bar/ProgressBar.test.js +68 -23
- package/quick-nav/QuickNav.js +25 -20
- package/quick-nav/QuickNav.stories.tsx +145 -26
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +43 -28
- package/radio-group/RadioGroup.js +23 -22
- package/radio-group/RadioGroup.stories.tsx +132 -18
- package/radio-group/RadioGroup.test.js +124 -97
- package/radio-group/types.d.ts +2 -2
- package/resultsetTable/Icons.d.ts +7 -0
- package/resultsetTable/Icons.js +51 -0
- package/resultsetTable/ResultsetTable.js +49 -108
- package/resultsetTable/ResultsetTable.stories.tsx +50 -25
- package/resultsetTable/ResultsetTable.test.js +61 -42
- package/resultsetTable/types.d.ts +1 -1
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +33 -16
- package/select/Option.js +11 -24
- package/select/Select.js +92 -71
- package/select/Select.stories.tsx +513 -136
- package/select/Select.test.js +413 -305
- package/select/types.d.ts +3 -6
- package/sidenav/Icons.d.ts +7 -0
- package/sidenav/Icons.js +51 -0
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +139 -48
- package/sidenav/Sidenav.stories.tsx +251 -151
- package/sidenav/Sidenav.test.js +25 -37
- package/sidenav/types.d.ts +52 -26
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +121 -97
- package/slider/Slider.stories.tsx +64 -1
- package/slider/Slider.test.js +122 -22
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.js +17 -23
- package/spinner/Spinner.stories.jsx +53 -27
- package/spinner/Spinner.test.js +1 -1
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +137 -70
- package/switch/Switch.stories.tsx +41 -30
- package/switch/Switch.test.js +145 -18
- package/switch/types.d.ts +4 -0
- package/table/Table.js +3 -3
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +2 -2
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +132 -0
- package/tabs/Tabs.js +358 -108
- package/tabs/Tabs.stories.tsx +119 -5
- package/tabs/Tabs.test.js +220 -10
- package/tabs/types.d.ts +13 -3
- package/tag/Tag.js +8 -10
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +1 -1
- package/tag/types.d.ts +1 -1
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +60 -0
- package/text-input/Suggestion.js +40 -11
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +198 -295
- package/text-input/TextInput.stories.tsx +280 -185
- package/text-input/TextInput.test.js +736 -725
- package/text-input/types.d.ts +22 -3
- package/textarea/Textarea.js +3 -4
- package/textarea/Textarea.stories.jsx +60 -1
- package/textarea/Textarea.test.js +2 -4
- package/toggle-group/ToggleGroup.js +7 -4
- package/toggle-group/ToggleGroup.stories.tsx +42 -0
- package/toggle-group/ToggleGroup.test.js +1 -1
- package/toggle-group/types.d.ts +2 -2
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +32 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/useTheme.d.ts +1234 -1
- package/useTheme.js +1 -1
- package/useTranslatedLabels.d.ts +84 -1
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +108 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +139 -0
- package/wizard/Wizard.js +10 -17
- package/wizard/Wizard.stories.tsx +40 -1
- package/wizard/Wizard.test.js +1 -1
- package/wizard/types.d.ts +3 -3
- package/common/RequiredComponent.js +0 -32
- package/list/List.d.ts +0 -4
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- package/list/types.d.ts +0 -7
- package/row/Row.d.ts +0 -3
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -237
- package/row/types.d.ts +0 -28
- package/stack/Stack.d.ts +0 -3
- package/stack/Stack.js +0 -97
- package/stack/Stack.stories.tsx +0 -164
- package/stack/types.d.ts +0 -24
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- /package/{list → bulleted-list}/types.js +0 -0
- /package/{row → flex}/types.js +0 -0
- /package/{stack → grid}/types.js +0 -0
- /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/types.js +0 -0
|
@@ -6,25 +6,39 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
|
|
7
7
|
var _react2 = require("@testing-library/react");
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
10
|
+
|
|
11
|
+
var _Checkbox = _interopRequireDefault(require("./Checkbox.tsx"));
|
|
10
12
|
|
|
11
13
|
describe("Checkbox component tests", function () {
|
|
12
|
-
test("Checkbox renders with correct
|
|
14
|
+
test("Checkbox renders with correct aria-labelledby and aria-required", function () {
|
|
13
15
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
14
16
|
label: "Checkbox"
|
|
15
17
|
})),
|
|
16
|
-
getByText = _render.getByText
|
|
18
|
+
getByText = _render.getByText,
|
|
19
|
+
getByRole = _render.getByRole;
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
var labelId = getByText("Checkbox").getAttribute("id");
|
|
22
|
+
expect(getByRole("checkbox").getAttribute("aria-labelledby")).toBe(labelId);
|
|
23
|
+
expect(getByRole("checkbox").getAttribute("aria-required")).toBe("true");
|
|
24
|
+
});
|
|
25
|
+
test("Optional checkbox renders with correct aria-required", function () {
|
|
26
|
+
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
27
|
+
label: "Checkbox",
|
|
28
|
+
optional: true
|
|
29
|
+
})),
|
|
30
|
+
getByRole = _render2.getByRole;
|
|
31
|
+
|
|
32
|
+
expect(getByRole("checkbox").getAttribute("aria-required")).toBe("false");
|
|
19
33
|
});
|
|
20
34
|
test("Calls correct function on click", function () {
|
|
21
35
|
var onChange = jest.fn();
|
|
22
36
|
|
|
23
|
-
var
|
|
37
|
+
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
24
38
|
label: "Checkbox",
|
|
25
39
|
onChange: onChange
|
|
26
40
|
})),
|
|
27
|
-
getByText =
|
|
41
|
+
getByText = _render3.getByText;
|
|
28
42
|
|
|
29
43
|
_react2.fireEvent.click(getByText("Checkbox"));
|
|
30
44
|
|
|
@@ -34,45 +48,108 @@ describe("Checkbox component tests", function () {
|
|
|
34
48
|
var onChange = jest.fn();
|
|
35
49
|
var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
36
50
|
label: "Checkbox",
|
|
37
|
-
onChange: onChange
|
|
51
|
+
onChange: onChange,
|
|
52
|
+
name: "test"
|
|
38
53
|
}));
|
|
39
54
|
var visibleCheckbox = component.getByText("Checkbox");
|
|
40
55
|
var input = component.getByRole("checkbox");
|
|
41
|
-
|
|
56
|
+
var submitInput = component.container.querySelector("input[name=\"test\"]");
|
|
57
|
+
expect(input.getAttribute("aria-checked")).toBe("false");
|
|
58
|
+
expect(submitInput.checked).toBe(false);
|
|
42
59
|
|
|
43
60
|
_react2.fireEvent.click(visibleCheckbox);
|
|
44
61
|
|
|
45
62
|
expect(onChange).toHaveBeenCalled();
|
|
46
63
|
expect(onChange).toHaveBeenCalledWith(true);
|
|
47
|
-
expect(input.checked).toBe(true);
|
|
64
|
+
expect(input.getAttribute("aria-checked")).toBe("true");
|
|
65
|
+
expect(submitInput.checked).toBe(true);
|
|
48
66
|
});
|
|
49
67
|
test("Controlled checkbox", function () {
|
|
50
68
|
var onChange = jest.fn();
|
|
51
69
|
var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
52
70
|
label: "Checkbox",
|
|
53
71
|
checked: false,
|
|
54
|
-
onChange: onChange
|
|
72
|
+
onChange: onChange,
|
|
73
|
+
name: "test"
|
|
55
74
|
}));
|
|
56
75
|
var input = component.getByRole("checkbox");
|
|
57
76
|
var visibleCheckbox = component.getByText("Checkbox");
|
|
77
|
+
var submitInput = component.container.querySelector("input[name=\"test\"]");
|
|
58
78
|
|
|
59
79
|
_react2.fireEvent.click(visibleCheckbox);
|
|
60
80
|
|
|
61
81
|
expect(onChange).toHaveBeenCalled();
|
|
62
82
|
expect(onChange).toHaveBeenCalledWith(true);
|
|
63
|
-
expect(input.checked).toBe(false);
|
|
83
|
+
expect(input.getAttribute("aria-checked")).toBe("false");
|
|
84
|
+
expect(submitInput.checked).toBe(false);
|
|
64
85
|
});
|
|
65
86
|
test("Renders with correct initial value and initial state when it is uncontrolled", function () {
|
|
66
|
-
var
|
|
87
|
+
var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
67
88
|
label: "Default label",
|
|
68
89
|
defaultChecked: true,
|
|
69
|
-
value: "test-defaultChecked"
|
|
90
|
+
value: "test-defaultChecked",
|
|
91
|
+
name: "test"
|
|
92
|
+
})),
|
|
93
|
+
getByRole = _render4.getByRole,
|
|
94
|
+
container = _render4.container;
|
|
95
|
+
|
|
96
|
+
var checkbox = getByRole("checkbox");
|
|
97
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
98
|
+
expect(submitInput.value).toBe("test-defaultChecked");
|
|
99
|
+
expect(checkbox.getAttribute("aria-checked")).toBe("true");
|
|
100
|
+
expect(submitInput.checked).toBe(true);
|
|
101
|
+
});
|
|
102
|
+
test("Test disable keyboard and mouse interactions", function () {
|
|
103
|
+
var onChange = jest.fn();
|
|
104
|
+
|
|
105
|
+
var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
106
|
+
label: "Checkbox",
|
|
107
|
+
onChange: onChange,
|
|
108
|
+
disabled: true,
|
|
109
|
+
name: "test"
|
|
70
110
|
})),
|
|
71
|
-
getByRole =
|
|
111
|
+
getByRole = _render5.getByRole,
|
|
112
|
+
getByText = _render5.getByText,
|
|
113
|
+
container = _render5.container;
|
|
72
114
|
|
|
73
115
|
var input = getByRole("checkbox");
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
116
|
+
var visibleCheckbox = getByText("Checkbox");
|
|
117
|
+
var submitInput = container.querySelector("input[name=\"test\"]");
|
|
118
|
+
|
|
119
|
+
_react2.fireEvent.click(visibleCheckbox);
|
|
120
|
+
|
|
121
|
+
expect(onChange).toHaveBeenCalledTimes(0);
|
|
122
|
+
expect(input.getAttribute("aria-checked")).toBe("false");
|
|
123
|
+
expect(input.getAttribute("aria-disabled")).toBe("true");
|
|
124
|
+
expect(submitInput.checked).toBe(false);
|
|
125
|
+
|
|
126
|
+
_userEvent["default"].tab();
|
|
127
|
+
|
|
128
|
+
expect(document.activeElement === input).toBeFalsy();
|
|
129
|
+
});
|
|
130
|
+
test("Test keyboard interactions", function () {
|
|
131
|
+
var onChange = jest.fn();
|
|
132
|
+
|
|
133
|
+
var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
|
|
134
|
+
label: "Checkbox",
|
|
135
|
+
name: "test",
|
|
136
|
+
onChange: onChange
|
|
137
|
+
})),
|
|
138
|
+
getByRole = _render6.getByRole;
|
|
139
|
+
|
|
140
|
+
var checkbox = getByRole("checkbox");
|
|
141
|
+
|
|
142
|
+
_userEvent["default"].tab();
|
|
143
|
+
|
|
144
|
+
expect(document.activeElement === checkbox).toBeTruthy();
|
|
145
|
+
|
|
146
|
+
_react2.fireEvent.keyDown(checkbox, {
|
|
147
|
+
key: " ",
|
|
148
|
+
code: "Space",
|
|
149
|
+
keyCode: 32,
|
|
150
|
+
charCode: 32
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
expect(onChange).toHaveBeenCalledWith(true);
|
|
77
154
|
});
|
|
78
155
|
});
|
package/checkbox/types.d.ts
CHANGED
package/chip/Chip.js
CHANGED
|
@@ -17,13 +17,13 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
17
17
|
|
|
18
18
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
19
19
|
|
|
20
|
-
var _variables = require("../common/variables
|
|
20
|
+
var _variables = require("../common/variables");
|
|
21
21
|
|
|
22
|
-
var _utils = require("../common/utils
|
|
22
|
+
var _utils = require("../common/utils");
|
|
23
23
|
|
|
24
24
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
25
|
|
|
26
|
-
var _templateObject, _templateObject2, _templateObject3
|
|
26
|
+
var _templateObject, _templateObject2, _templateObject3;
|
|
27
27
|
|
|
28
28
|
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); }
|
|
29
29
|
|
|
@@ -49,41 +49,31 @@ var DxcChip = function DxcChip(_ref) {
|
|
|
49
49
|
disabled: disabled,
|
|
50
50
|
prefixIcon: true,
|
|
51
51
|
label: label,
|
|
52
|
-
mode: "prefix",
|
|
53
52
|
tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
|
|
54
53
|
onClick: function onClick() {
|
|
55
54
|
return onClickPrefix && !disabled && onClickPrefix();
|
|
56
55
|
},
|
|
57
56
|
interactuable: typeof onClickPrefix === "function" && !disabled
|
|
58
|
-
}, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(
|
|
57
|
+
}, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
59
58
|
src: prefixIcon
|
|
60
59
|
}) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
|
|
61
60
|
disabled: disabled
|
|
62
61
|
}, label), suffixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
|
|
63
62
|
disabled: disabled,
|
|
64
63
|
suffixIcon: true,
|
|
65
|
-
mode: "suffix",
|
|
66
64
|
label: label,
|
|
67
65
|
tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
|
|
68
66
|
onClick: function onClick() {
|
|
69
67
|
return onClickSuffix && !disabled && onClickSuffix();
|
|
70
68
|
},
|
|
71
69
|
interactuable: typeof onClickSuffix === "function" && !disabled
|
|
72
|
-
}, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(
|
|
70
|
+
}, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
73
71
|
src: suffixIcon
|
|
74
72
|
}) : suffixIcon)));
|
|
75
73
|
};
|
|
76
74
|
|
|
77
75
|
var getCursor = function getCursor(interactuable, disabled) {
|
|
78
|
-
if (disabled)
|
|
79
|
-
return "cursor:not-allowed;";
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (interactuable) {
|
|
83
|
-
return "cursor:pointer;";
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return "cursor:default; outline:none;";
|
|
76
|
+
if (disabled) return "cursor: not-allowed;";else if (interactuable) return "cursor: pointer;";else return "cursor: default; outline:none;";
|
|
87
77
|
};
|
|
88
78
|
|
|
89
79
|
var StyledDxcChip = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n min-height: 40px;\n max-width: ", ";\n background-color: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n"])), function (_ref2) {
|
|
@@ -137,24 +127,26 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
|
|
|
137
127
|
return disabled && "not-allowed" || "default";
|
|
138
128
|
});
|
|
139
129
|
|
|
140
|
-
var
|
|
141
|
-
|
|
142
|
-
var PrefixIconContainer = _styledComponents["default"].img(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])([""])));
|
|
143
|
-
|
|
144
|
-
var IconContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n ", "\n ", "\n width: ", ";\n height: ", ";\n overflow: hidden;\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n ", "\n }\n"])), function (props) {
|
|
145
|
-
return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
|
|
146
|
-
}, function (props) {
|
|
130
|
+
var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n color: ", ";\n ", "\n\n &:hover {\n color: ", ";\n }\n &:focus {\n outline-color: ", ";\n outline-width: ", ";\n ", "\n }\n &:active {\n color: ", ";\n }\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
|
|
147
131
|
return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";");
|
|
132
|
+
}, function (props) {
|
|
133
|
+
return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
|
|
148
134
|
}, function (props) {
|
|
149
135
|
return getCursor(props.interactuable, props.disabled);
|
|
150
136
|
}, function (props) {
|
|
151
|
-
return props.theme.
|
|
137
|
+
return !props.disabled && props.theme.hoverIconColor;
|
|
152
138
|
}, function (props) {
|
|
153
|
-
return props.theme.
|
|
139
|
+
return !props.disabled && props.theme.focusColor;
|
|
154
140
|
}, function (props) {
|
|
155
|
-
return props.theme.
|
|
141
|
+
return !props.disabled && props.theme.focusBorderThickness;
|
|
156
142
|
}, function (props) {
|
|
157
143
|
return props.disabled && "outline: none;";
|
|
144
|
+
}, function (props) {
|
|
145
|
+
return !props.disabled && props.theme.activeIconColor;
|
|
146
|
+
}, function (props) {
|
|
147
|
+
return props.theme.iconSize;
|
|
148
|
+
}, function (props) {
|
|
149
|
+
return props.theme.iconSize;
|
|
158
150
|
});
|
|
159
151
|
|
|
160
152
|
var _default = DxcChip;
|
package/chip/Chip.stories.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import { userEvent, within } from "@storybook/testing-library";
|
|
|
3
3
|
import DxcChip from "./Chip";
|
|
4
4
|
import Title from "../../.storybook/components/Title";
|
|
5
5
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
6
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
6
7
|
|
|
7
8
|
export default {
|
|
8
9
|
title: "Chip",
|
|
@@ -10,12 +11,43 @@ export default {
|
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
const iconSVG = (
|
|
13
|
-
<svg
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
<svg
|
|
15
|
+
version="1.1"
|
|
16
|
+
id="Capa_1"
|
|
17
|
+
x="0px"
|
|
18
|
+
y="0px"
|
|
19
|
+
width="438.536px"
|
|
20
|
+
height="438.536px"
|
|
21
|
+
viewBox="0 0 438.536 438.536"
|
|
22
|
+
fill="currentColor"
|
|
23
|
+
>
|
|
24
|
+
<g>
|
|
25
|
+
<path
|
|
26
|
+
d="M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123
|
|
27
|
+
C8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126
|
|
28
|
+
h274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225
|
|
29
|
+
C438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402
|
|
30
|
+
c0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401
|
|
31
|
+
c-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
|
|
32
|
+
/>
|
|
33
|
+
</g>
|
|
16
34
|
</svg>
|
|
17
35
|
);
|
|
18
36
|
|
|
37
|
+
const smallIconSVG = (
|
|
38
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" height="20" width="20">
|
|
39
|
+
<path d="m10 17-1.042-.938q-2.083-1.854-3.437-3.177-1.354-1.323-2.136-2.354Q2.604 9.5 2.302 8.646 2 7.792 2 6.896q0-1.854 1.271-3.125T6.396 2.5q1.021 0 1.979.438.958.437 1.625 1.229.667-.792 1.625-1.229.958-.438 1.979-.438 1.854 0 3.125 1.271T18 6.896q0 .896-.292 1.729-.291.833-1.073 1.854-.781 1.021-2.145 2.365-1.365 1.344-3.49 3.26Zm0-2.021q1.938-1.729 3.188-2.948 1.25-1.219 1.989-2.125.74-.906 1.031-1.614.292-.709.292-1.396 0-1.229-.833-2.063Q14.833 4 13.604 4q-.729 0-1.364.302-.636.302-1.094.844L10.417 6h-.834l-.729-.854q-.458-.542-1.114-.844Q7.083 4 6.396 4q-1.229 0-2.063.833-.833.834-.833 2.063 0 .687.271 1.364.271.678.989 1.573.719.896 1.98 2.125Q8 13.188 10 14.979Zm0-5.5Z" />
|
|
40
|
+
</svg>
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
const opinionatedTheme = {
|
|
44
|
+
chip: {
|
|
45
|
+
baseColor: "#e6e6e6",
|
|
46
|
+
fontColor: "#000000",
|
|
47
|
+
iconColor: "#4d4d4d",
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
19
51
|
export const Chromatic = () => (
|
|
20
52
|
<>
|
|
21
53
|
<ExampleContainer>
|
|
@@ -23,20 +55,29 @@ export const Chromatic = () => (
|
|
|
23
55
|
<DxcChip label="Default Chip" />
|
|
24
56
|
</ExampleContainer>
|
|
25
57
|
<ExampleContainer>
|
|
26
|
-
<Title title="Chip with prefix" theme="light" level={4} />
|
|
27
|
-
<DxcChip label="Chip with prefix" prefixIcon={
|
|
58
|
+
<Title title="Chip with prefix SVG (small icon)" theme="light" level={4} />
|
|
59
|
+
<DxcChip label="Chip with prefix" prefixIcon={smallIconSVG} />
|
|
28
60
|
</ExampleContainer>
|
|
29
61
|
<ExampleContainer>
|
|
30
|
-
<Title title="Chip with suffix" theme="light" level={4} />
|
|
62
|
+
<Title title="Chip with suffix SVG (large icon)" theme="light" level={4} />
|
|
31
63
|
<DxcChip label="Chip with suffix" suffixIcon={iconSVG} />
|
|
32
64
|
</ExampleContainer>
|
|
33
65
|
<ExampleContainer>
|
|
34
|
-
<Title title="Chip with prefix and suffix" theme="light" level={4} />
|
|
35
|
-
<DxcChip
|
|
66
|
+
<Title title="Chip with prefix (SVG) and suffix (URL)" theme="light" level={4} />
|
|
67
|
+
<DxcChip
|
|
68
|
+
label="Chip with prefix and suffix"
|
|
69
|
+
prefixIcon={iconSVG}
|
|
70
|
+
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
71
|
+
/>
|
|
36
72
|
</ExampleContainer>
|
|
37
73
|
<ExampleContainer>
|
|
38
74
|
<Title title="Disabled chip" theme="light" level={4} />
|
|
39
|
-
<DxcChip
|
|
75
|
+
<DxcChip
|
|
76
|
+
label="Disabled"
|
|
77
|
+
disabled
|
|
78
|
+
prefixIcon={iconSVG}
|
|
79
|
+
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
80
|
+
/>
|
|
40
81
|
</ExampleContainer>
|
|
41
82
|
<ExampleContainer>
|
|
42
83
|
<Title title="Chip with ellipsis" theme="light" level={4} />
|
|
@@ -93,6 +134,52 @@ export const Chromatic = () => (
|
|
|
93
134
|
<Title title="Xxlarge margin" theme="light" level={4} />
|
|
94
135
|
<DxcChip label="xxlarge" margin="xxlarge" />
|
|
95
136
|
</ExampleContainer>
|
|
137
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
138
|
+
<ExampleContainer>
|
|
139
|
+
<Title title="Chip with prefix and suffix" theme="light" level={4} />
|
|
140
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
141
|
+
<DxcChip
|
|
142
|
+
label="Chip"
|
|
143
|
+
prefixIcon={iconSVG}
|
|
144
|
+
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
145
|
+
/>
|
|
146
|
+
</HalstackProvider>
|
|
147
|
+
</ExampleContainer>
|
|
148
|
+
<ExampleContainer>
|
|
149
|
+
<Title title="Chip with prefix and suffix" theme="light" level={4} />
|
|
150
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
151
|
+
<DxcChip
|
|
152
|
+
label="Chip"
|
|
153
|
+
disabled
|
|
154
|
+
prefixIcon={iconSVG}
|
|
155
|
+
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
156
|
+
/>
|
|
157
|
+
</HalstackProvider>
|
|
158
|
+
</ExampleContainer>
|
|
159
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
160
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
161
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
162
|
+
<DxcChip
|
|
163
|
+
label="Chip"
|
|
164
|
+
prefixIcon={iconSVG}
|
|
165
|
+
suffixIcon={iconSVG}
|
|
166
|
+
onClickPrefix={() => {}}
|
|
167
|
+
onClickSuffix={() => {}}
|
|
168
|
+
/>
|
|
169
|
+
</HalstackProvider>
|
|
170
|
+
</ExampleContainer>
|
|
171
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
172
|
+
<Title title="Actived" theme="light" level={4} />
|
|
173
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
174
|
+
<DxcChip
|
|
175
|
+
label="Chip"
|
|
176
|
+
prefixIcon={iconSVG}
|
|
177
|
+
suffixIcon={iconSVG}
|
|
178
|
+
onClickPrefix={() => {}}
|
|
179
|
+
onClickSuffix={() => {}}
|
|
180
|
+
/>
|
|
181
|
+
</HalstackProvider>
|
|
182
|
+
</ExampleContainer>
|
|
96
183
|
</>
|
|
97
184
|
);
|
|
98
185
|
const ChipPrefixFocused = () => (
|
package/chip/Chip.test.js
CHANGED
|
@@ -6,9 +6,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
|
|
7
7
|
var _react2 = require("@testing-library/react");
|
|
8
8
|
|
|
9
|
-
var _Chip = _interopRequireDefault(require("./Chip"));
|
|
10
|
-
|
|
11
|
-
var _invision = _interopRequireDefault(require("../../app/src/images/invision.svg"));
|
|
9
|
+
var _Chip = _interopRequireDefault(require("./Chip.tsx"));
|
|
12
10
|
|
|
13
11
|
describe("Chip component tests", function () {
|
|
14
12
|
test("Chip renders with correct text", function () {
|
|
@@ -24,7 +22,7 @@ describe("Chip component tests", function () {
|
|
|
24
22
|
|
|
25
23
|
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
|
|
26
24
|
label: "Chip",
|
|
27
|
-
prefixIcon:
|
|
25
|
+
prefixIcon: "https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png",
|
|
28
26
|
onClickPrefix: onClick
|
|
29
27
|
})),
|
|
30
28
|
getByText = _render2.getByText,
|
|
@@ -41,7 +39,7 @@ describe("Chip component tests", function () {
|
|
|
41
39
|
|
|
42
40
|
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
|
|
43
41
|
label: "Chip",
|
|
44
|
-
suffixIcon:
|
|
42
|
+
suffixIcon: "https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png",
|
|
45
43
|
onClickSuffix: onClick
|
|
46
44
|
})),
|
|
47
45
|
getByText = _render3.getByText,
|
package/chip/types.d.ts
CHANGED
package/common/OpenSans.css
CHANGED
|
@@ -1,81 +1,69 @@
|
|
|
1
|
+
@font-face {
|
|
2
|
+
font-family: "Open Sans";
|
|
3
|
+
src: url("./fonts/OpenSans-Light.ttf") format("truetype");
|
|
4
|
+
font-style: normal;
|
|
5
|
+
font-weight: 200;
|
|
6
|
+
}
|
|
1
7
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
@font-face {
|
|
67
|
-
font-family: 'Open Sans';
|
|
68
|
-
src: url('./fonts/OpenSans-BoldItalic.ttf')
|
|
69
|
-
format('truetype');
|
|
70
|
-
font-style: italic;
|
|
71
|
-
font-weight: 700;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
@font-face {
|
|
75
|
-
font-family: 'Open Sans';
|
|
76
|
-
src: url('./fonts/OpenSans-ExtraBoldItalic.ttf')
|
|
77
|
-
format('truetype');
|
|
78
|
-
font-style: italic;
|
|
79
|
-
font-weight: 800;
|
|
80
|
-
}
|
|
81
|
-
|
|
8
|
+
@font-face {
|
|
9
|
+
font-family: "Open Sans";
|
|
10
|
+
src: url("./fonts/OpenSans-Regular.ttf") format("truetype");
|
|
11
|
+
font-style: normal;
|
|
12
|
+
font-weight: 400;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@font-face {
|
|
16
|
+
font-family: "Open Sans";
|
|
17
|
+
src: url("./fonts/OpenSans-SemiBold.ttf") format("truetype");
|
|
18
|
+
font-style: normal;
|
|
19
|
+
font-weight: 600;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@font-face {
|
|
23
|
+
font-family: "Open Sans";
|
|
24
|
+
src: url("./fonts/OpenSans-Bold.ttf") format("truetype");
|
|
25
|
+
font-style: normal;
|
|
26
|
+
font-weight: 700;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@font-face {
|
|
30
|
+
font-family: "Open Sans";
|
|
31
|
+
src: url("./fonts/OpenSans-ExtraBold.ttf") format("truetype");
|
|
32
|
+
font-style: normal;
|
|
33
|
+
font-weight: 800;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@font-face {
|
|
37
|
+
font-family: "Open Sans";
|
|
38
|
+
src: url("./fonts/OpenSans-LightItalic.ttf") format("truetype");
|
|
39
|
+
font-style: italic;
|
|
40
|
+
font-weight: 200;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@font-face {
|
|
44
|
+
font-family: "Open Sans";
|
|
45
|
+
src: url("./fonts/OpenSans-Italic.ttf") format("truetype");
|
|
46
|
+
font-style: italic;
|
|
47
|
+
font-weight: 400;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@font-face {
|
|
51
|
+
font-family: "Open Sans";
|
|
52
|
+
src: url("./fonts/OpenSans-SemiBoldItalic.ttf") format("truetype");
|
|
53
|
+
font-style: italic;
|
|
54
|
+
font-weight: 600;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@font-face {
|
|
58
|
+
font-family: "Open Sans";
|
|
59
|
+
src: url("./fonts/OpenSans-BoldItalic.ttf") format("truetype");
|
|
60
|
+
font-style: italic;
|
|
61
|
+
font-weight: 700;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@font-face {
|
|
65
|
+
font-family: "Open Sans";
|
|
66
|
+
src: url("./fonts/OpenSans-ExtraBoldItalic.ttf") format("truetype");
|
|
67
|
+
font-style: italic;
|
|
68
|
+
font-weight: 800;
|
|
69
|
+
}
|