@dxc-technology/halstack-react 0.0.0-dddc3c4 → 0.0.0-de7c6b0
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.d.ts +1 -1
- package/accordion/Accordion.js +110 -114
- package/accordion/Accordion.stories.tsx +104 -114
- package/accordion/Accordion.test.js +10 -11
- package/accordion/types.d.ts +0 -11
- package/accordion-group/AccordionGroup.d.ts +4 -3
- package/accordion-group/AccordionGroup.js +24 -65
- package/accordion-group/AccordionGroup.stories.tsx +93 -66
- package/accordion-group/AccordionGroup.test.js +27 -62
- package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
- package/accordion-group/AccordionGroupAccordion.js +43 -0
- package/accordion-group/types.d.ts +6 -11
- package/alert/Alert.js +5 -9
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +1 -1
- package/bleed/Bleed.stories.tsx +1 -0
- package/box/Box.d.ts +1 -1
- package/box/Box.js +8 -27
- package/box/Box.stories.tsx +38 -51
- package/box/Box.test.js +1 -1
- package/box/types.d.ts +0 -11
- package/bulleted-list/BulletedList.js +4 -2
- package/bulleted-list/BulletedList.stories.tsx +7 -1
- package/bulleted-list/types.d.ts +31 -4
- package/button/Button.js +13 -16
- package/button/Button.stories.tsx +151 -9
- package/button/Button.test.js +1 -1
- package/button/types.d.ts +3 -3
- package/card/Card.d.ts +1 -1
- package/card/Card.js +27 -45
- package/card/Card.stories.tsx +12 -42
- package/card/Card.test.js +1 -1
- package/card/types.d.ts +1 -6
- 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 +28 -49
- package/chip/Chip.stories.tsx +121 -26
- package/chip/Chip.test.js +3 -5
- 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 +990 -1137
- 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.d.ts +1 -1
- package/dialog/Dialog.js +54 -85
- package/dialog/Dialog.stories.tsx +154 -170
- package/dialog/Dialog.test.js +302 -3
- package/dialog/types.d.ts +0 -12
- package/dropdown/Dropdown.js +43 -42
- package/dropdown/Dropdown.stories.tsx +210 -84
- package/dropdown/Dropdown.test.js +22 -27
- package/dropdown/DropdownMenu.js +12 -18
- package/dropdown/DropdownMenuItem.js +5 -18
- package/dropdown/types.d.ts +3 -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 +1 -1
- package/flex/Flex.js +33 -19
- package/flex/Flex.stories.tsx +35 -26
- package/flex/types.d.ts +83 -7
- package/footer/Footer.d.ts +1 -1
- package/footer/Footer.js +8 -23
- package/footer/Footer.stories.tsx +26 -16
- package/footer/Footer.test.js +14 -26
- package/footer/types.d.ts +0 -5
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +91 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/header/Header.d.ts +4 -3
- package/header/Header.js +20 -49
- package/header/Header.stories.tsx +115 -36
- package/header/Header.test.js +2 -2
- package/header/types.d.ts +1 -14
- package/heading/Heading.js +1 -1
- package/heading/Heading.test.js +1 -1
- package/inset/Inset.stories.tsx +2 -1
- package/layout/ApplicationLayout.d.ts +5 -5
- package/layout/ApplicationLayout.js +1 -1
- package/layout/types.d.ts +2 -3
- package/link/Link.js +4 -4
- 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 +3 -2
- package/main.js +9 -1
- package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
- package/{tabs-nav → nav-tabs}/NavTabs.js +8 -11
- package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +110 -6
- package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
- package/{tabs-nav → nav-tabs}/Tab.js +49 -33
- package/{tabs-nav → nav-tabs}/types.d.ts +8 -9
- package/nav-tabs/types.js +5 -0
- package/number-input/NumberInput.test.js +44 -8
- package/package.json +13 -18
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +8 -16
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +58 -48
- package/paragraph/Paragraph.d.ts +3 -4
- package/paragraph/Paragraph.js +5 -5
- package/password-input/PasswordInput.test.js +14 -13
- 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.js +11 -12
- package/quick-nav/QuickNav.stories.tsx +111 -19
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +46 -31
- package/radio-group/RadioGroup.js +23 -23
- 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 +41 -64
- package/resultsetTable/types.d.ts +1 -1
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +5 -35
- package/select/Option.js +11 -24
- package/select/Select.js +59 -36
- package/select/Select.stories.tsx +494 -150
- package/select/Select.test.js +341 -288
- package/select/types.d.ts +2 -2
- package/sidenav/Icons.d.ts +7 -0
- package/sidenav/Icons.js +51 -0
- package/sidenav/Sidenav.d.ts +2 -2
- package/sidenav/Sidenav.js +66 -96
- package/sidenav/Sidenav.stories.tsx +165 -63
- package/sidenav/types.d.ts +21 -18
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +24 -15
- package/slider/Slider.stories.tsx +57 -0
- package/slider/Slider.test.js +1 -1
- package/slider/types.d.ts +6 -2
- 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 +3 -3
- package/switch/Switch.js +96 -85
- package/switch/Switch.stories.tsx +33 -0
- package/switch/Switch.test.js +27 -14
- package/switch/types.d.ts +8 -3
- package/table/Table.js +3 -3
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +2 -2
- package/tabs/Tab.js +12 -15
- package/tabs/Tabs.js +11 -17
- 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 +8 -10
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +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 +189 -277
- package/text-input/TextInput.stories.tsx +280 -184
- package/text-input/TextInput.test.js +736 -725
- package/text-input/types.d.ts +21 -2
- package/textarea/Textarea.js +3 -4
- package/textarea/Textarea.stories.jsx +60 -1
- package/textarea/Textarea.test.js +2 -4
- package/toggle-group/ToggleGroup.d.ts +2 -2
- 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 +138 -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/card/ice-cream.jpg +0 -0
- package/common/RequiredComponent.js +0 -32
- /package/{tabs-nav → grid}/types.js +0 -0
- /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
|
@@ -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 () {
|
|
@@ -185,28 +185,41 @@ describe("Switch component tests", function () {
|
|
|
185
185
|
expect(onChange.mock.calls[1][0]).toBe(false);
|
|
186
186
|
});
|
|
187
187
|
test("Renders with correct initial value and initial state when it is uncontrolled", function () {
|
|
188
|
-
var
|
|
188
|
+
var component = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
189
189
|
label: "Default label",
|
|
190
190
|
defaultChecked: true,
|
|
191
|
-
value: "test-defaultChecked"
|
|
191
|
+
value: "test-defaultChecked",
|
|
192
|
+
name: "test"
|
|
193
|
+
}));
|
|
194
|
+
var switchEl = component.getByRole("switch");
|
|
195
|
+
var inputEl = component.container.querySelector("input[name=\"test\"]");
|
|
196
|
+
expect(inputEl.value).toBe("test-defaultChecked");
|
|
197
|
+
expect(switchEl.getAttribute("aria-checked")).toBe("true");
|
|
198
|
+
});
|
|
199
|
+
test("Renders with correct aria attributes", function () {
|
|
200
|
+
var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
201
|
+
label: "Default label"
|
|
192
202
|
})),
|
|
203
|
+
getByText = _render10.getByText,
|
|
193
204
|
getByRole = _render10.getByRole;
|
|
194
205
|
|
|
195
|
-
var
|
|
196
|
-
|
|
197
|
-
expect(
|
|
198
|
-
expect(
|
|
206
|
+
var switchEl = getByRole("switch");
|
|
207
|
+
var label = getByText("Default label");
|
|
208
|
+
expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
|
|
209
|
+
expect(switchEl.getAttribute("aria-checked")).toBe("false");
|
|
199
210
|
});
|
|
200
|
-
test("Renders
|
|
211
|
+
test("Renders disabled switch correctly", function () {
|
|
201
212
|
var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Switch["default"], {
|
|
202
|
-
label: "Default label"
|
|
213
|
+
label: "Default label",
|
|
214
|
+
disabled: true
|
|
203
215
|
})),
|
|
204
|
-
|
|
205
|
-
|
|
216
|
+
getByText = _render11.getByText,
|
|
217
|
+
getByRole = _render11.getByRole;
|
|
206
218
|
|
|
207
|
-
var
|
|
219
|
+
var switchEl = getByRole("switch");
|
|
208
220
|
var label = getByText("Default label");
|
|
209
|
-
expect(
|
|
210
|
-
expect(
|
|
221
|
+
expect(switchEl.getAttribute("aria-labelledby")).toBe(label.id);
|
|
222
|
+
expect(switchEl.getAttribute("aria-checked")).toBe("false");
|
|
223
|
+
expect(switchEl.getAttribute("aria-disabled")).toBe("true");
|
|
211
224
|
});
|
|
212
225
|
});
|
package/switch/types.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
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;
|
|
6
6
|
right?: Space;
|
|
7
7
|
};
|
|
8
|
-
|
|
8
|
+
declare type Props = {
|
|
9
9
|
/**
|
|
10
10
|
* Initial state of the switch, only when it is uncontrolled.
|
|
11
11
|
*/
|
|
@@ -59,3 +59,8 @@ export declare type SwitchPropsType = {
|
|
|
59
59
|
*/
|
|
60
60
|
tabIndex?: number;
|
|
61
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Reference to the component.
|
|
64
|
+
*/
|
|
65
|
+
export declare type RefType = HTMLDivElement;
|
|
66
|
+
export default Props;
|
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
|
|
|
@@ -66,7 +66,7 @@ var DxcTableContainer = _styledComponents["default"].div(_templateObject || (_te
|
|
|
66
66
|
return props.theme.scrollBarTrackColor;
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n border-collapse: collapse;\n width: 100%;\n\n & tr {\n border-bottom: ", ";\n }\n & td {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th:first-child {\n border-top-left-radius: ", ";\n }\n & th:last-child {\n border-top-right-radius: ", ";\n }\n"])), function (props) {
|
|
69
|
+
var DxcTableContent = _styledComponents["default"].table(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n border-collapse: collapse;\n width: 100%;\n\n & tr {\n border-bottom: ", ";\n height: 60px;\n }\n & td {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th {\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n color: ", ";\n text-transform: ", ";\n text-align: ", ";\n line-height: ", ";\n padding: ", ";\n }\n & th:first-child {\n border-top-left-radius: ", ";\n }\n & th:last-child {\n border-top-right-radius: ", ";\n }\n & td:last-child {\n padding-right: 40px;\n }\n"])), function (props) {
|
|
70
70
|
return "".concat(props.theme.rowSeparatorThickness, " ").concat(props.theme.rowSeparatorStyle, " ").concat(props.theme.rowSeparatorColor);
|
|
71
71
|
}, function (props) {
|
|
72
72
|
return props.theme.dataBackgroundColor;
|
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,11 +6,11 @@ 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 () {
|
|
13
|
-
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Table["default"], null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "header-1"), /*#__PURE__*/_react["default"].createElement("th", null, "header-2"), /*#__PURE__*/_react["default"].createElement("th", null, "header-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-1"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-2"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-4"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-5"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-6")))),
|
|
13
|
+
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Table["default"], null, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("th", null, "header-1"), /*#__PURE__*/_react["default"].createElement("th", null, "header-2"), /*#__PURE__*/_react["default"].createElement("th", null, "header-3"))), /*#__PURE__*/_react["default"].createElement("tbody", null, /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-1"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-2"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-3")), /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", null, "cell-4"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-5"), /*#__PURE__*/_react["default"].createElement("td", null, "cell-6"))))),
|
|
14
14
|
getByText = _render.getByText;
|
|
15
15
|
|
|
16
16
|
expect(getByText("header-1")).toBeTruthy();
|
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
|
|
|
@@ -42,7 +42,6 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
42
42
|
type: "button",
|
|
43
43
|
tabIndex: tabIndex,
|
|
44
44
|
disabled: tab.isDisabled,
|
|
45
|
-
"aria-disabled": tab.isDisabled,
|
|
46
45
|
"aria-selected": active,
|
|
47
46
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
48
47
|
iconPosition: iconPosition,
|
|
@@ -57,15 +56,15 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
57
56
|
_onMouseLeave();
|
|
58
57
|
}
|
|
59
58
|
}, /*#__PURE__*/_react["default"].createElement(MainLabelContainer, {
|
|
60
|
-
|
|
59
|
+
notificationNumber: tab.notificationNumber,
|
|
61
60
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
62
61
|
iconPosition: iconPosition
|
|
63
62
|
}, tab.icon && /*#__PURE__*/_react["default"].createElement(TabIconContainer, {
|
|
64
63
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
65
64
|
iconPosition: iconPosition
|
|
66
|
-
}, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement(
|
|
65
|
+
}, typeof tab.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
|
|
67
66
|
src: tab.icon
|
|
68
|
-
}) : tab.icon), /*#__PURE__*/_react["default"].createElement(
|
|
67
|
+
}) : tab.icon), /*#__PURE__*/_react["default"].createElement(_BaseTypography["default"], {
|
|
69
68
|
color: tab.isDisabled ? colorsTheme.tabs.disabledFontColor : active ? colorsTheme.tabs.selectedFontColor : colorsTheme.tabs.unselectedFontColor,
|
|
70
69
|
fontFamily: colorsTheme.tabs.fontFamily,
|
|
71
70
|
fontSize: colorsTheme.tabs.fontSize,
|
|
@@ -74,15 +73,15 @@ var Tab = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
74
73
|
textAlign: "center",
|
|
75
74
|
letterSpacing: "0.025em",
|
|
76
75
|
lineHeight: "1.715em"
|
|
77
|
-
}, tab.label)), tab.notificationNumber &&
|
|
76
|
+
}, tab.label)), tab.notificationNumber && /*#__PURE__*/_react["default"].createElement(BadgeContainer, {
|
|
78
77
|
hasLabelAndIcon: hasLabelAndIcon,
|
|
79
78
|
iconPosition: iconPosition
|
|
80
79
|
}, /*#__PURE__*/_react["default"].createElement(_Badge["default"], {
|
|
81
|
-
notificationText: tab.notificationNumber > 99 ? "+99" : tab.notificationNumber
|
|
80
|
+
notificationText: typeof tab.notificationNumber === "number" && tab.notificationNumber > 99 ? "+99" : tab.notificationNumber
|
|
82
81
|
})));
|
|
83
82
|
});
|
|
84
83
|
|
|
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
|
|
84
|
+
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 &:disabled {\n background-color: ", " !important;\n cursor: not-allowed !important;\n pointer-events: all;\n font-style: ", ";\n outline: none !important;\n\n svg {\n color: ", ";\n }\n > div {\n opacity: 0.5;\n }\n }\n"])), function (props) {
|
|
86
85
|
return props.theme.fontTextTransform;
|
|
87
86
|
}, function (props) {
|
|
88
87
|
return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "12px 16px" || "8px 16px";
|
|
@@ -92,14 +91,14 @@ var TabContainer = _styledComponents["default"].button(_templateObject || (_temp
|
|
|
92
91
|
return (!props.hasLabelAndIcon || props.hasLabelAndIcon && props.iconPosition !== "top") && "47px" || "71px";
|
|
93
92
|
}, function (props) {
|
|
94
93
|
return props.theme.unselectedBackgroundColor;
|
|
95
|
-
}, function (props) {
|
|
96
|
-
return props.theme.unselectedIconColor;
|
|
97
94
|
}, function (props) {
|
|
98
95
|
return "".concat(props.theme.hoverBackgroundColor, " !important");
|
|
99
96
|
}, function (props) {
|
|
100
97
|
return "".concat(props.theme.pressedBackgroundColor, " !important");
|
|
101
98
|
}, function (props) {
|
|
102
99
|
return props.theme.focusOutline;
|
|
100
|
+
}, function (props) {
|
|
101
|
+
return props.theme.unselectedIconColor;
|
|
103
102
|
}, function (props) {
|
|
104
103
|
return props.theme.selectedBackgroundColor;
|
|
105
104
|
}, function (props) {
|
|
@@ -119,17 +118,15 @@ var BadgeContainer = _styledComponents["default"].div(_templateObject2 || (_temp
|
|
|
119
118
|
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
119
|
return props.hasLabelAndIcon && props.iconPosition === "top" && "column" || "row";
|
|
121
120
|
}, function (props) {
|
|
122
|
-
return props.
|
|
121
|
+
return props.notificationNumber ? typeof props.notificationNumber === "number" ? "calc(".concat(props.theme.badgeWidthWithNotificationNumber, " + 12px)") : "calc(".concat(props.theme.badgeWidth, " + 12px)") : "unset";
|
|
123
122
|
});
|
|
124
123
|
|
|
125
|
-
var TabIconContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
124
|
+
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
125
|
return props.hasLabelAndIcon && props.iconPosition === "top" && "8px" || "";
|
|
127
126
|
}, function (props) {
|
|
128
127
|
return props.hasLabelAndIcon && props.iconPosition === "left" && "12px" || "";
|
|
129
128
|
});
|
|
130
129
|
|
|
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
130
|
var _default = /*#__PURE__*/_react["default"].memo(Tab);
|
|
134
131
|
|
|
135
132
|
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
|
|
|
@@ -193,7 +193,7 @@ var DxcTabs = function DxcTabs(_ref) {
|
|
|
193
193
|
var _refTabList$current3;
|
|
194
194
|
|
|
195
195
|
var scrollWidth = (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current3 = refTabList.current) === null || _refTabList$current3 === void 0 ? void 0 : _refTabList$current3.offsetWidth) * 0.75;
|
|
196
|
-
var moveX;
|
|
196
|
+
var moveX = 0;
|
|
197
197
|
|
|
198
198
|
if (countClick <= scrollWidth) {
|
|
199
199
|
moveX = 0;
|
|
@@ -213,7 +213,7 @@ var DxcTabs = function DxcTabs(_ref) {
|
|
|
213
213
|
var _refTabList$current4, _refTabList$current5;
|
|
214
214
|
|
|
215
215
|
var scrollWidth = (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current4 = refTabList.current) === null || _refTabList$current4 === void 0 ? void 0 : _refTabList$current4.offsetWidth) * 0.75;
|
|
216
|
-
var moveX;
|
|
216
|
+
var moveX = 0;
|
|
217
217
|
|
|
218
218
|
if (countClick + scrollWidth + (refTabList === null || refTabList === void 0 ? void 0 : (_refTabList$current5 = refTabList.current) === null || _refTabList$current5 === void 0 ? void 0 : _refTabList$current5.offsetWidth) >= totalTabsWidth) {
|
|
219
219
|
var _refTabList$current6;
|
|
@@ -343,9 +343,8 @@ 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
|
+
disabled: !scrollLeftEnabled,
|
|
349
348
|
"aria-label": translatedLabels.tabs.scrollLeft,
|
|
350
349
|
tabIndex: scrollLeftEnabled ? tabIndex : -1,
|
|
351
350
|
minHeightTabs: minHeightTabs
|
|
@@ -386,16 +385,15 @@ 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
|
+
disabled: !scrollRightEnabled,
|
|
392
390
|
"aria-label": translatedLabels.tabs.scrollRight,
|
|
393
391
|
tabIndex: scrollRightEnabled ? tabIndex : -1,
|
|
394
392
|
minHeightTabs: minHeightTabs
|
|
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
|
|
396
|
+
var Underline = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: ", ";\n background-color: ", ";\n"])), function (props) {
|
|
399
397
|
return props.theme.dividerThickness;
|
|
400
398
|
}, function (props) {
|
|
401
399
|
return props.theme.dividerColor;
|
|
@@ -421,16 +419,12 @@ var Tabs = _styledComponents["default"].div(_templateObject3 || (_templateObject
|
|
|
421
419
|
return props.theme.unselectedBackgroundColor;
|
|
422
420
|
});
|
|
423
421
|
|
|
424
|
-
var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: ", ";\n
|
|
422
|
+
var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: ", ";\n justify-content: center;\n min-width: ", ";\n height: ", "px;\n padding: 0;\n border: none;\n background-color: #ffffff;\n font-size: 1.25rem;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 1px;\n outline-offset: -1px;\n }\n &:active {\n background-color: ", ";\n }\n &:disabled {\n cursor: default;\n svg {\n visibility: hidden;\n }\n &:focus {\n outline: none;\n }\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n }\n\n svg {\n align-self: center;\n height: 20px;\n width: 20px;\n fill: ", ";\n }\n"])), function (props) {
|
|
425
423
|
return props.enabled ? "flex" : "none";
|
|
426
424
|
}, function (props) {
|
|
427
425
|
return props.theme.scrollButtonsWidth;
|
|
428
426
|
}, function (props) {
|
|
429
427
|
return props.minHeightTabs - 1;
|
|
430
|
-
}, function (props) {
|
|
431
|
-
return props.theme.dividerThickness;
|
|
432
|
-
}, function (props) {
|
|
433
|
-
return props.theme.dividerColor;
|
|
434
428
|
}, function (props) {
|
|
435
429
|
return "".concat(props.theme.hoverBackgroundColor, " !important");
|
|
436
430
|
}, function (props) {
|
|
@@ -441,19 +435,19 @@ var ScrollIndicator = _styledComponents["default"].button(_templateObject4 || (_
|
|
|
441
435
|
return props.theme.unselectedFontColor;
|
|
442
436
|
});
|
|
443
437
|
|
|
444
|
-
var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
438
|
+
var ActiveIndicator = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n bottom: 0;\n left: ", ";\n width: ", ";\n height: ", ";\n background-color: ", ";\n &[aria-disabled=\"true\"] {\n background-color: ", ";\n display: none;\n }\n"])), function (props) {
|
|
445
439
|
return "".concat(props.tabLeft, "px");
|
|
446
440
|
}, function (props) {
|
|
447
441
|
return "".concat(props.tabWidth, "px");
|
|
448
|
-
}, function (props) {
|
|
449
|
-
return props.theme.selectedUnderlineColor;
|
|
450
442
|
}, function (props) {
|
|
451
443
|
return props.theme.selectedUnderlineThickness;
|
|
444
|
+
}, function (props) {
|
|
445
|
+
return props.theme.selectedUnderlineColor;
|
|
452
446
|
}, function (props) {
|
|
453
447
|
return props.theme.disabledFontColor;
|
|
454
448
|
});
|
|
455
449
|
|
|
456
|
-
var TabsContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n
|
|
450
|
+
var TabsContent = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\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
451
|
|
|
458
452
|
var TabList = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n min-height: ", "px;\n"])), function (props) {
|
|
459
453
|
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
|
);
|
package/tabs/Tabs.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 _Tabs = _interopRequireDefault(require("./Tabs"));
|
|
9
|
+
var _Tabs = _interopRequireDefault(require("./Tabs.tsx"));
|
|
10
10
|
|
|
11
11
|
var sampleTabs = [{
|
|
12
12
|
label: "Tab-1"
|
|
@@ -17,13 +17,13 @@ var sampleTabs = [{
|
|
|
17
17
|
}];
|
|
18
18
|
var sampleTabsWithBadge = [{
|
|
19
19
|
label: "Tab-1",
|
|
20
|
-
notificationNumber:
|
|
20
|
+
notificationNumber: 10
|
|
21
21
|
}, {
|
|
22
22
|
label: "Tab-2",
|
|
23
|
-
notificationNumber:
|
|
23
|
+
notificationNumber: 20
|
|
24
24
|
}, {
|
|
25
25
|
label: "Tab-3",
|
|
26
|
-
notificationNumber:
|
|
26
|
+
notificationNumber: 101
|
|
27
27
|
}];
|
|
28
28
|
var sampleTabsMiddleDisabled = [{
|
|
29
29
|
label: "Tab-1"
|
|
@@ -149,7 +149,6 @@ describe("Tabs component tests", function () {
|
|
|
149
149
|
onTabClick: onTabClick,
|
|
150
150
|
activeTabIndex: 0
|
|
151
151
|
})),
|
|
152
|
-
getByText = _render7.getByText,
|
|
153
152
|
getAllByRole = _render7.getAllByRole;
|
|
154
153
|
|
|
155
154
|
var tabs = getAllByRole("tab");
|
package/tabs/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
|
|
3
|
+
declare type Margin = {
|
|
4
4
|
top?: Space;
|
|
5
5
|
bottom?: Space;
|
|
6
6
|
left?: Space;
|