@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.
@@ -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(HTMLDivElement);
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(HTMLDivElement);
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(HTMLDivElement);
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(HTMLDivElement);
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',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "1.31.0-alpha.6",
3
+ "version": "1.31.0-alpha.7",
4
4
  "description": "PingUX themeable React component library",
5
5
  "repository": {
6
6
  "type": "git",