@dxc-technology/halstack-react 0.0.0-bd364ae → 0.0.0-bf1a0c9

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 (239) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1329 -5
  4. package/HalstackContext.js +117 -77
  5. package/accordion/Accordion.js +118 -110
  6. package/accordion/Accordion.stories.tsx +104 -16
  7. package/accordion/Accordion.test.js +10 -11
  8. package/accordion/types.d.ts +2 -1
  9. package/accordion-group/AccordionGroup.js +4 -23
  10. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  11. package/accordion-group/AccordionGroup.test.js +21 -46
  12. package/accordion-group/types.d.ts +8 -1
  13. package/alert/Alert.js +4 -6
  14. package/alert/Alert.stories.tsx +28 -0
  15. package/alert/Alert.test.js +1 -1
  16. package/bleed/Bleed.stories.tsx +64 -63
  17. package/box/Box.js +4 -6
  18. package/box/Box.stories.tsx +15 -0
  19. package/box/Box.test.js +1 -1
  20. package/box/types.d.ts +1 -0
  21. package/bulleted-list/BulletedList.d.ts +7 -0
  22. package/bulleted-list/BulletedList.js +123 -0
  23. package/bulleted-list/BulletedList.stories.tsx +200 -0
  24. package/bulleted-list/types.d.ts +11 -0
  25. package/button/Button.js +52 -73
  26. package/button/Button.stories.tsx +159 -8
  27. package/button/Button.test.js +1 -1
  28. package/button/types.d.ts +5 -5
  29. package/card/Card.js +12 -13
  30. package/card/Card.stories.tsx +12 -13
  31. package/card/Card.test.js +1 -1
  32. package/card/types.d.ts +1 -0
  33. package/checkbox/Checkbox.d.ts +2 -2
  34. package/checkbox/Checkbox.js +94 -101
  35. package/checkbox/Checkbox.stories.tsx +131 -59
  36. package/checkbox/Checkbox.test.js +94 -17
  37. package/checkbox/types.d.ts +4 -0
  38. package/chip/Chip.js +18 -26
  39. package/chip/Chip.stories.tsx +96 -9
  40. package/chip/Chip.test.js +3 -5
  41. package/chip/types.d.ts +1 -1
  42. package/common/OpenSans.css +68 -80
  43. package/common/coreTokens.d.ts +146 -0
  44. package/common/coreTokens.js +167 -0
  45. package/common/utils.d.ts +1 -0
  46. package/common/utils.js +4 -4
  47. package/common/variables.d.ts +1482 -0
  48. package/common/variables.js +1009 -1118
  49. package/date-input/Calendar.d.ts +4 -0
  50. package/date-input/Calendar.js +258 -0
  51. package/date-input/DateInput.js +134 -237
  52. package/date-input/DateInput.stories.tsx +199 -33
  53. package/date-input/DateInput.test.js +494 -138
  54. package/date-input/DatePicker.d.ts +4 -0
  55. package/date-input/DatePicker.js +146 -0
  56. package/date-input/Icons.d.ts +6 -0
  57. package/date-input/Icons.js +75 -0
  58. package/date-input/YearPicker.d.ts +4 -0
  59. package/date-input/YearPicker.js +126 -0
  60. package/date-input/types.d.ts +51 -0
  61. package/dialog/Dialog.js +80 -69
  62. package/dialog/Dialog.stories.tsx +230 -123
  63. package/dialog/Dialog.test.js +334 -5
  64. package/dialog/types.d.ts +1 -0
  65. package/dropdown/Dropdown.d.ts +1 -1
  66. package/dropdown/Dropdown.js +246 -249
  67. package/dropdown/Dropdown.stories.tsx +245 -56
  68. package/dropdown/Dropdown.test.js +507 -110
  69. package/dropdown/DropdownMenu.d.ts +4 -0
  70. package/dropdown/DropdownMenu.js +74 -0
  71. package/dropdown/DropdownMenuItem.d.ts +4 -0
  72. package/dropdown/DropdownMenuItem.js +79 -0
  73. package/dropdown/types.d.ts +23 -3
  74. package/file-input/FileInput.d.ts +2 -2
  75. package/file-input/FileInput.js +174 -220
  76. package/file-input/FileInput.stories.tsx +122 -11
  77. package/file-input/FileInput.test.js +14 -14
  78. package/file-input/FileItem.d.ts +4 -14
  79. package/file-input/FileItem.js +39 -63
  80. package/file-input/types.d.ts +17 -0
  81. package/flex/Flex.d.ts +4 -0
  82. package/flex/Flex.js +71 -0
  83. package/flex/Flex.stories.tsx +112 -0
  84. package/flex/types.d.ts +97 -0
  85. package/footer/Footer.js +6 -8
  86. package/footer/Footer.stories.tsx +99 -1
  87. package/footer/Footer.test.js +14 -26
  88. package/footer/Icons.js +1 -1
  89. package/footer/types.d.ts +2 -1
  90. package/grid/Grid.d.ts +7 -0
  91. package/grid/Grid.js +91 -0
  92. package/grid/Grid.stories.tsx +219 -0
  93. package/grid/types.d.ts +115 -0
  94. package/header/Header.d.ts +3 -2
  95. package/header/Header.js +89 -89
  96. package/header/Header.stories.tsx +152 -9
  97. package/header/Header.test.js +2 -2
  98. package/header/Icons.js +2 -2
  99. package/header/types.d.ts +1 -0
  100. package/heading/Heading.js +1 -1
  101. package/heading/Heading.test.js +1 -1
  102. package/inset/Inset.stories.tsx +5 -4
  103. package/layout/ApplicationLayout.d.ts +15 -6
  104. package/layout/ApplicationLayout.js +38 -66
  105. package/layout/ApplicationLayout.stories.tsx +80 -44
  106. package/layout/types.d.ts +18 -29
  107. package/link/Link.js +4 -4
  108. package/link/Link.stories.tsx +73 -6
  109. package/link/Link.test.js +2 -4
  110. package/link/types.d.ts +3 -3
  111. package/main.d.ts +7 -9
  112. package/main.js +33 -49
  113. package/{tabs-nav → nav-tabs}/NavTabs.js +6 -6
  114. package/{tabs-nav → nav-tabs}/NavTabs.stories.tsx +96 -6
  115. package/{tabs-nav → nav-tabs}/NavTabs.test.js +1 -1
  116. package/{tabs-nav → nav-tabs}/Tab.js +40 -22
  117. package/{tabs-nav → nav-tabs}/types.d.ts +1 -1
  118. package/number-input/NumberInput.test.js +44 -8
  119. package/package.json +17 -21
  120. package/paginator/Icons.d.ts +5 -0
  121. package/paginator/Icons.js +16 -28
  122. package/paginator/Paginator.js +7 -15
  123. package/paginator/Paginator.stories.tsx +24 -0
  124. package/paginator/Paginator.test.js +78 -39
  125. package/paragraph/Paragraph.d.ts +5 -0
  126. package/paragraph/Paragraph.js +38 -0
  127. package/paragraph/Paragraph.stories.tsx +44 -0
  128. package/password-input/PasswordInput.test.js +14 -13
  129. package/progress-bar/ProgressBar.js +60 -54
  130. package/progress-bar/ProgressBar.stories.jsx +38 -3
  131. package/progress-bar/ProgressBar.test.js +68 -23
  132. package/quick-nav/QuickNav.js +23 -18
  133. package/quick-nav/QuickNav.stories.tsx +145 -26
  134. package/radio-group/Radio.d.ts +1 -1
  135. package/radio-group/Radio.js +43 -28
  136. package/radio-group/RadioGroup.js +23 -22
  137. package/radio-group/RadioGroup.stories.tsx +132 -18
  138. package/radio-group/RadioGroup.test.js +124 -97
  139. package/radio-group/types.d.ts +2 -2
  140. package/resultsetTable/Icons.d.ts +7 -0
  141. package/resultsetTable/Icons.js +51 -0
  142. package/resultsetTable/ResultsetTable.js +49 -108
  143. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  144. package/resultsetTable/ResultsetTable.test.js +61 -42
  145. package/resultsetTable/types.d.ts +1 -1
  146. package/select/Listbox.d.ts +1 -1
  147. package/select/Listbox.js +33 -16
  148. package/select/Option.js +11 -24
  149. package/select/Select.js +92 -71
  150. package/select/Select.stories.tsx +513 -136
  151. package/select/Select.test.js +413 -305
  152. package/select/types.d.ts +3 -6
  153. package/sidenav/Icons.d.ts +7 -0
  154. package/sidenav/Icons.js +51 -0
  155. package/sidenav/Sidenav.d.ts +6 -5
  156. package/sidenav/Sidenav.js +147 -54
  157. package/sidenav/Sidenav.stories.tsx +251 -151
  158. package/sidenav/Sidenav.test.js +25 -37
  159. package/sidenav/types.d.ts +52 -26
  160. package/slider/Slider.d.ts +2 -2
  161. package/slider/Slider.js +121 -97
  162. package/slider/Slider.stories.tsx +64 -1
  163. package/slider/Slider.test.js +122 -22
  164. package/slider/types.d.ts +4 -0
  165. package/spinner/Spinner.js +17 -23
  166. package/spinner/Spinner.stories.jsx +53 -27
  167. package/spinner/Spinner.test.js +1 -1
  168. package/switch/Switch.d.ts +2 -2
  169. package/switch/Switch.js +137 -70
  170. package/switch/Switch.stories.tsx +41 -30
  171. package/switch/Switch.test.js +145 -18
  172. package/switch/types.d.ts +4 -0
  173. package/table/Table.js +3 -3
  174. package/table/Table.stories.jsx +80 -1
  175. package/table/Table.test.js +2 -2
  176. package/tabs/Tab.d.ts +4 -0
  177. package/tabs/Tab.js +132 -0
  178. package/tabs/Tabs.js +358 -108
  179. package/tabs/Tabs.stories.tsx +119 -5
  180. package/tabs/Tabs.test.js +220 -10
  181. package/tabs/types.d.ts +13 -3
  182. package/tag/Tag.js +8 -10
  183. package/tag/Tag.stories.tsx +14 -1
  184. package/tag/Tag.test.js +1 -1
  185. package/tag/types.d.ts +1 -1
  186. package/text-input/Icons.d.ts +8 -0
  187. package/text-input/Icons.js +60 -0
  188. package/text-input/Suggestion.js +40 -11
  189. package/text-input/Suggestions.d.ts +4 -0
  190. package/text-input/Suggestions.js +134 -0
  191. package/text-input/TextInput.js +198 -295
  192. package/text-input/TextInput.stories.tsx +280 -185
  193. package/text-input/TextInput.test.js +736 -725
  194. package/text-input/types.d.ts +22 -3
  195. package/textarea/Textarea.js +3 -4
  196. package/textarea/Textarea.stories.jsx +60 -1
  197. package/textarea/Textarea.test.js +2 -4
  198. package/toggle-group/ToggleGroup.js +7 -4
  199. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  200. package/toggle-group/ToggleGroup.test.js +1 -1
  201. package/toggle-group/types.d.ts +2 -2
  202. package/typography/Typography.d.ts +4 -0
  203. package/typography/Typography.js +32 -0
  204. package/typography/Typography.stories.tsx +198 -0
  205. package/typography/types.d.ts +18 -0
  206. package/typography/types.js +5 -0
  207. package/useTheme.d.ts +1234 -1
  208. package/useTheme.js +1 -1
  209. package/useTranslatedLabels.d.ts +84 -1
  210. package/utils/BaseTypography.d.ts +21 -0
  211. package/utils/BaseTypography.js +108 -0
  212. package/utils/FocusLock.d.ts +13 -0
  213. package/utils/FocusLock.js +139 -0
  214. package/wizard/Wizard.js +10 -17
  215. package/wizard/Wizard.stories.tsx +40 -1
  216. package/wizard/Wizard.test.js +1 -1
  217. package/wizard/types.d.ts +3 -3
  218. package/common/RequiredComponent.js +0 -32
  219. package/list/List.d.ts +0 -4
  220. package/list/List.js +0 -47
  221. package/list/List.stories.tsx +0 -95
  222. package/list/types.d.ts +0 -7
  223. package/row/Row.d.ts +0 -3
  224. package/row/Row.js +0 -127
  225. package/row/Row.stories.tsx +0 -237
  226. package/row/types.d.ts +0 -28
  227. package/stack/Stack.d.ts +0 -3
  228. package/stack/Stack.js +0 -97
  229. package/stack/Stack.stories.tsx +0 -164
  230. package/stack/types.d.ts +0 -24
  231. package/text/Text.d.ts +0 -7
  232. package/text/Text.js +0 -30
  233. package/text/Text.stories.tsx +0 -19
  234. /package/{list → bulleted-list}/types.js +0 -0
  235. /package/{row → flex}/types.js +0 -0
  236. /package/{stack → grid}/types.js +0 -0
  237. /package/{tabs-nav → nav-tabs}/NavTabs.d.ts +0 -0
  238. /package/{tabs-nav → nav-tabs}/Tab.d.ts +0 -0
  239. /package/{tabs-nav → nav-tabs}/types.js +0 -0
@@ -28,10 +28,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
28
28
  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; }
29
29
 
30
30
  var DxcRadio = function DxcRadio(_ref) {
31
- var _option$disabled;
32
-
33
- var option = _ref.option,
34
- currentValue = _ref.currentValue,
31
+ var label = _ref.label,
32
+ checked = _ref.checked,
35
33
  onClick = _ref.onClick,
36
34
  error = _ref.error,
37
35
  disabled = _ref.disabled,
@@ -50,7 +48,7 @@ var DxcRadio = function DxcRadio(_ref) {
50
48
  var _ref$current;
51
49
 
52
50
  onClick();
53
- focused && document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
51
+ document.activeElement !== (ref === null || ref === void 0 ? void 0 : ref.current) && (ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus());
54
52
  };
55
53
 
56
54
  var _useState3 = (0, _react.useState)(true),
@@ -75,52 +73,57 @@ var DxcRadio = function DxcRadio(_ref) {
75
73
  error: error,
76
74
  disabled: disabled,
77
75
  readonly: readonly,
78
- onMouseDown: function onMouseDown(event) {
79
- // Prevents div's onClick from stealing the radio input's focus
80
- event.preventDefault();
81
- },
82
- onClick: handleOnClick
76
+ onClick: disabled ? undefined : handleOnClick
83
77
  }, /*#__PURE__*/_react["default"].createElement(RadioInputContainer, null, /*#__PURE__*/_react["default"].createElement(RadioInput, {
84
78
  error: error,
85
79
  disabled: disabled,
86
80
  readonly: readonly,
87
81
  role: "radio",
88
- "aria-checked": option.value === currentValue,
89
- "aria-disabled": (_option$disabled = option.disabled) !== null && _option$disabled !== void 0 ? _option$disabled : false,
82
+ "aria-checked": checked,
83
+ "aria-disabled": disabled,
90
84
  "aria-labelledby": radioLabelId,
91
85
  tabIndex: disabled ? -1 : focused ? tabIndex : -1,
92
86
  ref: ref
93
- }, option.value === currentValue && /*#__PURE__*/_react["default"].createElement(Dot, {
87
+ }, checked && /*#__PURE__*/_react["default"].createElement(Dot, {
94
88
  disabled: disabled,
95
89
  readonly: readonly,
96
90
  error: error
97
91
  }))), /*#__PURE__*/_react["default"].createElement(Label, {
98
92
  id: radioLabelId,
99
93
  disabled: disabled
100
- }, option.label))));
94
+ }, label))));
101
95
  };
102
96
 
103
- var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
97
+ var getRadioInputStateColor = function getRadioInputStateColor(props, state) {
98
+ switch (state) {
99
+ case "enabled":
100
+ return props.disabled ? props.theme.disabledRadioInputColor : props.error ? props.theme.errorRadioInputColor : props.readonly ? props.theme.readonlyRadioInputColor : props.theme.radioInputColor;
104
101
 
105
- var RadioContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n ", "\n"])), function (props) {
106
- return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
107
- }, function (props) {
108
- return !props.disabled ? "\n &:hover {\n & > div > div { \n border-color: ".concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor, ";\n }\n };\n }\n &:active {\n & > div > div {\n border-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n & > span {\n background-color: ").concat(props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor, ";\n }\n }\n }\n ") : "pointer-events: none;";
109
- });
102
+ case "hover":
103
+ return props.error ? props.theme.hoverErrorRadioInputColor : props.readonly ? props.theme.hoverReadonlyRadioInputColor : props.theme.hoverRadioInputColor;
110
104
 
111
- var RadioInputContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
105
+ case "active":
106
+ return props.error ? props.theme.activeErrorRadioInputColor : props.readonly ? props.theme.activeReadonlyRadioInputColor : props.theme.activeRadioInputColor;
107
+ }
108
+ };
112
109
 
113
- var RadioInput = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 18px;\n height: 18px;\n border: 2px solid\n ", ";\n border-radius: 50%;\n\n ", "\n"])), function (props) {
114
- if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
110
+ var RadioMainContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n"])));
111
+
112
+ var RadioInputContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n width: 24px;\n"])));
113
+
114
+ var RadioInput = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border: 2px solid ", ";\n border-radius: 50%;\n\n &:focus {\n outline: 2px solid ", ";\n outline-offset: 1px;\n }\n ", "\n"])), function (props) {
115
+ return getRadioInputStateColor(props, "enabled");
116
+ }, function (props) {
117
+ return props.theme.focusBorderColor;
115
118
  }, function (props) {
116
- return !props.disabled ? "&:focus {\n outline: 2px solid ".concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n &:focus-visible {\n outline: 2px solid ").concat(props.theme.focusBorderColor, ";\n outline-offset: 1px;\n }\n ") : "\n :focus-visible {\n outline: none;\n }\n ";
119
+ return props.disabled && "pointer-events: none;";
117
120
  });
118
121
 
119
- var Dot = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
120
- if (props.disabled) return props.theme.disabledRadioInputColor;else if (props.error) return props.theme.errorRadioInputColor;else if (props.readonly) return props.theme.readonlyRadioInputColor;else return props.theme.radioInputColor;
122
+ var Dot = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background-color: ", ";\n"])), function (props) {
123
+ return getRadioInputStateColor(props, "enabled");
121
124
  });
122
125
 
123
- var Label = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
126
+ var Label = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n margin-left: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n ", "\n"])), function (props) {
124
127
  return props.theme.radioInputLabelMargin;
125
128
  }, function (props) {
126
129
  return props.theme.fontFamily;
@@ -133,7 +136,19 @@ var Label = _styledComponents["default"].span(_templateObject6 || (_templateObje
133
136
  }, function (props) {
134
137
  return props.theme.radioInputLabelLineHeight;
135
138
  }, function (props) {
136
- return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, "; pointer-events: none;") : "color: ".concat(props.theme.radioInputLabelFontColor);
139
+ return props.disabled ? "color: ".concat(props.theme.disabledRadioInputLabelFontColor, ";") : "color: ".concat(props.theme.radioInputLabelFontColor);
140
+ });
141
+
142
+ var RadioContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n align-items: center;\n cursor: ", ";\n\n &:hover {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n &:active {\n ", " {\n border-color: ", ";\n }\n ", " {\n background-color: ", ";\n }\n }\n"])), function (props) {
143
+ return props.disabled ? "not-allowed" : props.readonly ? "default" : "pointer";
144
+ }, RadioInput, function (props) {
145
+ return !props.disabled && getRadioInputStateColor(props, "hover");
146
+ }, Dot, function (props) {
147
+ return !props.disabled && getRadioInputStateColor(props, "hover");
148
+ }, RadioInput, function (props) {
149
+ return !props.disabled && getRadioInputStateColor(props, "active");
150
+ }, Dot, function (props) {
151
+ return !props.disabled && getRadioInputStateColor(props, "active");
137
152
  });
138
153
 
139
154
  var _default = /*#__PURE__*/_react["default"].memo(DxcRadio);
@@ -41,6 +41,8 @@ var getInitialFocusIndex = function getInitialFocusIndex(innerOptions, value) {
41
41
  };
42
42
 
43
43
  var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
44
+ var _ref2;
45
+
44
46
  var label = _ref.label,
45
47
  name = _ref.name,
46
48
  helperText = _ref.helperText,
@@ -102,11 +104,11 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
102
104
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
103
105
  onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
104
106
  }
105
- }, [value, innerValue, setInnerValue, onChange]);
107
+ }, [value, innerValue, onChange]);
106
108
 
107
- var handleOnBlur = function handleOnBlur(e) {
109
+ var handleOnBlur = function handleOnBlur(event) {
108
110
  // If the radio group loses the focus to an element not contained inside it...
109
- if (!e.currentTarget.contains(e.relatedTarget)) {
111
+ if (!event.currentTarget.contains(event.relatedTarget)) {
110
112
  setFirstTimeFocus(true);
111
113
  var currentValue = value !== null && value !== void 0 ? value : innerValue;
112
114
  !optional && !Boolean(currentValue) ? onBlur === null || onBlur === void 0 ? void 0 : onBlur({
@@ -149,27 +151,24 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
149
151
  };
150
152
 
151
153
  var handleOnKeyDown = function handleOnKeyDown(event) {
152
- switch (event.keyCode) {
153
- case 37: // arrow left
154
-
155
- case 38:
156
- // arrow up
154
+ switch (event.key) {
155
+ case "Left":
156
+ case "ArrowLeft":
157
+ case "Up":
158
+ case "ArrowUp":
157
159
  event.preventDefault();
158
160
  setPreviousRadioChecked();
159
161
  break;
160
162
 
161
- case 39: // arrow right
162
-
163
- case 40:
164
- // arrow down
163
+ case "Right":
164
+ case "ArrowRight":
165
+ case "Down":
166
+ case "ArrowDown":
165
167
  event.preventDefault();
166
168
  setNextRadioChecked();
167
169
  break;
168
170
 
169
- case 13: // enter
170
-
171
- case 32:
172
- // space
171
+ case " ":
173
172
  event.preventDefault();
174
173
  handleOnChange(innerOptions[currentFocusIndex].value);
175
174
  break;
@@ -184,7 +183,7 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
184
183
  id: radioGroupLabelId,
185
184
  helperText: helperText,
186
185
  disabled: disabled
187
- }, label, " ", optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, translatedLabels.formFields.optionalLabel)), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
186
+ }, label, optional && /*#__PURE__*/_react["default"].createElement(OptionalLabel, null, " ".concat(translatedLabels.formFields.optionalLabel))), helperText && /*#__PURE__*/_react["default"].createElement(HelperText, {
188
187
  disabled: disabled
189
188
  }, helperText), /*#__PURE__*/_react["default"].createElement(RadioGroup, {
190
189
  onBlur: handleOnBlur,
@@ -194,20 +193,22 @@ var DxcRadioGroup = /*#__PURE__*/_react["default"].forwardRef(function (_ref, re
194
193
  role: "radiogroup",
195
194
  "aria-disabled": disabled,
196
195
  "aria-labelledby": radioGroupLabelId,
197
- "aria-invalid": error ? "true" : "false",
196
+ "aria-invalid": error ? true : false,
198
197
  "aria-errormessage": error ? errorId : undefined,
199
198
  "aria-required": !disabled && !readonly && !optional,
200
199
  "aria-readonly": readonly,
201
200
  "aria-orientation": stacking === "column" ? "vertical" : "horizontal"
202
201
  }, /*#__PURE__*/_react["default"].createElement(ValueInput, {
203
202
  name: name,
204
- value: value !== null && value !== void 0 ? value : innerValue,
203
+ disabled: disabled,
204
+ value: (_ref2 = value !== null && value !== void 0 ? value : innerValue) !== null && _ref2 !== void 0 ? _ref2 : "",
205
205
  readOnly: true,
206
206
  "aria-hidden": "true"
207
207
  }), innerOptions.map(function (option, index) {
208
208
  return /*#__PURE__*/_react["default"].createElement(_Radio["default"], {
209
- option: option,
210
- currentValue: value !== null && value !== void 0 ? value : innerValue,
209
+ key: "radio-".concat(index),
210
+ label: option.label,
211
+ checked: (value !== null && value !== void 0 ? value : innerValue) === option.value,
211
212
  onClick: function onClick() {
212
213
  handleOnChange(option.value);
213
214
  setCurrentFocusIndex(index);
@@ -262,7 +263,7 @@ var HelperText = _styledComponents["default"].span(_templateObject4 || (_templat
262
263
  return props.theme.groupLabelMargin;
263
264
  });
264
265
 
265
- 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) {
266
+ 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) {
266
267
  return props.stacking;
267
268
  }, function (props) {
268
269
  return props.theme.groupVerticalGutter;
@@ -1,6 +1,8 @@
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",
@@ -18,83 +20,195 @@ const options = [
18
20
 
19
21
  const single_disabled_options = [{ label: "Option A", value: "A", disabled: true }];
20
22
 
23
+ const opinionatedTheme = {
24
+ radioGroup: {
25
+ baseColor: "#0086e6",
26
+ fontColor: "#000000",
27
+ },
28
+ };
29
+
21
30
  export const Chromatic = () => (
22
31
  <>
23
32
  <Title title="Radio input states" theme="light" level={2} />
24
33
  <ExampleContainer>
25
34
  <Title title="Enabled" theme="light" level={4} />
26
- <DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
35
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
27
36
  </ExampleContainer>
28
37
  <ExampleContainer pseudoState="pseudo-hover">
29
38
  <Title title="Hovered" theme="light" level={4} />
30
- <DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
39
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
31
40
  </ExampleContainer>
32
41
  <ExampleContainer pseudoState="pseudo-active">
33
42
  <Title title="Active" theme="light" level={4} />
34
- <DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
43
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
35
44
  </ExampleContainer>
36
45
  <ExampleContainer pseudoState="pseudo-focus">
37
46
  <Title title="Focused" theme="light" level={4} />
38
- <DxcRadioGroup label="Example" defaultValue="A" options={single_option} />
47
+ <DxcRadioGroup label="Label" helperText="Helper text" defaultValue="A" options={single_option} />
39
48
  </ExampleContainer>
40
49
  <ExampleContainer>
41
50
  <Title title="Disabled" theme="light" level={4} />
42
- <DxcRadioGroup label="Example" options={single_disabled_options} defaultValue="A" />
51
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_disabled_options} defaultValue="A" />
43
52
  </ExampleContainer>
44
53
  <Title title="Readonly radio input sub-states" theme="light" level={3} />
45
54
  <ExampleContainer>
46
55
  <Title title="Enabled" theme="light" level={4} />
47
- <DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
56
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
48
57
  </ExampleContainer>
49
58
  <ExampleContainer pseudoState="pseudo-hover">
50
59
  <Title title="Hovered" theme="light" level={4} />
51
- <DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
60
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
52
61
  </ExampleContainer>
53
62
  <ExampleContainer pseudoState="pseudo-active">
54
63
  <Title title="Active" theme="light" level={4} />
55
- <DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly />
64
+ <DxcRadioGroup label="Label" helperText="Helper text" options={single_option} defaultValue="A" readonly />
56
65
  </ExampleContainer>
57
66
  <Title title="Error radio input sub-states" theme="light" level={3} />
58
67
  <ExampleContainer>
59
68
  <Title title="Enabled" theme="light" level={4} />
60
- <DxcRadioGroup label="Example" options={single_option} defaultValue="A" error="Error message" />
69
+ <DxcRadioGroup
70
+ label="Label"
71
+ helperText="Helper text"
72
+ options={single_option}
73
+ defaultValue="A"
74
+ error="Error message"
75
+ />
61
76
  </ExampleContainer>
62
77
  <ExampleContainer pseudoState="pseudo-hover">
63
78
  <Title title="Hovered" theme="light" level={4} />
64
- <DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly error="Error message" />
79
+ <DxcRadioGroup
80
+ label="Label"
81
+ helperText="Helper text"
82
+ options={single_option}
83
+ defaultValue="A"
84
+ readonly
85
+ error="Error message"
86
+ />
65
87
  </ExampleContainer>
66
88
  <ExampleContainer pseudoState="pseudo-active">
67
89
  <Title title="Active" theme="light" level={4} />
68
- <DxcRadioGroup label="Example" options={single_option} defaultValue="A" readonly error="Error message" />
90
+ <DxcRadioGroup
91
+ label="Label"
92
+ helperText="Helper text"
93
+ options={single_option}
94
+ defaultValue="A"
95
+ readonly
96
+ error="Error message"
97
+ />
69
98
  </ExampleContainer>
70
99
  <Title title="Variants" theme="light" level={2} />
71
100
  <ExampleContainer>
72
101
  <Title title="Column" theme="light" level={4} />
73
- <DxcRadioGroup label="Example" helperText="Helper text" options={options} />
102
+ <DxcRadioGroup label="Label" helperText="Helper text" options={options} />
74
103
  </ExampleContainer>
75
104
  <ExampleContainer>
76
105
  <Title title="Row" theme="light" level={4} />
77
- <DxcRadioGroup label="Example" helperText="Helper text" options={options} stacking="row" />
106
+ <DxcRadioGroup label="Label" helperText="Helper text" options={options} stacking="row" />
78
107
  </ExampleContainer>
79
108
  <ExampleContainer>
80
109
  <Title title="Optional" theme="light" level={4} />
81
- <DxcRadioGroup label="Example" optional helperText="Helper text" options={options} stacking="row" />
110
+ <DxcRadioGroup label="Label" optional helperText="Helper text" options={options} stacking="row" />
82
111
  </ExampleContainer>
83
112
  <ExampleContainer>
84
113
  <Title title="Disabled" theme="light" level={4} />
85
- <DxcRadioGroup label="Example" helperText="Helper text" options={options} disabled />
114
+ <DxcRadioGroup label="Label" helperText="Helper text" options={options} disabled />
86
115
  </ExampleContainer>
87
116
  <ExampleContainer>
88
117
  <Title title="Readonly" theme="light" level={4} />
89
- <DxcRadioGroup label="Example" readonly helperText="Helper text" options={options} />
118
+ <DxcRadioGroup label="Label" readonly helperText="Helper text" options={options} />
90
119
  </ExampleContainer>
91
120
  <ExampleContainer>
92
121
  <Title title="Error space reserved" theme="light" level={4} />
93
- <DxcRadioGroup label="Example" error="" helperText="Helper text" options={options} />
122
+ <DxcRadioGroup label="Label" error="" helperText="Helper text" options={options} />
94
123
  </ExampleContainer>
95
124
  <ExampleContainer>
96
125
  <Title title="Error" theme="light" level={4} />
97
- <DxcRadioGroup label="Example" error="Error message" helperText="Helper text" options={options} />
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>
98
212
  </ExampleContainer>
99
213
  </>
100
214
  );