@pingux/astro 1.0.1 → 1.1.0-alpha.11
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 +137 -0
- package/lib/cjs/components/AccordionGridGroup/AccordionGridGroup.test.js +24 -0
- package/lib/cjs/components/AccordionGridItem/AccordionGridItemBody.js +1 -1
- package/lib/cjs/components/AccordionGridItem/AccordionGridItemHeader.js +1 -1
- package/lib/cjs/components/AccordionGroup/AccordionGroup.test.js +33 -1
- package/lib/cjs/components/AccordionItem/AccordionItem.js +5 -4
- package/lib/cjs/components/Button/Button.js +1 -2
- package/lib/cjs/components/Button/Button.stories.js +2 -1
- package/lib/cjs/components/Button/Button.test.js +2 -1
- package/lib/cjs/components/ColorField/ColorField.js +1 -0
- package/lib/cjs/components/ComboBoxField/ComboBoxField.js +7 -0
- package/lib/cjs/components/ComboBoxField/ComboBoxField.stories.js +25 -1
- package/lib/cjs/components/ComboBoxField/ComboBoxField.test.js +44 -0
- package/lib/cjs/components/FileInputField/FileItem.js +2 -1
- package/lib/cjs/components/IconButton/IconButton.js +1 -1
- package/lib/cjs/components/IconButton/IconButton.stories.js +8 -17
- package/lib/cjs/components/IconButton/IconButton.test.js +4 -5
- package/lib/cjs/components/ImageUploadField/ImagePreviewButton.js +2 -1
- package/lib/cjs/components/List/List.js +3 -0
- package/lib/cjs/components/List/List.stories.js +7 -2
- package/lib/cjs/components/ListBox/ListBox.js +3 -6
- package/lib/cjs/components/ListBox/ListBox.test.js +2 -0
- package/lib/cjs/components/ListBox/Option.js +6 -0
- package/lib/cjs/components/ListView/ListView.stories.js +580 -39
- package/lib/cjs/components/Messages/Message.js +2 -2
- package/lib/cjs/components/MultivaluesField/MultivaluesField.js +3 -2
- package/lib/cjs/components/OverlayPanel/OverlayPanel.stories.js +15 -14
- package/lib/cjs/components/PopoverContainer/PopoverContainer.test.js +15 -0
- package/lib/cjs/components/TextArea/TextArea.js +5 -1
- package/lib/cjs/components/TooltipTrigger/TooltipTrigger.stories.js +45 -2
- package/lib/cjs/styles/variants/accordion.js +2 -2
- package/lib/cjs/styles/variants/boxes.js +2 -1
- package/lib/cjs/styles/variants/buttons.js +47 -2
- package/lib/components/AccordionGridGroup/AccordionGridGroup.test.js +23 -1
- package/lib/components/AccordionGridItem/AccordionGridItemBody.js +1 -1
- package/lib/components/AccordionGridItem/AccordionGridItemHeader.js +1 -1
- package/lib/components/AccordionGroup/AccordionGroup.test.js +30 -1
- package/lib/components/AccordionItem/AccordionItem.js +6 -5
- package/lib/components/Button/Button.js +2 -3
- package/lib/components/Button/Button.stories.js +2 -1
- package/lib/components/Button/Button.test.js +2 -1
- package/lib/components/ColorField/ColorField.js +1 -0
- package/lib/components/ComboBoxField/ComboBoxField.js +7 -0
- package/lib/components/ComboBoxField/ComboBoxField.stories.js +21 -0
- package/lib/components/ComboBoxField/ComboBoxField.test.js +35 -0
- package/lib/components/FileInputField/FileItem.js +2 -1
- package/lib/components/IconButton/IconButton.js +1 -1
- package/lib/components/IconButton/IconButton.stories.js +7 -13
- package/lib/components/IconButton/IconButton.test.js +4 -5
- package/lib/components/ImageUploadField/ImagePreviewButton.js +2 -1
- package/lib/components/List/List.js +2 -0
- package/lib/components/List/List.stories.js +6 -2
- package/lib/components/ListBox/ListBox.js +3 -5
- package/lib/components/ListBox/ListBox.test.js +2 -0
- package/lib/components/ListBox/Option.js +6 -0
- package/lib/components/ListView/ListView.stories.js +577 -39
- package/lib/components/Messages/Message.js +2 -2
- package/lib/components/MultivaluesField/MultivaluesField.js +3 -2
- package/lib/components/OverlayPanel/OverlayPanel.stories.js +7 -5
- package/lib/components/PopoverContainer/PopoverContainer.test.js +16 -1
- package/lib/components/TextArea/TextArea.js +5 -1
- package/lib/components/TooltipTrigger/TooltipTrigger.stories.js +33 -1
- package/lib/styles/variants/accordion.js +2 -2
- package/lib/styles/variants/boxes.js +1 -1
- package/lib/styles/variants/buttons.js +46 -2
- package/package.json +1 -1
@@ -22,8 +22,6 @@ var _collections = require("@react-stately/collections");
|
|
22
22
|
|
23
23
|
var _hooks = require("../../hooks");
|
24
24
|
|
25
|
-
var _Button = _interopRequireDefault(require("../Button/Button"));
|
26
|
-
|
27
25
|
var _OverlayPanel = _interopRequireDefault(require("./OverlayPanel"));
|
28
26
|
|
29
27
|
var _index = require("../../index");
|
@@ -66,15 +64,18 @@ var Default = function Default(_ref) {
|
|
66
64
|
var state = (0, _hooks.useOverlayPanelState)();
|
67
65
|
return (// Application must be wrapped in an OverlayProvider so that it can be hidden from screen
|
68
66
|
// readers when an overlay opens.
|
69
|
-
(0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Text, null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."), (0, _react2.jsx)("br", null), (0, _react2.jsx)(
|
67
|
+
(0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Text, null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."), (0, _react2.jsx)("br", null), (0, _react2.jsx)(_index.Button, {
|
70
68
|
onPress: state.open
|
71
69
|
}, "Open Panel"), (0, _react2.jsx)(_OverlayPanel["default"], (0, _extends2["default"])({
|
72
70
|
isOpen: state.isOpen
|
73
|
-
}, args), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(
|
71
|
+
}, args), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Button, {
|
74
72
|
onPress: state.close
|
75
|
-
}, "Close Panel"), (0, _react2.jsx)(_index.
|
76
|
-
|
77
|
-
|
73
|
+
}, "Close Panel"), (0, _react2.jsx)(_index.AccordionGroup, args, (0, _react2.jsx)(_collections.Item, {
|
74
|
+
key: "accordionKey",
|
75
|
+
textValue: "accordionKey",
|
76
|
+
label: "Accordion Label",
|
77
|
+
"data-id": "accordionItem"
|
78
|
+
}, (0, _react2.jsx)(_index.Text, null, "Render me!"))))))
|
78
79
|
);
|
79
80
|
};
|
80
81
|
|
@@ -106,7 +107,7 @@ var InnerPanel = function InnerPanel(_ref2) {
|
|
106
107
|
variant: "overlayPanel.overlayPanelInner" // applies higher z-index
|
107
108
|
,
|
108
109
|
isOpen: innerState.isOpen
|
109
|
-
}, args), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(
|
110
|
+
}, args), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Button, {
|
110
111
|
onPress: innerState.close
|
111
112
|
}, "Close Inner Panel"), (0, _react2.jsx)(_index.Text, {
|
112
113
|
pt: "md"
|
@@ -121,7 +122,7 @@ var InnerPanel = function InnerPanel(_ref2) {
|
|
121
122
|
sx: {
|
122
123
|
p: '12px'
|
123
124
|
}
|
124
|
-
}, (0, _react2.jsx)(
|
125
|
+
}, (0, _react2.jsx)(_index.Button, {
|
125
126
|
onPress: closeOuterPanel
|
126
127
|
}, "Close Panel"), (0, _react2.jsx)(_index.Text, {
|
127
128
|
pt: "md",
|
@@ -164,14 +165,14 @@ var InnerPanel = function InnerPanel(_ref2) {
|
|
164
165
|
mr: "auto"
|
165
166
|
}, "Form 5")), (0, _react2.jsx)(_index.Separator, {
|
166
167
|
margin: "0"
|
167
|
-
})), (0, _react2.jsx)("br", null), (0, _react2.jsx)(
|
168
|
+
})), (0, _react2.jsx)("br", null), (0, _react2.jsx)(_index.Button, {
|
168
169
|
onPress: toggleMessagesOpen
|
169
|
-
}, "Toggle Messages"), (0, _react2.jsx)("br", null), (0, _react2.jsx)(
|
170
|
+
}, "Toggle Messages"), (0, _react2.jsx)("br", null), (0, _react2.jsx)(_index.Button, {
|
170
171
|
onPress: innerState.open
|
171
172
|
}, "Open Inner Panel"), inner)));
|
172
173
|
return (// Application must be wrapped in an OverlayProvider so that it can be hidden from screen
|
173
174
|
// readers when an overlay opens.
|
174
|
-
(0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(
|
175
|
+
(0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Button, {
|
175
176
|
onPress: state.open
|
176
177
|
}, "Open Panel"), outer), messagesOpen && (0, _react2.jsx)(_index.Messages, {
|
177
178
|
sx: {
|
@@ -192,14 +193,14 @@ var CustomWidth = function CustomWidth() {
|
|
192
193
|
// readers when an overlay opens.
|
193
194
|
//
|
194
195
|
// For a custom width, provide the width via the 'sx' prop
|
195
|
-
(0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Text, null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."), (0, _react2.jsx)("br", null), (0, _react2.jsx)(
|
196
|
+
(0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Text, null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."), (0, _react2.jsx)("br", null), (0, _react2.jsx)(_index.Button, {
|
196
197
|
onPress: state.open
|
197
198
|
}, "Open Panel"), (0, _react2.jsx)(_OverlayPanel["default"], {
|
198
199
|
isOpen: state.isOpen,
|
199
200
|
sx: {
|
200
201
|
width: '720px'
|
201
202
|
}
|
202
|
-
}, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(
|
203
|
+
}, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Button, {
|
203
204
|
onPress: state.close
|
204
205
|
}, "Close Panel"), (0, _react2.jsx)(_index.Text, {
|
205
206
|
pt: "md"
|
@@ -17,6 +17,13 @@ var _react2 = require("@emotion/react");
|
|
17
17
|
var getComponent = function getComponent() {
|
18
18
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
19
19
|
return (0, _testWrapper.render)((0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_PopoverContainer["default"], props, (0, _react2.jsx)(_index.Box, null, "I am in a popover"))));
|
20
|
+
};
|
21
|
+
|
22
|
+
var getComponentInOverlayPanel = function getComponentInOverlayPanel() {
|
23
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
24
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(_index.OverlayPanel, {
|
25
|
+
isOpen: true
|
26
|
+
}, (0, _react2.jsx)(_PopoverContainer["default"], props, (0, _react2.jsx)(_index.Box, null, "I am in a popover"))));
|
20
27
|
}; // Need to be added to each test file to test accessibility using axe.
|
21
28
|
|
22
29
|
|
@@ -39,4 +46,12 @@ test('should render a popover with no arrow', function () {
|
|
39
46
|
var arrow = _testWrapper.screen.queryByTestId('popover-arrow');
|
40
47
|
|
41
48
|
expect(arrow).not.toBeInTheDocument();
|
49
|
+
});
|
50
|
+
test('popover will not open if wrapped in an overlayPanel', function () {
|
51
|
+
getComponentInOverlayPanel({
|
52
|
+
popoverProps: {
|
53
|
+
'data-test-id': 'popover-test'
|
54
|
+
}
|
55
|
+
});
|
56
|
+
expect(_testWrapper.screen.queryByTestId('popover-test')).not.toBeInTheDocument();
|
42
57
|
});
|
@@ -29,7 +29,11 @@ var _react2 = require("@emotion/react");
|
|
29
29
|
*/
|
30
30
|
var TextArea = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
31
31
|
return (0, _react2.jsx)(_themeUi.Textarea, (0, _extends2["default"])({
|
32
|
-
ref: ref
|
32
|
+
ref: ref // this requires to fix safari resizing issue (UIP-4995)
|
33
|
+
,
|
34
|
+
sx: {
|
35
|
+
position: 'relative'
|
36
|
+
}
|
33
37
|
}, props));
|
34
38
|
});
|
35
39
|
TextArea.displayName = 'TextArea';
|
@@ -8,16 +8,20 @@ _Object$defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
9
9
|
});
|
10
10
|
|
11
|
-
exports.Disabled = exports.isOpen = exports.withDelayProp = exports.withDirectionProp = exports.withAlignProp = exports.Default = exports["default"] = void 0;
|
11
|
+
exports.TextWithTooltip = exports.ChipWithTooltip = exports.IconWithTooltip = exports.Disabled = exports.isOpen = exports.withDelayProp = exports.withDirectionProp = exports.withAlignProp = exports.Default = exports["default"] = void 0;
|
12
12
|
|
13
13
|
var _react = _interopRequireDefault(require("react"));
|
14
14
|
|
15
15
|
var _EarthIcon = _interopRequireDefault(require("mdi-react/EarthIcon"));
|
16
16
|
|
17
|
+
var _PersonIcon = _interopRequireDefault(require("mdi-react/PersonIcon"));
|
18
|
+
|
17
19
|
var _index = require("../../index");
|
18
20
|
|
19
21
|
var _IconButton = _interopRequireDefault(require("../IconButton"));
|
20
22
|
|
23
|
+
var _Text = _interopRequireDefault(require("../Text"));
|
24
|
+
|
21
25
|
var _react2 = require("@emotion/react");
|
22
26
|
|
23
27
|
var _default = {
|
@@ -80,4 +84,43 @@ Disabled.parameters = {
|
|
80
84
|
story: 'The tooltip can be disabled without disabling the button press events.'
|
81
85
|
}
|
82
86
|
}
|
83
|
-
};
|
87
|
+
};
|
88
|
+
|
89
|
+
var IconWithTooltip = function IconWithTooltip() {
|
90
|
+
return (0, _react2.jsx)(_index.Box, {
|
91
|
+
pl: 50
|
92
|
+
}, (0, _react2.jsx)(_index.TooltipTrigger, null, (0, _react2.jsx)(_IconButton["default"], {
|
93
|
+
variant: "tooltipIconButton"
|
94
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
95
|
+
icon: _PersonIcon["default"]
|
96
|
+
})), (0, _react2.jsx)(_index.Tooltip, null, "Useful tooltip")));
|
97
|
+
};
|
98
|
+
|
99
|
+
exports.IconWithTooltip = IconWithTooltip;
|
100
|
+
|
101
|
+
var ChipWithTooltip = function ChipWithTooltip() {
|
102
|
+
return (0, _react2.jsx)(_index.Box, {
|
103
|
+
pl: 50
|
104
|
+
}, (0, _react2.jsx)(_index.TooltipTrigger, null, (0, _react2.jsx)(_index.Button, {
|
105
|
+
variant: "tooltipChip",
|
106
|
+
bg: "neutral.10"
|
107
|
+
}, (0, _react2.jsx)(_Text["default"], {
|
108
|
+
variant: "label",
|
109
|
+
sx: {
|
110
|
+
textTransform: 'uppercase'
|
111
|
+
},
|
112
|
+
color: "white"
|
113
|
+
}, "Some text")), (0, _react2.jsx)(_index.Tooltip, null, "Useful tooltip")));
|
114
|
+
};
|
115
|
+
|
116
|
+
exports.ChipWithTooltip = ChipWithTooltip;
|
117
|
+
|
118
|
+
var TextWithTooltip = function TextWithTooltip() {
|
119
|
+
return (0, _react2.jsx)(_index.Box, {
|
120
|
+
pl: 50
|
121
|
+
}, (0, _react2.jsx)(_index.TooltipTrigger, null, (0, _react2.jsx)(_index.Button, {
|
122
|
+
variant: "tooltipInline"
|
123
|
+
}, "Some text"), (0, _react2.jsx)(_index.Tooltip, null, "Useful tooltip")));
|
124
|
+
};
|
125
|
+
|
126
|
+
exports.TextWithTooltip = TextWithTooltip;
|
@@ -27,11 +27,11 @@ var accordion = {
|
|
27
27
|
alignItems: 'flex-start'
|
28
28
|
};
|
29
29
|
var accordionBody = {
|
30
|
-
display: 'none
|
30
|
+
display: 'none',
|
31
31
|
pt: 'md',
|
32
32
|
width: '100%',
|
33
33
|
'.is-open &': {
|
34
|
-
display: 'flex
|
34
|
+
display: 'flex'
|
35
35
|
}
|
36
36
|
};
|
37
37
|
var accordionGridHeader = {
|
@@ -8,7 +8,7 @@ _Object$defineProperty2(exports, "__esModule", {
|
|
8
8
|
value: true
|
9
9
|
});
|
10
10
|
|
11
|
-
exports["default"] = void 0;
|
11
|
+
exports["default"] = exports.chip = void 0;
|
12
12
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/define-property"));
|
14
14
|
|
@@ -131,6 +131,7 @@ var chip = {
|
|
131
131
|
}
|
132
132
|
}
|
133
133
|
};
|
134
|
+
exports.chip = chip;
|
134
135
|
var inputInContainerSlot = {
|
135
136
|
position: 'absolute',
|
136
137
|
bg: 'transparent',
|
@@ -32,6 +32,8 @@ var _text = require("./text");
|
|
32
32
|
|
33
33
|
var _colors = require("../colors");
|
34
34
|
|
35
|
+
var _boxes = require("./boxes");
|
36
|
+
|
35
37
|
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; }
|
36
38
|
|
37
39
|
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; }
|
@@ -87,7 +89,7 @@ var iconButton = {
|
|
87
89
|
width: 'inherit',
|
88
90
|
height: 'inherit',
|
89
91
|
path: {
|
90
|
-
fill: 'neutral.
|
92
|
+
fill: 'neutral.40'
|
91
93
|
},
|
92
94
|
outline: 'none',
|
93
95
|
'&.is-focused': _objectSpread({}, defaultFocus),
|
@@ -102,6 +104,10 @@ var iconButton = {
|
|
102
104
|
}
|
103
105
|
};
|
104
106
|
|
107
|
+
var square = _objectSpread(_objectSpread({}, iconButton), {}, {
|
108
|
+
borderRadius: '2px'
|
109
|
+
});
|
110
|
+
|
105
111
|
var modalCloseButton = _objectSpread(_objectSpread({}, iconButton), {}, {
|
106
112
|
position: 'absolute',
|
107
113
|
top: 14,
|
@@ -239,6 +245,10 @@ var inverted = _objectSpread(_objectSpread({}, iconButton), {}, {
|
|
239
245
|
}
|
240
246
|
});
|
241
247
|
|
248
|
+
var invertedSquare = _objectSpread(_objectSpread({}, inverted), {}, {
|
249
|
+
borderRadius: '2px'
|
250
|
+
});
|
251
|
+
|
242
252
|
var applicationPortal = _objectSpread(_objectSpread({}, iconButton), {}, {
|
243
253
|
background: 'transparent',
|
244
254
|
'&.is-focused': _objectSpread({}, defaultFocus),
|
@@ -467,6 +477,36 @@ var fileInputField = {
|
|
467
477
|
boxShadow: 'focus'
|
468
478
|
}
|
469
479
|
};
|
480
|
+
|
481
|
+
var tooltipChip = _objectSpread(_objectSpread({}, _boxes.chip), {}, {
|
482
|
+
cursor: 'default',
|
483
|
+
'&.is-hovered, &.is-pressed': {
|
484
|
+
cursor: 'default',
|
485
|
+
outline: 'none'
|
486
|
+
}
|
487
|
+
});
|
488
|
+
|
489
|
+
var tooltipIconButton = _objectSpread(_objectSpread({}, iconButton), {}, {
|
490
|
+
cursor: 'default',
|
491
|
+
'&.is-hovered, &.is-pressed': {
|
492
|
+
backgroundColor: 'inherit',
|
493
|
+
cursor: 'default',
|
494
|
+
path: {
|
495
|
+
fill: 'neutral.20'
|
496
|
+
}
|
497
|
+
}
|
498
|
+
});
|
499
|
+
|
500
|
+
var tooltipInline = _objectSpread(_objectSpread({}, text), {}, {
|
501
|
+
cursor: 'default',
|
502
|
+
alignSelf: 'flex-start',
|
503
|
+
'&.is-hovered, &.is-pressed': {
|
504
|
+
backgroundColor: 'inherit',
|
505
|
+
cursor: 'default',
|
506
|
+
textDecoration: 'inherit'
|
507
|
+
}
|
508
|
+
});
|
509
|
+
|
470
510
|
var _default = {
|
471
511
|
accordionHeader: accordionHeader,
|
472
512
|
chipDeleteButton: chipDeleteButton,
|
@@ -499,6 +539,11 @@ var _default = {
|
|
499
539
|
helpHint: helpHint,
|
500
540
|
modalCloseButton: modalCloseButton,
|
501
541
|
applicationPortalPinned: applicationPortalPinned,
|
502
|
-
applicationPortal: applicationPortal
|
542
|
+
applicationPortal: applicationPortal,
|
543
|
+
square: square,
|
544
|
+
invertedSquare: invertedSquare,
|
545
|
+
tooltipChip: tooltipChip,
|
546
|
+
tooltipIconButton: tooltipIconButton,
|
547
|
+
tooltipInline: tooltipInline
|
503
548
|
};
|
504
549
|
exports["default"] = _default;
|
@@ -4,7 +4,7 @@ import { Item } from '@react-stately/collections';
|
|
4
4
|
import userEvent from '@testing-library/user-event';
|
5
5
|
import axeTest from '../../utils/testUtils/testAxe';
|
6
6
|
import { act, fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
|
7
|
-
import { Link, Box } from '../../index';
|
7
|
+
import { Link, Box, OverlayPanel } from '../../index';
|
8
8
|
import AccordionGridGroup from '../AccordionGridGroup';
|
9
9
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
10
10
|
var testId = 'test-accordion';
|
@@ -26,6 +26,22 @@ var getComponent = function getComponent() {
|
|
26
26
|
}, ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Header Button"), ___EmotionJSX(Link, null, "Second Header Button")), ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Body Button"), ___EmotionJSX(Link, null, "Second Body Button")))));
|
27
27
|
};
|
28
28
|
|
29
|
+
var getComponentInOverlayPanel = function getComponentInOverlayPanel() {
|
30
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
31
|
+
return render(___EmotionJSX(OverlayPanel, {
|
32
|
+
isOpen: true
|
33
|
+
}, ___EmotionJSX(AccordionGridGroup, _extends({}, defaultProps, props), ___EmotionJSX(Item, {
|
34
|
+
key: "first",
|
35
|
+
textValue: "Duplicate"
|
36
|
+
}, ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Header Button"), ___EmotionJSX(Link, null, "Second Header Button")), ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Body Button"), ___EmotionJSX(Link, null, "Second Body Button"))), ___EmotionJSX(Item, {
|
37
|
+
key: "second",
|
38
|
+
textValue: "Duplicate"
|
39
|
+
}, ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Header Button"), ___EmotionJSX(Link, null, "Second Header Button")), ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Body Button"), ___EmotionJSX(Link, null, "Second Body Button"))), ___EmotionJSX(Item, {
|
40
|
+
key: "third",
|
41
|
+
textValue: "Duplicate"
|
42
|
+
}, ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Header Button"), ___EmotionJSX(Link, null, "Second Header Button")), ___EmotionJSX(Box, null, ___EmotionJSX(Link, null, "Body Button"), ___EmotionJSX(Link, null, "Second Body Button"))))));
|
43
|
+
};
|
44
|
+
|
29
45
|
axeTest(getComponent, {
|
30
46
|
// landmark-unique rule conflicts with react-aria role definition
|
31
47
|
rules: {
|
@@ -166,4 +182,10 @@ test('default expanded keys expands an accordion item', function () {
|
|
166
182
|
var row = screen.getAllByRole('row');
|
167
183
|
var selectedRow = row[0];
|
168
184
|
expect(selectedRow).toHaveAttribute('aria-selected', 'true');
|
185
|
+
});
|
186
|
+
test('items do not automatically expand if wrapped in an open OverlayPanel', function () {
|
187
|
+
getComponentInOverlayPanel();
|
188
|
+
var row = screen.getAllByRole('row');
|
189
|
+
var selectedRow = row[0];
|
190
|
+
expect(selectedRow).not.toHaveAttribute('aria-selected', 'true');
|
169
191
|
});
|
@@ -52,7 +52,7 @@ var AccordionGridItemBody = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
52
52
|
}, mergedProps, {
|
53
53
|
isSelected: isSelected,
|
54
54
|
className: classNames,
|
55
|
-
"aria-label": ariaLabel
|
55
|
+
"aria-label": ariaLabel
|
56
56
|
}), children);
|
57
57
|
});
|
58
58
|
AccordionGridItemBody.propTypes = {
|
@@ -76,7 +76,7 @@ var AccordionGridItemHeader = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
76
76
|
isSelected: isSelected,
|
77
77
|
className: classNames
|
78
78
|
}, others, {
|
79
|
-
"aria-label": ariaLabel
|
79
|
+
"aria-label": ariaLabel
|
80
80
|
}), ___EmotionJSX(Box, {
|
81
81
|
isRow: true
|
82
82
|
}, children, ___EmotionJSX(Box, {
|
@@ -7,6 +7,7 @@ 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 } from '../../index';
|
10
11
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
11
12
|
var testId = 'test-accordion';
|
12
13
|
var defaultProps = {
|
@@ -16,6 +17,28 @@ var defaultProps = {
|
|
16
17
|
var getComponent = function getComponent() {
|
17
18
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
18
19
|
return render(___EmotionJSX(AccordionGroup, _extends({}, defaultProps, props), ___EmotionJSX(Item, {
|
20
|
+
key: "first",
|
21
|
+
textValue: "Duplicate",
|
22
|
+
"data-id": "first",
|
23
|
+
label: "Accordion item"
|
24
|
+
}, ___EmotionJSX(Text, null, "Render me!")), ___EmotionJSX(Item, {
|
25
|
+
key: "second",
|
26
|
+
textValue: "Duplicate",
|
27
|
+
"data-id": "second",
|
28
|
+
label: "Accordion item"
|
29
|
+
}, ___EmotionJSX(Text, null, "Render me!")), ___EmotionJSX(Item, {
|
30
|
+
key: "third",
|
31
|
+
textValue: "Duplicate",
|
32
|
+
"data-id": "third",
|
33
|
+
label: "Accordion item"
|
34
|
+
}, ___EmotionJSX(Text, null, "Render me!"))));
|
35
|
+
};
|
36
|
+
|
37
|
+
var getComponentInOverlayPanel = function getComponentInOverlayPanel() {
|
38
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
39
|
+
return render(___EmotionJSX(OverlayPanel, {
|
40
|
+
isOpen: true
|
41
|
+
}, ___EmotionJSX(AccordionGroup, _extends({}, defaultProps, props), ___EmotionJSX(Item, {
|
19
42
|
key: "first",
|
20
43
|
textValue: "Duplicate",
|
21
44
|
"data-id": "first"
|
@@ -27,7 +50,7 @@ var getComponent = function getComponent() {
|
|
27
50
|
key: "third",
|
28
51
|
textValue: "Duplicate",
|
29
52
|
"data-id": "third"
|
30
|
-
}, ___EmotionJSX(Text, null, "Render me!"))));
|
53
|
+
}, ___EmotionJSX(Text, null, "Render me!")))));
|
31
54
|
}; // Need to be added to each test file to test accessibility using axe.
|
32
55
|
|
33
56
|
|
@@ -197,4 +220,10 @@ test('Item accepts a data-id and the data-id can be found in the DOM', function
|
|
197
220
|
var selectedItem = buttons[0];
|
198
221
|
var parentElement = selectedItem.parentElement;
|
199
222
|
expect(parentElement).toHaveAttribute('data-id', 'first');
|
223
|
+
});
|
224
|
+
test('items do not automatically expand if wrapped in an open OverlayPanel', function () {
|
225
|
+
getComponentInOverlayPanel();
|
226
|
+
var buttons = screen.getAllByRole('button');
|
227
|
+
var selectedItem = buttons[0];
|
228
|
+
expect(selectedItem).not.toHaveAttribute('aria-expanded', 'true');
|
200
229
|
});
|
@@ -11,7 +11,7 @@ import { useAccordionItem } from '@react-aria/accordion';
|
|
11
11
|
import { useButton } from '@react-aria/button';
|
12
12
|
import { useFocusRing } from '@react-aria/focus';
|
13
13
|
import { Text, Icon, Box } from '../../index';
|
14
|
-
import {
|
14
|
+
import { useStatusClasses } from '../../hooks';
|
15
15
|
import { AccordionContext } from '../../context/AccordionContext';
|
16
16
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
17
17
|
var AccordionItem = /*#__PURE__*/forwardRef(function (props, ref) {
|
@@ -72,12 +72,11 @@ var AccordionItem = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
72
72
|
buttonClasses = _useStatusClasses2.classNames;
|
73
73
|
|
74
74
|
var ariaLabel = props['aria-label'] || item.props.label;
|
75
|
-
useAriaLabelWarning('AccordionItem', ariaLabel);
|
76
75
|
return ___EmotionJSX(Box, _extends({
|
77
76
|
variant: "accordion.accordion",
|
78
77
|
className: itemClasses
|
79
78
|
}, others, containerProps), ___EmotionJSX(ThemeUIButton, _extends({
|
80
|
-
"aria-label": ariaLabel
|
79
|
+
"aria-label": ariaLabel,
|
81
80
|
ref: buttonRef,
|
82
81
|
sx: {
|
83
82
|
display: 'flex',
|
@@ -94,9 +93,11 @@ var AccordionItem = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
94
93
|
ml: "5px"
|
95
94
|
}, ___EmotionJSX(Icon, {
|
96
95
|
icon: isOpen ? MenuUp : MenuDown
|
97
|
-
}))), ___EmotionJSX(Box, _extends({
|
96
|
+
}))), isOpen && ___EmotionJSX(Box, _extends({
|
98
97
|
variant: "accordion.accordionBody"
|
99
|
-
}, accordionRegionProps, regionProps
|
98
|
+
}, accordionRegionProps, regionProps, {
|
99
|
+
className: itemClasses
|
100
|
+
}), item.rendered));
|
100
101
|
});
|
101
102
|
AccordionItem.propTypes = {
|
102
103
|
'aria-label': PropTypes.string,
|
@@ -21,7 +21,7 @@ import { useButton } from '@react-aria/button';
|
|
21
21
|
import { useHover } from '@react-aria/interactions';
|
22
22
|
import { useFocusRing } from '@react-aria/focus';
|
23
23
|
import { mergeProps } from '@react-aria/utils';
|
24
|
-
import {
|
24
|
+
import { useStatusClasses, usePropWarning } from '../../hooks';
|
25
25
|
import Loader from '../Loader';
|
26
26
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
27
27
|
var Button = /*#__PURE__*/forwardRef(function (props, ref) {
|
@@ -70,9 +70,8 @@ var Button = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
70
70
|
classNames = _useStatusClasses.classNames;
|
71
71
|
|
72
72
|
var ariaLabel = props['aria-label'];
|
73
|
-
useAriaLabelWarning('Button', ariaLabel);
|
74
73
|
return ___EmotionJSX(ThemeUIButton, _extends({
|
75
|
-
"aria-label": ariaLabel
|
74
|
+
"aria-label": ariaLabel,
|
76
75
|
ref: buttonRef,
|
77
76
|
className: classNames,
|
78
77
|
role: "button",
|
@@ -62,7 +62,8 @@ export var TextIconButton = function TextIconButton() {
|
|
62
62
|
export var TextButton = function TextButton() {
|
63
63
|
return ___EmotionJSX(Button, {
|
64
64
|
mb: "sm",
|
65
|
-
variant: "text"
|
65
|
+
variant: "text",
|
66
|
+
"aria-label": "Add option"
|
66
67
|
}, ___EmotionJSX(Text, {
|
67
68
|
variant: "label",
|
68
69
|
color: "active"
|
@@ -7,7 +7,8 @@ import Button from '.';
|
|
7
7
|
import { jsx as ___EmotionJSX } from "@emotion/react";
|
8
8
|
var testId = 'test-button';
|
9
9
|
var defaultProps = {
|
10
|
-
'data-testid': testId
|
10
|
+
'data-testid': testId,
|
11
|
+
'aria-label': 'Test button'
|
11
12
|
};
|
12
13
|
|
13
14
|
var getComponent = function getComponent() {
|
@@ -108,6 +108,7 @@ var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
108
108
|
return _concatInstanceProperty(_context2 = _concatInstanceProperty(_context3 = _concatInstanceProperty(_context4 = "rgba(".concat(colorValue === null || colorValue === void 0 ? void 0 : colorValue.red, ", ")).call(_context4, colorValue === null || colorValue === void 0 ? void 0 : colorValue.green, ", ")).call(_context3, colorValue === null || colorValue === void 0 ? void 0 : colorValue.blue, ", ")).call(_context2, colorValue === null || colorValue === void 0 ? void 0 : colorValue.alpha, ")");
|
109
109
|
}, []);
|
110
110
|
return ___EmotionJSX(Box, fieldContainerProps, label && ___EmotionJSX(Label, fieldLabelProps), ___EmotionJSX(Button, _extends({
|
111
|
+
"aria-label": "Select color",
|
111
112
|
bg: getRgbaFromState(state),
|
112
113
|
onPress: handleButtonPress,
|
113
114
|
ref: triggerRef,
|
@@ -116,6 +116,12 @@ var ComboBoxField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
116
116
|
useImperativeHandle(ref, function () {
|
117
117
|
return inputRef.current;
|
118
118
|
});
|
119
|
+
/* istanbul ignore next */
|
120
|
+
|
121
|
+
var onSelectionChangeHandler = function onSelectionChangeHandler(key) {
|
122
|
+
var newVal = key || selectedKey || '';
|
123
|
+
if (onSelectionChange) onSelectionChange(newVal);
|
124
|
+
};
|
119
125
|
|
120
126
|
var _useFilter = useFilter({
|
121
127
|
sensitivity: 'base'
|
@@ -123,6 +129,7 @@ var ComboBoxField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
123
129
|
contains = _useFilter.contains;
|
124
130
|
|
125
131
|
var state = useComboBoxState(_objectSpread(_objectSpread({}, comboBoxOptions), {}, {
|
132
|
+
onSelectionChange: hasCustomValue ? onSelectionChangeHandler : onSelectionChange,
|
126
133
|
defaultFilter: contains
|
127
134
|
}));
|
128
135
|
|
@@ -330,6 +330,27 @@ export var ControlledFiltering = function ControlledFiltering() {
|
|
330
330
|
}, item.name);
|
331
331
|
}));
|
332
332
|
};
|
333
|
+
export var ControlledWithCustomValue = function ControlledWithCustomValue() {
|
334
|
+
var _useState9 = useState(''),
|
335
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
336
|
+
inputValue = _useState10[0],
|
337
|
+
setInputValue = _useState10[1];
|
338
|
+
|
339
|
+
return ___EmotionJSX(OverlayProvider, null, ___EmotionJSX(ComboBoxField, _extends({
|
340
|
+
label: "Example label",
|
341
|
+
defaultItems: items
|
342
|
+
}, actions, {
|
343
|
+
inputValue: inputValue,
|
344
|
+
selectedKey: inputValue,
|
345
|
+
onInputChange: setInputValue,
|
346
|
+
onSelectionChange: setInputValue,
|
347
|
+
hasCustomValue: true
|
348
|
+
}), function (item) {
|
349
|
+
return ___EmotionJSX(Item, {
|
350
|
+
key: item.name
|
351
|
+
}, item.name);
|
352
|
+
}));
|
353
|
+
};
|
333
354
|
export var AllowCustomValue = function AllowCustomValue() {
|
334
355
|
return ___EmotionJSX(OverlayProvider, null, ___EmotionJSX(ComboBoxField, _extends({
|
335
356
|
label: "Example label",
|
@@ -639,6 +639,41 @@ test('two listbox can not be open at the same time', function () {
|
|
639
639
|
name: 'Tango'
|
640
640
|
})).toBeInTheDocument();
|
641
641
|
});
|
642
|
+
test('should handle selecting custom option', function () {
|
643
|
+
getComponent({
|
644
|
+
hasCustomValue: true
|
645
|
+
});
|
646
|
+
var input = screen.queryByRole('combobox');
|
647
|
+
expect(input).toHaveValue(''); // type something
|
648
|
+
|
649
|
+
userEvent.type(input, 'custom'); // set input value as selected
|
650
|
+
|
651
|
+
userEvent.type(input, '{enter}', {
|
652
|
+
skipClick: true
|
653
|
+
});
|
654
|
+
expect(screen.queryByRole('listbox')).not.toBeInTheDocument();
|
655
|
+
expect(screen.queryByRole('combobox')).toHaveValue('custom'); // blur input
|
656
|
+
|
657
|
+
userEvent.tab();
|
658
|
+
expect(input).toHaveValue('custom');
|
659
|
+
});
|
660
|
+
test('onSelectionChange works properly with custom value', function () {
|
661
|
+
var onSelectionChange = jest.fn();
|
662
|
+
getComponent({
|
663
|
+
hasCustomValue: true,
|
664
|
+
onSelectionChange: onSelectionChange,
|
665
|
+
onInputChange: onSelectionChange
|
666
|
+
});
|
667
|
+
var input = screen.queryByRole('combobox');
|
668
|
+
expect(input).toHaveValue('');
|
669
|
+
expect(onSelectionChange).not.toHaveBeenCalled(); // Should fire when input value was typed, and enter was pressed
|
670
|
+
|
671
|
+
userEvent.type(input, 'custom{enter}');
|
672
|
+
expect(onSelectionChange).toHaveBeenCalledWith('custom'); // Should fire when input is cleared
|
673
|
+
|
674
|
+
userEvent.type(input, '{selectall}{backspace}{enter}');
|
675
|
+
expect(onSelectionChange).toHaveBeenCalledWith('');
|
676
|
+
});
|
642
677
|
test('should have no accessibility violations', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
643
678
|
var _getComponent6, container, results;
|
644
679
|
|