@pingux/astro 1.31.0-alpha.5 → 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.
@@ -2,13 +2,25 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
4
 
5
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
5
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
6
+
7
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
6
8
 
7
9
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
8
10
 
9
- var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
11
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
10
12
 
11
- var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
13
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
14
+
15
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
16
+
17
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
18
+
19
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
20
+
21
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
22
+
23
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
12
24
 
13
25
  _Object$defineProperty(exports, "__esModule", {
14
26
  value: true
@@ -18,6 +30,8 @@ exports["default"] = void 0;
18
30
 
19
31
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
20
32
 
33
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
34
+
21
35
  var _react = _interopRequireDefault(require("react"));
22
36
 
23
37
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -36,6 +50,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
36
50
 
37
51
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
38
52
 
53
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
54
+
55
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
56
+
39
57
  /**
40
58
  * Chip component.
41
59
  * Built on top of the [Box from Theme-UI](https://theme-ui.com/components/box/) and uses the
@@ -47,7 +65,18 @@ var Chip = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
47
65
  textColor = props.textColor,
48
66
  textProps = props.textProps,
49
67
  label = props.label,
68
+ align = props.align,
50
69
  isUppercase = props.isUppercase;
70
+
71
+ var sx = _objectSpread({}, isUppercase && {
72
+ paddingBottom: '3px'
73
+ });
74
+
75
+ if (align) {
76
+ sx.position = 'absolute';
77
+ sx[align] = '15px';
78
+ }
79
+
51
80
  return (0, _react2.jsx)(_ChipContext.ChipContext.Provider, {
52
81
  value: {
53
82
  bg: bg
@@ -55,9 +84,7 @@ var Chip = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
55
84
  }, (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
56
85
  isRow: true,
57
86
  variant: "boxes.chip",
58
- sx: isUppercase && {
59
- paddingBottom: '3px'
60
- },
87
+ sx: sx,
61
88
  ref: ref
62
89
  }, props), (0, _react2.jsx)(_Text["default"], (0, _extends2["default"])({
63
90
  variant: "label",
@@ -83,7 +110,10 @@ Chip.propTypes = {
83
110
  textProps: _propTypes["default"].shape({}),
84
111
 
85
112
  /** When true, display chip label as uppercase. */
86
- isUppercase: _propTypes["default"].bool
113
+ isUppercase: _propTypes["default"].bool,
114
+
115
+ /** Alignment of chip relative to parent container. */
116
+ align: _propTypes["default"].oneOf(['top', 'right', 'bottom', 'left'])
87
117
  };
88
118
  Chip.defaultProps = {
89
119
  textColor: 'white',
@@ -54,4 +54,12 @@ test('renders Chip component with uppercase', function () {
54
54
  isUppercase: isUppercase
55
55
  });
56
56
  expect(_react2.screen.queryByText('uppercase')).toHaveStyleRule('text-transform', 'uppercase');
57
+ });
58
+ test('renders Chip component with custom alignment', function () {
59
+ var align = 'right';
60
+ getComponent({
61
+ align: align
62
+ });
63
+ expect(_react2.screen.getByTestId(testId)).toHaveStyleRule('position', 'absolute');
64
+ expect(_react2.screen.getByTestId(testId)).toHaveStyleRule('right', '15px');
57
65
  });
@@ -26,7 +26,7 @@ _Object$defineProperty(exports, "__esModule", {
26
26
  value: true
27
27
  });
28
28
 
29
- exports["default"] = exports.WithSections = exports.OrgLevel = exports.DefaultOpen = exports.Default = exports.ControlledMenu = void 0;
29
+ exports["default"] = exports.WithSections = exports.RightAlignedChips = exports.OrgLevel = exports.DefaultOpen = exports.Default = exports.ControlledMenu = void 0;
30
30
 
31
31
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
32
32
 
@@ -410,4 +410,86 @@ var ControlledMenu = function ControlledMenu() {
410
410
  });
411
411
  };
412
412
 
413
- exports.ControlledMenu = ControlledMenu;
413
+ exports.ControlledMenu = ControlledMenu;
414
+
415
+ var RightAlignedChips = function RightAlignedChips(args) {
416
+ var _useState13 = (0, _react.useState)({
417
+ name: 'Snail',
418
+ isSandbox: true
419
+ }),
420
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
421
+ selectedEnvironment = _useState14[0],
422
+ setSelectedEnvironment = _useState14[1];
423
+
424
+ var envNode = (0, _react2.jsx)(_index.Box, {
425
+ isRow: true
426
+ }, (0, _react2.jsx)(_index.Text, {
427
+ color: "inherit"
428
+ }, selectedEnvironment.name), selectedEnvironment.isSandbox ? (0, _react2.jsx)(_index.Chip, {
429
+ label: "SANDBOX",
430
+ variant: "boxes.environmentChip",
431
+ bg: "neutral.40"
432
+ }) : null);
433
+
434
+ var findEnvObj = function findEnvObj(envName) {
435
+ return (0, _find["default"])(defaultEnvironments).call(defaultEnvironments, function (_ref9) {
436
+ var name = _ref9.name;
437
+ return name === envName;
438
+ });
439
+ };
440
+
441
+ var handleSelectionChange = function handleSelectionChange(newEnvName) {
442
+ var envObj = findEnvObj(newEnvName);
443
+ setSelectedEnvironment(_objectSpread({}, envObj));
444
+ };
445
+
446
+ var items = [{
447
+ name: 'Default'
448
+ }, {
449
+ name: 'Kangaroo',
450
+ isSandbox: true
451
+ }, {
452
+ name: 'Snake',
453
+ isSandbox: true
454
+ }, {
455
+ name: 'Snail'
456
+ }, {
457
+ name: 'Slug',
458
+ isSandbox: true
459
+ }, {
460
+ name: 'Crow'
461
+ }, {
462
+ name: 'Dog'
463
+ }, {
464
+ name: 'Crab',
465
+ isSandbox: true
466
+ }, {
467
+ name: 'Fish',
468
+ isSandbox: true
469
+ }, {
470
+ name: 'Turtle',
471
+ isSandbox: true
472
+ }, {
473
+ name: 'Mouse'
474
+ }];
475
+ return (0, _react2.jsx)(_EnvironmentBreadcrumb["default"], (0, _extends2["default"])({}, args, {
476
+ items: items,
477
+ name: "Globochem",
478
+ selectedItem: envNode,
479
+ onSelectionChange: handleSelectionChange
480
+ }), function (_ref10) {
481
+ var name = _ref10.name,
482
+ isSandbox = _ref10.isSandbox;
483
+ return (0, _react2.jsx)(_index.Item, {
484
+ key: name,
485
+ textValue: name
486
+ }, name, isSandbox ? (0, _react2.jsx)(_index.Chip, {
487
+ label: "SANDBOX",
488
+ variant: "boxes.environmentChip",
489
+ bg: "neutral.40",
490
+ align: "right"
491
+ }) : null);
492
+ });
493
+ };
494
+
495
+ exports.RightAlignedChips = RightAlignedChips;
@@ -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',
@@ -1,4 +1,18 @@
1
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
2
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
3
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
4
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
5
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
6
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
7
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
8
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
1
9
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
+
12
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
+
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
15
+
2
16
  import React from 'react';
3
17
  import PropTypes from 'prop-types';
4
18
  import { ChipContext } from './ChipContext';
@@ -18,7 +32,18 @@ var Chip = /*#__PURE__*/React.forwardRef(function (props, ref) {
18
32
  textColor = props.textColor,
19
33
  textProps = props.textProps,
20
34
  label = props.label,
35
+ align = props.align,
21
36
  isUppercase = props.isUppercase;
37
+
38
+ var sx = _objectSpread({}, isUppercase && {
39
+ paddingBottom: '3px'
40
+ });
41
+
42
+ if (align) {
43
+ sx.position = 'absolute';
44
+ sx[align] = '15px';
45
+ }
46
+
22
47
  return ___EmotionJSX(ChipContext.Provider, {
23
48
  value: {
24
49
  bg: bg
@@ -26,9 +51,7 @@ var Chip = /*#__PURE__*/React.forwardRef(function (props, ref) {
26
51
  }, ___EmotionJSX(Box, _extends({
27
52
  isRow: true,
28
53
  variant: "boxes.chip",
29
- sx: isUppercase && {
30
- paddingBottom: '3px'
31
- },
54
+ sx: sx,
32
55
  ref: ref
33
56
  }, props), ___EmotionJSX(Text, _extends({
34
57
  variant: "label",
@@ -53,7 +76,10 @@ Chip.propTypes = {
53
76
  textProps: PropTypes.shape({}),
54
77
 
55
78
  /** When true, display chip label as uppercase. */
56
- isUppercase: PropTypes.bool
79
+ isUppercase: PropTypes.bool,
80
+
81
+ /** Alignment of chip relative to parent container. */
82
+ align: PropTypes.oneOf(['top', 'right', 'bottom', 'left'])
57
83
  };
58
84
  Chip.defaultProps = {
59
85
  textColor: 'white',
@@ -40,4 +40,12 @@ test('renders Chip component with uppercase', function () {
40
40
  isUppercase: isUppercase
41
41
  });
42
42
  expect(screen.queryByText('uppercase')).toHaveStyleRule('text-transform', 'uppercase');
43
+ });
44
+ test('renders Chip component with custom alignment', function () {
45
+ var align = 'right';
46
+ getComponent({
47
+ align: align
48
+ });
49
+ expect(screen.getByTestId(testId)).toHaveStyleRule('position', 'absolute');
50
+ expect(screen.getByTestId(testId)).toHaveStyleRule('right', '15px');
43
51
  });
@@ -359,4 +359,83 @@ export var ControlledMenu = function ControlledMenu() {
359
359
  bg: "neutral.40"
360
360
  }) : null);
361
361
  });
362
+ };
363
+ export var RightAlignedChips = function RightAlignedChips(args) {
364
+ var _useState13 = useState({
365
+ name: 'Snail',
366
+ isSandbox: true
367
+ }),
368
+ _useState14 = _slicedToArray(_useState13, 2),
369
+ selectedEnvironment = _useState14[0],
370
+ setSelectedEnvironment = _useState14[1];
371
+
372
+ var envNode = ___EmotionJSX(Box, {
373
+ isRow: true
374
+ }, ___EmotionJSX(Text, {
375
+ color: "inherit"
376
+ }, selectedEnvironment.name), selectedEnvironment.isSandbox ? ___EmotionJSX(Chip, {
377
+ label: "SANDBOX",
378
+ variant: "boxes.environmentChip",
379
+ bg: "neutral.40"
380
+ }) : null);
381
+
382
+ var findEnvObj = function findEnvObj(envName) {
383
+ return _findInstanceProperty(defaultEnvironments).call(defaultEnvironments, function (_ref9) {
384
+ var name = _ref9.name;
385
+ return name === envName;
386
+ });
387
+ };
388
+
389
+ var handleSelectionChange = function handleSelectionChange(newEnvName) {
390
+ var envObj = findEnvObj(newEnvName);
391
+ setSelectedEnvironment(_objectSpread({}, envObj));
392
+ };
393
+
394
+ var items = [{
395
+ name: 'Default'
396
+ }, {
397
+ name: 'Kangaroo',
398
+ isSandbox: true
399
+ }, {
400
+ name: 'Snake',
401
+ isSandbox: true
402
+ }, {
403
+ name: 'Snail'
404
+ }, {
405
+ name: 'Slug',
406
+ isSandbox: true
407
+ }, {
408
+ name: 'Crow'
409
+ }, {
410
+ name: 'Dog'
411
+ }, {
412
+ name: 'Crab',
413
+ isSandbox: true
414
+ }, {
415
+ name: 'Fish',
416
+ isSandbox: true
417
+ }, {
418
+ name: 'Turtle',
419
+ isSandbox: true
420
+ }, {
421
+ name: 'Mouse'
422
+ }];
423
+ return ___EmotionJSX(EnvironmentBreadcrumb, _extends({}, args, {
424
+ items: items,
425
+ name: "Globochem",
426
+ selectedItem: envNode,
427
+ onSelectionChange: handleSelectionChange
428
+ }), function (_ref10) {
429
+ var name = _ref10.name,
430
+ isSandbox = _ref10.isSandbox;
431
+ return ___EmotionJSX(Item, {
432
+ key: name,
433
+ textValue: name
434
+ }, name, isSandbox ? ___EmotionJSX(Chip, {
435
+ label: "SANDBOX",
436
+ variant: "boxes.environmentChip",
437
+ bg: "neutral.40",
438
+ align: "right"
439
+ }) : null);
440
+ });
362
441
  };
@@ -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.5",
3
+ "version": "1.31.0-alpha.7",
4
4
  "description": "PingUX themeable React component library",
5
5
  "repository": {
6
6
  "type": "git",