@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.
Files changed (46) hide show
  1. package/lib/cjs/components/Avatar/Avatar.js +8 -3
  2. package/lib/cjs/components/Avatar/Avatar.test.js +10 -0
  3. package/lib/cjs/components/Button/Button.js +9 -3
  4. package/lib/cjs/components/CodeView/CodeView.test.js +4 -4
  5. package/lib/cjs/components/ComboBox/ComboBoxInput.js +2 -1
  6. package/lib/cjs/components/CopyText/CopyButton.js +1 -1
  7. package/lib/cjs/components/CopyText/CopyText.js +5 -1
  8. package/lib/cjs/components/CopyText/CopyText.test.js +11 -20
  9. package/lib/cjs/components/IconButtonToggle/IconButtonToggle.js +78 -0
  10. package/lib/cjs/components/IconButtonToggle/IconButtonToggle.stories.js +76 -0
  11. package/lib/cjs/components/IconButtonToggle/IconButtonToggle.test.js +60 -0
  12. package/lib/cjs/components/IconButtonToggle/index.js +18 -0
  13. package/lib/cjs/components/Menu/Menu.js +4 -1
  14. package/lib/cjs/components/Menu/Menu.test.js +3 -0
  15. package/lib/cjs/hooks/index.js +18 -0
  16. package/lib/cjs/hooks/useComponentToggle/index.js +18 -0
  17. package/lib/cjs/hooks/useComponentToggle/useComponentToggle.js +70 -0
  18. package/lib/cjs/hooks/useComponentToggle/useComponentToggle.test.js +133 -0
  19. package/lib/cjs/index.js +72 -49
  20. package/lib/cjs/recipes/OneWayToBidirectionalArrow.stories.js +160 -0
  21. package/lib/cjs/styles/variants/boxes.js +1 -0
  22. package/lib/cjs/styles/variants/buttons.js +8 -1
  23. package/lib/components/Avatar/Avatar.js +8 -3
  24. package/lib/components/Avatar/Avatar.test.js +8 -0
  25. package/lib/components/Button/Button.js +9 -3
  26. package/lib/components/CodeView/CodeView.test.js +4 -4
  27. package/lib/components/ComboBox/ComboBoxInput.js +2 -1
  28. package/lib/components/CopyText/CopyButton.js +1 -1
  29. package/lib/components/CopyText/CopyText.js +5 -1
  30. package/lib/components/CopyText/CopyText.test.js +11 -16
  31. package/lib/components/IconButtonToggle/IconButtonToggle.js +59 -0
  32. package/lib/components/IconButtonToggle/IconButtonToggle.stories.js +40 -0
  33. package/lib/components/IconButtonToggle/IconButtonToggle.test.js +46 -0
  34. package/lib/components/IconButtonToggle/index.js +1 -0
  35. package/lib/components/Menu/Menu.js +3 -1
  36. package/lib/components/Menu/Menu.test.js +2 -0
  37. package/lib/hooks/index.js +2 -0
  38. package/lib/hooks/useComponentToggle/index.js +1 -0
  39. package/lib/hooks/useComponentToggle/useComponentToggle.js +55 -0
  40. package/lib/hooks/useComponentToggle/useComponentToggle.test.js +105 -0
  41. package/lib/index.js +2 -0
  42. package/lib/recipes/OneWayToBidirectionalArrow.stories.js +137 -0
  43. package/lib/styles/variants/boxes.js +1 -0
  44. package/lib/styles/variants/buttons.js +8 -1
  45. package/package.json +1 -1
  46. 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, buttonProps)), isLoading ? (0, _react2.jsx)("span", {
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('content and copy buttons are focused with keyboard', function () {
91
+ test('copy button is focused with keyboard', function () {
92
92
  getComponent();
93
93
 
94
- var contentBtn = _testWrapper.screen.getByLabelText('copy-content');
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({
@@ -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;