@dxc-technology/halstack-react 0.0.0-453c87a → 0.0.0-456a6f5

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 (176) 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 +113 -72
  5. package/accordion/Accordion.js +6 -11
  6. package/accordion/Accordion.stories.tsx +52 -3
  7. package/accordion/Accordion.test.js +1 -1
  8. package/accordion/types.d.ts +3 -3
  9. package/accordion-group/AccordionGroup.js +2 -2
  10. package/accordion-group/AccordionGroup.test.js +1 -1
  11. package/accordion-group/types.d.ts +2 -2
  12. package/alert/Alert.js +4 -8
  13. package/alert/Alert.stories.tsx +28 -0
  14. package/alert/Alert.test.js +1 -1
  15. package/bleed/Bleed.stories.tsx +1 -0
  16. package/box/Box.js +3 -5
  17. package/box/Box.stories.tsx +15 -0
  18. package/box/Box.test.js +1 -1
  19. package/bulleted-list/BulletedList.js +4 -2
  20. package/bulleted-list/BulletedList.stories.tsx +7 -1
  21. package/bulleted-list/types.d.ts +31 -4
  22. package/button/Button.js +2 -3
  23. package/button/Button.stories.tsx +102 -11
  24. package/button/Button.test.js +1 -1
  25. package/button/types.d.ts +3 -3
  26. package/card/Card.js +12 -13
  27. package/card/Card.stories.tsx +12 -13
  28. package/card/Card.test.js +1 -1
  29. package/checkbox/Checkbox.js +3 -3
  30. package/checkbox/Checkbox.stories.tsx +52 -0
  31. package/checkbox/Checkbox.test.js +1 -1
  32. package/checkbox/types.d.ts +2 -2
  33. package/chip/Chip.js +25 -34
  34. package/chip/Chip.stories.tsx +80 -17
  35. package/chip/Chip.test.js +3 -5
  36. package/common/OpenSans.css +68 -80
  37. package/common/coreTokens.d.ts +146 -0
  38. package/common/coreTokens.js +167 -0
  39. package/common/utils.d.ts +1 -0
  40. package/common/utils.js +4 -4
  41. package/common/variables.d.ts +1482 -0
  42. package/common/variables.js +963 -1114
  43. package/date-input/Calendar.js +24 -12
  44. package/date-input/DateInput.stories.tsx +67 -0
  45. package/date-input/DatePicker.js +26 -12
  46. package/date-input/YearPicker.js +20 -10
  47. package/dialog/Dialog.js +61 -74
  48. package/dialog/Dialog.stories.tsx +211 -159
  49. package/dialog/Dialog.test.js +302 -3
  50. package/dialog/types.d.ts +2 -2
  51. package/dropdown/Dropdown.js +2 -3
  52. package/dropdown/Dropdown.stories.tsx +200 -82
  53. package/dropdown/Dropdown.test.js +3 -2
  54. package/dropdown/DropdownMenu.js +12 -18
  55. package/dropdown/DropdownMenuItem.js +4 -17
  56. package/dropdown/types.d.ts +3 -3
  57. package/file-input/FileInput.js +4 -8
  58. package/file-input/FileInput.stories.tsx +85 -2
  59. package/file-input/FileInput.test.js +1 -42
  60. package/file-input/FileItem.js +1 -0
  61. package/flex/Flex.js +4 -2
  62. package/flex/Flex.stories.tsx +35 -26
  63. package/flex/types.d.ts +70 -5
  64. package/footer/Footer.js +6 -8
  65. package/footer/Footer.stories.tsx +91 -0
  66. package/footer/Footer.test.js +14 -26
  67. package/grid/Grid.d.ts +7 -0
  68. package/grid/Grid.js +91 -0
  69. package/grid/Grid.stories.tsx +219 -0
  70. package/grid/types.d.ts +115 -0
  71. package/header/Header.d.ts +3 -2
  72. package/header/Header.js +21 -23
  73. package/header/Header.stories.tsx +149 -6
  74. package/header/Header.test.js +2 -2
  75. package/header/types.d.ts +2 -2
  76. package/heading/Heading.js +1 -1
  77. package/heading/Heading.test.js +1 -1
  78. package/inset/Inset.stories.tsx +2 -1
  79. package/layout/ApplicationLayout.d.ts +3 -3
  80. package/layout/ApplicationLayout.js +1 -1
  81. package/layout/types.d.ts +2 -3
  82. package/link/Link.js +3 -3
  83. package/link/Link.stories.tsx +60 -0
  84. package/link/Link.test.js +2 -4
  85. package/link/types.d.ts +2 -2
  86. package/main.d.ts +3 -2
  87. package/main.js +9 -1
  88. package/{tabs-nav → nav-tabs}/NavTabs.js +1 -1
  89. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +89 -1
  90. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  91. package/{tabs-nav → nav-tabs}/Tab.js +32 -10
  92. package/nav-tabs/types.js +5 -0
  93. package/number-input/NumberInput.test.js +1 -1
  94. package/package.json +2 -2
  95. package/paginator/Paginator.js +1 -3
  96. package/paginator/Paginator.stories.tsx +24 -0
  97. package/paginator/Paginator.test.js +44 -47
  98. package/paragraph/Paragraph.d.ts +3 -4
  99. package/paragraph/Paragraph.js +5 -5
  100. package/password-input/PasswordInput.test.js +1 -1
  101. package/progress-bar/ProgressBar.d.ts +2 -2
  102. package/progress-bar/ProgressBar.js +5 -5
  103. package/progress-bar/ProgressBar.stories.jsx +35 -2
  104. package/progress-bar/ProgressBar.test.js +1 -1
  105. package/progress-bar/types.d.ts +4 -3
  106. package/quick-nav/QuickNav.stories.tsx +14 -0
  107. package/radio-group/RadioGroup.stories.tsx +131 -18
  108. package/radio-group/RadioGroup.test.js +1 -1
  109. package/resultsetTable/ResultsetTable.js +2 -2
  110. package/resultsetTable/ResultsetTable.test.js +18 -23
  111. package/resultsetTable/types.d.ts +3 -3
  112. package/select/Listbox.d.ts +1 -1
  113. package/select/Listbox.js +5 -34
  114. package/select/Option.js +3 -14
  115. package/select/Select.js +56 -35
  116. package/select/Select.stories.tsx +475 -187
  117. package/select/Select.test.js +76 -81
  118. package/select/types.d.ts +2 -2
  119. package/sidenav/Icons.d.ts +7 -0
  120. package/sidenav/Icons.js +51 -0
  121. package/sidenav/Sidenav.d.ts +2 -2
  122. package/sidenav/Sidenav.js +66 -94
  123. package/sidenav/Sidenav.stories.tsx +110 -17
  124. package/sidenav/types.d.ts +21 -18
  125. package/slider/Slider.js +2 -3
  126. package/slider/Slider.stories.tsx +57 -0
  127. package/slider/Slider.test.js +1 -1
  128. package/slider/types.d.ts +2 -2
  129. package/spinner/Spinner.js +15 -21
  130. package/spinner/Spinner.stories.jsx +53 -27
  131. package/spinner/Spinner.test.js +1 -1
  132. package/switch/Switch.js +2 -2
  133. package/switch/Switch.stories.tsx +33 -0
  134. package/switch/Switch.test.js +1 -1
  135. package/switch/types.d.ts +2 -2
  136. package/table/Table.js +2 -2
  137. package/table/Table.stories.jsx +80 -1
  138. package/table/Table.test.js +1 -1
  139. package/tabs/Tab.js +9 -10
  140. package/tabs/Tabs.js +11 -17
  141. package/tabs/Tabs.stories.tsx +38 -0
  142. package/tabs/Tabs.test.js +4 -5
  143. package/tabs/types.d.ts +2 -2
  144. package/tag/Tag.js +7 -9
  145. package/tag/Tag.stories.tsx +14 -1
  146. package/tag/Tag.test.js +1 -1
  147. package/text-input/Suggestion.js +2 -2
  148. package/text-input/TextInput.js +4 -4
  149. package/text-input/TextInput.stories.tsx +69 -1
  150. package/text-input/TextInput.test.js +1 -2
  151. package/textarea/Textarea.js +3 -4
  152. package/textarea/Textarea.stories.jsx +60 -1
  153. package/textarea/Textarea.test.js +2 -4
  154. package/toggle-group/ToggleGroup.d.ts +2 -2
  155. package/toggle-group/ToggleGroup.js +7 -4
  156. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  157. package/toggle-group/ToggleGroup.test.js +1 -1
  158. package/toggle-group/types.d.ts +1 -1
  159. package/typography/Typography.d.ts +2 -2
  160. package/typography/Typography.js +14 -113
  161. package/typography/Typography.stories.tsx +1 -1
  162. package/useTheme.d.ts +1234 -1
  163. package/useTheme.js +1 -1
  164. package/useTranslatedLabels.d.ts +84 -1
  165. package/utils/BaseTypography.d.ts +21 -0
  166. package/utils/BaseTypography.js +108 -0
  167. package/utils/FocusLock.d.ts +13 -0
  168. package/utils/FocusLock.js +138 -0
  169. package/wizard/Wizard.js +2 -2
  170. package/wizard/Wizard.stories.tsx +20 -0
  171. package/wizard/Wizard.test.js +1 -1
  172. package/wizard/types.d.ts +5 -6
  173. /package/{tabs-nav → grid}/types.js +0 -0
  174. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  175. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  176. /package/{tabs-nav → nav-tabs}/types.d.ts +0 -0
package/button/types.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- export declare type Margin = {
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;
7
7
  right?: Space;
8
8
  };
9
- export declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
9
+ declare type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
10
10
  declare type Props = {
11
11
  /**
12
12
  * Text to be placed in the button.
package/card/Card.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.js");
22
+ var _variables = require("../common/variables");
23
23
 
24
24
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
@@ -60,7 +60,7 @@ var DxcCard = function DxcCard(_ref) {
60
60
  imageBgColor: imageBgColor
61
61
  }, /*#__PURE__*/_react["default"].createElement(TagImage, {
62
62
  imagePadding: imagePadding,
63
- cover: imageCover,
63
+ imageCover: imageCover,
64
64
  src: imageSrc
65
65
  }));
66
66
 
@@ -82,14 +82,13 @@ var DxcCard = function DxcCard(_ref) {
82
82
  }, /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
83
83
  theme: colorsTheme.card
84
84
  }, /*#__PURE__*/_react["default"].createElement(CardContainer, {
85
- hasAction: onClick || linkHref,
86
- imagePosition: imagePosition
85
+ hasAction: onClick || linkHref
87
86
  }, imageSrc && imagePosition === "before" && imageComponent, /*#__PURE__*/_react["default"].createElement(CardContent, {
88
87
  contentPadding: contentPadding
89
88
  }, children), imageSrc && imagePosition === "after" && imageComponent))));
90
89
  };
91
90
 
92
- var StyledDxcCard = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n cursor: ", ";\n outline: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n text-decoration: none;\n\n ", "\n"])), function (_ref2) {
91
+ var StyledDxcCard = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n cursor: ", ";\n outline: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n text-decoration: none;\n ", "\n"])), function (_ref2) {
93
92
  var hasAction = _ref2.hasAction;
94
93
  return hasAction && "pointer" || "unset";
95
94
  }, function (_ref3) {
@@ -100,16 +99,16 @@ var StyledDxcCard = _styledComponents["default"].div(_templateObject || (_templa
100
99
  return margin && (0, _typeof2["default"])(margin) !== "object" ? _variables.spaces[margin] : "0px";
101
100
  }, function (_ref5) {
102
101
  var margin = _ref5.margin;
103
- return margin && margin.top ? _variables.spaces[margin.top] : "";
102
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.top ? _variables.spaces[margin.top] : "";
104
103
  }, function (_ref6) {
105
104
  var margin = _ref6.margin;
106
- return margin && margin.right ? _variables.spaces[margin.right] : "";
105
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.right ? _variables.spaces[margin.right] : "";
107
106
  }, function (_ref7) {
108
107
  var margin = _ref7.margin;
109
- return margin && margin.bottom ? _variables.spaces[margin.bottom] : "";
108
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.bottom ? _variables.spaces[margin.bottom] : "";
110
109
  }, function (_ref8) {
111
110
  var margin = _ref8.margin;
112
- return margin && margin.left ? _variables.spaces[margin.left] : "";
111
+ return margin && (0, _typeof2["default"])(margin) === "object" && margin.left ? _variables.spaces[margin.left] : "";
113
112
  }, function (_ref9) {
114
113
  var hasAction = _ref9.hasAction;
115
114
  return hasAction && ":focus {\n outline: #0095ff auto 1px;\n }";
@@ -126,13 +125,13 @@ var CardContainer = _styledComponents["default"].div(_templateObject2 || (_templ
126
125
 
127
126
  var TagImage = _styledComponents["default"].img(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n height: ", ";\n width: ", ";\n object-fit: ", ";\n"])), function (_ref11) {
128
127
  var imagePadding = _ref11.imagePadding;
129
- return !imagePadding ? "100%" : "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
128
+ return !imagePadding ? "100%" : (0, _typeof2["default"])(imagePadding) !== "object" && "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
130
129
  }, function (_ref12) {
131
130
  var imagePadding = _ref12.imagePadding;
132
- return !imagePadding ? "100%" : "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
131
+ return !imagePadding ? "100%" : (0, _typeof2["default"])(imagePadding) !== "object" && "calc(100% - ".concat(_variables.spaces[imagePadding], " - ").concat(_variables.spaces[imagePadding], ")");
133
132
  }, function (_ref13) {
134
- var cover = _ref13.cover;
135
- return cover ? "cover" : "contain";
133
+ var imageCover = _ref13.imageCover;
134
+ return imageCover ? "cover" : "contain";
136
135
  });
137
136
 
138
137
  var ImageContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n width: 35%;\n height: 100%;\n flex-shrink: 0;\n background: ", ";\n justify-content: center;\n align-items: center;\n display: inline-flex;\n"])), function (_ref14) {
@@ -2,7 +2,6 @@ import React from "react";
2
2
  import Title from "../../.storybook/components/Title";
3
3
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
4
4
  import DxcCard from "./Card";
5
- import imagePath from "./ice-cream.jpg";
6
5
  import { userEvent, within } from "@storybook/testing-library";
7
6
 
8
7
  export default {
@@ -38,72 +37,72 @@ const Card = () => (
38
37
  </ExampleContainer>
39
38
  <Title title="Default with image" theme="light" level={4} />
40
39
  <ExampleContainer>
41
- <DxcCard imageSrc={imagePath}>Default</DxcCard>
40
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300">Default</DxcCard>
42
41
  </ExampleContainer>
43
42
  <Title title="Default image with background color" theme="light" level={4} />
44
43
  <ExampleContainer>
45
- <DxcCard imageSrc={imagePath} imageBgColor="yellow">
44
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imageBgColor="yellow">
46
45
  Background color
47
46
  </DxcCard>
48
47
  </ExampleContainer>
49
48
  <Title title="Default image with position after" theme="light" level={4} />
50
49
  <ExampleContainer>
51
- <DxcCard imageSrc={imagePath} imagePosition="after">
50
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePosition="after">
52
51
  Position after
53
52
  </DxcCard>
54
53
  </ExampleContainer>
55
54
  <Title title="Image cover" theme="light" level={4} />
56
55
  <ExampleContainer>
57
- <DxcCard imageSrc={imagePath} imageCover>
56
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imageCover>
58
57
  Image cover
59
58
  </DxcCard>
60
59
  </ExampleContainer>
61
60
  <Title title="Image cover with position after" theme="light" level={4} />
62
61
  <ExampleContainer>
63
- <DxcCard imageSrc={imagePath} imageCover imagePosition="after">
62
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imageCover imagePosition="after">
64
63
  Image cover with position after
65
64
  </DxcCard>
66
65
  </ExampleContainer>
67
66
  <Title title="Image padding" theme="light" level={2} />
68
67
  <ExampleContainer>
69
68
  <Title title="Xxsmall" theme="light" level={4} />
70
- <DxcCard imageSrc={imagePath} imagePadding="xxsmall" imageCover>
69
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xxsmall" imageCover>
71
70
  Xxsmall
72
71
  </DxcCard>
73
72
  </ExampleContainer>
74
73
  <ExampleContainer>
75
74
  <Title title="Xsmall" theme="light" level={4} />
76
- <DxcCard imageSrc={imagePath} imagePadding="xsmall" imageCover>
75
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xsmall" imageCover>
77
76
  Xsmall
78
77
  </DxcCard>
79
78
  </ExampleContainer>
80
79
  <ExampleContainer>
81
80
  <Title title="Small" theme="light" level={4} />
82
- <DxcCard imageSrc={imagePath} imagePadding="small" imageCover>
81
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="small" imageCover>
83
82
  Small
84
83
  </DxcCard>
85
84
  </ExampleContainer>
86
85
  <ExampleContainer>
87
86
  <Title title="Medium" theme="light" level={4} />
88
- <DxcCard imageSrc={imagePath} imagePadding="medium" imageCover>
87
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="medium" imageCover>
89
88
  Medium
90
89
  </DxcCard>
91
90
  </ExampleContainer>
92
91
  <ExampleContainer>
93
92
  <Title title="Large" theme="light" level={4} />
94
- <DxcCard imageSrc={imagePath} imagePadding="large" imageCover>
93
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="large" imageCover>
95
94
  Large
96
95
  </DxcCard>
97
96
  </ExampleContainer>
98
97
  <ExampleContainer>
99
98
  <Title title="Xlarge" theme="light" level={4} />
100
- <DxcCard imageSrc={imagePath} imagePadding="xlarge" imageCover>
99
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xlarge" imageCover>
101
100
  Xlarge
102
101
  </DxcCard>
103
102
  </ExampleContainer>
104
103
  <ExampleContainer>
105
104
  <Title title="Xxlarge" theme="light" level={4} />
106
- <DxcCard imageSrc={imagePath} imagePadding="xxlarge" imageCover>
105
+ <DxcCard imageSrc="https://picsum.photos/id/1022/200/300" imagePadding="xxlarge" imageCover>
107
106
  Xxlarge
108
107
  </DxcCard>
109
108
  </ExampleContainer>
package/card/Card.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 _Card = _interopRequireDefault(require("./Card"));
9
+ var _Card = _interopRequireDefault(require("./Card.tsx"));
10
10
 
11
11
  describe("Card component tests", function () {
12
12
  test("Card renders with correct content", function () {
@@ -19,9 +19,9 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
- var _variables = require("../common/variables.js");
22
+ var _variables = require("../common/variables");
23
23
 
24
- var _utils = require("../common/utils.js");
24
+ var _utils = require("../common/utils");
25
25
 
26
26
  var _uuid = require("uuid");
27
27
 
@@ -222,7 +222,7 @@ var Checkbox = _styledComponents["default"].span(_templateObject4 || (_templateO
222
222
  return props.disabled && "pointer-events: none;";
223
223
  });
224
224
 
225
- var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n cursor: ", ";\n\n &:hover ", " {\n border: 2px solid\n ", ";\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
225
+ var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n\n &:hover ", " {\n border: 2px solid\n ", ";\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
226
226
  return props.theme.checkLabelSpacing;
227
227
  }, function (props) {
228
228
  return calculateWidth(props.margin, props.size);
@@ -5,12 +5,21 @@ import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
7
  import styled from "styled-components";
8
+ import { HalstackProvider } from "../HalstackContext";
8
9
 
9
10
  export default {
10
11
  title: "Checkbox",
11
12
  component: DxcCheckbox,
12
13
  };
13
14
 
15
+ const opinionatedTheme = {
16
+ checkbox: {
17
+ baseColor: "#0067b3",
18
+ checkColor: "#ffffff",
19
+ fontColor: "#000000",
20
+ },
21
+ };
22
+
14
23
  const Checkbox = () => (
15
24
  <>
16
25
  <ExampleContainer>
@@ -178,6 +187,49 @@ const Checkbox = () => (
178
187
  <DxcCheckbox label="Very long label to check its overflowing" labelPosition="after" />
179
188
  </SmallContainer>
180
189
  </ExampleContainer>
190
+ <Title title="Opinionated theme" theme="light" level={2} />
191
+ <ExampleContainer>
192
+ <Title title="Default" theme="light" level={4} />
193
+ <HalstackProvider theme={opinionatedTheme}>
194
+ <DxcCheckbox label="Checkbox" />
195
+ </HalstackProvider>
196
+ </ExampleContainer>
197
+ <ExampleContainer>
198
+ <Title title="Checked" theme="light" level={4} />
199
+ <HalstackProvider theme={opinionatedTheme}>
200
+ <DxcCheckbox label="Checkbox" defaultChecked />
201
+ </HalstackProvider>
202
+ </ExampleContainer>
203
+ <ExampleContainer>
204
+ <Title title="Disabled" theme="light" level={4} />
205
+ <HalstackProvider theme={opinionatedTheme}>
206
+ <DxcCheckbox label="Checkbox" disabled />
207
+ </HalstackProvider>
208
+ </ExampleContainer>
209
+ <ExampleContainer>
210
+ <Title title="Disabled checked" theme="light" level={4} />
211
+ <HalstackProvider theme={opinionatedTheme}>
212
+ <DxcCheckbox label="Checkbox" defaultChecked disabled />
213
+ </HalstackProvider>
214
+ </ExampleContainer>
215
+ <ExampleContainer pseudoState="pseudo-focus">
216
+ <Title title="Focused" theme="light" level={4} />
217
+ <HalstackProvider theme={opinionatedTheme}>
218
+ <DxcCheckbox label="Focused" />
219
+ </HalstackProvider>
220
+ </ExampleContainer>
221
+ <ExampleContainer pseudoState="pseudo-hover">
222
+ <Title title="Hovered" theme="light" level={4} />
223
+ <HalstackProvider theme={opinionatedTheme}>
224
+ <DxcCheckbox label="Hovered" />
225
+ </HalstackProvider>
226
+ </ExampleContainer>
227
+ <ExampleContainer pseudoState="pseudo-hover">
228
+ <Title title="Hovered and checked" theme="light" level={4} />
229
+ <HalstackProvider theme={opinionatedTheme}>
230
+ <DxcCheckbox label="Hovered" defaultChecked />
231
+ </HalstackProvider>
232
+ </ExampleContainer>
181
233
  </>
182
234
  );
183
235
 
@@ -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 _Checkbox = _interopRequireDefault(require("./Checkbox"));
11
+ var _Checkbox = _interopRequireDefault(require("./Checkbox.tsx"));
12
12
 
13
13
  describe("Checkbox component tests", function () {
14
14
  test("Checkbox renders with correct aria-labelledby and aria-required", function () {
@@ -1,5 +1,5 @@
1
- export declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- export declare type Margin = {
1
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
+ declare type Margin = {
3
3
  top?: Space;
4
4
  bottom?: Space;
5
5
  left?: Space;
package/chip/Chip.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.js");
20
+ var _variables = require("../common/variables");
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
 
@@ -42,45 +42,42 @@ var DxcChip = function DxcChip(_ref) {
42
42
  var colorsTheme = (0, _useTheme["default"])();
43
43
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
44
44
  theme: colorsTheme.chip
45
- }, /*#__PURE__*/_react["default"].createElement(StyledDxcChip, {
45
+ }, /*#__PURE__*/_react["default"].createElement(Chip, {
46
46
  disabled: disabled,
47
47
  margin: margin
48
48
  }, prefixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
49
+ role: typeof onClickPrefix === "function" ? "button" : undefined,
49
50
  disabled: disabled,
50
- prefixIcon: true,
51
- label: label,
52
- mode: "prefix",
51
+ interactuable: typeof onClickPrefix === "function" && !disabled,
53
52
  tabIndex: typeof onClickPrefix === "function" && !disabled ? tabIndex : -1,
54
53
  onClick: function onClick() {
55
54
  return onClickPrefix && !disabled && onClickPrefix();
56
- },
57
- interactuable: typeof onClickPrefix === "function" && !disabled
55
+ }
58
56
  }, typeof prefixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
59
57
  src: prefixIcon
60
- }) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(ChipTextContainer, {
58
+ }) : prefixIcon), label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
61
59
  disabled: disabled
62
60
  }, label), suffixIcon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
61
+ role: typeof onClickSuffix === "function" ? "button" : undefined,
63
62
  disabled: disabled,
64
- suffixIcon: true,
65
- mode: "suffix",
66
- label: label,
63
+ interactuable: typeof onClickSuffix === "function" && !disabled,
67
64
  tabIndex: typeof onClickSuffix === "function" && !disabled ? tabIndex : -1,
68
65
  onClick: function onClick() {
69
- return onClickSuffix && !disabled && onClickSuffix();
70
- },
71
- interactuable: typeof onClickSuffix === "function" && !disabled
66
+ return !disabled && (onClickSuffix === null || onClickSuffix === void 0 ? void 0 : onClickSuffix());
67
+ }
72
68
  }, typeof suffixIcon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
73
69
  src: suffixIcon
74
70
  }) : suffixIcon)));
75
71
  };
76
72
 
77
- var getCursor = function getCursor(interactuable, disabled) {
78
- if (disabled) return "cursor: not-allowed;";else if (interactuable) return "cursor: pointer;";else return "cursor: default; outline:none;";
73
+ var calculateWidth = function calculateWidth(margin) {
74
+ return "calc(100% - ".concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
79
75
  };
80
76
 
81
- var StyledDxcChip = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n min-height: 40px;\n max-width: ", ";\n background-color: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n"])), function (_ref2) {
82
- var margin = _ref2.margin;
83
- return "calc(100% - 40px - ".concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
77
+ var Chip = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n gap: ", ";\n min-height: 40px;\n max-width: ", ";\n background-color: ", ";\n border-radius: ", ";\n border-width: ", ";\n border-style: ", ";\n border-color: ", ";\n\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n cursor: ", ";\n"])), function (props) {
78
+ return props.theme.iconSpacing;
79
+ }, function (props) {
80
+ return calculateWidth(props.margin);
84
81
  }, function (props) {
85
82
  return props.disabled && props.theme.disabledBackgroundColor || props.theme.backgroundColor;
86
83
  }, function (props) {
@@ -109,12 +106,12 @@ var StyledDxcChip = _styledComponents["default"].div(_templateObject || (_templa
109
106
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
110
107
  }, function (props) {
111
108
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
112
- }, function (_ref3) {
113
- var disabled = _ref3.disabled;
109
+ }, function (_ref2) {
110
+ var disabled = _ref2.disabled;
114
111
  return disabled && "not-allowed";
115
112
  });
116
113
 
117
- var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n font-family: ", ";\n font-weight: ", ";\n font-style: ", ";\n color: ", ";\n cursor: ", ";\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), function (props) {
114
+ var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: ", ";\n font-family: ", ";\n font-weight: ", ";\n font-style: ", ";\n color: ", ";\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), function (props) {
118
115
  return props.theme.fontSize;
119
116
  }, function (props) {
120
117
  return props.theme.fontFamily;
@@ -124,21 +121,15 @@ var ChipTextContainer = _styledComponents["default"].span(_templateObject2 || (_
124
121
  return props.theme.fontStyle;
125
122
  }, function (props) {
126
123
  return props.disabled ? props.theme.disabledFontColor : props.theme.fontColor;
127
- }, function (_ref4) {
128
- var disabled = _ref4.disabled;
129
- return disabled && "not-allowed" || "default";
130
124
  });
131
125
 
132
- var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n ", "\n color: ", ";\n ", "\n\n &:focus {\n outline-color: ", ";\n outline-width: 2px;\n ", "\n }\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
133
- return props.prefixIcon ? "margin-right: ".concat((props.label || props.suffixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";") : "margin-left: ".concat((props.label || props.prefixIcon) && props.theme.iconSpacing || props.prefixIcon && "0", ";");
134
- }, function (props) {
126
+ var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n border-radius: 0.25rem;\n color: ", ";\n ", "\n\n ", "\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
135
127
  return props.disabled ? props.theme.disabledIconColor : props.theme.iconColor;
128
+ }, function (_ref3) {
129
+ var interactuable = _ref3.interactuable;
130
+ return interactuable && "cursor: pointer;";
136
131
  }, function (props) {
137
- return getCursor(props.interactuable, props.disabled);
138
- }, function (props) {
139
- return props.theme.focusColor;
140
- }, function (props) {
141
- return props.disabled && "outline: none;";
132
+ return props.interactuable && "\n &:hover {\n color: ".concat(props.theme.hoverIconColor, ";\n }\n &:focus,\n &:focus-visible {\n outline: ").concat(props.theme.focusBorderThickness, " solid ").concat(props.theme.focusColor, ";\n }\n &:active {\n color: ").concat(props.theme.activeIconColor, ";\n }\n ");
142
133
  }, function (props) {
143
134
  return props.theme.iconSize;
144
135
  }, function (props) {
@@ -3,6 +3,7 @@ import { userEvent, within } from "@storybook/testing-library";
3
3
  import DxcChip from "./Chip";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
+ import { HalstackProvider } from "../HalstackContext";
6
7
 
7
8
  export default {
8
9
  title: "Chip",
@@ -39,6 +40,14 @@ const smallIconSVG = (
39
40
  </svg>
40
41
  );
41
42
 
43
+ const opinionatedTheme = {
44
+ chip: {
45
+ baseColor: "#e6e6e6",
46
+ fontColor: "#000000",
47
+ iconColor: "#4d4d4d",
48
+ },
49
+ };
50
+
42
51
  export const Chromatic = () => (
43
52
  <>
44
53
  <ExampleContainer>
@@ -72,29 +81,37 @@ export const Chromatic = () => (
72
81
  </ExampleContainer>
73
82
  <ExampleContainer>
74
83
  <Title title="Chip with ellipsis" theme="light" level={4} />
75
- <DxcChip label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasd fg ssssssssssss ssss" />
84
+ <div style={{ width: "200px" }}>
85
+ <DxcChip label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasd fg ssssssssssss ssss" />
86
+ </div>
76
87
  </ExampleContainer>
77
88
  <ExampleContainer>
78
89
  <Title title="Chip with ellipsis and suffix" theme="light" level={4} />
79
- <DxcChip
80
- suffixIcon={iconSVG}
81
- label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasd fgsss"
82
- />
90
+ <div style={{ width: "200px" }}>
91
+ <DxcChip
92
+ suffixIcon={iconSVG}
93
+ label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasd fgsss"
94
+ />
95
+ </div>
83
96
  </ExampleContainer>
84
97
  <ExampleContainer>
85
98
  <Title title="Chip with ellipsis and prefix" theme="light" level={4} />
86
- <DxcChip
87
- prefixIcon={iconSVG}
88
- label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasd fgsss"
89
- />
99
+ <div style={{ width: "200px" }}>
100
+ <DxcChip
101
+ prefixIcon={iconSVG}
102
+ label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasd fgsss"
103
+ />
104
+ </div>
90
105
  </ExampleContainer>
91
106
  <ExampleContainer>
92
107
  <Title title="Chip with ellipsis, suffix and prefix" theme="light" level={4} />
93
- <DxcChip
94
- prefixIcon={iconSVG}
95
- suffixIcon={iconSVG}
96
- label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasdf"
97
- />
108
+ <div style={{ width: "200px" }}>
109
+ <DxcChip
110
+ prefixIcon={iconSVG}
111
+ suffixIcon={iconSVG}
112
+ label="With ellipsis asdfasdf asdf asdfasdf asdf asdfasdf asdfasdf asdf asdf adfasrfasf afsdg afgasfg asdf asdf asdf asdf asdf asdf asdf afdg asfg asdfg asdf asdf asdf asdfasdf asd fas df asd asdf asdf asdfasdf"
113
+ />
114
+ </div>
98
115
  </ExampleContainer>
99
116
  <Title title="Margins" theme="light" level={2} />
100
117
  <ExampleContainer>
@@ -125,6 +142,52 @@ export const Chromatic = () => (
125
142
  <Title title="Xxlarge margin" theme="light" level={4} />
126
143
  <DxcChip label="xxlarge" margin="xxlarge" />
127
144
  </ExampleContainer>
145
+ <Title title="Opinionated theme" theme="light" level={2} />
146
+ <ExampleContainer>
147
+ <Title title="Chip with prefix and suffix" theme="light" level={4} />
148
+ <HalstackProvider theme={opinionatedTheme}>
149
+ <DxcChip
150
+ label="Chip"
151
+ prefixIcon={iconSVG}
152
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
153
+ />
154
+ </HalstackProvider>
155
+ </ExampleContainer>
156
+ <ExampleContainer>
157
+ <Title title="Chip with prefix and suffix" theme="light" level={4} />
158
+ <HalstackProvider theme={opinionatedTheme}>
159
+ <DxcChip
160
+ label="Chip"
161
+ disabled
162
+ prefixIcon={iconSVG}
163
+ suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
164
+ />
165
+ </HalstackProvider>
166
+ </ExampleContainer>
167
+ <ExampleContainer pseudoState="pseudo-hover">
168
+ <Title title="Hovered" theme="light" level={4} />
169
+ <HalstackProvider theme={opinionatedTheme}>
170
+ <DxcChip
171
+ label="Chip"
172
+ prefixIcon={iconSVG}
173
+ suffixIcon={iconSVG}
174
+ onClickPrefix={() => {}}
175
+ onClickSuffix={() => {}}
176
+ />
177
+ </HalstackProvider>
178
+ </ExampleContainer>
179
+ <ExampleContainer pseudoState="pseudo-active">
180
+ <Title title="Actived" theme="light" level={4} />
181
+ <HalstackProvider theme={opinionatedTheme}>
182
+ <DxcChip
183
+ label="Chip"
184
+ prefixIcon={iconSVG}
185
+ suffixIcon={iconSVG}
186
+ onClickPrefix={() => {}}
187
+ onClickSuffix={() => {}}
188
+ />
189
+ </HalstackProvider>
190
+ </ExampleContainer>
128
191
  </>
129
192
  );
130
193
  const ChipPrefixFocused = () => (
@@ -136,16 +199,16 @@ const ChipPrefixFocused = () => (
136
199
  const ChipSuffixFocused = () => (
137
200
  <ExampleContainer>
138
201
  <Title title="Chip with suffix" theme="light" level={4} />
139
- <DxcChip label="Chip with suffix" suffixIcon={iconSVG} onClickSuffix={() => {}} />
202
+ <DxcChip label="Chip with suffix" suffixIcon="https://icons-for-free.com/download-icon-close+icon-1320184117228553763_512.png" onClickSuffix={() => {}} />
140
203
  </ExampleContainer>
141
204
  );
142
205
 
143
206
  export const PrefixFocused = ChipPrefixFocused.bind({});
144
- PrefixFocused.play = async ({ canvasElement }) => {
207
+ PrefixFocused.play = async () => {
145
208
  await userEvent.tab();
146
209
  };
147
210
 
148
211
  export const SuffixFocused = ChipSuffixFocused.bind({});
149
- SuffixFocused.play = async ({ canvasElement }) => {
212
+ SuffixFocused.play = async () => {
150
213
  await userEvent.tab();
151
214
  };
package/chip/Chip.test.js CHANGED
@@ -6,9 +6,7 @@ var _react = _interopRequireDefault(require("react"));
6
6
 
7
7
  var _react2 = require("@testing-library/react");
8
8
 
9
- var _Chip = _interopRequireDefault(require("./Chip"));
10
-
11
- var _invision = _interopRequireDefault(require("../../app/src/images/invision.svg"));
9
+ var _Chip = _interopRequireDefault(require("./Chip.tsx"));
12
10
 
13
11
  describe("Chip component tests", function () {
14
12
  test("Chip renders with correct text", function () {
@@ -24,7 +22,7 @@ describe("Chip component tests", function () {
24
22
 
25
23
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
26
24
  label: "Chip",
27
- prefixIcon: _invision["default"],
25
+ prefixIcon: "https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png",
28
26
  onClickPrefix: onClick
29
27
  })),
30
28
  getByText = _render2.getByText,
@@ -41,7 +39,7 @@ describe("Chip component tests", function () {
41
39
 
42
40
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
43
41
  label: "Chip",
44
- suffixIcon: _invision["default"],
42
+ suffixIcon: "https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/icon-and-image-large-icon-settings_2x.png",
45
43
  onClickSuffix: onClick
46
44
  })),
47
45
  getByText = _render3.getByText,