@pingux/astro 2.163.1-alpha.2 → 2.163.1-alpha.4
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/LinkSelectField/LinkSelectField.js +7 -3
- package/lib/cjs/components/LinkSelectField/LinkSelectField.stories.js +20 -1
- package/lib/cjs/components/MenuItem/MenuItem.js +22 -13
- package/lib/cjs/components/MenuItem/MenuItem.styles.d.ts +1 -1
- package/lib/cjs/components/MenuItem/MenuItem.styles.js +1 -1
- package/lib/cjs/components/MenuItem/MenuItem.test.js +217 -194
- package/lib/cjs/components/MenuSection/MenuSection.js +2 -1
- package/lib/cjs/components/PopoverMenu/PopoverMenu.stories.js +57 -33
- package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +4 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.d.ts +3 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.js +3 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +1 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/menu.d.ts +15 -2
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/menu.js +20 -7
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +15 -2
- package/lib/cjs/styles/themeOverrides/onyxSideNav.d.ts +1 -0
- package/lib/cjs/styles/themes/astro/customProperties/icons.d.ts +1 -0
- package/lib/cjs/styles/themes/astro/customProperties/icons.js +1 -1
- package/lib/cjs/styles/themes/astro/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themes/astro/customProperties/index.js +3 -1
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +1 -0
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -1
- package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themes/next-gen/customProperties/index.js +3 -1
- package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +34 -2
- package/lib/cjs/styles/themes/next-gen/variants/menu.d.ts +32 -2
- package/lib/cjs/styles/themes/next-gen/variants/menu.js +39 -9
- package/lib/cjs/styles/themes/next-gen/variants/popoverMenu.d.ts +1 -0
- package/lib/cjs/styles/themes/next-gen/variants/popoverMenu.js +1 -0
- package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +33 -2
- package/lib/cjs/styles/themes/next-gen/variants/variants.js +1 -0
- package/lib/components/LinkSelectField/LinkSelectField.js +7 -3
- package/lib/components/LinkSelectField/LinkSelectField.stories.js +19 -0
- package/lib/components/MenuItem/MenuItem.js +25 -16
- package/lib/components/MenuItem/MenuItem.styles.js +1 -1
- package/lib/components/MenuItem/MenuItem.test.js +224 -201
- package/lib/components/MenuSection/MenuSection.js +2 -1
- package/lib/components/PopoverMenu/PopoverMenu.stories.js +57 -33
- package/lib/styles/themeOverrides/nextGenDarkMode/colors.js +3 -0
- package/lib/styles/themeOverrides/nextGenDarkMode/variants/menu.js +20 -7
- package/lib/styles/themes/astro/customProperties/icons.js +1 -1
- package/lib/styles/themes/astro/customProperties/index.js +3 -1
- package/lib/styles/themes/next-gen/customProperties/icons.js +1 -1
- package/lib/styles/themes/next-gen/customProperties/index.js +3 -1
- package/lib/styles/themes/next-gen/variants/menu.js +38 -8
- package/lib/styles/themes/next-gen/variants/popoverMenu.js +1 -0
- package/lib/styles/themes/next-gen/variants/variants.js +2 -1
- package/lib/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -41,17 +41,19 @@ var LinkSelectField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
|
|
|
41
41
|
isDisabled = props.isDisabled,
|
|
42
42
|
status = props.status,
|
|
43
43
|
helperText = props.helperText,
|
|
44
|
-
hasInlineLoader = props.hasInlineLoader
|
|
44
|
+
hasInlineLoader = props.hasInlineLoader,
|
|
45
|
+
popoverWidth = props.popoverWidth;
|
|
45
46
|
var _getAriaAttributeProp = (0, _ariaAttributes.getAriaAttributeProps)(props),
|
|
46
47
|
ariaProps = _getAriaAttributeProp.ariaProps;
|
|
47
48
|
var _useGetTheme = (0, _hooks.useGetTheme)(),
|
|
49
|
+
linkSelectFieldWidth = _useGetTheme.linkSelectFieldWidth,
|
|
48
50
|
themeState = _useGetTheme.themeState;
|
|
49
51
|
var isOnyx = themeState.isOnyx;
|
|
50
52
|
var helperTextId = (0, _uuid.v4)();
|
|
51
53
|
(0, _hooks.usePropWarning)(props, 'disabled', 'isDisabled');
|
|
52
54
|
var _useSelectField = (0, _hooks.useSelectField)(_objectSpread(_objectSpread({
|
|
53
55
|
listboxStyle: {
|
|
54
|
-
width:
|
|
56
|
+
width: popoverWidth || linkSelectFieldWidth
|
|
55
57
|
}
|
|
56
58
|
}, props), {}, {
|
|
57
59
|
// Need this for not applying is-default class
|
|
@@ -162,7 +164,9 @@ LinkSelectField.propTypes = _objectSpread(_objectSpread(_objectSpread({
|
|
|
162
164
|
*/
|
|
163
165
|
onSelectionChange: _propTypes["default"].func,
|
|
164
166
|
/** Display an inline loader inside the select trigger while loading. */
|
|
165
|
-
hasInlineLoader: _propTypes["default"].bool
|
|
167
|
+
hasInlineLoader: _propTypes["default"].bool,
|
|
168
|
+
/** Width of the popover menu. Accepts any valid CSS unit. */
|
|
169
|
+
popoverWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
|
|
166
170
|
}, _statusProp.statusPropTypes), _fieldAttributes.inputFieldAttributesBasePropTypes), _ariaAttributes.ariaAttributesBasePropTypes);
|
|
167
171
|
LinkSelectField.defaultProps = _objectSpread({
|
|
168
172
|
placeholder: 'Select',
|
|
@@ -20,7 +20,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
20
20
|
_Object$defineProperty(exports, "__esModule", {
|
|
21
21
|
value: true
|
|
22
22
|
});
|
|
23
|
-
exports["default"] = exports.WithNoneOption = exports.NoOptionsAvailable = exports.LeftLabel = exports.HelperText = exports.DynamicItems = exports.DisabledOptions = exports.DisabledField = exports.Default = exports.Controlled = exports.AsyncLoading = void 0;
|
|
23
|
+
exports["default"] = exports.WithPopoverWidth = exports.WithNoneOption = exports.NoOptionsAvailable = exports.LeftLabel = exports.HelperText = exports.DynamicItems = exports.DisabledOptions = exports.DisabledField = exports.Default = exports.Controlled = exports.AsyncLoading = void 0;
|
|
24
24
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
25
25
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
26
26
|
var _fill = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/fill"));
|
|
@@ -324,4 +324,23 @@ var AsyncLoading = exports.AsyncLoading = function AsyncLoading() {
|
|
|
324
324
|
key: item.id
|
|
325
325
|
}, item.name.given);
|
|
326
326
|
}));
|
|
327
|
+
};
|
|
328
|
+
var WithPopoverWidth = exports.WithPopoverWidth = function WithPopoverWidth(args) {
|
|
329
|
+
return (0, _react2.jsx)(_reactAria.OverlayProvider, null, (0, _react2.jsx)(_index.LinkSelectField, (0, _extends2["default"])({}, args, {
|
|
330
|
+
width: "100%",
|
|
331
|
+
popoverWidth: "20rem"
|
|
332
|
+
}), (0, _react2.jsx)(_index.Item, {
|
|
333
|
+
key: "red"
|
|
334
|
+
}, "Red"), (0, _react2.jsx)(_index.Item, {
|
|
335
|
+
key: "blue"
|
|
336
|
+
}, "Blue"), (0, _react2.jsx)(_index.Item, {
|
|
337
|
+
key: "yellow"
|
|
338
|
+
}, "Extra long goes here")));
|
|
339
|
+
};
|
|
340
|
+
WithPopoverWidth.parameters = {
|
|
341
|
+
docs: {
|
|
342
|
+
description: {
|
|
343
|
+
story: 'The `popoverWidth` prop can be used to set a custom width for the dropdown/popover.'
|
|
344
|
+
}
|
|
345
|
+
}
|
|
327
346
|
};
|
|
@@ -10,12 +10,14 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
10
10
|
});
|
|
11
11
|
exports["default"] = void 0;
|
|
12
12
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
13
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
14
13
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
|
15
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
16
15
|
var _reactAria = require("react-aria");
|
|
16
|
+
var _CheckIcon = _interopRequireDefault(require("@pingux/mdi-react/CheckIcon"));
|
|
17
|
+
var _focus = require("@react-aria/focus");
|
|
17
18
|
var _interactions = require("@react-aria/interactions");
|
|
18
19
|
var _uuid = require("uuid");
|
|
20
|
+
var _ = require("../..");
|
|
19
21
|
var _MenuContext = require("../../context/MenuContext");
|
|
20
22
|
var _hooks = require("../../hooks");
|
|
21
23
|
var _Box = _interopRequireDefault(require("../Box"));
|
|
@@ -31,7 +33,6 @@ var MenuItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
31
33
|
var _item$key;
|
|
32
34
|
var item = props.item,
|
|
33
35
|
isPropDisabled = props.isDisabled,
|
|
34
|
-
isFocusVisible = props.isFocusVisible,
|
|
35
36
|
isNotFocusedOnHover = props.isNotFocusedOnHover,
|
|
36
37
|
className = props.className,
|
|
37
38
|
state = props.state;
|
|
@@ -59,10 +60,6 @@ var MenuItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
59
60
|
closeOnSelect: shouldCloseOnSelect
|
|
60
61
|
}, state, menuItemRef),
|
|
61
62
|
menuItemProps = _useMenuItem.menuItemProps;
|
|
62
|
-
var _useState = (0, _react.useState)(false),
|
|
63
|
-
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
64
|
-
isFocused = _useState2[0],
|
|
65
|
-
setFocused = _useState2[1];
|
|
66
63
|
var _usePress = (0, _interactions.usePress)({
|
|
67
64
|
ref: menuItemRef,
|
|
68
65
|
isDisabled: isDisabled,
|
|
@@ -70,34 +67,46 @@ var MenuItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
|
70
67
|
}),
|
|
71
68
|
pressProps = _usePress.pressProps,
|
|
72
69
|
isPressed = _usePress.isPressed;
|
|
73
|
-
var
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
focusProps = _useFocus.focusProps;
|
|
70
|
+
var _useFocusRing = (0, _focus.useFocusRing)(),
|
|
71
|
+
focusProps = _useFocusRing.focusProps,
|
|
72
|
+
isFocusVisible = _useFocusRing.isFocusVisible;
|
|
77
73
|
var _useHover = (0, _interactions.useHover)({
|
|
78
74
|
isDisabled: isDisabled
|
|
79
75
|
}),
|
|
80
76
|
hoverProps = _useHover.hoverProps,
|
|
81
77
|
isHovered = _useHover.isHovered;
|
|
82
78
|
var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
|
|
83
|
-
isFocused:
|
|
79
|
+
isFocused: isFocusVisible && !isNotFocusedOnHover,
|
|
84
80
|
isDisabled: isDisabled,
|
|
85
81
|
isSelected: isSelected,
|
|
86
|
-
isPressed: isPressed
|
|
82
|
+
isPressed: isPressed,
|
|
83
|
+
isHovered: isHovered
|
|
87
84
|
}),
|
|
88
85
|
classNames = _useStatusClasses.classNames;
|
|
89
86
|
if (isNotFocusedOnHover) {
|
|
90
87
|
delete menuItemProps.onPointerEnter;
|
|
91
88
|
delete menuItemProps.onPointerLeave;
|
|
92
89
|
}
|
|
90
|
+
var _useGetTheme = (0, _hooks.useGetTheme)(),
|
|
91
|
+
isOnyx = _useGetTheme.themeState.isOnyx;
|
|
93
92
|
return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
|
94
93
|
as: "li",
|
|
94
|
+
isRow: true,
|
|
95
|
+
alignItems: "center",
|
|
96
|
+
justifyContent: "space-between",
|
|
95
97
|
className: classNames,
|
|
96
98
|
ref: menuItemRef,
|
|
97
99
|
variant: isSeparator ? 'menuItem.separator' : 'menuItem.item',
|
|
98
100
|
"data-id": dataId,
|
|
99
101
|
"aria-disabled": isDisabled
|
|
100
|
-
}, (0, _reactAria.mergeProps)(pressProps, hoverProps, focusProps, menuItemProps, others)), rendered)
|
|
102
|
+
}, (0, _reactAria.mergeProps)(pressProps, hoverProps, focusProps, menuItemProps, others)), rendered, isSelected && isOnyx && (0, _react2.jsx)(_.Icon, {
|
|
103
|
+
icon: _CheckIcon["default"],
|
|
104
|
+
title: {
|
|
105
|
+
name: 'Check Icon'
|
|
106
|
+
},
|
|
107
|
+
color: "success.bright",
|
|
108
|
+
size: "sm"
|
|
109
|
+
}));
|
|
101
110
|
});
|
|
102
111
|
MenuItem.displayName = 'MenuItem';
|
|
103
112
|
MenuItem.defaultProps = {
|
|
@@ -9,23 +9,34 @@ var _forEachInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/i
|
|
|
9
9
|
var _Object$setPrototypeOf = require("@babel/runtime-corejs3/core-js-stable/object/set-prototype-of");
|
|
10
10
|
var _Promise = require("@babel/runtime-corejs3/core-js-stable/promise");
|
|
11
11
|
var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
|
|
12
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
13
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
14
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
15
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
16
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
17
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
12
18
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
19
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
13
20
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
14
21
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
15
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
|
16
22
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
17
23
|
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
18
24
|
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
19
25
|
var _react = _interopRequireDefault(require("react"));
|
|
20
26
|
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
|
27
|
+
var _hooks = require("../../hooks");
|
|
21
28
|
var _index = require("../../index");
|
|
22
29
|
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
|
23
|
-
var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
|
|
24
30
|
var _react2 = require("@emotion/react");
|
|
25
|
-
var
|
|
26
|
-
|
|
31
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
32
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context7, _context8; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty2(_context7 = ownKeys(Object(t), !0)).call(_context7, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty2(_context8 = ownKeys(Object(t))).call(_context8, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
27
33
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return r; }; var t, r = {}, e = Object.prototype, n = e.hasOwnProperty, o = "function" == typeof _Symbol ? _Symbol : {}, i = o.iterator || "@@iterator", a = o.asyncIterator || "@@asyncIterator", u = o.toStringTag || "@@toStringTag"; function c(t, r, e, n) { return _Object$defineProperty(t, r, { value: e, enumerable: !n, configurable: !n, writable: !n }); } try { c({}, ""); } catch (t) { c = function c(t, r, e) { return t[r] = e; }; } function h(r, e, n, o) { var i = e && e.prototype instanceof Generator ? e : Generator, a = _Object$create(i.prototype); return c(a, "_invoke", function (r, e, n) { var o = 1; return function (i, a) { if (3 === o) throw Error("Generator is already running"); if (4 === o) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var u = n.delegate; if (u) { var c = d(u, n); if (c) { if (c === f) continue; return c; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (1 === o) throw o = 4, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = 3; var h = s(r, e, n); if ("normal" === h.type) { if (o = n.done ? 4 : 2, h.arg === f) continue; return { value: h.arg, done: n.done }; } "throw" === h.type && (o = 4, n.method = "throw", n.arg = h.arg); } }; }(r, n, new Context(o || [])), !0), a; } function s(t, r, e) { try { return { type: "normal", arg: t.call(r, e) }; } catch (t) { return { type: "throw", arg: t }; } } r.wrap = h; var f = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var l = {}; c(l, i, function () { return this; }); var p = _Object$getPrototypeOf, y = p && p(p(x([]))); y && y !== e && n.call(y, i) && (l = y); var v = GeneratorFunctionPrototype.prototype = Generator.prototype = _Object$create(l); function g(t) { var _context5; _forEachInstanceProperty2(_context5 = ["next", "throw", "return"]).call(_context5, function (r) { c(t, r, function (t) { return this._invoke(r, t); }); }); } function AsyncIterator(t, r) { function e(o, i, a, u) { var c = s(t[o], t, i); if ("throw" !== c.type) { var h = c.arg, f = h.value; return f && "object" == _typeof(f) && n.call(f, "__await") ? r.resolve(f.__await).then(function (t) { e("next", t, a, u); }, function (t) { e("throw", t, a, u); }) : r.resolve(f).then(function (t) { h.value = t, a(h); }, function (t) { return e("throw", t, a, u); }); } u(c.arg); } var o; c(this, "_invoke", function (t, n) { function i() { return new r(function (r, o) { e(t, n, r, o); }); } return o = o ? o.then(i, i) : i(); }, !0); } function d(r, e) { var n = e.method, o = r.i[n]; if (o === t) return e.delegate = null, "throw" === n && r.i["return"] && (e.method = "return", e.arg = t, d(r, e), "throw" === e.method) || "return" !== n && (e.method = "throw", e.arg = new TypeError("The iterator does not provide a '" + n + "' method")), f; var i = s(o, r.i, e.arg); if ("throw" === i.type) return e.method = "throw", e.arg = i.arg, e.delegate = null, f; var a = i.arg; return a ? a.done ? (e[r.r] = a.value, e.next = r.n, "return" !== e.method && (e.method = "next", e.arg = t), e.delegate = null, f) : a : (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, f); } function w(t) { this.tryEntries.push(t); } function m(r) { var e = r[4] || {}; e.type = "normal", e.arg = t, r[4] = e; } function Context(t) { this.tryEntries = [[-1]], _forEachInstanceProperty2(t).call(t, w, this), this.reset(!0); } function x(r) { if (null != r) { var e = r[i]; if (e) return e.call(r); if ("function" == typeof r.next) return r; if (!isNaN(r.length)) { var o = -1, a = function e() { for (; ++o < r.length;) if (n.call(r, o)) return e.value = r[o], e.done = !1, e; return e.value = t, e.done = !0, e; }; return a.next = a; } } throw new TypeError(_typeof(r) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, c(v, "constructor", GeneratorFunctionPrototype), c(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = c(GeneratorFunctionPrototype, u, "GeneratorFunction"), r.isGeneratorFunction = function (t) { var r = "function" == typeof t && t.constructor; return !!r && (r === GeneratorFunction || "GeneratorFunction" === (r.displayName || r.name)); }, r.mark = function (t) { return _Object$setPrototypeOf ? _Object$setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, c(t, u, "GeneratorFunction")), t.prototype = _Object$create(v), t; }, r.awrap = function (t) { return { __await: t }; }, g(AsyncIterator.prototype), c(AsyncIterator.prototype, a, function () { return this; }), r.AsyncIterator = AsyncIterator, r.async = function (t, e, n, o, i) { void 0 === i && (i = _Promise); var a = new AsyncIterator(h(t, e, n, o), i); return r.isGeneratorFunction(e) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, g(v), c(v, u, "Generator"), c(v, i, function () { return this; }), c(v, "toString", function () { return "[object Generator]"; }), r.keys = function (t) { var r = Object(t), e = []; for (var n in r) e.unshift(n); return function t() { for (; e.length;) if ((n = e.pop()) in r) return t.value = n, t.done = !1, t; return t.done = !0, t; }; }, r.values = x, Context.prototype = { constructor: Context, reset: function reset(r) { var _context6; if (this.prev = this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, _forEachInstanceProperty2(_context6 = this.tryEntries).call(_context6, m), !r) for (var e in this) "t" === e.charAt(0) && n.call(this, e) && !isNaN(+_sliceInstanceProperty(e).call(e, 1)) && (this[e] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0][4]; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(r) { if (this.done) throw r; var e = this; function n(t) { a.type = "throw", a.arg = r, e.next = t; } for (var o = e.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i[4], u = this.prev, c = i[1], h = i[2]; if (-1 === i[0]) return n("end"), !1; if (!c && !h) throw Error("try statement without catch or finally"); if (null != i[0] && i[0] <= u) { if (u < c) return this.method = "next", this.arg = t, n(c), !0; if (u < h) return n(h), !1; } } }, abrupt: function abrupt(t, r) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var n = this.tryEntries[e]; if (n[0] > -1 && n[0] <= this.prev && this.prev < n[2]) { var o = n; break; } } o && ("break" === t || "continue" === t) && o[0] <= r && r <= o[2] && (o = null); var i = o ? o[4] : {}; return i.type = t, i.arg = r, o ? (this.method = "next", this.next = o[2], f) : this.complete(i); }, complete: function complete(t, r) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && r && (this.next = r), f; }, finish: function finish(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[2] === t) return this.complete(e[4], e[3]), m(e), f; } }, "catch": function _catch(t) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var e = this.tryEntries[r]; if (e[0] === t) { var n = e[4]; if ("throw" === n.type) { var o = n.arg; m(e); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(r, e, n) { return this.delegate = { i: x(r), r: e, n: n }, "next" === this.method && (this.arg = t), f; } }, r; }
|
|
28
34
|
var testId = 'testId';
|
|
35
|
+
var mockTheme = {
|
|
36
|
+
themeState: {
|
|
37
|
+
isOnyx: false
|
|
38
|
+
}
|
|
39
|
+
};
|
|
29
40
|
var defaultMenuItems = [{
|
|
30
41
|
key: 'MenuItem 1',
|
|
31
42
|
children: 'MenuItem 1',
|
|
@@ -55,208 +66,220 @@ var getComponent = function getComponent() {
|
|
|
55
66
|
_ref$renderFn = _ref.renderFn,
|
|
56
67
|
renderFn = _ref$renderFn === void 0 ? _testWrapper.render : _ref$renderFn;
|
|
57
68
|
return renderFn((0, _react2.jsx)(_index.Menu, (0, _extends2["default"])({}, defaultProps, props), (0, _map["default"])(items).call(items, function (li) {
|
|
58
|
-
|
|
59
|
-
itemProps = (0, _objectWithoutProperties2["default"])(li, _excluded);
|
|
60
|
-
return (0, _react2.jsx)(_index.Item, (0, _extends2["default"])({
|
|
61
|
-
key: key
|
|
62
|
-
}, itemProps, {
|
|
69
|
+
return (0, _react2.jsx)(_index.Item, (0, _extends2["default"])({}, li, {
|
|
63
70
|
sx: {
|
|
64
71
|
backgroundColor: 'orange'
|
|
65
72
|
}
|
|
66
73
|
}));
|
|
67
74
|
})));
|
|
68
75
|
};
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
var key = li.key,
|
|
75
|
-
itemProps = (0, _objectWithoutProperties2["default"])(li, _excluded2);
|
|
76
|
-
return (0, _react2.jsx)(_index.Item, (0, _extends2["default"])({
|
|
77
|
-
key: key
|
|
78
|
-
}, itemProps, {
|
|
79
|
-
sx: {
|
|
80
|
-
backgroundColor: 'orange'
|
|
81
|
-
}
|
|
82
|
-
}));
|
|
83
|
-
}));
|
|
84
|
-
}
|
|
76
|
+
jest.mock('../../hooks/useGetTheme', function () {
|
|
77
|
+
return {
|
|
78
|
+
__esModule: true,
|
|
79
|
+
"default": jest.fn()
|
|
80
|
+
};
|
|
85
81
|
});
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
expect(menu).toBeInTheDocument();
|
|
91
|
-
expect(menuItems).toHaveLength(menuItems.length);
|
|
92
|
-
(0, _forEach["default"])(menuItems).call(menuItems, function (item) {
|
|
93
|
-
return expect(item).toBeInTheDocument();
|
|
82
|
+
describe('MenuItem', function () {
|
|
83
|
+
beforeEach(function () {
|
|
84
|
+
jest.clearAllMocks();
|
|
85
|
+
_hooks.useGetTheme.mockReturnValue(mockTheme);
|
|
94
86
|
});
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
expect(menuItem).not.toHaveFocus();
|
|
105
|
-
expect(menuItem).not.toHaveClass('is-focused');
|
|
106
|
-
_context.next = 7;
|
|
107
|
-
return _userEvent["default"].tab();
|
|
108
|
-
case 7:
|
|
109
|
-
expect(menuItem).toHaveFocus();
|
|
110
|
-
expect(menuItem).toHaveClass('is-focused');
|
|
111
|
-
case 9:
|
|
112
|
-
case "end":
|
|
113
|
-
return _context.stop();
|
|
114
|
-
}
|
|
115
|
-
}, _callee);
|
|
116
|
-
})));
|
|
117
|
-
test('can arrow through menuItems', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
118
|
-
var itemText1, itemText2, menuItem1, menuItem2;
|
|
119
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
120
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
121
|
-
case 0:
|
|
122
|
-
getComponent();
|
|
123
|
-
itemText1 = defaultMenuItems[0].children;
|
|
124
|
-
itemText2 = defaultMenuItems[1].children;
|
|
125
|
-
menuItem1 = _testWrapper.screen.getByText(itemText1);
|
|
126
|
-
menuItem2 = _testWrapper.screen.getByText(itemText2);
|
|
127
|
-
expect(menuItem1).not.toHaveFocus();
|
|
128
|
-
expect(menuItem1).not.toHaveClass('is-focused');
|
|
129
|
-
_context2.next = 9;
|
|
130
|
-
return _userEvent["default"].tab();
|
|
131
|
-
case 9:
|
|
132
|
-
expect(menuItem1).toHaveFocus();
|
|
133
|
-
expect(menuItem1).toHaveClass('is-focused');
|
|
134
|
-
_testWrapper.fireEvent.keyDown(menuItem1, {
|
|
135
|
-
key: 'ArrowDown',
|
|
136
|
-
code: 'ArrowDown'
|
|
137
|
-
});
|
|
138
|
-
expect(menuItem2).toHaveFocus();
|
|
139
|
-
expect(menuItem2).toHaveClass('is-focused');
|
|
140
|
-
case 14:
|
|
141
|
-
case "end":
|
|
142
|
-
return _context2.stop();
|
|
143
|
-
}
|
|
144
|
-
}, _callee2);
|
|
145
|
-
})));
|
|
146
|
-
test('hovering menuItems applies focus class and removes focus style on unhover with "isNotFocusedOnHover"', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
147
|
-
var itemText1, menuItem1;
|
|
148
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
149
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
150
|
-
case 0:
|
|
151
|
-
getComponent({
|
|
152
|
-
isNotFocusedOnHover: true
|
|
153
|
-
});
|
|
154
|
-
itemText1 = defaultMenuItems[0].children;
|
|
155
|
-
menuItem1 = _testWrapper.screen.getByText(itemText1);
|
|
156
|
-
expect(menuItem1).not.toHaveClass('is-focused');
|
|
157
|
-
_context3.next = 6;
|
|
158
|
-
return _userEvent["default"].hover(menuItem1);
|
|
159
|
-
case 6:
|
|
160
|
-
expect(menuItem1).toHaveClass('is-focused');
|
|
161
|
-
_context3.next = 9;
|
|
162
|
-
return _userEvent["default"].unhover(menuItem1);
|
|
163
|
-
case 9:
|
|
164
|
-
expect(menuItem1).not.toHaveClass('is-focused');
|
|
165
|
-
case 10:
|
|
166
|
-
case "end":
|
|
167
|
-
return _context3.stop();
|
|
168
|
-
}
|
|
169
|
-
}, _callee3);
|
|
170
|
-
})));
|
|
171
|
-
test('hovering menuItems applies focus class and leaves focus style on unhover', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
172
|
-
var itemText1, itemText2, menuItem1, menuItem2;
|
|
173
|
-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
174
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
175
|
-
case 0:
|
|
176
|
-
getComponent();
|
|
177
|
-
itemText1 = defaultMenuItems[0].children;
|
|
178
|
-
itemText2 = defaultMenuItems[1].children;
|
|
179
|
-
menuItem1 = _testWrapper.screen.getByText(itemText1);
|
|
180
|
-
menuItem2 = _testWrapper.screen.getByText(itemText2);
|
|
181
|
-
expect(menuItem1).not.toHaveClass('is-focused');
|
|
182
|
-
expect(menuItem2).not.toHaveClass('is-focused');
|
|
183
|
-
_context4.next = 9;
|
|
184
|
-
return _userEvent["default"].hover(menuItem1);
|
|
185
|
-
case 9:
|
|
186
|
-
expect(menuItem1).toHaveClass('is-focused');
|
|
187
|
-
_context4.next = 12;
|
|
188
|
-
return _userEvent["default"].hover(menuItem2);
|
|
189
|
-
case 12:
|
|
190
|
-
expect(menuItem2).toHaveClass('is-focused');
|
|
191
|
-
_context4.next = 15;
|
|
192
|
-
return _userEvent["default"].unhover(menuItem2);
|
|
193
|
-
case 15:
|
|
194
|
-
expect(menuItem2).toHaveClass('is-focused');
|
|
195
|
-
case 16:
|
|
196
|
-
case "end":
|
|
197
|
-
return _context4.stop();
|
|
198
|
-
}
|
|
199
|
-
}, _callee4);
|
|
200
|
-
})));
|
|
201
|
-
test('disables item with isDisabled applied, does not disable without prop', function () {
|
|
202
|
-
getComponent({
|
|
203
|
-
disabledKeys: [defaultMenuItems[0].key]
|
|
87
|
+
test('renders menu with menu items', function () {
|
|
88
|
+
getComponent();
|
|
89
|
+
var menu = _testWrapper.screen.getByRole('menu');
|
|
90
|
+
var menuItems = _testWrapper.screen.getAllByRole('menuitem');
|
|
91
|
+
expect(menu).toBeInTheDocument();
|
|
92
|
+
expect(menuItems).toHaveLength(menuItems.length);
|
|
93
|
+
(0, _forEach["default"])(menuItems).call(menuItems, function (item) {
|
|
94
|
+
return expect(item).toBeInTheDocument();
|
|
95
|
+
});
|
|
204
96
|
});
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
97
|
+
test('applies focus when tabbed to', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
98
|
+
var itemText, menuItem;
|
|
99
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
100
|
+
while (1) switch (_context.prev = _context.next) {
|
|
101
|
+
case 0:
|
|
102
|
+
getComponent();
|
|
103
|
+
itemText = defaultMenuItems[0].children;
|
|
104
|
+
menuItem = _testWrapper.screen.getByText(itemText);
|
|
105
|
+
expect(menuItem).not.toHaveFocus();
|
|
106
|
+
expect(menuItem).not.toHaveClass('is-focused');
|
|
107
|
+
_context.next = 7;
|
|
108
|
+
return _userEvent["default"].tab();
|
|
109
|
+
case 7:
|
|
110
|
+
expect(menuItem).toHaveFocus();
|
|
111
|
+
expect(menuItem).toHaveClass('is-focused');
|
|
112
|
+
case 9:
|
|
113
|
+
case "end":
|
|
114
|
+
return _context.stop();
|
|
115
|
+
}
|
|
116
|
+
}, _callee);
|
|
117
|
+
})));
|
|
118
|
+
test('can arrow through menuItems', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
119
|
+
var itemText1, itemText2, menuItem1, menuItem2;
|
|
120
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
121
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
122
|
+
case 0:
|
|
123
|
+
getComponent();
|
|
124
|
+
itemText1 = defaultMenuItems[0].children;
|
|
125
|
+
itemText2 = defaultMenuItems[1].children;
|
|
126
|
+
menuItem1 = _testWrapper.screen.getByText(itemText1);
|
|
127
|
+
menuItem2 = _testWrapper.screen.getByText(itemText2);
|
|
128
|
+
expect(menuItem1).not.toHaveFocus();
|
|
129
|
+
expect(menuItem1).not.toHaveClass('is-focused');
|
|
130
|
+
_context2.next = 9;
|
|
131
|
+
return _userEvent["default"].tab();
|
|
132
|
+
case 9:
|
|
133
|
+
expect(menuItem1).toHaveFocus();
|
|
134
|
+
expect(menuItem1).toHaveClass('is-focused');
|
|
135
|
+
_testWrapper.fireEvent.keyDown(menuItem1, {
|
|
136
|
+
key: 'ArrowDown',
|
|
137
|
+
code: 'ArrowDown'
|
|
138
|
+
});
|
|
139
|
+
expect(menuItem2).toHaveFocus();
|
|
140
|
+
expect(menuItem2).toHaveClass('is-focused');
|
|
141
|
+
case 14:
|
|
142
|
+
case "end":
|
|
143
|
+
return _context2.stop();
|
|
144
|
+
}
|
|
145
|
+
}, _callee2);
|
|
146
|
+
})));
|
|
147
|
+
test('hovering menuItems applies hover class and removes hover style on unhover with "isNotFocusedOnHover"', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
148
|
+
var itemText1, menuItem1;
|
|
149
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
150
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
151
|
+
case 0:
|
|
152
|
+
getComponent({
|
|
153
|
+
isNotFocusedOnHover: true
|
|
154
|
+
});
|
|
155
|
+
itemText1 = defaultMenuItems[0].children;
|
|
156
|
+
menuItem1 = _testWrapper.screen.getByText(itemText1);
|
|
157
|
+
expect(menuItem1).not.toHaveClass('is-hovered');
|
|
158
|
+
_context3.next = 6;
|
|
159
|
+
return _userEvent["default"].hover(menuItem1);
|
|
160
|
+
case 6:
|
|
161
|
+
expect(menuItem1).toHaveClass('is-hovered');
|
|
162
|
+
_context3.next = 9;
|
|
163
|
+
return _userEvent["default"].unhover(menuItem1);
|
|
164
|
+
case 9:
|
|
165
|
+
expect(menuItem1).not.toHaveClass('is-hovered');
|
|
166
|
+
case 10:
|
|
167
|
+
case "end":
|
|
168
|
+
return _context3.stop();
|
|
169
|
+
}
|
|
170
|
+
}, _callee3);
|
|
171
|
+
})));
|
|
172
|
+
test('hovering menuItems applies hover class and leaves hover style on unhover', /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
173
|
+
var itemText1, itemText2, menuItem1, menuItem2;
|
|
174
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
175
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
176
|
+
case 0:
|
|
177
|
+
getComponent();
|
|
178
|
+
itemText1 = defaultMenuItems[0].children;
|
|
179
|
+
itemText2 = defaultMenuItems[1].children;
|
|
180
|
+
menuItem1 = _testWrapper.screen.getByText(itemText1);
|
|
181
|
+
menuItem2 = _testWrapper.screen.getByText(itemText2);
|
|
182
|
+
expect(menuItem1).not.toHaveClass('is-hovered');
|
|
183
|
+
expect(menuItem2).not.toHaveClass('is-hovered');
|
|
184
|
+
_context4.next = 9;
|
|
185
|
+
return _userEvent["default"].hover(menuItem1);
|
|
186
|
+
case 9:
|
|
187
|
+
expect(menuItem1).toHaveClass('is-hovered');
|
|
188
|
+
_context4.next = 12;
|
|
189
|
+
return _userEvent["default"].hover(menuItem2);
|
|
190
|
+
case 12:
|
|
191
|
+
expect(menuItem2).toHaveClass('is-hovered');
|
|
192
|
+
_context4.next = 15;
|
|
193
|
+
return _userEvent["default"].unhover(menuItem2);
|
|
194
|
+
case 15:
|
|
195
|
+
expect(menuItem2).not.toHaveClass('is-hovered');
|
|
196
|
+
case 16:
|
|
197
|
+
case "end":
|
|
198
|
+
return _context4.stop();
|
|
199
|
+
}
|
|
200
|
+
}, _callee4);
|
|
201
|
+
})));
|
|
202
|
+
test('disables item with isDisabled applied, does not disable without prop', function () {
|
|
203
|
+
getComponent({
|
|
204
|
+
disabledKeys: [defaultMenuItems[0].key]
|
|
205
|
+
});
|
|
206
|
+
var disbaledItemText = defaultMenuItems[0].children;
|
|
207
|
+
var disabledMenuItem = _testWrapper.screen.getByText(disbaledItemText);
|
|
208
|
+
expect(disabledMenuItem).toHaveClass('is-disabled');
|
|
209
|
+
var menuItemText = defaultMenuItems[1].children;
|
|
210
|
+
var menuItem = _testWrapper.screen.getByText(menuItemText);
|
|
211
|
+
expect(menuItem).not.toHaveClass('is-disabled');
|
|
217
212
|
});
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
213
|
+
test('should change styles according to isPressed prop', function () {
|
|
214
|
+
var customItems = (0, _from["default"])(defaultMenuItems);
|
|
215
|
+
customItems[0].isPressed = true;
|
|
216
|
+
getComponent({}, {
|
|
217
|
+
items: customItems
|
|
218
|
+
});
|
|
219
|
+
var pressedItem = _testWrapper.screen.getAllByRole('menuitem')[0];
|
|
220
|
+
var regularItem = _testWrapper.screen.getAllByRole('menuitem')[1];
|
|
221
|
+
expect(pressedItem).toHaveClass('is-pressed');
|
|
222
|
+
expect(regularItem).not.toHaveClass('is-pressed');
|
|
227
223
|
});
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
224
|
+
test('applies selected styling with isSelected prop, does not add class without prop', function () {
|
|
225
|
+
getComponent({
|
|
226
|
+
selectionMode: 'single',
|
|
227
|
+
defaultSelectedKeys: [defaultMenuItems[0].key]
|
|
228
|
+
});
|
|
229
|
+
var selectedItemText = defaultMenuItems[0].children;
|
|
230
|
+
var selectedMenuItem = _testWrapper.screen.getByText(selectedItemText);
|
|
231
|
+
expect(selectedMenuItem).toHaveClass('is-selected');
|
|
232
|
+
var menuItemText = defaultMenuItems[1].children;
|
|
233
|
+
var menuItem = _testWrapper.screen.getByText(menuItemText);
|
|
234
|
+
expect(menuItem).not.toHaveClass('is-selected');
|
|
235
|
+
});
|
|
236
|
+
test('Item accepts a data-id and the data-id can be found in the DOM', function () {
|
|
237
|
+
getComponent();
|
|
238
|
+
var menuItems = _testWrapper.screen.queryAllByRole('menuitem');
|
|
239
|
+
expect(menuItems).toHaveLength(defaultMenuItems.length);
|
|
240
|
+
expect(menuItems[0]).toHaveAttribute('data-id', defaultMenuItems[0]['data-id']);
|
|
241
|
+
});
|
|
242
|
+
test('custom props are passed into menuItem', function () {
|
|
243
|
+
getComponent();
|
|
244
|
+
var itemText1 = defaultMenuItems[0].children;
|
|
245
|
+
var menuItem1 = _testWrapper.screen.getByText(itemText1);
|
|
246
|
+
expect(menuItem1).toHaveStyleRule('background-color', 'orange');
|
|
247
|
+
});
|
|
248
|
+
test('Selection mode given as single', function () {
|
|
249
|
+
getComponent({
|
|
250
|
+
selectionMode: 'single',
|
|
251
|
+
defaultSelectedKeys: [defaultMenuItems[0].key]
|
|
252
|
+
});
|
|
253
|
+
var menuItems = _testWrapper.screen.queryAllByRole('menuitemradio');
|
|
254
|
+
expect(menuItems).toHaveLength(defaultMenuItems.length);
|
|
255
|
+
});
|
|
256
|
+
test('Selection mode given as multiple', function () {
|
|
257
|
+
getComponent({
|
|
258
|
+
selectionMode: 'multiple',
|
|
259
|
+
defaultSelectedKeys: [defaultMenuItems[0].key]
|
|
260
|
+
});
|
|
261
|
+
var menuItems = _testWrapper.screen.queryAllByRole('menuitemcheckbox');
|
|
262
|
+
expect(menuItems).toHaveLength(defaultMenuItems.length);
|
|
251
263
|
});
|
|
252
|
-
var menuItems = _testWrapper.screen.queryAllByRole('menuitemradio');
|
|
253
|
-
expect(menuItems).toHaveLength(defaultMenuItems.length);
|
|
254
264
|
});
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
265
|
+
describe('MenuItem', function () {
|
|
266
|
+
beforeEach(function () {
|
|
267
|
+
jest.clearAllMocks();
|
|
268
|
+
_hooks.useGetTheme.mockReturnValue(_objectSpread(_objectSpread({}, mockTheme), {}, {
|
|
269
|
+
themeState: {
|
|
270
|
+
isOnyx: true
|
|
271
|
+
}
|
|
272
|
+
}));
|
|
273
|
+
});
|
|
274
|
+
test('checkmark icon is shown when item is selected and theme is onyx', function () {
|
|
275
|
+
getComponent({
|
|
276
|
+
selectionMode: 'single',
|
|
277
|
+
defaultSelectedKeys: [defaultMenuItems[0].key]
|
|
278
|
+
});
|
|
279
|
+
var selectedItemText = defaultMenuItems[0].children;
|
|
280
|
+
var selectedMenuItem = _testWrapper.screen.getByText(selectedItemText);
|
|
281
|
+
var checkIcon = _testWrapper.screen.getByTitle('Check Icon');
|
|
282
|
+
expect(selectedMenuItem).toBeInTheDocument();
|
|
283
|
+
expect(checkIcon).toBeInTheDocument();
|
|
259
284
|
});
|
|
260
|
-
var menuItems = _testWrapper.screen.queryAllByRole('menuitemcheckbox');
|
|
261
|
-
expect(menuItems).toHaveLength(defaultMenuItems.length);
|
|
262
285
|
});
|
|
@@ -42,7 +42,8 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var
|
|
|
42
42
|
return (0, _react2.jsx)(_react["default"].Fragment, null, section.key !== state.collection.getFirstKey() && (0, _react2.jsx)(_Separator["default"], {
|
|
43
43
|
as: "li",
|
|
44
44
|
p: 0,
|
|
45
|
-
|
|
45
|
+
my: "sm",
|
|
46
|
+
mx: "0"
|
|
46
47
|
}), (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
|
47
48
|
as: "li"
|
|
48
49
|
}, itemProps, {
|