@dxc-technology/halstack-react 0.0.0-9bd9511 → 0.0.0-9c20370

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 (213) hide show
  1. package/BackgroundColorContext.d.ts +3 -3
  2. package/BackgroundColorContext.js +12 -2
  3. package/HalstackContext.d.ts +1330 -7
  4. package/HalstackContext.js +84 -67
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +74 -55
  7. package/accordion/Accordion.stories.tsx +3 -101
  8. package/accordion/Accordion.test.js +34 -19
  9. package/accordion/types.d.ts +4 -16
  10. package/accordion-group/AccordionGroup.d.ts +4 -3
  11. package/accordion-group/AccordionGroup.js +49 -42
  12. package/accordion-group/AccordionGroup.stories.tsx +77 -76
  13. package/accordion-group/AccordionGroup.test.js +62 -54
  14. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  15. package/accordion-group/AccordionGroupAccordion.js +43 -0
  16. package/accordion-group/types.d.ts +6 -18
  17. package/alert/Alert.js +47 -20
  18. package/alert/Alert.test.js +46 -29
  19. package/alert/types.d.ts +3 -3
  20. package/badge/Badge.js +14 -2
  21. package/badge/types.d.ts +1 -1
  22. package/bleed/Bleed.js +21 -13
  23. package/bleed/Bleed.stories.tsx +1 -0
  24. package/bleed/types.d.ts +2 -2
  25. package/box/Box.d.ts +1 -1
  26. package/box/Box.js +33 -33
  27. package/box/Box.stories.tsx +25 -53
  28. package/box/Box.test.js +7 -2
  29. package/box/types.d.ts +3 -15
  30. package/bulleted-list/BulletedList.js +36 -9
  31. package/bulleted-list/BulletedList.stories.tsx +7 -1
  32. package/bulleted-list/types.d.ts +32 -5
  33. package/button/Button.d.ts +1 -1
  34. package/button/Button.js +83 -71
  35. package/button/Button.stories.tsx +4 -4
  36. package/button/Button.test.js +28 -8
  37. package/button/types.d.ts +8 -4
  38. package/card/Card.d.ts +1 -1
  39. package/card/Card.js +67 -62
  40. package/card/Card.stories.tsx +12 -42
  41. package/card/Card.test.js +22 -11
  42. package/card/types.d.ts +4 -10
  43. package/checkbox/Checkbox.js +71 -27
  44. package/checkbox/Checkbox.test.js +60 -33
  45. package/checkbox/types.d.ts +4 -4
  46. package/chip/Chip.js +51 -48
  47. package/chip/Chip.stories.tsx +25 -17
  48. package/chip/Chip.test.js +29 -17
  49. package/chip/types.d.ts +4 -4
  50. package/common/OpenSans.css +68 -80
  51. package/common/coreTokens.d.ts +146 -0
  52. package/common/coreTokens.js +167 -0
  53. package/common/utils.d.ts +1 -0
  54. package/common/utils.js +8 -3
  55. package/common/variables.d.ts +226 -175
  56. package/common/variables.js +956 -1133
  57. package/date-input/Calendar.js +55 -12
  58. package/date-input/DateInput.js +82 -35
  59. package/date-input/DateInput.test.js +351 -164
  60. package/date-input/DatePicker.js +38 -8
  61. package/date-input/Icons.js +12 -0
  62. package/date-input/YearPicker.js +30 -5
  63. package/date-input/types.d.ts +7 -7
  64. package/dialog/Dialog.d.ts +1 -1
  65. package/dialog/Dialog.js +83 -86
  66. package/dialog/Dialog.stories.tsx +127 -221
  67. package/dialog/Dialog.test.js +331 -18
  68. package/dialog/types.d.ts +1 -14
  69. package/dropdown/Dropdown.js +86 -32
  70. package/dropdown/Dropdown.test.js +211 -104
  71. package/dropdown/DropdownMenu.js +22 -8
  72. package/dropdown/DropdownMenuItem.js +15 -6
  73. package/dropdown/types.d.ts +8 -8
  74. package/file-input/FileInput.js +218 -134
  75. package/file-input/FileInput.test.js +343 -331
  76. package/file-input/FileItem.js +39 -12
  77. package/file-input/types.d.ts +10 -10
  78. package/flex/Flex.js +39 -25
  79. package/flex/Flex.stories.tsx +35 -26
  80. package/flex/types.d.ts +74 -9
  81. package/footer/Footer.d.ts +1 -1
  82. package/footer/Footer.js +80 -68
  83. package/footer/Footer.stories.tsx +12 -89
  84. package/footer/Footer.test.js +47 -40
  85. package/footer/Icons.js +4 -0
  86. package/footer/types.d.ts +15 -17
  87. package/grid/Grid.d.ts +7 -0
  88. package/grid/Grid.js +91 -0
  89. package/grid/Grid.stories.tsx +219 -0
  90. package/grid/types.d.ts +115 -0
  91. package/header/Header.d.ts +4 -3
  92. package/header/Header.js +72 -55
  93. package/header/Header.stories.tsx +7 -71
  94. package/header/Header.test.js +26 -13
  95. package/header/Icons.js +4 -0
  96. package/header/types.d.ts +2 -16
  97. package/heading/Heading.js +28 -7
  98. package/heading/Heading.test.js +88 -71
  99. package/heading/types.d.ts +3 -3
  100. package/inset/Inset.js +21 -13
  101. package/inset/Inset.stories.tsx +2 -1
  102. package/inset/types.d.ts +2 -2
  103. package/layout/ApplicationLayout.d.ts +5 -5
  104. package/layout/ApplicationLayout.js +57 -15
  105. package/layout/Icons.js +10 -0
  106. package/layout/SidenavContext.d.ts +1 -1
  107. package/layout/SidenavContext.js +4 -0
  108. package/layout/types.d.ts +5 -6
  109. package/link/Link.js +41 -21
  110. package/link/Link.test.js +42 -26
  111. package/link/types.d.ts +4 -4
  112. package/main.d.ts +2 -1
  113. package/main.js +55 -0
  114. package/nav-tabs/NavTabs.d.ts +2 -2
  115. package/nav-tabs/NavTabs.js +43 -16
  116. package/nav-tabs/NavTabs.stories.tsx +14 -0
  117. package/nav-tabs/NavTabs.test.js +44 -37
  118. package/nav-tabs/Tab.js +71 -45
  119. package/nav-tabs/types.d.ts +10 -11
  120. package/number-input/NumberInput.js +30 -20
  121. package/number-input/NumberInput.test.js +249 -113
  122. package/number-input/NumberInputContext.js +5 -0
  123. package/number-input/numberInputContextTypes.d.ts +1 -1
  124. package/number-input/types.d.ts +4 -4
  125. package/package.json +7 -7
  126. package/paginator/Icons.js +10 -0
  127. package/paginator/Paginator.js +39 -17
  128. package/paginator/Paginator.test.js +156 -104
  129. package/paginator/types.d.ts +1 -1
  130. package/paragraph/Paragraph.d.ts +3 -4
  131. package/paragraph/Paragraph.js +18 -8
  132. package/password-input/PasswordInput.js +51 -22
  133. package/password-input/PasswordInput.test.js +94 -51
  134. package/password-input/types.d.ts +4 -4
  135. package/progress-bar/ProgressBar.d.ts +2 -2
  136. package/progress-bar/ProgressBar.js +39 -14
  137. package/progress-bar/ProgressBar.test.js +53 -36
  138. package/progress-bar/types.d.ts +4 -3
  139. package/quick-nav/QuickNav.js +24 -2
  140. package/quick-nav/types.d.ts +2 -2
  141. package/radio-group/Radio.js +53 -22
  142. package/radio-group/RadioGroup.js +84 -41
  143. package/radio-group/RadioGroup.test.js +288 -186
  144. package/radio-group/types.d.ts +4 -4
  145. package/resultsetTable/Icons.js +3 -0
  146. package/resultsetTable/ResultsetTable.js +56 -21
  147. package/resultsetTable/ResultsetTable.test.js +75 -42
  148. package/resultsetTable/types.d.ts +5 -5
  149. package/select/Icons.js +3 -0
  150. package/select/Listbox.js +35 -10
  151. package/select/Option.js +24 -8
  152. package/select/Select.js +143 -56
  153. package/select/Select.test.js +839 -456
  154. package/select/types.d.ts +12 -12
  155. package/sidenav/Icons.d.ts +7 -0
  156. package/sidenav/Icons.js +51 -0
  157. package/sidenav/Sidenav.d.ts +2 -2
  158. package/sidenav/Sidenav.js +116 -104
  159. package/sidenav/Sidenav.stories.tsx +60 -60
  160. package/sidenav/Sidenav.test.js +10 -3
  161. package/sidenav/types.d.ts +26 -23
  162. package/slider/Slider.js +84 -38
  163. package/slider/Slider.test.js +104 -76
  164. package/slider/types.d.ts +4 -4
  165. package/spinner/Spinner.js +51 -28
  166. package/spinner/Spinner.stories.jsx +28 -28
  167. package/spinner/Spinner.test.js +35 -26
  168. package/spinner/types.d.ts +3 -3
  169. package/switch/Switch.js +66 -24
  170. package/switch/Switch.test.js +97 -52
  171. package/switch/types.d.ts +4 -4
  172. package/table/Table.js +22 -4
  173. package/table/Table.test.js +7 -2
  174. package/table/types.d.ts +3 -3
  175. package/tabs/Tab.js +39 -22
  176. package/tabs/Tabs.js +131 -62
  177. package/tabs/Tabs.test.js +122 -67
  178. package/tabs/types.d.ts +8 -8
  179. package/tag/Tag.js +54 -27
  180. package/tag/Tag.test.js +31 -20
  181. package/tag/types.d.ts +7 -7
  182. package/text-input/Icons.js +3 -0
  183. package/text-input/Suggestion.js +24 -8
  184. package/text-input/Suggestions.js +36 -11
  185. package/text-input/TextInput.js +144 -59
  186. package/text-input/TextInput.stories.tsx +1 -1
  187. package/text-input/TextInput.test.js +858 -539
  188. package/text-input/types.d.ts +9 -9
  189. package/textarea/Textarea.js +73 -38
  190. package/textarea/Textarea.test.js +173 -98
  191. package/textarea/types.d.ts +4 -4
  192. package/toggle-group/ToggleGroup.d.ts +2 -2
  193. package/toggle-group/ToggleGroup.js +59 -21
  194. package/toggle-group/ToggleGroup.test.js +72 -40
  195. package/toggle-group/types.d.ts +11 -11
  196. package/typography/Typography.d.ts +2 -2
  197. package/typography/Typography.js +23 -110
  198. package/typography/Typography.stories.tsx +1 -1
  199. package/typography/types.d.ts +1 -1
  200. package/useTheme.d.ts +1234 -1
  201. package/useTheme.js +6 -0
  202. package/useTranslatedLabels.d.ts +84 -2
  203. package/useTranslatedLabels.js +5 -0
  204. package/utils/BaseTypography.d.ts +21 -0
  205. package/utils/BaseTypography.js +108 -0
  206. package/utils/FocusLock.d.ts +13 -0
  207. package/utils/FocusLock.js +138 -0
  208. package/wizard/Wizard.js +47 -13
  209. package/wizard/Wizard.test.js +81 -54
  210. package/wizard/types.d.ts +7 -8
  211. package/card/ice-cream.jpg +0 -0
  212. package/translatedLabelsType.d.ts +0 -82
  213. /package/{translatedLabelsType.js → grid/types.js} +0 -0
@@ -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,104 +37,75 @@ 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>
110
- <Title title="Content padding" theme="light" level={2} />
111
- <ExampleContainer>
112
- <Title title="Xxsmall" theme="light" level={4} />
113
- <DxcCard contentPadding="xxsmall">Xxsmall</DxcCard>
114
- </ExampleContainer>
115
- <ExampleContainer>
116
- <Title title="Xsmall" theme="light" level={4} />
117
- <DxcCard contentPadding="xsmall">Xsmall</DxcCard>
118
- </ExampleContainer>
119
- <ExampleContainer>
120
- <Title title="Small" theme="light" level={4} />
121
- <DxcCard contentPadding="small">Small</DxcCard>
122
- </ExampleContainer>
123
- <ExampleContainer>
124
- <Title title="Medium" theme="light" level={4} />
125
- <DxcCard contentPadding="medium">Medium</DxcCard>
126
- </ExampleContainer>
127
- <ExampleContainer>
128
- <Title title="Large" theme="light" level={4} />
129
- <DxcCard contentPadding="large">Large</DxcCard>
130
- </ExampleContainer>
131
- <ExampleContainer>
132
- <Title title="Xlarge" theme="light" level={4} />
133
- <DxcCard contentPadding="xlarge">Xlarge</DxcCard>
134
- </ExampleContainer>
135
- <ExampleContainer>
136
- <Title title="Xxlarge" theme="light" level={4} />
137
- <DxcCard contentPadding="xxlarge">Xxlarge</DxcCard>
138
- </ExampleContainer>
139
109
  <Title title="Margin" theme="light" level={2} />
140
110
  <ExampleContainer>
141
111
  <Title title="Xxsmall" theme="light" level={4} />
package/card/Card.test.js CHANGED
@@ -1,39 +1,50 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  var _react = _interopRequireDefault(require("react"));
6
+
5
7
  var _react2 = require("@testing-library/react");
6
- var _Card = _interopRequireDefault(require("./Card"));
8
+
9
+ var _Card = _interopRequireDefault(require("./Card.tsx"));
10
+
7
11
  describe("Card component tests", function () {
8
12
  test("Card renders with correct content", function () {
9
13
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Card["default"], null, "test-card")),
10
- getByText = _render.getByText;
14
+ getByText = _render.getByText;
15
+
11
16
  expect(getByText("test-card")).toBeTruthy();
12
17
  });
13
18
  test("Card renders with correct href", function () {
14
19
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Card["default"], {
15
- linkHref: "/testPage"
16
- }, "test-card")),
17
- getByRole = _render2.getByRole;
20
+ linkHref: "/testPage"
21
+ }, "test-card")),
22
+ getByRole = _render2.getByRole;
23
+
18
24
  var card = getByRole("link");
19
25
  expect(card.getAttribute("href")).toEqual("/testPage");
20
26
  });
21
27
  test("Card renders with correct image", function () {
22
28
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Card["default"], {
23
- imageSrc: "/testImage"
24
- }, "test-card")),
25
- getByRole = _render3.getByRole;
29
+ imageSrc: "/testImage"
30
+ }, "test-card")),
31
+ getByRole = _render3.getByRole;
32
+
26
33
  var card = getByRole("img");
27
34
  expect(card.getAttribute("src")).toEqual("/testImage");
28
35
  });
29
36
  test("OnClick function is called", function () {
30
37
  var onClick = jest.fn();
38
+
31
39
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Card["default"], {
32
- onClick: onClick
33
- }, "test-card")),
34
- getByText = _render4.getByText;
40
+ onClick: onClick
41
+ }, "test-card")),
42
+ getByText = _render4.getByText;
43
+
35
44
  var card = getByText("test-card");
45
+
36
46
  _react2.fireEvent.click(card);
47
+
37
48
  expect(onClick).toHaveBeenCalled();
38
49
  });
39
50
  });
package/card/types.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /// <reference types="react" />
2
- type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
- type Size = {
2
+ declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
3
+ declare type Size = {
4
4
  top?: Space;
5
5
  bottom?: Space;
6
6
  left?: Space;
7
7
  right?: Space;
8
8
  };
9
- type Props = {
9
+ declare type Props = {
10
10
  /**
11
11
  * URL of the image that will be placed in the card component.
12
12
  * In case of omission, the image container will not appear and
@@ -46,18 +46,12 @@ type Props = {
46
46
  * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different margin sizes.
47
47
  */
48
48
  margin?: Space | Size;
49
- /**
50
- * @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
51
- * Size of the padding to be applied to the content area ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
52
- * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
53
- */
54
- contentPadding?: Space | Size;
55
49
  /**
56
50
  * Value of the tabindex given when there is an href.
57
51
  */
58
52
  tabIndex?: number;
59
53
  /**
60
- * Whether the card must be outlined.
54
+ * Determines whether or not the component should have an outline.
61
55
  */
62
56
  outlined?: boolean;
63
57
  /**
@@ -1,25 +1,42 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  var _typeof3 = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports["default"] = void 0;
11
+
9
12
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
+
10
14
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
+
11
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
12
18
  var _react = _interopRequireWildcard(require("react"));
19
+
13
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
+
14
22
  var _variables = require("../common/variables");
15
- var _utils = require("../common/utils.js");
23
+
24
+ var _utils = require("../common/utils");
25
+
16
26
  var _uuid = require("uuid");
27
+
17
28
  var _useTheme = _interopRequireDefault(require("../useTheme"));
29
+
18
30
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
31
+
19
32
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
33
+
20
34
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
35
+
21
36
  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); }
37
+
22
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
39
+
23
40
  var checkedIcon = /*#__PURE__*/_react["default"].createElement("svg", {
24
41
  fill: "currentColor",
25
42
  focusable: "false",
@@ -28,40 +45,46 @@ var checkedIcon = /*#__PURE__*/_react["default"].createElement("svg", {
28
45
  }, /*#__PURE__*/_react["default"].createElement("path", {
29
46
  d: "M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
30
47
  }));
48
+
31
49
  var DxcCheckbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
32
50
  var checked = _ref.checked,
33
- _ref$defaultChecked = _ref.defaultChecked,
34
- defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,
35
- value = _ref.value,
36
- _ref$label = _ref.label,
37
- label = _ref$label === void 0 ? "" : _ref$label,
38
- _ref$labelPosition = _ref.labelPosition,
39
- labelPosition = _ref$labelPosition === void 0 ? "before" : _ref$labelPosition,
40
- _ref$name = _ref.name,
41
- name = _ref$name === void 0 ? "" : _ref$name,
42
- _ref$disabled = _ref.disabled,
43
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
44
- _ref$optional = _ref.optional,
45
- optional = _ref$optional === void 0 ? false : _ref$optional,
46
- onChange = _ref.onChange,
47
- margin = _ref.margin,
48
- _ref$size = _ref.size,
49
- size = _ref$size === void 0 ? "fitContent" : _ref$size,
50
- _ref$tabIndex = _ref.tabIndex,
51
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
51
+ _ref$defaultChecked = _ref.defaultChecked,
52
+ defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,
53
+ value = _ref.value,
54
+ _ref$label = _ref.label,
55
+ label = _ref$label === void 0 ? "" : _ref$label,
56
+ _ref$labelPosition = _ref.labelPosition,
57
+ labelPosition = _ref$labelPosition === void 0 ? "before" : _ref$labelPosition,
58
+ _ref$name = _ref.name,
59
+ name = _ref$name === void 0 ? "" : _ref$name,
60
+ _ref$disabled = _ref.disabled,
61
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
62
+ _ref$optional = _ref.optional,
63
+ optional = _ref$optional === void 0 ? false : _ref$optional,
64
+ onChange = _ref.onChange,
65
+ margin = _ref.margin,
66
+ _ref$size = _ref.size,
67
+ size = _ref$size === void 0 ? "fitContent" : _ref$size,
68
+ _ref$tabIndex = _ref.tabIndex,
69
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
70
+
52
71
  var _useState = (0, _react.useState)("label-checkbox-".concat((0, _uuid.v4)())),
53
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
54
- labelId = _useState2[0];
72
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
73
+ labelId = _useState2[0];
74
+
55
75
  var _useState3 = (0, _react.useState)(defaultChecked),
56
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
57
- innerChecked = _useState4[0],
58
- setInnerChecked = _useState4[1];
76
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
77
+ innerChecked = _useState4[0],
78
+ setInnerChecked = _useState4[1];
79
+
59
80
  var checkboxRef = (0, _react.useRef)(null);
60
81
  var colorsTheme = (0, _useTheme["default"])();
61
82
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
62
83
  var translatedLabels = (0, _useTranslatedLabels["default"])();
84
+
63
85
  var handleCheckboxChange = function handleCheckboxChange() {
64
86
  var _checkboxRef$current;
87
+
65
88
  document.activeElement !== (checkboxRef === null || checkboxRef === void 0 ? void 0 : checkboxRef.current) && (checkboxRef === null || checkboxRef === void 0 ? void 0 : (_checkboxRef$current = checkboxRef.current) === null || _checkboxRef$current === void 0 ? void 0 : _checkboxRef$current.focus());
66
89
  var newChecked = checked !== null && checked !== void 0 ? checked : innerChecked;
67
90
  checked !== null && checked !== void 0 ? checked : setInnerChecked(function (innerChecked) {
@@ -69,6 +92,7 @@ var DxcCheckbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
69
92
  });
70
93
  onChange === null || onChange === void 0 ? void 0 : onChange(!newChecked);
71
94
  };
95
+
72
96
  var handleKeyboard = function handleKeyboard(event) {
73
97
  switch (event.key) {
74
98
  case " ":
@@ -76,8 +100,9 @@ var DxcCheckbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
76
100
  handleCheckboxChange();
77
101
  }
78
102
  };
103
+
79
104
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
80
- theme: colorsTheme["checkbox"]
105
+ theme: colorsTheme.checkbox
81
106
  }, /*#__PURE__*/_react["default"].createElement(MainContainer, {
82
107
  disabled: disabled,
83
108
  onClick: disabled ? undefined : handleCheckboxChange,
@@ -116,6 +141,7 @@ var DxcCheckbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref)
116
141
  backgroundType: backgroundType
117
142
  }, optional && "".concat(translatedLabels.formFields.optionalLabel, " "), label)));
118
143
  });
144
+
119
145
  var sizes = {
120
146
  small: "120px",
121
147
  medium: "240px",
@@ -123,40 +149,53 @@ var sizes = {
123
149
  fillParent: "100%",
124
150
  fitContent: "fit-content"
125
151
  };
152
+
126
153
  var calculateWidth = function calculateWidth(margin, size) {
127
154
  if (size === "fillParent") {
128
155
  return "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
129
156
  }
157
+
130
158
  return sizes[size];
131
159
  };
160
+
132
161
  var getDisabledColor = function getDisabledColor(props, element) {
133
162
  switch (element) {
134
163
  case "check":
135
164
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckColorOnDark : props.theme.disabledCheckColor;
165
+
136
166
  case "background":
137
167
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBackgroundColorCheckedOnDark : props.theme.disabledBackgroundColorChecked;
168
+
138
169
  case "border":
139
170
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;
171
+
140
172
  case "label":
141
173
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledFontColorOnDark : props.theme.disabledFontColor;
142
174
  }
143
175
  };
176
+
144
177
  var getEnabledColor = function getEnabledColor(props, element) {
145
178
  switch (element) {
146
179
  case "check":
147
180
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
181
+
148
182
  case "background":
149
183
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
184
+
150
185
  case "hoverBackground":
151
186
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.hoverBackgroundColorCheckedOnDark : props.theme.hoverBackgroundColorChecked;
187
+
152
188
  case "border":
153
189
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
190
+
154
191
  case "hoverBorder":
155
192
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor;
193
+
156
194
  case "label":
157
195
  return props.backgroundType && props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
158
196
  }
159
197
  };
198
+
160
199
  var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
161
200
  return props.disabled ? getDisabledColor(props, "label") : getEnabledColor(props, "label");
162
201
  }, function (props) {
@@ -166,8 +205,11 @@ var LabelContainer = _styledComponents["default"].span(_templateObject || (_temp
166
205
  }, function (props) {
167
206
  return props.theme.fontWeight;
168
207
  });
208
+
169
209
  var ValueInput = _styledComponents["default"].input(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
210
+
170
211
  var CheckboxContainer = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
212
+
171
213
  var Checkbox = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 18px;\n width: 18px;\n border: 2px solid\n ", ";\n border-radius: 2px;\n background-color: ", ";\n color: ", ";\n\n &:focus {\n outline: 2px solid\n ", ";\n outline-offset: 2px;\n }\n svg {\n position: absolute;\n width: 22px;\n height: 22px;\n }\n ", "\n"])), function (props) {
172
214
  return props.disabled ? getDisabledColor(props, "border") : getEnabledColor(props, "border");
173
215
  }, function (props) {
@@ -179,7 +221,8 @@ var Checkbox = _styledComponents["default"].span(_templateObject4 || (_templateO
179
221
  }, function (props) {
180
222
  return props.disabled && "pointer-events: none;";
181
223
  });
182
- 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) {
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 cursor: ", ";\n\n &:hover ", " {\n border: 2px solid\n ", ";\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
183
226
  return props.theme.checkLabelSpacing;
184
227
  }, function (props) {
185
228
  return calculateWidth(props.margin, props.size);
@@ -202,5 +245,6 @@ var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templ
202
245
  }, function (props) {
203
246
  return props.disabled ? getDisabledColor(props, "background") : getEnabledColor(props, "hoverBackground");
204
247
  });
248
+
205
249
  var _default = DxcCheckbox;
206
250
  exports["default"] = _default;
@@ -1,37 +1,47 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
4
5
  var _react = _interopRequireDefault(require("react"));
6
+
5
7
  var _react2 = require("@testing-library/react");
8
+
6
9
  var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
7
- var _Checkbox = _interopRequireDefault(require("./Checkbox"));
10
+
11
+ var _Checkbox = _interopRequireDefault(require("./Checkbox.tsx"));
12
+
8
13
  describe("Checkbox component tests", function () {
9
14
  test("Checkbox renders with correct aria-labelledby and aria-required", function () {
10
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
11
- label: "Checkbox"
12
- })),
13
- getByText = _render.getByText,
14
- getByRole = _render.getByRole;
16
+ label: "Checkbox"
17
+ })),
18
+ getByText = _render.getByText,
19
+ getByRole = _render.getByRole;
20
+
15
21
  var labelId = getByText("Checkbox").getAttribute("id");
16
22
  expect(getByRole("checkbox").getAttribute("aria-labelledby")).toBe(labelId);
17
23
  expect(getByRole("checkbox").getAttribute("aria-required")).toBe("true");
18
24
  });
19
25
  test("Optional checkbox renders with correct aria-required", function () {
20
26
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
21
- label: "Checkbox",
22
- optional: true
23
- })),
24
- getByRole = _render2.getByRole;
27
+ label: "Checkbox",
28
+ optional: true
29
+ })),
30
+ getByRole = _render2.getByRole;
31
+
25
32
  expect(getByRole("checkbox").getAttribute("aria-required")).toBe("false");
26
33
  });
27
34
  test("Calls correct function on click", function () {
28
35
  var onChange = jest.fn();
36
+
29
37
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
30
- label: "Checkbox",
31
- onChange: onChange
32
- })),
33
- getByText = _render3.getByText;
38
+ label: "Checkbox",
39
+ onChange: onChange
40
+ })),
41
+ getByText = _render3.getByText;
42
+
34
43
  _react2.fireEvent.click(getByText("Checkbox"));
44
+
35
45
  expect(onChange).toHaveBeenCalled();
36
46
  });
37
47
  test("Uncontrolled checkbox", function () {
@@ -46,7 +56,9 @@ describe("Checkbox component tests", function () {
46
56
  var submitInput = component.container.querySelector("input[name=\"test\"]");
47
57
  expect(input.getAttribute("aria-checked")).toBe("false");
48
58
  expect(submitInput.checked).toBe(false);
59
+
49
60
  _react2.fireEvent.click(visibleCheckbox);
61
+
50
62
  expect(onChange).toHaveBeenCalled();
51
63
  expect(onChange).toHaveBeenCalledWith(true);
52
64
  expect(input.getAttribute("aria-checked")).toBe("true");
@@ -63,7 +75,9 @@ describe("Checkbox component tests", function () {
63
75
  var input = component.getByRole("checkbox");
64
76
  var visibleCheckbox = component.getByText("Checkbox");
65
77
  var submitInput = component.container.querySelector("input[name=\"test\"]");
78
+
66
79
  _react2.fireEvent.click(visibleCheckbox);
80
+
67
81
  expect(onChange).toHaveBeenCalled();
68
82
  expect(onChange).toHaveBeenCalledWith(true);
69
83
  expect(input.getAttribute("aria-checked")).toBe("false");
@@ -71,13 +85,14 @@ describe("Checkbox component tests", function () {
71
85
  });
72
86
  test("Renders with correct initial value and initial state when it is uncontrolled", function () {
73
87
  var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
74
- label: "Default label",
75
- defaultChecked: true,
76
- value: "test-defaultChecked",
77
- name: "test"
78
- })),
79
- getByRole = _render4.getByRole,
80
- container = _render4.container;
88
+ label: "Default label",
89
+ defaultChecked: true,
90
+ value: "test-defaultChecked",
91
+ name: "test"
92
+ })),
93
+ getByRole = _render4.getByRole,
94
+ container = _render4.container;
95
+
81
96
  var checkbox = getByRole("checkbox");
82
97
  var submitInput = container.querySelector("input[name=\"test\"]");
83
98
  expect(submitInput.value).toBe("test-defaultChecked");
@@ -86,43 +101,55 @@ describe("Checkbox component tests", function () {
86
101
  });
87
102
  test("Test disable keyboard and mouse interactions", function () {
88
103
  var onChange = jest.fn();
104
+
89
105
  var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
90
- label: "Checkbox",
91
- onChange: onChange,
92
- disabled: true,
93
- name: "test"
94
- })),
95
- getByRole = _render5.getByRole,
96
- getByText = _render5.getByText,
97
- container = _render5.container;
106
+ label: "Checkbox",
107
+ onChange: onChange,
108
+ disabled: true,
109
+ name: "test"
110
+ })),
111
+ getByRole = _render5.getByRole,
112
+ getByText = _render5.getByText,
113
+ container = _render5.container;
114
+
98
115
  var input = getByRole("checkbox");
99
116
  var visibleCheckbox = getByText("Checkbox");
100
117
  var submitInput = container.querySelector("input[name=\"test\"]");
118
+
101
119
  _react2.fireEvent.click(visibleCheckbox);
120
+
102
121
  expect(onChange).toHaveBeenCalledTimes(0);
103
122
  expect(input.getAttribute("aria-checked")).toBe("false");
104
123
  expect(input.getAttribute("aria-disabled")).toBe("true");
105
124
  expect(submitInput.checked).toBe(false);
125
+
106
126
  _userEvent["default"].tab();
127
+
107
128
  expect(document.activeElement === input).toBeFalsy();
108
129
  });
109
130
  test("Test keyboard interactions", function () {
110
131
  var onChange = jest.fn();
132
+
111
133
  var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
112
- label: "Checkbox",
113
- name: "test",
114
- onChange: onChange
115
- })),
116
- getByRole = _render6.getByRole;
134
+ label: "Checkbox",
135
+ name: "test",
136
+ onChange: onChange
137
+ })),
138
+ getByRole = _render6.getByRole;
139
+
117
140
  var checkbox = getByRole("checkbox");
141
+
118
142
  _userEvent["default"].tab();
143
+
119
144
  expect(document.activeElement === checkbox).toBeTruthy();
145
+
120
146
  _react2.fireEvent.keyDown(checkbox, {
121
147
  key: " ",
122
148
  code: "Space",
123
149
  keyCode: 32,
124
150
  charCode: 32
125
151
  });
152
+
126
153
  expect(onChange).toHaveBeenCalledWith(true);
127
154
  });
128
155
  });
@@ -1,11 +1,11 @@
1
- export type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
- export 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;
6
6
  right?: Space;
7
7
  };
8
- type Props = {
8
+ declare type Props = {
9
9
  /**
10
10
  * Initial state of the checkbox, only when it is uncontrolled.
11
11
  */
@@ -64,5 +64,5 @@ type Props = {
64
64
  /**
65
65
  * Reference to the component.
66
66
  */
67
- export type RefType = HTMLDivElement;
67
+ export declare type RefType = HTMLDivElement;
68
68
  export default Props;