@pingux/astro 1.10.1-alpha.1 → 1.11.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/CHANGELOG.md +18 -0
- 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/{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
@@ -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;
|
@@ -3,17 +3,17 @@ import React from 'react';
|
|
3
3
|
import FilterIcon from 'mdi-react/FilterIcon';
|
4
4
|
import axeTest from '../../utils/testUtils/testAxe';
|
5
5
|
import { render, screen } from '../../utils/testUtils/testWrapper';
|
6
|
-
import
|
6
|
+
import CollapsiblePanelItem from './CollapsiblePanelItem';
|
7
7
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
8
|
-
var testId = '
|
9
|
-
var iconId = '
|
8
|
+
var testId = 'collapsible-panel-item';
|
9
|
+
var iconId = 'collapsible-panel-data-icon';
|
10
10
|
var defaultProps = {
|
11
11
|
text: 'Item name'
|
12
12
|
};
|
13
13
|
|
14
14
|
var getComponent = function getComponent() {
|
15
15
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
16
|
-
return render(___EmotionJSX(
|
16
|
+
return render(___EmotionJSX(CollapsiblePanelItem, _extends({}, defaultProps, props)));
|
17
17
|
};
|
18
18
|
|
19
19
|
afterEach(function () {
|
@@ -21,12 +21,12 @@ afterEach(function () {
|
|
21
21
|
}); // Need to be added to each test file to test accessibility using axe.
|
22
22
|
|
23
23
|
axeTest(getComponent);
|
24
|
-
test('default
|
24
|
+
test('default collapsiblePanel', function () {
|
25
25
|
getComponent();
|
26
|
-
var
|
26
|
+
var collapsiblePanelItem = screen.getByTestId(testId);
|
27
27
|
var icon = screen.queryByTestId(iconId);
|
28
28
|
expect(icon).not.toBeInTheDocument();
|
29
|
-
expect(
|
29
|
+
expect(collapsiblePanelItem).toBeInTheDocument();
|
30
30
|
});
|
31
31
|
test('icon button displays when icon prop is present', function () {
|
32
32
|
getComponent({
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './CollapsiblePanelItem';
|
@@ -67,6 +67,8 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
67
67
|
onOpenChange = props.onOpenChange,
|
68
68
|
onSelectionChange = props.onSelectionChange,
|
69
69
|
placeholder = props.placeholder,
|
70
|
+
_props$readOnlyKeys = props.readOnlyKeys,
|
71
|
+
readOnlyKeys = _props$readOnlyKeys === void 0 ? [] : _props$readOnlyKeys,
|
70
72
|
selectedKeys = props.selectedKeys,
|
71
73
|
scrollBoxProps = props.scrollBoxProps;
|
72
74
|
var hasCustomValue = mode === 'non-restrictive';
|
@@ -115,7 +117,10 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
115
117
|
return contains(item.textValue, filterString);
|
116
118
|
});
|
117
119
|
},
|
118
|
-
items: items,
|
120
|
+
items: _filterInstanceProperty(items).call(items, function (_ref) {
|
121
|
+
var key = _ref.key;
|
122
|
+
return !_includesInstanceProperty(readOnlyKeys).call(readOnlyKeys, key);
|
123
|
+
}),
|
119
124
|
onSelectionChange: toggleItems,
|
120
125
|
selectionMode: 'multiple'
|
121
126
|
}));
|
@@ -262,10 +267,8 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
262
267
|
selectionManager.toggleSelection(key);
|
263
268
|
};
|
264
269
|
|
265
|
-
var
|
266
|
-
var
|
267
|
-
|
268
|
-
var item = _findInstanceProperty(_context5 = _concatInstanceProperty(_context6 = []).call(_context6, initialItems, customItems)).call(_context5, function (el) {
|
270
|
+
var readOnlyItems = ___EmotionJSX(React.Fragment, null, _mapInstanceProperty(readOnlyKeys).call(readOnlyKeys, function (key) {
|
271
|
+
var item = _findInstanceProperty(initialItems).call(initialItems, function (el) {
|
269
272
|
return el.key === key;
|
270
273
|
});
|
271
274
|
|
@@ -273,25 +276,34 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
273
276
|
return ___EmotionJSX(Chip, {
|
274
277
|
key: item.key,
|
275
278
|
role: "presentation",
|
276
|
-
bg: "active",
|
277
|
-
color: "white",
|
278
279
|
label: item.name,
|
279
|
-
|
280
|
-
|
281
|
-
cursor: 'default',
|
282
|
-
height: '100%',
|
283
|
-
m: 5,
|
284
|
-
mr: 10,
|
285
|
-
ml: 0,
|
286
|
-
py: 3,
|
287
|
-
pr: 0
|
288
|
-
},
|
280
|
+
variant: "boxes.readOnlyChip",
|
281
|
+
bg: "white",
|
289
282
|
textProps: {
|
290
283
|
sx: {
|
291
|
-
|
292
|
-
textTransform: 'none'
|
284
|
+
color: 'text.primary'
|
293
285
|
}
|
294
286
|
}
|
287
|
+
});
|
288
|
+
}
|
289
|
+
|
290
|
+
return null;
|
291
|
+
}));
|
292
|
+
|
293
|
+
var selectedItems = ___EmotionJSX(React.Fragment, null, _mapInstanceProperty(_context4 = _Array$from(selectionManager.selectedKeys)).call(_context4, function (key) {
|
294
|
+
var _context5, _context6;
|
295
|
+
|
296
|
+
var item = _findInstanceProperty(_context5 = _concatInstanceProperty(_context6 = []).call(_context6, initialItems, customItems)).call(_context5, function (el) {
|
297
|
+
return el.key === key;
|
298
|
+
});
|
299
|
+
|
300
|
+
if (item) {
|
301
|
+
return ___EmotionJSX(Chip, {
|
302
|
+
key: item.key,
|
303
|
+
role: "presentation",
|
304
|
+
variant: "boxes.selectedItemChip",
|
305
|
+
bg: "active",
|
306
|
+
label: item.name
|
295
307
|
}, ___EmotionJSX(IconButton, {
|
296
308
|
"aria-label": "delete",
|
297
309
|
onPress: function onPress() {
|
@@ -360,7 +372,7 @@ var MultivaluesField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
360
372
|
return _onKeyUp && _onKeyUp(e.nativeEvent);
|
361
373
|
},
|
362
374
|
slots: {
|
363
|
-
beforeInput: selectedItems
|
375
|
+
beforeInput: ___EmotionJSX(React.Fragment, null, readOnlyItems, " ", selectedItems)
|
364
376
|
},
|
365
377
|
value: filterString
|
366
378
|
}, inputProps)), ___EmotionJSX(PopoverContainer, {
|
@@ -471,6 +483,11 @@ MultivaluesField.propTypes = {
|
|
471
483
|
/** Temporary text that occupies the text input when it is empty. */
|
472
484
|
placeholder: PropTypes.string,
|
473
485
|
|
486
|
+
/**
|
487
|
+
* The item keys that are readonly. These items cannot be changed or selected.
|
488
|
+
*/
|
489
|
+
readOnlyKeys: PropTypes.arrayOf(PropTypes.string),
|
490
|
+
|
474
491
|
/** The currently selected keys in the collection (controlled). */
|
475
492
|
selectedKeys: isIterableProp,
|
476
493
|
// /** Props object that is spread directly into the ScrollBox element. */
|
@@ -171,4 +171,15 @@ export var WithCustomSize = function WithCustomSize(args) {
|
|
171
171
|
"data-id": item.name
|
172
172
|
}, item.name);
|
173
173
|
}))));
|
174
|
+
};
|
175
|
+
export var WithReadOnlyValues = function WithReadOnlyValues(args) {
|
176
|
+
return ___EmotionJSX(OverlayProvider, null, ___EmotionJSX(MultivaluesField, _extends({
|
177
|
+
readOnlyKeys: ['Aardvark', 'Snake'],
|
178
|
+
items: items
|
179
|
+
}, args), function (item) {
|
180
|
+
return ___EmotionJSX(Item, {
|
181
|
+
key: item.key,
|
182
|
+
"data-id": item.name
|
183
|
+
}, item.name);
|
184
|
+
}));
|
174
185
|
};
|
@@ -342,4 +342,19 @@ test('should have no accessibility violations', /*#__PURE__*/_asyncToGenerator(
|
|
342
342
|
}
|
343
343
|
}
|
344
344
|
}, _callee);
|
345
|
-
})));
|
345
|
+
})));
|
346
|
+
test('read only keys', function () {
|
347
|
+
getComponent({
|
348
|
+
readOnlyKeys: [items[1].key, items[2].key]
|
349
|
+
});
|
350
|
+
var listbox = screen.queryByRole('listbox');
|
351
|
+
expect(listbox).not.toBeInTheDocument();
|
352
|
+
var firstChip = screen.getByText(items[1].name);
|
353
|
+
var deleteButton1 = firstChip.nextSibling;
|
354
|
+
expect(firstChip).toBeInTheDocument();
|
355
|
+
expect(deleteButton1).toBeNull();
|
356
|
+
var secondChip = screen.getByText(items[2].name);
|
357
|
+
expect(secondChip).toBeInTheDocument();
|
358
|
+
var deleteButton2 = firstChip.nextSibling;
|
359
|
+
expect(deleteButton2).toBeNull();
|
360
|
+
});
|
package/lib/index.js
CHANGED
@@ -72,12 +72,12 @@ export { default as Messages } from './components/Messages';
|
|
72
72
|
export * from './components/Messages';
|
73
73
|
export { default as Modal } from './components/Modal';
|
74
74
|
export * from './components/Modal';
|
75
|
-
export { default as
|
76
|
-
export * from './components/
|
77
|
-
export { default as
|
78
|
-
export * from './components/
|
79
|
-
export { default as
|
80
|
-
export * from './components/
|
75
|
+
export { default as CollapsiblePanel } from './components/CollapsiblePanel';
|
76
|
+
export * from './components/CollapsiblePanel';
|
77
|
+
export { default as CollapsiblePanelItem } from './components/CollapsiblePanelItem';
|
78
|
+
export * from './components/CollapsiblePanelItem';
|
79
|
+
export { default as CollapsiblePanelContainer } from './components/CollapsiblePanelContainer';
|
80
|
+
export * from './components/CollapsiblePanelContainer';
|
81
81
|
export { default as NavBar } from './components/NavBar';
|
82
82
|
export * from './components/NavBar';
|
83
83
|
export { default as NavBarSection } from './components/NavBarSection';
|
@@ -24,10 +24,10 @@ import CheckIcon from 'mdi-react/CheckIcon';
|
|
24
24
|
import Clear from 'mdi-react/CloseIcon';
|
25
25
|
import ChevronRightIcon from 'mdi-react/ChevronRightIcon';
|
26
26
|
import SearchIcon from 'mdi-react/SearchIcon';
|
27
|
-
import { Breadcrumbs, Box, CheckboxField, Chip, Icon, IconButton, Item, ListView,
|
27
|
+
import { Breadcrumbs, Box, CheckboxField, Chip, Icon, IconButton, Item, ListView, CollapsiblePanel, CollapsiblePanelItem, SearchField, Text } from '..';
|
28
28
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
29
29
|
export default {
|
30
|
-
title: 'Recipes/
|
30
|
+
title: 'Recipes/CollapsiblePanel with List'
|
31
31
|
};
|
32
32
|
var data = [{
|
33
33
|
id: '1',
|
@@ -283,7 +283,7 @@ export var Default = function Default() {
|
|
283
283
|
return el.key === item.key;
|
284
284
|
})
|
285
285
|
}));
|
286
|
-
})), ___EmotionJSX(
|
286
|
+
})), ___EmotionJSX(CollapsiblePanel, {
|
287
287
|
items: selectedItems,
|
288
288
|
selectedFilterCount: selectedItems.length.toString(),
|
289
289
|
listTitle: "Selected Groups",
|
@@ -294,7 +294,7 @@ export var Default = function Default() {
|
|
294
294
|
key: item.key,
|
295
295
|
textValue: item.name,
|
296
296
|
"data-id": item.key
|
297
|
-
}, ___EmotionJSX(
|
297
|
+
}, ___EmotionJSX(CollapsiblePanelItem, {
|
298
298
|
text: item.name,
|
299
299
|
icon: item.isDefaultSelected ? CheckIcon : Clear,
|
300
300
|
isDefaultSelected: item.isDefaultSelected,
|
@@ -113,6 +113,27 @@ export var chip = {
|
|
113
113
|
}
|
114
114
|
}
|
115
115
|
};
|
116
|
+
|
117
|
+
var multivaluesChip = _objectSpread(_objectSpread({}, chip), {}, {
|
118
|
+
alignSelf: 'center',
|
119
|
+
cursor: 'default',
|
120
|
+
height: '100%',
|
121
|
+
m: 5,
|
122
|
+
mr: 10,
|
123
|
+
ml: 0
|
124
|
+
});
|
125
|
+
|
126
|
+
var selectedItemChip = _objectSpread(_objectSpread({}, multivaluesChip), {}, {
|
127
|
+
py: 3,
|
128
|
+
pr: 0
|
129
|
+
});
|
130
|
+
|
131
|
+
var readOnlyChip = _objectSpread(_objectSpread({}, multivaluesChip), {}, {
|
132
|
+
p: 3,
|
133
|
+
border: '1px solid',
|
134
|
+
borderColor: 'neutral.80'
|
135
|
+
});
|
136
|
+
|
116
137
|
var inputInContainerSlot = {
|
117
138
|
position: 'absolute',
|
118
139
|
bg: 'transparent',
|
@@ -289,6 +310,8 @@ export default {
|
|
289
310
|
base: base,
|
290
311
|
card: card,
|
291
312
|
chip: chip,
|
313
|
+
selectedItemChip: selectedItemChip,
|
314
|
+
readOnlyChip: readOnlyChip,
|
292
315
|
copy: copy,
|
293
316
|
datePicker: datePicker,
|
294
317
|
environmentChip: environmentChip,
|
@@ -126,7 +126,7 @@ var modalCloseButton = _objectSpread(_objectSpread({}, iconButton), {}, {
|
|
126
126
|
right: 10
|
127
127
|
});
|
128
128
|
|
129
|
-
var
|
129
|
+
var collapsiblePanelToggle = _objectSpread(_objectSpread({}, square), {}, {
|
130
130
|
bg: 'accent.99',
|
131
131
|
height: '40px',
|
132
132
|
minWidth: 'max-content',
|
@@ -700,6 +700,6 @@ export default {
|
|
700
700
|
tooltipInline: tooltipInline,
|
701
701
|
colorBlock: colorBlock,
|
702
702
|
menuTab: menuTab,
|
703
|
-
|
703
|
+
collapsiblePanelToggle: collapsiblePanelToggle,
|
704
704
|
neutralText: neutralText
|
705
705
|
};
|
@@ -1,10 +1,10 @@
|
|
1
|
-
var
|
1
|
+
var collapsiblePanelContainer = {
|
2
2
|
overflowX: 'hidden',
|
3
3
|
pr: 'sm',
|
4
4
|
transition: 'right 500ms',
|
5
5
|
minHeight: '80vh'
|
6
6
|
};
|
7
|
-
var
|
7
|
+
var collapsiblePanelContent = {
|
8
8
|
bg: 'accent.99',
|
9
9
|
fontSize: 'sm',
|
10
10
|
height: '100%',
|
@@ -23,7 +23,7 @@ var multiselectListContent = {
|
|
23
23
|
justifyContent: 'space-between'
|
24
24
|
}
|
25
25
|
};
|
26
|
-
var
|
26
|
+
var collapsiblePanelContainerTitle = {
|
27
27
|
alignContent: 'center',
|
28
28
|
bg: 'accent.99',
|
29
29
|
display: 'flex',
|
@@ -35,7 +35,7 @@ var multiselectListTitle = {
|
|
35
35
|
maxWidth: 'max-content !important',
|
36
36
|
margin: '0'
|
37
37
|
};
|
38
|
-
var
|
38
|
+
var collapsiblePanelBadge = {
|
39
39
|
borderRadius: '5px',
|
40
40
|
display: 'flex',
|
41
41
|
height: '17px',
|
@@ -48,14 +48,14 @@ var multiselectListBadge = {
|
|
48
48
|
alignItems: 'center',
|
49
49
|
fontWeight: 500
|
50
50
|
};
|
51
|
-
var
|
51
|
+
var collapsiblePanellItem = {
|
52
52
|
minHeight: '45px',
|
53
53
|
margin: 'auto'
|
54
54
|
};
|
55
55
|
export default {
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
56
|
+
collapsiblePanelContainer: collapsiblePanelContainer,
|
57
|
+
collapsiblePanelContent: collapsiblePanelContent,
|
58
|
+
collapsiblePanelContainerTitle: collapsiblePanelContainerTitle,
|
59
|
+
collapsiblePanelBadge: collapsiblePanelBadge,
|
60
|
+
collapsiblePanellItem: collapsiblePanellItem
|
61
61
|
};
|