@dxc-technology/halstack-react 0.0.0-74ba970 → 0.0.0-752ca0a

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 (234) 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 -77
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +14 -37
  8. package/accordion/Accordion.stories.tsx +104 -113
  9. package/accordion/Accordion.test.js +1 -1
  10. package/accordion/types.d.ts +2 -13
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +23 -44
  13. package/accordion-group/AccordionGroup.stories.tsx +77 -76
  14. package/accordion-group/AccordionGroup.test.js +7 -17
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +43 -0
  17. package/accordion-group/types.d.ts +2 -13
  18. package/alert/Alert.js +4 -8
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +1 -1
  21. package/bleed/Bleed.stories.tsx +1 -0
  22. package/box/Box.d.ts +1 -1
  23. package/box/Box.js +7 -26
  24. package/box/Box.stories.tsx +38 -51
  25. package/box/Box.test.js +1 -1
  26. package/box/types.d.ts +0 -11
  27. package/bulleted-list/BulletedList.js +4 -2
  28. package/bulleted-list/BulletedList.stories.tsx +7 -1
  29. package/bulleted-list/types.d.ts +31 -4
  30. package/button/Button.d.ts +1 -1
  31. package/button/Button.js +48 -60
  32. package/button/Button.stories.tsx +151 -9
  33. package/button/Button.test.js +12 -1
  34. package/button/types.d.ts +7 -3
  35. package/card/Card.d.ts +1 -1
  36. package/card/Card.js +27 -45
  37. package/card/Card.stories.tsx +12 -42
  38. package/card/Card.test.js +1 -1
  39. package/card/types.d.ts +1 -6
  40. package/checkbox/Checkbox.d.ts +2 -2
  41. package/checkbox/Checkbox.js +71 -51
  42. package/checkbox/Checkbox.stories.tsx +146 -58
  43. package/checkbox/Checkbox.test.js +84 -11
  44. package/checkbox/types.d.ts +10 -2
  45. package/chip/Chip.js +28 -49
  46. package/chip/Chip.stories.tsx +121 -26
  47. package/chip/Chip.test.js +3 -5
  48. package/common/OpenSans.css +68 -80
  49. package/common/coreTokens.d.ts +146 -0
  50. package/common/coreTokens.js +167 -0
  51. package/common/utils.d.ts +1 -0
  52. package/common/utils.js +4 -4
  53. package/common/variables.d.ts +1499 -0
  54. package/common/variables.js +1004 -1134
  55. package/date-input/Calendar.d.ts +4 -0
  56. package/date-input/Calendar.js +258 -0
  57. package/date-input/DateInput.js +138 -239
  58. package/date-input/DateInput.stories.tsx +209 -33
  59. package/date-input/DateInput.test.js +519 -149
  60. package/date-input/DatePicker.d.ts +4 -0
  61. package/date-input/DatePicker.js +146 -0
  62. package/date-input/Icons.d.ts +6 -0
  63. package/date-input/Icons.js +75 -0
  64. package/date-input/YearPicker.d.ts +4 -0
  65. package/date-input/YearPicker.js +126 -0
  66. package/date-input/types.d.ts +55 -0
  67. package/dialog/Dialog.d.ts +1 -1
  68. package/dialog/Dialog.js +54 -85
  69. package/dialog/Dialog.stories.tsx +154 -170
  70. package/dialog/Dialog.test.js +302 -3
  71. package/dialog/types.d.ts +0 -12
  72. package/dropdown/Dropdown.js +40 -39
  73. package/dropdown/Dropdown.stories.tsx +210 -84
  74. package/dropdown/Dropdown.test.js +21 -26
  75. package/dropdown/DropdownMenu.js +12 -18
  76. package/dropdown/DropdownMenuItem.js +4 -17
  77. package/dropdown/types.d.ts +3 -3
  78. package/file-input/FileInput.d.ts +2 -2
  79. package/file-input/FileInput.js +174 -220
  80. package/file-input/FileInput.stories.tsx +122 -11
  81. package/file-input/FileInput.test.js +14 -14
  82. package/file-input/FileItem.d.ts +4 -14
  83. package/file-input/FileItem.js +39 -63
  84. package/file-input/types.d.ts +18 -1
  85. package/flex/Flex.d.ts +1 -1
  86. package/flex/Flex.js +33 -19
  87. package/flex/Flex.stories.tsx +35 -26
  88. package/flex/types.d.ts +83 -7
  89. package/footer/Footer.d.ts +1 -1
  90. package/footer/Footer.js +44 -64
  91. package/footer/Footer.stories.tsx +36 -21
  92. package/footer/Footer.test.js +16 -26
  93. package/footer/types.d.ts +10 -11
  94. package/grid/Grid.d.ts +7 -0
  95. package/grid/Grid.js +91 -0
  96. package/grid/Grid.stories.tsx +219 -0
  97. package/grid/types.d.ts +115 -0
  98. package/header/Header.d.ts +4 -3
  99. package/header/Header.js +20 -49
  100. package/header/Header.stories.tsx +115 -36
  101. package/header/Header.test.js +2 -2
  102. package/header/types.d.ts +1 -14
  103. package/heading/Heading.js +1 -1
  104. package/heading/Heading.test.js +1 -1
  105. package/image/Image.d.ts +4 -0
  106. package/image/Image.js +85 -0
  107. package/image/Image.stories.tsx +127 -0
  108. package/image/types.d.ts +72 -0
  109. package/inset/Inset.stories.tsx +2 -1
  110. package/layout/ApplicationLayout.d.ts +5 -5
  111. package/layout/ApplicationLayout.js +15 -12
  112. package/layout/ApplicationLayout.stories.tsx +1 -1
  113. package/layout/Icons.d.ts +7 -4
  114. package/layout/Icons.js +52 -56
  115. package/layout/types.d.ts +2 -3
  116. package/link/Link.js +4 -4
  117. package/link/Link.stories.tsx +60 -0
  118. package/link/Link.test.js +2 -4
  119. package/link/types.d.ts +2 -2
  120. package/main.d.ts +4 -2
  121. package/main.js +17 -1
  122. package/{tabs-nav → nav-tabs}/NavTabs.d.ts +2 -2
  123. package/{tabs-nav → nav-tabs}/NavTabs.js +8 -11
  124. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +110 -6
  125. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  126. package/{tabs-nav → nav-tabs}/Tab.js +48 -32
  127. package/{tabs-nav → nav-tabs}/types.d.ts +8 -9
  128. package/nav-tabs/types.js +5 -0
  129. package/number-input/NumberInput.d.ts +7 -0
  130. package/number-input/NumberInput.js +6 -4
  131. package/number-input/NumberInput.test.js +317 -98
  132. package/package.json +9 -14
  133. package/paginator/Icons.d.ts +5 -0
  134. package/paginator/Icons.js +16 -28
  135. package/paginator/Paginator.js +8 -16
  136. package/paginator/Paginator.stories.tsx +24 -0
  137. package/paginator/Paginator.test.js +58 -48
  138. package/paragraph/Paragraph.d.ts +3 -4
  139. package/paragraph/Paragraph.js +5 -5
  140. package/password-input/Icons.d.ts +6 -0
  141. package/password-input/Icons.js +39 -0
  142. package/password-input/PasswordInput.js +35 -82
  143. package/password-input/PasswordInput.stories.tsx +1 -0
  144. package/password-input/PasswordInput.test.js +34 -40
  145. package/progress-bar/ProgressBar.d.ts +2 -2
  146. package/progress-bar/ProgressBar.js +5 -5
  147. package/progress-bar/ProgressBar.stories.jsx +35 -2
  148. package/progress-bar/ProgressBar.test.js +1 -1
  149. package/progress-bar/types.d.ts +4 -3
  150. package/quick-nav/QuickNav.js +11 -12
  151. package/quick-nav/QuickNav.stories.tsx +111 -19
  152. package/radio-group/Radio.js +10 -10
  153. package/radio-group/RadioGroup.js +15 -13
  154. package/radio-group/RadioGroup.stories.tsx +131 -18
  155. package/radio-group/RadioGroup.test.js +117 -60
  156. package/resultsetTable/Icons.d.ts +7 -0
  157. package/resultsetTable/Icons.js +51 -0
  158. package/resultsetTable/ResultsetTable.js +49 -108
  159. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  160. package/resultsetTable/ResultsetTable.test.js +41 -64
  161. package/resultsetTable/types.d.ts +1 -1
  162. package/select/Listbox.d.ts +1 -1
  163. package/select/Listbox.js +5 -34
  164. package/select/Option.js +11 -24
  165. package/select/Select.js +59 -36
  166. package/select/Select.stories.tsx +497 -153
  167. package/select/Select.test.js +345 -292
  168. package/select/types.d.ts +2 -2
  169. package/sidenav/Icons.d.ts +7 -0
  170. package/sidenav/Icons.js +51 -0
  171. package/sidenav/Sidenav.d.ts +2 -2
  172. package/sidenav/Sidenav.js +66 -96
  173. package/sidenav/Sidenav.stories.tsx +165 -63
  174. package/sidenav/types.d.ts +21 -18
  175. package/slider/Slider.d.ts +2 -2
  176. package/slider/Slider.js +17 -14
  177. package/slider/Slider.stories.tsx +57 -0
  178. package/slider/Slider.test.js +1 -1
  179. package/slider/types.d.ts +6 -2
  180. package/spinner/Spinner.js +17 -23
  181. package/spinner/Spinner.stories.jsx +53 -27
  182. package/spinner/Spinner.test.js +1 -1
  183. package/switch/Switch.d.ts +3 -3
  184. package/switch/Switch.js +7 -6
  185. package/switch/Switch.stories.tsx +33 -0
  186. package/switch/Switch.test.js +1 -1
  187. package/switch/types.d.ts +8 -3
  188. package/table/Table.js +3 -3
  189. package/table/Table.stories.jsx +80 -1
  190. package/table/Table.test.js +2 -2
  191. package/tabs/Tab.js +12 -15
  192. package/tabs/Tabs.js +11 -17
  193. package/tabs/Tabs.stories.tsx +45 -5
  194. package/tabs/Tabs.test.js +4 -5
  195. package/tabs/types.d.ts +2 -2
  196. package/tag/Tag.js +7 -9
  197. package/tag/Tag.stories.tsx +14 -1
  198. package/tag/Tag.test.js +1 -1
  199. package/text-input/Suggestion.js +34 -7
  200. package/text-input/TextInput.js +224 -228
  201. package/text-input/TextInput.stories.tsx +132 -5
  202. package/text-input/TextInput.test.js +757 -658
  203. package/text-input/types.d.ts +9 -0
  204. package/textarea/Textarea.js +27 -26
  205. package/textarea/Textarea.stories.jsx +68 -1
  206. package/textarea/Textarea.test.js +61 -19
  207. package/textarea/types.d.ts +4 -0
  208. package/toggle-group/ToggleGroup.d.ts +2 -2
  209. package/toggle-group/ToggleGroup.js +85 -59
  210. package/toggle-group/ToggleGroup.stories.tsx +48 -3
  211. package/toggle-group/ToggleGroup.test.js +38 -24
  212. package/toggle-group/types.d.ts +22 -13
  213. package/typography/Typography.d.ts +2 -2
  214. package/typography/Typography.js +14 -113
  215. package/typography/Typography.stories.tsx +1 -1
  216. package/useTheme.d.ts +1251 -1
  217. package/useTheme.js +1 -1
  218. package/useTranslatedLabels.d.ts +84 -1
  219. package/utils/BaseTypography.d.ts +21 -0
  220. package/utils/BaseTypography.js +108 -0
  221. package/utils/FocusLock.d.ts +13 -0
  222. package/utils/FocusLock.js +138 -0
  223. package/wizard/Wizard.js +2 -2
  224. package/wizard/Wizard.stories.tsx +20 -0
  225. package/wizard/Wizard.test.js +1 -1
  226. package/wizard/types.d.ts +5 -6
  227. package/card/ice-cream.jpg +0 -0
  228. package/common/RequiredComponent.js +0 -32
  229. package/number-input/NumberInputContext.d.ts +0 -4
  230. package/number-input/NumberInputContext.js +0 -19
  231. package/number-input/numberInputContextTypes.d.ts +0 -19
  232. /package/{tabs-nav → grid}/types.js +0 -0
  233. /package/{number-input/numberInputContextTypes.js → image/types.js} +0 -0
  234. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
@@ -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
 
@@ -46,7 +46,7 @@ var checkedIcon = /*#__PURE__*/_react["default"].createElement("svg", {
46
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
47
  }));
48
48
 
49
- var DxcCheckbox = function DxcCheckbox(_ref) {
49
+ var DxcCheckbox = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
50
50
  var checked = _ref.checked,
51
51
  _ref$defaultChecked = _ref.defaultChecked,
52
52
  defaultChecked = _ref$defaultChecked === void 0 ? false : _ref$defaultChecked,
@@ -61,6 +61,8 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
61
61
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
62
62
  _ref$optional = _ref.optional,
63
63
  optional = _ref$optional === void 0 ? false : _ref$optional,
64
+ _ref$readOnly = _ref.readOnly,
65
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
64
66
  onChange = _ref.onChange,
65
67
  margin = _ref.margin,
66
68
  _ref$size = _ref.size,
@@ -83,14 +85,16 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
83
85
  var translatedLabels = (0, _useTranslatedLabels["default"])();
84
86
 
85
87
  var handleCheckboxChange = function handleCheckboxChange() {
86
- var _checkboxRef$current;
87
-
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());
89
- var newChecked = checked !== null && checked !== void 0 ? checked : innerChecked;
90
- checked !== null && checked !== void 0 ? checked : setInnerChecked(function (innerChecked) {
91
- return !innerChecked;
92
- });
93
- onChange === null || onChange === void 0 ? void 0 : onChange(!newChecked);
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);
97
+ }
94
98
  };
95
99
 
96
100
  var handleKeyboard = function handleKeyboard(event) {
@@ -105,15 +109,18 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
105
109
  theme: colorsTheme.checkbox
106
110
  }, /*#__PURE__*/_react["default"].createElement(MainContainer, {
107
111
  disabled: disabled,
108
- onClick: disabled ? undefined : handleCheckboxChange,
112
+ readOnly: readOnly,
113
+ onClick: handleCheckboxChange,
109
114
  margin: margin,
110
115
  size: size,
111
116
  checked: checked !== null && checked !== void 0 ? checked : innerChecked,
112
- backgroundType: backgroundType
113
- }, label && labelPosition === "before" && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
117
+ backgroundType: backgroundType,
118
+ ref: ref
119
+ }, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
114
120
  id: labelId,
115
121
  disabled: disabled,
116
- backgroundType: backgroundType
122
+ backgroundType: backgroundType,
123
+ labelPosition: labelPosition
117
124
  }, label, optional && " ".concat(translatedLabels.formFields.optionalLabel)), /*#__PURE__*/_react["default"].createElement(ValueInput, {
118
125
  type: "checkbox",
119
126
  checked: checked !== null && checked !== void 0 ? checked : innerChecked,
@@ -128,18 +135,16 @@ var DxcCheckbox = function DxcCheckbox(_ref) {
128
135
  tabIndex: disabled ? -1 : tabIndex,
129
136
  "aria-checked": checked !== null && checked !== void 0 ? checked : innerChecked,
130
137
  "aria-disabled": disabled,
138
+ "aria-readonly": readOnly,
131
139
  "aria-required": !disabled && !optional,
132
140
  "aria-labelledby": labelId,
133
141
  backgroundType: backgroundType,
134
142
  checked: checked !== null && checked !== void 0 ? checked : innerChecked,
135
143
  disabled: disabled,
144
+ readOnly: readOnly,
136
145
  ref: checkboxRef
137
- }, (checked !== null && checked !== void 0 ? checked : innerChecked) && checkedIcon)), label && labelPosition === "after" && /*#__PURE__*/_react["default"].createElement(LabelContainer, {
138
- id: labelId,
139
- disabled: disabled,
140
- backgroundType: backgroundType
141
- }, optional && "".concat(translatedLabels.formFields.optionalLabel, " "), label)));
142
- };
146
+ }, (checked !== null && checked !== void 0 ? checked : innerChecked) && checkedIcon))));
147
+ });
143
148
 
144
149
  var sizes = {
145
150
  small: "120px",
@@ -150,53 +155,70 @@ var sizes = {
150
155
  };
151
156
 
152
157
  var calculateWidth = function calculateWidth(margin, size) {
153
- if (size === "fillParent") {
154
- return "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")");
155
- }
156
-
157
- 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];
158
159
  };
159
160
 
160
161
  var getDisabledColor = function getDisabledColor(props, element) {
161
162
  switch (element) {
162
163
  case "check":
163
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledCheckColorOnDark : props.theme.disabledCheckColor;
164
+ return props.backgroundType === "dark" ? props.theme.disabledCheckColorOnDark : props.theme.disabledCheckColor;
164
165
 
165
166
  case "background":
166
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBackgroundColorCheckedOnDark : props.theme.disabledBackgroundColorChecked;
167
+ return props.backgroundType === "dark" ? props.theme.disabledBackgroundColorCheckedOnDark : props.theme.disabledBackgroundColorChecked;
167
168
 
168
169
  case "border":
169
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;
170
+ return props.backgroundType === "dark" ? props.theme.disabledBorderColorOnDark : props.theme.disabledBorderColor;
170
171
 
171
172
  case "label":
172
- 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;
173
193
  }
174
194
  };
175
195
 
176
- var getNotDisabledColor = function getNotDisabledColor(props, element) {
196
+ var getEnabledColor = function getEnabledColor(props, element) {
177
197
  switch (element) {
178
198
  case "check":
179
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
199
+ return props.backgroundType === "dark" ? props.theme.checkColorOnDark : props.theme.checkColor;
180
200
 
181
201
  case "background":
182
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
202
+ return props.backgroundType === "dark" ? props.theme.backgroundColorCheckedOnDark : props.theme.backgroundColorChecked;
183
203
 
184
204
  case "hoverBackground":
185
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.hoverBackgroundColorCheckedOnDark : props.theme.hoverBackgroundColorChecked;
205
+ return props.backgroundType === "dark" ? props.theme.hoverBackgroundColorCheckedOnDark : props.theme.hoverBackgroundColorChecked;
186
206
 
187
207
  case "border":
188
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
208
+ return props.backgroundType === "dark" ? props.theme.borderColorOnDark : props.theme.borderColor;
189
209
 
190
210
  case "hoverBorder":
191
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor;
211
+ return props.backgroundType === "dark" ? props.theme.hoverBorderColorOnDark : props.theme.hoverBorderColor;
192
212
 
193
213
  case "label":
194
- return props.backgroundType && props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
214
+ return props.backgroundType === "dark" ? props.theme.fontColorOnDark : props.theme.fontColor;
195
215
  }
196
216
  };
197
217
 
198
- var LabelContainer = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n"])), function (props) {
199
- 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");
200
222
  }, function (props) {
201
223
  return props.theme.fontFamily;
202
224
  }, function (props) {
@@ -209,19 +231,21 @@ var ValueInput = _styledComponents["default"].input(_templateObject2 || (_templa
209
231
 
210
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"])));
211
233
 
212
- var Checkbox = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 18px;\n width: 18px;\n border: solid 2px\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) {
213
- return props.disabled ? getDisabledColor(props, "border") : getNotDisabledColor(props, "border");
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");
214
236
  }, function (props) {
215
- return props.checked ? props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check") : "transparent";
237
+ return props.checked ? props.disabled ? getDisabledColor(props, "check") : props.readOnly ? getReadOnlyColor(props, "check") : getEnabledColor(props, "check") : "transparent";
216
238
  }, function (props) {
217
- return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "background");
239
+ return props.disabled ? getDisabledColor(props, "background") : props.readOnly ? getReadOnlyColor(props, "background") : getEnabledColor(props, "background");
218
240
  }, function (props) {
219
241
  return props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor;
220
242
  }, function (props) {
221
243
  return props.disabled && "pointer-events: none;";
222
244
  });
223
245
 
224
- var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n gap: ", ";\n\n &:hover ", " {\n border: 2px solid\n ", ";\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
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;
248
+ }, function (props) {
225
249
  return calculateWidth(props.margin, props.size);
226
250
  }, function (props) {
227
251
  return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
@@ -234,15 +258,11 @@ var MainContainer = _styledComponents["default"].div(_templateObject5 || (_templ
234
258
  }, function (props) {
235
259
  return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
236
260
  }, function (props) {
237
- return props.disabled ? "not-allowed" : "pointer";
238
- }, function (props) {
239
- return props.theme.checkLabelSpacing;
261
+ return props.disabled ? "not-allowed" : props.readOnly ? "default" : "pointer";
240
262
  }, Checkbox, function (props) {
241
- return props.disabled ? getDisabledColor(props, "border") : getNotDisabledColor(props, "hoverBorder");
242
- }, function (props) {
243
- return props.checked ? props.disabled ? getDisabledColor(props, "check") : getNotDisabledColor(props, "check") : "transparent";
263
+ if (!props.disabled) return props.readOnly ? getReadOnlyColor(props, "hoverBorder") : getEnabledColor(props, "hoverBorder");
244
264
  }, function (props) {
245
- return props.disabled ? getDisabledColor(props, "background") : getNotDisabledColor(props, "hoverBackground");
265
+ if (!props.disabled) return props.readOnly ? getReadOnlyColor(props, "hoverBackground") : getEnabledColor(props, "hoverBackground");
246
266
  });
247
267
 
248
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
+ `;