@dxc-technology/halstack-react 0.0.0-59568e7 → 0.0.0-5a1e592

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 (283) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1349 -5
  4. package/HalstackContext.js +117 -80
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +110 -114
  8. package/accordion/Accordion.stories.tsx +105 -115
  9. package/accordion/Accordion.test.js +10 -11
  10. package/accordion/types.d.ts +1 -12
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +25 -65
  13. package/accordion-group/AccordionGroup.stories.tsx +93 -66
  14. package/accordion-group/AccordionGroup.test.js +27 -62
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +43 -0
  17. package/accordion-group/types.d.ts +7 -12
  18. package/alert/Alert.js +5 -9
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +1 -1
  21. package/badge/Badge.d.ts +1 -1
  22. package/badge/Badge.js +5 -3
  23. package/badge/types.d.ts +1 -0
  24. package/bleed/Bleed.js +1 -34
  25. package/bleed/Bleed.stories.tsx +95 -95
  26. package/bleed/types.d.ts +1 -1
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +19 -48
  29. package/box/Box.stories.tsx +38 -51
  30. package/box/Box.test.js +1 -1
  31. package/box/types.d.ts +0 -11
  32. package/bulleted-list/BulletedList.d.ts +7 -0
  33. package/bulleted-list/BulletedList.js +125 -0
  34. package/bulleted-list/BulletedList.stories.tsx +206 -0
  35. package/bulleted-list/types.d.ts +38 -0
  36. package/button/Button.d.ts +1 -1
  37. package/button/Button.js +42 -72
  38. package/button/Button.stories.tsx +159 -8
  39. package/button/Button.test.js +12 -1
  40. package/button/types.d.ts +9 -5
  41. package/card/Card.d.ts +1 -1
  42. package/card/Card.js +43 -63
  43. package/card/Card.stories.tsx +12 -42
  44. package/card/Card.test.js +1 -1
  45. package/card/types.d.ts +1 -6
  46. package/checkbox/Checkbox.d.ts +2 -2
  47. package/checkbox/Checkbox.js +127 -115
  48. package/checkbox/Checkbox.stories.tsx +146 -58
  49. package/checkbox/Checkbox.test.js +168 -18
  50. package/checkbox/types.d.ts +8 -0
  51. package/chip/Chip.js +28 -49
  52. package/chip/Chip.stories.tsx +121 -26
  53. package/chip/Chip.test.js +3 -5
  54. package/chip/types.d.ts +1 -1
  55. package/common/OpenSans.css +68 -80
  56. package/common/coreTokens.d.ts +146 -0
  57. package/common/coreTokens.js +167 -0
  58. package/common/utils.d.ts +1 -0
  59. package/common/utils.js +4 -4
  60. package/common/variables.d.ts +1499 -0
  61. package/common/variables.js +1025 -1131
  62. package/date-input/Calendar.d.ts +4 -0
  63. package/date-input/Calendar.js +258 -0
  64. package/date-input/DateInput.js +138 -239
  65. package/date-input/DateInput.stories.tsx +209 -33
  66. package/date-input/DateInput.test.js +519 -149
  67. package/date-input/DatePicker.d.ts +4 -0
  68. package/date-input/DatePicker.js +146 -0
  69. package/date-input/Icons.d.ts +6 -0
  70. package/date-input/Icons.js +75 -0
  71. package/date-input/YearPicker.d.ts +4 -0
  72. package/date-input/YearPicker.js +126 -0
  73. package/date-input/types.d.ts +55 -0
  74. package/dialog/Dialog.d.ts +1 -1
  75. package/dialog/Dialog.js +72 -79
  76. package/dialog/Dialog.stories.tsx +154 -171
  77. package/dialog/Dialog.test.js +334 -5
  78. package/dialog/types.d.ts +0 -12
  79. package/dropdown/Dropdown.d.ts +1 -1
  80. package/dropdown/Dropdown.js +246 -249
  81. package/dropdown/Dropdown.stories.tsx +245 -56
  82. package/dropdown/Dropdown.test.js +507 -110
  83. package/dropdown/DropdownMenu.d.ts +4 -0
  84. package/dropdown/DropdownMenu.js +74 -0
  85. package/dropdown/DropdownMenuItem.d.ts +4 -0
  86. package/dropdown/DropdownMenuItem.js +79 -0
  87. package/dropdown/types.d.ts +23 -3
  88. package/file-input/FileInput.d.ts +2 -2
  89. package/file-input/FileInput.js +174 -220
  90. package/file-input/FileInput.stories.tsx +122 -11
  91. package/file-input/FileInput.test.js +14 -14
  92. package/file-input/FileItem.d.ts +4 -14
  93. package/file-input/FileItem.js +39 -63
  94. package/file-input/types.d.ts +18 -1
  95. package/flex/Flex.d.ts +4 -0
  96. package/flex/Flex.js +71 -0
  97. package/flex/Flex.stories.tsx +112 -0
  98. package/flex/types.d.ts +97 -0
  99. package/footer/Footer.d.ts +1 -1
  100. package/footer/Footer.js +44 -64
  101. package/footer/Footer.stories.tsx +41 -19
  102. package/footer/Footer.test.js +16 -26
  103. package/footer/Icons.js +1 -1
  104. package/footer/types.d.ts +11 -12
  105. package/grid/Grid.d.ts +7 -0
  106. package/grid/Grid.js +91 -0
  107. package/grid/Grid.stories.tsx +219 -0
  108. package/grid/types.d.ts +115 -0
  109. package/header/Header.d.ts +4 -3
  110. package/header/Header.js +83 -110
  111. package/header/Header.stories.tsx +118 -39
  112. package/header/Header.test.js +2 -2
  113. package/header/Icons.js +2 -2
  114. package/header/types.d.ts +0 -13
  115. package/heading/Heading.js +1 -1
  116. package/heading/Heading.test.js +1 -1
  117. package/image/Image.d.ts +4 -0
  118. package/image/Image.js +85 -0
  119. package/image/Image.stories.tsx +127 -0
  120. package/image/types.d.ts +72 -0
  121. package/inset/Inset.js +1 -34
  122. package/inset/Inset.stories.tsx +37 -36
  123. package/inset/types.d.ts +1 -1
  124. package/layout/ApplicationLayout.d.ts +16 -6
  125. package/layout/ApplicationLayout.js +81 -125
  126. package/layout/ApplicationLayout.stories.tsx +85 -94
  127. package/layout/Icons.d.ts +8 -0
  128. package/layout/Icons.js +52 -45
  129. package/layout/SidenavContext.d.ts +5 -0
  130. package/layout/SidenavContext.js +19 -0
  131. package/layout/types.d.ts +19 -35
  132. package/link/Link.d.ts +2 -2
  133. package/link/Link.js +26 -52
  134. package/link/Link.stories.tsx +73 -6
  135. package/link/Link.test.js +2 -4
  136. package/link/types.d.ts +5 -6
  137. package/main.d.ts +8 -9
  138. package/main.js +44 -52
  139. package/nav-tabs/NavTabs.d.ts +8 -0
  140. package/nav-tabs/NavTabs.js +122 -0
  141. package/nav-tabs/NavTabs.stories.tsx +274 -0
  142. package/nav-tabs/NavTabs.test.js +82 -0
  143. package/nav-tabs/Tab.d.ts +4 -0
  144. package/nav-tabs/Tab.js +146 -0
  145. package/nav-tabs/types.d.ts +52 -0
  146. package/number-input/NumberInput.d.ts +7 -0
  147. package/number-input/NumberInput.js +6 -4
  148. package/number-input/NumberInput.test.js +317 -98
  149. package/package.json +18 -22
  150. package/paginator/Icons.d.ts +5 -0
  151. package/paginator/Icons.js +16 -28
  152. package/paginator/Paginator.js +8 -16
  153. package/paginator/Paginator.stories.tsx +24 -0
  154. package/paginator/Paginator.test.js +91 -39
  155. package/paragraph/Paragraph.d.ts +5 -0
  156. package/paragraph/Paragraph.js +38 -0
  157. package/paragraph/Paragraph.stories.tsx +44 -0
  158. package/password-input/Icons.d.ts +6 -0
  159. package/password-input/Icons.js +39 -0
  160. package/password-input/PasswordInput.js +35 -82
  161. package/password-input/PasswordInput.stories.tsx +1 -0
  162. package/password-input/PasswordInput.test.js +34 -40
  163. package/progress-bar/ProgressBar.js +60 -54
  164. package/progress-bar/ProgressBar.stories.jsx +38 -3
  165. package/progress-bar/ProgressBar.test.js +68 -23
  166. package/quick-nav/QuickNav.js +25 -20
  167. package/quick-nav/QuickNav.stories.tsx +145 -26
  168. package/radio-group/Radio.d.ts +1 -1
  169. package/radio-group/Radio.js +50 -35
  170. package/radio-group/RadioGroup.js +37 -38
  171. package/radio-group/RadioGroup.stories.tsx +132 -18
  172. package/radio-group/RadioGroup.test.js +153 -99
  173. package/radio-group/types.d.ts +5 -5
  174. package/resultsetTable/Icons.d.ts +7 -0
  175. package/resultsetTable/Icons.js +51 -0
  176. package/resultsetTable/ResultsetTable.js +49 -108
  177. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  178. package/resultsetTable/ResultsetTable.test.js +61 -42
  179. package/resultsetTable/types.d.ts +1 -1
  180. package/select/Listbox.d.ts +1 -1
  181. package/select/Listbox.js +33 -16
  182. package/select/Option.js +11 -24
  183. package/select/Select.js +92 -71
  184. package/select/Select.stories.tsx +516 -139
  185. package/select/Select.test.js +417 -309
  186. package/select/types.d.ts +3 -6
  187. package/sidenav/Icons.d.ts +7 -0
  188. package/sidenav/Icons.js +51 -0
  189. package/sidenav/Sidenav.d.ts +6 -5
  190. package/sidenav/Sidenav.js +146 -44
  191. package/sidenav/Sidenav.stories.tsx +251 -151
  192. package/sidenav/Sidenav.test.js +25 -37
  193. package/sidenav/types.d.ts +52 -26
  194. package/slider/Slider.d.ts +2 -2
  195. package/slider/Slider.js +121 -97
  196. package/slider/Slider.stories.tsx +64 -1
  197. package/slider/Slider.test.js +122 -22
  198. package/slider/types.d.ts +4 -0
  199. package/spinner/Spinner.js +17 -23
  200. package/spinner/Spinner.stories.jsx +53 -27
  201. package/spinner/Spinner.test.js +1 -1
  202. package/switch/Switch.d.ts +2 -2
  203. package/switch/Switch.js +137 -70
  204. package/switch/Switch.stories.tsx +41 -30
  205. package/switch/Switch.test.js +145 -18
  206. package/switch/types.d.ts +4 -0
  207. package/table/Table.js +3 -3
  208. package/table/Table.stories.jsx +80 -1
  209. package/table/Table.test.js +2 -2
  210. package/tabs/Tab.d.ts +4 -0
  211. package/tabs/Tab.js +132 -0
  212. package/tabs/Tabs.js +358 -108
  213. package/tabs/Tabs.stories.tsx +119 -5
  214. package/tabs/Tabs.test.js +220 -10
  215. package/tabs/types.d.ts +13 -3
  216. package/tag/Tag.js +8 -10
  217. package/tag/Tag.stories.tsx +14 -1
  218. package/tag/Tag.test.js +1 -1
  219. package/tag/types.d.ts +1 -1
  220. package/text-input/Icons.d.ts +8 -0
  221. package/text-input/Icons.js +60 -0
  222. package/text-input/Suggestion.js +40 -11
  223. package/text-input/Suggestions.d.ts +4 -0
  224. package/text-input/Suggestions.js +134 -0
  225. package/text-input/TextInput.js +240 -351
  226. package/text-input/TextInput.stories.tsx +319 -185
  227. package/text-input/TextInput.test.js +826 -726
  228. package/text-input/types.d.ts +26 -3
  229. package/textarea/Textarea.js +27 -26
  230. package/textarea/Textarea.stories.jsx +68 -1
  231. package/textarea/Textarea.test.js +61 -19
  232. package/textarea/types.d.ts +4 -0
  233. package/toggle-group/ToggleGroup.d.ts +2 -2
  234. package/toggle-group/ToggleGroup.js +85 -59
  235. package/toggle-group/ToggleGroup.stories.tsx +48 -3
  236. package/toggle-group/ToggleGroup.test.js +38 -24
  237. package/toggle-group/types.d.ts +23 -14
  238. package/typography/Typography.d.ts +4 -0
  239. package/typography/Typography.js +32 -0
  240. package/typography/Typography.stories.tsx +198 -0
  241. package/typography/types.d.ts +18 -0
  242. package/typography/types.js +5 -0
  243. package/useTheme.d.ts +1251 -1
  244. package/useTheme.js +1 -1
  245. package/useTranslatedLabels.d.ts +84 -1
  246. package/utils/BaseTypography.d.ts +21 -0
  247. package/utils/BaseTypography.js +108 -0
  248. package/utils/FocusLock.d.ts +13 -0
  249. package/utils/FocusLock.js +138 -0
  250. package/wizard/Wizard.js +10 -17
  251. package/wizard/Wizard.stories.tsx +40 -1
  252. package/wizard/Wizard.test.js +1 -1
  253. package/wizard/types.d.ts +3 -3
  254. package/card/ice-cream.jpg +0 -0
  255. package/common/RequiredComponent.js +0 -32
  256. package/list/List.d.ts +0 -4
  257. package/list/List.js +0 -47
  258. package/list/List.stories.tsx +0 -95
  259. package/list/types.d.ts +0 -7
  260. package/number-input/NumberInputContext.d.ts +0 -4
  261. package/number-input/NumberInputContext.js +0 -19
  262. package/number-input/numberInputContextTypes.d.ts +0 -19
  263. package/radio/Radio.d.ts +0 -4
  264. package/radio/Radio.js +0 -173
  265. package/radio/Radio.stories.tsx +0 -192
  266. package/radio/Radio.test.js +0 -71
  267. package/radio/types.d.ts +0 -54
  268. package/row/Row.d.ts +0 -3
  269. package/row/Row.js +0 -127
  270. package/row/Row.stories.tsx +0 -237
  271. package/row/types.d.ts +0 -28
  272. package/stack/Stack.d.ts +0 -3
  273. package/stack/Stack.js +0 -97
  274. package/stack/Stack.stories.tsx +0 -164
  275. package/stack/types.d.ts +0 -24
  276. package/text/Text.d.ts +0 -7
  277. package/text/Text.js +0 -30
  278. package/text/Text.stories.tsx +0 -19
  279. /package/{list → bulleted-list}/types.js +0 -0
  280. /package/{radio → flex}/types.js +0 -0
  281. /package/{row → grid}/types.js +0 -0
  282. /package/{stack → image}/types.js +0 -0
  283. /package/{number-input/numberInputContextTypes.js → nav-tabs/types.js} +0 -0
@@ -19,11 +19,9 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
21
 
22
- var _Checkbox = _interopRequireDefault(require("@material-ui/core/Checkbox"));
22
+ var _variables = require("../common/variables");
23
23
 
24
- var _variables = require("../common/variables.js");
25
-
26
- var _utils = require("../common/utils.js");
24
+ var _utils = require("../common/utils");
27
25
 
28
26
  var _uuid = require("uuid");
29
27
 
@@ -33,13 +31,22 @@ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabel
33
31
 
34
32
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
35
33
 
36
- var _templateObject, _templateObject2, _templateObject3;
34
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
37
35
 
38
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); }
39
37
 
40
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; }
41
39
 
42
- var DxcCheckbox = function DxcCheckbox(_ref) {
40
+ var checkedIcon = /*#__PURE__*/_react["default"].createElement("svg", {
41
+ fill: "currentColor",
42
+ focusable: "false",
43
+ "aria-hidden": "true",
44
+ viewBox: "0 0 24 24"
45
+ }, /*#__PURE__*/_react["default"].createElement("path", {
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"
47
+ }));
48
+
49
+ var DxcCheckbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
43
50
  var checked = _ref.checked,
44
51
  _ref$defaultChecked = _ref.defaultChecked,
45
52
  defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,
@@ -54,6 +61,8 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
54
61
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
55
62
  _ref$optional = _ref.optional,
56
63
  optional = _ref$optional === void 0 ? false : _ref$optional,
64
+ _ref$readOnly = _ref.readOnly,
65
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
57
66
  onChange = _ref.onChange,
58
67
  margin = _ref.margin,
59
68
  _ref$size = _ref.size,
@@ -61,196 +70,199 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
61
70
  _ref$tabIndex = _ref.tabIndex,
62
71
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
63
72
 
64
- var _useState = (0, _react.useState)("checkbox-".concat((0, _uuid.v4)())),
73
+ var _useState = (0, _react.useState)("label-checkbox-".concat((0, _uuid.v4)())),
65
74
  _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
66
- switchId = _useState2[0];
67
-
68
- var labelId = "label-".concat(switchId);
75
+ labelId = _useState2[0];
69
76
 
70
77
  var _useState3 = (0, _react.useState)(defaultChecked),
71
78
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
72
79
  innerChecked = _useState4[0],
73
80
  setInnerChecked = _useState4[1];
74
81
 
75
- var _useState5 = (0, _react.useState)(false),
76
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
77
- isLabelHovered = _useState6[0],
78
- setIsLabelHovered = _useState6[1];
79
-
82
+ var checkboxRef = (0, _react.useRef)(null);
80
83
  var colorsTheme = (0, _useTheme["default"])();
81
84
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
82
85
  var translatedLabels = (0, _useTranslatedLabels["default"])();
83
86
 
84
- var handlerCheckboxChange = function handlerCheckboxChange(checkboxValue) {
85
- if (checked === undefined) {
86
- var isChecked = checkboxValue.target.checked === undefined ? !innerChecked : checkboxValue.target.checked;
87
- setInnerChecked(isChecked);
88
-
89
- if (typeof onChange === "function") {
90
- onChange(isChecked);
91
- }
92
- } else {
93
- if (typeof onChange === "function") {
94
- onChange(!checked);
95
- }
87
+ var handleCheckboxChange = function handleCheckboxChange() {
88
+ if (!disabled && !readOnly) {
89
+ var _checkboxRef$current;
90
+
91
+ 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());
92
+ var newChecked = checked !== null && checked !== void 0 ? checked : innerChecked;
93
+ checked !== null && checked !== void 0 ? checked : setInnerChecked(function (innerChecked) {
94
+ return !innerChecked;
95
+ });
96
+ onChange === null || onChange === void 0 ? void 0 : onChange(!newChecked);
96
97
  }
97
98
  };
98
99
 
99
- var handleLabelHover = function handleLabelHover() {
100
- setIsLabelHovered(!isLabelHovered);
100
+ var handleKeyboard = function handleKeyboard(event) {
101
+ switch (event.key) {
102
+ case " ":
103
+ event.preventDefault();
104
+ handleCheckboxChange();
105
+ }
101
106
  };
102
107
 
103
- var labelComponent = /*#__PURE__*/_react["default"].createElement(LabelContainer, {
104
- id: labelId,
105
- labelPosition: labelPosition,
106
- onClick: disabled === true ? function () {} : handlerCheckboxChange,
107
- disabled: disabled,
108
- className: "labelContainer",
109
- backgroundType: backgroundType,
110
- onMouseOver: handleLabelHover,
111
- onMouseOut: handleLabelHover
112
- }, labelPosition === "before" ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, label, " ", optional && /*#__PURE__*/_react["default"].createElement("span", null, translatedLabels.formFields.optionalLabel)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, optional && /*#__PURE__*/_react["default"].createElement("span", null, "(Optional)"), " ", label));
113
-
114
108
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
115
109
  theme: colorsTheme.checkbox
116
- }, /*#__PURE__*/_react["default"].createElement(CheckboxContainer, {
117
- id: name,
118
- brightness: _variables.componentTokens,
119
- label: label,
120
- labelPosition: labelPosition,
110
+ }, /*#__PURE__*/_react["default"].createElement(MainContainer, {
121
111
  disabled: disabled,
112
+ readOnly: readOnly,
113
+ onClick: handleCheckboxChange,
122
114
  margin: margin,
123
115
  size: size,
116
+ checked: checked !== null && checked !== void 0 ? checked : innerChecked,
117
+ backgroundType: backgroundType,
118
+ ref: ref
119
+ }, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
120
+ id: labelId,
121
+ disabled: disabled,
124
122
  backgroundType: backgroundType,
125
- isLabelHovered: isLabelHovered
126
- }, label && labelPosition === "before" && labelComponent, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
123
+ labelPosition: labelPosition
124
+ }, label, optional && " ".concat(translatedLabels.formFields.optionalLabel)), /*#__PURE__*/_react["default"].createElement(ValueInput, {
125
+ type: "checkbox",
127
126
  checked: checked !== null && checked !== void 0 ? checked : innerChecked,
128
- inputProps: {
129
- name: name,
130
- "aria-labelledby": labelId,
131
- role: "checkbox",
132
- "aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked
133
- },
134
- onChange: handlerCheckboxChange,
127
+ name: name,
128
+ "aria-hidden": "true",
135
129
  value: value,
136
130
  disabled: disabled,
137
- disableRipple: true,
138
- className: "test",
139
- tabIndex: tabIndex
140
- }), /*#__PURE__*/_react["default"].createElement(CheckboxBlackBack, {
141
- labelPosition: labelPosition,
142
- disabled: disabled,
131
+ readOnly: true
132
+ }), /*#__PURE__*/_react["default"].createElement(CheckboxContainer, null, /*#__PURE__*/_react["default"].createElement(Checkbox, {
133
+ onKeyDown: handleKeyboard,
134
+ role: "checkbox",
135
+ tabIndex: disabled ? -1 : tabIndex,
136
+ "aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked,
137
+ "aria-disabled": disabled,
138
+ "aria-readonly": readOnly,
139
+ "aria-required": !disabled && !optional,
140
+ "aria-labelledby": labelId,
141
+ backgroundType: backgroundType,
143
142
  checked: checked !== null && checked !== void 0 ? checked : innerChecked,
144
- backgroundType: backgroundType
145
- }), label && labelPosition === "after" && labelComponent));
146
- };
143
+ disabled: disabled,
144
+ readOnly: readOnly,
145
+ ref: checkboxRef
146
+ }, (checked !== null && checked !== void 0 ? checked : innerChecked) && checkedIcon))));
147
+ });
147
148
 
148
149
  var sizes = {
149
150
  small: "120px",
150
151
  medium: "240px",
151
152
  large: "480px",
152
153
  fillParent: "100%",
153
- fitContent: "unset"
154
+ fitContent: "fit-content"
154
155
  };
155
156
 
156
157
  var calculateWidth = function calculateWidth(margin, size) {
157
- if (size === "fillParent") {
158
- return "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
159
- }
160
-
161
- return sizes[size];
158
+ return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
162
159
  };
163
160
 
164
161
  var getDisabledColor = function getDisabledColor(props, element) {
165
162
  switch (element) {
166
163
  case "check":
167
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckColorOnDark : props.theme.disabledCheckColor;
164
+ return props.backgroundType === "dark" ? props.theme.disabledCheckColorOnDark : props.theme.disabledCheckColor;
168
165
 
169
166
  case "background":
170
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBackgroundColorCheckedOnDark : props.theme.disabledBackgroundColorChecked;
167
+ return props.backgroundType === "dark" ? props.theme.disabledBackgroundColorCheckedOnDark : props.theme.disabledBackgroundColorChecked;
171
168
 
172
169
  case "border":
173
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;
170
+ return props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;
174
171
 
175
172
  case "label":
176
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledFontColorOnDark : props.theme.disabledFontColor;
173
+ return props.backgroundType === "dark" ? props.theme.disabledFontColorOnDark : props.theme.disabledFontColor;
174
+ }
175
+ };
176
+
177
+ var getReadOnlyColor = function getReadOnlyColor(props, element) {
178
+ switch (element) {
179
+ case "check":
180
+ return props.theme.readOnlyCheckColor;
181
+
182
+ case "background":
183
+ return props.theme.readOnlyBackgroundColorChecked;
184
+
185
+ case "hoverBackground":
186
+ return props.theme.hoverReadOnlyBackgroundColorChecked;
187
+
188
+ case "border":
189
+ return props.theme.readOnlyBorderColor;
190
+
191
+ case "hoverBorder":
192
+ return props.theme.hoverReadOnlyBorderColor;
177
193
  }
178
194
  };
179
195
 
180
- var getNotDisabledColor = function getNotDisabledColor(props, element) {
196
+ var getEnabledColor = function getEnabledColor(props, element) {
181
197
  switch (element) {
182
198
  case "check":
183
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
199
+ return props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
184
200
 
185
201
  case "background":
186
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
202
+ return props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
203
+
204
+ case "hoverBackground":
205
+ return props.backgroundType === "dark" ? props.theme.hoverBackgroundColorCheckedOnDark : props.theme.hoverBackgroundColorChecked;
187
206
 
188
207
  case "border":
189
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
208
+ return props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
209
+
210
+ case "hoverBorder":
211
+ return props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor;
190
212
 
191
213
  case "label":
192
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
214
+ return props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
193
215
  }
194
216
  };
195
217
 
196
- var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n cursor: ", ";\n"])), function (props) {
197
- return props.disabled ? getDisabledColor(props, "label") : getNotDisabledColor(props, "label");
218
+ var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n order: ", ";\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
219
+ return props.labelPosition === "before" ? 0 : 1;
220
+ }, function (props) {
221
+ return props.disabled ? getDisabledColor(props, "label") : getEnabledColor(props, "label");
198
222
  }, function (props) {
199
223
  return props.theme.fontFamily;
200
224
  }, function (props) {
201
225
  return props.theme.fontSize;
202
226
  }, function (props) {
203
227
  return props.theme.fontWeight;
204
- }, function (props) {
205
- return props.disabled ? "not-allowed" : "pointer";
206
228
  });
207
229
 
208
- var CheckboxContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n width: ", ";\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n position: relative;\n .MuiCheckbox-colorSecondary {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n &.Mui-disabled {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n opacity: 0.34;\n }\n }\n }\n &.Mui-checked {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n\n &:hover {\n background-color: transparent;\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n background-color: transparent;\n color: ", ";\n }\n }\n }\n }\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n width: 24px;\n height: 24px;\n }\n }\n }\n\n .MuiIconButton-colorSecondary {\n &:hover {\n background-color: transparent;\n }\n }\n .MuiButtonBase-root {\n &:hover {\n .MuiIconButton-label {\n & > .MuiSvgIcon-root {\n color: ", ";\n }\n }\n }\n\n &.Mui-focusVisible {\n .MuiIconButton-label {\n border-radius: 2px;\n outline: 2px solid\n ", ";\n outline-offset: -1px;\n }\n }\n z-index: 1;\n margin-left: ", ";\n margin-right: ", ";\n padding: 0px;\n left: ", ";\n right: ", ";\n }\n"])), function (props) {
209
- return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
230
+ var ValueInput = _styledComponents["default"].input(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
231
+
232
+ 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"])));
233
+
234
+ 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) {
235
+ return props.disabled ? getDisabledColor(props, "border") : props.readOnly ? getReadOnlyColor(props, "border") : getEnabledColor(props, "border");
210
236
  }, function (props) {
211
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
237
+ return props.checked ? props.disabled ? getDisabledColor(props, "check") : props.readOnly ? getReadOnlyColor(props, "check") : getEnabledColor(props, "check") : "transparent";
212
238
  }, function (props) {
213
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.right ? _variables.spaces[props.margin.right] : "";
239
+ return props.disabled ? getDisabledColor(props, "background") : props.readOnly ? getReadOnlyColor(props, "background") : getEnabledColor(props, "background");
214
240
  }, function (props) {
215
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
241
+ return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
216
242
  }, function (props) {
217
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
243
+ return props.disabled && "pointer-events: none;";
244
+ });
245
+
246
+ 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 color: ", ";\n }\n"])), function (props) {
247
+ return props.theme.checkLabelSpacing;
218
248
  }, function (props) {
219
249
  return calculateWidth(props.margin, props.size);
220
250
  }, function (props) {
221
- return props.disabled ? "not-allowed" : "pointer";
222
- }, function (props) {
223
- return props.isLabelHovered ? props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor : getNotDisabledColor(props, "border");
224
- }, function (props) {
225
- return getDisabledColor(props, "border");
226
- }, function (props) {
227
- return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "background");
228
- }, function (props) {
229
- return props.backgroundType === "dark" ? props.theme.hoverBackgroundColorCheckedOnDark : props.theme.hoverBackgroundColorChecked;
230
- }, function (props) {
231
- return props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor;
232
- }, function (props) {
233
- return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
234
- }, function (props) {
235
- return props.labelPosition === "before" && props.label ? props.theme.checkLabelSpacing : "0";
236
- }, function (props) {
237
- return props.labelPosition === "after" && props.label ? props.theme.checkLabelSpacing : "0";
251
+ return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
238
252
  }, function (props) {
239
- return props.labelPosition === "before" ? "unset" : "1px";
253
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
240
254
  }, function (props) {
241
- return props.labelPosition === "before" ? "1px" : "unset";
242
- });
243
-
244
- var CheckboxBlackBack = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n width: 16px;\n height: 16px;\n position: absolute;\n left: ", ";\n right: ", ";\n z-index: 0;\n margin-left: ", ";\n margin-right: ", ";\n"])), function (props) {
245
- return !props.checked ? "transparent" : props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check");
255
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.right ? _variables.spaces[props.margin.right] : "";
246
256
  }, function (props) {
247
- return props.labelPosition === "before" ? "unset" : "5px";
257
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
248
258
  }, function (props) {
249
- return props.labelPosition === "before" ? "5px" : "unset";
259
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
250
260
  }, function (props) {
251
- return props.labelPosition === "after" ? "0px" : "";
261
+ return props.disabled ? "not-allowed" : props.readOnly ? "default" : "pointer";
262
+ }, Checkbox, function (props) {
263
+ if (!props.disabled) return props.readOnly ? getReadOnlyColor(props, "hoverBorder") : getEnabledColor(props, "hoverBorder");
252
264
  }, function (props) {
253
- return props.labelPosition === "before" ? "0px" : "";
265
+ if (!props.disabled) return props.readOnly ? getReadOnlyColor(props, "hoverBackground") : getEnabledColor(props, "hoverBackground");
254
266
  });
255
267
 
256
268
  var _default = DxcCheckbox;
@@ -4,42 +4,71 @@ import { BackgroundColorProvider } from "../BackgroundColorContext";
4
4
  import Title from "../../.storybook/components/Title";
5
5
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import DarkContainer from "../../.storybook/components/DarkSection";
7
- import { userEvent } from "@storybook/testing-library";
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>
17
26
  <Title title="Default" theme="light" level={4} />
18
27
  <DxcCheckbox label="Checkbox" />
19
28
  </ExampleContainer>
20
- <ExampleContainer>
21
- <Title title="Focused" theme="light" level={4} />
22
- <DxcCheckbox label="Focused" />
23
- </ExampleContainer>
24
29
  <ExampleContainer>
25
30
  <Title title="Checked" theme="light" level={4} />
26
31
  <DxcCheckbox label="Checkbox" defaultChecked />
27
32
  </ExampleContainer>
28
33
  <ExampleContainer>
29
- <Title title="Optional" theme="light" level={4} />
30
- <DxcCheckbox label="Checkbox" optional />
34
+ <Title title="Disabled" theme="light" level={4} />
35
+ <DxcCheckbox label="Checkbox" disabled />
31
36
  </ExampleContainer>
32
37
  <ExampleContainer>
33
- <Title title="Disabled and checked" theme="light" level={4} />
34
- <DxcCheckbox label="Checkbox" disabled defaultChecked />
38
+ <Title title="Disabled, checked and optional" theme="light" level={4} />
39
+ <DxcCheckbox label="Checkbox" disabled defaultChecked optional />
35
40
  </ExampleContainer>
36
41
  <ExampleContainer>
37
- <Title title="Disabled and optional" theme="light" level={4} />
38
- <DxcCheckbox label="Checkbox" disabled optional />
42
+ <Title title="Read-only" theme="light" level={4} />
43
+ <DxcCheckbox label="Checkbox" readOnly />
44
+ </ExampleContainer>
45
+ <ExampleContainer pseudoState="pseudo-hover">
46
+ <Title title="Hovered read-only" theme="light" level={4} />
47
+ <DxcCheckbox label="Checkbox" readOnly />
39
48
  </ExampleContainer>
40
49
  <ExampleContainer>
41
- <Title title="Disabled, optional and checked" theme="light" level={4} />
42
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked />
50
+ <Title title="Read-only, checked and optional" theme="light" level={4} />
51
+ <DxcCheckbox label="Checkbox" readOnly defaultChecked optional />
52
+ </ExampleContainer>
53
+ <ExampleContainer pseudoState="pseudo-hover">
54
+ <Title title="Hovered read-only and checked" theme="light" level={4} />
55
+ <DxcCheckbox label="Checkbox" readOnly defaultChecked optional />
56
+ </ExampleContainer>
57
+ <ExampleContainer pseudoState="pseudo-focus">
58
+ <Title title="Focused" theme="light" level={4} />
59
+ <DxcCheckbox label="Focused" />
60
+ </ExampleContainer>
61
+ <ExampleContainer pseudoState="pseudo-hover">
62
+ <Title title="Hovered" theme="light" level={4} />
63
+ <DxcCheckbox label="Hovered" />
64
+ </ExampleContainer>
65
+ <ExampleContainer pseudoState="pseudo-hover">
66
+ <Title title="Hovered and checked" theme="light" level={4} />
67
+ <DxcCheckbox label="Hovered" defaultChecked />
68
+ </ExampleContainer>
69
+ <ExampleContainer>
70
+ <Title title="Optional" theme="light" level={4} />
71
+ <DxcCheckbox label="Checkbox" optional />
43
72
  </ExampleContainer>
44
73
  <ExampleContainer>
45
74
  <Title title="Label after" theme="light" level={4} />
@@ -53,25 +82,9 @@ const Checkbox = () => (
53
82
  <Title title="Optional with label after" theme="light" level={4} />
54
83
  <DxcCheckbox label="Checkbox" optional labelPosition="after" />
55
84
  </ExampleContainer>
56
- <ExampleContainer>
57
- <Title title="Disabled and checked with label after" theme="light" level={4} />
58
- <DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
59
- </ExampleContainer>
60
85
  <ExampleContainer>
61
86
  <Title title="Disabled and optional with label after" theme="light" level={4} />
62
- <DxcCheckbox label="Checkbox" disabled optional labelPosition="after" />
63
- </ExampleContainer>
64
- <ExampleContainer>
65
- <Title title="Disabled, optional and checked with label after" theme="light" level={4} />
66
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
67
- </ExampleContainer>
68
- <ExampleContainer pseudoState="pseudo-hover">
69
- <Title title="Hovered" theme="light" level={4} />
70
- <DxcCheckbox label="Hovered" />
71
- </ExampleContainer>
72
- <ExampleContainer pseudoState="pseudo-hover">
73
- <Title title="Hovered and checked" theme="light" level={4} />
74
- <DxcCheckbox label="Hovered" defaultChecked />
87
+ <DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
75
88
  </ExampleContainer>
76
89
  <BackgroundColorProvider color="#333333">
77
90
  <DarkContainer>
@@ -84,20 +97,28 @@ const Checkbox = () => (
84
97
  <DxcCheckbox label="Checkbox" defaultChecked />
85
98
  </ExampleContainer>
86
99
  <ExampleContainer>
87
- <Title title="Optional" theme="dark" level={4} />
88
- <DxcCheckbox label="Checkbox" optional />
100
+ <Title title="Disabled" theme="dark" level={4} />
101
+ <DxcCheckbox label="Checkbox" disabled />
89
102
  </ExampleContainer>
90
103
  <ExampleContainer>
91
- <Title title="Disabled and checked" theme="dark" level={4} />
92
- <DxcCheckbox label="Checkbox" disabled defaultChecked />
104
+ <Title title="Disabled, checked and optional" theme="dark" level={4} />
105
+ <DxcCheckbox label="Checkbox" disabled defaultChecked optional />
93
106
  </ExampleContainer>
94
- <ExampleContainer>
95
- <Title title="Disabled and optional" theme="dark" level={4} />
96
- <DxcCheckbox label="Checkbox" disabled optional />
107
+ <ExampleContainer pseudoState="pseudo-focus">
108
+ <Title title="Focused" theme="dark" level={4} />
109
+ <DxcCheckbox label="Focused" />
110
+ </ExampleContainer>
111
+ <ExampleContainer pseudoState="pseudo-hover">
112
+ <Title title="Hovered" theme="dark" level={4} />
113
+ <DxcCheckbox label="Hovered" />
114
+ </ExampleContainer>
115
+ <ExampleContainer pseudoState="pseudo-hover">
116
+ <Title title="Hovered and checked" theme="dark" level={4} />
117
+ <DxcCheckbox label="Hovered" defaultChecked />
97
118
  </ExampleContainer>
98
119
  <ExampleContainer>
99
- <Title title="Disabled, optional and checked" theme="dark" level={4} />
100
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked />
120
+ <Title title="Optional" theme="dark" level={4} />
121
+ <DxcCheckbox label="Checkbox" optional />
101
122
  </ExampleContainer>
102
123
  <ExampleContainer>
103
124
  <Title title="Label after" theme="dark" level={4} />
@@ -111,25 +132,9 @@ const Checkbox = () => (
111
132
  <Title title="Optional with label after" theme="dark" level={4} />
112
133
  <DxcCheckbox label="Checkbox" optional labelPosition="after" />
113
134
  </ExampleContainer>
114
- <ExampleContainer>
115
- <Title title="Disabled and checked with label after" theme="dark" level={4} />
116
- <DxcCheckbox label="Checkbox" disabled defaultChecked labelPosition="after" />
117
- </ExampleContainer>
118
135
  <ExampleContainer>
119
136
  <Title title="Disabled and optional with label after" theme="dark" level={4} />
120
- <DxcCheckbox label="Checkbox" disabled optional labelPosition="after" />
121
- </ExampleContainer>
122
- <ExampleContainer>
123
- <Title title="Disabled, optional and checked with label after" theme="dark" level={4} />
124
- <DxcCheckbox label="Checkbox" disabled optional defaultChecked labelPosition="after" />
125
- </ExampleContainer>
126
- <ExampleContainer pseudoState="pseudo-hover">
127
- <Title title="Hovered" theme="dark" level={4} />
128
- <DxcCheckbox label="Hovered" />
129
- </ExampleContainer>
130
- <ExampleContainer pseudoState="pseudo-hover">
131
- <Title title="Hovered and checked" theme="dark" level={4} />
132
- <DxcCheckbox label="Hovered" defaultChecked />
137
+ <DxcCheckbox label="Checkbox" disabled labelPosition="after" optional />
133
138
  </ExampleContainer>
134
139
  </DarkContainer>
135
140
  </BackgroundColorProvider>
@@ -178,11 +183,94 @@ const Checkbox = () => (
178
183
  <Title title="Xxlarge" theme="light" level={4} />
179
184
  <DxcCheckbox label="Xxlarge" margin="xxlarge" />
180
185
  </ExampleContainer>
186
+ <ExampleContainer>
187
+ <Title title="Overflow container" theme="light" level={4} />
188
+ <ScrollableContainer id="scroll-container">
189
+ <DxcCheckbox label="Checkbox" defaultChecked />
190
+ <DxcCheckbox label="Checkbox" defaultChecked />
191
+ <DxcCheckbox label="Checkbox" />
192
+ <DxcCheckbox label="Checkbox" defaultChecked />
193
+ <DxcCheckbox label="Checkbox" />
194
+ <DxcCheckbox label="Checkbox" />
195
+ <DxcCheckbox label="Checkbox" />
196
+ <DxcCheckbox label="Checkbox" defaultChecked />
197
+ </ScrollableContainer>
198
+ </ExampleContainer>
199
+ <ExampleContainer>
200
+ <Title title="Label overflow" theme="light" level={4} />
201
+ <SmallContainer>
202
+ <DxcCheckbox label="Very long label to check its overflowing" defaultChecked />
203
+ <DxcCheckbox label="Very long label to check its overflowing" labelPosition="after" />
204
+ </SmallContainer>
205
+ </ExampleContainer>
206
+ <Title title="Opinionated theme" theme="light" level={2} />
207
+ <ExampleContainer>
208
+ <Title title="Default" theme="light" level={4} />
209
+ <HalstackProvider theme={opinionatedTheme}>
210
+ <DxcCheckbox label="Checkbox" />
211
+ </HalstackProvider>
212
+ </ExampleContainer>
213
+ <ExampleContainer>
214
+ <Title title="Checked" theme="light" level={4} />
215
+ <HalstackProvider theme={opinionatedTheme}>
216
+ <DxcCheckbox label="Checkbox" defaultChecked />
217
+ </HalstackProvider>
218
+ </ExampleContainer>
219
+ <ExampleContainer>
220
+ <Title title="Disabled" theme="light" level={4} />
221
+ <HalstackProvider theme={opinionatedTheme}>
222
+ <DxcCheckbox label="Checkbox" disabled />
223
+ </HalstackProvider>
224
+ </ExampleContainer>
225
+ <ExampleContainer>
226
+ <Title title="Disabled checked" theme="light" level={4} />
227
+ <HalstackProvider theme={opinionatedTheme}>
228
+ <DxcCheckbox label="Checkbox" defaultChecked disabled />
229
+ </HalstackProvider>
230
+ </ExampleContainer>
231
+ <ExampleContainer pseudoState="pseudo-focus">
232
+ <Title title="Focused" theme="light" level={4} />
233
+ <HalstackProvider theme={opinionatedTheme}>
234
+ <DxcCheckbox label="Focused" />
235
+ </HalstackProvider>
236
+ </ExampleContainer>
237
+ <ExampleContainer pseudoState="pseudo-hover">
238
+ <Title title="Hovered" theme="light" level={4} />
239
+ <HalstackProvider theme={opinionatedTheme}>
240
+ <DxcCheckbox label="Hovered" />
241
+ </HalstackProvider>
242
+ </ExampleContainer>
243
+ <ExampleContainer pseudoState="pseudo-hover">
244
+ <Title title="Hovered and checked" theme="light" level={4} />
245
+ <HalstackProvider theme={opinionatedTheme}>
246
+ <DxcCheckbox label="Hovered" defaultChecked />
247
+ </HalstackProvider>
248
+ </ExampleContainer>
181
249
  </>
182
250
  );
183
251
 
184
252
  export const Chromatic = Checkbox.bind({});
253
+
185
254
  Chromatic.play = async () => {
186
- await userEvent.tab();
187
- await userEvent.tab();
255
+ const listEl = document.getElementById("scroll-container");
256
+ listEl?.scrollTo?.({ top: 50 });
188
257
  };
258
+
259
+ const ScrollableContainer = styled.div`
260
+ display: flex;
261
+ flex-direction: column;
262
+ gap: 14px;
263
+ width: 200px;
264
+ height: 200px;
265
+ border: 1px solid #000;
266
+ padding: 14px;
267
+ overflow: auto;
268
+ `;
269
+
270
+ const SmallContainer = styled.div`
271
+ display: flex;
272
+ flex-direction: column;
273
+ gap: 14px;
274
+ width: 150px;
275
+ height: 150px;
276
+ `;