@dxc-technology/halstack-react 0.0.0-89de434 → 0.0.0-8a597df

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 (136) hide show
  1. package/accordion/Accordion.accessibility.test.js +71 -0
  2. package/accordion/Accordion.js +8 -21
  3. package/accordion/Accordion.stories.tsx +4 -36
  4. package/accordion/types.d.ts +1 -1
  5. package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
  6. package/accordion-group/AccordionGroup.d.ts +2 -3
  7. package/accordion-group/AccordionGroup.js +3 -3
  8. package/accordion-group/AccordionGroupAccordion.js +2 -2
  9. package/accordion-group/AccordionGroupContext.d.ts +3 -0
  10. package/accordion-group/AccordionGroupContext.js +8 -0
  11. package/accordion-group/types.d.ts +1 -1
  12. package/action-icon/ActionIcon.accessibility.test.js +63 -0
  13. package/action-icon/ActionIcon.js +4 -3
  14. package/action-icon/ActionIcon.stories.tsx +3 -3
  15. package/action-icon/types.d.ts +1 -1
  16. package/alert/Alert.accessibility.test.js +95 -0
  17. package/alert/Alert.js +15 -69
  18. package/badge/Badge.accessibility.test.js +129 -0
  19. package/badge/Badge.js +6 -4
  20. package/badge/Badge.stories.tsx +11 -11
  21. package/badge/types.d.ts +1 -1
  22. package/box/Box.accessibility.test.js +33 -0
  23. package/bulleted-list/BulletedList.accessibility.test.js +107 -0
  24. package/bulleted-list/BulletedList.js +6 -3
  25. package/bulleted-list/BulletedList.stories.tsx +1 -1
  26. package/button/Button.accessibility.test.js +127 -0
  27. package/button/Button.js +4 -3
  28. package/button/Button.stories.tsx +32 -51
  29. package/button/types.d.ts +1 -1
  30. package/card/Card.accessibility.test.js +36 -0
  31. package/checkbox/Checkbox.accessibility.test.js +87 -0
  32. package/chip/Chip.accessibility.test.js +67 -0
  33. package/chip/Chip.js +8 -5
  34. package/chip/Chip.stories.tsx +5 -24
  35. package/chip/Chip.test.js +4 -4
  36. package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
  37. package/date-input/DateInput.accessibility.test.js +216 -0
  38. package/date-input/DateInput.js +1 -2
  39. package/date-input/DatePicker.js +12 -6
  40. package/dialog/Dialog.accessibility.test.js +69 -0
  41. package/dialog/Dialog.test.js +1 -1
  42. package/divider/Divider.accessibility.test.js +33 -0
  43. package/divider/types.d.ts +3 -1
  44. package/dropdown/Dropdown.accessibility.test.js +180 -0
  45. package/dropdown/Dropdown.js +12 -29
  46. package/dropdown/Dropdown.stories.tsx +5 -16
  47. package/dropdown/DropdownMenuItem.js +6 -3
  48. package/dropdown/types.d.ts +2 -4
  49. package/file-input/FileInput.accessibility.test.js +160 -0
  50. package/file-input/FileInput.js +3 -39
  51. package/file-input/FileInput.test.js +7 -84
  52. package/file-input/FileItem.js +13 -27
  53. package/footer/Footer.accessibility.test.js +117 -0
  54. package/footer/Footer.js +7 -5
  55. package/footer/Footer.stories.tsx +28 -3
  56. package/footer/types.d.ts +1 -1
  57. package/header/Header.accessibility.test.js +84 -0
  58. package/header/Header.js +9 -20
  59. package/heading/Heading.accessibility.test.js +33 -0
  60. package/icon/Icon.accessibility.test.js +30 -0
  61. package/icon/Icon.js +1 -1
  62. package/icon/Icon.stories.tsx +5 -3
  63. package/image/Image.accessibility.test.js +56 -0
  64. package/layout/ApplicationLayout.js +1 -1
  65. package/layout/Icons.js +0 -2
  66. package/link/Link.accessibility.test.js +112 -0
  67. package/link/Link.js +7 -5
  68. package/link/Link.stories.tsx +2 -2
  69. package/link/types.d.ts +1 -1
  70. package/nav-tabs/NavTabs.accessibility.test.js +44 -0
  71. package/nav-tabs/NavTabs.d.ts +1 -2
  72. package/nav-tabs/NavTabs.js +3 -3
  73. package/nav-tabs/NavTabs.stories.tsx +26 -23
  74. package/nav-tabs/NavTabs.test.js +1 -2
  75. package/nav-tabs/NavTabsContext.d.ts +3 -0
  76. package/nav-tabs/NavTabsContext.js +8 -0
  77. package/nav-tabs/Tab.js +13 -14
  78. package/nav-tabs/types.d.ts +1 -1
  79. package/number-input/NumberInput.accessibility.test.js +228 -0
  80. package/number-input/NumberInput.d.ts +0 -7
  81. package/number-input/NumberInput.js +3 -3
  82. package/number-input/NumberInputContext.d.ts +3 -0
  83. package/number-input/NumberInputContext.js +8 -0
  84. package/number-input/types.d.ts +6 -0
  85. package/package.json +11 -11
  86. package/paginator/Paginator.accessibility.test.js +79 -0
  87. package/paragraph/Paragraph.accessibility.test.js +28 -0
  88. package/password-input/PasswordInput.accessibility.test.js +153 -0
  89. package/progress-bar/ProgressBar.accessibility.test.js +35 -0
  90. package/quick-nav/QuickNav.accessibility.test.js +57 -0
  91. package/radio-group/RadioGroup.accessibility.test.js +97 -0
  92. package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
  93. package/resultset-table/ResultsetTable.d.ts +1 -1
  94. package/resultset-table/ResultsetTable.js +10 -6
  95. package/resultset-table/ResultsetTable.stories.tsx +5 -1
  96. package/resultset-table/ResultsetTable.test.js +14 -4
  97. package/resultset-table/types.d.ts +38 -11
  98. package/select/Select.accessibility.test.js +217 -0
  99. package/select/Select.stories.tsx +0 -1
  100. package/sidenav/Sidenav.accessibility.test.js +59 -0
  101. package/sidenav/Sidenav.js +16 -12
  102. package/sidenav/Sidenav.stories.tsx +4 -9
  103. package/sidenav/types.d.ts +2 -2
  104. package/slider/Slider.accessibility.test.js +104 -0
  105. package/spinner/Spinner.accessibility.test.js +96 -0
  106. package/status-light/StatusLight.accessibility.test.js +157 -0
  107. package/switch/Switch.accessibility.test.js +89 -0
  108. package/table/Table.accessibility.test.js +82 -0
  109. package/table/Table.js +1 -10
  110. package/table/Table.stories.tsx +2 -9
  111. package/table/types.d.ts +1 -15
  112. package/tabs/Tabs.accessibility.test.js +56 -0
  113. package/tag/Tag.accessibility.test.js +69 -0
  114. package/tag/Tag.js +6 -6
  115. package/tag/Tag.stories.tsx +4 -7
  116. package/tag/Tag.test.js +4 -12
  117. package/tag/types.d.ts +2 -2
  118. package/text-input/Suggestions.js +5 -3
  119. package/text-input/TextInput.accessibility.test.js +321 -0
  120. package/text-input/TextInput.js +10 -8
  121. package/text-input/TextInput.stories.tsx +1 -1
  122. package/textarea/Textarea.accessibility.test.js +155 -0
  123. package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
  124. package/toggle-group/ToggleGroup.js +4 -3
  125. package/toggle-group/ToggleGroup.stories.tsx +3 -3
  126. package/toggle-group/types.d.ts +2 -2
  127. package/typography/Typography.accessibility.test.js +339 -0
  128. package/wizard/Wizard.accessibility.test.js +55 -0
  129. package/date-input/Icons.d.ts +0 -6
  130. package/date-input/Icons.js +0 -58
  131. package/sidenav/Icons.d.ts +0 -7
  132. package/sidenav/Icons.js +0 -47
  133. package/text-input/Icons.d.ts +0 -8
  134. package/text-input/Icons.js +0 -56
  135. /package/{layout → sidenav}/SidenavContext.d.ts +0 -0
  136. /package/{layout → sidenav}/SidenavContext.js +0 -0
@@ -0,0 +1,217 @@
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _react2 = require("@testing-library/react");
10
+ var _jestAxe = require("jest-axe");
11
+ var _Select = _interopRequireDefault(require("./Select.tsx"));
12
+ var _Flex = _interopRequireDefault(require("../flex/Flex.tsx"));
13
+ var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
14
+ xmlns: "http://www.w3.org/2000/svg",
15
+ height: "24px",
16
+ viewBox: "0 0 24 24",
17
+ width: "24px",
18
+ fill: "currentColor"
19
+ }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
20
+ d: "M0,0h24v24H0V0z",
21
+ fill: "none"
22
+ })), /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
23
+ d: "M3,7v2h5v2H4v2h4v2H3v2h5c1.1,0,2-0.9,2-2v-1.5c0-0.83-0.67-1.5-1.5-1.5c0.83,0,1.5-0.67,1.5-1.5V9c0-1.1-0.9-2-2-2H3z M21,11v4c0,1.1-0.9,2-2,2h-5c-1.1,0-2-0.9-2-2V9c0-1.1,0.9-2,2-2h5c1.1,0,2,0.9,2,2h-7v6h5v-2h-2.5v-2H21z"
24
+ }))));
25
+ var group_options = [{
26
+ label: "Group 001",
27
+ options: [{
28
+ label: "Option 001",
29
+ value: "1"
30
+ }, {
31
+ label: "Option 002",
32
+ value: "2"
33
+ }, {
34
+ label: "Option 003",
35
+ value: "3"
36
+ }]
37
+ }, {
38
+ label: "Group 002",
39
+ options: [{
40
+ label: "Option 004",
41
+ value: "4"
42
+ }, {
43
+ label: "Option 005",
44
+ value: "5"
45
+ }, {
46
+ label: "Option 006",
47
+ value: "6"
48
+ }]
49
+ }, {
50
+ label: "Group 003",
51
+ options: [{
52
+ label: "Option 007",
53
+ value: "7"
54
+ }, {
55
+ label: "Option 008",
56
+ value: "8"
57
+ }, {
58
+ label: "Option 009",
59
+ value: "9"
60
+ }]
61
+ }, {
62
+ label: "Group 004",
63
+ options: [{
64
+ label: "Option 010",
65
+ value: "10"
66
+ }, {
67
+ label: "Option 011",
68
+ value: "11"
69
+ }, {
70
+ label: "Option 012",
71
+ value: "12"
72
+ }]
73
+ }, {
74
+ label: "Group 005",
75
+ options: [{
76
+ label: "Option 013",
77
+ value: "13"
78
+ }, {
79
+ label: "Option 014",
80
+ value: "14"
81
+ }, {
82
+ label: "Option 015",
83
+ value: "15"
84
+ }]
85
+ }];
86
+ var single_options = [{
87
+ label: "Option 01",
88
+ value: "1",
89
+ icon: iconSVG
90
+ }, {
91
+ label: "Option 02",
92
+ value: "2",
93
+ icon: iconSVG
94
+ }, {
95
+ label: "Option 03",
96
+ value: "3",
97
+ icon: iconSVG
98
+ }, {
99
+ label: "Option 04",
100
+ value: "4",
101
+ icon: iconSVG
102
+ }];
103
+
104
+ // Mocking DOMRect for Radix Primitive Popover
105
+ global.globalThis = global;
106
+ global.DOMRect = {
107
+ fromRect: function fromRect() {
108
+ return {
109
+ top: 0,
110
+ left: 0,
111
+ bottom: 0,
112
+ right: 0,
113
+ width: 0,
114
+ height: 0
115
+ };
116
+ }
117
+ };
118
+ global.ResizeObserver = /*#__PURE__*/function () {
119
+ function ResizeObserver() {
120
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
121
+ }
122
+ (0, _createClass2["default"])(ResizeObserver, [{
123
+ key: "observe",
124
+ value: function observe() {}
125
+ }, {
126
+ key: "unobserve",
127
+ value: function unobserve() {}
128
+ }, {
129
+ key: "disconnect",
130
+ value: function disconnect() {}
131
+ }]);
132
+ return ResizeObserver;
133
+ }();
134
+ describe("Select component accessibility tests", function () {
135
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
136
+ var _render, baseElement, results;
137
+ return _regenerator["default"].wrap(function _callee$(_context) {
138
+ while (1) switch (_context.prev = _context.next) {
139
+ case 0:
140
+ // baseElement is needed when using React Portals
141
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
142
+ label: "test-select-label",
143
+ helperText: "test-select-helper-text",
144
+ placeholder: "Example text",
145
+ options: single_options,
146
+ defaultValue: 1,
147
+ margin: "medium",
148
+ name: "Name",
149
+ size: "medium",
150
+ searchable: true
151
+ }), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
152
+ label: "test-select-label",
153
+ helperText: "test-select-helper-text",
154
+ placeholder: "Example text",
155
+ options: single_options,
156
+ defaultValue: ["4", "2", "6"],
157
+ margin: "medium",
158
+ name: "Name",
159
+ size: "medium",
160
+ searchable: true,
161
+ multiple: true,
162
+ optional: true
163
+ }))), baseElement = _render.baseElement;
164
+ _context.next = 3;
165
+ return (0, _jestAxe.axe)(baseElement);
166
+ case 3:
167
+ results = _context.sent;
168
+ expect(results).toHaveNoViolations();
169
+ case 5:
170
+ case "end":
171
+ return _context.stop();
172
+ }
173
+ }, _callee);
174
+ })));
175
+ it("Should not have basic accessibility issues for group mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
176
+ var _render2, baseElement, results;
177
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
178
+ while (1) switch (_context2.prev = _context2.next) {
179
+ case 0:
180
+ // baseElement is needed when using React Portals
181
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(_Select["default"], {
182
+ label: "test-select-label",
183
+ helperText: "test-select-helper-text",
184
+ placeholder: "Example text",
185
+ options: group_options,
186
+ defaultValue: ["4", "2", "6"],
187
+ error: "Error",
188
+ margin: "medium",
189
+ name: "Name",
190
+ size: "medium",
191
+ searchable: true,
192
+ multiple: true
193
+ }), /*#__PURE__*/_react["default"].createElement(_Select["default"], {
194
+ label: "test-select-label",
195
+ helperText: "test-select-helper-text",
196
+ placeholder: "Example text",
197
+ options: group_options,
198
+ defaultValue: ["4", "2", "6"],
199
+ margin: "medium",
200
+ name: "Name",
201
+ size: "medium",
202
+ searchable: true,
203
+ multiple: true,
204
+ disabled: true
205
+ }))), baseElement = _render2.baseElement;
206
+ _context2.next = 3;
207
+ return (0, _jestAxe.axe)(baseElement);
208
+ case 3:
209
+ results = _context2.sent;
210
+ expect(results).toHaveNoViolations();
211
+ case 5:
212
+ case "end":
213
+ return _context2.stop();
214
+ }
215
+ }, _callee2);
216
+ })));
217
+ });
@@ -198,7 +198,6 @@ const url_options = [
198
198
  icon: (
199
199
  <svg
200
200
  version="1.1"
201
- id="Capa_1"
202
201
  x="0px"
203
202
  y="0px"
204
203
  width="438.536px"
@@ -0,0 +1,59 @@
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 _Sidenav = _interopRequireDefault(require("./Sidenav.tsx"));
10
+ var iconSVG = /*#__PURE__*/_react["default"].createElement("svg", {
11
+ version: "1.1",
12
+ x: "0px",
13
+ y: "0px",
14
+ width: "438.536px",
15
+ height: "438.536px",
16
+ viewBox: "0 0 438.536 438.536",
17
+ fill: "currentColor"
18
+ }, /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("path", {
19
+ d: "M414.41,24.123C398.333,8.042,378.963,0,356.315,0H82.228C59.58,0,40.21,8.042,24.126,24.123\nC8.045,40.207,0.003,59.576,0.003,82.225v274.084c0,22.647,8.042,42.018,24.123,58.102c16.084,16.084,35.454,24.126,58.102,24.126\nh274.084c22.648,0,42.018-8.042,58.095-24.126c16.084-16.084,24.126-35.454,24.126-58.102V82.225\nC438.532,59.576,430.49,40.204,414.41,24.123z M373.155,225.548h-49.963V406.84h-74.802V225.548H210.99V163.02h37.401v-37.402\nc0-26.838,6.283-47.107,18.843-60.813c12.559-13.706,33.304-20.555,62.242-20.555h49.963v62.526h-31.401\nc-10.663,0-17.467,1.853-20.417,5.568c-2.949,3.711-4.428,10.23-4.428,19.558v31.119h56.534L373.155,225.548z"
20
+ })));
21
+ describe("Sidenav 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(_Sidenav["default"], {
28
+ title: "Title"
29
+ }, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Section, null, /*#__PURE__*/_react["default"].createElement("p", null, "nav-content-test"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
30
+ href: "#",
31
+ icon: iconSVG,
32
+ selected: true
33
+ }, "Link")), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Section, null, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Group, {
34
+ title: "Collapsable",
35
+ icon: iconSVG,
36
+ collapsable: true
37
+ }, /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
38
+ href: "#"
39
+ }, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
40
+ href: "#"
41
+ }, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
42
+ href: "#"
43
+ }, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
44
+ href: "#"
45
+ }, "Lorem ipsum"), /*#__PURE__*/_react["default"].createElement(_Sidenav["default"].Link, {
46
+ href: "#"
47
+ }, "Lorem ipsum"))))), container = _render.container;
48
+ _context.next = 3;
49
+ return (0, _jestAxe.axe)(container);
50
+ case 3:
51
+ results = _context.sent;
52
+ expect(results).toHaveNoViolations();
53
+ case 5:
54
+ case "end":
55
+ return _context.stop();
56
+ }
57
+ }, _callee);
58
+ })));
59
+ });
@@ -13,12 +13,12 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
13
13
  var _react = _interopRequireWildcard(require("react"));
14
14
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
15
15
  var _variables = require("../common/variables");
16
- var _SidenavContext = require("../layout/SidenavContext");
16
+ var _SidenavContext = require("./SidenavContext");
17
17
  var _useTheme = _interopRequireDefault(require("../useTheme"));
18
18
  var _Flex = _interopRequireDefault(require("../flex/Flex"));
19
19
  var _Bleed = _interopRequireDefault(require("../bleed/Bleed"));
20
- var _Icons = _interopRequireDefault(require("./Icons"));
21
20
  var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
21
+ var _Icon = _interopRequireDefault(require("../icon/Icon"));
22
22
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
23
23
  var _excluded = ["href", "newWindow", "selected", "icon", "onClick", "tabIndex", "children"];
24
24
  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); }
@@ -74,10 +74,12 @@ var Group = function Group(_ref4) {
74
74
  }, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
75
75
  alignItems: "center",
76
76
  gap: "0.5rem"
77
- }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
78
- src: icon
79
- }) : icon, title), collapsed ? _Icons["default"].collapsedIcon : _Icons["default"].collapsableIcon) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
80
- src: icon
77
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
78
+ icon: icon
79
+ }) : icon, title), /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
80
+ icon: collapsed ? "expand_more" : "expand_less"
81
+ })) : title && /*#__PURE__*/_react["default"].createElement(SidenavGroupTitle, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
82
+ icon: icon
81
83
  }) : icon, title), !collapsed && children));
82
84
  };
83
85
  var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
@@ -113,9 +115,11 @@ var Link = /*#__PURE__*/(0, _react.forwardRef)(function (_ref5, ref) {
113
115
  }, otherProps), /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
114
116
  alignItems: "center",
115
117
  gap: "0.5rem"
116
- }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
117
- src: icon
118
- }) : icon, children), newWindow && _Icons["default"].externalLinkIcon);
118
+ }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
119
+ icon: icon
120
+ }) : icon, children), newWindow && /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
121
+ icon: "open_in_new"
122
+ }));
119
123
  });
120
124
  var SidenavContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 280px;\n @media (max-width: ", "rem) {\n width: 100vw;\n }\n padding: 2rem 1rem;\n background-color: ", ";\n\n overflow-y: auto;\n overflow-x: hidden;\n ::-webkit-scrollbar {\n width: 2px;\n }\n ::-webkit-scrollbar-track {\n background-color: ", ";\n border-radius: 3px;\n }\n ::-webkit-scrollbar-thumb {\n background-color: ", ";\n border-radius: 3px;\n }\n"])), _variables.responsiveSizes.medium, function (props) {
121
125
  return props.theme.backgroundColor;
@@ -141,7 +145,7 @@ var SidenavTitle = _styledComponents["default"].div(_templateObject2 || (_templa
141
145
  });
142
146
  var Divider = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n height: 1px;\n background-color: ", ";\n\n &:last-child {\n display: none;\n }\n"])), _coreTokens["default"].color_grey_400);
143
147
  var SidenavGroup = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n a {\n padding: 0.5rem 1.2rem 0.5rem 2.25rem;\n }\n"])));
144
- var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
148
+ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n span::before {\n font-size: 16px;\n }\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
145
149
  return props.theme.groupTitleFontFamily;
146
150
  }, function (props) {
147
151
  return props.theme.groupTitleFontStyle;
@@ -150,7 +154,7 @@ var SidenavGroupTitle = _styledComponents["default"].span(_templateObject5 || (_
150
154
  }, function (props) {
151
155
  return props.theme.groupTitleFontSize;
152
156
  });
153
- var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n }\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
157
+ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n all: unset;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0.5rem 1.2rem;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n }\n span::before {\n font-size: 16px;\n }\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
154
158
  return props.theme.groupTitleFontFamily;
155
159
  }, function (props) {
156
160
  return props.theme.groupTitleFontStyle;
@@ -167,7 +171,7 @@ var SidenavGroupTitleButton = _styledComponents["default"].button(_templateObjec
167
171
  }, function (props) {
168
172
  return props.selectedGroup ? "#333" : props.theme.groupTitleActiveBackgroundColor;
169
173
  });
170
- var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n\n img,\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
174
+ var SidenavLink = _styledComponents["default"].a(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5rem;\n padding: 0.5rem 1.2rem;\n box-shadow: 0 0 0 2px transparent;\n font-family: ", ";\n font-style: ", ";\n font-weight: ", ";\n font-size: ", ";\n letter-spacing: ", ";\n text-transform: ", ";\n text-decoration: ", ";\n cursor: pointer;\n\n ", "\n\n &:focus, &:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n &:hover {\n ", "\n }\n &:active {\n color: #fff;\n background-color: ", ";\n outline: 2px solid #0095ff;\n outline-offset: -2px;\n }\n span::before {\n font-size: 16px;\n }\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
171
175
  return props.theme.linkFontFamily;
172
176
  }, function (props) {
173
177
  return props.theme.linkFontStyle;
@@ -15,7 +15,6 @@ export default {
15
15
  const iconSVG = (
16
16
  <svg
17
17
  version="1.1"
18
- id="Capa_1"
19
18
  x="0px"
20
19
  y="0px"
21
20
  width="438.536px"
@@ -67,15 +66,11 @@ export const Chromatic = () => (
67
66
  </DxcSidenav.Group>
68
67
  </DxcSidenav.Section>
69
68
  <DxcSidenav.Section>
70
- <DxcSidenav.Group
71
- collapsable={true}
72
- title="Section Group"
73
- icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png"
74
- >
69
+ <DxcSidenav.Group collapsable={true} title="Section Group" icon="filled_bottom_app_bar">
75
70
  <DxcSidenav.Link selected>Group Link</DxcSidenav.Link>
76
71
  <DxcSidenav.Link icon={iconSVG}>Group Link</DxcSidenav.Link>
77
72
  </DxcSidenav.Group>
78
- <DxcSidenav.Link icon="https://upload.wikimedia.org/wikipedia/commons/7/73/Flat_tick_icon.svg" newWindow>
73
+ <DxcSidenav.Link icon="filled_bottom_app_bar" newWindow>
79
74
  Single Link
80
75
  </DxcSidenav.Link>
81
76
  <DxcSidenav.Link newWindow>Single Link</DxcSidenav.Link>
@@ -99,7 +94,7 @@ export const Chromatic = () => (
99
94
  <DxcSidenav.Section>
100
95
  <DxcSidenav.Link>Single Link</DxcSidenav.Link>
101
96
  <DxcSidenav.Group collapsable={true} title="Collapsable Group">
102
- <DxcSidenav.Link icon="https://cdn-icons-png.flaticon.com/512/5039/5039041.png">Group Link</DxcSidenav.Link>
97
+ <DxcSidenav.Link icon="filled_bottom_app_bar">Group Link</DxcSidenav.Link>
103
98
  </DxcSidenav.Group>
104
99
  </DxcSidenav.Section>
105
100
  <DxcSidenav.Section>
@@ -279,4 +274,4 @@ CollapsedActiveGroup.play = async ({ canvasElement }) => {
279
274
  const canvas = within(canvasElement);
280
275
  const collapsableGroups = canvas.getAllByText("Collapsed Group");
281
276
  userEvent.click(collapsableGroups[0]);
282
- };
277
+ };
@@ -23,7 +23,7 @@ export type SidenavGroupPropsType = {
23
23
  */
24
24
  collapsable?: boolean;
25
25
  /**
26
- * The icon to be displayed next to the title of the group.
26
+ * Material Symbol name or SVG icon to be displayed next to the title of the group.
27
27
  */
28
28
  icon?: string | SVG;
29
29
  /**
@@ -41,7 +41,7 @@ export type SidenavLinkPropsType = {
41
41
  */
42
42
  newWindow?: boolean;
43
43
  /**
44
- * Element or path used as the icon that will be placed to the left of the link text.
44
+ * The Material symbol or SVG element used as the icon that will be placed to the left of the link text.
45
45
  */
46
46
  icon?: string | SVG;
47
47
  /**
@@ -0,0 +1,104 @@
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
7
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _react2 = require("@testing-library/react");
10
+ var _jestAxe = require("jest-axe");
11
+ var _Slider = _interopRequireDefault(require("./Slider.tsx"));
12
+ // Mocking DOMRect for Radix Primitive Popover
13
+ global.globalThis = global;
14
+ global.DOMRect = {
15
+ fromRect: function fromRect() {
16
+ return {
17
+ top: 0,
18
+ left: 0,
19
+ bottom: 0,
20
+ right: 0,
21
+ width: 0,
22
+ height: 0
23
+ };
24
+ }
25
+ };
26
+ global.ResizeObserver = /*#__PURE__*/function () {
27
+ function ResizeObserver() {
28
+ (0, _classCallCheck2["default"])(this, ResizeObserver);
29
+ }
30
+ (0, _createClass2["default"])(ResizeObserver, [{
31
+ key: "observe",
32
+ value: function observe() {}
33
+ }, {
34
+ key: "unobserve",
35
+ value: function unobserve() {}
36
+ }, {
37
+ key: "disconnect",
38
+ value: function disconnect() {}
39
+ }]);
40
+ return ResizeObserver;
41
+ }();
42
+ describe("Slider component accessibility tests", function () {
43
+ it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
44
+ var _render, container, results;
45
+ return _regenerator["default"].wrap(function _callee$(_context) {
46
+ while (1) switch (_context.prev = _context.next) {
47
+ case 0:
48
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
49
+ helperText: "Helper Text",
50
+ margin: "medium",
51
+ name: "Name",
52
+ size: "medium",
53
+ label: "label",
54
+ step: 10,
55
+ minValue: 0,
56
+ maxValue: 100,
57
+ value: 50,
58
+ showLimitsValues: true,
59
+ showInput: true,
60
+ marks: true
61
+ })), container = _render.container;
62
+ _context.next = 3;
63
+ return (0, _jestAxe.axe)(container);
64
+ case 3:
65
+ results = _context.sent;
66
+ expect(results).toHaveNoViolations();
67
+ case 5:
68
+ case "end":
69
+ return _context.stop();
70
+ }
71
+ }, _callee);
72
+ })));
73
+ it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
74
+ var _render2, container, results;
75
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
76
+ while (1) switch (_context2.prev = _context2.next) {
77
+ case 0:
78
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Slider["default"], {
79
+ helperText: "Helper Text",
80
+ margin: "medium",
81
+ name: "Name",
82
+ size: "medium",
83
+ label: "label",
84
+ step: 10,
85
+ minValue: 0,
86
+ maxValue: 100,
87
+ value: 50,
88
+ showLimitsValues: true,
89
+ showInput: true,
90
+ marks: true,
91
+ disabled: true
92
+ })), container = _render2.container;
93
+ _context2.next = 3;
94
+ return (0, _jestAxe.axe)(container);
95
+ case 3:
96
+ results = _context2.sent;
97
+ expect(results).toHaveNoViolations();
98
+ case 5:
99
+ case "end":
100
+ return _context2.stop();
101
+ }
102
+ }, _callee2);
103
+ })));
104
+ });
@@ -0,0 +1,96 @@
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 _Spinner = _interopRequireDefault(require("./Spinner.tsx"));
10
+ var _Flex = _interopRequireDefault(require("../flex/Flex.tsx"));
11
+ describe("Spinner component accessibility tests", function () {
12
+ it("Should not have basic accessibility issues for overlay mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
13
+ var _render, container, results;
14
+ return _regenerator["default"].wrap(function _callee$(_context) {
15
+ while (1) switch (_context.prev = _context.next) {
16
+ case 0:
17
+ _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
18
+ label: "test-loading",
19
+ margin: "medium",
20
+ mode: "overlay",
21
+ value: 50,
22
+ showValue: true
23
+ }), /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
24
+ label: "test-loading",
25
+ margin: "medium",
26
+ mode: "overlay",
27
+ value: 50
28
+ }))), container = _render.container;
29
+ _context.next = 3;
30
+ return (0, _jestAxe.axe)(container);
31
+ case 3:
32
+ results = _context.sent;
33
+ expect(results).toHaveNoViolations();
34
+ case 5:
35
+ case "end":
36
+ return _context.stop();
37
+ }
38
+ }, _callee);
39
+ })));
40
+ it("Should not have basic accessibility issues for large mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
41
+ var _render2, container, results;
42
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
43
+ while (1) switch (_context2.prev = _context2.next) {
44
+ case 0:
45
+ _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
46
+ label: "test-loading",
47
+ margin: "medium",
48
+ mode: "large",
49
+ value: 50,
50
+ showValue: true
51
+ }), /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
52
+ label: "test-loading",
53
+ margin: "medium",
54
+ mode: "large",
55
+ value: 50
56
+ }))), container = _render2.container;
57
+ _context2.next = 3;
58
+ return (0, _jestAxe.axe)(container);
59
+ case 3:
60
+ results = _context2.sent;
61
+ expect(results).toHaveNoViolations();
62
+ case 5:
63
+ case "end":
64
+ return _context2.stop();
65
+ }
66
+ }, _callee2);
67
+ })));
68
+ it("Should not have basic accessibility issues for small mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
69
+ var _render3, container, results;
70
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
71
+ while (1) switch (_context3.prev = _context3.next) {
72
+ case 0:
73
+ _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Flex["default"], null, /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
74
+ label: "test-loading",
75
+ margin: "medium",
76
+ mode: "small",
77
+ value: 50,
78
+ showValue: true
79
+ }), /*#__PURE__*/_react["default"].createElement(_Spinner["default"], {
80
+ label: "test-loading",
81
+ margin: "medium",
82
+ mode: "small",
83
+ value: 50
84
+ }))), container = _render3.container;
85
+ _context3.next = 3;
86
+ return (0, _jestAxe.axe)(container);
87
+ case 3:
88
+ results = _context3.sent;
89
+ expect(results).toHaveNoViolations();
90
+ case 5:
91
+ case "end":
92
+ return _context3.stop();
93
+ }
94
+ }, _callee3);
95
+ })));
96
+ });