@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.
- package/lib/cjs/components/Chip/Chip.js +37 -7
- package/lib/cjs/components/Chip/Chip.test.js +8 -0
- package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +84 -2
- 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/Chip/Chip.js +30 -4
- package/lib/components/Chip/Chip.test.js +8 -0
- package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +79 -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
@@ -2,13 +2,25 @@
|
|
2
2
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
4
|
|
5
|
-
var
|
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
|
11
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
10
12
|
|
11
|
-
var
|
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:
|
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(
|
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',
|
@@ -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:
|
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(
|
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',
|