@dxc-technology/halstack-react 0.0.0-c9c1158 → 0.0.0-c9efd3e

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 (216) hide show
  1. package/BackgroundColorContext.d.ts +1 -10
  2. package/BackgroundColorContext.js +2 -7
  3. package/HalstackContext.d.ts +29 -133
  4. package/HalstackContext.js +1 -1
  5. package/accordion/Accordion.accessibility.test.js +71 -0
  6. package/accordion/Accordion.js +10 -26
  7. package/accordion/Accordion.stories.tsx +4 -36
  8. package/accordion/types.d.ts +1 -1
  9. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  10. package/accordion-group/AccordionGroup.d.ts +2 -3
  11. package/accordion-group/AccordionGroup.js +3 -3
  12. package/accordion-group/AccordionGroupAccordion.js +2 -2
  13. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  14. package/accordion-group/AccordionGroupContext.js +8 -0
  15. package/accordion-group/types.d.ts +1 -1
  16. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  17. package/action-icon/ActionIcon.d.ts +4 -0
  18. package/action-icon/ActionIcon.js +48 -0
  19. package/action-icon/ActionIcon.stories.tsx +41 -0
  20. package/action-icon/ActionIcon.test.js +64 -0
  21. package/action-icon/types.d.ts +26 -0
  22. package/action-icon/types.js +5 -0
  23. package/alert/Alert.accessibility.test.js +95 -0
  24. package/alert/Alert.js +15 -72
  25. package/badge/Badge.accessibility.test.js +129 -0
  26. package/badge/Badge.d.ts +1 -1
  27. package/badge/Badge.js +141 -28
  28. package/badge/Badge.stories.tsx +210 -0
  29. package/badge/Badge.test.js +30 -0
  30. package/badge/types.d.ts +52 -3
  31. package/box/Box.accessibility.test.js +33 -0
  32. package/box/Box.js +1 -4
  33. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  34. package/bulleted-list/BulletedList.js +15 -22
  35. package/bulleted-list/BulletedList.stories.tsx +1 -2
  36. package/button/Button.accessibility.test.js +127 -0
  37. package/button/Button.js +15 -15
  38. package/button/Button.stories.tsx +32 -51
  39. package/button/Button.test.js +3 -1
  40. package/button/types.d.ts +1 -1
  41. package/card/Card.accessibility.test.js +36 -0
  42. package/checkbox/Checkbox.accessibility.test.js +87 -0
  43. package/checkbox/Checkbox.js +26 -31
  44. package/chip/Chip.accessibility.test.js +67 -0
  45. package/chip/Chip.js +8 -5
  46. package/chip/Chip.stories.tsx +5 -24
  47. package/chip/Chip.test.js +4 -4
  48. package/common/coreTokens.d.ts +1 -1
  49. package/common/coreTokens.js +3 -3
  50. package/common/variables.d.ts +29 -133
  51. package/common/variables.js +38 -142
  52. package/container/Container.js +3 -7
  53. package/container/Container.stories.tsx +10 -25
  54. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  55. package/contextual-menu/ContextualMenu.d.ts +7 -0
  56. package/contextual-menu/ContextualMenu.js +71 -0
  57. package/contextual-menu/ContextualMenu.stories.tsx +182 -0
  58. package/contextual-menu/ContextualMenu.test.js +71 -0
  59. package/contextual-menu/MenuItemAction.d.ts +4 -0
  60. package/contextual-menu/MenuItemAction.js +46 -0
  61. package/contextual-menu/types.d.ts +22 -0
  62. package/contextual-menu/types.js +5 -0
  63. package/date-input/DateInput.accessibility.test.js +216 -0
  64. package/date-input/types.d.ts +2 -2
  65. package/dialog/Dialog.accessibility.test.js +69 -0
  66. package/dialog/Dialog.js +2 -5
  67. package/dialog/Dialog.stories.tsx +170 -0
  68. package/dialog/Dialog.test.js +1 -1
  69. package/divider/Divider.accessibility.test.js +33 -0
  70. package/divider/Divider.d.ts +4 -0
  71. package/divider/Divider.js +36 -0
  72. package/divider/Divider.stories.tsx +223 -0
  73. package/divider/Divider.test.js +38 -0
  74. package/divider/types.d.ts +21 -0
  75. package/divider/types.js +5 -0
  76. package/dropdown/Dropdown.accessibility.test.js +180 -0
  77. package/dropdown/Dropdown.js +21 -36
  78. package/dropdown/Dropdown.stories.tsx +5 -16
  79. package/dropdown/DropdownMenuItem.js +6 -3
  80. package/dropdown/types.d.ts +3 -5
  81. package/file-input/FileInput.accessibility.test.js +160 -0
  82. package/file-input/FileInput.js +3 -39
  83. package/file-input/FileInput.test.js +7 -84
  84. package/file-input/FileItem.js +13 -27
  85. package/footer/Footer.accessibility.test.js +117 -0
  86. package/footer/Footer.d.ts +1 -1
  87. package/footer/Footer.js +36 -31
  88. package/footer/Footer.stories.tsx +46 -2
  89. package/footer/Icons.d.ts +1 -0
  90. package/footer/Icons.js +65 -1
  91. package/footer/types.d.ts +8 -8
  92. package/header/Header.accessibility.test.js +84 -0
  93. package/header/Header.js +18 -40
  94. package/header/types.d.ts +4 -3
  95. package/heading/Heading.accessibility.test.js +33 -0
  96. package/icon/Icon.accessibility.test.js +30 -0
  97. package/icon/Icon.d.ts +4 -0
  98. package/icon/Icon.js +33 -0
  99. package/icon/Icon.stories.tsx +28 -0
  100. package/icon/types.d.ts +4 -0
  101. package/icon/types.js +5 -0
  102. package/image/Image.accessibility.test.js +56 -0
  103. package/image/Image.stories.tsx +3 -1
  104. package/layout/ApplicationLayout.d.ts +1 -1
  105. package/layout/ApplicationLayout.js +1 -1
  106. package/layout/Icons.js +0 -2
  107. package/link/Link.accessibility.test.js +112 -0
  108. package/link/Link.js +7 -5
  109. package/link/Link.stories.tsx +2 -2
  110. package/link/types.d.ts +1 -1
  111. package/main.d.ts +5 -3
  112. package/main.js +22 -8
  113. package/nav-tabs/NavTabs.accessibility.test.js +52 -0
  114. package/nav-tabs/NavTabs.d.ts +1 -2
  115. package/nav-tabs/NavTabs.js +9 -6
  116. package/nav-tabs/NavTabs.stories.tsx +6 -4
  117. package/nav-tabs/NavTabs.test.js +3 -2
  118. package/nav-tabs/NavTabsContext.d.ts +3 -0
  119. package/nav-tabs/NavTabsContext.js +8 -0
  120. package/nav-tabs/Tab.js +8 -7
  121. package/number-input/NumberInput.accessibility.test.js +228 -0
  122. package/number-input/NumberInput.d.ts +0 -7
  123. package/number-input/NumberInput.js +24 -5
  124. package/number-input/NumberInput.test.js +165 -6
  125. package/number-input/NumberInputContext.d.ts +3 -0
  126. package/number-input/NumberInputContext.js +8 -0
  127. package/number-input/types.d.ts +6 -0
  128. package/package.json +12 -12
  129. package/paginator/Paginator.accessibility.test.js +79 -0
  130. package/paginator/Paginator.js +1 -4
  131. package/paragraph/Paragraph.accessibility.test.js +28 -0
  132. package/paragraph/Paragraph.js +2 -7
  133. package/password-input/PasswordInput.accessibility.test.js +153 -0
  134. package/password-input/PasswordInput.stories.tsx +0 -1
  135. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  136. package/progress-bar/ProgressBar.js +5 -11
  137. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  138. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  139. package/radio-group/RadioGroup.js +1 -1
  140. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  141. package/resultset-table/ResultsetTable.d.ts +4 -1
  142. package/resultset-table/ResultsetTable.js +23 -12
  143. package/resultset-table/ResultsetTable.stories.tsx +106 -5
  144. package/resultset-table/ResultsetTable.test.js +76 -0
  145. package/resultset-table/types.d.ts +40 -7
  146. package/select/Option.js +8 -1
  147. package/select/Select.accessibility.test.js +217 -0
  148. package/select/Select.js +35 -27
  149. package/select/Select.stories.tsx +0 -1
  150. package/select/Select.test.js +498 -462
  151. package/select/types.d.ts +2 -2
  152. package/sidenav/Sidenav.accessibility.test.js +59 -0
  153. package/sidenav/Sidenav.js +20 -18
  154. package/sidenav/Sidenav.stories.tsx +4 -9
  155. package/sidenav/types.d.ts +2 -2
  156. package/slider/Slider.accessibility.test.js +104 -0
  157. package/slider/Slider.js +37 -46
  158. package/spinner/Spinner.accessibility.test.js +96 -0
  159. package/spinner/Spinner.js +6 -14
  160. package/status-light/StatusLight.accessibility.test.js +157 -0
  161. package/status-light/StatusLight.d.ts +4 -0
  162. package/status-light/StatusLight.js +51 -0
  163. package/status-light/StatusLight.stories.tsx +74 -0
  164. package/status-light/StatusLight.test.js +25 -0
  165. package/status-light/types.d.ts +17 -0
  166. package/status-light/types.js +5 -0
  167. package/switch/Switch.accessibility.test.js +89 -0
  168. package/switch/Switch.js +23 -28
  169. package/table/DropdownTheme.js +62 -0
  170. package/table/Table.accessibility.test.js +82 -0
  171. package/table/Table.d.ts +6 -2
  172. package/table/Table.js +73 -11
  173. package/table/Table.stories.tsx +297 -2
  174. package/table/Table.test.js +92 -0
  175. package/table/types.d.ts +28 -0
  176. package/tabs/Tab.js +7 -4
  177. package/tabs/Tabs.accessibility.test.js +56 -0
  178. package/tabs/Tabs.js +4 -5
  179. package/tabs/Tabs.stories.tsx +1 -1
  180. package/tag/Tag.accessibility.test.js +69 -0
  181. package/tag/Tag.js +6 -6
  182. package/tag/Tag.stories.tsx +4 -7
  183. package/tag/Tag.test.js +4 -12
  184. package/tag/types.d.ts +2 -2
  185. package/text-input/Suggestions.js +7 -10
  186. package/text-input/TextInput.accessibility.test.js +321 -0
  187. package/text-input/TextInput.js +77 -102
  188. package/text-input/TextInput.stories.tsx +1 -1
  189. package/text-input/TextInput.test.js +96 -79
  190. package/textarea/Textarea.accessibility.test.js +155 -0
  191. package/textarea/Textarea.js +10 -16
  192. package/textarea/Textarea.stories.tsx +0 -1
  193. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  194. package/toggle-group/ToggleGroup.js +1 -4
  195. package/typography/Typography.accessibility.test.js +339 -0
  196. package/useTheme.d.ts +29 -133
  197. package/utils/FocusLock.js +15 -5
  198. package/wizard/Wizard.accessibility.test.js +55 -0
  199. package/wizard/types.d.ts +1 -1
  200. package/common/OpenSans.css +0 -69
  201. package/common/fonts/OpenSans-Bold.ttf +0 -0
  202. package/common/fonts/OpenSans-BoldItalic.ttf +0 -0
  203. package/common/fonts/OpenSans-ExtraBold.ttf +0 -0
  204. package/common/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  205. package/common/fonts/OpenSans-Italic.ttf +0 -0
  206. package/common/fonts/OpenSans-Light.ttf +0 -0
  207. package/common/fonts/OpenSans-LightItalic.ttf +0 -0
  208. package/common/fonts/OpenSans-Regular.ttf +0 -0
  209. package/common/fonts/OpenSans-SemiBold.ttf +0 -0
  210. package/common/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  211. package/sidenav/Icons.d.ts +0 -7
  212. package/sidenav/Icons.js +0 -47
  213. package/text-input/Icons.d.ts +0 -8
  214. package/text-input/Icons.js +0 -56
  215. /package/{layout → sidenav}/SidenavContext.d.ts +0 -0
  216. /package/{layout → sidenav}/SidenavContext.js +0 -0
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _jestAxe = require("jest-axe");
9
+ var _Button = _interopRequireDefault(require("./Button.tsx"));
10
+ var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
11
+ width: "24px",
12
+ height: "24px",
13
+ viewBox: "0 0 24 24",
14
+ fill: "currentColor"
15
+ }, /*#__PURE__*/_react["default"].createElement("path", {
16
+ d: "M0 0h24v24H0z",
17
+ fill: "none"
18
+ }), /*#__PURE__*/_react["default"].createElement("path", {
19
+ d: "M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"
20
+ }));
21
+ describe("Button component accessibility tests", function () {
22
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
23
+ var _render, container, results;
24
+ return _regenerator["default"].wrap(function _callee$(_context) {
25
+ while (1) switch (_context.prev = _context.next) {
26
+ case 0:
27
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
28
+ label: "Primary",
29
+ icon: iconSVG,
30
+ iconPosition: "after",
31
+ margin: "small",
32
+ mode: "primary",
33
+ title: "Button Title",
34
+ size: "fitContent",
35
+ type: "button"
36
+ })), container = _render.container;
37
+ _context.next = 3;
38
+ return (0, _jestAxe.axe)(container);
39
+ case 3:
40
+ results = _context.sent;
41
+ expect(results).toHaveNoViolations();
42
+ case 5:
43
+ case "end":
44
+ return _context.stop();
45
+ }
46
+ }, _callee);
47
+ })));
48
+ it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
49
+ var _render2, container, results;
50
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
51
+ while (1) switch (_context2.prev = _context2.next) {
52
+ case 0:
53
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
54
+ label: "Primary",
55
+ icon: iconSVG,
56
+ iconPosition: "after",
57
+ margin: "small",
58
+ mode: "primary",
59
+ title: "Button Title",
60
+ size: "fitContent",
61
+ type: "button",
62
+ disabled: true
63
+ })), container = _render2.container;
64
+ _context2.next = 3;
65
+ return (0, _jestAxe.axe)(container);
66
+ case 3:
67
+ results = _context2.sent;
68
+ expect(results).toHaveNoViolations();
69
+ case 5:
70
+ case "end":
71
+ return _context2.stop();
72
+ }
73
+ }, _callee2);
74
+ })));
75
+ it("Should not have basic accessibility issues for secondary mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
76
+ var _render3, container, results;
77
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
78
+ while (1) switch (_context3.prev = _context3.next) {
79
+ case 0:
80
+ _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
81
+ label: "Primary",
82
+ icon: iconSVG,
83
+ iconPosition: "after",
84
+ margin: "small",
85
+ mode: "secondary",
86
+ title: "Button Title",
87
+ size: "fitContent",
88
+ type: "button"
89
+ })), container = _render3.container;
90
+ _context3.next = 3;
91
+ return (0, _jestAxe.axe)(container);
92
+ case 3:
93
+ results = _context3.sent;
94
+ expect(results).toHaveNoViolations();
95
+ case 5:
96
+ case "end":
97
+ return _context3.stop();
98
+ }
99
+ }, _callee3);
100
+ })));
101
+ it("Should not have basic accessibility issues for text mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
102
+ var _render4, container, results;
103
+ return _regenerator["default"].wrap(function _callee4$(_context4) {
104
+ while (1) switch (_context4.prev = _context4.next) {
105
+ case 0:
106
+ _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
107
+ label: "Primary",
108
+ icon: iconSVG,
109
+ iconPosition: "after",
110
+ margin: "small",
111
+ mode: "text",
112
+ title: "Button Title",
113
+ size: "fitContent",
114
+ type: "button"
115
+ })), container = _render4.container;
116
+ _context4.next = 3;
117
+ return (0, _jestAxe.axe)(container);
118
+ case 3:
119
+ results = _context4.sent;
120
+ expect(results).toHaveNoViolations();
121
+ case 5:
122
+ case "end":
123
+ return _context4.stop();
124
+ }
125
+ }, _callee4);
126
+ })));
127
+ });
package/button/Button.js CHANGED
@@ -8,12 +8,12 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports["default"] = void 0;
9
9
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
- var _react = _interopRequireWildcard(require("react"));
11
+ var _react = _interopRequireDefault(require("react"));
12
12
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
13
13
  var _variables = require("../common/variables");
14
14
  var _utils = require("../common/utils");
15
15
  var _useTheme = _interopRequireDefault(require("../useTheme"));
16
- var _BackgroundColorContext = _interopRequireDefault(require("../BackgroundColorContext"));
16
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
17
17
  var _templateObject, _templateObject2, _templateObject3;
18
18
  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); }
19
19
  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; }
@@ -38,7 +38,6 @@ var DxcButton = function DxcButton(_ref) {
38
38
  _ref$tabIndex = _ref.tabIndex,
39
39
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
40
40
  var colorsTheme = (0, _useTheme["default"])();
41
- var backgroundType = (0, _react.useContext)(_BackgroundColorContext["default"]);
42
41
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
43
42
  theme: colorsTheme.button
44
43
  }, /*#__PURE__*/_react["default"].createElement(Button, {
@@ -54,11 +53,10 @@ var DxcButton = function DxcButton(_ref) {
54
53
  hasLabel: label ? true : false,
55
54
  hasIcon: icon ? true : false,
56
55
  iconPosition: iconPosition,
57
- backgroundType: backgroundType,
58
56
  size: size,
59
57
  margin: margin
60
- }, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
61
- src: icon
58
+ }, label && /*#__PURE__*/_react["default"].createElement(LabelContainer, null, label), icon && /*#__PURE__*/_react["default"].createElement(IconContainer, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
59
+ icon: icon
62
60
  }) : icon)));
63
61
  };
64
62
  var sizes = {
@@ -71,13 +69,13 @@ var sizes = {
71
69
  var calculateWidth = function calculateWidth(margin, size) {
72
70
  return size === "fillParent" ? "calc(".concat(sizes[size], " - ").concat((0, _utils.getMargin)(margin, "left"), " - ").concat((0, _utils.getMargin)(margin, "right"), ")") : sizes[size];
73
71
  };
74
- var getButtonStyles = function getButtonStyles(props) {
75
- var $mode = props.$mode,
76
- backgroundType = props.backgroundType,
77
- disabled = props.disabled;
78
- return "\n border-radius: ".concat($mode === "primary" ? props.theme.primaryBorderRadius : $mode === "secondary" ? props.theme.secondaryBorderRadius : props.theme.textBorderRadius, ";\n border-width: ").concat($mode === "primary" ? props.theme.primaryBorderThickness : $mode === "secondary" ? props.theme.secondaryBorderThickness : props.theme.textBorderThickness, ";\n border-style: ").concat($mode === "primary" ? props.theme.primaryBorderStyle : $mode === "secondary" ? props.theme.secondaryBorderStyle : props.theme.textBorderStyle, ";\n font-family: ").concat($mode === "primary" ? props.theme.primaryFontFamily : $mode === "secondary" ? props.theme.secondaryFontFamily : props.theme.textFontFamily, ";\n font-size: ").concat($mode === "primary" ? props.theme.primaryFontSize : $mode === "secondary" ? props.theme.secondaryFontSize : props.theme.textFontSize, ";\n font-weight: ").concat($mode === "primary" ? props.theme.primaryFontWeight : $mode === "secondary" ? props.theme.secondaryFontWeight : props.theme.textFontWeight, ";\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryBackgroundColorOnDark : props.theme.primaryBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBackgroundColorOnDark : props.theme.secondaryBackgroundColor : backgroundType === "dark" ? props.theme.textBackgroundColorOnDark : props.theme.textBackgroundColor, ";\n color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryFontColorOnDark : props.theme.primaryFontColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryFontColorOnDark : props.theme.secondaryFontColor : backgroundType === "dark" ? props.theme.textFontColorOnDark : props.theme.textFontColor, ";\n border-color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryBorderColorOnDark : props.theme.secondaryBorderColor : "", ";\n &:hover {\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryHoverBackgroundColorOnDark : props.theme.primaryHoverBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverBackgroundColorOnDark : props.theme.secondaryHoverBackgroundColor : backgroundType === "dark" ? props.theme.textHoverBackgroundColorOnDark : props.theme.textHoverBackgroundColor, ";\n color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n }\n &:focus {\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n }\n &:active {\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryActiveBackgroundColorOnDark : props.theme.primaryActiveBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryActiveBackgroundColorOnDark : props.theme.secondaryActiveBackgroundColor : backgroundType === "dark" ? props.theme.textActiveBackgroundColorOnDark : props.theme.textActiveBackgroundColor, ";\n color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryHoverFontColorOnDark : props.theme.secondaryHoverFontColor : "", ";\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n outline: none;\n box-shadow: ").concat(!disabled ? "0 0 0 2px ".concat(backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor) : "", ";\n }\n &:disabled {\n cursor: not-allowed;\n background-color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledBackgroundColorOnDark : props.theme.primaryDisabledBackgroundColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBackgroundColorOnDark : props.theme.secondaryDisabledBackgroundColor : backgroundType === "dark" ? props.theme.textDisabledBackgroundColorOnDark : props.theme.textDisabledBackgroundColor, ";\n color: ").concat($mode === "primary" ? backgroundType === "dark" ? props.theme.primaryDisabledFontColorOnDark : props.theme.primaryDisabledFontColor : $mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledFontColorOnDark : props.theme.secondaryDisabledFontColor : backgroundType === "dark" ? props.theme.textDisabledFontColorOnDark : props.theme.textDisabledFontColor, ";\n border-color: ").concat($mode === "secondary" ? backgroundType === "dark" ? props.theme.secondaryDisabledBorderColorOnDark : props.theme.secondaryDisabledBorderColor : "", ";\n }\n ");
72
+ var getButtonStyles = function getButtonStyles($mode, theme) {
73
+ return "\n border-color: ".concat($mode === "secondary" ? theme.secondaryBorderColor : "", ";\n border-radius: ").concat($mode === "primary" ? theme.primaryBorderRadius : $mode === "secondary" ? theme.secondaryBorderRadius : theme.textBorderRadius, ";\n border-width: ").concat($mode === "primary" ? theme.primaryBorderThickness : $mode === "secondary" ? theme.secondaryBorderThickness : theme.textBorderThickness, ";\n border-style: ").concat($mode === "primary" ? theme.primaryBorderStyle : $mode === "secondary" ? theme.secondaryBorderStyle : theme.textBorderStyle, ";\n font-family: ").concat($mode === "primary" ? theme.primaryFontFamily : $mode === "secondary" ? theme.secondaryFontFamily : theme.textFontFamily, ";\n font-size: ").concat($mode === "primary" ? theme.primaryFontSize : $mode === "secondary" ? theme.secondaryFontSize : theme.textFontSize, ";\n font-weight: ").concat($mode === "primary" ? theme.primaryFontWeight : $mode === "secondary" ? theme.secondaryFontWeight : theme.textFontWeight, ";\n background-color: ").concat($mode === "primary" ? theme.primaryBackgroundColor : $mode === "secondary" ? theme.secondaryBackgroundColor : theme.textBackgroundColor, ";\n color: ").concat($mode === "primary" ? theme.primaryFontColor : $mode === "secondary" ? theme.secondaryFontColor : theme.textFontColor, ";\n ");
79
74
  };
80
- var Button = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: ", ";\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: 40px;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n cursor: pointer;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px\n ", ";\n }\n\n ", "\n"])), function (props) {
75
+ var getButtonStates = function getButtonStates(disabled, $mode, theme) {
76
+ return "\n &:hover {\n background-color: ".concat($mode === "primary" ? theme.primaryHoverBackgroundColor : $mode === "secondary" ? theme.secondaryHoverBackgroundColor : theme.textHoverBackgroundColor, ";\n color: ").concat($mode === "secondary" ? theme.secondaryHoverFontColor : "", ";\n }\n &:focus {\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n }\n &:active {\n background-color: ").concat($mode === "primary" ? theme.primaryActiveBackgroundColor : $mode === "secondary" ? theme.secondaryActiveBackgroundColor : theme.textActiveBackgroundColor, ";\n color: ").concat($mode === "secondary" ? theme.secondaryHoverFontColor : "", ";\n border-color: ").concat($mode === "secondary" ? "transparent" : "", ";\n outline: none;\n box-shadow: ").concat(!disabled ? "0 0 0 2px ".concat(theme.focusBorderColor) : "", ";\n }\n &:disabled {\n cursor: not-allowed;\n background-color: ").concat($mode === "primary" ? theme.primaryDisabledBackgroundColor : $mode === "secondary" ? theme.secondaryDisabledBackgroundColor : theme.textDisabledBackgroundColor, ";\n color: ").concat($mode === "primary" ? theme.primaryDisabledFontColor : $mode === "secondary" ? theme.secondaryDisabledFontColor : theme.textDisabledFontColor, ";\n border-color: ").concat($mode === "secondary" ? theme.secondaryDisabledBorderColor : "", ";\n }\n");
77
+ };
78
+ var Button = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n flex-direction: ", ";\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: 40px;\n margin: ", ";\n margin-top: ", ";\n margin-right: ", ";\n margin-bottom: ", ";\n margin-left: ", ";\n padding-top: ", ";\n padding-bottom: ", ";\n padding-left: ", ";\n padding-right: ", ";\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n letter-spacing: ", ";\n cursor: pointer;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 2px ", ";\n }\n\n ", "\n ", "\n"])), function (props) {
81
79
  return props.iconPosition === "after" ? "row" : "row-reverse";
82
80
  }, function (props) {
83
81
  return calculateWidth(props.margin, props.size);
@@ -108,14 +106,16 @@ var Button = _styledComponents["default"].button(_templateObject || (_templateOb
108
106
  }, function (props) {
109
107
  return props.theme.labelLetterSpacing;
110
108
  }, function (props) {
111
- return props.backgroundType === "dark" ? props.theme.focusBorderColorOnDark : props.theme.focusBorderColor;
109
+ return props.theme.focusBorderColor;
110
+ }, function (props) {
111
+ return getButtonStyles(props.$mode, props.theme);
112
112
  }, function (props) {
113
- return getButtonStyles(props);
113
+ return getButtonStates(props.disabled, props.$mode, props.theme);
114
114
  });
115
115
  var LabelContainer = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n line-height: ", ";\n font-size: ", ";\n text-overflow: ellipsis;\n overflow: hidden;\n text-transform: none;\n white-space: nowrap;\n"])), function (props) {
116
116
  return props.theme.labelFontLineHeight;
117
117
  }, function (props) {
118
118
  return props.theme.fontSize;
119
119
  });
120
- var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n img,\n svg {\n height: 24px;\n width: 24px;\n }\n"])));
120
+ var IconContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n font-size: 24px;\n\n svg {\n height: 24px;\n width: 24px;\n }\n"])));
121
121
  var _default = exports["default"] = DxcButton;
@@ -20,7 +20,6 @@ const iconSVG = (
20
20
  const facebookIcon = (
21
21
  <svg
22
22
  version="1.1"
23
- id="Capa_1"
24
23
  x="0px"
25
24
  y="0px"
26
25
  width="438.536px"
@@ -76,30 +75,26 @@ export const Chromatic = () => (
76
75
  </ExampleContainer>
77
76
  <ExampleContainer>
78
77
  <Title title="Disabled" theme="light" level={4} />
79
- <DxcButton label="Primary disabled" disabled icon={iconSVG} />
78
+ <DxcButton label="Primary disabled" disabled icon="filled_bottom_app_bar" />
80
79
  </ExampleContainer>
81
80
  <ExampleContainer>
82
81
  <Title title="With left icon" theme="light" level={4} />
83
- <DxcButton label="Primary" icon={iconSVG} />
82
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" />
84
83
  </ExampleContainer>
85
84
  <ExampleContainer>
86
85
  <Title title="With right icon" theme="light" level={4} />
87
- <DxcButton label="Primary" icon={iconSVG} iconPosition="after" />
86
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" iconPosition="after" />
88
87
  </ExampleContainer>
89
88
  <ExampleContainer>
90
89
  <Title title="Only icon" theme="light" level={4} />
91
- <DxcButton icon={iconSVG} />
90
+ <DxcButton icon="filled_bottom_app_bar" />
92
91
  </ExampleContainer>
93
92
  <ExampleContainer>
94
93
  <Title title="Big icon (SVG)" theme="light" level={4} />
95
94
  <DxcButton icon={facebookIcon} />
96
95
  </ExampleContainer>
97
96
  <ExampleContainer>
98
- <Title title="Big icon (image)" theme="light" level={4} />
99
- <DxcButton icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png" />
100
- </ExampleContainer>
101
- <ExampleContainer>
102
- <Title title="Small icon" theme="light" level={4} />
97
+ <Title title="Small icon (SVG)" theme="light" level={4} />
103
98
  <DxcButton icon={smallIcon} />
104
99
  </ExampleContainer>
105
100
  <Title title="Secondary" theme="light" level={2} />
@@ -121,18 +116,11 @@ export const Chromatic = () => (
121
116
  </ExampleContainer>
122
117
  <ExampleContainer>
123
118
  <Title title="Disabled" theme="light" level={4} />
124
- <DxcButton mode="secondary" disabled label="Secondary disabled" icon={iconSVG} />
119
+ <DxcButton mode="secondary" disabled label="Secondary disabled" icon="filled_bottom_app_bar" />
125
120
  </ExampleContainer>
126
121
  <ExampleContainer>
127
122
  <Title title="With icon" theme="light" level={4} />
128
- <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
129
- </ExampleContainer>
130
- <ExampleContainer>
131
- <Title title="Only icon (image)" theme="light" level={4} />
132
- <DxcButton
133
- mode="secondary"
134
- icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
135
- />
123
+ <DxcButton mode="secondary" label="Secondary" icon="filled_bottom_app_bar" />
136
124
  </ExampleContainer>
137
125
  <Title title="Text" theme="light" level={2} />
138
126
  <ExampleContainer>
@@ -153,18 +141,11 @@ export const Chromatic = () => (
153
141
  </ExampleContainer>
154
142
  <ExampleContainer>
155
143
  <Title title="Disabled" theme="light" level={4} />
156
- <DxcButton mode="text" label="Text disabled" disabled icon={iconSVG} />
144
+ <DxcButton mode="text" label="Text disabled" disabled icon="filled_bottom_app_bar" />
157
145
  </ExampleContainer>
158
146
  <ExampleContainer>
159
147
  <Title title="With icon" theme="light" level={4} />
160
- <DxcButton label="Text" mode="text" icon={iconSVG} />
161
- </ExampleContainer>
162
- <ExampleContainer>
163
- <Title title="Only icon (image)" theme="light" level={4} />
164
- <DxcButton
165
- mode="text"
166
- icon="https://www.freepnglogos.com/uploads/facebook-logo-design-1.png"
167
- />
148
+ <DxcButton label="Text" mode="text" icon="filled_bottom_app_bar" />
168
149
  </ExampleContainer>
169
150
  <Title title="Sizes" theme="light" level={2} />
170
151
  <ExampleContainer>
@@ -181,19 +162,19 @@ export const Chromatic = () => (
181
162
  </ExampleContainer>
182
163
  <ExampleContainer>
183
164
  <Title title="Medium size icon after" theme="light" level={4} />
184
- <DxcButton label="Medium" iconPosition="after" icon={iconSVG} size="medium" />
165
+ <DxcButton label="Medium" iconPosition="after" icon="filled_bottom_app_bar" size="medium" />
185
166
  </ExampleContainer>
186
167
  <ExampleContainer>
187
168
  <Title title="Medium size icon before" theme="light" level={4} />
188
- <DxcButton label="Medium" iconPosition="before" icon={iconSVG} size="medium" />
169
+ <DxcButton label="Medium" iconPosition="before" icon="filled_bottom_app_bar" size="medium" />
189
170
  </ExampleContainer>
190
171
  <ExampleContainer>
191
172
  <Title title="Medium size icon after with ellipsis" theme="light" level={4} />
192
- <DxcButton label="Medium" iconPosition="after" icon={iconSVG} size="medium" />
173
+ <DxcButton label="Medium" iconPosition="after" icon="filled_bottom_app_bar" size="medium" />
193
174
  </ExampleContainer>
194
175
  <ExampleContainer>
195
176
  <Title title="Medium size icon before with ellipsis" theme="light" level={4} />
196
- <DxcButton label="Medium" iconPosition="before" icon={iconSVG} size="medium" />
177
+ <DxcButton label="Medium" iconPosition="before" icon="filled_bottom_app_bar" size="medium" />
197
178
  </ExampleContainer>
198
179
  <ExampleContainer>
199
180
  <Title title="Large size" theme="light" level={4} />
@@ -205,19 +186,19 @@ export const Chromatic = () => (
205
186
  </ExampleContainer>
206
187
  <ExampleContainer>
207
188
  <Title title="Large size icon after" theme="light" level={4} />
208
- <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon={iconSVG} size="large" />
189
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon="filled_bottom_app_bar" size="large" />
209
190
  </ExampleContainer>
210
191
  <ExampleContainer>
211
192
  <Title title="Large size icon before" theme="light" level={4} />
212
- <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon={iconSVG} size="large" />
193
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon="filled_bottom_app_bar" size="large" />
213
194
  </ExampleContainer>
214
195
  <ExampleContainer>
215
196
  <Title title="Large size icon after with ellipsis" theme="light" level={4} />
216
- <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon={iconSVG} size="large" />
197
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="after" icon="filled_bottom_app_bar" size="large" />
217
198
  </ExampleContainer>
218
199
  <ExampleContainer>
219
200
  <Title title="Large size icon before with ellipsis" theme="light" level={4} />
220
- <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon={iconSVG} size="large" />
201
+ <DxcButton label="LargeSizePrimaryButton" iconPosition="before" icon="filled_bottom_app_bar" size="large" />
221
202
  </ExampleContainer>
222
203
  <ExampleContainer>
223
204
  <Title title="FillParent size" theme="light" level={4} />
@@ -269,75 +250,75 @@ export const Chromatic = () => (
269
250
  <ExampleContainer>
270
251
  <Title title="Enabled" theme="light" level={4} />
271
252
  <HalstackProvider theme={opinionatedTheme}>
272
- <DxcButton label="Primary" icon={iconSVG} />
253
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" />
273
254
  </HalstackProvider>
274
255
  </ExampleContainer>
275
256
  <ExampleContainer pseudoState="pseudo-hover">
276
257
  <Title title="Hovered" theme="light" level={4} />
277
- <DxcButton label="Primary hovered" icon={iconSVG} />
258
+ <DxcButton label="Primary hovered" icon="filled_bottom_app_bar" />
278
259
  </ExampleContainer>
279
260
  <ExampleContainer pseudoState="pseudo-focus">
280
261
  <Title title="Focused" theme="light" level={4} />
281
- <DxcButton label="Primary focused" icon={iconSVG} />
262
+ <DxcButton label="Primary focused" icon="filled_bottom_app_bar" />
282
263
  </ExampleContainer>
283
264
  <ExampleContainer pseudoState="pseudo-active">
284
265
  <Title title="Actived" theme="light" level={4} />
285
- <DxcButton label="Primary actived" icon={iconSVG} />
266
+ <DxcButton label="Primary actived" icon="filled_bottom_app_bar" />
286
267
  </ExampleContainer>
287
268
  <ExampleContainer>
288
269
  <Title title="Disabled" theme="light" level={4} />
289
270
  <HalstackProvider theme={opinionatedTheme}>
290
- <DxcButton label="Primary" icon={iconSVG} disabled />
271
+ <DxcButton label="Primary" icon="filled_bottom_app_bar" disabled />
291
272
  </HalstackProvider>
292
273
  </ExampleContainer>
293
274
  <Title title="Secondary" theme="light" level={3} />
294
275
  <ExampleContainer>
295
276
  <Title title="Enabled" theme="light" level={4} />
296
277
  <HalstackProvider theme={opinionatedTheme}>
297
- <DxcButton mode="secondary" label="Secondary" icon={iconSVG} />
278
+ <DxcButton mode="secondary" label="Secondary" icon="filled_bottom_app_bar" />
298
279
  </HalstackProvider>
299
280
  </ExampleContainer>
300
281
  <ExampleContainer pseudoState="pseudo-hover">
301
282
  <Title title="Hovered" theme="light" level={4} />
302
- <DxcButton mode="secondary" label="Secondary hovered" icon={iconSVG} />
283
+ <DxcButton mode="secondary" label="Secondary hovered" icon="filled_bottom_app_bar" />
303
284
  </ExampleContainer>
304
285
  <ExampleContainer pseudoState="pseudo-focus">
305
286
  <Title title="Focused" theme="light" level={4} />
306
- <DxcButton mode="secondary" label="Secondary focused" icon={iconSVG} />
287
+ <DxcButton mode="secondary" label="Secondary focused" icon="filled_bottom_app_bar" />
307
288
  </ExampleContainer>
308
289
  <ExampleContainer pseudoState="pseudo-active">
309
290
  <Title title="Actived" theme="light" level={4} />
310
- <DxcButton mode="secondary" label="Secondary actived" icon={iconSVG} />
291
+ <DxcButton mode="secondary" label="Secondary actived" icon="filled_bottom_app_bar" />
311
292
  </ExampleContainer>
312
293
  <ExampleContainer>
313
294
  <Title title="Disabled" theme="light" level={4} />
314
295
  <HalstackProvider theme={opinionatedTheme}>
315
- <DxcButton mode="secondary" label="Secondary" icon={iconSVG} disabled />
296
+ <DxcButton mode="secondary" label="Secondary" icon="filled_bottom_app_bar" disabled />
316
297
  </HalstackProvider>
317
298
  </ExampleContainer>
318
299
  <Title title="Text" theme="light" level={3} />
319
300
  <ExampleContainer>
320
301
  <Title title="Enabled" theme="light" level={4} />
321
302
  <HalstackProvider theme={opinionatedTheme}>
322
- <DxcButton mode="text" label="Text" icon={iconSVG} />
303
+ <DxcButton mode="text" label="Text" icon="filled_bottom_app_bar" />
323
304
  </HalstackProvider>
324
305
  </ExampleContainer>
325
306
  <ExampleContainer pseudoState="pseudo-hover">
326
307
  <Title title="Hovered" theme="light" level={4} />
327
- <DxcButton mode="text" label="Text hovered" icon={iconSVG} />
308
+ <DxcButton mode="text" label="Text hovered" icon="filled_bottom_app_bar" />
328
309
  </ExampleContainer>
329
310
  <ExampleContainer pseudoState="pseudo-focus">
330
311
  <Title title="Focused" theme="light" level={4} />
331
- <DxcButton mode="text" label="Text focused" icon={iconSVG} />
312
+ <DxcButton mode="text" label="Text focused" icon="filled_bottom_app_bar" />
332
313
  </ExampleContainer>
333
314
  <ExampleContainer pseudoState="pseudo-active">
334
315
  <Title title="Actived" theme="light" level={4} />
335
- <DxcButton mode="text" label="Text actived" icon={iconSVG} />
316
+ <DxcButton mode="text" label="Text actived" icon="filled_bottom_app_bar" />
336
317
  </ExampleContainer>
337
318
  <ExampleContainer>
338
319
  <Title title="Disabled" theme="light" level={4} />
339
320
  <HalstackProvider theme={opinionatedTheme}>
340
- <DxcButton mode="text" label="Text disabled" icon={iconSVG} disabled />
321
+ <DxcButton mode="text" label="Text disabled" icon="filled_bottom_app_bar" disabled />
341
322
  </HalstackProvider>
342
323
  </ExampleContainer>
343
324
  </>
@@ -26,11 +26,13 @@ describe("Button component tests", function () {
26
26
  test("Renders with correct accessibility attributes", function () {
27
27
  var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Button["default"], {
28
28
  label: "Home",
29
- title: "Go home"
29
+ title: "Go home",
30
+ tabIndex: 1
30
31
  })),
31
32
  getByRole = _render3.getByRole;
32
33
  var button = getByRole("button");
33
34
  expect(button.getAttribute("aria-label")).toBe("Go home");
34
35
  expect(button.getAttribute("title")).toBe("Go home");
36
+ expect(button.getAttribute("tabindex")).toBe("1");
35
37
  });
36
38
  });
package/button/types.d.ts CHANGED
@@ -33,7 +33,7 @@ type Props = {
33
33
  */
34
34
  type?: "button" | "reset" | "submit";
35
35
  /**
36
- * Element or path used as the icon that will be placed next to the label.
36
+ * Material Symbol name or SVG element as the icon that will be placed next to the label.
37
37
  */
38
38
  icon?: string | SVG;
39
39
  /**
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _jestAxe = require("jest-axe");
9
+ var _Card = _interopRequireDefault(require("./Card.tsx"));
10
+ describe("Card component accessibility tests", function () {
11
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
12
+ var _render, container, results;
13
+ return _regenerator["default"].wrap(function _callee$(_context) {
14
+ while (1) switch (_context.prev = _context.next) {
15
+ case 0:
16
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Card["default"], {
17
+ linkHref: "https://www.dxc.com",
18
+ imageSrc: "https://picsum.photos/id/1022/200/300",
19
+ imagePosition: "after",
20
+ imagePadding: "xsmall",
21
+ margin: "medium",
22
+ imageBgColor: "yellow",
23
+ imageCover: true
24
+ }, "test-card")), container = _render.container;
25
+ _context.next = 3;
26
+ return (0, _jestAxe.axe)(container);
27
+ case 3:
28
+ results = _context.sent;
29
+ expect(results).toHaveNoViolations();
30
+ case 5:
31
+ case "end":
32
+ return _context.stop();
33
+ }
34
+ }, _callee);
35
+ })));
36
+ });
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
6
+ var _react = _interopRequireDefault(require("react"));
7
+ var _react2 = require("@testing-library/react");
8
+ var _jestAxe = require("jest-axe");
9
+ var _Checkbox = _interopRequireDefault(require("./Checkbox.tsx"));
10
+ describe("Checkbox component accessibility tests", function () {
11
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
12
+ var _render, container, results;
13
+ return _regenerator["default"].wrap(function _callee$(_context) {
14
+ while (1) switch (_context.prev = _context.next) {
15
+ case 0:
16
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
17
+ label: "Checkbox",
18
+ labelPosition: "after",
19
+ name: "name",
20
+ size: "fitContent",
21
+ value: "checkboxValue",
22
+ margin: "small",
23
+ defaultChecked: true,
24
+ optional: true
25
+ })), container = _render.container;
26
+ _context.next = 3;
27
+ return (0, _jestAxe.axe)(container);
28
+ case 3:
29
+ results = _context.sent;
30
+ expect(results).toHaveNoViolations();
31
+ case 5:
32
+ case "end":
33
+ return _context.stop();
34
+ }
35
+ }, _callee);
36
+ })));
37
+ it("Should not have basic accessibility issues for read-only mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
38
+ var _render2, container, results;
39
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
40
+ while (1) switch (_context2.prev = _context2.next) {
41
+ case 0:
42
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
43
+ label: "Checkbox",
44
+ labelPosition: "after",
45
+ name: "name",
46
+ size: "fitContent",
47
+ value: "checkboxValue",
48
+ margin: "small",
49
+ readOnly: true
50
+ })), container = _render2.container;
51
+ _context2.next = 3;
52
+ return (0, _jestAxe.axe)(container);
53
+ case 3:
54
+ results = _context2.sent;
55
+ expect(results).toHaveNoViolations();
56
+ case 5:
57
+ case "end":
58
+ return _context2.stop();
59
+ }
60
+ }, _callee2);
61
+ })));
62
+ it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
63
+ var _render3, container, results;
64
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
65
+ while (1) switch (_context3.prev = _context3.next) {
66
+ case 0:
67
+ _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
68
+ label: "Checkbox",
69
+ labelPosition: "after",
70
+ name: "name",
71
+ size: "fitContent",
72
+ value: "checkboxValue",
73
+ margin: "small",
74
+ disabled: true
75
+ })), container = _render3.container;
76
+ _context3.next = 3;
77
+ return (0, _jestAxe.axe)(container);
78
+ case 3:
79
+ results = _context3.sent;
80
+ expect(results).toHaveNoViolations();
81
+ case 5:
82
+ case "end":
83
+ return _context3.stop();
84
+ }
85
+ }, _callee3);
86
+ })));
87
+ });