@dxc-technology/halstack-react 10.0.0 → 11.0.0

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 (219) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +5 -17
  3. package/HalstackContext.d.ts +26 -6
  4. package/HalstackContext.js +9 -34
  5. package/README.md +47 -0
  6. package/accordion/Accordion.js +21 -58
  7. package/accordion/Accordion.stories.tsx +1 -15
  8. package/accordion/Accordion.test.js +18 -33
  9. package/accordion/types.d.ts +5 -5
  10. package/accordion-group/AccordionGroup.js +15 -42
  11. package/accordion-group/AccordionGroup.stories.tsx +1 -1
  12. package/accordion-group/AccordionGroup.test.js +42 -60
  13. package/accordion-group/AccordionGroupAccordion.js +9 -21
  14. package/accordion-group/types.d.ts +6 -6
  15. package/alert/Alert.js +14 -46
  16. package/alert/Alert.test.js +28 -45
  17. package/alert/types.d.ts +5 -5
  18. package/badge/Badge.js +4 -17
  19. package/badge/types.d.ts +1 -1
  20. package/bleed/Bleed.js +13 -21
  21. package/bleed/types.d.ts +2 -2
  22. package/box/Box.js +10 -29
  23. package/box/Box.test.js +1 -6
  24. package/box/types.d.ts +3 -3
  25. package/bulleted-list/BulletedList.js +7 -33
  26. package/bulleted-list/BulletedList.stories.tsx +1 -91
  27. package/bulleted-list/types.d.ts +5 -5
  28. package/button/Button.js +23 -46
  29. package/button/Button.stories.tsx +5 -86
  30. package/button/Button.test.js +11 -21
  31. package/button/types.d.ts +4 -4
  32. package/card/Card.js +21 -44
  33. package/card/Card.test.js +10 -21
  34. package/card/types.d.ts +5 -5
  35. package/checkbox/Checkbox.js +81 -111
  36. package/checkbox/Checkbox.stories.tsx +16 -54
  37. package/checkbox/Checkbox.test.js +107 -63
  38. package/checkbox/types.d.ts +8 -4
  39. package/chip/Chip.js +12 -31
  40. package/chip/Chip.test.js +15 -28
  41. package/chip/types.d.ts +4 -4
  42. package/common/coreTokens.js +1 -2
  43. package/common/utils.js +2 -8
  44. package/common/variables.d.ts +23 -6
  45. package/common/variables.js +25 -15
  46. package/date-input/Calendar.js +13 -57
  47. package/date-input/DateInput.js +50 -96
  48. package/date-input/DateInput.stories.tsx +11 -30
  49. package/date-input/DateInput.test.js +674 -701
  50. package/date-input/DatePicker.js +11 -42
  51. package/date-input/Icons.d.ts +6 -6
  52. package/date-input/Icons.js +6 -23
  53. package/date-input/YearPicker.js +8 -34
  54. package/date-input/types.d.ts +27 -21
  55. package/dialog/Dialog.js +11 -35
  56. package/dialog/Dialog.test.js +125 -187
  57. package/dialog/types.d.ts +18 -13
  58. package/dropdown/Dropdown.js +39 -93
  59. package/dropdown/Dropdown.test.js +391 -378
  60. package/dropdown/DropdownMenu.js +8 -19
  61. package/dropdown/DropdownMenuItem.js +5 -17
  62. package/dropdown/types.d.ts +17 -19
  63. package/file-input/FileInput.js +131 -220
  64. package/file-input/FileInput.stories.tsx +1 -1
  65. package/file-input/FileInput.test.js +293 -342
  66. package/file-input/FileItem.js +12 -39
  67. package/file-input/types.d.ts +9 -9
  68. package/flex/Flex.js +25 -39
  69. package/flex/types.d.ts +6 -6
  70. package/footer/Footer.js +9 -39
  71. package/footer/Footer.stories.tsx +8 -7
  72. package/footer/Footer.test.js +18 -32
  73. package/footer/Icons.d.ts +2 -2
  74. package/footer/Icons.js +2 -7
  75. package/footer/types.d.ts +13 -13
  76. package/grid/Grid.js +1 -16
  77. package/grid/types.d.ts +10 -10
  78. package/header/Header.d.ts +1 -1
  79. package/header/Header.js +19 -64
  80. package/header/Header.test.js +12 -25
  81. package/header/Icons.d.ts +2 -2
  82. package/header/Icons.js +2 -7
  83. package/header/types.d.ts +5 -7
  84. package/heading/Heading.js +9 -31
  85. package/heading/Heading.test.js +70 -87
  86. package/heading/types.d.ts +7 -7
  87. package/image/Image.d.ts +4 -0
  88. package/image/Image.js +70 -0
  89. package/image/Image.stories.tsx +127 -0
  90. package/image/types.d.ts +72 -0
  91. package/inset/Inset.js +13 -21
  92. package/inset/types.d.ts +2 -2
  93. package/layout/ApplicationLayout.d.ts +1 -1
  94. package/layout/ApplicationLayout.js +25 -65
  95. package/layout/ApplicationLayout.stories.tsx +1 -1
  96. package/layout/Icons.d.ts +8 -5
  97. package/layout/Icons.js +51 -59
  98. package/layout/SidenavContext.d.ts +1 -1
  99. package/layout/SidenavContext.js +3 -9
  100. package/layout/types.d.ts +3 -3
  101. package/link/Link.js +21 -42
  102. package/link/Link.test.js +23 -41
  103. package/link/types.d.ts +14 -14
  104. package/main.d.ts +3 -2
  105. package/main.js +10 -51
  106. package/nav-tabs/NavTabs.js +11 -43
  107. package/nav-tabs/NavTabs.stories.tsx +1 -1
  108. package/nav-tabs/NavTabs.test.js +36 -43
  109. package/nav-tabs/Tab.js +16 -45
  110. package/nav-tabs/types.d.ts +9 -9
  111. package/number-input/NumberInput.d.ts +7 -0
  112. package/number-input/NumberInput.js +26 -35
  113. package/number-input/NumberInput.stories.tsx +42 -26
  114. package/number-input/NumberInput.test.js +700 -412
  115. package/number-input/types.d.ts +11 -5
  116. package/package.json +28 -26
  117. package/paginator/Icons.d.ts +5 -5
  118. package/paginator/Icons.js +5 -19
  119. package/paginator/Paginator.js +14 -39
  120. package/paginator/Paginator.test.js +224 -207
  121. package/paginator/types.d.ts +3 -3
  122. package/paragraph/Paragraph.js +3 -14
  123. package/paragraph/Paragraph.stories.tsx +0 -17
  124. package/password-input/Icons.d.ts +6 -0
  125. package/password-input/Icons.js +35 -0
  126. package/password-input/PasswordInput.js +57 -126
  127. package/password-input/PasswordInput.stories.tsx +1 -32
  128. package/password-input/PasswordInput.test.js +157 -140
  129. package/password-input/types.d.ts +8 -7
  130. package/progress-bar/ProgressBar.js +16 -42
  131. package/progress-bar/{ProgressBar.stories.jsx → ProgressBar.stories.tsx} +1 -1
  132. package/progress-bar/ProgressBar.test.js +35 -52
  133. package/progress-bar/types.d.ts +3 -3
  134. package/quick-nav/QuickNav.js +4 -27
  135. package/quick-nav/QuickNav.stories.tsx +1 -1
  136. package/quick-nav/types.d.ts +10 -10
  137. package/radio-group/Radio.d.ts +1 -1
  138. package/radio-group/Radio.js +22 -54
  139. package/radio-group/RadioGroup.js +37 -83
  140. package/radio-group/RadioGroup.stories.tsx +10 -10
  141. package/radio-group/RadioGroup.test.js +504 -470
  142. package/radio-group/types.d.ts +8 -8
  143. package/resultset-table/Icons.d.ts +7 -0
  144. package/{resultsetTable → resultset-table}/Icons.js +1 -5
  145. package/{resultsetTable → resultset-table}/ResultsetTable.js +22 -58
  146. package/{resultsetTable → resultset-table}/ResultsetTable.test.js +72 -92
  147. package/{resultsetTable → resultset-table}/types.d.ts +7 -7
  148. package/select/Icons.d.ts +7 -7
  149. package/select/Icons.js +1 -5
  150. package/select/Listbox.js +13 -39
  151. package/select/Option.js +9 -26
  152. package/select/Select.js +54 -138
  153. package/select/Select.stories.tsx +3 -3
  154. package/select/Select.test.js +1906 -1800
  155. package/select/types.d.ts +14 -15
  156. package/sidenav/Icons.d.ts +4 -4
  157. package/sidenav/Icons.js +1 -5
  158. package/sidenav/Sidenav.js +24 -63
  159. package/sidenav/Sidenav.test.js +3 -10
  160. package/sidenav/types.d.ts +18 -18
  161. package/slider/Slider.js +38 -86
  162. package/slider/Slider.test.js +107 -103
  163. package/slider/types.d.ts +4 -4
  164. package/spinner/Spinner.js +10 -40
  165. package/spinner/Spinner.test.js +25 -34
  166. package/spinner/types.d.ts +3 -3
  167. package/switch/Switch.js +26 -69
  168. package/switch/Switch.stories.tsx +0 -34
  169. package/switch/Switch.test.js +51 -96
  170. package/switch/types.d.ts +4 -4
  171. package/table/Table.js +4 -23
  172. package/table/Table.test.js +1 -6
  173. package/table/types.d.ts +8 -8
  174. package/tabs/Tab.js +10 -29
  175. package/tabs/Tabs.js +48 -124
  176. package/tabs/Tabs.test.js +62 -118
  177. package/tabs/types.d.ts +19 -19
  178. package/tag/Tag.js +21 -51
  179. package/tag/Tag.test.js +19 -30
  180. package/tag/types.d.ts +7 -7
  181. package/text-input/Icons.d.ts +5 -5
  182. package/text-input/Icons.js +1 -5
  183. package/text-input/Suggestion.js +9 -26
  184. package/text-input/Suggestions.d.ts +1 -1
  185. package/text-input/Suggestions.js +12 -57
  186. package/text-input/TextInput.js +182 -263
  187. package/text-input/TextInput.stories.tsx +48 -152
  188. package/text-input/TextInput.test.js +1210 -1194
  189. package/text-input/types.d.ts +25 -17
  190. package/textarea/Textarea.js +60 -96
  191. package/textarea/{Textarea.stories.jsx → Textarea.stories.tsx} +58 -99
  192. package/textarea/Textarea.test.js +150 -179
  193. package/textarea/types.d.ts +9 -5
  194. package/toggle-group/ToggleGroup.js +91 -105
  195. package/toggle-group/ToggleGroup.stories.tsx +7 -4
  196. package/toggle-group/ToggleGroup.test.js +68 -87
  197. package/toggle-group/types.d.ts +26 -17
  198. package/typography/Typography.js +4 -13
  199. package/typography/types.d.ts +1 -1
  200. package/useTheme.d.ts +20 -3
  201. package/useTheme.js +1 -8
  202. package/useTranslatedLabels.js +1 -7
  203. package/utils/BaseTypography.d.ts +2 -2
  204. package/utils/BaseTypography.js +16 -30
  205. package/utils/FocusLock.js +12 -36
  206. package/wizard/Wizard.js +14 -49
  207. package/wizard/Wizard.test.js +53 -80
  208. package/wizard/types.d.ts +6 -6
  209. package/number-input/NumberInputContext.d.ts +0 -4
  210. package/number-input/NumberInputContext.js +0 -19
  211. package/number-input/numberInputContextTypes.d.ts +0 -19
  212. package/resultsetTable/Icons.d.ts +0 -7
  213. package/slider/Slider.stories.tsx +0 -240
  214. /package/{resultsetTable → image}/types.js +0 -0
  215. /package/{resultsetTable → resultset-table}/ResultsetTable.d.ts +0 -0
  216. /package/{resultsetTable → resultset-table}/ResultsetTable.stories.tsx +0 -0
  217. /package/{number-input/numberInputContextTypes.js → resultset-table/types.js} +0 -0
  218. /package/spinner/{Spinner.stories.jsx → Spinner.stories.tsx} +0 -0
  219. /package/table/{Table.stories.jsx → Table.stories.tsx} +0 -0
@@ -1,142 +1,131 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _typeof3 = 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 _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
-
14
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
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 _variables = require("../common/variables");
25
-
26
16
  var _useTheme = _interopRequireDefault(require("../useTheme"));
27
-
28
17
  var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
29
-
30
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
31
-
32
- 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); }
33
-
34
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
-
18
+ var _Flex = _interopRequireDefault(require("../flex/Flex"));
19
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
36
22
  var DxcToggleGroup = function DxcToggleGroup(_ref) {
37
23
  var label = _ref.label,
38
- helperText = _ref.helperText,
39
- defaultValue = _ref.defaultValue,
40
- value = _ref.value,
41
- onChange = _ref.onChange,
42
- _ref$disabled = _ref.disabled,
43
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
44
- options = _ref.options,
45
- margin = _ref.margin,
46
- _ref$multiple = _ref.multiple,
47
- multiple = _ref$multiple === void 0 ? false : _ref$multiple,
48
- _ref$tabIndex = _ref.tabIndex,
49
- tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
24
+ helperText = _ref.helperText,
25
+ defaultValue = _ref.defaultValue,
26
+ value = _ref.value,
27
+ onChange = _ref.onChange,
28
+ _ref$disabled = _ref.disabled,
29
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
30
+ options = _ref.options,
31
+ margin = _ref.margin,
32
+ _ref$multiple = _ref.multiple,
33
+ multiple = _ref$multiple === void 0 ? false : _ref$multiple,
34
+ _ref$tabIndex = _ref.tabIndex,
35
+ tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
36
+ var _useState = (0, _react.useState)("label-toggle-group-".concat((0, _uuid.v4)())),
37
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
38
+ toggleGroupLabelId = _useState2[0];
39
+ var _useState3 = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : -1),
40
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
41
+ selectedValue = _useState4[0],
42
+ setSelectedValue = _useState4[1];
50
43
  var colorsTheme = (0, _useTheme["default"])();
51
-
52
- var _useState = (0, _react.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : multiple ? [] : -1),
53
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
54
- selectedValue = _useState2[0],
55
- setSelectedValue = _useState2[1];
56
-
57
- var _useState3 = (0, _react.useState)("toggle-group-".concat((0, _uuid.v4)())),
58
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
59
- toggleGroupId = _useState4[0];
60
-
61
44
  var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
62
-
63
45
  var handleToggleChange = function handleToggleChange(selectedOption) {
64
46
  var newSelectedOptions;
65
-
66
47
  if (value == null) {
67
48
  if (multiple && Array.isArray(selectedValue)) {
68
49
  newSelectedOptions = selectedValue.map(function (value) {
69
50
  return value;
70
51
  });
71
-
72
52
  if (newSelectedOptions.includes(selectedOption)) {
73
53
  var index = newSelectedOptions.indexOf(selectedOption);
74
54
  newSelectedOptions.splice(index, 1);
75
55
  } else {
76
56
  newSelectedOptions.push(selectedOption);
77
57
  }
78
-
79
58
  setSelectedValue(newSelectedOptions);
80
59
  } else setSelectedValue(selectedOption === selectedValue ? null : selectedOption);
81
60
  } else if (multiple) {
82
61
  newSelectedOptions = Array.isArray(value) ? value.map(function (v) {
83
62
  return v;
84
63
  }) : value;
85
-
86
64
  if (newSelectedOptions.includes(selectedOption)) {
87
65
  var _index = newSelectedOptions.indexOf(selectedOption);
88
-
89
66
  newSelectedOptions.splice(_index, 1);
90
67
  } else newSelectedOptions.push(selectedOption);
91
68
  }
92
-
93
69
  onChange === null || onChange === void 0 ? void 0 : onChange(multiple ? newSelectedOptions : selectedOption);
94
70
  };
95
-
96
- var handleKeyPress = function handleKeyPress(event, optionValue) {
97
- event.preventDefault();
98
- if (!disabled && (event.nativeEvent.code === "Enter" || event.nativeEvent.code === "Space")) handleToggleChange(optionValue);
71
+ var handleOnKeyDown = function handleOnKeyDown(event, optionValue) {
72
+ switch (event.key) {
73
+ case "Enter":
74
+ case " ":
75
+ event.preventDefault();
76
+ handleToggleChange(optionValue);
77
+ }
99
78
  };
100
-
101
79
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
102
80
  theme: colorsTheme.toggleGroup
103
81
  }, /*#__PURE__*/_react["default"].createElement(ToggleGroup, {
104
82
  margin: margin
105
83
  }, /*#__PURE__*/_react["default"].createElement(Label, {
106
- htmlFor: toggleGroupId,
84
+ id: toggleGroupLabelId,
107
85
  disabled: disabled
108
86
  }, label), /*#__PURE__*/_react["default"].createElement(HelperText, {
109
87
  disabled: disabled
110
88
  }, helperText), /*#__PURE__*/_react["default"].createElement(OptionsContainer, {
111
- id: toggleGroupId,
112
- role: multiple ? "group" : "radiogroup"
89
+ "aria-labelledby": toggleGroupLabelId
113
90
  }, options.map(function (option, i) {
114
- return /*#__PURE__*/_react["default"].createElement(ToggleContainer, {
115
- selected: multiple ? value ? Array.isArray(value) && value.includes(option.value) : Array.isArray(selectedValue) && selectedValue.includes(option.value) : value ? option.value === value : option.value === selectedValue,
116
- role: multiple ? "switch" : "radio",
117
- backgroundType: backgroundType,
118
- "aria-checked": multiple ? value ? Array.isArray(value) && value.includes(option.value) : Array.isArray(selectedValue) && selectedValue.includes(option.value) : value ? option.value === value : option.value === selectedValue,
119
- tabIndex: !disabled ? tabIndex : -1,
91
+ return /*#__PURE__*/_react["default"].createElement(ToggleButton, {
92
+ key: "toggle-".concat(i, "-").concat(option.label),
93
+ "aria-label": option.title,
94
+ "aria-pressed": multiple ? value ? Array.isArray(value) && value.includes(option.value) : Array.isArray(selectedValue) && selectedValue.includes(option.value) : value ? option.value === value : option.value === selectedValue,
95
+ disabled: disabled,
120
96
  onClick: function onClick() {
121
- return !disabled && handleToggleChange(option.value);
97
+ handleToggleChange(option.value);
122
98
  },
123
- isLast: i === options.length - 1,
124
- isIcon: option.icon,
125
- optionLabel: option.label,
126
- disabled: disabled,
127
- onKeyPress: function onKeyPress(event) {
128
- handleKeyPress(event, option.value);
99
+ onKeyDown: function onKeyDown(event) {
100
+ handleOnKeyDown(event, option.value);
129
101
  },
130
- key: "toggle-".concat(i, "-").concat(option.label)
131
- }, /*#__PURE__*/_react["default"].createElement(OptionContent, null, option.icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
102
+ tabIndex: !disabled ? tabIndex : -1,
103
+ title: option.title,
104
+ backgroundType: backgroundType,
105
+ hasIcon: option.icon,
106
+ optionLabel: option.label,
107
+ selected: multiple ? value ? Array.isArray(value) && value.includes(option.value) : Array.isArray(selectedValue) && selectedValue.includes(option.value) : value ? option.value === value : option.value === selectedValue
108
+ }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
109
+ alignItems: "center"
110
+ }, option.icon && /*#__PURE__*/_react["default"].createElement(IconContainer, {
132
111
  optionLabel: option.label
133
- }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement(Icon, {
112
+ }, typeof option.icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
134
113
  src: option.icon
135
114
  }) : option.icon), option.label && /*#__PURE__*/_react["default"].createElement(LabelContainer, null, option.label)));
136
115
  }))));
137
116
  };
138
-
139
- var Label = _styledComponents["default"].label(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
117
+ var ToggleGroup = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: column;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
118
+ return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
119
+ }, function (props) {
120
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
121
+ }, function (props) {
122
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.right ? _variables.spaces[props.margin.right] : "";
123
+ }, function (props) {
124
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
125
+ }, function (props) {
126
+ return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
127
+ });
128
+ var Label = _styledComponents["default"].label(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
140
129
  return props.disabled ? props.theme.disabledLabelFontColor : props.theme.labelFontColor;
141
130
  }, function (props) {
142
131
  return props.theme.labelFontFamily;
@@ -149,8 +138,7 @@ var Label = _styledComponents["default"].label(_templateObject || (_templateObje
149
138
  }, function (props) {
150
139
  return props.theme.labelLineHeight;
151
140
  });
152
-
153
- var HelperText = _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"])), function (props) {
141
+ var HelperText = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n"])), function (props) {
154
142
  return props.disabled ? props.theme.disabledHelperTextFontcolor : props.theme.helperTextFontColor;
155
143
  }, function (props) {
156
144
  return props.theme.helperTextFontFamily;
@@ -163,20 +151,7 @@ var HelperText = _styledComponents["default"].span(_templateObject2 || (_templat
163
151
  }, function (props) {
164
152
  return props.theme.helperTextLineHeight;
165
153
  });
166
-
167
- var ToggleGroup = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: column;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n"])), function (props) {
168
- return props.margin && (0, _typeof2["default"])(props.margin) !== "object" ? _variables.spaces[props.margin] : "0px";
169
- }, function (props) {
170
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.top ? _variables.spaces[props.margin.top] : "";
171
- }, function (props) {
172
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.right ? _variables.spaces[props.margin.right] : "";
173
- }, function (props) {
174
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.bottom ? _variables.spaces[props.margin.bottom] : "";
175
- }, function (props) {
176
- return props.margin && (0, _typeof2["default"])(props.margin) === "object" && props.margin.left ? _variables.spaces[props.margin.left] : "";
177
- });
178
-
179
- var OptionsContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n width: max-content;\n opacity: 1;\n height: calc(48px - 4px - 4px);\n border-width: ", ";\n border-style: ", ";\n border-radius: ", ";\n border-color: ", ";\n background-color: ", ";\n padding: 4px;\n margin-top: ", ";\n"])), function (props) {
154
+ var OptionsContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n gap: 0.25rem;\n width: max-content;\n height: calc(48px - 4px - 4px);\n padding: 0.25rem;\n border-width: ", ";\n border-style: ", ";\n border-radius: ", ";\n border-color: ", ";\n margin-top: ", ";\n background-color: ", ";\n"])), function (props) {
180
155
  return props.theme.containerBorderThickness;
181
156
  }, function (props) {
182
157
  return props.theme.containerBorderStyle;
@@ -184,18 +159,36 @@ var OptionsContainer = _styledComponents["default"].div(_templateObject4 || (_te
184
159
  return props.theme.containerBorderRadius;
185
160
  }, function (props) {
186
161
  return props.theme.containerBorderColor;
187
- }, function (props) {
188
- return props.theme.containerBackgroundColor;
189
162
  }, function (props) {
190
163
  return props.theme.containerMarginTop;
164
+ }, function (props) {
165
+ return props.theme.containerBackgroundColor;
191
166
  });
192
-
193
- var ToggleContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n margin-right: ", ";\n\n ", "\n"])), function (props) {
194
- return !props.isLast && "4px";
167
+ var ToggleButton = _styledComponents["default"].button(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding-left: ", ";\n padding-right: ", ";\n border-width: ", ";\n border-style: ", ";\n border-radius: ", ";\n background-color: ", ";\n color: ", ";\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: ", ";\n color: #ffffff;\n }\n &:focus {\n outline: none;\n box-shadow: ", ";\n }\n &:disabled {\n background-color: ", ";\n color: ", ";\n cursor: not-allowed;\n }\n"])), function (props) {
168
+ return props.optionLabel && props.hasIcon || props.optionLabel && !props.hasIcon ? props.theme.labelPaddingLeft : props.theme.iconPaddingLeft;
169
+ }, function (props) {
170
+ return props.optionLabel && props.hasIcon || props.optionLabel && !props.hasIcon ? props.theme.labelPaddingRight : props.theme.iconPaddingRight;
171
+ }, function (props) {
172
+ return props.theme.optionBorderThickness;
173
+ }, function (props) {
174
+ return props.theme.optionBorderStyle;
175
+ }, function (props) {
176
+ return props.theme.optionBorderRadius;
177
+ }, function (props) {
178
+ return props.selected ? props.theme.selectedBackgroundColor : props.theme.unselectedBackgroundColor;
195
179
  }, function (props) {
196
- return "\n background-color: ".concat(props.selected ? props.disabled ? props.theme.selectedDisabledBackgroundColor : props.theme.selectedBackgroundColor : props.disabled ? props.theme.unselectedDisabledBackgroundColor : props.theme.unselectedBackgroundColor, ";\n border-width: ").concat(props.theme.optionBorderThickness, ";\n border-style: ").concat(props.theme.optionBorderStyle, ";\n border-radius: ").concat(props.theme.optionBorderRadius, ";\n padding-left: ").concat(props.optionLabel && props.isIcon || props.optionLabel && !props.isIcon ? props.theme.labelPaddingLeft : props.theme.iconPaddingLeft, ";\n padding-right: ").concat(props.optionLabel && props.isIcon || props.optionLabel && !props.isIcon ? props.theme.labelPaddingRight : props.theme.iconPaddingRight, ";\n ").concat(!props.disabled ? ":hover {\n background-color: ".concat(props.selected ? props.theme.selectedHoverBackgroundColor : props.theme.unselectedHoverBackgroundColor, ";\n }\n :active {\n background-color: ").concat(props.selected ? props.theme.selectedActiveBackgroundColor : props.theme.unselectedActiveBackgroundColor, ";\n color: #ffffff;\n } \n :focus {\n border-color: transparent;\n box-shadow: 0 0 0 ").concat(props.theme.optionFocusBorderThickness, " ").concat(props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor, ";\n }\n &:focus-visible {\n outline: none;\n }\n cursor: pointer;\n color: ").concat(props.selected ? props.theme.selectedFontColor : props.theme.unselectedFontColor, ";\n") : "color: ".concat(props.selected ? props.theme.selectedDisabledFontColor : props.theme.unselectedDisabledFontColor, ";\n cursor: not-allowed;"), "\n ");
180
+ return props.selected ? props.theme.selectedFontColor : props.theme.unselectedFontColor;
181
+ }, function (props) {
182
+ return props.selected ? props.theme.selectedHoverBackgroundColor : props.theme.unselectedHoverBackgroundColor;
183
+ }, function (props) {
184
+ return props.selected ? props.theme.selectedActiveBackgroundColor : props.theme.unselectedActiveBackgroundColor;
185
+ }, function (props) {
186
+ return "0 0 0 ".concat(props.theme.optionFocusBorderThickness, " ").concat(props.backgroundType === "dark" ? props.theme.focusColorOnDark : props.theme.focusColor);
187
+ }, function (props) {
188
+ return props.selected ? props.theme.selectedDisabledBackgroundColor : props.theme.unselectedDisabledBackgroundColor;
189
+ }, function (props) {
190
+ return props.selected ? props.theme.selectedDisabledFontColor : props.theme.unselectedDisabledFontColor;
197
191
  });
198
-
199
192
  var LabelContainer = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
200
193
  return props.theme.optionLabelFontFamily;
201
194
  }, function (props) {
@@ -205,14 +198,7 @@ var LabelContainer = _styledComponents["default"].span(_templateObject6 || (_tem
205
198
  }, function (props) {
206
199
  return props.theme.optionLabelFontWeight;
207
200
  });
208
-
209
- var OptionContent = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n align-items: center;\n"])));
210
-
211
- var Icon = _styledComponents["default"].img(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])([""])));
212
-
213
- var IconContainer = _styledComponents["default"].div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n margin-right: ", ";\n height: 24px;\n width: 24px;\n overflow: hidden;\n display: flex;\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
201
+ var IconContainer = _styledComponents["default"].div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 24px;\n width: 24px;\n margin-right: ", ";\n overflow: hidden;\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
214
202
  return props.optionLabel && props.theme.iconMarginRight;
215
203
  });
216
-
217
- var _default = DxcToggleGroup;
218
- exports["default"] = _default;
204
+ var _default = exports["default"] = DxcToggleGroup;
@@ -6,7 +6,7 @@ import ExampleContainer from "../../.storybook/components/ExampleContainer";
6
6
  import { HalstackProvider } from "../HalstackContext";
7
7
 
8
8
  export default {
9
- title: "ToggleGroup",
9
+ title: "Toggle Group",
10
10
  component: DxcToggleGroup,
11
11
  };
12
12
 
@@ -42,7 +42,7 @@ const options = [
42
42
  },
43
43
  {
44
44
  value: 2,
45
- label: "Twitter",
45
+ label: "X",
46
46
  },
47
47
  {
48
48
  value: 3,
@@ -53,14 +53,17 @@ const optionsWithIcon = [
53
53
  {
54
54
  value: 1,
55
55
  icon: wifiSVG,
56
+ title: "WiFi connection",
56
57
  },
57
58
  {
58
59
  value: 2,
59
60
  icon: ethernetSVG,
61
+ title: "Ethernet connection",
60
62
  },
61
63
  {
62
64
  value: 3,
63
65
  icon: gMobileSVG,
66
+ title: "3G Mobile data connection",
64
67
  },
65
68
  ];
66
69
  const optionsWithIconAndLabel = [
@@ -87,7 +90,7 @@ const twoOptions = [
87
90
  },
88
91
  {
89
92
  value: 2,
90
- label: "Twitter",
93
+ label: "X",
91
94
  },
92
95
  ];
93
96
 
@@ -209,7 +212,7 @@ ToggleGroupSelectedActived.play = async ({ canvasElement }) => {
209
212
  export const ToggleGroupUnselectedActived = OptionSelected.bind({});
210
213
  ToggleGroupUnselectedActived.play = async ({ canvasElement }) => {
211
214
  const canvas = within(canvasElement);
212
- const option = canvas.getByText("Twitter");
215
+ const option = canvas.getByText("X");
213
216
  await userEvent.click(option);
214
217
  userEvent.tab();
215
218
  };
@@ -1,13 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _react = _interopRequireDefault(require("react"));
6
-
7
5
  var _react2 = require("@testing-library/react");
8
-
9
6
  var _ToggleGroup = _interopRequireDefault(require("./ToggleGroup.tsx"));
10
-
11
7
  var options = [{
12
8
  value: 1,
13
9
  label: "Amazon"
@@ -24,12 +20,11 @@ var options = [{
24
20
  describe("Toggle group component tests", function () {
25
21
  test("Toggle group renders with correct labels", function () {
26
22
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
27
- label: "Toggle group label",
28
- helperText: "Toggle group helper text",
29
- options: options
30
- })),
31
- getByText = _render.getByText;
32
-
23
+ label: "Toggle group label",
24
+ helperText: "Toggle group helper text",
25
+ options: options
26
+ })),
27
+ getByText = _render.getByText;
33
28
  expect(getByText("Toggle group label")).toBeTruthy();
34
29
  expect(getByText("Toggle group helper text")).toBeTruthy();
35
30
  expect(getByText("Amazon")).toBeTruthy();
@@ -37,120 +32,106 @@ describe("Toggle group component tests", function () {
37
32
  expect(getByText("Apple")).toBeTruthy();
38
33
  expect(getByText("Google")).toBeTruthy();
39
34
  });
35
+ test("Toggle group renders with correct aria-label in only-icon scenario", function () {
36
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
37
+ label: "Toggle group label",
38
+ helperText: "Toggle group helper text",
39
+ options: [{
40
+ value: 1,
41
+ icon: "https://cdn.icon-icons.com/icons2/2645/PNG/512/mic_mute_icon_159965.png",
42
+ title: "Mute"
43
+ }]
44
+ })),
45
+ getByRole = _render2.getByRole;
46
+ expect(getByRole("button").getAttribute("aria-label")).toBe("Mute");
47
+ });
40
48
  test("Uncontrolled toggle group calls correct function on change with value", function () {
41
49
  var onChange = jest.fn();
42
-
43
- var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
44
- options: options,
45
- onChange: onChange
46
- })),
47
- getByText = _render2.getByText;
48
-
50
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
51
+ options: options,
52
+ onChange: onChange
53
+ })),
54
+ getByText = _render3.getByText;
49
55
  var option = getByText("Ebay");
50
-
51
56
  _react2.fireEvent.click(option);
52
-
53
57
  expect(onChange).toHaveBeenCalledWith(2);
54
58
  });
55
59
  test("Controlled toggle group calls correct function on change with value", function () {
56
60
  var onChange = jest.fn();
57
-
58
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
59
- options: options,
60
- onChange: onChange,
61
- value: 1
62
- })),
63
- getByText = _render3.getByText;
64
-
61
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
62
+ options: options,
63
+ onChange: onChange,
64
+ value: 1
65
+ })),
66
+ getByText = _render4.getByText;
65
67
  var option = getByText("Ebay");
66
-
67
68
  _react2.fireEvent.click(option);
68
-
69
69
  expect(onChange).toHaveBeenCalledWith(2);
70
70
  });
71
71
  test("Function on change is not called when disable", function () {
72
72
  var onChange = jest.fn();
73
-
74
- var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
75
- options: options,
76
- onChange: onChange,
77
- disabled: true
78
- })),
79
- getByText = _render4.getByText;
80
-
73
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
74
+ options: options,
75
+ onChange: onChange,
76
+ disabled: true
77
+ })),
78
+ getByText = _render5.getByText;
81
79
  var option = getByText("Ebay");
82
-
83
80
  _react2.fireEvent.click(option);
84
-
85
81
  expect(onChange).toHaveBeenCalledTimes(0);
86
82
  });
87
83
  test("Uncontrolled multiple toggle group calls correct function on change with value when is multiple", function () {
88
84
  var onChange = jest.fn();
89
-
90
- var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
91
- options: options,
92
- onChange: onChange,
93
- multiple: true
94
- })),
95
- getAllByRole = _render5.getAllByRole;
96
-
97
- var toggleOptions = getAllByRole("switch");
98
-
85
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
86
+ options: options,
87
+ onChange: onChange,
88
+ multiple: true
89
+ })),
90
+ getAllByRole = _render6.getAllByRole;
91
+ var toggleOptions = getAllByRole("button");
99
92
  _react2.fireEvent.click(toggleOptions[0]);
100
-
101
93
  expect(onChange).toHaveBeenCalledWith([1]);
102
-
103
94
  _react2.fireEvent.click(toggleOptions[1]);
104
-
105
95
  _react2.fireEvent.click(toggleOptions[3]);
106
-
107
96
  expect(onChange).toHaveBeenCalledWith([1, 2, 4]);
108
- expect(toggleOptions[0].getAttribute("aria-checked")).toBe("true");
109
- expect(toggleOptions[1].getAttribute("aria-checked")).toBe("true");
110
- expect(toggleOptions[3].getAttribute("aria-checked")).toBe("true");
97
+ expect(toggleOptions[0].getAttribute("aria-pressed")).toBe("true");
98
+ expect(toggleOptions[1].getAttribute("aria-pressed")).toBe("true");
99
+ expect(toggleOptions[3].getAttribute("aria-pressed")).toBe("true");
111
100
  });
112
101
  test("Controlled multiple toggle returns always same values", function () {
113
102
  var onChange = jest.fn();
114
-
115
- var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
116
- options: options,
117
- onChange: onChange,
118
- value: [1],
119
- multiple: true
120
- })),
121
- getByText = _render6.getByText;
122
-
103
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
104
+ options: options,
105
+ onChange: onChange,
106
+ value: [1],
107
+ multiple: true
108
+ })),
109
+ getByText = _render7.getByText;
123
110
  var option = getByText("Ebay");
124
-
125
111
  _react2.fireEvent.click(option);
126
-
127
112
  expect(onChange).toHaveBeenCalledWith([1, 2]);
128
113
  var option2 = getByText("Google");
129
-
130
114
  _react2.fireEvent.click(option2);
131
-
132
115
  expect(onChange).toHaveBeenNthCalledWith(2, [1, 4]);
133
116
  });
134
117
  test("Single selection: Renders with correct default value", function () {
135
- var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
136
- options: options,
137
- defaultValue: 2
138
- })),
139
- getAllByRole = _render7.getAllByRole;
140
-
141
- var toggleOptions = getAllByRole("radio");
142
- expect(toggleOptions[1].getAttribute("aria-checked")).toBe("true");
118
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
119
+ options: options,
120
+ defaultValue: 2
121
+ })),
122
+ getAllByRole = _render8.getAllByRole;
123
+ var toggleOptions = getAllByRole("button");
124
+ expect(toggleOptions[1].getAttribute("aria-pressed")).toBe("true");
143
125
  });
144
126
  test("Multiple selection: Renders with correct default value", function () {
145
- var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
146
- options: options,
147
- defaultValue: [2, 4],
148
- multiple: true
149
- })),
150
- getAllByRole = _render8.getAllByRole;
151
-
152
- var toggleOptions = getAllByRole("switch");
153
- expect(toggleOptions[1].getAttribute("aria-checked")).toBe("true");
154
- expect(toggleOptions[3].getAttribute("aria-checked")).toBe("true");
127
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ToggleGroup["default"], {
128
+ options: options,
129
+ defaultValue: [2, 4],
130
+ multiple: true
131
+ })),
132
+ getAllByRole = _render9.getAllByRole;
133
+ var toggleOptions = getAllByRole("button");
134
+ expect(toggleOptions[1].getAttribute("aria-pressed")).toBe("true");
135
+ expect(toggleOptions[3].getAttribute("aria-pressed")).toBe("true");
155
136
  });
156
137
  });