@dxc-technology/halstack-react 7.0.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HalstackContext.js +98 -50
- package/accordion/Accordion.js +7 -13
- package/accordion/Accordion.stories.tsx +102 -13
- package/alert/Alert.stories.tsx +28 -0
- package/box/Box.js +1 -3
- package/box/Box.stories.tsx +15 -0
- package/button/Button.js +11 -13
- package/button/Button.stories.tsx +150 -8
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +16 -15
- package/checkbox/Checkbox.stories.tsx +131 -59
- package/checkbox/types.d.ts +4 -0
- package/chip/Chip.js +16 -22
- package/chip/Chip.stories.tsx +96 -9
- package/common/variables.js +286 -290
- 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 +60 -73
- package/dialog/Dialog.stories.tsx +211 -159
- package/dialog/Dialog.test.js +301 -2
- package/dropdown/Dropdown.js +35 -35
- package/dropdown/Dropdown.stories.tsx +210 -84
- package/dropdown/Dropdown.test.js +17 -22
- package/dropdown/DropdownMenu.js +8 -18
- package/dropdown/DropdownMenuItem.js +4 -15
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +169 -222
- package/file-input/FileInput.stories.tsx +122 -11
- package/file-input/FileInput.test.js +12 -53
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +39 -63
- package/file-input/types.d.ts +17 -0
- package/footer/Footer.stories.tsx +91 -0
- package/header/Header.js +18 -20
- package/header/Header.stories.tsx +149 -6
- package/link/Link.js +1 -1
- package/link/Link.stories.tsx +60 -0
- package/main.d.ts +1 -1
- package/main.js +1 -1
- package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
- package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
- package/{tabs-nav → nav-tabs}/Tab.js +35 -15
- package/number-input/NumberInput.test.js +5 -6
- package/package.json +7 -12
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +5 -11
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +17 -10
- package/progress-bar/ProgressBar.js +4 -4
- package/progress-bar/ProgressBar.stories.jsx +35 -2
- package/quick-nav/QuickNav.stories.tsx +14 -0
- package/radio-group/RadioGroup.stories.tsx +131 -18
- package/resultsetTable/Icons.d.ts +7 -0
- package/resultsetTable/Icons.js +51 -0
- package/resultsetTable/ResultsetTable.js +48 -105
- package/resultsetTable/ResultsetTable.stories.tsx +50 -25
- package/resultsetTable/ResultsetTable.test.js +40 -63
- package/resultsetTable/types.d.ts +2 -2
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +5 -34
- package/select/Option.js +11 -24
- package/select/Select.js +43 -24
- package/select/Select.stories.tsx +494 -150
- package/select/Select.test.js +17 -22
- package/select/types.d.ts +2 -2
- package/sidenav/Sidenav.js +8 -10
- package/sidenav/Sidenav.stories.tsx +148 -46
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +9 -8
- package/slider/Slider.stories.tsx +57 -0
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.js +2 -2
- package/spinner/Spinner.stories.jsx +27 -1
- package/switch/Switch.d.ts +3 -3
- package/switch/Switch.js +5 -4
- package/switch/Switch.stories.tsx +33 -0
- package/switch/types.d.ts +6 -1
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +1 -1
- package/tabs/Tab.js +3 -5
- package/tabs/Tabs.js +3 -3
- package/tabs/Tabs.stories.tsx +45 -5
- package/tag/Tag.stories.tsx +14 -1
- package/text-input/Suggestion.js +32 -5
- package/text-input/TextInput.js +7 -11
- package/text-input/TextInput.stories.tsx +92 -4
- package/text-input/TextInput.test.js +587 -634
- package/textarea/Textarea.stories.jsx +60 -1
- package/toggle-group/ToggleGroup.stories.tsx +42 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +139 -0
- package/wizard/Wizard.stories.tsx +20 -0
- package/common/RequiredComponent.js +0 -32
- /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/NavTabs.test.js +0 -0
- /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/types.js +0 -0
|
@@ -4,42 +4,55 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
|
|
|
4
4
|
import Title from "../../.storybook/components/Title";
|
|
5
5
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
6
6
|
import DarkContainer from "../../.storybook/components/DarkSection";
|
|
7
|
-
import
|
|
7
|
+
import styled from "styled-components";
|
|
8
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
8
9
|
|
|
9
10
|
export default {
|
|
10
11
|
title: "Checkbox",
|
|
11
12
|
component: DxcCheckbox,
|
|
12
13
|
};
|
|
13
14
|
|
|
15
|
+
const opinionatedTheme = {
|
|
16
|
+
checkbox: {
|
|
17
|
+
baseColor: "#0067b3",
|
|
18
|
+
checkColor: "#ffffff",
|
|
19
|
+
fontColor: "#000000",
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
|
|
14
23
|
const Checkbox = () => (
|
|
15
24
|
<>
|
|
16
25
|
<ExampleContainer>
|
|
17
26
|
<Title title="Default" theme="light" level={4} />
|
|
18
27
|
<DxcCheckbox label="Checkbox" />
|
|
19
28
|
</ExampleContainer>
|
|
20
|
-
<ExampleContainer>
|
|
21
|
-
<Title title="Focused" theme="light" level={4} />
|
|
22
|
-
<DxcCheckbox label="Focused" />
|
|
23
|
-
</ExampleContainer>
|
|
24
29
|
<ExampleContainer>
|
|
25
30
|
<Title title="Checked" theme="light" level={4} />
|
|
26
31
|
<DxcCheckbox label="Checkbox" defaultChecked />
|
|
27
32
|
</ExampleContainer>
|
|
28
33
|
<ExampleContainer>
|
|
29
|
-
<Title title="
|
|
30
|
-
<DxcCheckbox label="Checkbox"
|
|
34
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
35
|
+
<DxcCheckbox label="Checkbox" disabled />
|
|
31
36
|
</ExampleContainer>
|
|
32
37
|
<ExampleContainer>
|
|
33
|
-
<Title title="Disabled and
|
|
34
|
-
<DxcCheckbox label="Checkbox" disabled defaultChecked />
|
|
38
|
+
<Title title="Disabled, checked and optional" theme="light" level={4} />
|
|
39
|
+
<DxcCheckbox label="Checkbox" disabled defaultChecked optional />
|
|
35
40
|
</ExampleContainer>
|
|
36
|
-
<ExampleContainer>
|
|
37
|
-
<Title title="
|
|
38
|
-
<DxcCheckbox label="
|
|
41
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
42
|
+
<Title title="Focused" theme="light" level={4} />
|
|
43
|
+
<DxcCheckbox label="Focused" />
|
|
44
|
+
</ExampleContainer>
|
|
45
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
46
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
47
|
+
<DxcCheckbox label="Hovered" />
|
|
48
|
+
</ExampleContainer>
|
|
49
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
50
|
+
<Title title="Hovered and checked" theme="light" level={4} />
|
|
51
|
+
<DxcCheckbox label="Hovered" defaultChecked />
|
|
39
52
|
</ExampleContainer>
|
|
40
53
|
<ExampleContainer>
|
|
41
|
-
<Title title="
|
|
42
|
-
<DxcCheckbox label="Checkbox"
|
|
54
|
+
<Title title="Optional" theme="light" level={4} />
|
|
55
|
+
<DxcCheckbox label="Checkbox" optional />
|
|
43
56
|
</ExampleContainer>
|
|
44
57
|
<ExampleContainer>
|
|
45
58
|
<Title title="Label after" theme="light" level={4} />
|
|
@@ -53,25 +66,9 @@ const Checkbox = () => (
|
|
|
53
66
|
<Title title="Optional with label after" theme="light" level={4} />
|
|
54
67
|
<DxcCheckbox label="Checkbox" optional labelPosition="after" />
|
|
55
68
|
</ExampleContainer>
|
|
56
|
-
<ExampleContainer>
|
|
57
|
-
<Title title="Disabled and checked with label after" theme="light" level={4} />
|
|
58
|
-
<DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
|
|
59
|
-
</ExampleContainer>
|
|
60
69
|
<ExampleContainer>
|
|
61
70
|
<Title title="Disabled and optional with label after" theme="light" level={4} />
|
|
62
|
-
<DxcCheckbox label="Checkbox" disabled
|
|
63
|
-
</ExampleContainer>
|
|
64
|
-
<ExampleContainer>
|
|
65
|
-
<Title title="Disabled, optional and checked with label after" theme="light" level={4} />
|
|
66
|
-
<DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
|
|
67
|
-
</ExampleContainer>
|
|
68
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
69
|
-
<Title title="Hovered" theme="light" level={4} />
|
|
70
|
-
<DxcCheckbox label="Hovered" />
|
|
71
|
-
</ExampleContainer>
|
|
72
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
73
|
-
<Title title="Hovered and checked" theme="light" level={4} />
|
|
74
|
-
<DxcCheckbox label="Hovered" defaultChecked />
|
|
71
|
+
<DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
|
|
75
72
|
</ExampleContainer>
|
|
76
73
|
<BackgroundColorProvider color="#333333">
|
|
77
74
|
<DarkContainer>
|
|
@@ -84,20 +81,28 @@ const Checkbox = () => (
|
|
|
84
81
|
<DxcCheckbox label="Checkbox" defaultChecked />
|
|
85
82
|
</ExampleContainer>
|
|
86
83
|
<ExampleContainer>
|
|
87
|
-
<Title title="
|
|
88
|
-
<DxcCheckbox label="Checkbox"
|
|
84
|
+
<Title title="Disabled" theme="dark" level={4} />
|
|
85
|
+
<DxcCheckbox label="Checkbox" disabled />
|
|
89
86
|
</ExampleContainer>
|
|
90
87
|
<ExampleContainer>
|
|
91
|
-
<Title title="Disabled and
|
|
92
|
-
<DxcCheckbox label="Checkbox" disabled defaultChecked />
|
|
88
|
+
<Title title="Disabled, checked and optional" theme="dark" level={4} />
|
|
89
|
+
<DxcCheckbox label="Checkbox" disabled defaultChecked optional />
|
|
93
90
|
</ExampleContainer>
|
|
94
|
-
<ExampleContainer>
|
|
95
|
-
<Title title="
|
|
96
|
-
<DxcCheckbox label="
|
|
91
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
92
|
+
<Title title="Focused" theme="dark" level={4} />
|
|
93
|
+
<DxcCheckbox label="Focused" />
|
|
94
|
+
</ExampleContainer>
|
|
95
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
96
|
+
<Title title="Hovered" theme="dark" level={4} />
|
|
97
|
+
<DxcCheckbox label="Hovered" />
|
|
98
|
+
</ExampleContainer>
|
|
99
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
100
|
+
<Title title="Hovered and checked" theme="dark" level={4} />
|
|
101
|
+
<DxcCheckbox label="Hovered" defaultChecked />
|
|
97
102
|
</ExampleContainer>
|
|
98
103
|
<ExampleContainer>
|
|
99
|
-
<Title title="
|
|
100
|
-
<DxcCheckbox label="Checkbox"
|
|
104
|
+
<Title title="Optional" theme="dark" level={4} />
|
|
105
|
+
<DxcCheckbox label="Checkbox" optional />
|
|
101
106
|
</ExampleContainer>
|
|
102
107
|
<ExampleContainer>
|
|
103
108
|
<Title title="Label after" theme="dark" level={4} />
|
|
@@ -111,25 +116,9 @@ const Checkbox = () => (
|
|
|
111
116
|
<Title title="Optional with label after" theme="dark" level={4} />
|
|
112
117
|
<DxcCheckbox label="Checkbox" optional labelPosition="after" />
|
|
113
118
|
</ExampleContainer>
|
|
114
|
-
<ExampleContainer>
|
|
115
|
-
<Title title="Disabled and checked with label after" theme="dark" level={4} />
|
|
116
|
-
<DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
|
|
117
|
-
</ExampleContainer>
|
|
118
119
|
<ExampleContainer>
|
|
119
120
|
<Title title="Disabled and optional with label after" theme="dark" level={4} />
|
|
120
|
-
<DxcCheckbox label="Checkbox" disabled
|
|
121
|
-
</ExampleContainer>
|
|
122
|
-
<ExampleContainer>
|
|
123
|
-
<Title title="Disabled, optional and checked with label after" theme="dark" level={4} />
|
|
124
|
-
<DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
|
|
125
|
-
</ExampleContainer>
|
|
126
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
127
|
-
<Title title="Hovered" theme="dark" level={4} />
|
|
128
|
-
<DxcCheckbox label="Hovered" />
|
|
129
|
-
</ExampleContainer>
|
|
130
|
-
<ExampleContainer pseudoState="pseudo-hover">
|
|
131
|
-
<Title title="Hovered and checked" theme="dark" level={4} />
|
|
132
|
-
<DxcCheckbox label="Hovered" defaultChecked />
|
|
121
|
+
<DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
|
|
133
122
|
</ExampleContainer>
|
|
134
123
|
</DarkContainer>
|
|
135
124
|
</BackgroundColorProvider>
|
|
@@ -178,11 +167,94 @@ const Checkbox = () => (
|
|
|
178
167
|
<Title title="Xxlarge" theme="light" level={4} />
|
|
179
168
|
<DxcCheckbox label="Xxlarge" margin="xxlarge" />
|
|
180
169
|
</ExampleContainer>
|
|
170
|
+
<ExampleContainer>
|
|
171
|
+
<Title title="Overflow container" theme="light" level={4} />
|
|
172
|
+
<ScrollableContainer id="scroll-container">
|
|
173
|
+
<DxcCheckbox label="Checkbox" defaultChecked />
|
|
174
|
+
<DxcCheckbox label="Checkbox" defaultChecked />
|
|
175
|
+
<DxcCheckbox label="Checkbox" />
|
|
176
|
+
<DxcCheckbox label="Checkbox" defaultChecked />
|
|
177
|
+
<DxcCheckbox label="Checkbox" />
|
|
178
|
+
<DxcCheckbox label="Checkbox" />
|
|
179
|
+
<DxcCheckbox label="Checkbox" />
|
|
180
|
+
<DxcCheckbox label="Checkbox" defaultChecked />
|
|
181
|
+
</ScrollableContainer>
|
|
182
|
+
</ExampleContainer>
|
|
183
|
+
<ExampleContainer>
|
|
184
|
+
<Title title="Label overflow" theme="light" level={4} />
|
|
185
|
+
<SmallContainer>
|
|
186
|
+
<DxcCheckbox label="Very long label to check its overflowing" defaultChecked />
|
|
187
|
+
<DxcCheckbox label="Very long label to check its overflowing" labelPosition="after" />
|
|
188
|
+
</SmallContainer>
|
|
189
|
+
</ExampleContainer>
|
|
190
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
191
|
+
<ExampleContainer>
|
|
192
|
+
<Title title="Default" theme="light" level={4} />
|
|
193
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
194
|
+
<DxcCheckbox label="Checkbox" />
|
|
195
|
+
</HalstackProvider>
|
|
196
|
+
</ExampleContainer>
|
|
197
|
+
<ExampleContainer>
|
|
198
|
+
<Title title="Checked" theme="light" level={4} />
|
|
199
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
200
|
+
<DxcCheckbox label="Checkbox" defaultChecked />
|
|
201
|
+
</HalstackProvider>
|
|
202
|
+
</ExampleContainer>
|
|
203
|
+
<ExampleContainer>
|
|
204
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
205
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
206
|
+
<DxcCheckbox label="Checkbox" disabled />
|
|
207
|
+
</HalstackProvider>
|
|
208
|
+
</ExampleContainer>
|
|
209
|
+
<ExampleContainer>
|
|
210
|
+
<Title title="Disabled checked" theme="light" level={4} />
|
|
211
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
212
|
+
<DxcCheckbox label="Checkbox" defaultChecked disabled />
|
|
213
|
+
</HalstackProvider>
|
|
214
|
+
</ExampleContainer>
|
|
215
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
216
|
+
<Title title="Focused" theme="light" level={4} />
|
|
217
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
218
|
+
<DxcCheckbox label="Focused" />
|
|
219
|
+
</HalstackProvider>
|
|
220
|
+
</ExampleContainer>
|
|
221
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
222
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
223
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
224
|
+
<DxcCheckbox label="Hovered" />
|
|
225
|
+
</HalstackProvider>
|
|
226
|
+
</ExampleContainer>
|
|
227
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
228
|
+
<Title title="Hovered and checked" theme="light" level={4} />
|
|
229
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
230
|
+
<DxcCheckbox label="Hovered" defaultChecked />
|
|
231
|
+
</HalstackProvider>
|
|
232
|
+
</ExampleContainer>
|
|
181
233
|
</>
|
|
182
234
|
);
|
|
183
235
|
|
|
184
236
|
export const Chromatic = Checkbox.bind({});
|
|
237
|
+
|
|
185
238
|
Chromatic.play = async () => {
|
|
186
|
-
|
|
187
|
-
|
|
239
|
+
const listEl = document.getElementById("scroll-container");
|
|
240
|
+
listEl?.scrollTo?.({ top: 50 });
|
|
188
241
|
};
|
|
242
|
+
|
|
243
|
+
const ScrollableContainer = styled.div`
|
|
244
|
+
display: flex;
|
|
245
|
+
flex-direction: column;
|
|
246
|
+
gap: 14px;
|
|
247
|
+
width: 200px;
|
|
248
|
+
height: 200px;
|
|
249
|
+
border: 1px solid #000;
|
|
250
|
+
padding: 14px;
|
|
251
|
+
overflow: auto;
|
|
252
|
+
`;
|
|
253
|
+
|
|
254
|
+
const SmallContainer = styled.div`
|
|
255
|
+
display: flex;
|
|
256
|
+
flex-direction: column;
|
|
257
|
+
gap: 14px;
|
|
258
|
+
width: 150px;
|
|
259
|
+
height: 150px;
|
|
260
|
+
`;
|
package/checkbox/types.d.ts
CHANGED
package/chip/Chip.js
CHANGED
|
@@ -23,7 +23,7 @@ var _utils = require("../common/utils.js");
|
|
|
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
|
|
|
@@ -55,7 +55,7 @@ var DxcChip = function DxcChip(_ref) {
|
|
|
55
55
|
return onClickPrefix && !disabled && onClickPrefix();
|
|
56
56
|
},
|
|
57
57
|
interactuable: typeof onClickPrefix === "function" && !disabled
|
|
58
|
-
}, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(
|
|
58
|
+
}, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
59
59
|
src: prefixIcon
|
|
60
60
|
}) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
|
|
61
61
|
disabled: disabled
|
|
@@ -69,21 +69,13 @@ var DxcChip = function DxcChip(_ref) {
|
|
|
69
69
|
return onClickSuffix && !disabled && onClickSuffix();
|
|
70
70
|
},
|
|
71
71
|
interactuable: typeof onClickSuffix === "function" && !disabled
|
|
72
|
-
}, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement(
|
|
72
|
+
}, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
73
73
|
src: suffixIcon
|
|
74
74
|
}) : suffixIcon)));
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
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;";
|
|
78
|
+
if (disabled) return "cursor: not-allowed;";else if (interactuable) return "cursor: pointer;";else return "cursor: default; outline:none;";
|
|
87
79
|
};
|
|
88
80
|
|
|
89
81
|
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 +129,26 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
|
|
|
137
129
|
return disabled && "not-allowed" || "default";
|
|
138
130
|
});
|
|
139
131
|
|
|
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) {
|
|
132
|
+
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
133
|
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", ";");
|
|
134
|
+
}, function (props) {
|
|
135
|
+
return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
|
|
148
136
|
}, function (props) {
|
|
149
137
|
return getCursor(props.interactuable, props.disabled);
|
|
150
138
|
}, function (props) {
|
|
151
|
-
return props.theme.
|
|
139
|
+
return !props.disabled && props.theme.hoverIconColor;
|
|
152
140
|
}, function (props) {
|
|
153
|
-
return props.theme.
|
|
141
|
+
return !props.disabled && props.theme.focusColor;
|
|
154
142
|
}, function (props) {
|
|
155
|
-
return props.theme.
|
|
143
|
+
return !props.disabled && props.theme.focusBorderThickness;
|
|
156
144
|
}, function (props) {
|
|
157
145
|
return props.disabled && "outline: none;";
|
|
146
|
+
}, function (props) {
|
|
147
|
+
return !props.disabled && props.theme.activeIconColor;
|
|
148
|
+
}, function (props) {
|
|
149
|
+
return props.theme.iconSize;
|
|
150
|
+
}, function (props) {
|
|
151
|
+
return props.theme.iconSize;
|
|
158
152
|
});
|
|
159
153
|
|
|
160
154
|
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 = () => (
|