@dxc-technology/halstack-react 0.0.0-c9b5c13 → 0.0.0-ca55cbe
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BackgroundColorContext.d.ts +2 -2
- package/BackgroundColorContext.js +1 -1
- package/HalstackContext.d.ts +1329 -5
- package/HalstackContext.js +117 -77
- package/accordion/Accordion.js +118 -110
- package/accordion/Accordion.stories.tsx +104 -16
- package/accordion/Accordion.test.js +10 -11
- package/accordion/types.d.ts +2 -1
- package/accordion-group/AccordionGroup.js +4 -23
- package/accordion-group/AccordionGroup.stories.tsx +27 -1
- package/accordion-group/AccordionGroup.test.js +21 -46
- package/accordion-group/types.d.ts +8 -1
- package/alert/Alert.js +4 -6
- package/alert/Alert.stories.tsx +28 -0
- package/alert/Alert.test.js +1 -1
- package/bleed/Bleed.js +1 -34
- package/bleed/Bleed.stories.tsx +95 -95
- package/bleed/types.d.ts +1 -1
- package/box/Box.js +4 -6
- package/box/Box.stories.tsx +15 -0
- package/box/Box.test.js +1 -1
- package/box/types.d.ts +1 -0
- package/bulleted-list/BulletedList.d.ts +7 -0
- package/bulleted-list/BulletedList.js +125 -0
- package/bulleted-list/BulletedList.stories.tsx +206 -0
- package/bulleted-list/types.d.ts +11 -0
- package/button/Button.js +52 -73
- package/button/Button.stories.tsx +159 -8
- package/button/Button.test.js +1 -1
- package/button/types.d.ts +5 -5
- package/card/Card.js +12 -13
- package/card/Card.stories.tsx +12 -13
- package/card/Card.test.js +1 -1
- package/card/types.d.ts +1 -0
- package/checkbox/Checkbox.d.ts +2 -2
- package/checkbox/Checkbox.js +94 -101
- package/checkbox/Checkbox.stories.tsx +131 -59
- package/checkbox/Checkbox.test.js +94 -17
- package/checkbox/types.d.ts +4 -0
- package/chip/Chip.js +18 -26
- package/chip/Chip.stories.tsx +96 -9
- package/chip/Chip.test.js +3 -5
- package/chip/types.d.ts +1 -1
- package/common/OpenSans.css +68 -80
- package/common/coreTokens.d.ts +146 -0
- package/common/coreTokens.js +167 -0
- package/common/utils.d.ts +1 -0
- package/common/utils.js +4 -4
- package/common/variables.d.ts +1482 -0
- package/common/variables.js +1009 -1118
- package/date-input/Calendar.d.ts +4 -0
- package/date-input/Calendar.js +258 -0
- package/date-input/DateInput.js +134 -237
- package/date-input/DateInput.stories.tsx +199 -33
- package/date-input/DateInput.test.js +494 -138
- package/date-input/DatePicker.d.ts +4 -0
- package/date-input/DatePicker.js +146 -0
- package/date-input/Icons.d.ts +6 -0
- package/date-input/Icons.js +75 -0
- package/date-input/YearPicker.d.ts +4 -0
- package/date-input/YearPicker.js +126 -0
- package/date-input/types.d.ts +51 -0
- package/dialog/Dialog.js +80 -69
- package/dialog/Dialog.stories.tsx +230 -123
- package/dialog/Dialog.test.js +334 -5
- package/dialog/types.d.ts +1 -0
- package/dropdown/Dropdown.d.ts +1 -1
- package/dropdown/Dropdown.js +246 -249
- package/dropdown/Dropdown.stories.tsx +245 -56
- package/dropdown/Dropdown.test.js +507 -110
- package/dropdown/DropdownMenu.d.ts +4 -0
- package/dropdown/DropdownMenu.js +74 -0
- package/dropdown/DropdownMenuItem.d.ts +4 -0
- package/dropdown/DropdownMenuItem.js +79 -0
- package/dropdown/types.d.ts +23 -3
- package/file-input/FileInput.d.ts +2 -2
- package/file-input/FileInput.js +174 -220
- package/file-input/FileInput.stories.tsx +122 -11
- package/file-input/FileInput.test.js +14 -14
- package/file-input/FileItem.d.ts +4 -14
- package/file-input/FileItem.js +39 -63
- package/file-input/types.d.ts +17 -0
- package/flex/Flex.d.ts +4 -0
- package/flex/Flex.js +71 -0
- package/flex/Flex.stories.tsx +112 -0
- package/flex/types.d.ts +97 -0
- package/footer/Footer.js +6 -8
- package/footer/Footer.stories.tsx +99 -1
- package/footer/Footer.test.js +14 -26
- package/footer/Icons.js +1 -1
- package/footer/types.d.ts +2 -1
- package/grid/Grid.d.ts +7 -0
- package/grid/Grid.js +91 -0
- package/grid/Grid.stories.tsx +219 -0
- package/grid/types.d.ts +115 -0
- package/header/Header.d.ts +3 -2
- package/header/Header.js +89 -89
- package/header/Header.stories.tsx +152 -9
- package/header/Header.test.js +2 -2
- package/header/Icons.js +2 -2
- package/header/types.d.ts +1 -0
- package/heading/Heading.js +1 -1
- package/heading/Heading.test.js +1 -1
- package/inset/Inset.js +1 -34
- package/inset/Inset.stories.tsx +37 -36
- package/inset/types.d.ts +1 -1
- package/layout/ApplicationLayout.d.ts +15 -6
- package/layout/ApplicationLayout.js +38 -66
- package/layout/ApplicationLayout.stories.tsx +80 -44
- package/layout/types.d.ts +18 -29
- package/link/Link.js +4 -4
- package/link/Link.stories.tsx +73 -6
- package/link/Link.test.js +2 -4
- package/link/types.d.ts +3 -3
- package/main.d.ts +7 -9
- package/main.js +33 -49
- package/{tabs-nav → nav-tabs}/NavTabs.js +6 -6
- package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
- package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
- package/{tabs-nav → nav-tabs}/Tab.js +40 -22
- package/{tabs-nav → nav-tabs}/types.d.ts +1 -1
- package/number-input/NumberInput.test.js +44 -8
- package/package.json +17 -21
- package/paginator/Icons.d.ts +5 -0
- package/paginator/Icons.js +16 -28
- package/paginator/Paginator.js +7 -15
- package/paginator/Paginator.stories.tsx +24 -0
- package/paginator/Paginator.test.js +78 -39
- package/paragraph/Paragraph.d.ts +5 -0
- package/paragraph/Paragraph.js +38 -0
- package/paragraph/Paragraph.stories.tsx +44 -0
- package/password-input/PasswordInput.test.js +14 -13
- package/progress-bar/ProgressBar.js +60 -54
- package/progress-bar/ProgressBar.stories.jsx +38 -3
- package/progress-bar/ProgressBar.test.js +68 -23
- package/quick-nav/QuickNav.js +25 -20
- package/quick-nav/QuickNav.stories.tsx +145 -26
- package/radio-group/Radio.d.ts +1 -1
- package/radio-group/Radio.js +43 -28
- package/radio-group/RadioGroup.js +23 -22
- package/radio-group/RadioGroup.stories.tsx +132 -18
- package/radio-group/RadioGroup.test.js +124 -97
- package/radio-group/types.d.ts +2 -2
- package/resultsetTable/Icons.d.ts +7 -0
- package/resultsetTable/Icons.js +51 -0
- package/resultsetTable/ResultsetTable.js +49 -108
- package/resultsetTable/ResultsetTable.stories.tsx +50 -25
- package/resultsetTable/ResultsetTable.test.js +61 -42
- package/resultsetTable/types.d.ts +1 -1
- package/select/Listbox.d.ts +1 -1
- package/select/Listbox.js +33 -16
- package/select/Option.js +11 -24
- package/select/Select.js +92 -71
- package/select/Select.stories.tsx +513 -136
- package/select/Select.test.js +413 -305
- package/select/types.d.ts +3 -6
- package/sidenav/Icons.d.ts +7 -0
- package/sidenav/Icons.js +51 -0
- package/sidenav/Sidenav.d.ts +6 -5
- package/sidenav/Sidenav.js +139 -48
- package/sidenav/Sidenav.stories.tsx +251 -151
- package/sidenav/Sidenav.test.js +25 -37
- package/sidenav/types.d.ts +52 -26
- package/slider/Slider.d.ts +2 -2
- package/slider/Slider.js +121 -97
- package/slider/Slider.stories.tsx +64 -1
- package/slider/Slider.test.js +122 -22
- package/slider/types.d.ts +4 -0
- package/spinner/Spinner.js +17 -23
- package/spinner/Spinner.stories.jsx +53 -27
- package/spinner/Spinner.test.js +1 -1
- package/switch/Switch.d.ts +2 -2
- package/switch/Switch.js +137 -70
- package/switch/Switch.stories.tsx +41 -30
- package/switch/Switch.test.js +145 -18
- package/switch/types.d.ts +4 -0
- package/table/Table.js +3 -3
- package/table/Table.stories.jsx +80 -1
- package/table/Table.test.js +2 -2
- package/tabs/Tab.d.ts +4 -0
- package/tabs/Tab.js +132 -0
- package/tabs/Tabs.js +358 -108
- package/tabs/Tabs.stories.tsx +119 -5
- package/tabs/Tabs.test.js +220 -10
- package/tabs/types.d.ts +13 -3
- package/tag/Tag.js +8 -10
- package/tag/Tag.stories.tsx +14 -1
- package/tag/Tag.test.js +1 -1
- package/tag/types.d.ts +1 -1
- package/text-input/Icons.d.ts +8 -0
- package/text-input/Icons.js +60 -0
- package/text-input/Suggestion.js +40 -11
- package/text-input/Suggestions.d.ts +4 -0
- package/text-input/Suggestions.js +134 -0
- package/text-input/TextInput.js +198 -295
- package/text-input/TextInput.stories.tsx +280 -185
- package/text-input/TextInput.test.js +736 -725
- package/text-input/types.d.ts +22 -3
- package/textarea/Textarea.js +3 -4
- package/textarea/Textarea.stories.jsx +60 -1
- package/textarea/Textarea.test.js +2 -4
- package/toggle-group/ToggleGroup.js +7 -4
- package/toggle-group/ToggleGroup.stories.tsx +42 -0
- package/toggle-group/ToggleGroup.test.js +1 -1
- package/toggle-group/types.d.ts +2 -2
- package/typography/Typography.d.ts +4 -0
- package/typography/Typography.js +32 -0
- package/typography/Typography.stories.tsx +198 -0
- package/typography/types.d.ts +18 -0
- package/typography/types.js +5 -0
- package/useTheme.d.ts +1234 -1
- package/useTheme.js +1 -1
- package/useTranslatedLabels.d.ts +84 -1
- package/utils/BaseTypography.d.ts +21 -0
- package/utils/BaseTypography.js +108 -0
- package/utils/FocusLock.d.ts +13 -0
- package/utils/FocusLock.js +139 -0
- package/wizard/Wizard.js +10 -17
- package/wizard/Wizard.stories.tsx +40 -1
- package/wizard/Wizard.test.js +1 -1
- package/wizard/types.d.ts +3 -3
- package/common/RequiredComponent.js +0 -32
- package/list/List.d.ts +0 -4
- package/list/List.js +0 -47
- package/list/List.stories.tsx +0 -95
- package/list/types.d.ts +0 -7
- package/row/Row.d.ts +0 -3
- package/row/Row.js +0 -127
- package/row/Row.stories.tsx +0 -237
- package/row/types.d.ts +0 -28
- package/stack/Stack.d.ts +0 -3
- package/stack/Stack.js +0 -97
- package/stack/Stack.stories.tsx +0 -164
- package/stack/types.d.ts +0 -24
- package/text/Text.d.ts +0 -7
- package/text/Text.js +0 -30
- package/text/Text.stories.tsx +0 -19
- /package/{list → bulleted-list}/types.js +0 -0
- /package/{row → flex}/types.js +0 -0
- /package/{stack → grid}/types.js +0 -0
- /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
- /package/{tabs-nav → nav-tabs}/types.js +0 -0
package/text-input/types.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ declare type Margin = {
|
|
|
6
6
|
left?: Space;
|
|
7
7
|
right?: Space;
|
|
8
8
|
};
|
|
9
|
-
declare type SVG = React.SVGProps<SVGSVGElement>;
|
|
9
|
+
declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
|
|
10
10
|
declare type Action = {
|
|
11
11
|
/**
|
|
12
12
|
* This function will be called when the user clicks the action.
|
|
@@ -159,20 +159,39 @@ declare type Props = {
|
|
|
159
159
|
*/
|
|
160
160
|
tabIndex?: number;
|
|
161
161
|
};
|
|
162
|
+
/**
|
|
163
|
+
* List of suggestions of an Text Input component.
|
|
164
|
+
*/
|
|
165
|
+
export declare type SuggestionsProps = {
|
|
166
|
+
id: string;
|
|
167
|
+
value: string;
|
|
168
|
+
suggestions: string[];
|
|
169
|
+
visualFocusIndex: number;
|
|
170
|
+
highlightedSuggestions: boolean;
|
|
171
|
+
searchHasErrors: boolean;
|
|
172
|
+
isSearching: boolean;
|
|
173
|
+
suggestionOnClick: (suggestion: string) => void;
|
|
174
|
+
getTextInputWidth: () => number;
|
|
175
|
+
};
|
|
162
176
|
/**
|
|
163
177
|
* Reference to the component.
|
|
164
178
|
*/
|
|
165
179
|
export declare type RefType = HTMLDivElement;
|
|
166
180
|
/**
|
|
167
|
-
* Single suggestion of
|
|
181
|
+
* Single suggestion of an Text Input component.
|
|
168
182
|
*/
|
|
169
183
|
export declare type SuggestionProps = {
|
|
170
184
|
id: string;
|
|
171
185
|
value: string;
|
|
172
|
-
onClick: () => void;
|
|
186
|
+
onClick: (suggestion: string) => void;
|
|
173
187
|
suggestion: string;
|
|
174
188
|
isLast: boolean;
|
|
175
189
|
visuallyFocused: boolean;
|
|
176
190
|
highlighted: boolean;
|
|
177
191
|
};
|
|
192
|
+
export declare type AutosuggestWrapperProps = {
|
|
193
|
+
condition: boolean;
|
|
194
|
+
wrapper: (children: React.ReactNode) => JSX.Element;
|
|
195
|
+
children: React.ReactNode;
|
|
196
|
+
};
|
|
178
197
|
export default Props;
|
package/textarea/Textarea.js
CHANGED
|
@@ -19,13 +19,13 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
19
19
|
|
|
20
20
|
var _styledComponents = _interopRequireWildcard(require("styled-components"));
|
|
21
21
|
|
|
22
|
-
var _utils = require("../common/utils
|
|
22
|
+
var _utils = require("../common/utils");
|
|
23
23
|
|
|
24
24
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
25
25
|
|
|
26
26
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
27
27
|
|
|
28
|
-
var _variables = require("../common/variables
|
|
28
|
+
var _variables = require("../common/variables");
|
|
29
29
|
|
|
30
30
|
var _uuid = require("uuid");
|
|
31
31
|
|
|
@@ -171,7 +171,6 @@ var DxcTextarea = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
|
|
|
171
171
|
backgroundType: backgroundType,
|
|
172
172
|
ref: textareaRef,
|
|
173
173
|
tabIndex: tabIndex,
|
|
174
|
-
"aria-disabled": disabled,
|
|
175
174
|
"aria-invalid": error ? "true" : "false",
|
|
176
175
|
"aria-errormessage": error ? errorId : undefined,
|
|
177
176
|
"aria-required": optional ? "false" : "true"
|
|
@@ -193,7 +192,7 @@ var calculateWidth = function calculateWidth(margin, size) {
|
|
|
193
192
|
return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
|
|
194
193
|
};
|
|
195
194
|
|
|
196
|
-
var TextareaContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n
|
|
195
|
+
var TextareaContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
|
|
197
196
|
return calculateWidth(props.margin, props.size);
|
|
198
197
|
}, function (props) {
|
|
199
198
|
return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
|
|
@@ -4,12 +4,20 @@ import Title from "../../.storybook/components/Title";
|
|
|
4
4
|
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
5
5
|
import { BackgroundColorProvider } from "../BackgroundColorContext";
|
|
6
6
|
import DarkContainer from "../../.storybook/components/DarkSection";
|
|
7
|
+
import { HalstackProvider } from "../HalstackContext";
|
|
7
8
|
|
|
8
9
|
export default {
|
|
9
10
|
title: "Textarea",
|
|
10
11
|
component: DxcTextarea,
|
|
11
12
|
};
|
|
12
13
|
|
|
14
|
+
const opinionatedTheme = {
|
|
15
|
+
textarea: {
|
|
16
|
+
fontColor: "#000000",
|
|
17
|
+
hoverBorderColor: "#a46ede",
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
|
|
13
21
|
export const Chromatic = () => (
|
|
14
22
|
<>
|
|
15
23
|
<>
|
|
@@ -151,7 +159,58 @@ export const Chromatic = () => (
|
|
|
151
159
|
<ExampleContainer>
|
|
152
160
|
<Title title="Xxlarge margin" theme="light" level={4} />
|
|
153
161
|
<DxcTextarea label="Xxlarge" margin="xxlarge" />
|
|
154
|
-
|
|
162
|
+
</ExampleContainer>
|
|
163
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
164
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
165
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
166
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
167
|
+
<DxcTextarea label="Hovered" helperText="Sample text" placeholder="Placeholder" />
|
|
168
|
+
</HalstackProvider>
|
|
169
|
+
</ExampleContainer>
|
|
170
|
+
<ExampleContainer pseudoState="pseudo-focus">
|
|
171
|
+
<Title title="Focused" theme="light" level={4} />
|
|
172
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
173
|
+
<DxcTextarea label="Focused" helperText="Sample text" />
|
|
174
|
+
</HalstackProvider>
|
|
175
|
+
</ExampleContainer>
|
|
176
|
+
<ExampleContainer>
|
|
177
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
178
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
179
|
+
<DxcTextarea
|
|
180
|
+
label="Disabled"
|
|
181
|
+
optional
|
|
182
|
+
helperText="Sample text"
|
|
183
|
+
placeholder="Enter your text here..."
|
|
184
|
+
disabled
|
|
185
|
+
/>
|
|
186
|
+
</HalstackProvider>
|
|
187
|
+
</ExampleContainer>
|
|
188
|
+
<ExampleContainer>
|
|
189
|
+
<Title title="Disabled with value" theme="light" level={4} />
|
|
190
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
191
|
+
<DxcTextarea label="Disabled" helperText="Sample text" defaultValue="Example text" disabled />
|
|
192
|
+
</HalstackProvider>
|
|
193
|
+
</ExampleContainer>
|
|
194
|
+
<ExampleContainer>
|
|
195
|
+
<Title title="With error" theme="light" level={4} />
|
|
196
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
197
|
+
<DxcTextarea
|
|
198
|
+
label="Textarea with error"
|
|
199
|
+
helperText="Helper text"
|
|
200
|
+
placeholder="Enter your text here..."
|
|
201
|
+
error="Error message."
|
|
202
|
+
/>
|
|
203
|
+
</HalstackProvider>
|
|
204
|
+
</ExampleContainer>
|
|
205
|
+
<ExampleContainer>
|
|
206
|
+
<Title title="Grow manual" theme="light" level={4} />{" "}
|
|
207
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
208
|
+
<DxcTextarea
|
|
209
|
+
label="Manual vertical grow"
|
|
210
|
+
verticalGrow="manual"
|
|
211
|
+
defaultValue="Long textttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"
|
|
212
|
+
/>
|
|
213
|
+
</HalstackProvider>
|
|
155
214
|
</ExampleContainer>
|
|
156
215
|
</>
|
|
157
216
|
);
|
|
@@ -8,7 +8,7 @@ var _react2 = require("@testing-library/react");
|
|
|
8
8
|
|
|
9
9
|
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
10
10
|
|
|
11
|
-
var _Textarea = _interopRequireDefault(require("./Textarea"));
|
|
11
|
+
var _Textarea = _interopRequireDefault(require("./Textarea.tsx"));
|
|
12
12
|
|
|
13
13
|
describe("Textarea component tests", function () {
|
|
14
14
|
test("Renders with correct label", function () {
|
|
@@ -85,7 +85,6 @@ describe("Textarea component tests", function () {
|
|
|
85
85
|
getByLabelText = _render7.getByLabelText;
|
|
86
86
|
|
|
87
87
|
var textarea = getByLabelText("Example label");
|
|
88
|
-
expect(textarea.getAttribute("aria-disabled")).toBe("false");
|
|
89
88
|
expect(textarea.getAttribute("aria-invalid")).toBe("false");
|
|
90
89
|
expect(textarea.getAttribute("aria-describedBy")).toBeNull();
|
|
91
90
|
expect(textarea.getAttribute("aria-required")).toBe("true");
|
|
@@ -101,7 +100,7 @@ describe("Textarea component tests", function () {
|
|
|
101
100
|
var textarea = getByLabelText("Example label");
|
|
102
101
|
expect(textarea.value).toBe("Example text");
|
|
103
102
|
});
|
|
104
|
-
test("Disabled textarea
|
|
103
|
+
test("Disabled textarea can not be modified", function () {
|
|
105
104
|
var onChange = jest.fn();
|
|
106
105
|
|
|
107
106
|
var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Textarea["default"], {
|
|
@@ -112,7 +111,6 @@ describe("Textarea component tests", function () {
|
|
|
112
111
|
getByLabelText = _render9.getByLabelText;
|
|
113
112
|
|
|
114
113
|
var textarea = getByLabelText("Example label");
|
|
115
|
-
expect(textarea.getAttribute("aria-disabled")).toBe("true");
|
|
116
114
|
|
|
117
115
|
_userEvent["default"].type(textarea, "Test");
|
|
118
116
|
|
|
@@ -21,10 +21,12 @@ 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
26
|
var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
27
27
|
|
|
28
|
+
var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
|
|
29
|
+
|
|
28
30
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
|
|
29
31
|
|
|
30
32
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -56,6 +58,8 @@ var DxcToggleGroup = function DxcToggleGroup(_ref) {
|
|
|
56
58
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
|
|
57
59
|
toggleGroupId = _useState4[0];
|
|
58
60
|
|
|
61
|
+
var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
|
|
62
|
+
|
|
59
63
|
var handleToggleChange = function handleToggleChange(selectedOption) {
|
|
60
64
|
var newSelectedOptions;
|
|
61
65
|
|
|
@@ -97,8 +101,7 @@ var DxcToggleGroup = function DxcToggleGroup(_ref) {
|
|
|
97
101
|
return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
|
|
98
102
|
theme: colorsTheme.toggleGroup
|
|
99
103
|
}, /*#__PURE__*/_react["default"].createElement(ToggleGroup, {
|
|
100
|
-
margin: margin
|
|
101
|
-
disabled: disabled
|
|
104
|
+
margin: margin
|
|
102
105
|
}, /*#__PURE__*/_react["default"].createElement(Label, {
|
|
103
106
|
htmlFor: toggleGroupId,
|
|
104
107
|
disabled: disabled
|
|
@@ -111,12 +114,12 @@ var DxcToggleGroup = function DxcToggleGroup(_ref) {
|
|
|
111
114
|
return /*#__PURE__*/_react["default"].createElement(ToggleContainer, {
|
|
112
115
|
selected: multiple ? value ? Array.isArray(value) && value.includes(option.value) : Array.isArray(selectedValue) && selectedValue.includes(option.value) : value ? option.value === value : option.value === selectedValue,
|
|
113
116
|
role: multiple ? "switch" : "radio",
|
|
117
|
+
backgroundType: backgroundType,
|
|
114
118
|
"aria-checked": multiple ? value ? Array.isArray(value) && value.includes(option.value) : Array.isArray(selectedValue) && selectedValue.includes(option.value) : value ? option.value === value : option.value === selectedValue,
|
|
115
119
|
tabIndex: !disabled ? tabIndex : -1,
|
|
116
120
|
onClick: function onClick() {
|
|
117
121
|
return !disabled && handleToggleChange(option.value);
|
|
118
122
|
},
|
|
119
|
-
isFirst: i === 0,
|
|
120
123
|
isLast: i === options.length - 1,
|
|
121
124
|
isIcon: option.icon,
|
|
122
125
|
optionLabel: option.label,
|
|
@@ -3,6 +3,7 @@ import { userEvent, within } from "@storybook/testing-library";
|
|
|
3
3
|
import DxcToggleGroup from "./ToggleGroup";
|
|
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: "ToggleGroup",
|
|
@@ -89,6 +90,16 @@ const twoOptions = [
|
|
|
89
90
|
label: "Twitter",
|
|
90
91
|
},
|
|
91
92
|
];
|
|
93
|
+
|
|
94
|
+
const opinionatedTheme = {
|
|
95
|
+
toggleGroup: {
|
|
96
|
+
selectedBaseColor: "#5f249f",
|
|
97
|
+
selectedFontColor: "#ffffff",
|
|
98
|
+
unselectedBaseColor: "#e6e6e6",
|
|
99
|
+
unselectedFontColor: "#000000",
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
|
|
92
103
|
export const Chromatic = () => (
|
|
93
104
|
<>
|
|
94
105
|
<ExampleContainer>
|
|
@@ -154,6 +165,37 @@ export const Chromatic = () => (
|
|
|
154
165
|
<Title title="xxLarge" theme="light" level={4} />
|
|
155
166
|
<DxcToggleGroup label="xxLarge margin" options={options} margin="xxlarge" />
|
|
156
167
|
</ExampleContainer>
|
|
168
|
+
<Title title="Opinionated theme" theme="light" level={2} />
|
|
169
|
+
<ExampleContainer>
|
|
170
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
171
|
+
<Title title="Selected" theme="light" level={4} />
|
|
172
|
+
<DxcToggleGroup label="Selected" helperText="HelperText" defaultValue={2} options={options} />
|
|
173
|
+
</HalstackProvider>
|
|
174
|
+
</ExampleContainer>
|
|
175
|
+
<ExampleContainer>
|
|
176
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
177
|
+
<Title title="Icons & label toggle group" theme="light" level={4} />
|
|
178
|
+
<DxcToggleGroup label="Icons & label" options={optionsWithIconAndLabel} />
|
|
179
|
+
</HalstackProvider>
|
|
180
|
+
</ExampleContainer>
|
|
181
|
+
<ExampleContainer>
|
|
182
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
183
|
+
<Title title="Disabled" theme="light" level={4} />
|
|
184
|
+
<DxcToggleGroup label="Disabled" defaultValue={2} options={options} disabled />
|
|
185
|
+
</HalstackProvider>
|
|
186
|
+
</ExampleContainer>
|
|
187
|
+
<ExampleContainer pseudoState="pseudo-hover">
|
|
188
|
+
<Title title="Hovered" theme="light" level={4} />
|
|
189
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
190
|
+
<DxcToggleGroup label="Hovered" options={twoOptions} defaultValue={2} />
|
|
191
|
+
</HalstackProvider>
|
|
192
|
+
</ExampleContainer>
|
|
193
|
+
<ExampleContainer pseudoState="pseudo-active">
|
|
194
|
+
<Title title="Actived" theme="light" level={4} />
|
|
195
|
+
<HalstackProvider theme={opinionatedTheme}>
|
|
196
|
+
<DxcToggleGroup label="Actived" options={twoOptions} defaultValue={2} />
|
|
197
|
+
</HalstackProvider>
|
|
198
|
+
</ExampleContainer>
|
|
157
199
|
</>
|
|
158
200
|
);
|
|
159
201
|
const OptionSelected = () => <DxcToggleGroup label="Toggle group" helperText="HelperText" options={options} />;
|
|
@@ -6,7 +6,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
6
6
|
|
|
7
7
|
var _react2 = require("@testing-library/react");
|
|
8
8
|
|
|
9
|
-
var _ToggleGroup = _interopRequireDefault(require("./ToggleGroup"));
|
|
9
|
+
var _ToggleGroup = _interopRequireDefault(require("./ToggleGroup.tsx"));
|
|
10
10
|
|
|
11
11
|
var options = [{
|
|
12
12
|
value: 1,
|
package/toggle-group/types.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ declare type Margin = {
|
|
|
6
6
|
left?: Space;
|
|
7
7
|
right?: Space;
|
|
8
8
|
};
|
|
9
|
-
declare type SVG = React.SVGProps<SVGSVGElement>;
|
|
9
|
+
declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
|
|
10
10
|
declare type OptionCommons = {
|
|
11
11
|
/**
|
|
12
12
|
* Number with the option inner value.
|
|
@@ -23,7 +23,7 @@ declare type OptionIcon = OptionCommons & {
|
|
|
23
23
|
*/
|
|
24
24
|
icon: string | SVG;
|
|
25
25
|
};
|
|
26
|
-
declare type OptionLabel = OptionCommons & {
|
|
26
|
+
export declare type OptionLabel = OptionCommons & {
|
|
27
27
|
/**
|
|
28
28
|
* String with the option display value.
|
|
29
29
|
*/
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
|
|
16
|
+
var _BaseTypography = _interopRequireDefault(require("../utils/BaseTypography"));
|
|
17
|
+
|
|
18
|
+
var _excluded = ["textOverflow", "whiteSpace", "children"];
|
|
19
|
+
|
|
20
|
+
var DxcTypography = function DxcTypography(_ref) {
|
|
21
|
+
var textOverflow = _ref.textOverflow,
|
|
22
|
+
whiteSpace = _ref.whiteSpace,
|
|
23
|
+
children = _ref.children,
|
|
24
|
+
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
25
|
+
return /*#__PURE__*/_react["default"].createElement(_BaseTypography["default"], (0, _extends2["default"])({
|
|
26
|
+
textOverflow: textOverflow,
|
|
27
|
+
whiteSpace: whiteSpace == null && textOverflow != null && textOverflow !== "unset" ? "nowrap" : whiteSpace
|
|
28
|
+
}, props), children);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
var _default = DxcTypography;
|
|
32
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Title from "../../.storybook/components/Title";
|
|
3
|
+
import ExampleContainer from "../../.storybook/components/ExampleContainer";
|
|
4
|
+
import DxcTypography from "./Typography";
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: "Typography",
|
|
8
|
+
component: DxcTypography,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const Chromatic = () => (
|
|
12
|
+
<>
|
|
13
|
+
<ExampleContainer>
|
|
14
|
+
<Title title="Default Typography" theme="light" level={4} />
|
|
15
|
+
<DxcTypography>Default typography.</DxcTypography>
|
|
16
|
+
</ExampleContainer>
|
|
17
|
+
<ExampleContainer>
|
|
18
|
+
<Title title="Typography font sizes" theme="light" level={4} />
|
|
19
|
+
<DxcTypography display="block" fontSize="3.75rem">
|
|
20
|
+
3.75rem.
|
|
21
|
+
</DxcTypography>
|
|
22
|
+
<DxcTypography display="block" fontSize="3rem">
|
|
23
|
+
3rem.
|
|
24
|
+
</DxcTypography>
|
|
25
|
+
<DxcTypography display="block" fontSize="2rem">
|
|
26
|
+
2rem.
|
|
27
|
+
</DxcTypography>
|
|
28
|
+
<DxcTypography display="block" fontSize="1.5rem">
|
|
29
|
+
1.5rem.
|
|
30
|
+
</DxcTypography>
|
|
31
|
+
<DxcTypography display="block" fontSize="1.25rem">
|
|
32
|
+
1.25rem.
|
|
33
|
+
</DxcTypography>
|
|
34
|
+
<DxcTypography display="block" fontSize="1rem">
|
|
35
|
+
1rem.
|
|
36
|
+
</DxcTypography>
|
|
37
|
+
<DxcTypography display="block" fontSize="0.875rem">
|
|
38
|
+
0.875rem.
|
|
39
|
+
</DxcTypography>
|
|
40
|
+
<DxcTypography display="block" fontSize="0.75rem">
|
|
41
|
+
0.75rem.
|
|
42
|
+
</DxcTypography>
|
|
43
|
+
</ExampleContainer>
|
|
44
|
+
<ExampleContainer>
|
|
45
|
+
<Title title="Typography letter spacing" theme="light" level={4} />
|
|
46
|
+
<DxcTypography display="block" letterSpacing="-0.025em">
|
|
47
|
+
-0.025em.
|
|
48
|
+
</DxcTypography>
|
|
49
|
+
<DxcTypography display="block" letterSpacing="-0.0125em">
|
|
50
|
+
-0.0125em.
|
|
51
|
+
</DxcTypography>
|
|
52
|
+
<DxcTypography display="block" letterSpacing="0em">
|
|
53
|
+
0em.
|
|
54
|
+
</DxcTypography>
|
|
55
|
+
<DxcTypography display="block" letterSpacing="0.025em">
|
|
56
|
+
0.025em.
|
|
57
|
+
</DxcTypography>
|
|
58
|
+
<DxcTypography display="block" letterSpacing="0.05em">
|
|
59
|
+
0.05em.
|
|
60
|
+
</DxcTypography>
|
|
61
|
+
<DxcTypography display="block" letterSpacing="0.1em">
|
|
62
|
+
0.1em.
|
|
63
|
+
</DxcTypography>{" "}
|
|
64
|
+
</ExampleContainer>
|
|
65
|
+
<ExampleContainer>
|
|
66
|
+
<Title title="Typography line height" theme="light" level={4} />
|
|
67
|
+
<DxcTypography display="block" lineHeight="1em">
|
|
68
|
+
1em.
|
|
69
|
+
</DxcTypography>
|
|
70
|
+
<DxcTypography display="block" lineHeight="1.25em">
|
|
71
|
+
1.25em.
|
|
72
|
+
</DxcTypography>
|
|
73
|
+
<DxcTypography display="block" lineHeight="1.365em">
|
|
74
|
+
1.365em.
|
|
75
|
+
</DxcTypography>
|
|
76
|
+
<DxcTypography display="block" lineHeight="1.5em">
|
|
77
|
+
1.5em.
|
|
78
|
+
</DxcTypography>
|
|
79
|
+
<DxcTypography display="block" lineHeight="1.715em">
|
|
80
|
+
1.715em.
|
|
81
|
+
</DxcTypography>
|
|
82
|
+
<DxcTypography display="block" lineHeight="2em">
|
|
83
|
+
2em.
|
|
84
|
+
</DxcTypography>
|
|
85
|
+
</ExampleContainer>
|
|
86
|
+
<ExampleContainer>
|
|
87
|
+
<Title title="Typography font weight" theme="light" level={4} />
|
|
88
|
+
<DxcTypography display="block" fontWeight="300">
|
|
89
|
+
300.
|
|
90
|
+
</DxcTypography>
|
|
91
|
+
<DxcTypography display="block" fontWeight="400">
|
|
92
|
+
400.
|
|
93
|
+
</DxcTypography>
|
|
94
|
+
<DxcTypography display="block" fontWeight="600">
|
|
95
|
+
600.
|
|
96
|
+
</DxcTypography>
|
|
97
|
+
<DxcTypography display="block" fontWeight="700">
|
|
98
|
+
700.
|
|
99
|
+
</DxcTypography>
|
|
100
|
+
</ExampleContainer>
|
|
101
|
+
<ExampleContainer>
|
|
102
|
+
<Title title="Typography decoration" theme="light" level={4} />
|
|
103
|
+
<DxcTypography display="block" textDecoration="underline">
|
|
104
|
+
Underline.
|
|
105
|
+
</DxcTypography>
|
|
106
|
+
<DxcTypography display="block" textDecoration="line-through">
|
|
107
|
+
Line-through.
|
|
108
|
+
</DxcTypography>
|
|
109
|
+
</ExampleContainer>
|
|
110
|
+
<ExampleContainer>
|
|
111
|
+
<Title title="Typography font family" theme="light" level={4} />
|
|
112
|
+
<DxcTypography display="block" fontFamily="Open Sans, sans-serif">
|
|
113
|
+
Open Sans, sans-serif.
|
|
114
|
+
</DxcTypography>
|
|
115
|
+
<DxcTypography display="block" fontFamily="Source Code Pro, monospace">
|
|
116
|
+
Source Code Pro, monospace.
|
|
117
|
+
</DxcTypography>
|
|
118
|
+
</ExampleContainer>
|
|
119
|
+
<ExampleContainer>
|
|
120
|
+
<Title title="Typography font style" theme="light" level={4} />
|
|
121
|
+
<DxcTypography display="block" fontStyle="italic">
|
|
122
|
+
Italic.
|
|
123
|
+
</DxcTypography>
|
|
124
|
+
<DxcTypography display="block" fontStyle="normal">
|
|
125
|
+
Normal.
|
|
126
|
+
</DxcTypography>
|
|
127
|
+
</ExampleContainer>
|
|
128
|
+
<ExampleContainer>
|
|
129
|
+
<Title title="Typography align" theme="light" level={4} />
|
|
130
|
+
<DxcTypography display="block" textAlign="left">
|
|
131
|
+
Left.
|
|
132
|
+
</DxcTypography>
|
|
133
|
+
<DxcTypography display="block" textAlign="center">
|
|
134
|
+
Center.
|
|
135
|
+
</DxcTypography>
|
|
136
|
+
<DxcTypography display="block" textAlign="right">
|
|
137
|
+
Right.
|
|
138
|
+
</DxcTypography>
|
|
139
|
+
</ExampleContainer>
|
|
140
|
+
<ExampleContainer>
|
|
141
|
+
<Title title="Typography whitespace" theme="light" level={4} />
|
|
142
|
+
<div style={{ margin: "50px", border: "1px solid red", width: "125px" }}>
|
|
143
|
+
<DxcTypography fontSize="2rem">
|
|
144
|
+
{" "} Normal: A bunch of words you see.
|
|
145
|
+
</DxcTypography>
|
|
146
|
+
</div>
|
|
147
|
+
<div style={{ margin: "50px", border: "1px solid red", width: "125px" }}>
|
|
148
|
+
<DxcTypography whiteSpace="nowrap" fontSize="2rem">
|
|
149
|
+
{" "}No-wrap: A bunch of words you see.
|
|
150
|
+
</DxcTypography>
|
|
151
|
+
</div>
|
|
152
|
+
<div style={{ margin: "50px", border: "1px solid red", width: "125px" }}>
|
|
153
|
+
<DxcTypography whiteSpace="pre" fontSize="2rem">
|
|
154
|
+
{" "} pre: A bunch of words you see.
|
|
155
|
+
</DxcTypography>
|
|
156
|
+
</div>
|
|
157
|
+
<div style={{ margin: "50px", border: "1px solid red", width: "125px" }}>
|
|
158
|
+
<DxcTypography whiteSpace="pre-line" fontSize="2rem">
|
|
159
|
+
{" "}pre-line: A bunch of words you see.
|
|
160
|
+
</DxcTypography>
|
|
161
|
+
</div>
|
|
162
|
+
<div style={{ margin: "50px", border: "1px solid red", width: "125px" }}>
|
|
163
|
+
<DxcTypography whiteSpace="pre-wrap" fontSize="2rem">
|
|
164
|
+
{" "} pre-wrap: A bunch of words you see.
|
|
165
|
+
</DxcTypography>
|
|
166
|
+
</div>
|
|
167
|
+
</ExampleContainer>{" "}
|
|
168
|
+
<ExampleContainer>
|
|
169
|
+
<Title title="Typography display" theme="light" level={4} />
|
|
170
|
+
<DxcTypography display="block" textAlign="left">
|
|
171
|
+
Display Block.
|
|
172
|
+
<DxcTypography>A different text.</DxcTypography>
|
|
173
|
+
</DxcTypography>
|
|
174
|
+
<DxcTypography display="inline" textAlign="left">
|
|
175
|
+
Display Inline.
|
|
176
|
+
<DxcTypography>A different text.</DxcTypography>
|
|
177
|
+
</DxcTypography>
|
|
178
|
+
</ExampleContainer>
|
|
179
|
+
<ExampleContainer>
|
|
180
|
+
<Title title="Typography text-overflow" theme="light" level={4} />
|
|
181
|
+
<div style={{ width: "75px" }}>
|
|
182
|
+
<DxcTypography display="block" textOverflow="clip">
|
|
183
|
+
Overflow clip.
|
|
184
|
+
</DxcTypography>
|
|
185
|
+
</div>
|
|
186
|
+
<div style={{ width: "75px" }}>
|
|
187
|
+
<DxcTypography display="block" textOverflow="ellipsis">
|
|
188
|
+
Overflow ellipsis.
|
|
189
|
+
</DxcTypography>
|
|
190
|
+
</div>
|
|
191
|
+
<div style={{ width: "75px" }}>
|
|
192
|
+
<DxcTypography display="block" textOverflow="unset">
|
|
193
|
+
Overflow unset.
|
|
194
|
+
</DxcTypography>
|
|
195
|
+
</div>
|
|
196
|
+
</ExampleContainer>
|
|
197
|
+
</>
|
|
198
|
+
);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare type Props = {
|
|
3
|
+
as?: keyof HTMLElementTagNameMap;
|
|
4
|
+
display?: "inline" | "block";
|
|
5
|
+
fontFamily?: "Open Sans, sans-serif" | "Source Code Pro, monospace";
|
|
6
|
+
fontSize?: "0.75rem" | "0.875rem" | "1rem" | "1.25rem" | "1.5rem" | "2rem" | "3rem" | "3.75rem";
|
|
7
|
+
fontStyle?: "italic" | "normal";
|
|
8
|
+
fontWeight?: "300" | "400" | "600" | "700";
|
|
9
|
+
letterSpacing?: "-0.025em" | "-0.0125em" | "0em" | "0.025em" | "0.05em" | "0.1em";
|
|
10
|
+
lineHeight?: "1em" | "1.25em" | "1.365em" | "1.5em" | "1.715em" | "2em";
|
|
11
|
+
textAlign?: "left" | "center" | "right";
|
|
12
|
+
color?: string;
|
|
13
|
+
textDecoration?: "none" | "underline" | "line-through";
|
|
14
|
+
textOverflow?: "clip" | "ellipsis" | "unset";
|
|
15
|
+
whiteSpace?: "normal" | "nowrap" | "pre" | "pre-line" | "pre-wrap";
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
};
|
|
18
|
+
export default Props;
|