@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.
- package/accordion/Accordion.accessibility.test.js +71 -0
- package/accordion/Accordion.js +8 -21
- package/accordion/Accordion.stories.tsx +4 -36
- package/accordion/types.d.ts +1 -1
- package/accordion-group/AccordionGroup.accessibility.test.js +88 -0
- package/accordion-group/AccordionGroup.d.ts +2 -3
- package/accordion-group/AccordionGroup.js +3 -3
- package/accordion-group/AccordionGroupAccordion.js +2 -2
- package/accordion-group/AccordionGroupContext.d.ts +3 -0
- package/accordion-group/AccordionGroupContext.js +8 -0
- package/accordion-group/types.d.ts +1 -1
- package/action-icon/ActionIcon.accessibility.test.js +63 -0
- package/action-icon/ActionIcon.js +4 -3
- package/action-icon/ActionIcon.stories.tsx +3 -3
- package/action-icon/types.d.ts +1 -1
- package/alert/Alert.accessibility.test.js +95 -0
- package/alert/Alert.js +15 -69
- package/badge/Badge.accessibility.test.js +129 -0
- package/badge/Badge.js +6 -4
- package/badge/Badge.stories.tsx +11 -11
- package/badge/types.d.ts +1 -1
- package/box/Box.accessibility.test.js +33 -0
- package/bulleted-list/BulletedList.accessibility.test.js +107 -0
- package/bulleted-list/BulletedList.js +6 -3
- package/bulleted-list/BulletedList.stories.tsx +1 -1
- package/button/Button.accessibility.test.js +127 -0
- package/button/Button.js +4 -3
- package/button/Button.stories.tsx +32 -51
- package/button/types.d.ts +1 -1
- package/card/Card.accessibility.test.js +36 -0
- package/checkbox/Checkbox.accessibility.test.js +87 -0
- package/chip/Chip.accessibility.test.js +67 -0
- package/chip/Chip.js +8 -5
- package/chip/Chip.stories.tsx +5 -24
- package/chip/Chip.test.js +4 -4
- package/contextual-menu/ContextualMenu.accessibility.test.js +86 -0
- package/date-input/DateInput.accessibility.test.js +216 -0
- package/date-input/DateInput.js +1 -2
- package/date-input/DatePicker.js +12 -6
- package/dialog/Dialog.accessibility.test.js +69 -0
- package/dialog/Dialog.test.js +1 -1
- package/divider/Divider.accessibility.test.js +33 -0
- package/divider/types.d.ts +3 -1
- package/dropdown/Dropdown.accessibility.test.js +180 -0
- package/dropdown/Dropdown.js +12 -29
- package/dropdown/Dropdown.stories.tsx +5 -16
- package/dropdown/DropdownMenuItem.js +6 -3
- package/dropdown/types.d.ts +2 -4
- package/file-input/FileInput.accessibility.test.js +160 -0
- package/file-input/FileInput.js +3 -39
- package/file-input/FileInput.test.js +7 -84
- package/file-input/FileItem.js +13 -27
- package/footer/Footer.accessibility.test.js +117 -0
- package/footer/Footer.js +7 -5
- package/footer/Footer.stories.tsx +28 -3
- package/footer/types.d.ts +1 -1
- package/header/Header.accessibility.test.js +84 -0
- package/header/Header.js +9 -20
- package/heading/Heading.accessibility.test.js +33 -0
- package/icon/Icon.accessibility.test.js +30 -0
- package/icon/Icon.js +1 -1
- package/icon/Icon.stories.tsx +5 -3
- package/image/Image.accessibility.test.js +56 -0
- package/layout/ApplicationLayout.js +1 -1
- package/layout/Icons.js +0 -2
- package/link/Link.accessibility.test.js +112 -0
- package/link/Link.js +7 -5
- package/link/Link.stories.tsx +2 -2
- package/link/types.d.ts +1 -1
- package/nav-tabs/NavTabs.accessibility.test.js +44 -0
- package/nav-tabs/NavTabs.d.ts +1 -2
- package/nav-tabs/NavTabs.js +3 -3
- package/nav-tabs/NavTabs.stories.tsx +26 -23
- package/nav-tabs/NavTabs.test.js +1 -2
- package/nav-tabs/NavTabsContext.d.ts +3 -0
- package/nav-tabs/NavTabsContext.js +8 -0
- package/nav-tabs/Tab.js +13 -14
- package/nav-tabs/types.d.ts +1 -1
- package/number-input/NumberInput.accessibility.test.js +228 -0
- package/number-input/NumberInput.d.ts +0 -7
- package/number-input/NumberInput.js +3 -3
- package/number-input/NumberInputContext.d.ts +3 -0
- package/number-input/NumberInputContext.js +8 -0
- package/number-input/types.d.ts +6 -0
- package/package.json +11 -11
- package/paginator/Paginator.accessibility.test.js +79 -0
- package/paragraph/Paragraph.accessibility.test.js +28 -0
- package/password-input/PasswordInput.accessibility.test.js +153 -0
- package/progress-bar/ProgressBar.accessibility.test.js +35 -0
- package/quick-nav/QuickNav.accessibility.test.js +57 -0
- package/radio-group/RadioGroup.accessibility.test.js +97 -0
- package/resultset-table/ResultsetTable.accessibility.test.js +274 -0
- package/resultset-table/ResultsetTable.d.ts +1 -1
- package/resultset-table/ResultsetTable.js +10 -6
- package/resultset-table/ResultsetTable.stories.tsx +5 -1
- package/resultset-table/ResultsetTable.test.js +14 -4
- package/resultset-table/types.d.ts +38 -11
- package/select/Select.accessibility.test.js +217 -0
- package/select/Select.stories.tsx +0 -1
- package/sidenav/Sidenav.accessibility.test.js +59 -0
- package/sidenav/Sidenav.js +16 -12
- package/sidenav/Sidenav.stories.tsx +4 -9
- package/sidenav/types.d.ts +2 -2
- package/slider/Slider.accessibility.test.js +104 -0
- package/spinner/Spinner.accessibility.test.js +96 -0
- package/status-light/StatusLight.accessibility.test.js +157 -0
- package/switch/Switch.accessibility.test.js +89 -0
- package/table/Table.accessibility.test.js +82 -0
- package/table/Table.js +1 -10
- package/table/Table.stories.tsx +2 -9
- package/table/types.d.ts +1 -15
- package/tabs/Tabs.accessibility.test.js +56 -0
- package/tag/Tag.accessibility.test.js +69 -0
- package/tag/Tag.js +6 -6
- package/tag/Tag.stories.tsx +4 -7
- package/tag/Tag.test.js +4 -12
- package/tag/types.d.ts +2 -2
- package/text-input/Suggestions.js +5 -3
- package/text-input/TextInput.accessibility.test.js +321 -0
- package/text-input/TextInput.js +10 -8
- package/text-input/TextInput.stories.tsx +1 -1
- package/textarea/Textarea.accessibility.test.js +155 -0
- package/toggle-group/ToggleGroup.accessibility.test.js +107 -0
- package/toggle-group/ToggleGroup.js +4 -3
- package/toggle-group/ToggleGroup.stories.tsx +3 -3
- package/toggle-group/types.d.ts +2 -2
- package/typography/Typography.accessibility.test.js +339 -0
- package/wizard/Wizard.accessibility.test.js +55 -0
- package/date-input/Icons.d.ts +0 -6
- package/date-input/Icons.js +0 -58
- package/sidenav/Icons.d.ts +0 -7
- package/sidenav/Icons.js +0 -47
- package/text-input/Icons.d.ts +0 -8
- package/text-input/Icons.js +0 -56
- /package/{layout → sidenav}/SidenavContext.d.ts +0 -0
- /package/{layout → sidenav}/SidenavContext.js +0 -0
package/chip/Chip.stories.tsx
CHANGED
|
@@ -13,7 +13,6 @@ export default {
|
|
|
13
13
|
const iconSVG = (
|
|
14
14
|
<svg
|
|
15
15
|
version="1.1"
|
|
16
|
-
id="Capa_1"
|
|
17
16
|
x="0px"
|
|
18
17
|
y="0px"
|
|
19
18
|
width="438.536px"
|
|
@@ -64,20 +63,11 @@ export const Chromatic = () => (
|
|
|
64
63
|
</ExampleContainer>
|
|
65
64
|
<ExampleContainer>
|
|
66
65
|
<Title title="Chip with prefix (SVG) and suffix (URL)" theme="light" level={4} />
|
|
67
|
-
<DxcChip
|
|
68
|
-
label="Chip with prefix and suffix"
|
|
69
|
-
prefixIcon={iconSVG}
|
|
70
|
-
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
71
|
-
/>
|
|
66
|
+
<DxcChip label="Chip with prefix and suffix" prefixIcon={iconSVG} suffixIcon="filled_check_circle" />
|
|
72
67
|
</ExampleContainer>
|
|
73
68
|
<ExampleContainer>
|
|
74
69
|
<Title title="Disabled chip" theme="light" level={4} />
|
|
75
|
-
<DxcChip
|
|
76
|
-
label="Disabled"
|
|
77
|
-
disabled
|
|
78
|
-
prefixIcon={iconSVG}
|
|
79
|
-
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
80
|
-
/>
|
|
70
|
+
<DxcChip label="Disabled" disabled prefixIcon={iconSVG} suffixIcon="filled_check_circle" />
|
|
81
71
|
</ExampleContainer>
|
|
82
72
|
<ExampleContainer>
|
|
83
73
|
<Title title="Chip with ellipsis" theme="light" level={4} />
|
|
@@ -146,22 +136,13 @@ export const Chromatic = () => (
|
|
|
146
136
|
<ExampleContainer>
|
|
147
137
|
<Title title="Chip with prefix and suffix" theme="light" level={4} />
|
|
148
138
|
<HalstackProvider theme={opinionatedTheme}>
|
|
149
|
-
<DxcChip
|
|
150
|
-
label="Chip"
|
|
151
|
-
prefixIcon={iconSVG}
|
|
152
|
-
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
153
|
-
/>
|
|
139
|
+
<DxcChip label="Chip" prefixIcon={iconSVG} suffixIcon="filled_check_circle" />
|
|
154
140
|
</HalstackProvider>
|
|
155
141
|
</ExampleContainer>
|
|
156
142
|
<ExampleContainer>
|
|
157
143
|
<Title title="Chip with prefix and suffix" theme="light" level={4} />
|
|
158
144
|
<HalstackProvider theme={opinionatedTheme}>
|
|
159
|
-
<DxcChip
|
|
160
|
-
label="Chip"
|
|
161
|
-
disabled
|
|
162
|
-
prefixIcon={iconSVG}
|
|
163
|
-
suffixIcon="https://upload.wikimedia.org/wikipedia/commons/e/e0/Check_green_icon.svg"
|
|
164
|
-
/>
|
|
145
|
+
<DxcChip label="Chip" disabled prefixIcon={iconSVG} suffixIcon="filled_check_circle" />
|
|
165
146
|
</HalstackProvider>
|
|
166
147
|
</ExampleContainer>
|
|
167
148
|
<ExampleContainer pseudoState="pseudo-hover">
|
|
@@ -199,7 +180,7 @@ const ChipPrefixFocused = () => (
|
|
|
199
180
|
const ChipSuffixFocused = () => (
|
|
200
181
|
<ExampleContainer>
|
|
201
182
|
<Title title="Chip with suffix" theme="light" level={4} />
|
|
202
|
-
<DxcChip label="Chip with suffix" suffixIcon="
|
|
183
|
+
<DxcChip label="Chip with suffix" suffixIcon="filled_delete" onClickSuffix={() => {}} />
|
|
203
184
|
</ExampleContainer>
|
|
204
185
|
);
|
|
205
186
|
|
package/chip/Chip.test.js
CHANGED
|
@@ -16,26 +16,26 @@ describe("Chip component tests", function () {
|
|
|
16
16
|
var onClick = jest.fn();
|
|
17
17
|
var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
|
|
18
18
|
label: "Chip",
|
|
19
|
-
prefixIcon: "
|
|
19
|
+
prefixIcon: "nutrition",
|
|
20
20
|
onClickPrefix: onClick
|
|
21
21
|
})),
|
|
22
22
|
getByText = _render2.getByText,
|
|
23
23
|
getByRole = _render2.getByRole;
|
|
24
24
|
expect(getByText("Chip")).toBeTruthy();
|
|
25
|
-
_react2.fireEvent.click(getByRole("
|
|
25
|
+
_react2.fireEvent.click(getByRole("button"));
|
|
26
26
|
expect(onClick).toHaveBeenCalled();
|
|
27
27
|
});
|
|
28
28
|
test("Calls correct function when clicking on suffix icon", function () {
|
|
29
29
|
var onClick = jest.fn();
|
|
30
30
|
var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Chip["default"], {
|
|
31
31
|
label: "Chip",
|
|
32
|
-
suffixIcon: "
|
|
32
|
+
suffixIcon: "nutrition",
|
|
33
33
|
onClickSuffix: onClick
|
|
34
34
|
})),
|
|
35
35
|
getByText = _render3.getByText,
|
|
36
36
|
getByRole = _render3.getByRole;
|
|
37
37
|
expect(getByText("Chip")).toBeTruthy();
|
|
38
|
-
_react2.fireEvent.click(getByRole("
|
|
38
|
+
_react2.fireEvent.click(getByRole("button"));
|
|
39
39
|
expect(onClick).toHaveBeenCalled();
|
|
40
40
|
});
|
|
41
41
|
});
|
|
@@ -0,0 +1,86 @@
|
|
|
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 _ContextualMenu = _interopRequireDefault(require("./ContextualMenu"));
|
|
10
|
+
var badge_icon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
11
|
+
width: "24",
|
|
12
|
+
height: "24",
|
|
13
|
+
viewBox: "0 0 24 24",
|
|
14
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
15
|
+
fill: "currentColor"
|
|
16
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
17
|
+
d: "M11 17H13V11H11V17ZM12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.59 20 4 16.41 4 12C4 7.59 7.59 4 12 4C16.41 4 20 7.59 20 12C20 16.41 16.41 20 12 20ZM11 9H13V7H11V9Z"
|
|
18
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
19
|
+
d: "M11 7H13V9H11V7ZM11 11H13V17H11V11Z"
|
|
20
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
21
|
+
d: "M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 20C7.59 20 4 16.41 4 12C4 7.59 7.59 4 12 4C16.41 4 20 7.59 20 12C20 16.41 16.41 20 12 20Z"
|
|
22
|
+
}));
|
|
23
|
+
var key_icon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
24
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
25
|
+
height: "24",
|
|
26
|
+
viewBox: "0 -960 960 960",
|
|
27
|
+
width: "24",
|
|
28
|
+
fill: "currentColor"
|
|
29
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
30
|
+
d: "M280-400q-33 0-56.5-23.5T200-480q0-33 23.5-56.5T280-560q33 0 56.5 23.5T360-480q0 33-23.5 56.5T280-400Zm0 160q-100 0-170-70T40-480q0-100 70-170t170-70q67 0 121.5 33t86.5 87h352l120 120-180 180-80-60-80 60-85-60h-47q-32 54-86.5 87T280-240Zm0-80q56 0 98.5-34t56.5-86h125l58 41 82-61 71 55 75-75-40-40H435q-14-52-56.5-86T280-640q-66 0-113 47t-47 113q0 66 47 113t113 47Z"
|
|
31
|
+
}));
|
|
32
|
+
var fav_icon = /*#__PURE__*/_react["default"].createElement("svg", {
|
|
33
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
34
|
+
height: "24",
|
|
35
|
+
viewBox: "0 -960 960 960",
|
|
36
|
+
width: "24",
|
|
37
|
+
fill: "currentColor"
|
|
38
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
39
|
+
d: "m480-120-58-52q-101-91-167-157T150-447.5Q111-500 95.5-544T80-634q0-94 63-157t157-63q52 0 99 22t81 62q34-40 81-62t99-22q94 0 157 63t63 157q0 46-15.5 90T810-447.5Q771-395 705-329T538-172l-58 52Zm0-108q96-86 158-147.5t98-107q36-45.5 50-81t14-70.5q0-60-40-100t-100-40q-47 0-87 26.5T518-680h-76q-15-41-55-67.5T300-774q-60 0-100 40t-40 100q0 35 14 70.5t50 81q36 45.5 98 107T480-228Zm0-273Z"
|
|
40
|
+
}));
|
|
41
|
+
var itemsWithTruncatedText = [{
|
|
42
|
+
label: "Item with a very long label that should be truncated",
|
|
43
|
+
slot: /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"].Badge, {
|
|
44
|
+
color: "blue",
|
|
45
|
+
mode: "contextual",
|
|
46
|
+
label: "Label",
|
|
47
|
+
size: "small",
|
|
48
|
+
icon: badge_icon,
|
|
49
|
+
title: "Badge"
|
|
50
|
+
}),
|
|
51
|
+
icon: key_icon
|
|
52
|
+
}, {
|
|
53
|
+
label: "Item 2",
|
|
54
|
+
slot: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
55
|
+
width: "12",
|
|
56
|
+
height: "12",
|
|
57
|
+
viewBox: "0 0 12 12",
|
|
58
|
+
fill: "currentColor",
|
|
59
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
60
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
61
|
+
d: "M10.6667 10.6667H1.33333V1.33333H6V0H1.33333C0.593333 0 0 0.6 0 1.33333V10.6667C0 11.4 0.593333 12 1.33333 12H10.6667C11.4 12 12 11.4 12 10.6667V6H10.6667V10.6667ZM7.33333 0V1.33333H9.72667L3.17333 7.88667L4.11333 8.82667L10.6667 2.27333V4.66667H12V0H7.33333Z",
|
|
62
|
+
fill: "#323232"
|
|
63
|
+
})),
|
|
64
|
+
icon: fav_icon
|
|
65
|
+
}];
|
|
66
|
+
describe("Context menu accessibility tests", function () {
|
|
67
|
+
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
68
|
+
var _render, container, results;
|
|
69
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
70
|
+
while (1) switch (_context.prev = _context.next) {
|
|
71
|
+
case 0:
|
|
72
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_ContextualMenu["default"], {
|
|
73
|
+
items: itemsWithTruncatedText
|
|
74
|
+
})), container = _render.container;
|
|
75
|
+
_context.next = 3;
|
|
76
|
+
return (0, _jestAxe.axe)(container);
|
|
77
|
+
case 3:
|
|
78
|
+
results = _context.sent;
|
|
79
|
+
expect(results).toHaveNoViolations();
|
|
80
|
+
case 5:
|
|
81
|
+
case "end":
|
|
82
|
+
return _context.stop();
|
|
83
|
+
}
|
|
84
|
+
}, _callee);
|
|
85
|
+
})));
|
|
86
|
+
});
|
|
@@ -0,0 +1,216 @@
|
|
|
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 _DateInput = _interopRequireDefault(require("./DateInput.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("DateInput 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, baseElement, results;
|
|
45
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
46
|
+
while (1) switch (_context.prev = _context.next) {
|
|
47
|
+
case 0:
|
|
48
|
+
// baseElement is needed when using React Portals
|
|
49
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
50
|
+
label: "Example label",
|
|
51
|
+
helperText: "Help message",
|
|
52
|
+
defaultValue: "06-04-2007",
|
|
53
|
+
format: "dd/mm/yy",
|
|
54
|
+
name: "DateInput Name",
|
|
55
|
+
margin: "medium",
|
|
56
|
+
size: "medium",
|
|
57
|
+
placeholder: true,
|
|
58
|
+
clearable: true
|
|
59
|
+
})), baseElement = _render.baseElement;
|
|
60
|
+
_context.next = 3;
|
|
61
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
62
|
+
case 3:
|
|
63
|
+
results = _context.sent;
|
|
64
|
+
expect(results).toHaveNoViolations();
|
|
65
|
+
case 5:
|
|
66
|
+
case "end":
|
|
67
|
+
return _context.stop();
|
|
68
|
+
}
|
|
69
|
+
}, _callee);
|
|
70
|
+
})));
|
|
71
|
+
it("Should not have basic accessibility issues for autocomplete mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
72
|
+
var _render2, baseElement, results;
|
|
73
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
74
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
75
|
+
case 0:
|
|
76
|
+
// baseElement is needed when using React Portals
|
|
77
|
+
_render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
78
|
+
label: "Example label",
|
|
79
|
+
helperText: "Help message",
|
|
80
|
+
defaultValue: "06-04-2007",
|
|
81
|
+
format: "dd/mm/yy",
|
|
82
|
+
name: "DateInput Name",
|
|
83
|
+
margin: "medium",
|
|
84
|
+
size: "medium",
|
|
85
|
+
placeholder: true,
|
|
86
|
+
autocomplete: "on"
|
|
87
|
+
})), baseElement = _render2.baseElement;
|
|
88
|
+
_context2.next = 3;
|
|
89
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
90
|
+
case 3:
|
|
91
|
+
results = _context2.sent;
|
|
92
|
+
expect(results).toHaveNoViolations();
|
|
93
|
+
case 5:
|
|
94
|
+
case "end":
|
|
95
|
+
return _context2.stop();
|
|
96
|
+
}
|
|
97
|
+
}, _callee2);
|
|
98
|
+
})));
|
|
99
|
+
it("Should not have basic accessibility issues for optional mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
100
|
+
var _render3, baseElement, results;
|
|
101
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
102
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
103
|
+
case 0:
|
|
104
|
+
// baseElement is needed when using React Portals
|
|
105
|
+
_render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
106
|
+
label: "Example label",
|
|
107
|
+
helperText: "Help message",
|
|
108
|
+
defaultValue: "06-04-2007",
|
|
109
|
+
format: "dd/mm/yy",
|
|
110
|
+
name: "DateInput Name",
|
|
111
|
+
margin: "medium",
|
|
112
|
+
size: "medium",
|
|
113
|
+
placeholder: true,
|
|
114
|
+
optional: true
|
|
115
|
+
})), baseElement = _render3.baseElement;
|
|
116
|
+
_context3.next = 3;
|
|
117
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
118
|
+
case 3:
|
|
119
|
+
results = _context3.sent;
|
|
120
|
+
expect(results).toHaveNoViolations();
|
|
121
|
+
case 5:
|
|
122
|
+
case "end":
|
|
123
|
+
return _context3.stop();
|
|
124
|
+
}
|
|
125
|
+
}, _callee3);
|
|
126
|
+
})));
|
|
127
|
+
it("Should not have basic accessibility issues for error mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
128
|
+
var _render4, baseElement, results;
|
|
129
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
130
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
131
|
+
case 0:
|
|
132
|
+
// baseElement is needed when using React Portals
|
|
133
|
+
_render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
134
|
+
label: "Example label",
|
|
135
|
+
helperText: "Help message",
|
|
136
|
+
defaultValue: "06-04-2007",
|
|
137
|
+
format: "dd/mm/yy",
|
|
138
|
+
name: "DateInput Name",
|
|
139
|
+
margin: "medium",
|
|
140
|
+
error: "Error message.",
|
|
141
|
+
size: "medium",
|
|
142
|
+
placeholder: true,
|
|
143
|
+
clearable: true
|
|
144
|
+
})), baseElement = _render4.baseElement;
|
|
145
|
+
_context4.next = 3;
|
|
146
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
147
|
+
case 3:
|
|
148
|
+
results = _context4.sent;
|
|
149
|
+
expect(results).toHaveNoViolations();
|
|
150
|
+
case 5:
|
|
151
|
+
case "end":
|
|
152
|
+
return _context4.stop();
|
|
153
|
+
}
|
|
154
|
+
}, _callee4);
|
|
155
|
+
})));
|
|
156
|
+
it("Should not have basic accessibility issues for read-only mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
157
|
+
var _render5, baseElement, results;
|
|
158
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
159
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
160
|
+
case 0:
|
|
161
|
+
// baseElement is needed when using React Portals
|
|
162
|
+
_render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
163
|
+
label: "Example label",
|
|
164
|
+
helperText: "Help message",
|
|
165
|
+
defaultValue: "06-04-2007",
|
|
166
|
+
format: "dd/mm/yy",
|
|
167
|
+
name: "DateInput Name",
|
|
168
|
+
margin: "medium",
|
|
169
|
+
error: "Error message.",
|
|
170
|
+
size: "medium",
|
|
171
|
+
placeholder: true,
|
|
172
|
+
clearable: true,
|
|
173
|
+
readOnly: true
|
|
174
|
+
})), baseElement = _render5.baseElement;
|
|
175
|
+
_context5.next = 3;
|
|
176
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
177
|
+
case 3:
|
|
178
|
+
results = _context5.sent;
|
|
179
|
+
expect(results).toHaveNoViolations();
|
|
180
|
+
case 5:
|
|
181
|
+
case "end":
|
|
182
|
+
return _context5.stop();
|
|
183
|
+
}
|
|
184
|
+
}, _callee5);
|
|
185
|
+
})));
|
|
186
|
+
it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
187
|
+
var _render6, baseElement, results;
|
|
188
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
189
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
190
|
+
case 0:
|
|
191
|
+
// baseElement is needed when using React Portals
|
|
192
|
+
_render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_DateInput["default"], {
|
|
193
|
+
label: "Example label",
|
|
194
|
+
helperText: "Help message",
|
|
195
|
+
defaultValue: "06-04-2007",
|
|
196
|
+
format: "dd/mm/yy",
|
|
197
|
+
name: "DateInput Name",
|
|
198
|
+
margin: "medium",
|
|
199
|
+
error: "Error message.",
|
|
200
|
+
size: "medium",
|
|
201
|
+
placeholder: true,
|
|
202
|
+
clearable: true,
|
|
203
|
+
disabled: true
|
|
204
|
+
})), baseElement = _render6.baseElement;
|
|
205
|
+
_context6.next = 3;
|
|
206
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
207
|
+
case 3:
|
|
208
|
+
results = _context6.sent;
|
|
209
|
+
expect(results).toHaveNoViolations();
|
|
210
|
+
case 5:
|
|
211
|
+
case "end":
|
|
212
|
+
return _context6.stop();
|
|
213
|
+
}
|
|
214
|
+
}, _callee6);
|
|
215
|
+
})));
|
|
216
|
+
});
|
package/date-input/DateInput.js
CHANGED
|
@@ -19,7 +19,6 @@ var _DatePicker = _interopRequireDefault(require("./DatePicker"));
|
|
|
19
19
|
var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
|
|
20
20
|
var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
|
|
21
21
|
var _uuid = require("uuid");
|
|
22
|
-
var _Icons = require("./Icons");
|
|
23
22
|
var _templateObject;
|
|
24
23
|
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); }
|
|
25
24
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(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; }
|
|
@@ -191,7 +190,7 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
|
|
|
191
190
|
placeholder: placeholder ? format.toUpperCase() : null,
|
|
192
191
|
action: {
|
|
193
192
|
onClick: openCalendar,
|
|
194
|
-
icon:
|
|
193
|
+
icon: "filled_calendar_today",
|
|
195
194
|
title: "Open calendar"
|
|
196
195
|
},
|
|
197
196
|
clearable: clearable,
|
package/date-input/DatePicker.js
CHANGED
|
@@ -14,7 +14,7 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
|
14
14
|
var _Calendar = _interopRequireDefault(require("./Calendar"));
|
|
15
15
|
var _YearPicker = _interopRequireDefault(require("./YearPicker"));
|
|
16
16
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
17
|
-
var
|
|
17
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
18
18
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
19
19
|
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); }
|
|
20
20
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(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; }
|
|
@@ -52,20 +52,26 @@ var DxcDatePicker = function DxcDatePicker(_ref) {
|
|
|
52
52
|
onClick: function onClick() {
|
|
53
53
|
return handleMonthChange(innerDate.set("month", innerDate.get("month") - 1));
|
|
54
54
|
}
|
|
55
|
-
},
|
|
55
|
+
}, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
56
|
+
icon: "keyboard_arrow_left"
|
|
57
|
+
})), /*#__PURE__*/_react["default"].createElement(HeaderYearTrigger, {
|
|
56
58
|
"aria-live": "polite",
|
|
57
59
|
onClick: function onClick() {
|
|
58
60
|
return setContent(function (content) {
|
|
59
61
|
return content === "yearPicker" ? "calendar" : "yearPicker";
|
|
60
62
|
});
|
|
61
63
|
}
|
|
62
|
-
}, /*#__PURE__*/_react["default"].createElement(HeaderYearTriggerLabel, null, translatedLabels.calendar.months[innerDate.get("month")], " ", innerDate.format("YYYY")),
|
|
64
|
+
}, /*#__PURE__*/_react["default"].createElement(HeaderYearTriggerLabel, null, translatedLabels.calendar.months[innerDate.get("month")], " ", innerDate.format("YYYY")), /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
65
|
+
icon: content === "yearPicker" ? "arrow_drop_up" : "arrow_drop_down"
|
|
66
|
+
})), /*#__PURE__*/_react["default"].createElement(HeaderButton, {
|
|
63
67
|
"aria-label": translatedLabels.calendar.nextMonthTitle,
|
|
64
68
|
title: translatedLabels.calendar.nextMonthTitle,
|
|
65
69
|
onClick: function onClick() {
|
|
66
70
|
return handleMonthChange(innerDate.set("month", innerDate.get("month") + 1));
|
|
67
71
|
}
|
|
68
|
-
},
|
|
72
|
+
}, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
73
|
+
icon: "keyboard_arrow_right"
|
|
74
|
+
}))), content === "calendar" && /*#__PURE__*/_react["default"].createElement(_Calendar["default"], {
|
|
69
75
|
innerDate: innerDate,
|
|
70
76
|
selectedDate: selectedDate,
|
|
71
77
|
onInnerDateChange: setInnerDate,
|
|
@@ -91,7 +97,7 @@ var DatePicker = _styledComponents["default"].div(_templateObject || (_templateO
|
|
|
91
97
|
return props.theme.dateInput.pickerFontWeight;
|
|
92
98
|
});
|
|
93
99
|
var PickerHeader = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n padding: 0px 16px;\n"])));
|
|
94
|
-
var HeaderButton = _styledComponents["default"].button(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0px;\n color: ", ";\n background-color: ", ";\n border-radius: 4px;\n border: none;\n cursor: pointer;\n\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n &:focus {\n outline: ", ";\n }\n &:active {\n color: ", ";\n background-color: ", ";\n }\n
|
|
100
|
+
var HeaderButton = _styledComponents["default"].button(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0px;\n color: ", ";\n background-color: ", ";\n border-radius: 4px;\n border: none;\n cursor: pointer;\n\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n &:focus {\n outline: ", ";\n }\n &:active {\n color: ", ";\n background-color: ", ";\n }\n\n span::before {\n font-size: 24px;\n }\n"])), function (props) {
|
|
95
101
|
return props.theme.dateInput.pickerHeaderFontColor;
|
|
96
102
|
}, function (props) {
|
|
97
103
|
return props.theme.dateInput.pickerHeaderBackgroundColor;
|
|
@@ -106,7 +112,7 @@ var HeaderButton = _styledComponents["default"].button(_templateObject3 || (_tem
|
|
|
106
112
|
}, function (props) {
|
|
107
113
|
return props.theme.dateInput.pickerHeaderActiveBackgroundColor;
|
|
108
114
|
});
|
|
109
|
-
var HeaderYearTrigger = (0, _styledComponents["default"])(HeaderButton)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n gap: 8px;\n height: 40px;\n width: 172px;\n"])));
|
|
115
|
+
var HeaderYearTrigger = (0, _styledComponents["default"])(HeaderButton)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n gap: 8px;\n height: 40px;\n width: 172px;\n font-size: 24px;\n span::before {\n font-size: 24px;\n }\n"])));
|
|
110
116
|
var HeaderYearTriggerLabel = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: ", ";\n font-size: ", ";\n"])), function (props) {
|
|
111
117
|
return props.theme.dateInput.pickerFontFamily;
|
|
112
118
|
}, function (props) {
|
|
@@ -0,0 +1,69 @@
|
|
|
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 _Dialog = _interopRequireDefault(require("./Dialog.tsx"));
|
|
10
|
+
describe("Dialog 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, baseElement, results;
|
|
13
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
14
|
+
while (1) switch (_context.prev = _context.next) {
|
|
15
|
+
case 0:
|
|
16
|
+
// baseElement is needed when using React Portals
|
|
17
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], null, "Dialog text")), baseElement = _render.baseElement;
|
|
18
|
+
_context.next = 3;
|
|
19
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
20
|
+
case 3:
|
|
21
|
+
results = _context.sent;
|
|
22
|
+
expect(results).toHaveNoViolations();
|
|
23
|
+
case 5:
|
|
24
|
+
case "end":
|
|
25
|
+
return _context.stop();
|
|
26
|
+
}
|
|
27
|
+
}, _callee);
|
|
28
|
+
})));
|
|
29
|
+
it("Should not have basic accessibility issues for close button not visible", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
30
|
+
var _render2, baseElement, results;
|
|
31
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
32
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
33
|
+
case 0:
|
|
34
|
+
// baseElement is needed when using React Portals
|
|
35
|
+
_render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
36
|
+
isCloseVisible: false
|
|
37
|
+
}, "Dialog text")), baseElement = _render2.baseElement;
|
|
38
|
+
_context2.next = 3;
|
|
39
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
40
|
+
case 3:
|
|
41
|
+
results = _context2.sent;
|
|
42
|
+
expect(results).toHaveNoViolations();
|
|
43
|
+
case 5:
|
|
44
|
+
case "end":
|
|
45
|
+
return _context2.stop();
|
|
46
|
+
}
|
|
47
|
+
}, _callee2);
|
|
48
|
+
})));
|
|
49
|
+
it("Should not have basic accessibility issues for overlay not visible", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
50
|
+
var _render3, baseElement, results;
|
|
51
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
52
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
53
|
+
case 0:
|
|
54
|
+
// baseElement is needed when using React Portals
|
|
55
|
+
_render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
56
|
+
overlay: false
|
|
57
|
+
}, "Dialog text")), baseElement = _render3.baseElement;
|
|
58
|
+
_context3.next = 3;
|
|
59
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
60
|
+
case 3:
|
|
61
|
+
results = _context3.sent;
|
|
62
|
+
expect(results).toHaveNoViolations();
|
|
63
|
+
case 5:
|
|
64
|
+
case "end":
|
|
65
|
+
return _context3.stop();
|
|
66
|
+
}
|
|
67
|
+
}, _callee3);
|
|
68
|
+
})));
|
|
69
|
+
});
|
package/dialog/Dialog.test.js
CHANGED
|
@@ -29,7 +29,7 @@ var options = [{
|
|
|
29
29
|
value: "other"
|
|
30
30
|
}];
|
|
31
31
|
describe("Dialog component tests", function () {
|
|
32
|
-
test("Dialog renders with correct text and
|
|
32
|
+
test("Dialog renders with correct text and accessibility attributes", function () {
|
|
33
33
|
var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Dialog["default"], null, "dialog-text")),
|
|
34
34
|
getByText = _render.getByText,
|
|
35
35
|
getByRole = _render.getByRole;
|
|
@@ -0,0 +1,33 @@
|
|
|
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 _Divider = _interopRequireDefault(require("./Divider"));
|
|
10
|
+
describe("Divider 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(_Divider["default"], {
|
|
17
|
+
orientation: "vertical",
|
|
18
|
+
color: "darkGrey",
|
|
19
|
+
decorative: false,
|
|
20
|
+
weight: "strong"
|
|
21
|
+
})), container = _render.container;
|
|
22
|
+
_context.next = 3;
|
|
23
|
+
return (0, _jestAxe.axe)(container);
|
|
24
|
+
case 3:
|
|
25
|
+
results = _context.sent;
|
|
26
|
+
expect(results).toHaveNoViolations();
|
|
27
|
+
case 5:
|
|
28
|
+
case "end":
|
|
29
|
+
return _context.stop();
|
|
30
|
+
}
|
|
31
|
+
}, _callee);
|
|
32
|
+
})));
|
|
33
|
+
});
|
package/divider/types.d.ts
CHANGED
|
@@ -12,7 +12,9 @@ type Props = {
|
|
|
12
12
|
*/
|
|
13
13
|
color?: "lightGrey" | "mediumGrey" | "darkGrey";
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Specifies whether the divider serves a purely decorative purpose
|
|
16
|
+
* or functions as a semantic separator for content. Additionally, it
|
|
17
|
+
* determines whether the divider is accessible to screen readers.
|
|
16
18
|
*/
|
|
17
19
|
decorative?: boolean;
|
|
18
20
|
};
|