@pingux/astro 1.4.2-alpha.1 → 1.5.0-alpha.0
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/ListView/ListView.js +12 -13
- package/lib/cjs/components/ListView/ListView.test.js +8 -8
- package/lib/cjs/components/ListViewItem/ListViewItem.js +0 -2
- package/lib/cjs/components/MultiselectFilter/MultiselectFilter.js +143 -0
- package/lib/cjs/components/MultiselectFilter/MultiselectFilter.stories.js +283 -0
- package/lib/cjs/components/MultiselectFilter/MultiselectFilter.test.js +83 -0
- package/lib/cjs/components/MultiselectFilter/index.js +18 -0
- package/lib/cjs/components/MultiselectFilterItem/MultiselectFilterItem.js +55 -0
- package/lib/cjs/components/MultiselectFilterItem/MultiselectFilterItem.test.js +53 -0
- package/lib/cjs/components/MultiselectFilterItem/index.js +18 -0
- package/lib/cjs/components/MultiselectListContainer/MultiselectBadge.js +47 -0
- package/lib/cjs/components/MultiselectListContainer/MultiselectBadge.test.js +48 -0
- package/lib/cjs/components/MultiselectListContainer/MultiselectListContainer.js +157 -0
- package/lib/cjs/components/MultiselectListContainer/MultiselectListContainer.test.js +112 -0
- package/lib/cjs/components/MultiselectListContainer/index.js +18 -0
- package/lib/cjs/index.js +98 -32
- package/lib/cjs/styles/variants/buttons.js +25 -1
- package/lib/cjs/styles/variants/multiselectListContainer.js +73 -0
- package/lib/cjs/styles/variants/text.js +22 -0
- package/lib/cjs/styles/variants/variants.js +3 -0
- package/lib/components/ListView/ListView.js +12 -13
- package/lib/components/ListView/ListView.test.js +8 -8
- package/lib/components/ListViewItem/ListViewItem.js +0 -2
- package/lib/components/MultiselectFilter/MultiselectFilter.js +118 -0
- package/lib/components/MultiselectFilter/MultiselectFilter.stories.js +251 -0
- package/lib/components/MultiselectFilter/MultiselectFilter.test.js +69 -0
- package/lib/components/MultiselectFilter/index.js +1 -0
- package/lib/components/MultiselectFilterItem/MultiselectFilterItem.js +36 -0
- package/lib/components/MultiselectFilterItem/MultiselectFilterItem.test.js +37 -0
- package/lib/components/MultiselectFilterItem/index.js +1 -0
- package/lib/components/MultiselectListContainer/MultiselectBadge.js +31 -0
- package/lib/components/MultiselectListContainer/MultiselectBadge.test.js +34 -0
- package/lib/components/MultiselectListContainer/MultiselectListContainer.js +123 -0
- package/lib/components/MultiselectListContainer/MultiselectListContainer.test.js +81 -0
- package/lib/components/MultiselectListContainer/index.js +1 -0
- package/lib/index.js +6 -0
- package/lib/styles/variants/buttons.js +25 -1
- package/lib/styles/variants/multiselectListContainer.js +63 -0
- package/lib/styles/variants/text.js +22 -0
- package/lib/styles/variants/variants.js +2 -0
- package/package.json +1 -1
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
|
6
|
+
|
7
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
8
|
+
|
9
|
+
_Object$defineProperty(exports, "__esModule", {
|
10
|
+
value: true
|
11
|
+
});
|
12
|
+
|
13
|
+
exports["default"] = void 0;
|
14
|
+
|
15
|
+
var _react = _interopRequireWildcard(require("react"));
|
16
|
+
|
17
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
18
|
+
|
19
|
+
var _index = require("../../index");
|
20
|
+
|
21
|
+
var _react2 = require("@emotion/react");
|
22
|
+
|
23
|
+
var MultiselectFilterItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
24
|
+
var text = props.text,
|
25
|
+
icon = props.icon;
|
26
|
+
return (0, _react2.jsx)(_index.Box, {
|
27
|
+
"data-testid": "multiselect-filter-item",
|
28
|
+
isRow: true,
|
29
|
+
justifyContent: "space-between",
|
30
|
+
ref: ref
|
31
|
+
}, (0, _react2.jsx)(_index.Text, {
|
32
|
+
variant: "multiselectFilterItem"
|
33
|
+
}, text), icon && (0, _react2.jsx)(_index.Icon, {
|
34
|
+
"data-testid": "multiselect-filter-data-icon",
|
35
|
+
icon: icon,
|
36
|
+
mr: "md",
|
37
|
+
color: "neutral.10",
|
38
|
+
size: 13,
|
39
|
+
flexShrink: 0
|
40
|
+
}));
|
41
|
+
});
|
42
|
+
MultiselectFilterItem.propTypes = {
|
43
|
+
/**
|
44
|
+
* Display text.
|
45
|
+
*/
|
46
|
+
text: _propTypes["default"].string,
|
47
|
+
|
48
|
+
/**
|
49
|
+
* List icon.
|
50
|
+
*/
|
51
|
+
icon: _propTypes["default"].shape({})
|
52
|
+
};
|
53
|
+
MultiselectFilterItem.displayName = 'MultiselectFilterItem';
|
54
|
+
var _default = MultiselectFilterItem;
|
55
|
+
exports["default"] = _default;
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
6
|
+
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
8
|
+
|
9
|
+
var _FilterIcon = _interopRequireDefault(require("mdi-react/FilterIcon"));
|
10
|
+
|
11
|
+
var _testAxe = _interopRequireDefault(require("../../utils/testUtils/testAxe"));
|
12
|
+
|
13
|
+
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
14
|
+
|
15
|
+
var _MultiselectFilterItem = _interopRequireDefault(require("./MultiselectFilterItem"));
|
16
|
+
|
17
|
+
var _react2 = require("@emotion/react");
|
18
|
+
|
19
|
+
var testId = 'multiselect-filter-item';
|
20
|
+
var iconId = 'multiselect-filter-data-icon';
|
21
|
+
var defaultProps = {
|
22
|
+
text: 'Item name'
|
23
|
+
};
|
24
|
+
|
25
|
+
var getComponent = function getComponent() {
|
26
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
27
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(_MultiselectFilterItem["default"], (0, _extends2["default"])({}, defaultProps, props)));
|
28
|
+
};
|
29
|
+
|
30
|
+
afterEach(function () {
|
31
|
+
jest.restoreAllMocks();
|
32
|
+
}); // Need to be added to each test file to test accessibility using axe.
|
33
|
+
|
34
|
+
(0, _testAxe["default"])(getComponent);
|
35
|
+
test('default multiselectFilter', function () {
|
36
|
+
getComponent();
|
37
|
+
|
38
|
+
var multiselectFilterItem = _testWrapper.screen.getByTestId(testId);
|
39
|
+
|
40
|
+
var icon = _testWrapper.screen.queryByTestId(iconId);
|
41
|
+
|
42
|
+
expect(icon).not.toBeInTheDocument();
|
43
|
+
expect(multiselectFilterItem).toBeInTheDocument();
|
44
|
+
});
|
45
|
+
test('icon displays when icon prop is present', function () {
|
46
|
+
getComponent({
|
47
|
+
icon: _FilterIcon["default"]
|
48
|
+
});
|
49
|
+
|
50
|
+
var icon = _testWrapper.screen.getByTestId(iconId);
|
51
|
+
|
52
|
+
expect(icon).toBeInTheDocument();
|
53
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
_Object$defineProperty(exports, "default", {
|
12
|
+
enumerable: true,
|
13
|
+
get: function get() {
|
14
|
+
return _MultiselectFilterItem["default"];
|
15
|
+
}
|
16
|
+
});
|
17
|
+
|
18
|
+
var _MultiselectFilterItem = _interopRequireDefault(require("./MultiselectFilterItem"));
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
exports["default"] = void 0;
|
12
|
+
|
13
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
14
|
+
|
15
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
16
|
+
|
17
|
+
var _react = _interopRequireDefault(require("react"));
|
18
|
+
|
19
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
20
|
+
|
21
|
+
var _Chip = _interopRequireDefault(require("../Chip"));
|
22
|
+
|
23
|
+
var _react2 = require("@emotion/react");
|
24
|
+
|
25
|
+
/**
|
26
|
+
* The MultiselectBadge serves as a badge to display selected count.
|
27
|
+
*/
|
28
|
+
var MultiselectBadge = function MultiselectBadge(props) {
|
29
|
+
var selectedFilterCount = props.selectedFilterCount,
|
30
|
+
others = (0, _objectWithoutProperties2["default"])(props, ["selectedFilterCount"]);
|
31
|
+
return (0, _react2.jsx)(_Chip["default"], (0, _extends2["default"])({
|
32
|
+
as: "span",
|
33
|
+
bg: "neutral.90",
|
34
|
+
label: selectedFilterCount.toString(),
|
35
|
+
textColor: "neutral.30",
|
36
|
+
variant: "multiselectListContainer.multiselectListBadge",
|
37
|
+
isUppercase: true
|
38
|
+
}, others));
|
39
|
+
};
|
40
|
+
|
41
|
+
MultiselectBadge.propTypes = {
|
42
|
+
selectedFilterCount: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
43
|
+
margin: _propTypes["default"].string
|
44
|
+
};
|
45
|
+
MultiselectBadge.displayName = 'MultiselectBadge';
|
46
|
+
var _default = MultiselectBadge;
|
47
|
+
exports["default"] = _default;
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
6
|
+
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
8
|
+
|
9
|
+
var _testAxe = _interopRequireDefault(require("../../utils/testUtils/testAxe"));
|
10
|
+
|
11
|
+
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
12
|
+
|
13
|
+
var _MultiselectBadge = _interopRequireDefault(require("./MultiselectBadge"));
|
14
|
+
|
15
|
+
var _react2 = require("@emotion/react");
|
16
|
+
|
17
|
+
var testId = 'test-multiselectBadge';
|
18
|
+
var defaultProps = {
|
19
|
+
'data-testid': testId,
|
20
|
+
selectedFilterCount: 9
|
21
|
+
};
|
22
|
+
|
23
|
+
var getComponent = function getComponent() {
|
24
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
25
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(_MultiselectBadge["default"], (0, _extends2["default"])({}, defaultProps, props)));
|
26
|
+
};
|
27
|
+
|
28
|
+
afterEach(function () {
|
29
|
+
jest.restoreAllMocks();
|
30
|
+
}); // Need to be added to each test file to test accessibility using axe.
|
31
|
+
|
32
|
+
(0, _testAxe["default"])(getComponent);
|
33
|
+
test('default multiselectBadge', function () {
|
34
|
+
getComponent();
|
35
|
+
|
36
|
+
var multiselectBadge = _testWrapper.screen.getByTestId(testId);
|
37
|
+
|
38
|
+
expect(multiselectBadge).toBeInTheDocument();
|
39
|
+
});
|
40
|
+
test('custom classname can be passed', function () {
|
41
|
+
getComponent({
|
42
|
+
className: 'testing-class'
|
43
|
+
});
|
44
|
+
|
45
|
+
var multiselectBadge = _testWrapper.screen.getByTestId(testId);
|
46
|
+
|
47
|
+
expect(multiselectBadge).toHaveClass('testing-class');
|
48
|
+
});
|
@@ -0,0 +1,157 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard");
|
4
|
+
|
5
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
6
|
+
|
7
|
+
var _Object$defineProperty2 = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
8
|
+
|
9
|
+
_Object$defineProperty2(exports, "__esModule", {
|
10
|
+
value: true
|
11
|
+
});
|
12
|
+
|
13
|
+
exports["default"] = void 0;
|
14
|
+
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
|
16
|
+
|
17
|
+
var _defineProperties = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-properties"));
|
18
|
+
|
19
|
+
var _getOwnPropertyDescriptors = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors"));
|
20
|
+
|
21
|
+
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
22
|
+
|
23
|
+
var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor"));
|
24
|
+
|
25
|
+
var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
|
26
|
+
|
27
|
+
var _getOwnPropertySymbols = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols"));
|
28
|
+
|
29
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
|
30
|
+
|
31
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
32
|
+
|
33
|
+
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
34
|
+
|
35
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
36
|
+
|
37
|
+
var _react = _interopRequireWildcard(require("react"));
|
38
|
+
|
39
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
40
|
+
|
41
|
+
var _ChevronRightIcon = _interopRequireDefault(require("mdi-react/ChevronRightIcon"));
|
42
|
+
|
43
|
+
var _ChevronLeftIcon = _interopRequireDefault(require("mdi-react/ChevronLeftIcon"));
|
44
|
+
|
45
|
+
var _overlays = require("@react-stately/overlays");
|
46
|
+
|
47
|
+
var _MultiselectBadge = _interopRequireDefault(require("./MultiselectBadge"));
|
48
|
+
|
49
|
+
var _index = require("../../index");
|
50
|
+
|
51
|
+
var _hooks = require("../../hooks");
|
52
|
+
|
53
|
+
var _react2 = require("@emotion/react");
|
54
|
+
|
55
|
+
function ownKeys(object, enumerableOnly) { var keys = (0, _keys["default"])(object); if (_getOwnPropertySymbols["default"]) { var symbols = (0, _getOwnPropertySymbols["default"])(object); if (enumerableOnly) symbols = (0, _filter["default"])(symbols).call(symbols, function (sym) { return (0, _getOwnPropertyDescriptor["default"])(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
56
|
+
|
57
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { var _context; (0, _forEach["default"])(_context = ownKeys(Object(source), true)).call(_context, function (key) { (0, _defineProperty3["default"])(target, key, source[key]); }); } else if (_getOwnPropertyDescriptors["default"]) { (0, _defineProperties["default"])(target, (0, _getOwnPropertyDescriptors["default"])(source)); } else { var _context2; (0, _forEach["default"])(_context2 = ownKeys(Object(source))).call(_context2, function (key) { (0, _defineProperty2["default"])(target, key, (0, _getOwnPropertyDescriptor["default"])(source, key)); }); } } return target; }
|
58
|
+
|
59
|
+
/**
|
60
|
+
* The MultiselectListContainer serves as a wrapper around a list and its associated trigger,
|
61
|
+
* linking the list's open state with the trigger's press state and providing necessary context.
|
62
|
+
*/
|
63
|
+
var MultiselectListContainer = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
64
|
+
var selectedFilterCount = props.selectedFilterCount,
|
65
|
+
className = props.className,
|
66
|
+
children = props.children,
|
67
|
+
closeAriaLabel = props.closeAriaLabel,
|
68
|
+
isDefaultOpen = props.isDefaultOpen,
|
69
|
+
isOpen = props.isOpen,
|
70
|
+
onOpenChange = props.onOpenChange,
|
71
|
+
openAriaLabel = props.openAriaLabel,
|
72
|
+
others = (0, _objectWithoutProperties2["default"])(props, ["selectedFilterCount", "className", "children", "closeAriaLabel", "isDefaultOpen", "isOpen", "onOpenChange", "openAriaLabel"]);
|
73
|
+
|
74
|
+
var triggerRef = _react["default"].useRef();
|
75
|
+
|
76
|
+
var state = (0, _overlays.useOverlayTriggerState)({
|
77
|
+
defaultOpen: isDefaultOpen,
|
78
|
+
isOpen: isOpen,
|
79
|
+
onOpenChange: onOpenChange
|
80
|
+
});
|
81
|
+
var close = state.close;
|
82
|
+
|
83
|
+
var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
|
84
|
+
isOpen: state.isOpen
|
85
|
+
}),
|
86
|
+
classNames = _useStatusClasses.classNames;
|
87
|
+
|
88
|
+
var handleButtonPress = function handleButtonPress() {
|
89
|
+
if (state.isOpen) {
|
90
|
+
close(state, triggerRef, close);
|
91
|
+
} else {
|
92
|
+
state.open();
|
93
|
+
}
|
94
|
+
};
|
95
|
+
|
96
|
+
var handleClose = function handleClose(e) {
|
97
|
+
if (e.key === 'Escape') {
|
98
|
+
close(state, triggerRef, close);
|
99
|
+
}
|
100
|
+
};
|
101
|
+
|
102
|
+
return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
|
103
|
+
className: classNames,
|
104
|
+
onKeyUp: handleClose,
|
105
|
+
ref: ref,
|
106
|
+
variant: "multiselectListContainer.multiselectListContainer",
|
107
|
+
isRow: true
|
108
|
+
}, others), (0, _react2.jsx)(_index.IconButton, {
|
109
|
+
isRow: true,
|
110
|
+
"aria-label": state.isOpen ? closeAriaLabel : openAriaLabel,
|
111
|
+
"data-testid": "multiselect-list-button",
|
112
|
+
onPress: handleButtonPress,
|
113
|
+
ref: triggerRef,
|
114
|
+
variant: "multiselectToggle",
|
115
|
+
pr: "sm"
|
116
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
117
|
+
color: "active",
|
118
|
+
icon: state.isOpen ? _ChevronRightIcon["default"] : _ChevronLeftIcon["default"],
|
119
|
+
role: "button",
|
120
|
+
size: "30px"
|
121
|
+
}), !state.isOpen && selectedFilterCount && (0, _react2.jsx)(_MultiselectBadge["default"], {
|
122
|
+
"data-testid": "multiselect-list-badge",
|
123
|
+
margin: "auto",
|
124
|
+
selectedFilterCount: selectedFilterCount
|
125
|
+
})), state.isOpen && _objectSpread({}, children));
|
126
|
+
});
|
127
|
+
MultiselectListContainer.propTypes = {
|
128
|
+
/** Amount of selected items indicator. */
|
129
|
+
selectedFilterCount: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
|
130
|
+
|
131
|
+
/** Defines a string value that labels the trigger icon when menu is open. */
|
132
|
+
closeAriaLabel: _propTypes["default"].string,
|
133
|
+
|
134
|
+
/** Sets the default open state of the overlay. */
|
135
|
+
isDefaultOpen: _propTypes["default"].bool,
|
136
|
+
|
137
|
+
/** Whether the overlay is currently open. */
|
138
|
+
isOpen: _propTypes["default"].bool,
|
139
|
+
|
140
|
+
/**
|
141
|
+
* Method that is called when the open state of the menu changes.
|
142
|
+
* Returns the new open state and the action that caused the opening of the menu.
|
143
|
+
*
|
144
|
+
* `(isOpen: boolean, overlayTrigger: OverlayTriggerAction) => void`
|
145
|
+
*/
|
146
|
+
onOpenChange: _propTypes["default"].func,
|
147
|
+
|
148
|
+
/** Defines a string value that labels the trigger icon when menu is closed. */
|
149
|
+
openAriaLabel: _propTypes["default"].string
|
150
|
+
};
|
151
|
+
MultiselectListContainer.defaultProps = {
|
152
|
+
openAriaLabel: 'Open filter menu?',
|
153
|
+
closeAriaLabel: 'Close filter menu?'
|
154
|
+
};
|
155
|
+
MultiselectListContainer.displayName = 'MultiselectListContainer';
|
156
|
+
var _default = MultiselectListContainer;
|
157
|
+
exports["default"] = _default;
|
@@ -0,0 +1,112 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
6
|
+
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
8
|
+
|
9
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
10
|
+
|
11
|
+
var _testAxe = _interopRequireDefault(require("../../utils/testUtils/testAxe"));
|
12
|
+
|
13
|
+
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
14
|
+
|
15
|
+
var _MultiselectListContainer = _interopRequireDefault(require("./MultiselectListContainer"));
|
16
|
+
|
17
|
+
var _react2 = require("@emotion/react");
|
18
|
+
|
19
|
+
var testId = 'test-multiselectListContainer';
|
20
|
+
var multiselectListBadgeId = 'multiselect-list-badge';
|
21
|
+
var multiselectListButtonId = 'multiselect-list-button';
|
22
|
+
var multiselectFilterId = 'multiselect-filter';
|
23
|
+
var defaultProps = {
|
24
|
+
'data-testid': testId
|
25
|
+
};
|
26
|
+
|
27
|
+
var getComponent = function getComponent() {
|
28
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
29
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(_MultiselectListContainer["default"], (0, _extends2["default"])({}, defaultProps, props), (0, _react2.jsx)("div", {
|
30
|
+
"data-testid": multiselectFilterId
|
31
|
+
})));
|
32
|
+
};
|
33
|
+
|
34
|
+
afterEach(function () {
|
35
|
+
jest.restoreAllMocks();
|
36
|
+
}); // Need to be added to each test file to test accessibility using axe.
|
37
|
+
|
38
|
+
(0, _testAxe["default"])(getComponent);
|
39
|
+
test('default MultiselectListContainer', function () {
|
40
|
+
getComponent();
|
41
|
+
|
42
|
+
var multiselectListContainer = _testWrapper.screen.getByTestId(testId);
|
43
|
+
|
44
|
+
expect(multiselectListContainer).toBeInTheDocument();
|
45
|
+
});
|
46
|
+
test('custom classname can be passed', function () {
|
47
|
+
getComponent({
|
48
|
+
className: 'testing-class'
|
49
|
+
});
|
50
|
+
|
51
|
+
var multiselectListContainer = _testWrapper.screen.getByTestId(testId);
|
52
|
+
|
53
|
+
expect(multiselectListContainer).toHaveClass('testing-class');
|
54
|
+
});
|
55
|
+
test('shows badge when container is closed', function () {
|
56
|
+
getComponent({
|
57
|
+
selectedFilterCount: 9,
|
58
|
+
state: {
|
59
|
+
isOpen: false
|
60
|
+
}
|
61
|
+
});
|
62
|
+
|
63
|
+
var badge = _testWrapper.screen.getByTestId(multiselectListBadgeId);
|
64
|
+
|
65
|
+
expect(badge).toBeInTheDocument();
|
66
|
+
});
|
67
|
+
test('updates aria label when button is clicked', function () {
|
68
|
+
var state = {
|
69
|
+
isOpen: true
|
70
|
+
};
|
71
|
+
getComponent({
|
72
|
+
state: state
|
73
|
+
});
|
74
|
+
|
75
|
+
var button = _testWrapper.screen.getByTestId(multiselectListButtonId);
|
76
|
+
|
77
|
+
_userEvent["default"].click(button);
|
78
|
+
|
79
|
+
var multiSelect = _testWrapper.screen.queryByTestId(multiselectFilterId);
|
80
|
+
|
81
|
+
expect(button).toHaveAttribute('aria-label', 'Close filter menu?');
|
82
|
+
expect(multiSelect).toBeInTheDocument();
|
83
|
+
|
84
|
+
_userEvent["default"].click(button);
|
85
|
+
|
86
|
+
expect(button).toHaveAttribute('aria-label', 'Open filter menu?');
|
87
|
+
expect(multiSelect).not.toBeInTheDocument();
|
88
|
+
});
|
89
|
+
test('shows children when isOpen is true', function () {
|
90
|
+
getComponent({
|
91
|
+
isOpen: true
|
92
|
+
});
|
93
|
+
|
94
|
+
var multiselectFilter = _testWrapper.screen.getByTestId(multiselectFilterId);
|
95
|
+
|
96
|
+
expect(multiselectFilter).toBeInTheDocument();
|
97
|
+
});
|
98
|
+
test('should hide children when pressing the escape key', function () {
|
99
|
+
getComponent();
|
100
|
+
|
101
|
+
var button = _testWrapper.screen.getByTestId(multiselectListButtonId);
|
102
|
+
|
103
|
+
_userEvent["default"].click(button);
|
104
|
+
|
105
|
+
var multiSelect = _testWrapper.screen.queryByTestId(multiselectFilterId);
|
106
|
+
|
107
|
+
expect(multiSelect).toBeInTheDocument();
|
108
|
+
|
109
|
+
_userEvent["default"].type(button, '{esc}');
|
110
|
+
|
111
|
+
expect(multiSelect).not.toBeInTheDocument();
|
112
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
_Object$defineProperty(exports, "default", {
|
12
|
+
enumerable: true,
|
13
|
+
get: function get() {
|
14
|
+
return _MultiselectListContainer["default"];
|
15
|
+
}
|
16
|
+
});
|
17
|
+
|
18
|
+
var _MultiselectListContainer = _interopRequireDefault(require("./MultiselectListContainer"));
|