@pingux/astro 1.31.0-alpha.6 → 1.31.0-alpha.7
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/lib/cjs/components/RequirementsList/RequirementsList.js +5 -1
- package/lib/cjs/components/RequirementsList/RequirementsList.test.js +2 -2
- package/lib/cjs/components/SearchField/SearchField.js +10 -0
- package/lib/cjs/components/SearchField/SearchField.test.js +27 -0
- package/lib/components/RequirementsList/RequirementsList.js +5 -1
- package/lib/components/RequirementsList/RequirementsList.test.js +2 -2
- package/lib/components/SearchField/SearchField.js +10 -0
- package/lib/components/SearchField/SearchField.test.js +20 -1
- package/package.json +1 -1
@@ -98,18 +98,22 @@ var RequirementsList = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
98
98
|
|
99
99
|
var buildRequirementsLine = function buildRequirementsLine(req) {
|
100
100
|
return (0, _react2.jsx)(_Box["default"], {
|
101
|
+
role: "listitem",
|
101
102
|
isRow: true,
|
102
103
|
key: req.name,
|
103
104
|
alignItems: "center",
|
104
|
-
width: "100%"
|
105
|
+
width: "100%",
|
106
|
+
as: "li"
|
105
107
|
}, statusIconRender(req.status), (0, _react2.jsx)(_Text["default"], {
|
106
108
|
variant: "bodyWeak"
|
107
109
|
}, req.name));
|
108
110
|
};
|
109
111
|
|
110
112
|
return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
113
|
+
role: "list",
|
111
114
|
p: "lg",
|
112
115
|
gap: "md",
|
116
|
+
as: "ul",
|
113
117
|
ref: ref
|
114
118
|
}, others), (0, _map["default"])(requirements).call(requirements, function (req) {
|
115
119
|
return buildRequirementsLine(req);
|
@@ -63,7 +63,7 @@ test('base case requirements list', function () {
|
|
63
63
|
|
64
64
|
var requirementsList = _react2.screen.getByTestId(testId);
|
65
65
|
|
66
|
-
expect(requirementsList).toBeInstanceOf(
|
66
|
+
expect(requirementsList).toBeInstanceOf(HTMLUListElement);
|
67
67
|
expect(requirementsList).toBeInTheDocument();
|
68
68
|
});
|
69
69
|
test('empty variables requirements list', function () {
|
@@ -73,7 +73,7 @@ test('empty variables requirements list', function () {
|
|
73
73
|
|
74
74
|
var requirementsList = _react2.screen.getByTestId(testId);
|
75
75
|
|
76
|
-
expect(requirementsList).toBeInstanceOf(
|
76
|
+
expect(requirementsList).toBeInstanceOf(HTMLUListElement);
|
77
77
|
expect(requirementsList).toBeInTheDocument();
|
78
78
|
});
|
79
79
|
test('should render default status icon if such passed in props', function () {
|
@@ -105,6 +105,14 @@ var SearchField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
105
105
|
fieldControlProps = _useField.fieldControlProps,
|
106
106
|
fieldLabelProps = _useField.fieldLabelProps;
|
107
107
|
|
108
|
+
var handleKeyDownEvent = function handleKeyDownEvent(e) {
|
109
|
+
var key = e.key;
|
110
|
+
|
111
|
+
if (key === 'Enter' || key === ' ') {
|
112
|
+
state.setValue('');
|
113
|
+
}
|
114
|
+
};
|
115
|
+
|
108
116
|
return (0, _react2.jsx)(_.Box, fieldContainerProps, label && (0, _react2.jsx)(_.Label, fieldLabelProps), (0, _react2.jsx)(_.Box, {
|
109
117
|
variant: "forms.search.container"
|
110
118
|
}, (0, _react2.jsx)(_.Input, (0, _extends2["default"])({
|
@@ -116,6 +124,8 @@ var SearchField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
116
124
|
variant: "forms.search.icon",
|
117
125
|
size: 22
|
118
126
|
}, iconProps)), !hasNoClearButton && state.value !== '' && (0, _react2.jsx)(_.IconButton, (0, _extends2["default"])({
|
127
|
+
tabIndex: 0,
|
128
|
+
onKeyDown: handleKeyDownEvent,
|
119
129
|
sx: {
|
120
130
|
position: 'absolute',
|
121
131
|
top: 8,
|
@@ -242,6 +242,33 @@ test('clear button should be present by default ', function () {
|
|
242
242
|
});
|
243
243
|
expect(_testWrapper.screen.getByRole('button')).toBeInTheDocument();
|
244
244
|
});
|
245
|
+
test('clear button should be keyboard accessible', function () {
|
246
|
+
getComponent();
|
247
|
+
|
248
|
+
var search = _testWrapper.screen.getByLabelText(testLabel);
|
249
|
+
|
250
|
+
_userEvent["default"].type(search, 'clear');
|
251
|
+
|
252
|
+
expect(search).toHaveValue('clear');
|
253
|
+
|
254
|
+
var clearButton = _testWrapper.screen.getByRole('button');
|
255
|
+
|
256
|
+
expect(clearButton).toHaveAttribute('tabindex', '0');
|
257
|
+
(0, _testWrapper.act)(function () {
|
258
|
+
clearButton.focus();
|
259
|
+
});
|
260
|
+
expect(clearButton).toHaveFocus();
|
261
|
+
|
262
|
+
_testWrapper.fireEvent.keyDown(clearButton, {
|
263
|
+
key: 'Enter'
|
264
|
+
});
|
265
|
+
|
266
|
+
_testWrapper.fireEvent.keyUp(clearButton, {
|
267
|
+
key: 'Enter'
|
268
|
+
});
|
269
|
+
|
270
|
+
expect(search).toHaveValue('');
|
271
|
+
});
|
245
272
|
test('clear button should not be present is hasNoClearButton=true ', function () {
|
246
273
|
getComponent({
|
247
274
|
value: 'test-value',
|
@@ -63,18 +63,22 @@ var RequirementsList = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
63
63
|
|
64
64
|
var buildRequirementsLine = function buildRequirementsLine(req) {
|
65
65
|
return ___EmotionJSX(Box, {
|
66
|
+
role: "listitem",
|
66
67
|
isRow: true,
|
67
68
|
key: req.name,
|
68
69
|
alignItems: "center",
|
69
|
-
width: "100%"
|
70
|
+
width: "100%",
|
71
|
+
as: "li"
|
70
72
|
}, statusIconRender(req.status), ___EmotionJSX(Text, {
|
71
73
|
variant: "bodyWeak"
|
72
74
|
}, req.name));
|
73
75
|
};
|
74
76
|
|
75
77
|
return ___EmotionJSX(Box, _extends({
|
78
|
+
role: "list",
|
76
79
|
p: "lg",
|
77
80
|
gap: "md",
|
81
|
+
as: "ul",
|
78
82
|
ref: ref
|
79
83
|
}, others), _mapInstanceProperty(requirements).call(requirements, function (req) {
|
80
84
|
return buildRequirementsLine(req);
|
@@ -51,7 +51,7 @@ axeTest(getComponent);
|
|
51
51
|
test('base case requirements list', function () {
|
52
52
|
getComponent();
|
53
53
|
var requirementsList = screen.getByTestId(testId);
|
54
|
-
expect(requirementsList).toBeInstanceOf(
|
54
|
+
expect(requirementsList).toBeInstanceOf(HTMLUListElement);
|
55
55
|
expect(requirementsList).toBeInTheDocument();
|
56
56
|
});
|
57
57
|
test('empty variables requirements list', function () {
|
@@ -59,7 +59,7 @@ test('empty variables requirements list', function () {
|
|
59
59
|
requirementsList: []
|
60
60
|
});
|
61
61
|
var requirementsList = screen.getByTestId(testId);
|
62
|
-
expect(requirementsList).toBeInstanceOf(
|
62
|
+
expect(requirementsList).toBeInstanceOf(HTMLUListElement);
|
63
63
|
expect(requirementsList).toBeInTheDocument();
|
64
64
|
});
|
65
65
|
test('should render default status icon if such passed in props', function () {
|
@@ -69,6 +69,14 @@ var SearchField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
69
69
|
fieldControlProps = _useField.fieldControlProps,
|
70
70
|
fieldLabelProps = _useField.fieldLabelProps;
|
71
71
|
|
72
|
+
var handleKeyDownEvent = function handleKeyDownEvent(e) {
|
73
|
+
var key = e.key;
|
74
|
+
|
75
|
+
if (key === 'Enter' || key === ' ') {
|
76
|
+
state.setValue('');
|
77
|
+
}
|
78
|
+
};
|
79
|
+
|
72
80
|
return ___EmotionJSX(Box, fieldContainerProps, label && ___EmotionJSX(Label, fieldLabelProps), ___EmotionJSX(Box, {
|
73
81
|
variant: "forms.search.container"
|
74
82
|
}, ___EmotionJSX(Input, _extends({
|
@@ -80,6 +88,8 @@ var SearchField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
80
88
|
variant: "forms.search.icon",
|
81
89
|
size: 22
|
82
90
|
}, iconProps)), !hasNoClearButton && state.value !== '' && ___EmotionJSX(IconButton, _extends({
|
91
|
+
tabIndex: 0,
|
92
|
+
onKeyDown: handleKeyDownEvent,
|
83
93
|
sx: {
|
84
94
|
position: 'absolute',
|
85
95
|
top: 8,
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
|
2
2
|
import React from 'react';
|
3
3
|
import userEvent from '@testing-library/user-event';
|
4
4
|
import axeTest from '../../utils/testUtils/testAxe';
|
5
|
-
import { render, screen } from '../../utils/testUtils/testWrapper';
|
5
|
+
import { act, fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
|
6
6
|
import SearchField from '.';
|
7
7
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
8
8
|
var testId = 'test-radio-group';
|
@@ -179,6 +179,25 @@ test('clear button should be present by default ', function () {
|
|
179
179
|
});
|
180
180
|
expect(screen.getByRole('button')).toBeInTheDocument();
|
181
181
|
});
|
182
|
+
test('clear button should be keyboard accessible', function () {
|
183
|
+
getComponent();
|
184
|
+
var search = screen.getByLabelText(testLabel);
|
185
|
+
userEvent.type(search, 'clear');
|
186
|
+
expect(search).toHaveValue('clear');
|
187
|
+
var clearButton = screen.getByRole('button');
|
188
|
+
expect(clearButton).toHaveAttribute('tabindex', '0');
|
189
|
+
act(function () {
|
190
|
+
clearButton.focus();
|
191
|
+
});
|
192
|
+
expect(clearButton).toHaveFocus();
|
193
|
+
fireEvent.keyDown(clearButton, {
|
194
|
+
key: 'Enter'
|
195
|
+
});
|
196
|
+
fireEvent.keyUp(clearButton, {
|
197
|
+
key: 'Enter'
|
198
|
+
});
|
199
|
+
expect(search).toHaveValue('');
|
200
|
+
});
|
182
201
|
test('clear button should not be present is hasNoClearButton=true ', function () {
|
183
202
|
getComponent({
|
184
203
|
value: 'test-value',
|