@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.
Files changed (243) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.js +118 -110
  6. package/accordion/Accordion.stories.tsx +104 -16
  7. package/accordion/Accordion.test.js +10 -11
  8. package/accordion/types.d.ts +2 -1
  9. package/accordion-group/AccordionGroup.js +4 -23
  10. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  11. package/accordion-group/AccordionGroup.test.js +21 -46
  12. package/accordion-group/types.d.ts +8 -1
  13. package/alert/Alert.js +4 -6
  14. package/alert/Alert.stories.tsx +28 -0
  15. package/alert/Alert.test.js +1 -1
  16. package/bleed/Bleed.js +1 -34
  17. package/bleed/Bleed.stories.tsx +95 -95
  18. package/bleed/types.d.ts +1 -1
  19. package/box/Box.js +4 -6
  20. package/box/Box.stories.tsx +15 -0
  21. package/box/Box.test.js +1 -1
  22. package/box/types.d.ts +1 -0
  23. package/bulleted-list/BulletedList.d.ts +7 -0
  24. package/bulleted-list/BulletedList.js +125 -0
  25. package/bulleted-list/BulletedList.stories.tsx +206 -0
  26. package/bulleted-list/types.d.ts +11 -0
  27. package/button/Button.js +52 -73
  28. package/button/Button.stories.tsx +159 -8
  29. package/button/Button.test.js +1 -1
  30. package/button/types.d.ts +5 -5
  31. package/card/Card.js +12 -13
  32. package/card/Card.stories.tsx +12 -13
  33. package/card/Card.test.js +1 -1
  34. package/card/types.d.ts +1 -0
  35. package/checkbox/Checkbox.d.ts +2 -2
  36. package/checkbox/Checkbox.js +94 -101
  37. package/checkbox/Checkbox.stories.tsx +131 -59
  38. package/checkbox/Checkbox.test.js +94 -17
  39. package/checkbox/types.d.ts +4 -0
  40. package/chip/Chip.js +18 -26
  41. package/chip/Chip.stories.tsx +96 -9
  42. package/chip/Chip.test.js +3 -5
  43. package/chip/types.d.ts +1 -1
  44. package/common/OpenSans.css +68 -80
  45. package/common/coreTokens.d.ts +146 -0
  46. package/common/coreTokens.js +167 -0
  47. package/common/utils.d.ts +1 -0
  48. package/common/utils.js +4 -4
  49. package/common/variables.d.ts +1482 -0
  50. package/common/variables.js +1009 -1118
  51. package/date-input/Calendar.d.ts +4 -0
  52. package/date-input/Calendar.js +258 -0
  53. package/date-input/DateInput.js +134 -237
  54. package/date-input/DateInput.stories.tsx +199 -33
  55. package/date-input/DateInput.test.js +494 -138
  56. package/date-input/DatePicker.d.ts +4 -0
  57. package/date-input/DatePicker.js +146 -0
  58. package/date-input/Icons.d.ts +6 -0
  59. package/date-input/Icons.js +75 -0
  60. package/date-input/YearPicker.d.ts +4 -0
  61. package/date-input/YearPicker.js +126 -0
  62. package/date-input/types.d.ts +51 -0
  63. package/dialog/Dialog.js +80 -69
  64. package/dialog/Dialog.stories.tsx +230 -123
  65. package/dialog/Dialog.test.js +334 -5
  66. package/dialog/types.d.ts +1 -0
  67. package/dropdown/Dropdown.d.ts +1 -1
  68. package/dropdown/Dropdown.js +246 -249
  69. package/dropdown/Dropdown.stories.tsx +245 -56
  70. package/dropdown/Dropdown.test.js +507 -110
  71. package/dropdown/DropdownMenu.d.ts +4 -0
  72. package/dropdown/DropdownMenu.js +74 -0
  73. package/dropdown/DropdownMenuItem.d.ts +4 -0
  74. package/dropdown/DropdownMenuItem.js +79 -0
  75. package/dropdown/types.d.ts +23 -3
  76. package/file-input/FileInput.d.ts +2 -2
  77. package/file-input/FileInput.js +174 -220
  78. package/file-input/FileInput.stories.tsx +122 -11
  79. package/file-input/FileInput.test.js +14 -14
  80. package/file-input/FileItem.d.ts +4 -14
  81. package/file-input/FileItem.js +39 -63
  82. package/file-input/types.d.ts +17 -0
  83. package/flex/Flex.d.ts +4 -0
  84. package/flex/Flex.js +71 -0
  85. package/flex/Flex.stories.tsx +112 -0
  86. package/flex/types.d.ts +97 -0
  87. package/footer/Footer.js +6 -8
  88. package/footer/Footer.stories.tsx +99 -1
  89. package/footer/Footer.test.js +14 -26
  90. package/footer/Icons.js +1 -1
  91. package/footer/types.d.ts +2 -1
  92. package/grid/Grid.d.ts +7 -0
  93. package/grid/Grid.js +91 -0
  94. package/grid/Grid.stories.tsx +219 -0
  95. package/grid/types.d.ts +115 -0
  96. package/header/Header.d.ts +3 -2
  97. package/header/Header.js +89 -89
  98. package/header/Header.stories.tsx +152 -9
  99. package/header/Header.test.js +2 -2
  100. package/header/Icons.js +2 -2
  101. package/header/types.d.ts +1 -0
  102. package/heading/Heading.js +1 -1
  103. package/heading/Heading.test.js +1 -1
  104. package/inset/Inset.js +1 -34
  105. package/inset/Inset.stories.tsx +37 -36
  106. package/inset/types.d.ts +1 -1
  107. package/layout/ApplicationLayout.d.ts +15 -6
  108. package/layout/ApplicationLayout.js +38 -66
  109. package/layout/ApplicationLayout.stories.tsx +80 -44
  110. package/layout/types.d.ts +18 -29
  111. package/link/Link.js +4 -4
  112. package/link/Link.stories.tsx +73 -6
  113. package/link/Link.test.js +2 -4
  114. package/link/types.d.ts +3 -3
  115. package/main.d.ts +7 -9
  116. package/main.js +33 -49
  117. package/{tabs-nav → nav-tabs}/NavTabs.js +6 -6
  118. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  119. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  120. package/{tabs-nav → nav-tabs}/Tab.js +40 -22
  121. package/{tabs-nav → nav-tabs}/types.d.ts +1 -1
  122. package/number-input/NumberInput.test.js +44 -8
  123. package/package.json +17 -21
  124. package/paginator/Icons.d.ts +5 -0
  125. package/paginator/Icons.js +16 -28
  126. package/paginator/Paginator.js +7 -15
  127. package/paginator/Paginator.stories.tsx +24 -0
  128. package/paginator/Paginator.test.js +78 -39
  129. package/paragraph/Paragraph.d.ts +5 -0
  130. package/paragraph/Paragraph.js +38 -0
  131. package/paragraph/Paragraph.stories.tsx +44 -0
  132. package/password-input/PasswordInput.test.js +14 -13
  133. package/progress-bar/ProgressBar.js +60 -54
  134. package/progress-bar/ProgressBar.stories.jsx +38 -3
  135. package/progress-bar/ProgressBar.test.js +68 -23
  136. package/quick-nav/QuickNav.js +25 -20
  137. package/quick-nav/QuickNav.stories.tsx +145 -26
  138. package/radio-group/Radio.d.ts +1 -1
  139. package/radio-group/Radio.js +43 -28
  140. package/radio-group/RadioGroup.js +23 -22
  141. package/radio-group/RadioGroup.stories.tsx +132 -18
  142. package/radio-group/RadioGroup.test.js +124 -97
  143. package/radio-group/types.d.ts +2 -2
  144. package/resultsetTable/Icons.d.ts +7 -0
  145. package/resultsetTable/Icons.js +51 -0
  146. package/resultsetTable/ResultsetTable.js +49 -108
  147. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  148. package/resultsetTable/ResultsetTable.test.js +61 -42
  149. package/resultsetTable/types.d.ts +1 -1
  150. package/select/Listbox.d.ts +1 -1
  151. package/select/Listbox.js +33 -16
  152. package/select/Option.js +11 -24
  153. package/select/Select.js +92 -71
  154. package/select/Select.stories.tsx +513 -136
  155. package/select/Select.test.js +413 -305
  156. package/select/types.d.ts +3 -6
  157. package/sidenav/Icons.d.ts +7 -0
  158. package/sidenav/Icons.js +51 -0
  159. package/sidenav/Sidenav.d.ts +6 -5
  160. package/sidenav/Sidenav.js +139 -48
  161. package/sidenav/Sidenav.stories.tsx +251 -151
  162. package/sidenav/Sidenav.test.js +25 -37
  163. package/sidenav/types.d.ts +52 -26
  164. package/slider/Slider.d.ts +2 -2
  165. package/slider/Slider.js +121 -97
  166. package/slider/Slider.stories.tsx +64 -1
  167. package/slider/Slider.test.js +122 -22
  168. package/slider/types.d.ts +4 -0
  169. package/spinner/Spinner.js +17 -23
  170. package/spinner/Spinner.stories.jsx +53 -27
  171. package/spinner/Spinner.test.js +1 -1
  172. package/switch/Switch.d.ts +2 -2
  173. package/switch/Switch.js +137 -70
  174. package/switch/Switch.stories.tsx +41 -30
  175. package/switch/Switch.test.js +145 -18
  176. package/switch/types.d.ts +4 -0
  177. package/table/Table.js +3 -3
  178. package/table/Table.stories.jsx +80 -1
  179. package/table/Table.test.js +2 -2
  180. package/tabs/Tab.d.ts +4 -0
  181. package/tabs/Tab.js +132 -0
  182. package/tabs/Tabs.js +358 -108
  183. package/tabs/Tabs.stories.tsx +119 -5
  184. package/tabs/Tabs.test.js +220 -10
  185. package/tabs/types.d.ts +13 -3
  186. package/tag/Tag.js +8 -10
  187. package/tag/Tag.stories.tsx +14 -1
  188. package/tag/Tag.test.js +1 -1
  189. package/tag/types.d.ts +1 -1
  190. package/text-input/Icons.d.ts +8 -0
  191. package/text-input/Icons.js +60 -0
  192. package/text-input/Suggestion.js +40 -11
  193. package/text-input/Suggestions.d.ts +4 -0
  194. package/text-input/Suggestions.js +134 -0
  195. package/text-input/TextInput.js +198 -295
  196. package/text-input/TextInput.stories.tsx +280 -185
  197. package/text-input/TextInput.test.js +736 -725
  198. package/text-input/types.d.ts +22 -3
  199. package/textarea/Textarea.js +3 -4
  200. package/textarea/Textarea.stories.jsx +60 -1
  201. package/textarea/Textarea.test.js +2 -4
  202. package/toggle-group/ToggleGroup.js +7 -4
  203. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  204. package/toggle-group/ToggleGroup.test.js +1 -1
  205. package/toggle-group/types.d.ts +2 -2
  206. package/typography/Typography.d.ts +4 -0
  207. package/typography/Typography.js +32 -0
  208. package/typography/Typography.stories.tsx +198 -0
  209. package/typography/types.d.ts +18 -0
  210. package/typography/types.js +5 -0
  211. package/useTheme.d.ts +1234 -1
  212. package/useTheme.js +1 -1
  213. package/useTranslatedLabels.d.ts +84 -1
  214. package/utils/BaseTypography.d.ts +21 -0
  215. package/utils/BaseTypography.js +108 -0
  216. package/utils/FocusLock.d.ts +13 -0
  217. package/utils/FocusLock.js +139 -0
  218. package/wizard/Wizard.js +10 -17
  219. package/wizard/Wizard.stories.tsx +40 -1
  220. package/wizard/Wizard.test.js +1 -1
  221. package/wizard/types.d.ts +3 -3
  222. package/common/RequiredComponent.js +0 -32
  223. package/list/List.d.ts +0 -4
  224. package/list/List.js +0 -47
  225. package/list/List.stories.tsx +0 -95
  226. package/list/types.d.ts +0 -7
  227. package/row/Row.d.ts +0 -3
  228. package/row/Row.js +0 -127
  229. package/row/Row.stories.tsx +0 -237
  230. package/row/types.d.ts +0 -28
  231. package/stack/Stack.d.ts +0 -3
  232. package/stack/Stack.js +0 -97
  233. package/stack/Stack.stories.tsx +0 -164
  234. package/stack/types.d.ts +0 -24
  235. package/text/Text.d.ts +0 -7
  236. package/text/Text.js +0 -30
  237. package/text/Text.stories.tsx +0 -19
  238. /package/{list → bulleted-list}/types.js +0 -0
  239. /package/{row → flex}/types.js +0 -0
  240. /package/{stack → grid}/types.js +0 -0
  241. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  242. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  243. /package/{tabs-nav → nav-tabs}/types.js +0 -0
@@ -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 the Autosuggest Text Input component.
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;
@@ -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.js");
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.js");
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\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
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
- <hr />
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 renders with correct aria and can not be modified", function () {
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.js");
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,
@@ -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,4 @@
1
+ /// <reference types="react" />
2
+ import TypographyPropsTypes from "./types";
3
+ declare const DxcTypography: ({ textOverflow, whiteSpace, children, ...props }: TypographyPropsTypes) => JSX.Element;
4
+ export default DxcTypography;
@@ -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;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });