@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/tag/types.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ type TagCommonProps = {
|
|
|
47
47
|
};
|
|
48
48
|
type TagLabelProps = TagCommonProps & {
|
|
49
49
|
/**
|
|
50
|
-
*
|
|
50
|
+
* Material Symbol name or SVG element used as the icon that will be placed next to the label.
|
|
51
51
|
*/
|
|
52
52
|
icon?: string | SVG;
|
|
53
53
|
/**
|
|
@@ -57,7 +57,7 @@ type TagLabelProps = TagCommonProps & {
|
|
|
57
57
|
};
|
|
58
58
|
type TagIconProps = TagCommonProps & {
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
60
|
+
* Material Symbol name or SVG element used as the icon that will be placed next to the label.
|
|
61
61
|
*/
|
|
62
62
|
icon: string | SVG;
|
|
63
63
|
/**
|
|
@@ -11,7 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
12
12
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
13
13
|
var _Suggestion = _interopRequireDefault(require("./Suggestion"));
|
|
14
|
-
var
|
|
14
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
15
15
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
16
16
|
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); }
|
|
17
17
|
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; }
|
|
@@ -55,7 +55,9 @@ var Suggestions = function Suggestions(_ref) {
|
|
|
55
55
|
visuallyFocused: visualFocusIndex === index,
|
|
56
56
|
highlighted: highlightedSuggestions
|
|
57
57
|
});
|
|
58
|
-
}), isSearching && /*#__PURE__*/_react["default"].createElement(SuggestionsSystemMessage, null, translatedLabels.textInput.searchingMessage), searchHasErrors && /*#__PURE__*/_react["default"].createElement(SuggestionsError, null, /*#__PURE__*/_react["default"].createElement(SuggestionsErrorIcon, null,
|
|
58
|
+
}), isSearching && /*#__PURE__*/_react["default"].createElement(SuggestionsSystemMessage, null, translatedLabels.textInput.searchingMessage), searchHasErrors && /*#__PURE__*/_react["default"].createElement(SuggestionsError, null, /*#__PURE__*/_react["default"].createElement(SuggestionsErrorIcon, null, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
59
|
+
icon: "filled_error"
|
|
60
|
+
})), translatedLabels.textInput.fetchingDataErrorMessage));
|
|
59
61
|
};
|
|
60
62
|
var SuggestionsContainer = _styledComponents["default"].ul(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n max-height: 304px;\n overflow-y: auto;\n margin: 0;\n padding: 0.25rem 0;\n background-color: ", ";\n border: 1px solid\n ", ";\n\n border-radius: 0.25rem;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n"])), function (props) {
|
|
61
63
|
return props.error ? props.theme.errorListDialogBackgroundColor : props.theme.listDialogBackgroundColor;
|
|
@@ -75,7 +77,7 @@ var SuggestionsContainer = _styledComponents["default"].ul(_templateObject || (_
|
|
|
75
77
|
var SuggestionsSystemMessage = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n color: ", ";\n line-height: 1.715em;\n"])), function (props) {
|
|
76
78
|
return props.theme.systemMessageFontColor;
|
|
77
79
|
});
|
|
78
|
-
var SuggestionsErrorIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n margin-right: 0.5rem;\n height: 18px;\n width: 18px;\n color: ", ";\n"])), function (props) {
|
|
80
|
+
var SuggestionsErrorIcon = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n margin-right: 0.5rem;\n height: 18px;\n width: 18px;\n font-size: 18px;\n color: ", ";\n"])), function (props) {
|
|
79
81
|
return props.theme.errorIconColor;
|
|
80
82
|
});
|
|
81
83
|
var SuggestionsError = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n padding: 0.25rem 1rem;\n align-items: center;\n line-height: 1.715em;\n color: ", ";\n"])), function (props) {
|
|
@@ -0,0 +1,321 @@
|
|
|
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 _TextInput = _interopRequireDefault(require("./TextInput.tsx"));
|
|
12
|
+
var countries = ["Afghanistan", "Albania", "Algeria", "Andorra", "Angola", "Antigua and Barbuda", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Cabo Verde", "Cambodia", "Cameroon", "Canada", "Cayman Islands, The", "Central African Republic", "Chad", "Democratic Republic of the Congo", "Dominican Republic", "Dominica", "Denmark", "Djibouti"];
|
|
13
|
+
var action = {
|
|
14
|
+
onClick: function onClick() {},
|
|
15
|
+
icon: /*#__PURE__*/_react["default"].createElement("svg", {
|
|
16
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
17
|
+
height: "24px",
|
|
18
|
+
viewBox: "0 0 24 24",
|
|
19
|
+
width: "24px",
|
|
20
|
+
fill: "currentColor"
|
|
21
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
22
|
+
d: "M0 0h24v24H0V0z",
|
|
23
|
+
fill: "none"
|
|
24
|
+
}), /*#__PURE__*/_react["default"].createElement("path", {
|
|
25
|
+
d: "M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"
|
|
26
|
+
})),
|
|
27
|
+
title: "Action Title"
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// Mocking DOMRect for Radix Primitive Popover
|
|
31
|
+
global.globalThis = global;
|
|
32
|
+
global.DOMRect = {
|
|
33
|
+
fromRect: function fromRect() {
|
|
34
|
+
return {
|
|
35
|
+
top: 0,
|
|
36
|
+
left: 0,
|
|
37
|
+
bottom: 0,
|
|
38
|
+
right: 0,
|
|
39
|
+
width: 0,
|
|
40
|
+
height: 0
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
global.ResizeObserver = /*#__PURE__*/function () {
|
|
45
|
+
function ResizeObserver() {
|
|
46
|
+
(0, _classCallCheck2["default"])(this, ResizeObserver);
|
|
47
|
+
}
|
|
48
|
+
(0, _createClass2["default"])(ResizeObserver, [{
|
|
49
|
+
key: "observe",
|
|
50
|
+
value: function observe() {}
|
|
51
|
+
}, {
|
|
52
|
+
key: "unobserve",
|
|
53
|
+
value: function unobserve() {}
|
|
54
|
+
}, {
|
|
55
|
+
key: "disconnect",
|
|
56
|
+
value: function disconnect() {}
|
|
57
|
+
}]);
|
|
58
|
+
return ResizeObserver;
|
|
59
|
+
}();
|
|
60
|
+
describe("TextInput component accessibility tests", function () {
|
|
61
|
+
it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
62
|
+
var _render, baseElement, results;
|
|
63
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
64
|
+
while (1) switch (_context.prev = _context.next) {
|
|
65
|
+
case 0:
|
|
66
|
+
// baseElement is needed when using React Portals
|
|
67
|
+
_render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
68
|
+
label: "Label",
|
|
69
|
+
placeholder: "Placeholder",
|
|
70
|
+
helperText: "Helper Text",
|
|
71
|
+
margin: "medium",
|
|
72
|
+
name: "Name",
|
|
73
|
+
size: "medium",
|
|
74
|
+
suffix: "Suffix",
|
|
75
|
+
prefix: "Prefix",
|
|
76
|
+
defaultValue: "Value",
|
|
77
|
+
action: action,
|
|
78
|
+
minLength: 0,
|
|
79
|
+
maxLength: 100,
|
|
80
|
+
clearable: true
|
|
81
|
+
})), baseElement = _render.baseElement;
|
|
82
|
+
_context.next = 3;
|
|
83
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
84
|
+
case 3:
|
|
85
|
+
results = _context.sent;
|
|
86
|
+
expect(results).toHaveNoViolations();
|
|
87
|
+
case 5:
|
|
88
|
+
case "end":
|
|
89
|
+
return _context.stop();
|
|
90
|
+
}
|
|
91
|
+
}, _callee);
|
|
92
|
+
})));
|
|
93
|
+
it("Should not have basic accessibility issues for autocomplete mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
94
|
+
var _render2, baseElement, results;
|
|
95
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
96
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
97
|
+
case 0:
|
|
98
|
+
// baseElement is needed when using React Portals
|
|
99
|
+
_render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
100
|
+
label: "Label",
|
|
101
|
+
placeholder: "Placeholder",
|
|
102
|
+
helperText: "Helper Text",
|
|
103
|
+
margin: "medium",
|
|
104
|
+
name: "Name",
|
|
105
|
+
size: "medium",
|
|
106
|
+
suffix: "Suffix",
|
|
107
|
+
prefix: "Prefix",
|
|
108
|
+
defaultValue: "Value",
|
|
109
|
+
action: action,
|
|
110
|
+
minLength: 0,
|
|
111
|
+
maxLength: 100,
|
|
112
|
+
clearable: true,
|
|
113
|
+
autocomplete: "on"
|
|
114
|
+
})), baseElement = _render2.baseElement;
|
|
115
|
+
_context2.next = 3;
|
|
116
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
117
|
+
case 3:
|
|
118
|
+
results = _context2.sent;
|
|
119
|
+
expect(results).toHaveNoViolations();
|
|
120
|
+
case 5:
|
|
121
|
+
case "end":
|
|
122
|
+
return _context2.stop();
|
|
123
|
+
}
|
|
124
|
+
}, _callee2);
|
|
125
|
+
})));
|
|
126
|
+
it("Should not have basic accessibility issues for suggestions mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
127
|
+
var _render3, baseElement, results;
|
|
128
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
129
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
130
|
+
case 0:
|
|
131
|
+
// baseElement is needed when using React Portals
|
|
132
|
+
_render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
133
|
+
label: "Label",
|
|
134
|
+
placeholder: "Placeholder",
|
|
135
|
+
helperText: "Helper Text",
|
|
136
|
+
margin: "medium",
|
|
137
|
+
name: "Name",
|
|
138
|
+
size: "medium",
|
|
139
|
+
suffix: "Suffix",
|
|
140
|
+
prefix: "Prefix",
|
|
141
|
+
defaultValue: "Value",
|
|
142
|
+
action: action,
|
|
143
|
+
minLength: 0,
|
|
144
|
+
maxLength: 100,
|
|
145
|
+
clearable: true,
|
|
146
|
+
suggestions: countries
|
|
147
|
+
})), baseElement = _render3.baseElement;
|
|
148
|
+
_context3.next = 3;
|
|
149
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
150
|
+
case 3:
|
|
151
|
+
results = _context3.sent;
|
|
152
|
+
expect(results).toHaveNoViolations();
|
|
153
|
+
case 5:
|
|
154
|
+
case "end":
|
|
155
|
+
return _context3.stop();
|
|
156
|
+
}
|
|
157
|
+
}, _callee3);
|
|
158
|
+
})));
|
|
159
|
+
it("Should not have basic accessibility issues for pattern mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
160
|
+
var _render4, baseElement, results;
|
|
161
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
162
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
163
|
+
case 0:
|
|
164
|
+
// baseElement is needed when using React Portals
|
|
165
|
+
_render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
166
|
+
label: "Label",
|
|
167
|
+
placeholder: "Placeholder",
|
|
168
|
+
helperText: "Helper Text",
|
|
169
|
+
margin: "medium",
|
|
170
|
+
name: "Name",
|
|
171
|
+
size: "medium",
|
|
172
|
+
suffix: "Suffix",
|
|
173
|
+
prefix: "Prefix",
|
|
174
|
+
defaultValue: "Value",
|
|
175
|
+
action: action,
|
|
176
|
+
minLength: 0,
|
|
177
|
+
maxLength: 100,
|
|
178
|
+
clearable: true,
|
|
179
|
+
pattern: "^.*(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!&$%&? \"]).*$"
|
|
180
|
+
})), baseElement = _render4.baseElement;
|
|
181
|
+
_context4.next = 3;
|
|
182
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
183
|
+
case 3:
|
|
184
|
+
results = _context4.sent;
|
|
185
|
+
expect(results).toHaveNoViolations();
|
|
186
|
+
case 5:
|
|
187
|
+
case "end":
|
|
188
|
+
return _context4.stop();
|
|
189
|
+
}
|
|
190
|
+
}, _callee4);
|
|
191
|
+
})));
|
|
192
|
+
it("Should not have basic accessibility issues for optional mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
193
|
+
var _render5, baseElement, results;
|
|
194
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
195
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
196
|
+
case 0:
|
|
197
|
+
// baseElement is needed when using React Portals
|
|
198
|
+
_render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
199
|
+
label: "Label",
|
|
200
|
+
placeholder: "Placeholder",
|
|
201
|
+
helperText: "Helper Text",
|
|
202
|
+
margin: "medium",
|
|
203
|
+
name: "Name",
|
|
204
|
+
size: "medium",
|
|
205
|
+
suffix: "Suffix",
|
|
206
|
+
prefix: "Prefix",
|
|
207
|
+
defaultValue: "Value",
|
|
208
|
+
action: action,
|
|
209
|
+
minLength: 0,
|
|
210
|
+
maxLength: 100,
|
|
211
|
+
clearable: true,
|
|
212
|
+
optional: true
|
|
213
|
+
})), baseElement = _render5.baseElement;
|
|
214
|
+
_context5.next = 3;
|
|
215
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
216
|
+
case 3:
|
|
217
|
+
results = _context5.sent;
|
|
218
|
+
expect(results).toHaveNoViolations();
|
|
219
|
+
case 5:
|
|
220
|
+
case "end":
|
|
221
|
+
return _context5.stop();
|
|
222
|
+
}
|
|
223
|
+
}, _callee5);
|
|
224
|
+
})));
|
|
225
|
+
it("Should not have basic accessibility issues for error mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
226
|
+
var _render6, baseElement, results;
|
|
227
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
228
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
229
|
+
case 0:
|
|
230
|
+
// baseElement is needed when using React Portals
|
|
231
|
+
_render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
232
|
+
label: "Label",
|
|
233
|
+
placeholder: "Placeholder",
|
|
234
|
+
helperText: "Helper Text",
|
|
235
|
+
margin: "medium",
|
|
236
|
+
name: "Name",
|
|
237
|
+
size: "medium",
|
|
238
|
+
suffix: "Suffix",
|
|
239
|
+
prefix: "Prefix",
|
|
240
|
+
defaultValue: "Value",
|
|
241
|
+
error: "Error message.",
|
|
242
|
+
action: action,
|
|
243
|
+
minLength: 0,
|
|
244
|
+
maxLength: 100,
|
|
245
|
+
clearable: true
|
|
246
|
+
})), baseElement = _render6.baseElement;
|
|
247
|
+
_context6.next = 3;
|
|
248
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
249
|
+
case 3:
|
|
250
|
+
results = _context6.sent;
|
|
251
|
+
expect(results).toHaveNoViolations();
|
|
252
|
+
case 5:
|
|
253
|
+
case "end":
|
|
254
|
+
return _context6.stop();
|
|
255
|
+
}
|
|
256
|
+
}, _callee6);
|
|
257
|
+
})));
|
|
258
|
+
it("Should not have basic accessibility issues for read-only mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
259
|
+
var _render7, baseElement, results;
|
|
260
|
+
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
|
261
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
262
|
+
case 0:
|
|
263
|
+
// baseElement is needed when using React Portals
|
|
264
|
+
_render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
265
|
+
label: "Label",
|
|
266
|
+
placeholder: "Placeholder",
|
|
267
|
+
helperText: "Helper Text",
|
|
268
|
+
margin: "medium",
|
|
269
|
+
name: "Name",
|
|
270
|
+
size: "medium",
|
|
271
|
+
suffix: "Suffix",
|
|
272
|
+
prefix: "Prefix",
|
|
273
|
+
defaultValue: "Value",
|
|
274
|
+
action: action,
|
|
275
|
+
minLength: 0,
|
|
276
|
+
maxLength: 100,
|
|
277
|
+
readOnly: true
|
|
278
|
+
})), baseElement = _render7.baseElement;
|
|
279
|
+
_context7.next = 3;
|
|
280
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
281
|
+
case 3:
|
|
282
|
+
results = _context7.sent;
|
|
283
|
+
expect(results).toHaveNoViolations();
|
|
284
|
+
case 5:
|
|
285
|
+
case "end":
|
|
286
|
+
return _context7.stop();
|
|
287
|
+
}
|
|
288
|
+
}, _callee7);
|
|
289
|
+
})));
|
|
290
|
+
it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
|
|
291
|
+
var _render8, baseElement, results;
|
|
292
|
+
return _regenerator["default"].wrap(function _callee8$(_context8) {
|
|
293
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
294
|
+
case 0:
|
|
295
|
+
// baseElement is needed when using React Portals
|
|
296
|
+
_render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
|
|
297
|
+
label: "Label",
|
|
298
|
+
placeholder: "Placeholder",
|
|
299
|
+
helperText: "Helper Text",
|
|
300
|
+
margin: "medium",
|
|
301
|
+
name: "Name",
|
|
302
|
+
size: "medium",
|
|
303
|
+
suffix: "Suffix",
|
|
304
|
+
prefix: "Prefix",
|
|
305
|
+
action: action,
|
|
306
|
+
minLength: 0,
|
|
307
|
+
maxLength: 100,
|
|
308
|
+
disabled: true
|
|
309
|
+
})), baseElement = _render8.baseElement;
|
|
310
|
+
_context8.next = 3;
|
|
311
|
+
return (0, _jestAxe.axe)(baseElement);
|
|
312
|
+
case 3:
|
|
313
|
+
results = _context8.sent;
|
|
314
|
+
expect(results).toHaveNoViolations();
|
|
315
|
+
case 5:
|
|
316
|
+
case "end":
|
|
317
|
+
return _context8.stop();
|
|
318
|
+
}
|
|
319
|
+
}, _callee8);
|
|
320
|
+
})));
|
|
321
|
+
});
|
package/text-input/TextInput.js
CHANGED
|
@@ -15,13 +15,13 @@ var _useTheme = _interopRequireDefault(require("../useTheme"));
|
|
|
15
15
|
var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
|
|
16
16
|
var _variables = require("../common/variables");
|
|
17
17
|
var _utils = require("../common/utils");
|
|
18
|
-
var _NumberInput = require("../number-input/NumberInput");
|
|
19
18
|
var _Suggestions = _interopRequireDefault(require("./Suggestions"));
|
|
20
19
|
var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
|
|
21
|
-
var _Icons = _interopRequireDefault(require("./Icons"));
|
|
22
20
|
var _uuid = require("uuid");
|
|
23
21
|
var _ActionIcon = _interopRequireDefault(require("../action-icon/ActionIcon"));
|
|
24
22
|
var _Flex = _interopRequireDefault(require("../flex/Flex"));
|
|
23
|
+
var _NumberInputContext = require("../number-input/NumberInputContext");
|
|
24
|
+
var _Icon = _interopRequireDefault(require("../icon/Icon"));
|
|
25
25
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
|
|
26
26
|
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); }
|
|
27
27
|
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; }
|
|
@@ -167,7 +167,7 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, re
|
|
|
167
167
|
var width = useWidth(inputContainerRef.current);
|
|
168
168
|
var colorsTheme = (0, _useTheme["default"])();
|
|
169
169
|
var translatedLabels = (0, _useTranslatedLabels["default"])();
|
|
170
|
-
var numberInputContext = (0, _react.useContext)(
|
|
170
|
+
var numberInputContext = (0, _react.useContext)(_NumberInputContext.NumberInputContext);
|
|
171
171
|
var getNumberErrorMessage = function getNumberErrorMessage(value) {
|
|
172
172
|
if (value < (numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.minNumber)) return translatedLabels.numberInput.valueGreaterThanOrEqualToErrorMessage(numberInputContext.minNumber);else if (value > (numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.maxNumber)) return translatedLabels.numberInput.valueLessThanOrEqualToErrorMessage(numberInputContext.maxNumber);
|
|
173
173
|
};
|
|
@@ -441,21 +441,23 @@ var DxcTextInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, re
|
|
|
441
441
|
"aria-required": !disabled && !optional
|
|
442
442
|
}), !disabled && error && /*#__PURE__*/_react["default"].createElement(ErrorIcon, {
|
|
443
443
|
"aria-label": "Error"
|
|
444
|
-
},
|
|
444
|
+
}, /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
|
|
445
|
+
icon: "filled_error"
|
|
446
|
+
})), !disabled && !readOnly && clearable && (value !== null && value !== void 0 ? value : innerValue).length > 0 && /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
|
|
445
447
|
onClick: handleClearActionOnClick,
|
|
446
|
-
icon:
|
|
448
|
+
icon: "close",
|
|
447
449
|
tabIndex: tabIndex,
|
|
448
450
|
title: translatedLabels.textInput.clearFieldActionTitle
|
|
449
451
|
}), (numberInputContext === null || numberInputContext === void 0 ? void 0 : numberInputContext.typeNumber) === "number" && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
|
|
450
452
|
onClick: !readOnly ? handleDecrementActionOnClick : undefined,
|
|
451
|
-
icon:
|
|
453
|
+
icon: "remove",
|
|
452
454
|
tabIndex: tabIndex,
|
|
453
455
|
ref: actionRef,
|
|
454
456
|
title: translatedLabels.numberInput.decrementValueTitle,
|
|
455
457
|
disabled: disabled
|
|
456
458
|
}), /*#__PURE__*/_react["default"].createElement(_ActionIcon["default"], {
|
|
457
459
|
onClick: !readOnly ? handleIncrementActionOnClick : undefined,
|
|
458
|
-
icon:
|
|
460
|
+
icon: "add",
|
|
459
461
|
tabIndex: tabIndex,
|
|
460
462
|
ref: actionRef,
|
|
461
463
|
title: translatedLabels.numberInput.incrementValueTitle,
|
|
@@ -554,7 +556,7 @@ var Suffix = _styledComponents["default"].span(_templateObject8 || (_templateObj
|
|
|
554
556
|
}, function (props) {
|
|
555
557
|
return props.theme.fontFamily;
|
|
556
558
|
});
|
|
557
|
-
var ErrorIcon = _styledComponents["default"].span(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n color: ", ";\n\n svg {\n line-height: 18px;\n font-size: 1.25rem;\n }\n"])), function (props) {
|
|
559
|
+
var ErrorIcon = _styledComponents["default"].span(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-wrap: wrap;\n align-content: center;\n padding: 3px;\n height: 18px;\n width: 18px;\n font-size: 18px;\n color: ", ";\n\n svg {\n line-height: 18px;\n font-size: 1.25rem;\n }\n"])), function (props) {
|
|
558
560
|
return props.theme.errorIconColor;
|
|
559
561
|
});
|
|
560
562
|
var Error = _styledComponents["default"].span(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n min-height: 1.5em;\n color: ", ";\n font-family: ", ";\n font-size: 0.75rem;\n font-weight: 400;\n line-height: 1.5em;\n margin-top: 0.25rem;\n"])), function (props) {
|
|
@@ -0,0 +1,155 @@
|
|
|
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 _Textarea = _interopRequireDefault(require("./Textarea.tsx"));
|
|
10
|
+
describe("Textarea 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(_Textarea["default"], {
|
|
17
|
+
label: "Example label",
|
|
18
|
+
helperText: "Helper Text",
|
|
19
|
+
defaultValue: "Value",
|
|
20
|
+
margin: "medium",
|
|
21
|
+
placeholder: "Placeholder",
|
|
22
|
+
verticalGrow: "manual",
|
|
23
|
+
name: "Name",
|
|
24
|
+
autocomplete: "on",
|
|
25
|
+
minLength: 0,
|
|
26
|
+
maxLength: 100,
|
|
27
|
+
optional: true
|
|
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 pattern 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(_Textarea["default"], {
|
|
46
|
+
label: "Example label",
|
|
47
|
+
helperText: "Helper Text",
|
|
48
|
+
defaultValue: "Value",
|
|
49
|
+
margin: "medium",
|
|
50
|
+
placeholder: "Placeholder",
|
|
51
|
+
verticalGrow: "manual",
|
|
52
|
+
name: "Name",
|
|
53
|
+
autocomplete: "on",
|
|
54
|
+
minLength: 0,
|
|
55
|
+
maxLength: 100,
|
|
56
|
+
pattern: "^.*(?=.*[a-zA-Z])(?=.*)(?=.*[!&$%&? \"]).*$"
|
|
57
|
+
})), container = _render2.container;
|
|
58
|
+
_context2.next = 3;
|
|
59
|
+
return (0, _jestAxe.axe)(container);
|
|
60
|
+
case 3:
|
|
61
|
+
results = _context2.sent;
|
|
62
|
+
expect(results).toHaveNoViolations();
|
|
63
|
+
case 5:
|
|
64
|
+
case "end":
|
|
65
|
+
return _context2.stop();
|
|
66
|
+
}
|
|
67
|
+
}, _callee2);
|
|
68
|
+
})));
|
|
69
|
+
it("Should not have basic accessibility issues for error mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
70
|
+
var _render3, container, results;
|
|
71
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
72
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
73
|
+
case 0:
|
|
74
|
+
_render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Textarea["default"], {
|
|
75
|
+
label: "Example label",
|
|
76
|
+
helperText: "Helper Text",
|
|
77
|
+
defaultValue: "Value",
|
|
78
|
+
margin: "medium",
|
|
79
|
+
placeholder: "Placeholder",
|
|
80
|
+
verticalGrow: "manual",
|
|
81
|
+
name: "Name",
|
|
82
|
+
error: "Error message.",
|
|
83
|
+
minLength: 0,
|
|
84
|
+
maxLength: 100
|
|
85
|
+
})), container = _render3.container;
|
|
86
|
+
_context3.next = 3;
|
|
87
|
+
return (0, _jestAxe.axe)(container);
|
|
88
|
+
case 3:
|
|
89
|
+
results = _context3.sent;
|
|
90
|
+
expect(results).toHaveNoViolations();
|
|
91
|
+
case 5:
|
|
92
|
+
case "end":
|
|
93
|
+
return _context3.stop();
|
|
94
|
+
}
|
|
95
|
+
}, _callee3);
|
|
96
|
+
})));
|
|
97
|
+
it("Should not have basic accessibility issues for disabled mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
98
|
+
var _render4, container, results;
|
|
99
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
100
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
101
|
+
case 0:
|
|
102
|
+
_render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Textarea["default"], {
|
|
103
|
+
label: "Example label",
|
|
104
|
+
helperText: "Helper Text",
|
|
105
|
+
defaultValue: "Value",
|
|
106
|
+
margin: "medium",
|
|
107
|
+
placeholder: "Placeholder",
|
|
108
|
+
verticalGrow: "manual",
|
|
109
|
+
name: "Name",
|
|
110
|
+
autocomplete: "on",
|
|
111
|
+
minLength: 0,
|
|
112
|
+
maxLength: 100,
|
|
113
|
+
disabled: true
|
|
114
|
+
})), container = _render4.container;
|
|
115
|
+
_context4.next = 3;
|
|
116
|
+
return (0, _jestAxe.axe)(container);
|
|
117
|
+
case 3:
|
|
118
|
+
results = _context4.sent;
|
|
119
|
+
expect(results).toHaveNoViolations();
|
|
120
|
+
case 5:
|
|
121
|
+
case "end":
|
|
122
|
+
return _context4.stop();
|
|
123
|
+
}
|
|
124
|
+
}, _callee4);
|
|
125
|
+
})));
|
|
126
|
+
it("Should not have basic accessibility issues for read-only mode", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
127
|
+
var _render5, container, results;
|
|
128
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
129
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
130
|
+
case 0:
|
|
131
|
+
_render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Textarea["default"], {
|
|
132
|
+
label: "Example label",
|
|
133
|
+
helperText: "Helper Text",
|
|
134
|
+
defaultValue: "Value",
|
|
135
|
+
margin: "medium",
|
|
136
|
+
placeholder: "Placeholder",
|
|
137
|
+
verticalGrow: "manual",
|
|
138
|
+
name: "Name",
|
|
139
|
+
autocomplete: "on",
|
|
140
|
+
minLength: 0,
|
|
141
|
+
maxLength: 100,
|
|
142
|
+
readOnly: true
|
|
143
|
+
})), container = _render5.container;
|
|
144
|
+
_context5.next = 3;
|
|
145
|
+
return (0, _jestAxe.axe)(container);
|
|
146
|
+
case 3:
|
|
147
|
+
results = _context5.sent;
|
|
148
|
+
expect(results).toHaveNoViolations();
|
|
149
|
+
case 5:
|
|
150
|
+
case "end":
|
|
151
|
+
return _context5.stop();
|
|
152
|
+
}
|
|
153
|
+
}, _callee5);
|
|
154
|
+
})));
|
|
155
|
+
});
|