@dxc-technology/halstack-react 8.0.0 → 9.0.1
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 +114 -73
- package/accordion/Accordion.js +13 -24
- package/accordion/Accordion.stories.tsx +102 -13
- package/accordion/Accordion.test.js +1 -1
- package/accordion/types.d.ts +3 -3
- package/accordion-group/AccordionGroup.js +2 -2
- package/accordion-group/AccordionGroup.test.js +1 -1
- package/accordion-group/types.d.ts +2 -2
- package/alert/Alert.js +3 -5
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +1 -1
- package/box/Box.js +3 -5
- package/box/Box.stories.tsx +15 -0
- package/box/Box.test.js +1 -1
- package/button/Button.js +13 -15
- package/button/Button.stories.tsx +150 -8
- package/button/Button.test.js +1 -1
- package/button/types.d.ts +3 -3
- package/card/Card.js +12 -13
- package/card/Card.stories.tsx +12 -13
- package/card/Card.test.js +1 -1
- package/checkbox/Checkbox.js +3 -3
- package/checkbox/Checkbox.stories.tsx +52 -0
- package/checkbox/Checkbox.test.js +1 -1
- package/checkbox/types.d.ts +2 -2
- package/chip/Chip.js +18 -26
- package/chip/Chip.stories.tsx +96 -9
- package/chip/Chip.test.js +3 -5
- package/common/utils.d.ts +1 -0
- package/common/utils.js +4 -4
- package/common/variables.d.ts +1625 -0
- package/common/variables.js +280 -288
- package/date-input/Calendar.d.ts +1 -1
- package/date-input/Calendar.js +43 -43
- package/date-input/DateInput.js +74 -32
- package/date-input/DateInput.stories.tsx +183 -30
- package/date-input/DateInput.test.js +120 -37
- package/date-input/DatePicker.js +38 -52
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +75 -0
- package/date-input/YearPicker.d.ts +1 -1
- package/date-input/YearPicker.js +23 -12
- package/date-input/types.d.ts +6 -8
- package/dialog/Dialog.js +61 -74
- package/dialog/Dialog.stories.tsx +211 -159
- package/dialog/Dialog.test.js +302 -3
- package/dialog/types.d.ts +2 -2
- package/dropdown/Dropdown.js +5 -8
- package/dropdown/Dropdown.stories.tsx +210 -84
- package/dropdown/Dropdown.test.js +3 -2
- package/dropdown/DropdownMenu.js +8 -18
- package/dropdown/DropdownMenuItem.js +4 -17
- package/dropdown/types.d.ts +3 -3
- package/file-input/FileInput.js +4 -8
- package/file-input/FileInput.stories.tsx +85 -2
- package/file-input/FileInput.test.js +1 -42
- package/file-input/FileItem.js +1 -0
- package/footer/Footer.js +6 -8
- package/footer/Footer.stories.tsx +91 -0
- package/footer/Footer.test.js +14 -26
- package/header/Header.d.ts +3 -2
- package/header/Header.js +21 -23
- package/header/Header.stories.tsx +149 -6
- package/header/Header.test.js +2 -2
- package/header/types.d.ts +2 -2
- package/heading/Heading.js +1 -1
- package/heading/Heading.test.js +1 -1
- package/layout/ApplicationLayout.d.ts +1 -1
- package/layout/ApplicationLayout.js +1 -1
- package/link/Link.js +2 -2
- package/link/Link.stories.tsx +60 -0
- package/link/Link.test.js +2 -4
- package/link/types.d.ts +2 -2
- 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}/NavTabs.test.js +1 -1
- package/{tabs-nav → nav-tabs}/Tab.js +37 -17
- package/number-input/NumberInput.test.js +1 -1
- package/package.json +2 -2
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +6 -14
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +44 -47
- package/paragraph/Paragraph.d.ts +3 -4
- package/paragraph/Paragraph.js +5 -5
- package/password-input/PasswordInput.test.js +1 -1
- package/progress-bar/ProgressBar.d.ts +2 -2
- package/progress-bar/ProgressBar.js +5 -5
- package/progress-bar/ProgressBar.stories.jsx +35 -2
- package/progress-bar/ProgressBar.test.js +1 -1
- package/progress-bar/types.d.ts +4 -3
- package/quick-nav/QuickNav.stories.tsx +14 -0
- package/radio-group/RadioGroup.stories.tsx +131 -18
- package/radio-group/RadioGroup.test.js +1 -1
- package/resultsetTable/ResultsetTable.js +2 -2
- package/resultsetTable/ResultsetTable.test.js +18 -23
- package/resultsetTable/types.d.ts +3 -3
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +5 -34
- package/select/Option.js +11 -24
- package/select/Select.js +56 -35
- package/select/Select.stories.tsx +492 -145
- package/select/Select.test.js +76 -81
- package/select/types.d.ts +2 -2
- package/sidenav/Sidenav.js +9 -11
- package/sidenav/Sidenav.stories.tsx +148 -46
- package/slider/Slider.js +6 -7
- package/slider/Slider.stories.tsx +57 -0
- package/slider/Slider.test.js +1 -1
- package/slider/types.d.ts +2 -2
- package/spinner/Spinner.js +17 -23
- package/spinner/Spinner.stories.jsx +53 -27
- package/spinner/Spinner.test.js +1 -1
- package/switch/Switch.js +3 -3
- package/switch/Switch.stories.tsx +33 -0
- package/switch/Switch.test.js +1 -1
- package/switch/types.d.ts +2 -2
- package/table/Table.js +2 -2
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +1 -1
- package/tabs/Tab.js +12 -14
- package/tabs/Tabs.js +4 -6
- package/tabs/Tabs.stories.tsx +45 -5
- package/tabs/Tabs.test.js +4 -5
- package/tabs/types.d.ts +2 -2
- package/tag/Tag.js +7 -9
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +1 -1
- package/text-input/Suggestion.js +34 -7
- package/text-input/TextInput.js +10 -14
- package/text-input/TextInput.stories.tsx +92 -4
- package/text-input/TextInput.test.js +125 -26
- package/textarea/Textarea.js +3 -3
- package/textarea/Textarea.stories.jsx +60 -1
- package/textarea/Textarea.test.js +1 -1
- 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 +1 -1
- package/typography/Typography.d.ts +2 -2
- package/typography/Typography.js +14 -113
- package/typography/Typography.stories.tsx +1 -1
- 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 +2 -2
- package/wizard/Wizard.stories.tsx +20 -0
- package/wizard/Wizard.test.js +1 -1
- package/wizard/types.d.ts +5 -6
- /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.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/types.js +0 -0
|
@@ -2,67 +2,84 @@ import React from "react";
|
|
|
2
2
|
import DxcSpinner from "./Spinner";
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
5
6
|
|
|
6
7
|
export default {
|
|
7
8
|
title: "Spinner",
|
|
8
9
|
component: DxcSpinner,
|
|
9
10
|
};
|
|
10
11
|
|
|
12
|
+
const opinionatedTheme = {
|
|
13
|
+
spinner: {
|
|
14
|
+
accentColor: "#5f249f",
|
|
15
|
+
baseColor: "#ffffff",
|
|
16
|
+
fontColor: "#000000",
|
|
17
|
+
overlayColor: "#a46ede",
|
|
18
|
+
overlayFontColor: "#ffffff",
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
11
22
|
export const Chromatic = () => (
|
|
12
23
|
<>
|
|
13
24
|
<ExampleContainer>
|
|
14
25
|
<Title title="With label" theme="light" level={4} />
|
|
15
|
-
<DxcSpinner label="Label" value=
|
|
26
|
+
<DxcSpinner label="Label" value={50}></DxcSpinner>
|
|
16
27
|
<Title title="With value label" theme="light" level={4} />
|
|
17
|
-
<DxcSpinner value=
|
|
28
|
+
<DxcSpinner value={50} showValue></DxcSpinner>
|
|
18
29
|
<Title title="With label and value label" theme="light" level={4} />
|
|
19
|
-
<DxcSpinner label="Label" value=
|
|
30
|
+
<DxcSpinner label="Label" value={50} showValue></DxcSpinner>
|
|
20
31
|
<Title title="With 100%" theme="light" level={4} />
|
|
21
|
-
<DxcSpinner label="Label" value=
|
|
32
|
+
<DxcSpinner label="Label" value={100} showValue></DxcSpinner>
|
|
22
33
|
</ExampleContainer>
|
|
23
34
|
<Title title="Modes" theme="light" level={2} />
|
|
24
35
|
<ExampleContainer>
|
|
25
36
|
<Title title="Mode large" theme="light" level={4} />
|
|
26
|
-
<DxcSpinner mode="large" value=
|
|
37
|
+
<DxcSpinner mode="large" value={50}></DxcSpinner>
|
|
27
38
|
<Title title="Mode small" theme="light" level={4} />
|
|
28
|
-
<DxcSpinner mode="small" value=
|
|
39
|
+
<DxcSpinner mode="small" value={50}></DxcSpinner>
|
|
29
40
|
<Title title="Mode small with 100%" theme="light" level={4} />
|
|
30
|
-
<DxcSpinner mode="small" value=
|
|
41
|
+
<DxcSpinner mode="small" value={100} showValue></DxcSpinner>
|
|
31
42
|
</ExampleContainer>
|
|
32
43
|
<Title title="Margins with large mode" theme="light" level={2} />
|
|
33
44
|
<ExampleContainer>
|
|
34
45
|
<Title title="Xxsmall margin" theme="light" level={4} />
|
|
35
|
-
<DxcSpinner margin="xxsmall" value=
|
|
46
|
+
<DxcSpinner margin="xxsmall" value={75}></DxcSpinner>
|
|
36
47
|
<Title title="Xsmall margin" theme="light" level={4} />
|
|
37
|
-
<DxcSpinner margin="xsmall" value=
|
|
48
|
+
<DxcSpinner margin="xsmall" value={75}></DxcSpinner>
|
|
38
49
|
<Title title="Small margin" theme="light" level={4} />
|
|
39
|
-
<DxcSpinner margin="small" value=
|
|
50
|
+
<DxcSpinner margin="small" value={75}></DxcSpinner>
|
|
40
51
|
<Title title="Medium margin" theme="light" level={4} />
|
|
41
|
-
<DxcSpinner margin="medium" value=
|
|
52
|
+
<DxcSpinner margin="medium" value={75}></DxcSpinner>
|
|
42
53
|
<Title title="Large margin" theme="light" level={4} />
|
|
43
|
-
<DxcSpinner margin="large" value=
|
|
54
|
+
<DxcSpinner margin="large" value={75}></DxcSpinner>
|
|
44
55
|
<Title title="Xlarge margin" theme="light" level={4} />
|
|
45
|
-
<DxcSpinner margin="xlarge" value=
|
|
56
|
+
<DxcSpinner margin="xlarge" value={75}></DxcSpinner>
|
|
46
57
|
<Title title="Xxlarge margin" theme="light" level={4} />
|
|
47
|
-
<DxcSpinner margin="xxlarge" value=
|
|
58
|
+
<DxcSpinner margin="xxlarge" value={75}></DxcSpinner>
|
|
48
59
|
</ExampleContainer>
|
|
49
60
|
<Title title="Margins with small mode" theme="light" level={2} />
|
|
50
61
|
<ExampleContainer>
|
|
51
62
|
<Title title="Xxsmall margin" theme="light" level={4} />
|
|
52
|
-
<DxcSpinner margin="xxsmall" mode="small" value=
|
|
63
|
+
<DxcSpinner margin="xxsmall" mode="small" value={75}></DxcSpinner>
|
|
53
64
|
<Title title="Xsmall margin" theme="light" level={4} />
|
|
54
|
-
<DxcSpinner margin="xsmall" mode="small" value=
|
|
65
|
+
<DxcSpinner margin="xsmall" mode="small" value={75}></DxcSpinner>
|
|
55
66
|
<Title title="Small margin" theme="light" level={4} />
|
|
56
|
-
<DxcSpinner margin="small" mode="small" value=
|
|
67
|
+
<DxcSpinner margin="small" mode="small" value={75}></DxcSpinner>
|
|
57
68
|
<Title title="Medium margin" theme="light" level={4} />
|
|
58
|
-
<DxcSpinner margin="medium" mode="small" value=
|
|
69
|
+
<DxcSpinner margin="medium" mode="small" value={75}></DxcSpinner>
|
|
59
70
|
<Title title="Large margin" theme="light" level={4} />
|
|
60
|
-
<DxcSpinner margin="large" mode="small" value=
|
|
71
|
+
<DxcSpinner margin="large" mode="small" value={75}></DxcSpinner>
|
|
61
72
|
<Title title="Xlarge margin" theme="light" level={4} />
|
|
62
|
-
<DxcSpinner margin="xlarge" mode="small" value=
|
|
73
|
+
<DxcSpinner margin="xlarge" mode="small" value={75}></DxcSpinner>
|
|
63
74
|
<Title title="Xxlarge margin" theme="light" level={4} />
|
|
64
|
-
<DxcSpinner margin="xxlarge" mode="small" value=
|
|
65
|
-
|
|
75
|
+
<DxcSpinner margin="xxlarge" mode="small" value={75}></DxcSpinner>
|
|
76
|
+
</ExampleContainer>
|
|
77
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
78
|
+
<ExampleContainer>
|
|
79
|
+
<Title title="With label and value label" theme="light" level={4} />
|
|
80
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
81
|
+
<DxcSpinner label="Label" value={50} showValue></DxcSpinner>
|
|
82
|
+
</HalstackProvider>
|
|
66
83
|
</ExampleContainer>
|
|
67
84
|
</>
|
|
68
85
|
);
|
|
@@ -70,34 +87,43 @@ export const Chromatic = () => (
|
|
|
70
87
|
export const SpinnerOverlay = () => (
|
|
71
88
|
<ExampleContainer>
|
|
72
89
|
<Title title="Mode overlay" theme="light" level={4} />
|
|
73
|
-
<DxcSpinner mode="overlay" value=
|
|
90
|
+
<DxcSpinner mode="overlay" value={25}></DxcSpinner>
|
|
74
91
|
</ExampleContainer>
|
|
75
92
|
);
|
|
76
93
|
|
|
77
94
|
export const SpinnerOverlayWith100 = () => (
|
|
78
95
|
<ExampleContainer>
|
|
79
96
|
<Title title="Mode overlay" theme="light" level={4} />
|
|
80
|
-
<DxcSpinner mode="overlay" value=
|
|
97
|
+
<DxcSpinner mode="overlay" value={100}></DxcSpinner>
|
|
81
98
|
</ExampleContainer>
|
|
82
99
|
);
|
|
83
100
|
|
|
84
101
|
export const SpinnerOverlayWithLabel = () => (
|
|
85
102
|
<ExampleContainer>
|
|
86
103
|
<Title title="Mode overlay" theme="light" level={4} />
|
|
87
|
-
<DxcSpinner mode="overlay" value=
|
|
104
|
+
<DxcSpinner mode="overlay" value={50} label="Label"></DxcSpinner>
|
|
88
105
|
</ExampleContainer>
|
|
89
106
|
);
|
|
90
107
|
|
|
91
108
|
export const SpinnerOverlayWithValue = () => (
|
|
92
109
|
<ExampleContainer>
|
|
93
110
|
<Title title="Mode overlay" theme="light" level={4} />
|
|
94
|
-
<DxcSpinner mode="overlay" value=
|
|
111
|
+
<DxcSpinner mode="overlay" value={50} showValue></DxcSpinner>
|
|
95
112
|
</ExampleContainer>
|
|
96
113
|
);
|
|
97
114
|
|
|
98
115
|
export const SpinnerOverlayWithValueAndLabel = () => (
|
|
99
116
|
<ExampleContainer>
|
|
100
117
|
<Title title="Mode overlay" theme="light" level={4} />
|
|
101
|
-
<DxcSpinner mode="overlay" label="Label" value=
|
|
118
|
+
<DxcSpinner mode="overlay" label="Label" value={50} showValue></DxcSpinner>
|
|
119
|
+
</ExampleContainer>
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
export const SpinnerOverlayWithValueAndLabelOpinionated = () => (
|
|
123
|
+
<ExampleContainer>
|
|
124
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
125
|
+
<Title title="Mode overlay" theme="light" level={4} />
|
|
126
|
+
<DxcSpinner mode="overlay" label="Label" value={50} showValue></DxcSpinner>
|
|
127
|
+
</HalstackProvider>
|
|
102
128
|
</ExampleContainer>
|
|
103
129
|
);
|
package/spinner/Spinner.test.js
CHANGED
|
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
|
|
7
7
|
var _react2 = require("@testing-library/react");
|
|
8
8
|
|
|
9
|
-
var _Spinner = _interopRequireDefault(require("./Spinner"));
|
|
9
|
+
var _Spinner = _interopRequireDefault(require("./Spinner.tsx"));
|
|
10
10
|
|
|
11
11
|
describe("Spinner component tests", function () {
|
|
12
12
|
test("Spinner renders with correct label", function () {
|
package/switch/Switch.js
CHANGED
|
@@ -21,9 +21,9 @@ var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
|
21
21
|
|
|
22
22
|
var _uuid = require("uuid");
|
|
23
23
|
|
|
24
|
-
var _variables = require("../common/variables
|
|
24
|
+
var _variables = require("../common/variables");
|
|
25
25
|
|
|
26
|
-
var _utils = require("../common/utils
|
|
26
|
+
var _utils = require("../common/utils");
|
|
27
27
|
|
|
28
28
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
29
29
|
|
|
@@ -234,7 +234,7 @@ var SwitchBase = _styledComponents["default"].label(_templateObject3 || (_templa
|
|
|
234
234
|
|
|
235
235
|
var ValueInput = _styledComponents["default"].input(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
|
|
236
236
|
|
|
237
|
-
var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 15px;\n width: ", ";\n height: ", ";\n position: relative;\n cursor: ", ";\n\n &:focus-visible {\n outline: none;\n ::before {\n outline: ", ";\n outline-offset: 6px;\n }\n }\n\n /* Thumb element */\n ::before {\n content: \"\";\n transform: initial;\n position: absolute;\n width: ", ";\n height: ", ";\n border-radius: 50%;\n
|
|
237
|
+
var SwitchTrack = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 15px;\n width: ", ";\n height: ", ";\n position: relative;\n cursor: ", ";\n\n &:focus-visible {\n outline: none;\n ::before {\n outline: ", ";\n outline-offset: 6px;\n }\n }\n\n /* Thumb element */\n ::before {\n content: \"\";\n transform: initial;\n position: absolute;\n width: ", ";\n height: ", ";\n border-radius: 50%;\n box-shadow: 0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%);\n bottom: -6px;\n left: -4px;\n transform: translateX(0px);\n background-color: ", ";\n }\n\n /* Unchecked */\n background-color: ", ";\n\n /* Checked */\n &[aria-checked=\"true\"] {\n background-color: ", ";\n ::before {\n transform: translateX(", ");\n background-color: ", ";\n }\n }\n"])), function (props) {
|
|
238
238
|
return props.theme.trackWidth;
|
|
239
239
|
}, function (props) {
|
|
240
240
|
return props.theme.trackHeight;
|
|
@@ -4,12 +4,20 @@ 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 { HalstackProvider } from "../HalstackContext";
|
|
7
8
|
|
|
8
9
|
export default {
|
|
9
10
|
title: "Switch",
|
|
10
11
|
component: DxcSwitch,
|
|
11
12
|
};
|
|
12
13
|
|
|
14
|
+
const opinionatedTheme = {
|
|
15
|
+
switch: {
|
|
16
|
+
checkedBaseColor: "#5f249f",
|
|
17
|
+
fontColor: "#000000",
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
|
|
13
21
|
export const Chromatic = () => (
|
|
14
22
|
<>
|
|
15
23
|
<ExampleContainer>
|
|
@@ -134,5 +142,30 @@ export const Chromatic = () => (
|
|
|
134
142
|
<Title title="FitContent size" theme="light" level={4} />
|
|
135
143
|
<DxcSwitch label="FitContent" size="fitContent" />
|
|
136
144
|
</ExampleContainer>
|
|
145
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
146
|
+
<ExampleContainer>
|
|
147
|
+
<Title title="Checked" theme="light" level={4} />
|
|
148
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
149
|
+
<DxcSwitch label="Switch" defaultChecked />
|
|
150
|
+
</HalstackProvider>
|
|
151
|
+
</ExampleContainer>
|
|
152
|
+
<ExampleContainer>
|
|
153
|
+
<Title title="Default" theme="light" level={4} />
|
|
154
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
155
|
+
<DxcSwitch label="Switch" />
|
|
156
|
+
</HalstackProvider>
|
|
157
|
+
</ExampleContainer>
|
|
158
|
+
<ExampleContainer>
|
|
159
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
160
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
161
|
+
<DxcSwitch label="Switch" disabled />
|
|
162
|
+
</HalstackProvider>
|
|
163
|
+
</ExampleContainer>
|
|
164
|
+
<ExampleContainer>
|
|
165
|
+
<Title title="Disabled checked" theme="light" level={4} />
|
|
166
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
167
|
+
<DxcSwitch label="Switch" disabled defaultChecked />
|
|
168
|
+
</HalstackProvider>
|
|
169
|
+
</ExampleContainer>
|
|
137
170
|
</>
|
|
138
171
|
);
|
package/switch/Switch.test.js
CHANGED
|
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
|
|
7
7
|
var _react2 = require("@testing-library/react");
|
|
8
8
|
|
|
9
|
-
var _Switch = _interopRequireDefault(require("./Switch"));
|
|
9
|
+
var _Switch = _interopRequireDefault(require("./Switch.tsx"));
|
|
10
10
|
|
|
11
11
|
describe("Switch component tests", function () {
|
|
12
12
|
test("Switch renders with correct text", function () {
|
package/switch/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
2
|
+
declare type Margin = {
|
|
3
3
|
top?: Space;
|
|
4
4
|
bottom?: Space;
|
|
5
5
|
left?: Space;
|
package/table/Table.js
CHANGED
|
@@ -17,9 +17,9 @@ 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
|
|
package/table/Table.stories.jsx
CHANGED
|
@@ -2,12 +2,21 @@ import React from "react";
|
|
|
2
2
|
import DxcTable from "./Table";
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
5
6
|
|
|
6
7
|
export default {
|
|
7
8
|
title: "Table",
|
|
8
9
|
component: DxcTable,
|
|
9
10
|
};
|
|
10
11
|
|
|
12
|
+
const opinionatedTheme = {
|
|
13
|
+
table: {
|
|
14
|
+
baseColor: "#5f249f",
|
|
15
|
+
headerFontColor: "#ffffff",
|
|
16
|
+
cellFontColor: "#000000",
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
11
20
|
export const Chromatic = () => (
|
|
12
21
|
<>
|
|
13
22
|
<ExampleContainer>
|
|
@@ -271,7 +280,77 @@ export const Chromatic = () => (
|
|
|
271
280
|
<td>Cell 9</td>
|
|
272
281
|
</tr>
|
|
273
282
|
</DxcTable>
|
|
274
|
-
|
|
283
|
+
</ExampleContainer>
|
|
284
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
285
|
+
<ExampleContainer>
|
|
286
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
287
|
+
<DxcTable>
|
|
288
|
+
<tr>
|
|
289
|
+
<th>
|
|
290
|
+
header<br></br>subheader
|
|
291
|
+
</th>
|
|
292
|
+
<th>
|
|
293
|
+
header<br></br>subheader
|
|
294
|
+
</th>
|
|
295
|
+
<th>
|
|
296
|
+
header<br></br>subheader
|
|
297
|
+
</th>
|
|
298
|
+
</tr>
|
|
299
|
+
<tr>
|
|
300
|
+
<td>
|
|
301
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
|
|
302
|
+
dolore magna aliqua.
|
|
303
|
+
</td>
|
|
304
|
+
<td>
|
|
305
|
+
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
|
|
306
|
+
consequat.
|
|
307
|
+
</td>
|
|
308
|
+
<td>
|
|
309
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
|
|
310
|
+
</td>
|
|
311
|
+
</tr>
|
|
312
|
+
<tr>
|
|
313
|
+
<td>cell data</td>
|
|
314
|
+
<td>cell data</td>
|
|
315
|
+
<td>cell data</td>
|
|
316
|
+
</tr>
|
|
317
|
+
<tr>
|
|
318
|
+
<td>cell data</td>
|
|
319
|
+
<td>cell data</td>
|
|
320
|
+
<td>cell data</td>
|
|
321
|
+
</tr>
|
|
322
|
+
<tr>
|
|
323
|
+
<td>cell data</td>
|
|
324
|
+
<td>cell data</td>
|
|
325
|
+
<td>cell data</td>
|
|
326
|
+
</tr>
|
|
327
|
+
<tr>
|
|
328
|
+
<td>cell data</td>
|
|
329
|
+
<td>cell data</td>
|
|
330
|
+
<td>cell data</td>
|
|
331
|
+
</tr>
|
|
332
|
+
<tr>
|
|
333
|
+
<td>cell data</td>
|
|
334
|
+
<td>cell data</td>
|
|
335
|
+
<td>cell data</td>
|
|
336
|
+
</tr>
|
|
337
|
+
<tr>
|
|
338
|
+
<td>cell data</td>
|
|
339
|
+
<td>cell data</td>
|
|
340
|
+
<td>cell data</td>
|
|
341
|
+
</tr>
|
|
342
|
+
<tr>
|
|
343
|
+
<td>cell data</td>
|
|
344
|
+
<td>cell data</td>
|
|
345
|
+
<td>cell data</td>
|
|
346
|
+
</tr>
|
|
347
|
+
<tr>
|
|
348
|
+
<td>cell data</td>
|
|
349
|
+
<td>cell data</td>
|
|
350
|
+
<td>cell data</td>
|
|
351
|
+
</tr>
|
|
352
|
+
</DxcTable>
|
|
353
|
+
</HalstackProvider>
|
|
275
354
|
</ExampleContainer>
|
|
276
355
|
</>
|
|
277
356
|
);
|
package/table/Table.test.js
CHANGED
|
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
|
|
7
7
|
var _react2 = require("@testing-library/react");
|
|
8
8
|
|
|
9
|
-
var _Table = _interopRequireDefault(require("./Table"));
|
|
9
|
+
var _Table = _interopRequireDefault(require("./Table.tsx"));
|
|
10
10
|
|
|
11
11
|
describe("Table component tests", function () {
|
|
12
12
|
test("Table renders with correct content", function () {
|
package/tabs/Tab.js
CHANGED
|
@@ -17,11 +17,11 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
17
17
|
|
|
18
18
|
var _Badge = _interopRequireDefault(require("../badge/Badge"));
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _BaseTypography = _interopRequireDefault(require("../utils/BaseTypography"));
|
|
21
21
|
|
|
22
22
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
23
23
|
|
|
24
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4
|
|
24
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
25
25
|
|
|
26
26
|
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); }
|
|
27
27
|
|
|
@@ -57,15 +57,15 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
57
57
|
_onMouseLeave();
|
|
58
58
|
}
|
|
59
59
|
}, /*#__PURE__*/_react["default"].createElement(MainLabelContainer, {
|
|
60
|
-
|
|
60
|
+
notificationNumber: tab.notificationNumber,
|
|
61
61
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
62
62
|
iconPosition: iconPosition
|
|
63
63
|
}, tab.icon && /*#__PURE__*/_react["default"].createElement(TabIconContainer, {
|
|
64
64
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
65
65
|
iconPosition: iconPosition
|
|
66
|
-
}, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement(
|
|
66
|
+
}, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
67
67
|
src: tab.icon
|
|
68
|
-
}) : tab.icon), /*#__PURE__*/_react["default"].createElement(
|
|
68
|
+
}) : tab.icon), /*#__PURE__*/_react["default"].createElement(_BaseTypography["default"], {
|
|
69
69
|
color: tab.isDisabled ? colorsTheme.tabs.disabledFontColor : active ? colorsTheme.tabs.selectedFontColor : colorsTheme.tabs.unselectedFontColor,
|
|
70
70
|
fontFamily: colorsTheme.tabs.fontFamily,
|
|
71
71
|
fontSize: colorsTheme.tabs.fontSize,
|
|
@@ -74,15 +74,15 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
74
74
|
textAlign: "center",
|
|
75
75
|
letterSpacing: "0.025em",
|
|
76
76
|
lineHeight: "1.715em"
|
|
77
|
-
}, tab.label)), tab.notificationNumber &&
|
|
77
|
+
}, tab.label)), tab.notificationNumber && /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
|
|
78
78
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
79
79
|
iconPosition: iconPosition
|
|
80
80
|
}, /*#__PURE__*/_react["default"].createElement(_Badge["default"], {
|
|
81
|
-
notificationText: tab.notificationNumber > 99 ? "+99" : tab.notificationNumber
|
|
81
|
+
notificationText: typeof tab.notificationNumber === "number" && tab.notificationNumber > 99 ? "+99" : tab.notificationNumber
|
|
82
82
|
})));
|
|
83
83
|
});
|
|
84
84
|
|
|
85
|
-
var TabContainer = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n text-transform: ", ";\n overflow: hidden;\n flex-shrink: 0;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n user-select: none;\n vertical-align: middle;\n justify-content: center;\n min-width: 90px;\n max-width: 360px;\n padding: ", ";\n height: ", ";\n min-height: ", ";\n background-color: ", ";\n
|
|
85
|
+
var TabContainer = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n text-transform: ", ";\n overflow: hidden;\n flex-shrink: 0;\n border: 0;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n user-select: none;\n vertical-align: middle;\n justify-content: center;\n min-width: 90px;\n max-width: 360px;\n padding: ", ";\n height: ", ";\n min-height: ", ";\n background-color: ", ";\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n svg {\n color: ", ";\n }\n\n &[aria-selected=\"true\"] {\n background-color: ", ";\n svg {\n color: ", ";\n }\n opacity: 1;\n }\n\n &[aria-disabled=\"true\"] {\n background-color: ", " !important;\n cursor: not-allowed !important;\n pointer-events: all;\n font-style: ", ";\n svg {\n color: ", ";\n }\n outline: none !important;\n > div {\n opacity: 0.5;\n }\n }\n"])), function (props) {
|
|
86
86
|
return props.theme.fontTextTransform;
|
|
87
87
|
}, function (props) {
|
|
88
88
|
return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "12px 16px" || "8px 16px";
|
|
@@ -92,14 +92,14 @@ var TabContainer = _styledComponents["default"].button(_templateObject || (_temp
|
|
|
92
92
|
return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "47px" || "71px";
|
|
93
93
|
}, function (props) {
|
|
94
94
|
return props.theme.unselectedBackgroundColor;
|
|
95
|
-
}, function (props) {
|
|
96
|
-
return props.theme.unselectedIconColor;
|
|
97
95
|
}, function (props) {
|
|
98
96
|
return "".concat(props.theme.hoverBackgroundColor, " !important");
|
|
99
97
|
}, function (props) {
|
|
100
98
|
return "".concat(props.theme.pressedBackgroundColor, " !important");
|
|
101
99
|
}, function (props) {
|
|
102
100
|
return props.theme.focusOutline;
|
|
101
|
+
}, function (props) {
|
|
102
|
+
return props.theme.unselectedIconColor;
|
|
103
103
|
}, function (props) {
|
|
104
104
|
return props.theme.selectedBackgroundColor;
|
|
105
105
|
}, function (props) {
|
|
@@ -119,17 +119,15 @@ var BadgeContainer = _styledComponents["default"].div(_templateObject2 || (_temp
|
|
|
119
119
|
var MainLabelContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: ", ";\n align-items: center;\n margin-left: ", ";\n"])), function (props) {
|
|
120
120
|
return props.hasLabelAndIcon && props.iconPosition === "top" && "column" || "row";
|
|
121
121
|
}, function (props) {
|
|
122
|
-
return props.
|
|
122
|
+
return props.notificationNumber ? typeof props.notificationNumber === "number" ? "calc(".concat(props.theme.badgeWidthWithNotificationNumber, " + 12px)") : "calc(".concat(props.theme.badgeWidth, " + 12px)") : "unset";
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
-
var TabIconContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
125
|
+
var TabIconContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n margin-bottom: ", ";\n margin-right: ", ";\n\n img,\n svg {\n height: 22px;\n width: 22px;\n }\n"])), function (props) {
|
|
126
126
|
return props.hasLabelAndIcon && props.iconPosition === "top" && "8px" || "";
|
|
127
127
|
}, function (props) {
|
|
128
128
|
return props.hasLabelAndIcon && props.iconPosition === "left" && "12px" || "";
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
-
var TabIcon = _styledComponents["default"].img(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n display: inline-flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n"])));
|
|
132
|
-
|
|
133
131
|
var _default = /*#__PURE__*/_react["default"].memo(Tab);
|
|
134
132
|
|
|
135
133
|
exports["default"] = _default;
|
package/tabs/Tabs.js
CHANGED
|
@@ -19,7 +19,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
19
19
|
|
|
20
20
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
21
21
|
|
|
22
|
-
var _variables = require("../common/variables
|
|
22
|
+
var _variables = require("../common/variables");
|
|
23
23
|
|
|
24
24
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
25
|
|
|
@@ -343,7 +343,6 @@ var DxcTabs = function DxcTabs(_ref) {
|
|
|
343
343
|
iconPosition: iconPosition
|
|
344
344
|
}, /*#__PURE__*/_react["default"].createElement(ScrollIndicator, {
|
|
345
345
|
onClick: scrollLeft,
|
|
346
|
-
scrollLeftEnabled: scrollLeftEnabled,
|
|
347
346
|
enabled: enabledIndicator,
|
|
348
347
|
"aria-disabled": !scrollLeftEnabled,
|
|
349
348
|
"aria-label": translatedLabels.tabs.scrollLeft,
|
|
@@ -386,7 +385,6 @@ var DxcTabs = function DxcTabs(_ref) {
|
|
|
386
385
|
"aria-disabled": isActiveIndicatorDisabled
|
|
387
386
|
}))), /*#__PURE__*/_react["default"].createElement(ScrollIndicator, {
|
|
388
387
|
onClick: scrollRight,
|
|
389
|
-
scrollRightEnabled: scrollRightEnabled,
|
|
390
388
|
enabled: enabledIndicator,
|
|
391
389
|
"aria-disabled": !scrollRightEnabled,
|
|
392
390
|
"aria-label": translatedLabels.tabs.scrollRight,
|
|
@@ -395,7 +393,7 @@ var DxcTabs = function DxcTabs(_ref) {
|
|
|
395
393
|
}, arrowIcons.right))));
|
|
396
394
|
};
|
|
397
395
|
|
|
398
|
-
var Underline = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n height: ", ";\n background-color: ", ";\n
|
|
396
|
+
var Underline = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n height: ", ";\n background-color: ", ";\n"])), function (props) {
|
|
399
397
|
return props.theme.dividerThickness;
|
|
400
398
|
}, function (props) {
|
|
401
399
|
return props.theme.dividerColor;
|
|
@@ -441,7 +439,7 @@ var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_
|
|
|
441
439
|
return props.theme.unselectedFontColor;
|
|
442
440
|
});
|
|
443
441
|
|
|
444
|
-
var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n left: ", ";\n width: ", ";\n
|
|
442
|
+
var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n left: ", ";\n width: ", ";\n background-color: ", ";\n bottom: 0;\n height: ", ";\n position: absolute;\n &[aria-disabled=\"true\"] {\n background-color: ", ";\n display: none;\n }\n"])), function (props) {
|
|
445
443
|
return "".concat(props.tabLeft, "px");
|
|
446
444
|
}, function (props) {
|
|
447
445
|
return "".concat(props.tabWidth, "px");
|
|
@@ -453,7 +451,7 @@ var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_te
|
|
|
453
451
|
return props.theme.disabledFontColor;
|
|
454
452
|
});
|
|
455
453
|
|
|
456
|
-
var TabsContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n
|
|
454
|
+
var TabsContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex: 1 1 auto;\n display: inline-block;\n position: relative;\n white-space: nowrap;\n overflow-x: scroll;\n ::-webkit-scrollbar {\n display: none;\n }\n"])));
|
|
457
455
|
|
|
458
456
|
var TabList = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n min-height: ", "px;\n"])), function (props) {
|
|
459
457
|
return props.minHeightTabs;
|
package/tabs/Tabs.stories.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import React from "react";
|
|
|
2
2
|
import DxcTabs from "./Tabs";
|
|
3
3
|
import Title from "../../.storybook/components/Title";
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
5
6
|
|
|
6
7
|
export default {
|
|
7
8
|
title: "Tabs",
|
|
@@ -9,9 +10,8 @@ export default {
|
|
|
9
10
|
};
|
|
10
11
|
|
|
11
12
|
const iconSVG = (
|
|
12
|
-
<svg viewBox="0 0
|
|
13
|
-
<path d="
|
|
14
|
-
<path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
|
|
13
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" height="20" width="20" fill="currentColor">
|
|
14
|
+
<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" />
|
|
15
15
|
</svg>
|
|
16
16
|
);
|
|
17
17
|
|
|
@@ -74,10 +74,20 @@ const tabsNotification = tabs.map((tab, index) => ({
|
|
|
74
74
|
notificationNumber: (index === 0 && true) || (index === 1 && 5) || (index === 2 && 200),
|
|
75
75
|
}));
|
|
76
76
|
|
|
77
|
-
const tabsIcon = tabs.map((tab) =>
|
|
77
|
+
const tabsIcon = tabs.map((tab, index) =>
|
|
78
|
+
index <= tabs.length / 2
|
|
79
|
+
? { ...tab, icon: "https://cdn-icons-png.flaticon.com/512/5039/5039041.png" }
|
|
80
|
+
: { ...tab, icon: iconSVG }
|
|
81
|
+
);
|
|
78
82
|
|
|
79
83
|
const tabsNotificationIcon = tabsNotification.map((tab) => ({ ...tab, icon: iconSVG }));
|
|
80
84
|
|
|
85
|
+
const opinionatedTheme = {
|
|
86
|
+
tabs: {
|
|
87
|
+
baseColor: "#5f249f",
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
|
|
81
91
|
export const Chromatic = () => (
|
|
82
92
|
<>
|
|
83
93
|
<ExampleContainer>
|
|
@@ -152,7 +162,37 @@ export const Chromatic = () => (
|
|
|
152
162
|
<ExampleContainer>
|
|
153
163
|
<Title title="Xxlarge margin" theme="light" level={4} />
|
|
154
164
|
<DxcTabs tabs={tabs} margin="xxlarge" />
|
|
155
|
-
|
|
165
|
+
</ExampleContainer>
|
|
166
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
167
|
+
<ExampleContainer>
|
|
168
|
+
<Title title="With icon and notification" theme="light" level={4} />
|
|
169
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
170
|
+
<DxcTabs tabs={tabsNotificationIcon} />
|
|
171
|
+
</HalstackProvider>
|
|
172
|
+
</ExampleContainer>
|
|
173
|
+
<ExampleContainer>
|
|
174
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
175
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
176
|
+
<DxcTabs activeTabIndex={0} tabs={disabledTabs} />
|
|
177
|
+
</HalstackProvider>
|
|
178
|
+
</ExampleContainer>
|
|
179
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
180
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
181
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
182
|
+
<DxcTabs tabs={tabs} />
|
|
183
|
+
</HalstackProvider>
|
|
184
|
+
</ExampleContainer>
|
|
185
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
186
|
+
<Title title="Focused" theme="light" level={4} />
|
|
187
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
188
|
+
<DxcTabs tabs={tabs} />
|
|
189
|
+
</HalstackProvider>
|
|
190
|
+
</ExampleContainer>
|
|
191
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
192
|
+
<Title title="Actived" theme="light" level={4} />
|
|
193
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
194
|
+
<DxcTabs tabs={tabs} />
|
|
195
|
+
</HalstackProvider>
|
|
156
196
|
</ExampleContainer>
|
|
157
197
|
</>
|
|
158
198
|
);
|