@pingux/astro 1.12.0 → 1.13.0-alpha.2
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/Avatar/Avatar.js +8 -3
- package/lib/cjs/components/Avatar/Avatar.test.js +10 -0
- package/lib/cjs/components/Button/Button.js +9 -3
- package/lib/cjs/components/CodeView/CodeView.test.js +4 -4
- package/lib/cjs/components/ComboBox/ComboBoxInput.js +2 -1
- package/lib/cjs/components/CopyText/CopyButton.js +1 -1
- package/lib/cjs/components/CopyText/CopyText.js +5 -1
- package/lib/cjs/components/CopyText/CopyText.test.js +11 -20
- package/lib/cjs/components/IconButtonToggle/IconButtonToggle.js +78 -0
- package/lib/cjs/components/IconButtonToggle/IconButtonToggle.stories.js +76 -0
- package/lib/cjs/components/IconButtonToggle/IconButtonToggle.test.js +60 -0
- package/lib/cjs/components/IconButtonToggle/index.js +18 -0
- package/lib/cjs/components/Menu/Menu.js +4 -1
- package/lib/cjs/components/Menu/Menu.test.js +3 -0
- package/lib/cjs/hooks/index.js +18 -0
- package/lib/cjs/hooks/useComponentToggle/index.js +18 -0
- package/lib/cjs/hooks/useComponentToggle/useComponentToggle.js +70 -0
- package/lib/cjs/hooks/useComponentToggle/useComponentToggle.test.js +133 -0
- package/lib/cjs/index.js +72 -49
- package/lib/cjs/recipes/OneWayToBidirectionalArrow.stories.js +160 -0
- package/lib/cjs/styles/variants/boxes.js +1 -0
- package/lib/cjs/styles/variants/buttons.js +8 -1
- package/lib/components/Avatar/Avatar.js +8 -3
- package/lib/components/Avatar/Avatar.test.js +8 -0
- package/lib/components/Button/Button.js +9 -3
- package/lib/components/CodeView/CodeView.test.js +4 -4
- package/lib/components/ComboBox/ComboBoxInput.js +2 -1
- package/lib/components/CopyText/CopyButton.js +1 -1
- package/lib/components/CopyText/CopyText.js +5 -1
- package/lib/components/CopyText/CopyText.test.js +11 -16
- package/lib/components/IconButtonToggle/IconButtonToggle.js +59 -0
- package/lib/components/IconButtonToggle/IconButtonToggle.stories.js +40 -0
- package/lib/components/IconButtonToggle/IconButtonToggle.test.js +46 -0
- package/lib/components/IconButtonToggle/index.js +1 -0
- package/lib/components/Menu/Menu.js +3 -1
- package/lib/components/Menu/Menu.test.js +2 -0
- package/lib/hooks/index.js +2 -0
- package/lib/hooks/useComponentToggle/index.js +1 -0
- package/lib/hooks/useComponentToggle/useComponentToggle.js +55 -0
- package/lib/hooks/useComponentToggle/useComponentToggle.test.js +105 -0
- package/lib/index.js +2 -0
- package/lib/recipes/OneWayToBidirectionalArrow.stories.js +137 -0
- package/lib/styles/variants/boxes.js +1 -0
- package/lib/styles/variants/buttons.js +8 -1
- package/package.json +1 -1
- package/NOTICE.html +0 -4311
@@ -36,13 +36,18 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
36
36
|
*/
|
37
37
|
var Avatar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
38
38
|
return (0, _react2.jsx)(_themeUi.Avatar, (0, _extends2["default"])({
|
39
|
-
ref: ref
|
40
|
-
alt: "Avatar"
|
39
|
+
ref: ref
|
41
40
|
}, props));
|
42
41
|
});
|
43
42
|
Avatar.propTypes = {
|
44
43
|
/** Source of avatar. */
|
45
|
-
src: _propTypes["default"].string.isRequired
|
44
|
+
src: _propTypes["default"].string.isRequired,
|
45
|
+
|
46
|
+
/** Alternative text for avatar. */
|
47
|
+
alt: _propTypes["default"].string
|
48
|
+
};
|
49
|
+
Avatar.defaultProps = {
|
50
|
+
alt: 'Avatar'
|
46
51
|
};
|
47
52
|
Avatar.displayName = 'Avatar';
|
48
53
|
var _default = Avatar;
|
@@ -34,4 +34,14 @@ test('an avatar is rendered', function () {
|
|
34
34
|
|
35
35
|
expect(img).toBeInstanceOf(HTMLImageElement);
|
36
36
|
expect(img).toBeInTheDocument();
|
37
|
+
expect(img).toHaveAttribute('alt', 'Avatar');
|
38
|
+
});
|
39
|
+
test('an avatar is rendered with custom alt', function () {
|
40
|
+
getComponent({
|
41
|
+
alt: 'Custom Alt'
|
42
|
+
});
|
43
|
+
|
44
|
+
var img = _testWrapper.screen.getByRole('img');
|
45
|
+
|
46
|
+
expect(img).toHaveAttribute('alt', 'Custom Alt');
|
37
47
|
});
|
@@ -54,7 +54,7 @@ var _Loader = _interopRequireDefault(require("../Loader"));
|
|
54
54
|
|
55
55
|
var _react2 = require("@emotion/react");
|
56
56
|
|
57
|
-
var _excluded = ["className", "isDisabled", "isLoading", "onHoverStart", "onHoverChange", "onHoverEnd", "onPress", "onPressStart", "onPressEnd", "onPressChange", "onPressUp", "children", "variant"];
|
57
|
+
var _excluded = ["className", "isDisabled", "isLoading", "onHoverStart", "onHoverChange", "onHoverEnd", "onPress", "onPressStart", "onPressEnd", "onPressChange", "onPressUp", "children", "variant", "tabIndex"];
|
58
58
|
|
59
59
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
60
60
|
|
@@ -78,6 +78,7 @@ var Button = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
78
78
|
onPressUp = props.onPressUp,
|
79
79
|
children = props.children,
|
80
80
|
variant = props.variant,
|
81
|
+
tabIndex = props.tabIndex,
|
81
82
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
82
83
|
var buttonRef = (0, _react.useRef)();
|
83
84
|
(0, _hooks.usePropWarning)(props, 'disabled', 'isDisabled');
|
@@ -132,7 +133,9 @@ var Button = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
132
133
|
alignItems: 'center'
|
133
134
|
},
|
134
135
|
variant: variant
|
135
|
-
}, others, (0, _utils.mergeProps)(hoverProps, focusProps,
|
136
|
+
}, others, (0, _utils.mergeProps)(hoverProps, focusProps, _objectSpread(_objectSpread({}, buttonProps), {}, {
|
137
|
+
tabIndex: tabIndex
|
138
|
+
}))), isLoading ? (0, _react2.jsx)("span", {
|
136
139
|
style: {
|
137
140
|
visibility: 'hidden'
|
138
141
|
}
|
@@ -204,7 +207,10 @@ Button.propTypes = {
|
|
204
207
|
onPressUp: _propTypes["default"].func,
|
205
208
|
|
206
209
|
/** The styling variation of the button. */
|
207
|
-
variant: _propTypes["default"].string
|
210
|
+
variant: _propTypes["default"].string,
|
211
|
+
|
212
|
+
/** The focus variation of the button. */
|
213
|
+
tabIndex: _propTypes["default"].number
|
208
214
|
};
|
209
215
|
Button.defaultProps = {
|
210
216
|
isDisabled: false,
|
@@ -85,7 +85,7 @@ test('renders component in the default state', function () {
|
|
85
85
|
test('copy button is hovered and renders tooltip via mouse', function () {
|
86
86
|
getComponent();
|
87
87
|
|
88
|
-
var copyBtn = _testWrapper.screen.getByLabelText('copy');
|
88
|
+
var copyBtn = _testWrapper.screen.getByLabelText('copy to clipboard');
|
89
89
|
|
90
90
|
expect(copyBtn).not.toHaveFocus();
|
91
91
|
|
@@ -98,7 +98,7 @@ test('copy button is hovered and renders tooltip via mouse', function () {
|
|
98
98
|
test('copy button is focused and renders tooltip via keyboard', function () {
|
99
99
|
getComponent();
|
100
100
|
|
101
|
-
var copyBtn = _testWrapper.screen.getByLabelText('copy');
|
101
|
+
var copyBtn = _testWrapper.screen.getByLabelText('copy to clipboard');
|
102
102
|
|
103
103
|
expect(copyBtn).not.toHaveFocus();
|
104
104
|
|
@@ -141,7 +141,7 @@ test('click on copy button copies data to the clipboard', /*#__PURE__*/(0, _asyn
|
|
141
141
|
switch (_context2.prev = _context2.next) {
|
142
142
|
case 0:
|
143
143
|
getComponent();
|
144
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
144
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
145
145
|
_context2.next = 4;
|
146
146
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
147
147
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
@@ -176,7 +176,7 @@ test('after button click, the tooltip renders with the text "Copied!"', /*#__PUR
|
|
176
176
|
switch (_context4.prev = _context4.next) {
|
177
177
|
case 0:
|
178
178
|
getComponent();
|
179
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
179
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
180
180
|
_context4.next = 4;
|
181
181
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
182
182
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
@@ -159,7 +159,8 @@ var ComboBoxInput = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
159
159
|
variant: "comboBox"
|
160
160
|
}, triggerProps, {
|
161
161
|
ref: triggerRef,
|
162
|
-
isDisabled: isDisabled || isReadOnly
|
162
|
+
isDisabled: isDisabled || isReadOnly,
|
163
|
+
tabIndex: -1
|
163
164
|
}), (0, _react2.jsx)(_index.Icon, {
|
164
165
|
icon: _MenuDownIcon["default"],
|
165
166
|
sx: isOpen ? {
|
@@ -39,7 +39,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
39
39
|
var CopyButton = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
40
40
|
return (0, _react2.jsx)(_IconButton["default"], (0, _extends2["default"])({
|
41
41
|
ref: ref,
|
42
|
-
"aria-label": "copy",
|
42
|
+
"aria-label": "copy to clipboard",
|
43
43
|
variant: "buttons.copy"
|
44
44
|
}, (0, _lodash.omit)(props, 'iconProps')), (0, _react2.jsx)(_Icon["default"], (0, _extends2["default"])({
|
45
45
|
icon: _ContentCopyIcon["default"],
|
@@ -34,6 +34,8 @@ var _interactions = require("@react-aria/interactions");
|
|
34
34
|
|
35
35
|
var _utils = require("@react-aria/utils");
|
36
36
|
|
37
|
+
var _liveAnnouncer = require("@react-aria/live-announcer");
|
38
|
+
|
37
39
|
var _index = require("../../index");
|
38
40
|
|
39
41
|
var _CopyButton = _interopRequireDefault(require("./CopyButton"));
|
@@ -101,6 +103,7 @@ var CopyText = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
101
103
|
|
102
104
|
(0, _react.useEffect)(function () {
|
103
105
|
if (isCopied) {
|
106
|
+
(0, _liveAnnouncer.announce)('Copied!', 'polite');
|
104
107
|
var timer = (0, _setTimeout2["default"])(function () {
|
105
108
|
setIsCopied(false);
|
106
109
|
}, 1000);
|
@@ -115,7 +118,8 @@ var CopyText = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
115
118
|
var content = mode === 'link' || mode === 'nonClickableContent' ? children : (0, _react2.jsx)(_index.Button, (0, _extends2["default"])({
|
116
119
|
variant: "quiet",
|
117
120
|
onPress: copyToClipboard,
|
118
|
-
"aria-label": "copy-content"
|
121
|
+
"aria-label": "copy-content",
|
122
|
+
tabIndex: -1
|
119
123
|
}, focusProps), children);
|
120
124
|
var tooltip = isCopied ? 'Copied!' : tooltipText;
|
121
125
|
var isTooltipOpen = isFocusVisible || isHovered || isCopied;
|
@@ -88,19 +88,10 @@ describe('Text mode', function () {
|
|
88
88
|
expect(_testWrapper.screen.queryByRole('tooltip')).toBeInTheDocument();
|
89
89
|
expect(_testWrapper.screen.queryByRole('tooltip')).toHaveTextContent('Copy to clipboard');
|
90
90
|
});
|
91
|
-
test('
|
91
|
+
test('copy button is focused with keyboard', function () {
|
92
92
|
getComponent();
|
93
93
|
|
94
|
-
var
|
95
|
-
|
96
|
-
expect(contentBtn).not.toHaveFocus();
|
97
|
-
|
98
|
-
_userEvent["default"].tab();
|
99
|
-
|
100
|
-
expect(contentBtn).toHaveFocus();
|
101
|
-
expect(contentBtn).toHaveClass('is-focused');
|
102
|
-
|
103
|
-
var copyBtn = _testWrapper.screen.getByLabelText('copy');
|
94
|
+
var copyBtn = _testWrapper.screen.getByLabelText('copy to clipboard');
|
104
95
|
|
105
96
|
expect(copyBtn).not.toHaveFocus();
|
106
97
|
|
@@ -164,7 +155,7 @@ describe('Text mode', function () {
|
|
164
155
|
switch (_context4.prev = _context4.next) {
|
165
156
|
case 0:
|
166
157
|
getComponent();
|
167
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
158
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
168
159
|
_context4.next = 4;
|
169
160
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
170
161
|
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
@@ -202,7 +193,7 @@ describe('Text mode', function () {
|
|
202
193
|
getComponent({
|
203
194
|
textToCopy: textToCopy
|
204
195
|
});
|
205
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
196
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
206
197
|
_context6.next = 5;
|
207
198
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
208
199
|
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
@@ -238,7 +229,7 @@ describe('Text mode', function () {
|
|
238
229
|
case 0:
|
239
230
|
global.navigator.clipboard = undefined;
|
240
231
|
getComponent();
|
241
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
232
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
242
233
|
_context8.next = 5;
|
243
234
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
244
235
|
return _regenerator["default"].wrap(function _callee7$(_context7) {
|
@@ -283,7 +274,7 @@ describe('Text mode', function () {
|
|
283
274
|
getComponent();
|
284
275
|
spy = jest.spyOn(console, 'error');
|
285
276
|
expect(spy).not.toHaveBeenCalled();
|
286
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
277
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
287
278
|
_context10.next = 9;
|
288
279
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
|
289
280
|
return _regenerator["default"].wrap(function _callee9$(_context9) {
|
@@ -319,7 +310,7 @@ describe('Text mode', function () {
|
|
319
310
|
switch (_context12.prev = _context12.next) {
|
320
311
|
case 0:
|
321
312
|
getComponent();
|
322
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
313
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
323
314
|
_context12.next = 4;
|
324
315
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
|
325
316
|
return _regenerator["default"].wrap(function _callee11$(_context11) {
|
@@ -354,7 +345,7 @@ describe('Text mode', function () {
|
|
354
345
|
switch (_context14.prev = _context14.next) {
|
355
346
|
case 0:
|
356
347
|
getComponent();
|
357
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
348
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
358
349
|
_context14.next = 4;
|
359
350
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
|
360
351
|
return _regenerator["default"].wrap(function _callee13$(_context13) {
|
@@ -415,7 +406,7 @@ describe('Link mode', function () {
|
|
415
406
|
|
416
407
|
expect(_testWrapper.screen.queryByRole('tooltip')).not.toBeInTheDocument();
|
417
408
|
|
418
|
-
var button = _testWrapper.screen.getByLabelText('copy');
|
409
|
+
var button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
419
410
|
|
420
411
|
_testWrapper.fireEvent.mouseMove(button);
|
421
412
|
|
@@ -426,7 +417,7 @@ describe('Link mode', function () {
|
|
426
417
|
test('copy button is focused with keyboard', function () {
|
427
418
|
getComponent();
|
428
419
|
|
429
|
-
var copyBtn = _testWrapper.screen.getByLabelText('copy');
|
420
|
+
var copyBtn = _testWrapper.screen.getByLabelText('copy to clipboard');
|
430
421
|
|
431
422
|
expect(copyBtn).not.toHaveFocus();
|
432
423
|
|
@@ -454,7 +445,7 @@ describe('Link mode', function () {
|
|
454
445
|
switch (_context16.prev = _context16.next) {
|
455
446
|
case 0:
|
456
447
|
getComponent();
|
457
|
-
button = _testWrapper.screen.getByLabelText('copy');
|
448
|
+
button = _testWrapper.screen.getByLabelText('copy to clipboard');
|
458
449
|
_context16.next = 4;
|
459
450
|
return (0, _testWrapper.act)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15() {
|
460
451
|
return _regenerator["default"].wrap(function _callee15$(_context15) {
|
@@ -0,0 +1,78 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
exports["default"] = void 0;
|
12
|
+
|
13
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
14
|
+
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
16
|
+
|
17
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
18
|
+
|
19
|
+
var _IconButton = _interopRequireDefault(require("../IconButton"));
|
20
|
+
|
21
|
+
var _Icon = _interopRequireDefault(require("../Icon"));
|
22
|
+
|
23
|
+
var _hooks = require("../../hooks");
|
24
|
+
|
25
|
+
var _react2 = require("@emotion/react");
|
26
|
+
|
27
|
+
var IconButtonToggle = function IconButtonToggle(props) {
|
28
|
+
var toggledIcon = props.toggledIcon,
|
29
|
+
defaultIcon = props.defaultIcon,
|
30
|
+
buttonProps = props.buttonProps,
|
31
|
+
iconProps = props.iconProps,
|
32
|
+
isToggled = props.isToggled,
|
33
|
+
onToggle = props.onToggle,
|
34
|
+
title = props.title;
|
35
|
+
var conditionalRenderProps = {
|
36
|
+
ComponentToRenderIfTrue: toggledIcon,
|
37
|
+
ComponentToRenderIfFalse: defaultIcon,
|
38
|
+
condition: isToggled,
|
39
|
+
onConditionChange: onToggle
|
40
|
+
};
|
41
|
+
|
42
|
+
var _useComponentToggle = (0, _hooks.useComponentToggle)(conditionalRenderProps),
|
43
|
+
handleConditionChange = _useComponentToggle.handleConditionChange,
|
44
|
+
RenderedComponent = _useComponentToggle.RenderedComponent;
|
45
|
+
|
46
|
+
return (0, _react2.jsx)(_IconButton["default"], (0, _extends2["default"])({
|
47
|
+
onPress: handleConditionChange
|
48
|
+
}, buttonProps, {
|
49
|
+
title: title
|
50
|
+
}), (0, _react2.jsx)(_Icon["default"], (0, _extends2["default"])({
|
51
|
+
icon: RenderedComponent
|
52
|
+
}, iconProps)));
|
53
|
+
};
|
54
|
+
|
55
|
+
IconButtonToggle.propTypes = {
|
56
|
+
/** Props object that is spread into the icon element. */
|
57
|
+
iconProps: _propTypes["default"].shape({}),
|
58
|
+
|
59
|
+
/** Props object that is spread into the button element. */
|
60
|
+
buttonProps: _propTypes["default"].shape({}),
|
61
|
+
|
62
|
+
/** The icon that will render by default. */
|
63
|
+
defaultIcon: _propTypes["default"].elementType.isRequired,
|
64
|
+
|
65
|
+
/** The icon that will render after toggling the icon. */
|
66
|
+
toggledIcon: _propTypes["default"].elementType.isRequired,
|
67
|
+
|
68
|
+
/** Whether or not the icon is toggled. (use only when controlled) */
|
69
|
+
isToggled: _propTypes["default"].bool,
|
70
|
+
|
71
|
+
/** Function that is passed into the IconButton within this component. */
|
72
|
+
onToggle: _propTypes["default"].func,
|
73
|
+
|
74
|
+
/** Content will be displayed in a tooltip on hover or focus. */
|
75
|
+
title: _propTypes["default"].string
|
76
|
+
};
|
77
|
+
var _default = IconButtonToggle;
|
78
|
+
exports["default"] = _default;
|
@@ -0,0 +1,76 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
6
|
+
|
7
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
8
|
+
|
9
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
10
|
+
|
11
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
12
|
+
|
13
|
+
_Object$defineProperty(exports, "__esModule", {
|
14
|
+
value: true
|
15
|
+
});
|
16
|
+
|
17
|
+
exports["default"] = exports.Default = exports.Controlled = void 0;
|
18
|
+
|
19
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
20
|
+
|
21
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
22
|
+
|
23
|
+
var _react = _interopRequireWildcard(require("react"));
|
24
|
+
|
25
|
+
var _EyeOutlineIcon = _interopRequireDefault(require("mdi-react/EyeOutlineIcon"));
|
26
|
+
|
27
|
+
var _EyeOffOutlineIcon = _interopRequireDefault(require("mdi-react/EyeOffOutlineIcon"));
|
28
|
+
|
29
|
+
var _ = _interopRequireDefault(require("."));
|
30
|
+
|
31
|
+
var _react2 = require("@emotion/react");
|
32
|
+
|
33
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
34
|
+
|
35
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
36
|
+
|
37
|
+
var _default = {
|
38
|
+
title: 'IconButtonToggle',
|
39
|
+
component: _["default"]
|
40
|
+
};
|
41
|
+
exports["default"] = _default;
|
42
|
+
|
43
|
+
var Default = function Default(args) {
|
44
|
+
return (0, _react2.jsx)(_["default"], (0, _extends2["default"])({}, args, {
|
45
|
+
toggledIcon: _EyeOutlineIcon["default"],
|
46
|
+
defaultIcon: _EyeOffOutlineIcon["default"],
|
47
|
+
buttonProps: {
|
48
|
+
'aria-label': 'eye icon'
|
49
|
+
}
|
50
|
+
}));
|
51
|
+
};
|
52
|
+
|
53
|
+
exports.Default = Default;
|
54
|
+
|
55
|
+
var Controlled = function Controlled(args) {
|
56
|
+
var _useState = (0, _react.useState)(false),
|
57
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
58
|
+
isToggled = _useState2[0],
|
59
|
+
onToggledChange = _useState2[1];
|
60
|
+
|
61
|
+
var handleToggleChange = function handleToggleChange() {
|
62
|
+
onToggledChange(!isToggled);
|
63
|
+
};
|
64
|
+
|
65
|
+
return (0, _react2.jsx)(_["default"], (0, _extends2["default"])({}, args, {
|
66
|
+
toggledIcon: _EyeOutlineIcon["default"],
|
67
|
+
defaultIcon: _EyeOffOutlineIcon["default"],
|
68
|
+
onToggle: handleToggleChange,
|
69
|
+
isToggled: isToggled,
|
70
|
+
buttonProps: {
|
71
|
+
'aria-label': 'eye icon'
|
72
|
+
}
|
73
|
+
}));
|
74
|
+
};
|
75
|
+
|
76
|
+
exports.Controlled = Controlled;
|
@@ -0,0 +1,60 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
6
|
+
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
8
|
+
|
9
|
+
var _EyeOutlineIcon = _interopRequireDefault(require("mdi-react/EyeOutlineIcon"));
|
10
|
+
|
11
|
+
var _EyeOffOutlineIcon = _interopRequireDefault(require("mdi-react/EyeOffOutlineIcon"));
|
12
|
+
|
13
|
+
var _testAxe = _interopRequireDefault(require("../../utils/testUtils/testAxe"));
|
14
|
+
|
15
|
+
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
16
|
+
|
17
|
+
var _ = _interopRequireDefault(require("."));
|
18
|
+
|
19
|
+
var _react2 = require("@emotion/react");
|
20
|
+
|
21
|
+
var iconTestId = 'test-icon';
|
22
|
+
|
23
|
+
var OnIcon = function OnIcon(props) {
|
24
|
+
return (0, _react2.jsx)(_EyeOutlineIcon["default"], (0, _extends2["default"])({
|
25
|
+
"data-testid": iconTestId
|
26
|
+
}, props));
|
27
|
+
};
|
28
|
+
|
29
|
+
var OffIcon = function OffIcon(props) {
|
30
|
+
return (0, _react2.jsx)(_EyeOffOutlineIcon["default"], (0, _extends2["default"])({
|
31
|
+
"data-testid": iconTestId
|
32
|
+
}, props));
|
33
|
+
};
|
34
|
+
|
35
|
+
var testId = 'test-button';
|
36
|
+
var defaultProps = {
|
37
|
+
buttonProps: {
|
38
|
+
'data-testid': testId,
|
39
|
+
'aria-label': 'Eye'
|
40
|
+
},
|
41
|
+
defaultIcon: OffIcon,
|
42
|
+
toggledIcon: OnIcon
|
43
|
+
};
|
44
|
+
|
45
|
+
var getComponent = function getComponent() {
|
46
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
47
|
+
return (0, _testWrapper.render)((0, _react2.jsx)(_["default"], (0, _extends2["default"])({}, defaultProps, props)));
|
48
|
+
}; // Need to be added to each test file to test accessibility using axe.
|
49
|
+
|
50
|
+
|
51
|
+
(0, _testAxe["default"])(getComponent);
|
52
|
+
test('default icon button', function () {
|
53
|
+
getComponent();
|
54
|
+
|
55
|
+
var button = _testWrapper.screen.getByRole('button');
|
56
|
+
|
57
|
+
expect(button).toHaveAttribute('data-testid', testId);
|
58
|
+
expect(button).toBeInstanceOf(HTMLButtonElement);
|
59
|
+
expect(button).toBeInTheDocument();
|
60
|
+
});
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
_Object$defineProperty(exports, "default", {
|
12
|
+
enumerable: true,
|
13
|
+
get: function get() {
|
14
|
+
return _IconButtonToggle["default"];
|
15
|
+
}
|
16
|
+
});
|
17
|
+
|
18
|
+
var _IconButtonToggle = _interopRequireDefault(require("./IconButtonToggle"));
|
@@ -58,6 +58,8 @@ var _MenuItem = _interopRequireDefault(require("../MenuItem"));
|
|
58
58
|
|
59
59
|
var _Box = _interopRequireDefault(require("../Box"));
|
60
60
|
|
61
|
+
var _orientation = _interopRequireDefault(require("../../utils/devUtils/constants/orientation"));
|
62
|
+
|
61
63
|
var _react2 = require("@emotion/react");
|
62
64
|
|
63
65
|
var _excluded = ["isDisabled", "onAction", "onSelectionChange", "isNotFocusedOnHover"];
|
@@ -111,7 +113,8 @@ var Menu = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
111
113
|
return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
112
114
|
as: "ul",
|
113
115
|
ref: menuRef,
|
114
|
-
variant: "menu"
|
116
|
+
variant: "menu",
|
117
|
+
"aria-orientation": _orientation["default"].VERTICAL
|
115
118
|
}, others, (0, _utils.mergeProps)(focusProps, menuProps)), (0, _map["default"])(_context = (0, _from["default"])(state.collection)).call(_context, function (item) {
|
116
119
|
return (0, _react2.jsx)(_MenuItem["default"], {
|
117
120
|
key: item.key,
|
@@ -20,6 +20,8 @@ var _testWrapper = require("../../utils/testUtils/testWrapper");
|
|
20
20
|
|
21
21
|
var _index = require("../../index");
|
22
22
|
|
23
|
+
var _orientation = _interopRequireDefault(require("../../utils/devUtils/constants/orientation"));
|
24
|
+
|
23
25
|
var _react2 = require("@emotion/react");
|
24
26
|
|
25
27
|
var testTitle = 'Test Title';
|
@@ -59,6 +61,7 @@ test('should render basic menu with children', function () {
|
|
59
61
|
var menuItems = _testWrapper.screen.queryAllByRole('menuitem');
|
60
62
|
|
61
63
|
expect(menuItems).toHaveLength(3);
|
64
|
+
expect(menu).toHaveAttribute('aria-orientation', _orientation["default"].VERTICAL);
|
62
65
|
});
|
63
66
|
test('should render items when selectionMode is set to single', function () {
|
64
67
|
getComponent({
|
package/lib/cjs/hooks/index.js
CHANGED
@@ -22,6 +22,13 @@ _Object$defineProperty(exports, "useColumnStyles", {
|
|
22
22
|
}
|
23
23
|
});
|
24
24
|
|
25
|
+
_Object$defineProperty(exports, "useComponentToggle", {
|
26
|
+
enumerable: true,
|
27
|
+
get: function get() {
|
28
|
+
return _useComponentToggle["default"];
|
29
|
+
}
|
30
|
+
});
|
31
|
+
|
25
32
|
_Object$defineProperty(exports, "useDebounce", {
|
26
33
|
enumerable: true,
|
27
34
|
get: function get() {
|
@@ -78,6 +85,13 @@ _Object$defineProperty(exports, "useOverlayPanelState", {
|
|
78
85
|
}
|
79
86
|
});
|
80
87
|
|
88
|
+
_Object$defineProperty(exports, "useProgressiveState", {
|
89
|
+
enumerable: true,
|
90
|
+
get: function get() {
|
91
|
+
return _useProgressiveState["default"];
|
92
|
+
}
|
93
|
+
});
|
94
|
+
|
81
95
|
_Object$defineProperty(exports, "usePropWarning", {
|
82
96
|
enumerable: true,
|
83
97
|
get: function get() {
|
@@ -122,6 +136,10 @@ var _useOverlayPanelState = _interopRequireDefault(require("./useOverlayPanelSta
|
|
122
136
|
|
123
137
|
var _usePropWarning = _interopRequireDefault(require("./usePropWarning"));
|
124
138
|
|
139
|
+
var _useProgressiveState = _interopRequireDefault(require("./useProgressiveState"));
|
140
|
+
|
141
|
+
var _useComponentToggle = _interopRequireDefault(require("./useComponentToggle"));
|
142
|
+
|
125
143
|
var _useNavBarPress = _interopRequireDefault(require("./useNavBarPress"));
|
126
144
|
|
127
145
|
var _useRockerButton = _interopRequireDefault(require("./useRockerButton"));
|
@@ -0,0 +1,18 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
_Object$defineProperty(exports, "default", {
|
12
|
+
enumerable: true,
|
13
|
+
get: function get() {
|
14
|
+
return _useComponentToggle["default"];
|
15
|
+
}
|
16
|
+
});
|
17
|
+
|
18
|
+
var _useComponentToggle = _interopRequireDefault(require("./useComponentToggle"));
|
@@ -0,0 +1,70 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
|
7
|
+
_Object$defineProperty(exports, "__esModule", {
|
8
|
+
value: true
|
9
|
+
});
|
10
|
+
|
11
|
+
exports["default"] = void 0;
|
12
|
+
|
13
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
14
|
+
|
15
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
16
|
+
|
17
|
+
var _index = require("../index");
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Returns one of two components that are supplied via props.
|
21
|
+
* A boolean value is used to determine which component to render.
|
22
|
+
* State can be handled by either props or within this hook if props are not provided.
|
23
|
+
* Also returns a function that inverts the boolean attribute, and calls a callback function.
|
24
|
+
* @param {Object} [props] Properties provided to the state
|
25
|
+
* @param {Boolean} [props.condition] Boolean that controls which component is returned.
|
26
|
+
* @param {Component} [props.ComponentToRenderIfTrue]
|
27
|
+
* Component that is returned when the condition is true.
|
28
|
+
* @param {Component} [props.ComponentToRenderIfFalse]
|
29
|
+
* Component that is returned when the condition is false.
|
30
|
+
* @param {Function} [props.onConditionChange]
|
31
|
+
* Callback function that is called, when the condition boolean changes, if it is provided .
|
32
|
+
* @returns {Object} `{ isOpen: Boolean, open: Function, close: Function, toggle: Function }`
|
33
|
+
* @returns {Object} `{ handleCondtionChange: Function, renderedComponent: Component, }`
|
34
|
+
*/
|
35
|
+
var useComponentToggle = function useComponentToggle() {
|
36
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
37
|
+
var ComponentToRenderIfTrue = props.ComponentToRenderIfTrue,
|
38
|
+
ComponentToRenderIfFalse = props.ComponentToRenderIfFalse,
|
39
|
+
condition = props.condition,
|
40
|
+
onConditionChange = props.onConditionChange;
|
41
|
+
|
42
|
+
var _useProgressiveState = (0, _index.useProgressiveState)(condition, function () {}),
|
43
|
+
_useProgressiveState2 = (0, _slicedToArray2["default"])(_useProgressiveState, 2),
|
44
|
+
isToggled = _useProgressiveState2[0],
|
45
|
+
setIsToggled = _useProgressiveState2[1];
|
46
|
+
|
47
|
+
var RenderedComponent = isToggled ? ComponentToRenderIfTrue : ComponentToRenderIfFalse;
|
48
|
+
|
49
|
+
var handleConditionChange = function handleConditionChange() {
|
50
|
+
setIsToggled(!isToggled);
|
51
|
+
|
52
|
+
if (onConditionChange) {
|
53
|
+
var _context;
|
54
|
+
|
55
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
56
|
+
args[_key] = arguments[_key];
|
57
|
+
}
|
58
|
+
|
59
|
+
onConditionChange.apply(void 0, (0, _concat["default"])(_context = [!isToggled]).call(_context, args));
|
60
|
+
}
|
61
|
+
};
|
62
|
+
|
63
|
+
return {
|
64
|
+
handleConditionChange: handleConditionChange,
|
65
|
+
RenderedComponent: RenderedComponent
|
66
|
+
};
|
67
|
+
};
|
68
|
+
|
69
|
+
var _default = useComponentToggle;
|
70
|
+
exports["default"] = _default;
|