@pingux/astro 1.10.1-alpha.0 → 1.11.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/ArrayField/ArrayField.js +41 -25
- package/lib/cjs/components/ArrayField/ArrayField.stories.js +9 -0
- package/lib/cjs/components/ArrayField/ArrayField.test.js +5 -1
- package/lib/cjs/components/{MultiselectFilter/MultiselectFilter.js → CollapsiblePanel/CollapsiblePanel.js} +13 -13
- package/lib/cjs/components/{MultiselectFilter/MultiselectFilter.stories.js → CollapsiblePanel/CollapsiblePanel.stories.js} +9 -9
- package/lib/cjs/components/{MultiselectFilter/MultiselectFilter.test.js → CollapsiblePanel/CollapsiblePanel.test.js} +8 -8
- package/lib/cjs/components/{MultiselectFilter → CollapsiblePanel}/index.js +2 -2
- package/lib/cjs/components/{MultiselectListContainer/MultiselectBadge.js → CollapsiblePanelContainer/CollapsiblePanelBadge.js} +6 -6
- package/lib/cjs/components/{MultiselectListContainer/MultiselectBadge.test.js → CollapsiblePanelContainer/CollapsiblePanelBadge.test.js} +8 -8
- package/lib/cjs/components/{MultiselectListContainer/MultiselectListContainer.js → CollapsiblePanelContainer/CollapsiblePanelContainer.js} +12 -12
- package/lib/cjs/components/{MultiselectListContainer/MultiselectListContainer.test.js → CollapsiblePanelContainer/CollapsiblePanelContainer.test.js} +23 -23
- package/lib/cjs/components/{MultiselectListContainer → CollapsiblePanelContainer}/index.js +2 -2
- package/lib/cjs/components/{MultiselectFilterItem/MultiselectFilterItem.js → CollapsiblePanelItem/CollapsiblePanelItem.js} +7 -7
- package/lib/cjs/components/{MultiselectFilterItem/MultiselectFilterItem.test.js → CollapsiblePanelItem/CollapsiblePanelItem.test.js} +7 -7
- package/lib/cjs/components/{MultiselectFilterItem → CollapsiblePanelItem}/index.js +2 -2
- package/lib/cjs/components/MultivaluesField/MultivaluesField.js +36 -20
- package/lib/cjs/components/MultivaluesField/MultivaluesField.stories.js +16 -2
- package/lib/cjs/components/MultivaluesField/MultivaluesField.test.js +22 -1
- package/lib/cjs/index.js +36 -36
- package/lib/cjs/recipes/{MultiselectListContainer.stories.js → CollapsiblePanel.stories.js} +3 -3
- package/lib/cjs/styles/variants/boxes.js +23 -0
- package/lib/cjs/styles/variants/buttons.js +2 -2
- package/lib/cjs/styles/variants/{multiselectListContainer.js → collapsiblePanel.js} +10 -10
- package/lib/cjs/styles/variants/text.js +4 -4
- package/lib/cjs/styles/variants/variants.js +2 -2
- package/lib/components/ArrayField/ArrayField.js +37 -25
- package/lib/components/ArrayField/ArrayField.stories.js +9 -0
- package/lib/components/ArrayField/ArrayField.test.js +5 -1
- package/lib/components/{MultiselectFilter/MultiselectFilter.js → CollapsiblePanel/CollapsiblePanel.js} +14 -14
- package/lib/components/{MultiselectFilter/MultiselectFilter.stories.js → CollapsiblePanel/CollapsiblePanel.stories.js} +8 -8
- package/lib/components/{MultiselectFilter/MultiselectFilter.test.js → CollapsiblePanel/CollapsiblePanel.test.js} +8 -8
- package/lib/components/CollapsiblePanel/index.js +1 -0
- package/lib/components/{MultiselectListContainer/MultiselectBadge.js → CollapsiblePanelContainer/CollapsiblePanelBadge.js} +6 -6
- package/lib/components/{MultiselectListContainer/MultiselectBadge.test.js → CollapsiblePanelContainer/CollapsiblePanelBadge.test.js} +8 -8
- package/lib/components/{MultiselectListContainer/MultiselectListContainer.js → CollapsiblePanelContainer/CollapsiblePanelContainer.js} +12 -12
- package/lib/components/{MultiselectListContainer/MultiselectListContainer.test.js → CollapsiblePanelContainer/CollapsiblePanelContainer.test.js} +23 -23
- package/lib/components/CollapsiblePanelContainer/index.js +1 -0
- package/lib/components/{MultiselectFilterItem/MultiselectFilterItem.js → CollapsiblePanelItem/CollapsiblePanelItem.js} +7 -7
- package/lib/components/{MultiselectFilterItem/MultiselectFilterItem.test.js → CollapsiblePanelItem/CollapsiblePanelItem.test.js} +7 -7
- package/lib/components/CollapsiblePanelItem/index.js +1 -0
- package/lib/components/MultivaluesField/MultivaluesField.js +37 -20
- package/lib/components/MultivaluesField/MultivaluesField.stories.js +11 -0
- package/lib/components/MultivaluesField/MultivaluesField.test.js +16 -1
- package/lib/index.js +6 -6
- package/lib/recipes/{MultiselectListContainer.stories.js → CollapsiblePanel.stories.js} +4 -4
- package/lib/styles/variants/boxes.js +23 -0
- package/lib/styles/variants/buttons.js +2 -2
- package/lib/styles/variants/{multiselectListContainer.js → collapsiblePanel.js} +10 -10
- package/lib/styles/variants/text.js +4 -4
- package/lib/styles/variants/variants.js +2 -2
- package/package.json +1 -1
- package/lib/components/MultiselectFilter/index.js +0 -1
- package/lib/components/MultiselectFilterItem/index.js +0 -1
- package/lib/components/MultiselectListContainer/index.js +0 -1
@@ -6,13 +6,14 @@ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-sta
|
|
6
6
|
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
7
7
|
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
8
8
|
import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
|
9
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
9
10
|
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
10
11
|
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
11
12
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
12
13
|
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
13
14
|
import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
14
15
|
import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
|
15
|
-
var _excluded = ["addButtonLabel", "defaultValue", "value", "label", "helperText", "status", "onAdd", "onChange", "onDelete", "renderField", "maxSize", "maxSizeText"],
|
16
|
+
var _excluded = ["addButtonLabel", "defaultValue", "value", "label", "helperText", "status", "onAdd", "onChange", "onDelete", "renderField", "labelProps", "maxSize", "maxSizeText"],
|
16
17
|
_excluded2 = ["id", "onComponentRender", "fieldValue"];
|
17
18
|
|
18
19
|
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; }
|
@@ -21,31 +22,35 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
21
22
|
|
22
23
|
import React, { useCallback, useState } from 'react';
|
23
24
|
import PropTypes from 'prop-types';
|
25
|
+
import { mergeProps } from '@react-aria/utils';
|
24
26
|
import { v4 as uuid } from 'uuid';
|
27
|
+
import { useLabel } from '@react-aria/label';
|
25
28
|
import Box from '../Box';
|
26
29
|
import Button from '../Button';
|
27
30
|
import FieldHelperText from '../FieldHelperText';
|
28
31
|
import Text from '../Text';
|
32
|
+
import Label from '../Label';
|
29
33
|
import statuses from '../../utils/devUtils/constants/statuses';
|
30
34
|
import isValidPositiveInt from '../../utils/devUtils/props/isValidPositiveInt';
|
31
35
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
32
36
|
|
33
|
-
var ArrayField = function ArrayField(
|
37
|
+
var ArrayField = function ArrayField(props) {
|
34
38
|
var _context2;
|
35
39
|
|
36
|
-
var addButtonLabel =
|
37
|
-
defaultValue =
|
38
|
-
value =
|
39
|
-
label =
|
40
|
-
helperText =
|
41
|
-
status =
|
42
|
-
onAdd =
|
43
|
-
onChange =
|
44
|
-
onDelete =
|
45
|
-
renderField =
|
46
|
-
|
47
|
-
|
48
|
-
|
40
|
+
var addButtonLabel = props.addButtonLabel,
|
41
|
+
defaultValue = props.defaultValue,
|
42
|
+
value = props.value,
|
43
|
+
label = props.label,
|
44
|
+
helperText = props.helperText,
|
45
|
+
status = props.status,
|
46
|
+
onAdd = props.onAdd,
|
47
|
+
onChange = props.onChange,
|
48
|
+
onDelete = props.onDelete,
|
49
|
+
renderField = props.renderField,
|
50
|
+
labelProps = props.labelProps,
|
51
|
+
maxSize = props.maxSize,
|
52
|
+
maxSizeText = props.maxSizeText,
|
53
|
+
others = _objectWithoutProperties(props, _excluded);
|
49
54
|
|
50
55
|
var isControlled = value !== undefined;
|
51
56
|
var createEmptyField = useCallback(function () {
|
@@ -91,8 +96,8 @@ var ArrayField = function ArrayField(_ref) {
|
|
91
96
|
onDelete(fieldId);
|
92
97
|
} else {
|
93
98
|
setFieldValues(function (oldValues) {
|
94
|
-
return _filterInstanceProperty(oldValues).call(oldValues, function (
|
95
|
-
var id =
|
99
|
+
return _filterInstanceProperty(oldValues).call(oldValues, function (_ref) {
|
100
|
+
var id = _ref.id;
|
96
101
|
return id !== fieldId;
|
97
102
|
});
|
98
103
|
});
|
@@ -109,17 +114,21 @@ var ArrayField = function ArrayField(_ref) {
|
|
109
114
|
return _concatInstanceProperty(_context = []).call(_context, oldValues, [createEmptyField()]);
|
110
115
|
});
|
111
116
|
}, [createEmptyField, onAdd]);
|
117
|
+
|
118
|
+
var _useLabel = useLabel(_objectSpread({}, props)),
|
119
|
+
raLabelProps = _useLabel.labelProps;
|
120
|
+
|
112
121
|
var isLimitReached = !!maxSize && (value || fieldValues).length >= maxSize;
|
113
|
-
return ___EmotionJSX(Box, others, ___EmotionJSX(
|
114
|
-
|
115
|
-
}
|
122
|
+
return ___EmotionJSX(Box, others, ___EmotionJSX(Label, _extends({}, raLabelProps, mergeProps(labelProps, raLabelProps, {
|
123
|
+
children: label
|
124
|
+
}))), ___EmotionJSX(Box, {
|
116
125
|
as: "ul",
|
117
126
|
pl: "0"
|
118
|
-
}, _mapInstanceProperty(_context2 = value || fieldValues).call(_context2, function (
|
119
|
-
var id =
|
120
|
-
onComponentRender =
|
121
|
-
fieldValue =
|
122
|
-
otherFieldProps = _objectWithoutProperties(
|
127
|
+
}, _mapInstanceProperty(_context2 = value || fieldValues).call(_context2, function (_ref2) {
|
128
|
+
var id = _ref2.id,
|
129
|
+
onComponentRender = _ref2.onComponentRender,
|
130
|
+
fieldValue = _ref2.fieldValue,
|
131
|
+
otherFieldProps = _objectWithoutProperties(_ref2, _excluded2);
|
123
132
|
|
124
133
|
var isDisabled = (value || fieldValues).length === 1;
|
125
134
|
return ___EmotionJSX(Box, {
|
@@ -163,6 +172,9 @@ ArrayField.propTypes = {
|
|
163
172
|
/** The rendered label for the field. */
|
164
173
|
label: PropTypes.node,
|
165
174
|
|
175
|
+
/** Props object that is spread directly into the label element. */
|
176
|
+
labelProps: PropTypes.shape({}),
|
177
|
+
|
166
178
|
/** Text to display before add button. Useful for errors or other info. */
|
167
179
|
helperText: PropTypes.node,
|
168
180
|
|
@@ -62,6 +62,15 @@ export var Uncontrolled = function Uncontrolled(_ref) {
|
|
62
62
|
|
63
63
|
return ___EmotionJSX(ArrayField, _extends({
|
64
64
|
defaultValue: defaultData,
|
65
|
+
labelProps: {
|
66
|
+
hintText: 'Example Hint',
|
67
|
+
isRequired: true,
|
68
|
+
helpHintProps: {
|
69
|
+
tooltipProps: {
|
70
|
+
direction: 'top'
|
71
|
+
}
|
72
|
+
}
|
73
|
+
},
|
65
74
|
renderField: function renderField(id, fieldValue, onFieldValueChange, onFieldDelete, isDisabled, otherFieldProps) {
|
66
75
|
return ___EmotionJSX(TextField, _extends({
|
67
76
|
"aria-label": "Text field",
|
@@ -25,7 +25,9 @@ var defaultProps = {
|
|
25
25
|
|
26
26
|
var getComponent = function getComponent() {
|
27
27
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
28
|
-
return render(___EmotionJSX(ArrayField, _extends({
|
28
|
+
return render(___EmotionJSX(ArrayField, _extends({
|
29
|
+
label: "test-label"
|
30
|
+
}, defaultProps, props)));
|
29
31
|
};
|
30
32
|
|
31
33
|
var renderField = function renderField(id, value, onFieldValueChange, onFieldDelete, otherFieldProps) {
|
@@ -171,6 +173,7 @@ test('onComponentRender displays fields correctly', function () {
|
|
171
173
|
}
|
172
174
|
}];
|
173
175
|
render(___EmotionJSX(ArrayField, {
|
176
|
+
label: "test-label",
|
174
177
|
defaultValue: componentRenderData,
|
175
178
|
onChange: onChange
|
176
179
|
}));
|
@@ -179,6 +182,7 @@ test('onComponentRender displays fields correctly', function () {
|
|
179
182
|
});
|
180
183
|
test('creates empty field when no data passed', function () {
|
181
184
|
render(___EmotionJSX(ArrayField, {
|
185
|
+
label: "test-label",
|
182
186
|
renderField: renderField
|
183
187
|
}));
|
184
188
|
expect(screen.getByLabelText('Text field')).toBeInTheDocument();
|
@@ -7,15 +7,15 @@ import { useFocusRing } from '@react-aria/focus';
|
|
7
7
|
import { mergeProps } from '@react-aria/utils';
|
8
8
|
import { isIterableProp } from '../../utils/devUtils/props/isIterable';
|
9
9
|
import { useStatusClasses } from '../../hooks';
|
10
|
-
import
|
11
|
-
import { Box, ListView,
|
10
|
+
import CollapsiblePanelBadge from '../CollapsiblePanelContainer/CollapsiblePanelBadge';
|
11
|
+
import { Box, ListView, CollapsiblePanelContainer, Text } from '../../index';
|
12
12
|
/**
|
13
|
-
* The
|
13
|
+
* The CollapsiblePanel serves as a filter menu with a menu title
|
14
14
|
* and selected count displayed in a badge.
|
15
15
|
*/
|
16
16
|
|
17
17
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
18
|
-
var
|
18
|
+
var CollapsiblePanel = /*#__PURE__*/forwardRef(function (props, ref) {
|
19
19
|
var selectedFilterCount = props.selectedFilterCount,
|
20
20
|
className = props.className,
|
21
21
|
closeAriaLabel = props.closeAriaLabel,
|
@@ -45,7 +45,7 @@ var MultiselectFilter = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
45
45
|
}),
|
46
46
|
classNames = _useStatusClasses.classNames;
|
47
47
|
|
48
|
-
return ___EmotionJSX(
|
48
|
+
return ___EmotionJSX(CollapsiblePanelContainer, {
|
49
49
|
closeAriaLabel: closeAriaLabel,
|
50
50
|
isDefaultOpen: isDefaultOpen,
|
51
51
|
isOpen: isOpen,
|
@@ -54,16 +54,16 @@ var MultiselectFilter = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
54
54
|
selectedFilterCount: selectedFilterCount
|
55
55
|
}, ___EmotionJSX(Box, _extends({
|
56
56
|
className: classNames,
|
57
|
-
"data-testid": "
|
57
|
+
"data-testid": "collapsible-panel",
|
58
58
|
ref: ref,
|
59
59
|
tabIndex: 0,
|
60
|
-
variant: "
|
60
|
+
variant: "collapsiblePanel.collapsiblePanelContent"
|
61
61
|
}, mergedProps, others), ___EmotionJSX(Box, {
|
62
62
|
isRow: true,
|
63
|
-
variant: "
|
63
|
+
variant: "collapsiblePanel.collapsiblePanelContainerTitle"
|
64
64
|
}, ___EmotionJSX(Text, {
|
65
|
-
variant: "
|
66
|
-
}, listTitle), selectedFilterCount && ___EmotionJSX(
|
65
|
+
variant: "collapsiblePanelTitle"
|
66
|
+
}, listTitle), selectedFilterCount && ___EmotionJSX(CollapsiblePanelBadge, {
|
67
67
|
margin: "0",
|
68
68
|
selectedFilterCount: selectedFilterCount
|
69
69
|
})), ___EmotionJSX(Box, {
|
@@ -79,7 +79,7 @@ var MultiselectFilter = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
79
79
|
pl: "md"
|
80
80
|
}, children))));
|
81
81
|
});
|
82
|
-
|
82
|
+
CollapsiblePanel.propTypes = {
|
83
83
|
/** Amount of selected items indicator. */
|
84
84
|
selectedFilterCount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
85
85
|
|
@@ -112,8 +112,8 @@ MultiselectFilter.propTypes = {
|
|
112
112
|
/** Defines a string value that labels the trigger icon when menu is closed. */
|
113
113
|
openAriaLabel: PropTypes.string
|
114
114
|
};
|
115
|
-
|
115
|
+
CollapsiblePanel.defaultProps = {
|
116
116
|
isDefaultOpen: true
|
117
117
|
};
|
118
|
-
|
119
|
-
export default
|
118
|
+
CollapsiblePanel.displayName = 'CollapsiblePanel';
|
119
|
+
export default CollapsiblePanel;
|
@@ -6,13 +6,13 @@ import ChevronRightIcon from 'mdi-react/ChevronRightIcon';
|
|
6
6
|
import FilterIcon from 'mdi-react/FilterIcon';
|
7
7
|
import SearchIcon from 'mdi-react/SearchIcon';
|
8
8
|
import AccountIcon from 'mdi-react/AccountIcon';
|
9
|
-
import
|
9
|
+
import CollapsiblePanel from './CollapsiblePanel';
|
10
10
|
import { useOverlayPanelState } from '../../hooks';
|
11
|
-
import { Breadcrumbs, Box, Button, Chip, ListView, Item, Icon, IconButton,
|
11
|
+
import { Breadcrumbs, Box, Button, Chip, ListView, Item, Icon, IconButton, CollapsiblePanelItem, OverlayPanel, OverlayProvider, SearchField, Text } from '../../index';
|
12
12
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
13
13
|
export default {
|
14
|
-
title: '
|
15
|
-
component:
|
14
|
+
title: 'CollapsiblePanel',
|
15
|
+
component: CollapsiblePanel,
|
16
16
|
argTypes: {
|
17
17
|
listTitle: {
|
18
18
|
defaultValue: 'Selected Groups'
|
@@ -117,9 +117,9 @@ var changeSelection = function changeSelection(selected) {
|
|
117
117
|
};
|
118
118
|
|
119
119
|
export var Default = function Default(args) {
|
120
|
-
return ___EmotionJSX(
|
120
|
+
return ___EmotionJSX(CollapsiblePanel, args);
|
121
121
|
};
|
122
|
-
export var
|
122
|
+
export var CollapsiblePanelWithBadge = function CollapsiblePanelWithBadge(args) {
|
123
123
|
var _useOverlayPanelState = useOverlayPanelState(),
|
124
124
|
state = _useOverlayPanelState.state,
|
125
125
|
onClose = _useOverlayPanelState.onClose;
|
@@ -234,7 +234,7 @@ export var MultiselectWithBadge = function MultiselectWithBadge(args) {
|
|
234
234
|
})), ___EmotionJSX(Text, {
|
235
235
|
variant: "listSubtitle"
|
236
236
|
}, item.subtitle))));
|
237
|
-
})), ___EmotionJSX(
|
237
|
+
})), ___EmotionJSX(CollapsiblePanel, _extends({
|
238
238
|
items: mockData,
|
239
239
|
onSelectionChange: changeSelection,
|
240
240
|
selectedFilterCount: "1000+"
|
@@ -243,7 +243,7 @@ export var MultiselectWithBadge = function MultiselectWithBadge(args) {
|
|
243
243
|
key: item.key,
|
244
244
|
textValue: item.name,
|
245
245
|
"data-id": item.key
|
246
|
-
}, ___EmotionJSX(
|
246
|
+
}, ___EmotionJSX(CollapsiblePanelItem, {
|
247
247
|
text: item.name,
|
248
248
|
icon: FilterIcon
|
249
249
|
}));
|
@@ -2,9 +2,9 @@ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
|
2
2
|
import React from 'react';
|
3
3
|
import axeTest from '../../utils/testUtils/testAxe';
|
4
4
|
import { render, screen } from '../../utils/testUtils/testWrapper';
|
5
|
-
import
|
5
|
+
import CollapsiblePanel from './CollapsiblePanel';
|
6
6
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
7
|
-
var testId = '
|
7
|
+
var testId = 'collapsible-panel-item';
|
8
8
|
var onSelectionChange = jest.fn();
|
9
9
|
var defaultProps = {
|
10
10
|
'data-testid': testId,
|
@@ -19,7 +19,7 @@ var defaultProps = {
|
|
19
19
|
|
20
20
|
var getComponent = function getComponent() {
|
21
21
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
22
|
-
return render(___EmotionJSX(
|
22
|
+
return render(___EmotionJSX(CollapsiblePanel, _extends({}, defaultProps, props)));
|
23
23
|
};
|
24
24
|
|
25
25
|
beforeAll(function () {
|
@@ -55,15 +55,15 @@ axeTest(getComponent, {
|
|
55
55
|
}
|
56
56
|
}
|
57
57
|
});
|
58
|
-
test('default
|
58
|
+
test('default CollapsiblePanel', function () {
|
59
59
|
getComponent();
|
60
|
-
var
|
61
|
-
expect(
|
60
|
+
var collapsiblePanel = screen.getByTestId(testId);
|
61
|
+
expect(collapsiblePanel).toBeInTheDocument();
|
62
62
|
});
|
63
63
|
test('custom classname can be passed', function () {
|
64
64
|
getComponent({
|
65
65
|
className: 'testing-class'
|
66
66
|
});
|
67
|
-
var
|
68
|
-
expect(
|
67
|
+
var collapsiblePanel = screen.getByTestId(testId);
|
68
|
+
expect(collapsiblePanel).toHaveClass('testing-class');
|
69
69
|
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './CollapsiblePanel';
|
@@ -5,12 +5,12 @@ import React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
6
6
|
import Chip from '../Chip';
|
7
7
|
/**
|
8
|
-
* The
|
8
|
+
* The CollapsiblePanelBadge serves as a badge to display selected count.
|
9
9
|
*/
|
10
10
|
|
11
11
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
12
12
|
|
13
|
-
var
|
13
|
+
var CollapsiblePanelBadge = function CollapsiblePanelBadge(props) {
|
14
14
|
var selectedFilterCount = props.selectedFilterCount,
|
15
15
|
others = _objectWithoutProperties(props, _excluded);
|
16
16
|
|
@@ -19,14 +19,14 @@ var MultiselectBadge = function MultiselectBadge(props) {
|
|
19
19
|
bg: "neutral.90",
|
20
20
|
label: selectedFilterCount.toString(),
|
21
21
|
textColor: "neutral.30",
|
22
|
-
variant: "
|
22
|
+
variant: "collapsiblePanel.collapsiblePanelBadge",
|
23
23
|
isUppercase: true
|
24
24
|
}, others));
|
25
25
|
};
|
26
26
|
|
27
|
-
|
27
|
+
CollapsiblePanelBadge.propTypes = {
|
28
28
|
selectedFilterCount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
29
29
|
margin: PropTypes.string
|
30
30
|
};
|
31
|
-
|
32
|
-
export default
|
31
|
+
CollapsiblePanelBadge.displayName = 'CollapsiblePanelBadge';
|
32
|
+
export default CollapsiblePanelBadge;
|
@@ -2,9 +2,9 @@ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
|
2
2
|
import React from 'react';
|
3
3
|
import axeTest from '../../utils/testUtils/testAxe';
|
4
4
|
import { render, screen } from '../../utils/testUtils/testWrapper';
|
5
|
-
import
|
5
|
+
import CollapsiblePanelBadge from './CollapsiblePanelBadge';
|
6
6
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
7
|
-
var testId = 'test-
|
7
|
+
var testId = 'test-collapsiblePanelBadge';
|
8
8
|
var defaultProps = {
|
9
9
|
'data-testid': testId,
|
10
10
|
selectedFilterCount: 9
|
@@ -12,7 +12,7 @@ var defaultProps = {
|
|
12
12
|
|
13
13
|
var getComponent = function getComponent() {
|
14
14
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
15
|
-
return render(___EmotionJSX(
|
15
|
+
return render(___EmotionJSX(CollapsiblePanelBadge, _extends({}, defaultProps, props)));
|
16
16
|
};
|
17
17
|
|
18
18
|
afterEach(function () {
|
@@ -20,15 +20,15 @@ afterEach(function () {
|
|
20
20
|
}); // Need to be added to each test file to test accessibility using axe.
|
21
21
|
|
22
22
|
axeTest(getComponent);
|
23
|
-
test('default
|
23
|
+
test('default CollapsiblePanelBadge', function () {
|
24
24
|
getComponent();
|
25
|
-
var
|
26
|
-
expect(
|
25
|
+
var collapsiblePanelBadge = screen.getByTestId(testId);
|
26
|
+
expect(collapsiblePanelBadge).toBeInTheDocument();
|
27
27
|
});
|
28
28
|
test('custom classname can be passed', function () {
|
29
29
|
getComponent({
|
30
30
|
className: 'testing-class'
|
31
31
|
});
|
32
|
-
var
|
33
|
-
expect(
|
32
|
+
var collapsiblePanelBadge = screen.getByTestId(testId);
|
33
|
+
expect(collapsiblePanelBadge).toHaveClass('testing-class');
|
34
34
|
});
|
@@ -20,16 +20,16 @@ import PropTypes from 'prop-types';
|
|
20
20
|
import ChevronRightIcon from 'mdi-react/ChevronRightIcon';
|
21
21
|
import ChevronLeftIcon from 'mdi-react/ChevronLeftIcon';
|
22
22
|
import { useOverlayTriggerState } from '@react-stately/overlays';
|
23
|
-
import
|
23
|
+
import CollapsiblePanelBadge from './CollapsiblePanelBadge';
|
24
24
|
import { Icon, IconButton, Box } from '../../index';
|
25
25
|
import { useStatusClasses } from '../../hooks';
|
26
26
|
/**
|
27
|
-
* The
|
27
|
+
* The CollapsiblePanelContainer serves as a wrapper around a list and its associated trigger,
|
28
28
|
* linking the list's open state with the trigger's press state and providing necessary context.
|
29
29
|
*/
|
30
30
|
|
31
31
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
32
|
-
var
|
32
|
+
var CollapsiblePanelContainer = /*#__PURE__*/forwardRef(function (props, ref) {
|
33
33
|
var selectedFilterCount = props.selectedFilterCount,
|
34
34
|
className = props.className,
|
35
35
|
children = props.children,
|
@@ -71,28 +71,28 @@ var MultiselectListContainer = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
71
71
|
className: classNames,
|
72
72
|
onKeyUp: handleClose,
|
73
73
|
ref: ref,
|
74
|
-
variant: "
|
74
|
+
variant: "collapsiblePanel.collapsiblePanelContainer",
|
75
75
|
isRow: true
|
76
76
|
}, others), ___EmotionJSX(IconButton, {
|
77
77
|
isRow: true,
|
78
78
|
"aria-label": state.isOpen ? closeAriaLabel : openAriaLabel,
|
79
|
-
"data-testid": "
|
79
|
+
"data-testid": "collapsible-panel-button",
|
80
80
|
onPress: handleButtonPress,
|
81
81
|
ref: triggerRef,
|
82
|
-
variant: "
|
82
|
+
variant: "collapsiblePanelToggle",
|
83
83
|
pr: "sm"
|
84
84
|
}, ___EmotionJSX(Icon, {
|
85
85
|
color: "active",
|
86
86
|
icon: state.isOpen ? ChevronRightIcon : ChevronLeftIcon,
|
87
87
|
role: "button",
|
88
88
|
size: "30px"
|
89
|
-
}), !state.isOpen && selectedFilterCount && ___EmotionJSX(
|
90
|
-
"data-testid": "
|
89
|
+
}), !state.isOpen && selectedFilterCount && ___EmotionJSX(CollapsiblePanelBadge, {
|
90
|
+
"data-testid": "collapsible-panel-badge",
|
91
91
|
margin: "auto",
|
92
92
|
selectedFilterCount: selectedFilterCount
|
93
93
|
})), state.isOpen && _objectSpread({}, children));
|
94
94
|
});
|
95
|
-
|
95
|
+
CollapsiblePanelContainer.propTypes = {
|
96
96
|
/** Amount of selected items indicator. */
|
97
97
|
selectedFilterCount: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
98
98
|
|
@@ -116,9 +116,9 @@ MultiselectListContainer.propTypes = {
|
|
116
116
|
/** Defines a string value that labels the trigger icon when menu is closed. */
|
117
117
|
openAriaLabel: PropTypes.string
|
118
118
|
};
|
119
|
-
|
119
|
+
CollapsiblePanelContainer.defaultProps = {
|
120
120
|
openAriaLabel: 'Open filter menu?',
|
121
121
|
closeAriaLabel: 'Close filter menu?'
|
122
122
|
};
|
123
|
-
|
124
|
-
export default
|
123
|
+
CollapsiblePanelContainer.displayName = 'CollapsiblePanelContainer';
|
124
|
+
export default CollapsiblePanelContainer;
|
@@ -3,20 +3,20 @@ import React from 'react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
4
4
|
import axeTest from '../../utils/testUtils/testAxe';
|
5
5
|
import { render, screen } from '../../utils/testUtils/testWrapper';
|
6
|
-
import
|
6
|
+
import CollapsiblePanelContainer from './CollapsiblePanelContainer';
|
7
7
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
8
|
-
var testId = 'test-
|
9
|
-
var
|
10
|
-
var
|
11
|
-
var
|
8
|
+
var testId = 'test-collapsiblePanelContainer';
|
9
|
+
var collapsiblePanelBadgeId = 'collapsible-panel-badge';
|
10
|
+
var collapsiblePanelButtonId = 'collapsible-panel-button';
|
11
|
+
var collapsiblePanelId = 'collapsible-panel';
|
12
12
|
var defaultProps = {
|
13
13
|
'data-testid': testId
|
14
14
|
};
|
15
15
|
|
16
16
|
var getComponent = function getComponent() {
|
17
17
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
18
|
-
return render(___EmotionJSX(
|
19
|
-
"data-testid":
|
18
|
+
return render(___EmotionJSX(CollapsiblePanelContainer, _extends({}, defaultProps, props), ___EmotionJSX("div", {
|
19
|
+
"data-testid": collapsiblePanelId
|
20
20
|
})));
|
21
21
|
};
|
22
22
|
|
@@ -25,17 +25,17 @@ afterEach(function () {
|
|
25
25
|
}); // Need to be added to each test file to test accessibility using axe.
|
26
26
|
|
27
27
|
axeTest(getComponent);
|
28
|
-
test('default
|
28
|
+
test('default CollapsiblePanelContainer', function () {
|
29
29
|
getComponent();
|
30
|
-
var
|
31
|
-
expect(
|
30
|
+
var collapsiblePanelContainer = screen.getByTestId(testId);
|
31
|
+
expect(collapsiblePanelContainer).toBeInTheDocument();
|
32
32
|
});
|
33
33
|
test('custom classname can be passed', function () {
|
34
34
|
getComponent({
|
35
35
|
className: 'testing-class'
|
36
36
|
});
|
37
|
-
var
|
38
|
-
expect(
|
37
|
+
var collapsiblePanelContainer = screen.getByTestId(testId);
|
38
|
+
expect(collapsiblePanelContainer).toHaveClass('testing-class');
|
39
39
|
});
|
40
40
|
test('shows badge when container is closed', function () {
|
41
41
|
getComponent({
|
@@ -44,7 +44,7 @@ test('shows badge when container is closed', function () {
|
|
44
44
|
isOpen: false
|
45
45
|
}
|
46
46
|
});
|
47
|
-
var badge = screen.getByTestId(
|
47
|
+
var badge = screen.getByTestId(collapsiblePanelBadgeId);
|
48
48
|
expect(badge).toBeInTheDocument();
|
49
49
|
});
|
50
50
|
test('updates aria label when button is clicked', function () {
|
@@ -54,28 +54,28 @@ test('updates aria label when button is clicked', function () {
|
|
54
54
|
getComponent({
|
55
55
|
state: state
|
56
56
|
});
|
57
|
-
var button = screen.getByTestId(
|
57
|
+
var button = screen.getByTestId(collapsiblePanelButtonId);
|
58
58
|
userEvent.click(button);
|
59
|
-
var
|
59
|
+
var collapsiblePanel = screen.queryByTestId(collapsiblePanelId);
|
60
60
|
expect(button).toHaveAttribute('aria-label', 'Close filter menu?');
|
61
|
-
expect(
|
61
|
+
expect(collapsiblePanel).toBeInTheDocument();
|
62
62
|
userEvent.click(button);
|
63
63
|
expect(button).toHaveAttribute('aria-label', 'Open filter menu?');
|
64
|
-
expect(
|
64
|
+
expect(collapsiblePanel).not.toBeInTheDocument();
|
65
65
|
});
|
66
66
|
test('shows children when isOpen is true', function () {
|
67
67
|
getComponent({
|
68
68
|
isOpen: true
|
69
69
|
});
|
70
|
-
var
|
71
|
-
expect(
|
70
|
+
var collapsiblePanel = screen.getByTestId(collapsiblePanelId);
|
71
|
+
expect(collapsiblePanel).toBeInTheDocument();
|
72
72
|
});
|
73
73
|
test('should hide children when pressing the escape key', function () {
|
74
74
|
getComponent();
|
75
|
-
var button = screen.getByTestId(
|
75
|
+
var button = screen.getByTestId(collapsiblePanelButtonId);
|
76
76
|
userEvent.click(button);
|
77
|
-
var
|
78
|
-
expect(
|
77
|
+
var collapsiblePanel = screen.queryByTestId(collapsiblePanelId);
|
78
|
+
expect(collapsiblePanel).toBeInTheDocument();
|
79
79
|
userEvent.type(button, '{esc}');
|
80
|
-
expect(
|
80
|
+
expect(collapsiblePanel).not.toBeInTheDocument();
|
81
81
|
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './CollapsiblePanelContainer';
|
@@ -2,25 +2,25 @@ import React, { forwardRef } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
3
3
|
import { Box, Icon, IconButton, Text } from '../../index';
|
4
4
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
5
|
-
var
|
5
|
+
var CollapsiblePanelItem = /*#__PURE__*/forwardRef(function (props, ref) {
|
6
6
|
var text = props.text,
|
7
7
|
icon = props.icon,
|
8
8
|
isDefaultSelected = props.isDefaultSelected,
|
9
9
|
onPress = props.onPress;
|
10
10
|
|
11
11
|
var iconElement = icon && ___EmotionJSX(Icon, {
|
12
|
-
"data-testid": "
|
12
|
+
"data-testid": "collapsible-panel-data-icon",
|
13
13
|
icon: icon,
|
14
14
|
color: isDefaultSelected ? 'neutral.10' : 'active',
|
15
15
|
size: 13
|
16
16
|
});
|
17
17
|
|
18
18
|
return ___EmotionJSX(Box, {
|
19
|
-
"data-testid": "
|
19
|
+
"data-testid": "collapsible-panel-item",
|
20
20
|
isRow: true,
|
21
21
|
ref: ref
|
22
22
|
}, ___EmotionJSX(Text, {
|
23
|
-
variant: "
|
23
|
+
variant: "collapsiblePanellItem"
|
24
24
|
}, text), iconElement && (isDefaultSelected ? iconElement : ___EmotionJSX(IconButton, {
|
25
25
|
sx: {
|
26
26
|
width: 13,
|
@@ -33,7 +33,7 @@ var MultiselectFilterItem = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
33
33
|
onPress: onPress
|
34
34
|
}, iconElement)));
|
35
35
|
});
|
36
|
-
|
36
|
+
CollapsiblePanelItem.propTypes = {
|
37
37
|
/**
|
38
38
|
* Display text.
|
39
39
|
*/
|
@@ -55,5 +55,5 @@ MultiselectFilterItem.propTypes = {
|
|
55
55
|
*/
|
56
56
|
onPress: PropTypes.func
|
57
57
|
};
|
58
|
-
|
59
|
-
export default
|
58
|
+
CollapsiblePanelItem.displayName = 'CollapsiblePanelItem';
|
59
|
+
export default CollapsiblePanelItem;
|