@dxc-technology/halstack-react 0.0.0-2c3a5e1 → 0.0.0-2d5bb6f

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 (294) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -11
  3. package/HalstackContext.d.ts +13 -0
  4. package/HalstackContext.js +318 -0
  5. package/accordion/Accordion.d.ts +1 -1
  6. package/accordion/Accordion.js +123 -167
  7. package/accordion/Accordion.stories.tsx +115 -27
  8. package/accordion/Accordion.test.js +56 -0
  9. package/accordion/types.d.ts +10 -5
  10. package/accordion-group/AccordionGroup.d.ts +1 -1
  11. package/accordion-group/AccordionGroup.js +28 -77
  12. package/accordion-group/AccordionGroup.stories.tsx +28 -2
  13. package/accordion-group/AccordionGroup.test.js +108 -0
  14. package/accordion-group/types.d.ts +17 -6
  15. package/alert/Alert.js +18 -46
  16. package/alert/Alert.stories.tsx +28 -0
  17. package/alert/Alert.test.js +75 -0
  18. package/alert/types.d.ts +3 -3
  19. package/badge/Badge.d.ts +4 -0
  20. package/badge/Badge.js +6 -16
  21. package/badge/types.d.ts +5 -0
  22. package/bleed/Bleed.js +14 -55
  23. package/bleed/Bleed.stories.tsx +94 -95
  24. package/bleed/types.d.ts +26 -2
  25. package/box/Box.js +34 -63
  26. package/box/Box.stories.tsx +15 -0
  27. package/box/Box.test.js +13 -0
  28. package/box/types.d.ts +5 -4
  29. package/bulleted-list/BulletedList.d.ts +7 -0
  30. package/bulleted-list/BulletedList.js +98 -0
  31. package/bulleted-list/BulletedList.stories.tsx +200 -0
  32. package/bulleted-list/types.d.ts +11 -0
  33. package/button/Button.js +61 -100
  34. package/button/Button.stories.tsx +159 -8
  35. package/button/Button.test.js +26 -0
  36. package/button/types.d.ts +8 -8
  37. package/card/Card.js +44 -70
  38. package/card/Card.test.js +39 -0
  39. package/card/types.d.ts +4 -3
  40. package/checkbox/Checkbox.d.ts +2 -2
  41. package/checkbox/Checkbox.js +115 -162
  42. package/checkbox/Checkbox.stories.tsx +198 -130
  43. package/checkbox/Checkbox.test.js +128 -0
  44. package/checkbox/types.d.ts +14 -6
  45. package/chip/Chip.js +26 -50
  46. package/chip/Chip.stories.tsx +96 -9
  47. package/chip/Chip.test.js +42 -0
  48. package/chip/types.d.ts +4 -4
  49. package/common/utils.js +1 -6
  50. package/common/variables.d.ts +1431 -0
  51. package/common/variables.js +480 -553
  52. package/date-input/Calendar.d.ts +4 -0
  53. package/date-input/Calendar.js +215 -0
  54. package/date-input/DateInput.js +164 -300
  55. package/date-input/DateInput.stories.tsx +199 -33
  56. package/date-input/DateInput.test.js +648 -0
  57. package/date-input/DatePicker.d.ts +4 -0
  58. package/date-input/DatePicker.js +116 -0
  59. package/date-input/Icons.d.ts +6 -0
  60. package/date-input/Icons.js +63 -0
  61. package/date-input/YearPicker.d.ts +4 -0
  62. package/date-input/YearPicker.js +101 -0
  63. package/date-input/types.d.ts +71 -13
  64. package/dialog/Dialog.js +52 -84
  65. package/dialog/Dialog.stories.tsx +99 -22
  66. package/dialog/Dialog.test.js +56 -0
  67. package/dialog/types.d.ts +4 -3
  68. package/dropdown/Dropdown.d.ts +1 -1
  69. package/dropdown/Dropdown.js +239 -300
  70. package/dropdown/Dropdown.stories.tsx +245 -56
  71. package/dropdown/Dropdown.test.js +479 -0
  72. package/dropdown/DropdownMenu.d.ts +4 -0
  73. package/dropdown/DropdownMenu.js +60 -0
  74. package/dropdown/DropdownMenuItem.d.ts +4 -0
  75. package/dropdown/DropdownMenuItem.js +70 -0
  76. package/dropdown/types.d.ts +26 -6
  77. package/file-input/FileInput.d.ts +2 -2
  78. package/file-input/FileInput.js +224 -351
  79. package/file-input/FileInput.stories.tsx +122 -11
  80. package/file-input/FileInput.test.js +445 -0
  81. package/file-input/FileItem.d.ts +4 -14
  82. package/file-input/FileItem.js +48 -97
  83. package/file-input/types.d.ts +24 -7
  84. package/flex/Flex.d.ts +4 -0
  85. package/flex/Flex.js +57 -0
  86. package/flex/Flex.stories.tsx +103 -0
  87. package/flex/types.d.ts +32 -0
  88. package/footer/Footer.js +28 -133
  89. package/footer/Footer.stories.tsx +99 -1
  90. package/footer/Footer.test.js +92 -0
  91. package/footer/Icons.js +1 -5
  92. package/footer/types.d.ts +7 -6
  93. package/header/Header.js +112 -177
  94. package/header/Header.stories.tsx +189 -36
  95. package/header/Header.test.js +66 -0
  96. package/header/Icons.js +2 -6
  97. package/header/types.d.ts +4 -3
  98. package/heading/Heading.js +8 -29
  99. package/heading/Heading.test.js +169 -0
  100. package/heading/types.d.ts +3 -3
  101. package/inset/Inset.js +14 -55
  102. package/inset/Inset.stories.tsx +36 -36
  103. package/inset/types.d.ts +26 -2
  104. package/layout/ApplicationLayout.d.ts +16 -6
  105. package/layout/ApplicationLayout.js +71 -164
  106. package/layout/ApplicationLayout.stories.tsx +84 -93
  107. package/layout/Icons.d.ts +5 -0
  108. package/layout/Icons.js +11 -10
  109. package/layout/SidenavContext.d.ts +5 -0
  110. package/layout/SidenavContext.js +15 -0
  111. package/layout/types.d.ts +18 -33
  112. package/link/Link.d.ts +3 -2
  113. package/link/Link.js +61 -106
  114. package/link/Link.stories.tsx +159 -52
  115. package/link/Link.test.js +65 -0
  116. package/link/types.d.ts +9 -29
  117. package/main.d.ts +10 -15
  118. package/main.js +43 -124
  119. package/nav-tabs/NavTabs.d.ts +8 -0
  120. package/nav-tabs/NavTabs.js +95 -0
  121. package/nav-tabs/NavTabs.stories.tsx +260 -0
  122. package/nav-tabs/NavTabs.test.js +75 -0
  123. package/nav-tabs/Tab.d.ts +4 -0
  124. package/nav-tabs/Tab.js +120 -0
  125. package/nav-tabs/types.d.ts +53 -0
  126. package/number-input/NumberInput.js +21 -38
  127. package/number-input/NumberInput.stories.tsx +5 -5
  128. package/number-input/NumberInput.test.js +406 -0
  129. package/number-input/NumberInputContext.js +0 -5
  130. package/number-input/numberInputContextTypes.d.ts +1 -1
  131. package/number-input/types.d.ts +21 -14
  132. package/package.json +22 -25
  133. package/paginator/Icons.d.ts +5 -0
  134. package/paginator/Icons.js +16 -38
  135. package/paginator/Paginator.js +31 -82
  136. package/paginator/Paginator.stories.tsx +24 -0
  137. package/paginator/Paginator.test.js +266 -0
  138. package/paginator/types.d.ts +1 -1
  139. package/paragraph/Paragraph.d.ts +6 -0
  140. package/paragraph/Paragraph.js +28 -0
  141. package/paragraph/Paragraph.stories.tsx +44 -0
  142. package/password-input/PasswordInput.js +28 -54
  143. package/password-input/PasswordInput.test.js +138 -0
  144. package/password-input/types.d.ts +18 -15
  145. package/progress-bar/ProgressBar.d.ts +2 -2
  146. package/progress-bar/ProgressBar.js +65 -84
  147. package/progress-bar/ProgressBar.stories.jsx +47 -12
  148. package/progress-bar/ProgressBar.test.js +93 -0
  149. package/progress-bar/types.d.ts +3 -4
  150. package/quick-nav/QuickNav.d.ts +4 -0
  151. package/quick-nav/QuickNav.js +95 -0
  152. package/quick-nav/QuickNav.stories.tsx +356 -0
  153. package/quick-nav/types.d.ts +21 -0
  154. package/quick-nav/types.js +5 -0
  155. package/radio-group/Radio.d.ts +1 -1
  156. package/radio-group/Radio.js +55 -70
  157. package/radio-group/RadioGroup.js +91 -126
  158. package/radio-group/RadioGroup.stories.tsx +171 -36
  159. package/radio-group/RadioGroup.test.js +529 -157
  160. package/radio-group/types.d.ts +86 -8
  161. package/resultsetTable/Icons.d.ts +7 -0
  162. package/resultsetTable/Icons.js +48 -0
  163. package/resultsetTable/ResultsetTable.js +66 -157
  164. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  165. package/resultsetTable/ResultsetTable.test.js +292 -0
  166. package/resultsetTable/types.d.ts +5 -5
  167. package/select/Icons.d.ts +10 -0
  168. package/select/Icons.js +90 -0
  169. package/select/Listbox.d.ts +4 -0
  170. package/select/Listbox.js +144 -0
  171. package/select/Option.d.ts +4 -0
  172. package/select/Option.js +81 -0
  173. package/select/Select.js +201 -485
  174. package/select/Select.stories.tsx +600 -201
  175. package/select/Select.test.js +1845 -0
  176. package/select/types.d.ts +62 -22
  177. package/sidenav/Sidenav.d.ts +6 -5
  178. package/sidenav/Sidenav.js +164 -74
  179. package/sidenav/Sidenav.stories.tsx +249 -149
  180. package/sidenav/Sidenav.test.js +37 -0
  181. package/sidenav/types.d.ts +50 -27
  182. package/slider/Slider.d.ts +2 -2
  183. package/slider/Slider.js +143 -164
  184. package/slider/Slider.stories.tsx +72 -9
  185. package/slider/Slider.test.js +222 -0
  186. package/slider/types.d.ts +11 -3
  187. package/spinner/Spinner.js +12 -41
  188. package/spinner/Spinner.stories.jsx +27 -1
  189. package/spinner/Spinner.test.js +55 -0
  190. package/spinner/types.d.ts +3 -3
  191. package/switch/Switch.d.ts +2 -2
  192. package/switch/Switch.js +148 -107
  193. package/switch/Switch.stories.tsx +53 -42
  194. package/switch/Switch.test.js +180 -0
  195. package/switch/types.d.ts +13 -5
  196. package/table/Table.js +5 -23
  197. package/table/Table.stories.jsx +80 -1
  198. package/table/Table.test.js +21 -0
  199. package/table/types.d.ts +3 -3
  200. package/tabs/Tab.d.ts +4 -0
  201. package/tabs/Tab.js +115 -0
  202. package/tabs/Tabs.d.ts +1 -1
  203. package/tabs/Tabs.js +318 -139
  204. package/tabs/Tabs.stories.tsx +119 -13
  205. package/tabs/Tabs.test.js +295 -0
  206. package/tabs/types.d.ts +21 -7
  207. package/tag/Tag.js +34 -68
  208. package/tag/Tag.stories.tsx +25 -8
  209. package/tag/Tag.test.js +49 -0
  210. package/tag/types.d.ts +7 -7
  211. package/text-input/Icons.d.ts +8 -0
  212. package/text-input/Icons.js +57 -0
  213. package/text-input/Suggestion.d.ts +4 -0
  214. package/text-input/Suggestion.js +68 -0
  215. package/text-input/Suggestions.d.ts +4 -0
  216. package/text-input/Suggestions.js +109 -0
  217. package/text-input/TextInput.js +232 -438
  218. package/text-input/TextInput.stories.tsx +310 -197
  219. package/text-input/TextInput.test.js +1404 -0
  220. package/text-input/types.d.ts +55 -17
  221. package/textarea/Textarea.js +53 -96
  222. package/textarea/Textarea.stories.jsx +93 -13
  223. package/textarea/Textarea.test.js +360 -0
  224. package/textarea/types.d.ts +22 -15
  225. package/toggle-group/ToggleGroup.d.ts +1 -1
  226. package/toggle-group/ToggleGroup.js +23 -57
  227. package/toggle-group/ToggleGroup.stories.tsx +46 -4
  228. package/toggle-group/ToggleGroup.test.js +124 -0
  229. package/toggle-group/types.d.ts +19 -11
  230. package/translatedLabelsType.d.ts +82 -0
  231. package/translatedLabelsType.js +5 -0
  232. package/typography/Typography.d.ts +4 -0
  233. package/typography/Typography.js +119 -0
  234. package/typography/Typography.stories.tsx +198 -0
  235. package/typography/types.d.ts +18 -0
  236. package/typography/types.js +5 -0
  237. package/useTheme.d.ts +1 -1
  238. package/useTheme.js +3 -9
  239. package/useTranslatedLabels.d.ts +3 -0
  240. package/useTranslatedLabels.js +15 -0
  241. package/wizard/Wizard.d.ts +1 -1
  242. package/wizard/Wizard.js +68 -98
  243. package/wizard/Wizard.stories.tsx +48 -19
  244. package/wizard/Wizard.test.js +114 -0
  245. package/wizard/types.d.ts +12 -7
  246. package/ThemeContext.d.ts +0 -15
  247. package/ThemeContext.js +0 -243
  248. package/V3Select/V3Select.js +0 -455
  249. package/V3Select/index.d.ts +0 -27
  250. package/V3Textarea/V3Textarea.js +0 -260
  251. package/V3Textarea/index.d.ts +0 -27
  252. package/common/RequiredComponent.js +0 -32
  253. package/date/Date.js +0 -373
  254. package/date/index.d.ts +0 -27
  255. package/input-text/Icons.js +0 -22
  256. package/input-text/InputText.js +0 -611
  257. package/input-text/index.d.ts +0 -36
  258. package/list/List.d.ts +0 -4
  259. package/list/List.js +0 -47
  260. package/list/List.stories.tsx +0 -95
  261. package/list/types.d.ts +0 -7
  262. package/radio/Radio.d.ts +0 -4
  263. package/radio/Radio.js +0 -174
  264. package/radio/Radio.stories.tsx +0 -192
  265. package/radio/types.d.ts +0 -54
  266. package/row/Row.d.ts +0 -3
  267. package/row/Row.js +0 -127
  268. package/row/Row.stories.tsx +0 -237
  269. package/row/types.d.ts +0 -10
  270. package/stack/Stack.d.ts +0 -3
  271. package/stack/Stack.js +0 -97
  272. package/stack/Stack.stories.tsx +0 -164
  273. package/stack/types.d.ts +0 -9
  274. package/text/Text.d.ts +0 -7
  275. package/text/Text.js +0 -30
  276. package/text/Text.stories.tsx +0 -19
  277. package/toggle/Toggle.js +0 -186
  278. package/toggle/index.d.ts +0 -21
  279. package/upload/Upload.js +0 -201
  280. package/upload/buttons-upload/ButtonsUpload.js +0 -111
  281. package/upload/buttons-upload/Icons.js +0 -40
  282. package/upload/dragAndDropArea/DragAndDropArea.js +0 -225
  283. package/upload/dragAndDropArea/Icons.js +0 -39
  284. package/upload/file-upload/FileToUpload.js +0 -115
  285. package/upload/file-upload/Icons.js +0 -66
  286. package/upload/files-upload/FilesToUpload.js +0 -109
  287. package/upload/index.d.ts +0 -15
  288. package/upload/transaction/Icons.js +0 -160
  289. package/upload/transaction/Transaction.js +0 -104
  290. package/upload/transactions/Transactions.js +0 -94
  291. /package/{list → badge}/types.js +0 -0
  292. /package/{radio → bulleted-list}/types.js +0 -0
  293. /package/{row → flex}/types.js +0 -0
  294. /package/{stack → nav-tabs}/types.js +0 -0
@@ -1,222 +1,193 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof = require("@babel/runtime/helpers/typeof");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports["default"] = void 0;
11
-
12
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
-
14
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
-
16
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
-
18
12
  var _react = _interopRequireWildcard(require("react"));
19
-
20
13
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
21
-
22
14
  var _uuid = require("uuid");
23
-
24
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
25
-
16
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
26
17
  var _Radio = _interopRequireDefault(require("./Radio"));
27
-
28
18
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
29
-
30
19
  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); }
31
-
32
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(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; }
33
-
34
21
  var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
35
22
  var initialSelectedOptionIndex = innerOptions.findIndex(function (option) {
36
23
  return option.value === value;
37
24
  });
38
25
  return initialSelectedOptionIndex !== -1 ? initialSelectedOptionIndex : 0;
39
26
  };
40
-
41
27
  var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
28
+ var _ref2;
42
29
  var label = _ref.label,
43
- name = _ref.name,
44
- helperText = _ref.helperText,
45
- options = _ref.options,
46
- _ref$disabled = _ref.disabled,
47
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
48
- _ref$optional = _ref.optional,
49
- optional = _ref$optional === void 0 ? false : _ref$optional,
50
- _ref$optionalItemLabe = _ref.optionalItemLabel,
51
- optionalItemLabel = _ref$optionalItemLabe === void 0 ? "N/A" : _ref$optionalItemLabe,
52
- _ref$readonly = _ref.readonly,
53
- readonly = _ref$readonly === void 0 ? false : _ref$readonly,
54
- _ref$stacking = _ref.stacking,
55
- stacking = _ref$stacking === void 0 ? "column" : _ref$stacking,
56
- defaultValue = _ref.defaultValue,
57
- value = _ref.value,
58
- onChange = _ref.onChange,
59
- onBlur = _ref.onBlur,
60
- error = _ref.error;
61
-
30
+ name = _ref.name,
31
+ helperText = _ref.helperText,
32
+ options = _ref.options,
33
+ _ref$disabled = _ref.disabled,
34
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
35
+ _ref$optional = _ref.optional,
36
+ optional = _ref$optional === void 0 ? false : _ref$optional,
37
+ optionalItemLabel = _ref.optionalItemLabel,
38
+ _ref$readonly = _ref.readonly,
39
+ readonly = _ref$readonly === void 0 ? false : _ref$readonly,
40
+ _ref$stacking = _ref.stacking,
41
+ stacking = _ref$stacking === void 0 ? "column" : _ref$stacking,
42
+ defaultValue = _ref.defaultValue,
43
+ value = _ref.value,
44
+ onChange = _ref.onChange,
45
+ onBlur = _ref.onBlur,
46
+ error = _ref.error,
47
+ _ref$tabIndex = _ref.tabIndex,
48
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
62
49
  var _useState = (0, _react.useState)("radio-group-".concat((0, _uuid.v4)())),
63
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
64
- radioGroupId = _useState2[0];
65
-
50
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
51
+ radioGroupId = _useState2[0];
66
52
  var radioGroupLabelId = "label-".concat(radioGroupId);
67
53
  var errorId = "error-".concat(radioGroupId);
68
-
69
54
  var _useState3 = (0, _react.useState)(defaultValue),
70
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
71
- innerValue = _useState4[0],
72
- setInnerValue = _useState4[1];
73
-
55
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
56
+ innerValue = _useState4[0],
57
+ setInnerValue = _useState4[1];
74
58
  var _useState5 = (0, _react.useState)(true),
75
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
76
- firstTimeFocus = _useState6[0],
77
- setFirstTimeFocus = _useState6[1];
78
-
59
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
60
+ firstTimeFocus = _useState6[0],
61
+ setFirstTimeFocus = _useState6[1];
62
+ var colorsTheme = (0, _useTheme["default"])();
63
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
79
64
  var optionalItem = {
80
- label: optionalItemLabel,
65
+ label: optionalItemLabel || translatedLabels.radioGroup.optionalItemLabelDefault,
81
66
  value: "",
82
67
  disabled: disabled
83
68
  };
84
69
  var innerOptions = (0, _react.useMemo)(function () {
85
70
  return optional ? [].concat((0, _toConsumableArray2["default"])(options), [optionalItem]) : options;
86
71
  }, [optional, options]);
87
-
88
72
  var _useState7 = (0, _react.useState)(getInitialFocusIndex(innerOptions, value !== null && value !== void 0 ? value : innerValue)),
89
- _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
90
- currentFocusIndex = _useState8[0],
91
- setCurrentFocusIndex = _useState8[1];
92
-
93
- var colorsTheme = (0, _useTheme["default"])();
73
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
74
+ currentFocusIndex = _useState8[0],
75
+ setCurrentFocusIndex = _useState8[1];
94
76
  var handleOnChange = (0, _react.useCallback)(function (newValue) {
95
77
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
96
-
97
78
  if (newValue !== currentValue && !readonly) {
98
79
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
99
80
  onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
100
81
  }
101
- }, [value, innerValue, setInnerValue, onChange]);
102
-
103
- var handleOnBlur = function handleOnBlur(e) {
82
+ }, [value, innerValue, onChange]);
83
+ var handleOnBlur = function handleOnBlur(event) {
104
84
  // If the radio group loses the focus to an element not contained inside it...
105
- !e.currentTarget.contains(e.relatedTarget) && setFirstTimeFocus(true);
106
- var currentValue = value !== null && value !== void 0 ? value : innerValue;
107
- !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
108
- value: currentValue,
109
- error: "This field is required. Please, choose an option."
110
- }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
111
- value: currentValue
112
- });
113
- };
114
-
115
- var setPreviousRadioChecked = function setPreviousRadioChecked() {
116
- if (!disabled) {
117
- setCurrentFocusIndex(function (currentFocusIndex) {
118
- var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
119
-
120
- while (innerOptions[index].disabled) {
121
- index = index === 0 ? innerOptions.length - 1 : index - 1;
122
- }
123
-
124
- return index;
85
+ if (!event.currentTarget.contains(event.relatedTarget)) {
86
+ setFirstTimeFocus(true);
87
+ var currentValue = value !== null && value !== void 0 ? value : innerValue;
88
+ !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
89
+ value: currentValue,
90
+ error: translatedLabels.formFields.requiredSelectionErrorMessage
91
+ }) : onBlur === null || onBlur === void 0 ? void 0 : onBlur({
92
+ value: currentValue
125
93
  });
126
94
  }
127
95
  };
128
-
96
+ var handleOnFocus = function handleOnFocus() {
97
+ firstTimeFocus && setFirstTimeFocus(false);
98
+ };
99
+ var setPreviousRadioChecked = function setPreviousRadioChecked() {
100
+ setCurrentFocusIndex(function (currentFocusIndex) {
101
+ var index = currentFocusIndex === 0 ? innerOptions.length - 1 : currentFocusIndex - 1;
102
+ while (innerOptions[index].disabled) {
103
+ index = index === 0 ? innerOptions.length - 1 : index - 1;
104
+ }
105
+ handleOnChange(innerOptions[index].value);
106
+ return index;
107
+ });
108
+ };
129
109
  var setNextRadioChecked = function setNextRadioChecked() {
130
- if (!disabled) {
131
- setCurrentFocusIndex(function (currentFocusIndex) {
132
- var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
133
-
134
- while (innerOptions[index].disabled) {
135
- index = index === innerOptions.length - 1 ? 0 : index + 1;
136
- }
137
-
138
- return index;
139
- });
140
- }
110
+ setCurrentFocusIndex(function (currentFocusIndex) {
111
+ var index = currentFocusIndex === innerOptions.length - 1 ? 0 : currentFocusIndex + 1;
112
+ while (innerOptions[index].disabled) {
113
+ index = index === innerOptions.length - 1 ? 0 : index + 1;
114
+ }
115
+ handleOnChange(innerOptions[index].value);
116
+ return index;
117
+ });
141
118
  };
142
-
143
119
  var handleOnKeyDown = function handleOnKeyDown(event) {
144
- switch (event.keyCode) {
145
- case 37: // arrow left
146
-
147
- case 38:
148
- // arrow up
120
+ switch (event.key) {
121
+ case "Left":
122
+ case "ArrowLeft":
123
+ case "Up":
124
+ case "ArrowUp":
149
125
  event.preventDefault();
150
126
  setPreviousRadioChecked();
151
127
  break;
152
-
153
- case 39: // arrow right
154
-
155
- case 40:
156
- // arrow down
128
+ case "Right":
129
+ case "ArrowRight":
130
+ case "Down":
131
+ case "ArrowDown":
157
132
  event.preventDefault();
158
133
  setNextRadioChecked();
159
134
  break;
160
-
161
- case 13: // enter
162
-
163
- case 32:
164
- // space
135
+ case " ":
165
136
  event.preventDefault();
166
137
  handleOnChange(innerOptions[currentFocusIndex].value);
167
138
  break;
168
139
  }
169
140
  };
170
-
171
141
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
172
- theme: colorsTheme.radioGroup
142
+ theme: colorsTheme["radioGroup"]
173
143
  }, /*#__PURE__*/_react["default"].createElement(RadioGroupContainer, {
174
144
  ref: ref
175
145
  }, label && /*#__PURE__*/_react["default"].createElement(Label, {
176
146
  id: radioGroupLabelId,
177
147
  helperText: helperText,
178
148
  disabled: disabled
179
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, "(Optional)")), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
149
+ }, label, optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, " ".concat(translatedLabels.formFields.optionalLabel))), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
180
150
  disabled: disabled
181
151
  }, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
182
152
  onBlur: handleOnBlur,
153
+ onFocus: handleOnFocus,
183
154
  onKeyDown: handleOnKeyDown,
184
155
  stacking: stacking,
185
156
  role: "radiogroup",
186
157
  "aria-disabled": disabled,
187
158
  "aria-labelledby": radioGroupLabelId,
188
- "aria-invalid": error ? "true" : "false",
159
+ "aria-invalid": error ? true : false,
189
160
  "aria-errormessage": error ? errorId : undefined,
190
- "aria-required": !optional
161
+ "aria-required": !disabled && !readonly && !optional,
162
+ "aria-readonly": readonly,
163
+ "aria-orientation": stacking === "column" ? "vertical" : "horizontal"
191
164
  }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
192
165
  name: name,
193
- value: value !== null && value !== void 0 ? value : innerValue,
166
+ disabled: disabled,
167
+ value: (_ref2 = value !== null && value !== void 0 ? value : innerValue) !== null && _ref2 !== void 0 ? _ref2 : "",
194
168
  readOnly: true,
195
169
  "aria-hidden": "true"
196
170
  }), innerOptions.map(function (option, index) {
197
171
  return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
198
- option: option,
199
- currentValue: value !== null && value !== void 0 ? value : innerValue,
172
+ key: "radio-".concat(index),
173
+ label: option.label,
174
+ checked: (value !== null && value !== void 0 ? value : innerValue) === option.value,
200
175
  onClick: function onClick() {
201
176
  handleOnChange(option.value);
202
177
  setCurrentFocusIndex(index);
203
178
  },
204
- onFocus: function onFocus() {
205
- !firstTimeFocus ? handleOnChange(option.value) : setFirstTimeFocus(false);
206
- },
207
179
  error: error,
208
180
  disabled: option.disabled || disabled,
209
181
  focused: currentFocusIndex === index,
210
- readonly: readonly
182
+ readonly: readonly,
183
+ tabIndex: tabIndex
211
184
  });
212
185
  })), !disabled && typeof error === "string" && /*#__PURE__*/_react["default"].createElement(Error, {
213
186
  id: errorId,
214
187
  "aria-live": error ? "assertive" : "off"
215
188
  }, error)));
216
189
  });
217
-
218
190
  var RadioGroupContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: column;\n box-sizing: border-box;\n"])));
219
-
220
191
  var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
221
192
  return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
222
193
  }, function (props) {
@@ -232,11 +203,9 @@ var Label = _styledComponents["default"].span(_templateObject2 || (_templateObje
232
203
  }, function (props) {
233
204
  return !props.helperText && "margin-bottom: ".concat(props.theme.groupLabelMargin);
234
205
  });
235
-
236
206
  var OptionalLabel = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: ", ";\n"])), function (props) {
237
207
  return props.theme.optionalLabelFontWeight;
238
208
  });
239
-
240
209
  var HelperText = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin-bottom: ", ";\n"])), function (props) {
241
210
  return props.disabled ? props.theme.disabledHelperTextFontColor : props.theme.helperTextFontColor;
242
211
  }, function (props) {
@@ -252,22 +221,18 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
252
221
  }, function (props) {
253
222
  return props.theme.groupLabelMargin;
254
223
  });
255
-
256
- var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
224
+ var RadioGroup = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n flex-direction: ", ";\n row-gap: ", ";\n column-gap: ", ";\n"])), function (props) {
257
225
  return props.stacking;
258
226
  }, function (props) {
259
227
  return props.theme.groupVerticalGutter;
260
228
  }, function (props) {
261
229
  return props.theme.groupHorizontalGutter;
262
230
  });
263
-
264
231
  var ValueInput = _styledComponents["default"].input(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: none;\n"])));
265
-
266
232
  var Error = _styledComponents["default"].span(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.5rem;\n"])), function (props) {
267
233
  return props.theme.errorMessageColor;
268
234
  }, function (props) {
269
235
  return props.theme.fontFamily;
270
236
  });
271
-
272
237
  var _default = DxcRadioGroup;
273
238
  exports["default"] = _default;
@@ -1,12 +1,16 @@
1
+ import React from "react";
1
2
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
2
3
  import Title from "../../.storybook/components/Title";
3
4
  import DxcRadioGroup from "./RadioGroup";
5
+ import { HalstackProvider } from "../HalstackContext";
4
6
 
5
7
  export default {
6
8
  title: "Radio Group",
7
9
  component: DxcRadioGroup,
8
10
  };
9
11
 
12
+ const single_option = [{ label: "Option A", value: "A" }];
13
+
10
14
  const options = [
11
15
  { label: "Option 1", value: "1" },
12
16
  { label: "Option 2", value: "2" },
@@ -14,66 +18,197 @@ const options = [
14
18
  { label: "Option 4", value: "4" },
15
19
  ];
16
20
 
17
- const single_disabled_options = [
18
- { label: "Option 1", value: "1" },
19
- { label: "Option 2", value: "2", disabled: true },
20
- { label: "Option 3", value: "3" },
21
- ];
21
+ const single_disabled_options = [{ label: "Option A", value: "A", disabled: true }];
22
+
23
+ const opinionatedTheme = {
24
+ radioGroup: {
25
+ baseColor: "#0086e6",
26
+ fontColor: "#000000",
27
+ },
28
+ };
22
29
 
23
30
  export const Chromatic = () => (
24
31
  <>
32
+ <Title title="Radio input states" theme="light" level={2} />
25
33
  <ExampleContainer>
26
- <Title title="Label only" theme="light" level={4} />
27
- <DxcRadioGroup label="Example of a label only" options={options} />
34
+ <Title title="Enabled" theme="light" level={4} />
35
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
28
36
  </ExampleContainer>
29
- <ExampleContainer>
30
- <Title title="Column" theme="light" level={4} />
31
- <DxcRadioGroup label="Example" helperText="Helper text" options={options} defaultValue="3" />
37
+ <ExampleContainer pseudoState="pseudo-hover">
38
+ <Title title="Hovered" theme="light" level={4} />
39
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
32
40
  </ExampleContainer>
33
- <ExampleContainer>
34
- <Title title="Row" theme="light" level={4} />
35
- <DxcRadioGroup label="Example" helperText="Helper text" options={options} stacking="row" />
41
+ <ExampleContainer pseudoState="pseudo-active">
42
+ <Title title="Active" theme="light" level={4} />
43
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
44
+ </ExampleContainer>
45
+ <ExampleContainer pseudoState="pseudo-focus">
46
+ <Title title="Focused" theme="light" level={4} />
47
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
36
48
  </ExampleContainer>
37
49
  <ExampleContainer>
38
50
  <Title title="Disabled" theme="light" level={4} />
39
- <DxcRadioGroup
40
- label="Disabled"
41
- error="Error message"
42
- helperText="Helper text"
43
- options={options}
44
- disabled
45
- optional
46
- defaultValue="2"
47
- />
51
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_disabled_options} defaultValue="A" />
48
52
  </ExampleContainer>
53
+ <Title title="Readonly radio input sub-states" theme="light" level={3} />
49
54
  <ExampleContainer>
50
- <Title title="Single disabled" theme="light" level={4} />
51
- <DxcRadioGroup label="Disabled" helperText="Helper text" options={single_disabled_options} defaultValue="3" />
55
+ <Title title="Enabled" theme="light" level={4} />
56
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
57
+ </ExampleContainer>
58
+ <ExampleContainer pseudoState="pseudo-hover">
59
+ <Title title="Hovered" theme="light" level={4} />
60
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
52
61
  </ExampleContainer>
62
+ <ExampleContainer pseudoState="pseudo-active">
63
+ <Title title="Active" theme="light" level={4} />
64
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
65
+ </ExampleContainer>
66
+ <Title title="Error radio input sub-states" theme="light" level={3} />
53
67
  <ExampleContainer>
54
- <Title title="Optional" theme="light" level={4} />
68
+ <Title title="Enabled" theme="light" level={4} />
55
69
  <DxcRadioGroup
56
- label="Example"
57
- optionalItemLabel="No selection"
58
- optional
70
+ label="Label"
59
71
  helperText="Helper text"
60
- options={options}
61
- stacking="row"
72
+ options={single_option}
73
+ defaultValue="A"
74
+ error="Error message"
62
75
  />
63
76
  </ExampleContainer>
64
- <ExampleContainer>
65
- <Title title="Error" theme="light" level={4} />
77
+ <ExampleContainer pseudoState="pseudo-hover">
78
+ <Title title="Hovered" theme="light" level={4} />
66
79
  <DxcRadioGroup
67
- label="Example"
80
+ label="Label"
81
+ helperText="Helper text"
82
+ options={single_option}
83
+ defaultValue="A"
84
+ readonly
68
85
  error="Error message"
86
+ />
87
+ </ExampleContainer>
88
+ <ExampleContainer pseudoState="pseudo-active">
89
+ <Title title="Active" theme="light" level={4} />
90
+ <DxcRadioGroup
91
+ label="Label"
69
92
  helperText="Helper text"
70
- options={options}
71
- defaultValue="2"
93
+ options={single_option}
94
+ defaultValue="A"
95
+ readonly
96
+ error="Error message"
72
97
  />
73
98
  </ExampleContainer>
99
+ <Title title="Variants" theme="light" level={2} />
100
+ <ExampleContainer>
101
+ <Title title="Column" theme="light" level={4} />
102
+ <DxcRadioGroup label="Label" helperText="Helper text" options={options} />
103
+ </ExampleContainer>
104
+ <ExampleContainer>
105
+ <Title title="Row" theme="light" level={4} />
106
+ <DxcRadioGroup label="Label" helperText="Helper text" options={options} stacking="row" />
107
+ </ExampleContainer>
108
+ <ExampleContainer>
109
+ <Title title="Optional" theme="light" level={4} />
110
+ <DxcRadioGroup label="Label" optional helperText="Helper text" options={options} stacking="row" />
111
+ </ExampleContainer>
112
+ <ExampleContainer>
113
+ <Title title="Disabled" theme="light" level={4} />
114
+ <DxcRadioGroup label="Label" helperText="Helper text" options={options} disabled />
115
+ </ExampleContainer>
74
116
  <ExampleContainer>
75
117
  <Title title="Readonly" theme="light" level={4} />
76
- <DxcRadioGroup label="Example" readonly helperText="Helper text" options={options} defaultValue="2" />
118
+ <DxcRadioGroup label="Label" readonly helperText="Helper text" options={options} />
119
+ </ExampleContainer>
120
+ <ExampleContainer>
121
+ <Title title="Error space reserved" theme="light" level={4} />
122
+ <DxcRadioGroup label="Label" error="" helperText="Helper text" options={options} />
123
+ </ExampleContainer>
124
+ <ExampleContainer>
125
+ <Title title="Error" theme="light" level={4} />
126
+ <DxcRadioGroup label="Label" error="Error message" helperText="Helper text" options={options} />
127
+ </ExampleContainer>
128
+ <Title title="Opinionated theme" theme="light" level={2} />
129
+ <ExampleContainer>
130
+ <Title title="Enabled" theme="light" level={4} />
131
+ <HalstackProvider theme={opinionatedTheme}>
132
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
133
+ </HalstackProvider>
134
+ </ExampleContainer>
135
+ <ExampleContainer pseudoState="pseudo-hover">
136
+ <Title title="Hovered" theme="light" level={4} />
137
+ <HalstackProvider theme={opinionatedTheme}>
138
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
139
+ </HalstackProvider>
140
+ </ExampleContainer>
141
+ <ExampleContainer pseudoState="pseudo-active">
142
+ <Title title="Active" theme="light" level={4} />
143
+ <HalstackProvider theme={opinionatedTheme}>
144
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
145
+ </HalstackProvider>
146
+ </ExampleContainer>
147
+ <ExampleContainer pseudoState="pseudo-focus">
148
+ <Title title="Focused" theme="light" level={4} />
149
+ <HalstackProvider theme={opinionatedTheme}>
150
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
151
+ </HalstackProvider>
152
+ </ExampleContainer>
153
+ <ExampleContainer>
154
+ <Title title="Disabled" theme="light" level={4} />
155
+ <HalstackProvider theme={opinionatedTheme}>
156
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_disabled_options} defaultValue="A" />
157
+ </HalstackProvider>
158
+ </ExampleContainer>
159
+ <ExampleContainer>
160
+ <Title title="Readonly enabled" theme="light" level={4} />
161
+ <HalstackProvider theme={opinionatedTheme}>
162
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
163
+ </HalstackProvider>
164
+ </ExampleContainer>
165
+ <ExampleContainer pseudoState="pseudo-hover">
166
+ <Title title="Readonly hovered" theme="light" level={4} />
167
+ <HalstackProvider theme={opinionatedTheme}>
168
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
169
+ </HalstackProvider>
170
+ </ExampleContainer>
171
+ <ExampleContainer pseudoState="pseudo-active">
172
+ <Title title="Readonly active" theme="light" level={4} />
173
+ <HalstackProvider theme={opinionatedTheme}>
174
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
175
+ </HalstackProvider>
176
+ </ExampleContainer>
177
+ <ExampleContainer pseudoState="pseudo-focus">
178
+ <Title title="Readonly focused" theme="light" level={4} />
179
+ <HalstackProvider theme={opinionatedTheme}>
180
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" readonly />
181
+ </HalstackProvider>
182
+ </ExampleContainer>
183
+ <ExampleContainer>
184
+ <Title title="Enabled" theme="light" level={4} />
185
+ <HalstackProvider theme={opinionatedTheme}>
186
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
187
+ </HalstackProvider>
188
+ </ExampleContainer>
189
+ <ExampleContainer pseudoState="pseudo-hover">
190
+ <Title title="Hovered" theme="light" level={4} />
191
+ <HalstackProvider theme={opinionatedTheme}>
192
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
193
+ </HalstackProvider>
194
+ </ExampleContainer>
195
+ <ExampleContainer pseudoState="pseudo-active">
196
+ <Title title="Active" theme="light" level={4} />
197
+ <HalstackProvider theme={opinionatedTheme}>
198
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
199
+ </HalstackProvider>
200
+ </ExampleContainer>
201
+ <ExampleContainer pseudoState="pseudo-focus">
202
+ <Title title="Focused" theme="light" level={4} />
203
+ <HalstackProvider theme={opinionatedTheme}>
204
+ <DxcRadioGroup label="Label" options={single_option} defaultValue="A" error="Error message" />
205
+ </HalstackProvider>
206
+ </ExampleContainer>
207
+ <ExampleContainer>
208
+ <Title title="Disabled" theme="light" level={4} />
209
+ <HalstackProvider theme={opinionatedTheme}>
210
+ <DxcRadioGroup label="Label" helperText="Helper text" options={options} disabled defaultValue="A" />
211
+ </HalstackProvider>
77
212
  </ExampleContainer>
78
213
  </>
79
214
  );