@pingux/astro 1.40.1-alpha.3 → 1.40.1
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/CHANGELOG.md +13 -0
- package/NOTICE.html +4707 -0
- package/lib/cjs/components/AccordionGroup/AccordionGroup.js +33 -10
- package/lib/cjs/components/AccordionGroup/AccordionGroup.stories.js +4 -2
- package/lib/cjs/components/AccordionGroup/AccordionGroup.test.js +123 -0
- package/lib/components/AccordionGroup/AccordionGroup.js +28 -9
- package/lib/components/AccordionGroup/AccordionGroup.stories.js +3 -2
- package/lib/components/AccordionGroup/AccordionGroup.test.js +106 -1
- package/package.json +1 -1
@@ -2,12 +2,24 @@
|
|
2
2
|
|
3
3
|
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
4
|
|
5
|
-
var
|
5
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
6
6
|
|
7
|
-
var _Object$
|
7
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
8
|
+
|
9
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
8
10
|
|
9
11
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
10
12
|
|
13
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
14
|
+
|
15
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
16
|
+
|
17
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
18
|
+
|
19
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
20
|
+
|
21
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
22
|
+
|
11
23
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
12
24
|
|
13
25
|
_Object$defineProperty(exports, "__esModule", {
|
@@ -22,6 +34,8 @@ var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stabl
|
|
22
34
|
|
23
35
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
24
36
|
|
37
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
38
|
+
|
25
39
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
26
40
|
|
27
41
|
var _react = _interopRequireWildcard(require("react"));
|
@@ -30,6 +44,8 @@ var _accordion = require("@react-aria/accordion");
|
|
30
44
|
|
31
45
|
var _tree = require("@react-stately/tree");
|
32
46
|
|
47
|
+
var _utils = require("@react-aria/utils");
|
48
|
+
|
33
49
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
34
50
|
|
35
51
|
var _index = require("../../index");
|
@@ -42,12 +58,17 @@ var _isIterable = require("../../utils/devUtils/props/isIterable");
|
|
42
58
|
|
43
59
|
var _react2 = require("@emotion/react");
|
44
60
|
|
45
|
-
var _excluded = ["defaultExpandedKeys", "expandedKeys", "onExpandedChange"]
|
61
|
+
var _excluded = ["defaultExpandedKeys", "expandedKeys", "onExpandedChange"],
|
62
|
+
_excluded2 = ["onFocus"];
|
46
63
|
|
47
64
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
48
65
|
|
49
66
|
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; }
|
50
67
|
|
68
|
+
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; }
|
69
|
+
|
70
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
71
|
+
|
51
72
|
/**
|
52
73
|
* Component that allows for a child to be expanded and retracted.
|
53
74
|
* Built on top of [React Aria useAccordion and useAccordionItem](https://reactspectrum.blob.core.windows.net/reactspectrum/d77b35e970e5549f66b47a83f07423f5c93b7297/docs/react-aria/useAccordion.html).
|
@@ -65,26 +86,28 @@ var AccordionGroup = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
65
86
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
66
87
|
var state = (0, _tree.useTreeState)(props);
|
67
88
|
var accordionRef = (0, _react.useRef)();
|
89
|
+
/* `autoFocus: true` is what makes the initial focus only take one click vs two. */
|
68
90
|
|
69
|
-
var _useAccordion = (0, _accordion.useAccordion)(
|
91
|
+
var _useAccordion = (0, _accordion.useAccordion)(_objectSpread({
|
92
|
+
autoFocus: true
|
93
|
+
}, props), state, accordionRef),
|
70
94
|
accordionProps = _useAccordion.accordionProps;
|
71
95
|
|
72
96
|
delete accordionProps.onMouseDown;
|
97
|
+
/* Splicing out the onFocus function is what allows subsequent focuses to only take one click. */
|
98
|
+
|
99
|
+
var onFocus = accordionProps.onFocus,
|
100
|
+
theseProps = (0, _objectWithoutProperties2["default"])(accordionProps, _excluded2);
|
73
101
|
/* istanbul ignore next */
|
74
102
|
|
75
103
|
(0, _react.useImperativeHandle)(ref, function () {
|
76
104
|
return accordionRef.current;
|
77
105
|
});
|
78
|
-
(0, _react.useEffect)(function () {
|
79
|
-
if (expandedKeys || defaultExpandedKeys) {
|
80
|
-
state.selectionManager.setFocused(true);
|
81
|
-
}
|
82
|
-
}, [defaultExpandedKeys, expandedKeys, state.selectionManager]);
|
83
106
|
return (0, _react2.jsx)(_AccordionContext.AccordionContext.Provider, {
|
84
107
|
value: state
|
85
108
|
}, (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
|
86
109
|
ref: accordionRef
|
87
|
-
},
|
110
|
+
}, (0, _utils.mergeProps)(theseProps, others)), (0, _map["default"])(_context = (0, _from["default"])(state.collection)).call(_context, function (item) {
|
88
111
|
return (0, _react2.jsx)(_AccordionItem["default"], {
|
89
112
|
key: item.key,
|
90
113
|
item: item,
|
@@ -26,6 +26,8 @@ var _Text = _interopRequireDefault(require("../Text"));
|
|
26
26
|
|
27
27
|
var _Button = _interopRequireDefault(require("../Button"));
|
28
28
|
|
29
|
+
var _TextField = _interopRequireDefault(require("../TextField"));
|
30
|
+
|
29
31
|
var _ = _interopRequireDefault(require("."));
|
30
32
|
|
31
33
|
var _react2 = require("@emotion/react");
|
@@ -45,7 +47,7 @@ var itemArray = [{
|
|
45
47
|
}, {
|
46
48
|
key: 't3',
|
47
49
|
label: 'Third Accordion',
|
48
|
-
children:
|
50
|
+
children: (0, _react2.jsx)(_TextField["default"], null)
|
49
51
|
}];
|
50
52
|
var itemArrayDisabled = [{
|
51
53
|
key: 't1',
|
@@ -132,7 +134,7 @@ var Multiple = function Multiple() {
|
|
132
134
|
exports.Multiple = Multiple;
|
133
135
|
|
134
136
|
var ControlledExpanded = function ControlledExpanded() {
|
135
|
-
var _useState = (0, _react.useState)(['
|
137
|
+
var _useState = (0, _react.useState)(['t3']),
|
136
138
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
137
139
|
expandedKeys = _useState2[0],
|
138
140
|
setExpandedKeys = _useState2[1];
|
@@ -28,6 +28,16 @@ var testId = 'test-accordion';
|
|
28
28
|
var defaultProps = {
|
29
29
|
'data-testid': testId
|
30
30
|
};
|
31
|
+
var items = [{
|
32
|
+
key: 'identityProvider',
|
33
|
+
label: 'some label1',
|
34
|
+
text: 'empty'
|
35
|
+
}, {
|
36
|
+
key: 'identityProvider1',
|
37
|
+
label: 'some label2',
|
38
|
+
text: 'empty'
|
39
|
+
}];
|
40
|
+
var selectedAccordionKeys = ['identityProvider', 'identityProvider1'];
|
31
41
|
|
32
42
|
var getComponent = function getComponent() {
|
33
43
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
@@ -87,6 +97,73 @@ var getComponentWithInput = function getComponentWithInput() {
|
|
87
97
|
}, (0, _react2.jsx)("input", {
|
88
98
|
"data-testid": "testInput"
|
89
99
|
}))));
|
100
|
+
};
|
101
|
+
|
102
|
+
var getComponentWithPopover = function getComponentWithPopover() {
|
103
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(_index.Box, {
|
104
|
+
isRow: true,
|
105
|
+
alignItems: "center",
|
106
|
+
justifyContent: "space-between",
|
107
|
+
width: "50%"
|
108
|
+
}, (0, _react2.jsx)(_index.PopoverMenu, null, (0, _react2.jsx)(_index.Button, {
|
109
|
+
"data-testid": "popoverbutton"
|
110
|
+
}, "Click me"), (0, _react2.jsx)(_index.Menu, {
|
111
|
+
onAction: function onAction() {}
|
112
|
+
}, (0, _react2.jsx)(_collections.Item, {
|
113
|
+
key: "edit"
|
114
|
+
}, "Edit"), (0, _react2.jsx)(_collections.Item, {
|
115
|
+
key: "duplicate"
|
116
|
+
}, "Duplicate"), (0, _react2.jsx)(_collections.Item, {
|
117
|
+
key: "delete",
|
118
|
+
textValue: "delete"
|
119
|
+
}, (0, _react2.jsx)(_Text["default"], {
|
120
|
+
color: "critical.bright"
|
121
|
+
}, "Delete")))), (0, _react2.jsx)(_AccordionGroup["default"], {
|
122
|
+
items: items,
|
123
|
+
defaultExpandedKeys: selectedAccordionKeys
|
124
|
+
}, function (item) {
|
125
|
+
return (0, _react2.jsx)(_collections.Item, {
|
126
|
+
key: item.key,
|
127
|
+
textValue: item.label,
|
128
|
+
label: item.label
|
129
|
+
}, item.text);
|
130
|
+
})));
|
131
|
+
};
|
132
|
+
|
133
|
+
var getComponentWithMultipleAccordion = function getComponentWithMultipleAccordion() {
|
134
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(_index.Box, {
|
135
|
+
alignItems: "center",
|
136
|
+
justifyContent: "space-between",
|
137
|
+
width: "50%"
|
138
|
+
}, (0, _react2.jsx)(_AccordionGroup["default"], {
|
139
|
+
defaultExpandedKeys: ['customConfiguration']
|
140
|
+
}, (0, _react2.jsx)(_collections.Item, {
|
141
|
+
key: "customConfiguration",
|
142
|
+
label: "connection.configuration",
|
143
|
+
regionProps: {
|
144
|
+
pt: 'sm'
|
145
|
+
},
|
146
|
+
containerProps: {
|
147
|
+
mb: 0
|
148
|
+
},
|
149
|
+
textValue: "connection.configuration"
|
150
|
+
}, (0, _react2.jsx)("form", {
|
151
|
+
"data-id": "connection-configuration-custom-form"
|
152
|
+
}, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_Text["default"], null, "other text"), (0, _react2.jsx)(_Text["default"], null, "another text"))))), (0, _react2.jsx)(_AccordionGroup["default"], {
|
153
|
+
defaultExpandedKeys: ['customConfiguration1']
|
154
|
+
}, (0, _react2.jsx)(_collections.Item, {
|
155
|
+
key: "customConfiguration",
|
156
|
+
label: "connection.configuration1",
|
157
|
+
regionProps: {
|
158
|
+
pt: 'sm'
|
159
|
+
},
|
160
|
+
containerProps: {
|
161
|
+
mb: 0
|
162
|
+
},
|
163
|
+
textValue: "connection.configuration1"
|
164
|
+
}, (0, _react2.jsx)("form", {
|
165
|
+
"data-id": "connection-configuration-custom-form"
|
166
|
+
}, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_Text["default"], null, "other text1"), (0, _react2.jsx)(_Text["default"], null, "another text1")))))));
|
90
167
|
}; // Need to be added to each test file to test accessibility using axe.
|
91
168
|
|
92
169
|
|
@@ -329,4 +406,50 @@ test('items do not automatically expand if wrapped in an open OverlayPanel', fun
|
|
329
406
|
|
330
407
|
var selectedItem = buttons[0];
|
331
408
|
expect(selectedItem).not.toHaveAttribute('aria-expanded', 'true');
|
409
|
+
});
|
410
|
+
test('accordion is compatible with another component that uses an overlay', function () {
|
411
|
+
getComponentWithPopover();
|
412
|
+
|
413
|
+
var buttons = _testWrapper.screen.getAllByRole('button');
|
414
|
+
|
415
|
+
var popoverButton = _testWrapper.screen.getByTestId('popoverbutton');
|
416
|
+
|
417
|
+
_userEvent["default"].click(popoverButton);
|
418
|
+
|
419
|
+
var selectedItem = buttons[0];
|
420
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
421
|
+
|
422
|
+
_userEvent["default"].click(selectedItem);
|
423
|
+
|
424
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'false');
|
425
|
+
|
426
|
+
_userEvent["default"].click(selectedItem);
|
427
|
+
|
428
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
429
|
+
});
|
430
|
+
test('accordion works if there are multiple, controlled on the same implementation', function () {
|
431
|
+
getComponentWithMultipleAccordion();
|
432
|
+
|
433
|
+
var buttons = _testWrapper.screen.getAllByRole('button');
|
434
|
+
|
435
|
+
var selectedItem = buttons[0];
|
436
|
+
var secondSelectedItem = buttons[1];
|
437
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
438
|
+
|
439
|
+
_userEvent["default"].click(selectedItem);
|
440
|
+
|
441
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'false');
|
442
|
+
|
443
|
+
_userEvent["default"].click(selectedItem);
|
444
|
+
|
445
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
446
|
+
expect(secondSelectedItem).toHaveAttribute('aria-expanded', 'false');
|
447
|
+
|
448
|
+
_userEvent["default"].click(secondSelectedItem);
|
449
|
+
|
450
|
+
expect(secondSelectedItem).toHaveAttribute('aria-expanded', 'true');
|
451
|
+
|
452
|
+
_userEvent["default"].click(secondSelectedItem);
|
453
|
+
|
454
|
+
expect(secondSelectedItem).toHaveAttribute('aria-expanded', 'false');
|
332
455
|
});
|
@@ -1,11 +1,27 @@
|
|
1
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
2
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
3
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
4
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
5
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
6
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
7
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
8
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
1
9
|
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
10
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
2
11
|
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
3
|
-
var _excluded = ["defaultExpandedKeys", "expandedKeys", "onExpandedChange"]
|
12
|
+
var _excluded = ["defaultExpandedKeys", "expandedKeys", "onExpandedChange"],
|
13
|
+
_excluded2 = ["onFocus"];
|
4
14
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
5
15
|
import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
|
6
|
-
|
16
|
+
|
17
|
+
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; }
|
18
|
+
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
20
|
+
|
21
|
+
import React, { forwardRef, useRef, useImperativeHandle } from 'react';
|
7
22
|
import { useAccordion } from '@react-aria/accordion';
|
8
23
|
import { useTreeState } from '@react-stately/tree';
|
24
|
+
import { mergeProps } from '@react-aria/utils';
|
9
25
|
import PropTypes from 'prop-types';
|
10
26
|
import { Box } from '../../index';
|
11
27
|
import AccordionItem from '../AccordionItem';
|
@@ -31,26 +47,29 @@ var AccordionGroup = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
31
47
|
|
32
48
|
var state = useTreeState(props);
|
33
49
|
var accordionRef = useRef();
|
50
|
+
/* `autoFocus: true` is what makes the initial focus only take one click vs two. */
|
34
51
|
|
35
|
-
var _useAccordion = useAccordion(
|
52
|
+
var _useAccordion = useAccordion(_objectSpread({
|
53
|
+
autoFocus: true
|
54
|
+
}, props), state, accordionRef),
|
36
55
|
accordionProps = _useAccordion.accordionProps;
|
37
56
|
|
38
57
|
delete accordionProps.onMouseDown;
|
58
|
+
/* Splicing out the onFocus function is what allows subsequent focuses to only take one click. */
|
59
|
+
|
60
|
+
var onFocus = accordionProps.onFocus,
|
61
|
+
theseProps = _objectWithoutProperties(accordionProps, _excluded2);
|
39
62
|
/* istanbul ignore next */
|
40
63
|
|
64
|
+
|
41
65
|
useImperativeHandle(ref, function () {
|
42
66
|
return accordionRef.current;
|
43
67
|
});
|
44
|
-
useEffect(function () {
|
45
|
-
if (expandedKeys || defaultExpandedKeys) {
|
46
|
-
state.selectionManager.setFocused(true);
|
47
|
-
}
|
48
|
-
}, [defaultExpandedKeys, expandedKeys, state.selectionManager]);
|
49
68
|
return ___EmotionJSX(AccordionContext.Provider, {
|
50
69
|
value: state
|
51
70
|
}, ___EmotionJSX(Box, _extends({
|
52
71
|
ref: accordionRef
|
53
|
-
},
|
72
|
+
}, mergeProps(theseProps, others)), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item) {
|
54
73
|
return ___EmotionJSX(AccordionItem, {
|
55
74
|
key: item.key,
|
56
75
|
item: item,
|
@@ -3,6 +3,7 @@ import React, { useState } from 'react';
|
|
3
3
|
import { Item } from '@react-stately/collections';
|
4
4
|
import Text from '../Text';
|
5
5
|
import Button from '../Button';
|
6
|
+
import TextField from '../TextField';
|
6
7
|
import AccordionGroup from '.';
|
7
8
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
8
9
|
var itemArray = [{
|
@@ -16,7 +17,7 @@ var itemArray = [{
|
|
16
17
|
}, {
|
17
18
|
key: 't3',
|
18
19
|
label: 'Third Accordion',
|
19
|
-
children:
|
20
|
+
children: ___EmotionJSX(TextField, null)
|
20
21
|
}];
|
21
22
|
var itemArrayDisabled = [{
|
22
23
|
key: 't1',
|
@@ -95,7 +96,7 @@ export var Multiple = function Multiple() {
|
|
95
96
|
);
|
96
97
|
};
|
97
98
|
export var ControlledExpanded = function ControlledExpanded() {
|
98
|
-
var _useState = useState(['
|
99
|
+
var _useState = useState(['t3']),
|
99
100
|
_useState2 = _slicedToArray(_useState, 2),
|
100
101
|
expandedKeys = _useState2[0],
|
101
102
|
setExpandedKeys = _useState2[1];
|
@@ -7,12 +7,22 @@ import axeTest from '../../utils/testUtils/testAxe';
|
|
7
7
|
import { act, fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
|
8
8
|
import Text from '../Text';
|
9
9
|
import AccordionGroup from '../AccordionGroup';
|
10
|
-
import { OverlayPanel, TextField } from '../../index';
|
10
|
+
import { OverlayPanel, TextField, Box, Menu, Button, PopoverMenu } from '../../index';
|
11
11
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
12
12
|
var testId = 'test-accordion';
|
13
13
|
var defaultProps = {
|
14
14
|
'data-testid': testId
|
15
15
|
};
|
16
|
+
var items = [{
|
17
|
+
key: 'identityProvider',
|
18
|
+
label: 'some label1',
|
19
|
+
text: 'empty'
|
20
|
+
}, {
|
21
|
+
key: 'identityProvider1',
|
22
|
+
label: 'some label2',
|
23
|
+
text: 'empty'
|
24
|
+
}];
|
25
|
+
var selectedAccordionKeys = ['identityProvider', 'identityProvider1'];
|
16
26
|
|
17
27
|
var getComponent = function getComponent() {
|
18
28
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
@@ -72,6 +82,73 @@ var getComponentWithInput = function getComponentWithInput() {
|
|
72
82
|
}, ___EmotionJSX("input", {
|
73
83
|
"data-testid": "testInput"
|
74
84
|
}))));
|
85
|
+
};
|
86
|
+
|
87
|
+
var getComponentWithPopover = function getComponentWithPopover() {
|
88
|
+
return render(___EmotionJSX(Box, {
|
89
|
+
isRow: true,
|
90
|
+
alignItems: "center",
|
91
|
+
justifyContent: "space-between",
|
92
|
+
width: "50%"
|
93
|
+
}, ___EmotionJSX(PopoverMenu, null, ___EmotionJSX(Button, {
|
94
|
+
"data-testid": "popoverbutton"
|
95
|
+
}, "Click me"), ___EmotionJSX(Menu, {
|
96
|
+
onAction: function onAction() {}
|
97
|
+
}, ___EmotionJSX(Item, {
|
98
|
+
key: "edit"
|
99
|
+
}, "Edit"), ___EmotionJSX(Item, {
|
100
|
+
key: "duplicate"
|
101
|
+
}, "Duplicate"), ___EmotionJSX(Item, {
|
102
|
+
key: "delete",
|
103
|
+
textValue: "delete"
|
104
|
+
}, ___EmotionJSX(Text, {
|
105
|
+
color: "critical.bright"
|
106
|
+
}, "Delete")))), ___EmotionJSX(AccordionGroup, {
|
107
|
+
items: items,
|
108
|
+
defaultExpandedKeys: selectedAccordionKeys
|
109
|
+
}, function (item) {
|
110
|
+
return ___EmotionJSX(Item, {
|
111
|
+
key: item.key,
|
112
|
+
textValue: item.label,
|
113
|
+
label: item.label
|
114
|
+
}, item.text);
|
115
|
+
})));
|
116
|
+
};
|
117
|
+
|
118
|
+
var getComponentWithMultipleAccordion = function getComponentWithMultipleAccordion() {
|
119
|
+
return render(___EmotionJSX(Box, {
|
120
|
+
alignItems: "center",
|
121
|
+
justifyContent: "space-between",
|
122
|
+
width: "50%"
|
123
|
+
}, ___EmotionJSX(AccordionGroup, {
|
124
|
+
defaultExpandedKeys: ['customConfiguration']
|
125
|
+
}, ___EmotionJSX(Item, {
|
126
|
+
key: "customConfiguration",
|
127
|
+
label: "connection.configuration",
|
128
|
+
regionProps: {
|
129
|
+
pt: 'sm'
|
130
|
+
},
|
131
|
+
containerProps: {
|
132
|
+
mb: 0
|
133
|
+
},
|
134
|
+
textValue: "connection.configuration"
|
135
|
+
}, ___EmotionJSX("form", {
|
136
|
+
"data-id": "connection-configuration-custom-form"
|
137
|
+
}, ___EmotionJSX(Box, null, ___EmotionJSX(Text, null, "other text"), ___EmotionJSX(Text, null, "another text"))))), ___EmotionJSX(AccordionGroup, {
|
138
|
+
defaultExpandedKeys: ['customConfiguration1']
|
139
|
+
}, ___EmotionJSX(Item, {
|
140
|
+
key: "customConfiguration",
|
141
|
+
label: "connection.configuration1",
|
142
|
+
regionProps: {
|
143
|
+
pt: 'sm'
|
144
|
+
},
|
145
|
+
containerProps: {
|
146
|
+
mb: 0
|
147
|
+
},
|
148
|
+
textValue: "connection.configuration1"
|
149
|
+
}, ___EmotionJSX("form", {
|
150
|
+
"data-id": "connection-configuration-custom-form"
|
151
|
+
}, ___EmotionJSX(Box, null, ___EmotionJSX(Text, null, "other text1"), ___EmotionJSX(Text, null, "another text1")))))));
|
75
152
|
}; // Need to be added to each test file to test accessibility using axe.
|
76
153
|
|
77
154
|
|
@@ -253,4 +330,32 @@ test('items do not automatically expand if wrapped in an open OverlayPanel', fun
|
|
253
330
|
var buttons = screen.getAllByRole('button');
|
254
331
|
var selectedItem = buttons[0];
|
255
332
|
expect(selectedItem).not.toHaveAttribute('aria-expanded', 'true');
|
333
|
+
});
|
334
|
+
test('accordion is compatible with another component that uses an overlay', function () {
|
335
|
+
getComponentWithPopover();
|
336
|
+
var buttons = screen.getAllByRole('button');
|
337
|
+
var popoverButton = screen.getByTestId('popoverbutton');
|
338
|
+
userEvent.click(popoverButton);
|
339
|
+
var selectedItem = buttons[0];
|
340
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
341
|
+
userEvent.click(selectedItem);
|
342
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'false');
|
343
|
+
userEvent.click(selectedItem);
|
344
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
345
|
+
});
|
346
|
+
test('accordion works if there are multiple, controlled on the same implementation', function () {
|
347
|
+
getComponentWithMultipleAccordion();
|
348
|
+
var buttons = screen.getAllByRole('button');
|
349
|
+
var selectedItem = buttons[0];
|
350
|
+
var secondSelectedItem = buttons[1];
|
351
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
352
|
+
userEvent.click(selectedItem);
|
353
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'false');
|
354
|
+
userEvent.click(selectedItem);
|
355
|
+
expect(selectedItem).toHaveAttribute('aria-expanded', 'true');
|
356
|
+
expect(secondSelectedItem).toHaveAttribute('aria-expanded', 'false');
|
357
|
+
userEvent.click(secondSelectedItem);
|
358
|
+
expect(secondSelectedItem).toHaveAttribute('aria-expanded', 'true');
|
359
|
+
userEvent.click(secondSelectedItem);
|
360
|
+
expect(secondSelectedItem).toHaveAttribute('aria-expanded', 'false');
|
256
361
|
});
|